diff options
248 files changed, 30332 insertions, 19062 deletions
@@ -1,3 +1,99 @@ +Hubzilla 2.0 (2016-12-23) + - Deprecate bb_iframe + - Note widget: resize the textarea to reveal full content + - Implement fixed left aside + - Implement lockview for wikilist + - Simplify wikilist widget + - Router error reporting + - Setup changes to check for shell_exec and exec functions + - Extensible permissions upgrade handling for channels with custom permission roles + - Allow plugins to cancel item_store() and item_store_update() + - ZOT version 1.2 provides negotiation of cryptographic algorithms + - Provide a fresh new look and cleaner layout and more relevant information to siteinfo + - Introduce highlight bbcode [hl] + - Implement wiki mimetypes markdown or bbcode + - Doc pages refactoring + - Update webpages and wiki context help + - Make a git commit when a new wiki page is created + - Prev-next navigation for mod_connedit to ease bulk connection edits + - Move the remote user homebutton to the user menu + - Do not render maps/locations for Diaspora destinations + - Provide 'per-page' caching for is_matrix_url() results to reduce duplicate queries + - Don't send notification for posts/comments on old conversations that were refetched after having expired + - Numerous wiki UI improvements + - Move twitter api to addon + - Cleanup and re-organise the voting and attendance buttons + - Reorganise emoticons + - Collapse navbar-collapse-1 if avatar menu is clicked. + - New display setting: static page update as opposed to live update + - Command line administrative channel connect utility + - Modernise chanview + - Implement edit activities to share post/comment edits with protocols which do not support them (e.g. Diaspora) + - Wiki export + - Numerous postgres compatibility fixes + - Remove requirement that imported profile photos be in the profile photos album + - Change event behaviour - share by default. + - Use PDO database driver exclusively (deprecate drivers that are separately maintained) + - Zot API re-write and extended + + Bugfixes + - Fix z_fetch_url() incorrect variable + - Fix SQL error with app categories + - Fix do not show revert buttons if we do not have write perms + - Fix dropdown positions + - Fix do not increase opacity to more than 1 + - Fix clone sync missing for some item delete operations + - Fix embed-image for fullscreen mode + - Fix attach_list_files() + - Fix full screen for embedded videos + - Fix the forum widget for forums with custom perms + - Fix issue #607 parens not recognised inside urls + - Fix pubsites: don't list dead sites + - Fix issue #596 silence headers already sent warning + - Fix missing plugins in zot-info + - Fix notification issue + - Fix issue #594 like of thing appears as profile owner like + - Fix export issue + - Fix checklist bbcode - only turn [] and [x] into checkboxes if it is found inside a checklist + - Fix wiki permissions issues + - Fix public calendar leaks connection information (birthdays) when view_contacts is not allowed + - Fix attach_rename: flaw in duplicate filename detection resulted in filename(1)(1)(1).ext + - Fix a fatal error with incorrect DB object access + - Provide /locs link on settings page if there is more than one hubloc for this channnel *that isn't deleted*. + - Fix issue #577 if connecting to a channel that is already pending, undo the pending and set connect permissions accordingly + - Fix issue #575, when 'nofinish' is set on an event, invalid date was generated/stored + - Fix bbcode event formatting issue + - Fix zot_finger from navbar people search looping + - Fix fromStandalonePermission() + + Plugins + - GNU Social: removed from addons for security reasons - it might be re-implemented once it is properly reviewed + - Diaspora: missing item author when diaspora public comment received from relay + - Superblock: refactoring + - New addon: tripleaes for pro + - Cdav: "if not exists" only supported starting with postgresql v. 9.5 debian stable has 9.4 + - Rendezvous: added markers and members export tool at /rendezvous/[group_id]/export/{markers,members} + - Twitter: move twitter api to addon + - New addon: b2tbtn (back to top button) + - Diaspora: import public diaspora messages to sys if applicable + - Diaspora: try and handle singletons better and simplify the associated notifier decisions + - Rendezvous: add proximity alert feature to members to issue notification when member is within a specified distance. + - New addon: diaspora_reconnect to refriend diaspora/friendica connections from a clone or channel move + - Diaspora: change the logic for deciding between upstream and downstream message flow for notifier plugins + - Rendezvous: prompt member to share their location by activating the GPS control using a tooltip and pulsing visibility + - statistics_json: fix nodeinfo + - Rendezvous: restored the lost gps-icon.png and corrected the OpenStreetMap tile server URL to avoid insecure content warnings + - Rendezvous: use observer name if available + - std_embeds: missing backslash + - Diaspora: postgres fixes issue #31 + - Rendezvous: added marker list with centering buttons and popup open. + - Rendezvous: added control to see list of members sharing their location, with buttons to pan the map to center them + - Diaspora: system level diaspora toggle + - Rendezvous: added control that displays members. + - Diaspora: rename diaspora2bb() to markdown_to_bb() in core + - Hubwall: remove illegal unescaped angle chars + - Rendezvous: Add control to delete member if not updated in over 14 minutes + Hubzilla 1.14 (2016-10-13) - New hook bbcode_filter - Unify the various mail sending instance to enotify::send() and z_mail() diff --git a/Zotlabs/Access/PermissionRoles.php b/Zotlabs/Access/PermissionRoles.php index 8b116adc5..94c49c44f 100644 --- a/Zotlabs/Access/PermissionRoles.php +++ b/Zotlabs/Access/PermissionRoles.php @@ -7,6 +7,9 @@ use Zotlabs\Lib as Zlib; class PermissionRoles { + static public function version() { + return 1; + } static function role_perms($role) { @@ -160,6 +163,7 @@ class PermissionRoles { $ret['limits'] = PermissionLimits::Std_Limits(); break; + case 'custom': default: break; } @@ -174,7 +178,48 @@ class PermissionRoles { return $ret; } + static public function new_custom_perms($uid,$perm,$abooks) { + + // set permissionlimits for this permission here, for example: + + // if($perm === 'mynewperm') + // \Zotlabs\Access\PermissionLimits::Set($uid,$perm,1); + + + // set autoperms here if applicable + // choices are to set to 0, 1, or the value of an existing perm + + if(get_pconfig($uid,'system','autoperms')) { + + $c = channelx_by_n($uid); + $value = 0; + // if($perm === 'mynewperm') + // $value = get_abconfig($uid,$c['channel_hash'],'autoperms','someexistingperm')); + + if($c) { + set_abconfig($uid,$c['channel_hash'],'autoperms',$perm,$value); + } + + + } + + // now set something for all existing connections. + + if($abooks) { + foreach($abooks as $ab) { + switch($perm) { + // case 'mynewperm': + // choices are to set to 1, set to 0, or clone an existing perm + // set_abconfig($uid,$ab['abook_xchan'],'my_perms',$perm, + // get_abconfig($uid,$ab['abook_xchan'],'my_perms','someexistingperm')); + + default: + break; + } + } + } + } static public function roles() { diff --git a/Zotlabs/Access/Permissions.php b/Zotlabs/Access/Permissions.php index 61ea51a48..5fded5f03 100644 --- a/Zotlabs/Access/Permissions.php +++ b/Zotlabs/Access/Permissions.php @@ -10,9 +10,20 @@ class Permissions { /** * Extensible permissions. * To add new permissions, add to the list of $perms below, with a simple description. + * * Also visit PermissionRoles.php and add to the $ret['perms_connect'] property for any role * if this permission should be granted to new connections. * + * Next look at PermissionRoles::new_custom_perms() and provide a handler for updating custom + * permission roles. You will want to set a default PermissionLimit for each channel and also + * provide a sane default for any existing connections. You may or may not wish to provide a + * default auto permission. If in doubt, leave this alone as custom permissions by definition + * are the responsibility of the channel owner to manage. You just don't want to create any + * suprises or break things so you have an opportunity to provide sane settings. + * + * Update the version here and in PermissionRoles + * + * * Permissions with 'view' in the name are considered read permissions. Anything * else requires authentication. Read permission limits are PERMS_PUBLIC and anything else * is given PERMS_SPECIFIC. @@ -23,6 +34,11 @@ class Permissions { * */ + static public function version() { + // This must match the version in PermissionRoles.php before permission updates can run. + return 1; + } + static public function Perms($filter = '') { diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 36edbc057..63ced4f56 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -491,7 +491,7 @@ class Notifier { // Now we have collected recipients (except for external mentions, FIXME) // Let's reduce this to a set of hubs. - $r = q("select * from hubloc where hubloc_hash in (" . implode(',',$recipients) . ") + $r = q("select hubloc.*, site.site_crypto from hubloc left join site on site_url = hubloc_url where hubloc_hash in (" . implode(',',$recipients) . ") and hubloc_error = 0 and hubloc_deleted = 0" ); @@ -603,8 +603,8 @@ class Notifier { $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null)); } elseif($packet_type === 'request') { - $packet = zot_build_packet($channel,$packet_type,$env_recips,$hub['hubloc_sitekey'],$hash, - array('message_id' => $request_message_id) + $packet = zot_build_packet($channel,$packet_type,$env_recips,$hub['hubloc_sitekey'],$hub['site_crypto'], + $hash, array('message_id' => $request_message_id) ); } @@ -618,7 +618,7 @@ class Notifier { )); } else { - $packet = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash); + $packet = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); queue_insert(array( 'hash' => $hash, 'account_id' => $target_item['aid'], diff --git a/Zotlabs/Daemon/Ratenotif.php b/Zotlabs/Daemon/Ratenotif.php index 1cba5e26d..a94b89004 100644 --- a/Zotlabs/Daemon/Ratenotif.php +++ b/Zotlabs/Daemon/Ratenotif.php @@ -77,7 +77,7 @@ class Ratenotif { continue; $hash = random_string(); - $n = zot_build_packet($channel,'notify',null,null,$hash); + $n = zot_build_packet($channel,'notify',null,null,'',$hash); queue_insert(array( 'hash' => $hash, diff --git a/Zotlabs/Lib/AConfig.php b/Zotlabs/Lib/AConfig.php index ab8648a18..4e7c5483f 100644 --- a/Zotlabs/Lib/AConfig.php +++ b/Zotlabs/Lib/AConfig.php @@ -10,8 +10,8 @@ class AConfig { return XConfig::Load('a_' . $account_id); } - static public function Get($account_id,$family,$key) { - return XConfig::Get('a_' . $account_id,$family,$key); + static public function Get($account_id,$family,$key,$default = false) { + return XConfig::Get('a_' . $account_id,$family,$key, $default); } static public function Set($account_id,$family,$key,$value) { diff --git a/Zotlabs/Lib/AbConfig.php b/Zotlabs/Lib/AbConfig.php index cb5d96951..dfc9efc6c 100644 --- a/Zotlabs/Lib/AbConfig.php +++ b/Zotlabs/Lib/AbConfig.php @@ -16,7 +16,7 @@ class AbConfig { } - static public function Get($chan,$xhash,$family,$key) { + static public function Get($chan,$xhash,$family,$key, $default = false) { $r = q("select * from abconfig where chan = %d and xchan = '%s' and cat = '%s' and k = '%s' limit 1", intval($chan), dbesc($xhash), @@ -26,7 +26,7 @@ class AbConfig { if($r) { return ((preg_match('|^a:[0-9]+:{.*}$|s', $r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']); } - return false; + return $default; } diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index a2f253299..46486bb5a 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -38,6 +38,7 @@ class Apps { if(plugin_is_installed($plugin)) { $x = self::parse_app_description($f,$translate); if($x) { + $x['plugin'] = $plugin; $ret[] = $x; } } @@ -54,7 +55,6 @@ class Apps { return; $apps = self::get_system_apps(false); - self::$installed_system_apps = q("select * from app where app_system = 1 and app_channel = %d", intval(local_channel()) ); @@ -68,7 +68,7 @@ class Apps { if($id !== true) { // if we already installed this app, but it changed, preserve any categories we created $s = ''; - $r = q("select * from term where otype = %d and oid = d", + $r = q("select * from term where otype = %d and oid = %d", intval(TERM_OBJ_APP), intval($id) ); @@ -100,6 +100,8 @@ class Apps { } $notfound = true; foreach(self::$installed_system_apps as $iapp) { + if($app['plugin'] && (! $iapp['app_plugin'])) + return(1); if($iapp['app_id'] == hash('whirlpool',$app['name'])) { $notfound = false; if($iapp['app_version'] != $app['version']) { @@ -238,9 +240,9 @@ class Apps { 'Profile Photo' => t('Profile Photo') ); - if(array_key_exists($arr['name'],$apps)) + if(array_key_exists($arr['name'],$apps)) { $arr['name'] = $apps[$arr['name']]; - + } } @@ -267,6 +269,9 @@ class Apps { self::translate_system_apps($papp); + if(($papp['plugin']) && (! plugin_is_installed($papp['plugin']))) + return ''; + $papp['papp'] = self::papp_encode($papp); if(! strstr($papp['url'],'://')) @@ -339,7 +344,9 @@ class Apps { '$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''), '$install' => (($hosturl && $mode == 'view') ? $install_action : ''), '$edit' => ((local_channel() && $installed && $mode == 'edit') ? t('Edit') : ''), - '$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : '') + '$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : ''), + '$undelete' => ((local_channel() && $installed && $mode == 'edit') ? t('Undelete') : ''), + '$deleted' => $papp['deleted'] )); } @@ -359,7 +366,7 @@ class Apps { if($r) { if(! $r[0]['app_system']) { if($app['categories'] && (! $app['term'])) { - $r[0]['term'] = q("select * from term where otype = %d and oid = d", + $r[0]['term'] = q("select * from term where otype = %d and oid = %d", intval(TERM_OBJ_APP), intval($r[0]['id']) ); @@ -382,31 +389,60 @@ class Apps { intval($uid) ); if($x) { - $x[0]['app_deleted'] = 1; - q("delete from term where otype = %d and oid = %d", - intval(TERM_OBJ_APP), - intval($x[0]['id']) - ); - if($x[0]['app_system']) { - $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d", - dbesc($app['guid']), - intval($uid) + if(! intval($x[0]['app_deleted'])) { + $x[0]['app_deleted'] = 1; + q("delete from term where otype = %d and oid = %d", + intval(TERM_OBJ_APP), + intval($x[0]['id']) ); + if($x[0]['app_system']) { + $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d", + dbesc($app['guid']), + intval($uid) + ); + } + else { + $r = q("delete from app where app_id = '%s' and app_channel = %d", + dbesc($app['guid']), + intval($uid) + ); + + // we don't sync system apps - they may be completely different on the other system + build_sync_packet($uid,array('app' => $x)); + } } else { - $r = q("delete from app where app_id = '%s' and app_channel = %d", + self::app_undestroy($uid,$app); + } + } + } + } + + + static public function app_undestroy($uid,$app) { + + // undelete a system app + + if($uid && $app['guid']) { + + $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1", + dbesc($app['guid']), + intval($uid) + ); + if($x) { + if($x[0]['app_system']) { + $r = q("update app set app_deleted = 0 where app_id = '%s' and app_channel = %d", dbesc($app['guid']), intval($uid) ); - - // we don't sync system apps - they may be completely different on the other system - build_sync_packet($uid,array('app' => $x)); } } } } + + static public function app_installed($uid,$app) { $r = q("select id from app where app_id = '%s' and app_version = '%s' and app_channel = %d limit 1", @@ -421,7 +457,7 @@ class Apps { static public function app_list($uid, $deleted = false, $cat = '') { if($deleted) - $sql_extra = " and app_deleted = 1 "; + $sql_extra = ""; else $sql_extra = " and app_deleted = 0 "; @@ -494,13 +530,14 @@ class Apps { $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : ''); $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : ''); $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : ''); + $darray['app_plugin'] = ((x($arr,'plugin')) ? escape_tags($arr['plugin']) : ''); $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : ''); $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0); $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0); $created = datetime_convert(); - $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited, app_system, app_deleted ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )", + $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited, app_system, app_plugin, app_deleted ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', %d )", dbesc($darray['app_id']), dbesc($darray['app_sig']), dbesc($darray['app_author']), @@ -517,6 +554,7 @@ class Apps { dbesc($created), dbesc($created), intval($darray['app_system']), + dbesc($darray['app_plugin']), intval($darray['app_deleted']) ); if($r) { @@ -569,13 +607,14 @@ class Apps { $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : ''); $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : ''); $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : ''); + $darray['app_plugin'] = ((x($arr,'plugin')) ? escape_tags($arr['plugin']) : ''); $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : ''); $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0); $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0); $edited = datetime_convert(); - $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s', app_system = %d, app_deleted = %d where app_id = '%s' and app_channel = %d", + $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s', app_system = %d, app_plugin = '%s', app_deleted = %d where app_id = '%s' and app_channel = %d", dbesc($darray['app_sig']), dbesc($darray['app_author']), dbesc($darray['app_name']), @@ -589,6 +628,7 @@ class Apps { dbesc($darray['app_requires']), dbesc($edited), intval($darray['app_system']), + dbesc($darray['app_plugin']), intval($darray['app_deleted']), dbesc($darray['app_id']), intval($darray['app_channel']) @@ -673,6 +713,9 @@ class Apps { if($app['app_system']) $ret['system'] = $app['app_system']; + if($app['app_plugin']) + $ret['plugin'] = $app['app_plugin']; + if($app['app_deleted']) $ret['deleted'] = $app['app_deleted']; diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php index d4ee1aeda..5625a3f79 100644 --- a/Zotlabs/Lib/Config.php +++ b/Zotlabs/Lib/Config.php @@ -98,13 +98,13 @@ class Config { * @return mixed Return value or false on error or if not set */ - static public function Get($family,$key) { + static public function Get($family,$key,$default = false) { if((! array_key_exists($family, \App::$config)) || (! array_key_exists('config_loaded', \App::$config[$family]))) self::Load($family); if(array_key_exists('config_loaded', \App::$config[$family])) { if(! array_key_exists($key, \App::$config[$family])) { - return false; + return $default; } return ((! is_array(\App::$config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$family][$key])) ? unserialize(\App::$config[$family][$key]) @@ -112,7 +112,7 @@ class Config { ); } - return false; + return $default; } /** diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php index b6f4d3351..257687567 100644 --- a/Zotlabs/Lib/Enotify.php +++ b/Zotlabs/Lib/Enotify.php @@ -102,7 +102,7 @@ class Enotify { $title = $params['item']['title']; $body = $params['item']['body']; } - if($item['created'] < datetime_convert('UTC','UTC','now - 1 month')) { + if($params['item']['created'] < datetime_convert('UTC','UTC','now - 1 month')) { logger('notification invoked for an old item which may have been refetched.',LOGGER_DEBUG,LOG_INFO); return; } @@ -217,6 +217,85 @@ class Enotify { $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>'); } + if ($params['type'] == NOTIFY_LIKE) { +// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); + + $itemlink = $params['link']; + + // ignore like/unlike activity on posts - they probably require a separate notification preference + + if (array_key_exists('item',$params) && (! activity_match($params['item']['verb'],ACTIVITY_LIKE))) { + logger('notification: not a like activity. Ignoring.'); + pop_lang(); + return; + } + + $parent_mid = $params['parent_mid']; + + // Check to see if there was already a notify for this post. + // If so don't create a second notification + + $p = null; + $p = q("select id from notify where link = '%s' and uid = %d limit 1", + dbesc($params['link']), + intval($recip['channel_id']) + ); + if ($p) { + logger('notification: like already notified'); + pop_lang(); + return; + } + + + // if it's a post figure out who's post it is. + + $p = null; + + if($params['otype'] === 'item' && $parent_mid) { + $p = q("select * from item where mid = '%s' and uid = %d limit 1", + dbesc($parent_mid), + intval($recip['channel_id']) + ); + } + + xchan_query($p); + + + $item_post_type = item_post_type($p[0]); +// $private = $p[0]['item_private']; + $parent_id = $p[0]['id']; + + $parent_item = $p[0]; + + + // "your post" + if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall'])) + $dest_str = sprintf(t('%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]'), + $recip['channel_name'], + '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', + $itemlink, + $item_post_type); + else { + pop_lang(); + return; + } + + // Some mail softwares relies on subject field for threading. + // So, we cannot have different subjects for notifications of the same thread. + // Before this we have the name of the replier on the subject rendering + // differents subjects for messages on the same thread. + + $subject = sprintf( t('[$Projectname:Notify] Like received to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']); + $preamble = sprintf( t('%1$s, %2$s liked an item/conversation you created.'), $recip['channel_name'], $sender['xchan_name']); + $epreamble = $dest_str; + + $sitelink = t('Please visit %s to view and/or reply to the conversation.'); + $tsitelink = sprintf( $sitelink, $siteurl ); + $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>'); + } + + + if($params['type'] == NOTIFY_WALL) { $subject = sprintf( t('[$Projectname:Notify] %s posted to your profile wall') , $sender['xchan_name']); diff --git a/Zotlabs/Lib/IConfig.php b/Zotlabs/Lib/IConfig.php index 28c9ab58e..33d94bd49 100644 --- a/Zotlabs/Lib/IConfig.php +++ b/Zotlabs/Lib/IConfig.php @@ -10,7 +10,7 @@ class IConfig { return; } - static public function Get(&$item, $family, $key) { + static public function Get(&$item, $family, $key, $default = false) { $is_item = false; @@ -28,7 +28,7 @@ class IConfig { $iid = $item; if(! $iid) - return false; + return $default; if(is_array($item) && array_key_exists('iconfig',$item) && is_array($item['iconfig'])) { foreach($item['iconfig'] as $c) { @@ -48,7 +48,7 @@ class IConfig { $item['iconfig'][] = $r[0]; return $r[0]['v']; } - return false; + return $default; } diff --git a/Zotlabs/Lib/PConfig.php b/Zotlabs/Lib/PConfig.php index 3b47a250a..d70697fbc 100644 --- a/Zotlabs/Lib/PConfig.php +++ b/Zotlabs/Lib/PConfig.php @@ -67,16 +67,16 @@ class PConfig { * @return mixed Stored value or false if it does not exist */ - static public function Get($uid,$family,$key,$instore = false) { + static public function Get($uid,$family,$key,$default = false) { if(is_null($uid) || $uid === false) - return false; + return $default; if(! array_key_exists($uid, \App::$config)) self::Load($uid); if((! array_key_exists($family, \App::$config[$uid])) || (! array_key_exists($key, \App::$config[$uid][$family]))) - return false; + return $default; return ((! is_array(\App::$config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$uid][$family][$key])) ? unserialize(\App::$config[$uid][$family][$key]) diff --git a/Zotlabs/Lib/System.php b/Zotlabs/Lib/System.php index 32aaa82a9..306c90f4a 100644 --- a/Zotlabs/Lib/System.php +++ b/Zotlabs/Lib/System.php @@ -42,6 +42,20 @@ class System { } + static public function get_project_link() { + if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['project_link']) + return \App::$config['system']['project_link']; + return 'https://hubzilla.org'; + } + + static public function get_project_srclink() { + if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['project_srclink']) + return \App::$config['system']['project_srclink']; + return 'https://github.com/redmatrix/hubzilla'; + } + + + static public function get_server_role() { if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['server_role']) return \App::$config['system']['server_role']; @@ -54,5 +68,15 @@ class System { return '0.0.0'; } + static public function compatible_project($p) { + if(get_directory_realm() != DIRECTORY_REALM) + return true; + + foreach(['hubzilla','zap'] as $t) { + if(stristr($p,$t)) + return true; + } + return false; + } } diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 48b50b295..e636e5614 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -44,7 +44,7 @@ class ThreadItem { * Only add those that will be displayed */ - if((! visible_activity($item)) || array_key_exists('author_blocked',$item)) { + if((! visible_activity($item)) || array_key_exists('blocked',$item)) { continue; } @@ -335,6 +335,8 @@ class ThreadItem { 'wall' => t('Wall-to-Wall'), 'vwall' => t('via Wall-To-Wall:'), 'profile_url' => $profile_link, + 'thread_action_menu' => thread_action_menu($item,$conv->get_mode()), + 'thread_author_menu' => thread_author_menu($item,$conv->get_mode()), 'item_photo_menu' => item_photo_menu($item), 'dreport' => $dreport, 'name' => $profile_name, diff --git a/Zotlabs/Lib/XConfig.php b/Zotlabs/Lib/XConfig.php index 7f3d0f2cd..bf78c360f 100644 --- a/Zotlabs/Lib/XConfig.php +++ b/Zotlabs/Lib/XConfig.php @@ -59,16 +59,16 @@ class XConfig { * @return mixed Stored $value or false if it does not exist */ - static public function Get($xchan, $family, $key) { + static public function Get($xchan, $family, $key, $default = false) { if(! $xchan) - return false; + return $default; if(! array_key_exists($xchan, \App::$config)) load_xconfig($xchan); if((! array_key_exists($family, \App::$config[$xchan])) || (! array_key_exists($key, \App::$config[$xchan][$family]))) - return false; + return $default; return ((! is_array(\App::$config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$xchan][$family][$key])) ? unserialize(\App::$config[$xchan][$family][$key]) diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php index 251533e68..829ca71e4 100644 --- a/Zotlabs/Module/Admin/Site.php +++ b/Zotlabs/Module/Admin/Site.php @@ -22,6 +22,7 @@ class Site { $banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false); $admininfo = ((x($_POST,'admininfo')) ? trim($_POST['admininfo']) : false); + $siteinfo = ((x($_POST,'siteinfo')) ? trim($_POST['siteinfo']) : ''); $language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : ''); $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : ''); $theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : ''); @@ -97,6 +98,7 @@ class Site { linkify_tags($a, $admininfo, local_channel()); set_config('system', 'admininfo', $admininfo); } + set_config('system','siteinfo',$siteinfo); set_config('system', 'language', $language); set_config('system', 'theme', $theme); if ( $theme_mobile === '---' ) { @@ -273,6 +275,7 @@ class Site { '$banner' => array('banner', t("Banner/Logo"), $banner, ""), '$admininfo' => array('admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here")), + '$siteinfo' => array('siteinfo', t('Site Information'), get_config('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")), '$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices), '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices), '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile), diff --git a/Zotlabs/Module/Appman.php b/Zotlabs/Module/Appman.php index a200e986a..425b2d539 100644 --- a/Zotlabs/Module/Appman.php +++ b/Zotlabs/Module/Appman.php @@ -56,6 +56,7 @@ class Appman extends \Zotlabs\Web\Controller { if($_POST['delete']) { Zlib\Apps::app_destroy(local_channel(),$papp); } + if($_POST['edit']) { return; diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php index 4dab621b2..5583f1757 100644 --- a/Zotlabs/Module/Apps.php +++ b/Zotlabs/Module/Apps.php @@ -21,7 +21,7 @@ class Apps extends \Zotlabs\Web\Controller { if(local_channel()) { Zlib\Apps::import_system_apps(); $syslist = array(); - $list = Zlib\Apps::app_list(local_channel(), false, $_GET['cat']); + $list = Zlib\Apps::app_list(local_channel(), (($mode == 'edit') ? true : false), $_GET['cat']); if($list) { foreach($list as $x) { $syslist[] = Zlib\Apps::app_encode($x); diff --git a/Zotlabs/Module/Cal.php b/Zotlabs/Module/Cal.php index 1279a51b1..b982d19a8 100644 --- a/Zotlabs/Module/Cal.php +++ b/Zotlabs/Module/Cal.php @@ -292,8 +292,8 @@ class Cal extends \Zotlabs\Web\Controller { $title = strip_tags(html_entity_decode($title,ENT_QUOTES,'UTF-8')); } $html = format_event_html($rr); - $rr['desc'] = bbcode($rr['desc']); - $rr['location'] = bbcode($rr['location']); + $rr['desc'] = zidify_links(smilies(bbcode($rr['desc']))); + $rr['location'] = zidify_links(smilies(bbcode($rr['location']))); $events[] = array( 'id'=>$rr['id'], 'hash' => $rr['event_hash'], diff --git a/Zotlabs/Module/Chatsvc.php b/Zotlabs/Module/Chatsvc.php index 6a28a7c4d..0f79e3b4c 100644 --- a/Zotlabs/Module/Chatsvc.php +++ b/Zotlabs/Module/Chatsvc.php @@ -111,8 +111,22 @@ class Chatsvc extends \Zotlabs\Web\Controller { intval(\App::$data['chat']['room_id']) ); if($r) { - foreach($r as $rr) { - switch($rr['cp_status']) { + foreach($r as $rv) { + if(! $rv['xchan_name']) { + $rv['xchan_hash'] = $rv['cp_xchan']; + $rv['xchan_name'] = substr($rv['cp_xchan'],strrpos($rv['cp_xchan'],'.')+1); + $rv['xchan_addr'] = ''; + $rv['xchan_network'] = 'unknown'; + $rv['xchan_url'] = z_root(); + $rv['xchan_hidden'] = 1; + $rv['xchan_photo_mimetype'] = 'image/jpeg'; + $rv['xchan_photo_l'] = get_default_profile_photo(300); + $rv['xchan_photo_m'] = get_default_profile_photo(80); + $rv['xchan_photo_s'] = get_default_profile_photo(48); + + } + + switch($rv['cp_status']) { case 'away': $status = t('Away'); $status_class = 'away'; @@ -124,7 +138,7 @@ class Chatsvc extends \Zotlabs\Web\Controller { break; } - $inroom[] = array('img' => zid($rr['xchan_photo_m']), 'img_type' => $rr['xchan_photo_mimetype'],'name' => $rr['xchan_name'], 'status' => $status, 'status_class' => $status_class); + $inroom[] = array('img' => zid($rv['xchan_photo_m']), 'img_type' => $rv['xchan_photo_mimetype'],'name' => $rv['xchan_name'], 'status' => $status, 'status_class' => $status_class); } } @@ -143,7 +157,7 @@ class Chatsvc extends \Zotlabs\Web\Controller { 'name' => $rr['xchan_name'], 'isotime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'c'), 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'r'), - 'text' => smilies(bbcode($rr['chat_text'])), + 'text' => zidify_links(smilies(bbcode($rr['chat_text']))), 'self' => ((get_observer_hash() == $rr['chat_xchan']) ? 'self' : '') ); } diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php index a412d16ae..950be660d 100644 --- a/Zotlabs/Module/Connections.php +++ b/Zotlabs/Module/Connections.php @@ -228,10 +228,18 @@ class Connections extends \Zotlabs\Web\Controller { $contacts = array(); - if(count($r)) { - + if($r) { + + vcard_query($r); + + foreach($r as $rr) { if($rr['xchan_url']) { + + if(($rr['vcard']) && is_array($rr['vcard']['tels']) && $rr['vcard']['tels'][0]['nr']) + $phone = ((\App::$is_mobile || \App::$is_tablet) ? $rr['vcard']['tels'][0]['nr'] : ''); + else + $phone = ''; $status_str = ''; $status = array( @@ -267,6 +275,8 @@ class Connections extends \Zotlabs\Web\Controller { 'network_label' => t('Network'), 'network' => network_to_name($rr['xchan_network']), 'public_forum' => ((intval($rr['xchan_pubforum'])) ? true : false), + 'call' => t('Call'), + 'phone' => $phone, 'status_label' => t('Status'), 'status' => $status_str, 'connected_label' => t('Connected'), diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php index 5ab6f814b..d60ffcd56 100644 --- a/Zotlabs/Module/Connedit.php +++ b/Zotlabs/Module/Connedit.php @@ -37,15 +37,17 @@ class Connedit extends \Zotlabs\Web\Controller { intval(argv(1)) ); if($r) { - \App::$poi = $r[0]; + \App::$poi = array_shift($r); } } + $channel = \App::get_channel(); if($channel) head_set_icon($channel['xchan_photo_s']); } + /* @brief Evaluate posted values and set changes * @@ -84,6 +86,12 @@ class Connedit extends \Zotlabs\Web\Controller { call_hooks('contact_edit_post', $_POST); + $vc = get_abconfig(local_channel(),$orig_record['abook_xchan'],'system','vcard'); + $vcard = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); + $serialised_vcard = update_vcard($_REQUEST,$vcard); + if($serialised_vcard) + set_abconfig(local_channel(),$orig_record[0]['abook_xchan'],'system','vcard',$serialised_vcard); + if(intval($orig_record[0]['abook_self'])) { $autoperms = intval($_POST['autoperms']); $is_self = true; @@ -365,7 +373,7 @@ class Connedit extends \Zotlabs\Web\Controller { intval(\App::$poi['abook_id']) ); if($r) { - \App::$poi = $r[0]; + \App::$poi = array_shift($r); } $clone = \App::$poi; @@ -396,6 +404,7 @@ class Connedit extends \Zotlabs\Web\Controller { return login(); } + $section = ((array_key_exists('section',$_REQUEST)) ? $_REQUEST['section'] : ''); $channel = \App::get_channel(); $my_perms = get_channel_default_perms(local_channel()); $role = get_pconfig(local_channel(),'system','permissions_role'); @@ -546,9 +555,33 @@ class Connedit extends \Zotlabs\Web\Controller { if(\App::$poi) { + $abook_prev = 0; + $abook_next = 0; + $contact_id = \App::$poi['abook_id']; $contact = \App::$poi; - + + $cn = q("SELECT abook_id, xchan_name from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 order by xchan_name", + intval(local_channel()) + ); + + if($cn) { + $pntotal = count($cn); + + for($x = 0; $x < $pntotal; $x ++) { + if($cn[$x]['abook_id'] == $contact_id) { + if($x === 0) + $abook_prev = 0; + else + $abook_prev = $cn[$x - 1]['abook_id']; + if($x === $pntotal) + $abook_next = 0; + else + $abook_next = $cn[$x +1]['abook_id']; + } + } + } + $tools = array( 'view' => array( @@ -615,20 +648,30 @@ class Connedit extends \Zotlabs\Web\Controller { $self = false; - if(intval($contact['abook_self'])) + if(intval($contact['abook_self'])) { $self = true; + $abook_prev = $abook_next = 0; + } + $vc = get_abconfig(local_channel(),$contact['abook_xchan'],'system','vcard'); + + $vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); + $vcard = (($vctmp) ? get_vcard_array($vctmp,$contact['abook_id']) : [] ); + if(! $vcard) + $vcard['fn'] = $contact['xchan_name']; + + $tpl = get_markup_template("abook_edit.tpl"); if(feature_enabled(local_channel(),'affinity')) { - $labels = array( + $labels = [ t('Me'), t('Family'), t('Friends'), t('Acquaintances'), t('All') - ); + ]; call_hooks('affinity_labels',$labels); $label_str = ''; @@ -746,11 +789,12 @@ class Connedit extends \Zotlabs\Web\Controller { else $locstr = t('none'); - $o .= replace_macros($tpl,array( - + $o .= replace_macros($tpl, [ '$header' => (($self) ? t('Connection Default Permissions') : sprintf( t('Connection: %s'),$contact['xchan_name'])), '$autoperms' => array('autoperms',t('Apply these permissions automatically'), ((get_pconfig(local_channel(),'system','autoperms')) ? 1 : 0), t('Connection requests will be approved without your interaction'), $yes_no), '$addr' => $contact['xchan_addr'], + '$section' => $section, + '$vcard' => $vcard, '$addr_text' => t('This connection\'s primary address is'), '$loc_text' => t('Available locations:'), '$locstr' => $locstr, @@ -788,12 +832,42 @@ class Connedit extends \Zotlabs\Web\Controller { '$permnote_self' => t('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.'), '$lastupdtext' => t('Last update:'), '$last_update' => relative_date($contact['abook_connected']), + '$is_mobile' => ((\App::$is_mobile || \App::$is_tablet) ? true : false), '$profile_select' => contact_profile_assign($contact['abook_profile']), '$multiprofs' => $multiprofs, '$contact_id' => $contact['abook_id'], '$name' => $contact['xchan_name'], - - )); + '$abook_prev' => $abook_prev, + '$abook_next' => $abook_next, + '$vcard_label' => t('Details'), + '$displayname' => $displayname, + '$name_label' => t('Name'), + '$org_label' => t('Organisation'), + '$title_label' => t('Title'), + '$tel_label' => t('Phone'), + '$email_label' => t('Email'), + '$impp_label' => t('Instant messenger'), + '$url_label' => t('Website'), + '$adr_label' => t('Address'), + '$note_label' => t('Note'), + '$mobile' => t('Mobile'), + '$home' => t('Home'), + '$work' => t('Work'), + '$other' => t('Other'), + '$add_card' => t('Add Contact'), + '$add_field' => t('Add Field'), + '$create' => t('Create'), + '$update' => t('Update'), + '$delete' => t('Delete'), + '$cancel' => t('Cancel'), + '$po_box' => t('P.O. Box'), + '$extra' => t('Additional'), + '$street' => t('Street'), + '$locality' => t('Locality'), + '$region' => t('Region'), + '$zip_code' => t('ZIP Code'), + '$country' => t('Country') + ]); $arr = array('contact' => $contact,'output' => $o); diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index da9bb146f..59ae88857 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -68,6 +68,7 @@ class Directory extends \Zotlabs\Web\Controller { $observer = get_observer_hash(); $globaldir = get_directory_setting($observer, 'globaldir'); + // override your personal global search pref if we're doing a navbar search of the directory if(intval($_REQUEST['navsearch'])) $globaldir = 1; @@ -262,7 +263,7 @@ class Directory extends \Zotlabs\Web\Controller { $hometown = ((x($profile,'hometown') == 1) ? $profile['hometown'] : False); - $about = ((x($profile,'about') == 1) ? bbcode($profile['about']) : False); + $about = ((x($profile,'about') == 1) ? zidify_links(bbcode($profile['about'])) : False); $keywords = ((x($profile,'keywords')) ? $profile['keywords'] : ''); diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index 927800bbb..e6cf5449a 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -12,7 +12,7 @@ class Dirsearch extends \Zotlabs\Web\Controller { } - function get() { + function get() { $ret = array('success' => false); @@ -410,13 +410,13 @@ class Dirsearch extends \Zotlabs\Web\Controller { $rand = db_getfunc('rand'); $realm = get_directory_realm(); if($realm == DIRECTORY_REALM) { - $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') and site_type = %d order by $rand", + $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') and site_type = %d and site_dead = 0 order by $rand", dbesc($realm), intval(SITE_TYPE_ZOT) ); } else { - $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' and site_type = %d order by $rand", + $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' and site_type = %d and site_dead = 0 order by $rand", dbesc($realm), intval(SITE_TYPE_ZOT) ); @@ -457,6 +457,6 @@ class Dirsearch extends \Zotlabs\Web\Controller { } } return $ret; - } - + } + } diff --git a/Zotlabs/Module/Editpost.php b/Zotlabs/Module/Editpost.php index 5c04653b8..d7612b165 100644 --- a/Zotlabs/Module/Editpost.php +++ b/Zotlabs/Module/Editpost.php @@ -78,6 +78,7 @@ class Editpost extends \Zotlabs\Web\Controller { $x = array( 'nickname' => $channel['channel_address'], + 'item' => $itm[0], 'editor_autocomplete'=> true, 'bbco_autocomplete'=> 'bbcode', 'return_path' => $_SESSION['return_url'], diff --git a/Zotlabs/Module/Events.php b/Zotlabs/Module/Events.php index b8910b644..edc6dd3f0 100644 --- a/Zotlabs/Module/Events.php +++ b/Zotlabs/Module/Events.php @@ -43,6 +43,10 @@ class Events extends \Zotlabs\Web\Controller { $adjust = intval($_POST['adjust']); $nofinish = intval($_POST['nofinish']); + $timezone = ((x($_POST,'timezone_select')) ? notags(trim($_POST['timezone_select'])) : ''); + + $tz = (($timezone) ? $timezone : date_default_timezone_get()); + $categories = escape_tags(trim($_POST['category'])); // only allow editing your own events. @@ -71,9 +75,9 @@ class Events extends \Zotlabs\Web\Controller { if($adjust) { - $start = datetime_convert(date_default_timezone_get(),'UTC',$start); + $start = datetime_convert($tz,'UTC',$start); if(! $nofinish) - $finish = datetime_convert(date_default_timezone_get(),'UTC',$finish); + $finish = datetime_convert($tz,'UTC',$finish); } else { $start = datetime_convert('UTC','UTC',$start); @@ -374,11 +378,14 @@ class Events extends \Zotlabs\Web\Controller { $event_xchan = ((x($orig_event)) ? $orig_event['event_xchan'] : $channel['channel_hash']); $mid = ((x($orig_event)) ? $orig_event['mid'] : ''); - if(! x($orig_event)) + if(! x($orig_event)) { $sh_checked = ''; - else + $a_checked = ' checked="checked" '; + } + else { $sh_checked = ((($orig_event['allow_cid'] === '<' . $channel['channel_hash'] . '>' || (! $orig_event['allow_cid'])) && (! $orig_event['allow_gid']) && (! $orig_event['deny_cid']) && (! $orig_event['deny_gid'])) ? '' : ' checked="checked" ' ); - + } + if($orig_event['event_xchan']) $sh_checked .= ' disabled="disabled" '; @@ -478,6 +485,8 @@ class Events extends \Zotlabs\Web\Controller { '$allow_gid' => acl2json($permissions['allow_gid']), '$deny_cid' => acl2json($permissions['deny_cid']), '$deny_gid' => acl2json($permissions['deny_gid']), + '$tz_choose' => feature_enabled(local_channel(),'event_tz_select'), + '$timezone' => array('timezone_select' , t('Timezone:'), date_default_timezone_get(), '', get_timezones()), '$lockstate' => (($acl->is_private()) ? 'lock' : 'unlock'), @@ -625,14 +634,14 @@ class Events extends \Zotlabs\Web\Controller { $drop = array(z_root().'/events/drop/'.$rr['event_hash'],t('Delete event'),'',''); - $title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8')); + $title = strip_tags(html_entity_decode(zidify_links(bbcode($rr['summary'])),ENT_QUOTES,'UTF-8')); if(! $title) { list($title, $_trash) = explode("<br",bbcode($rr['desc']),2); $title = strip_tags(html_entity_decode($title,ENT_QUOTES,'UTF-8')); } $html = format_event_html($rr); - $rr['desc'] = bbcode($rr['desc']); - $rr['location'] = bbcode($rr['location']); + $rr['desc'] = zidify_links(smilies(bbcode($rr['desc']))); + $rr['location'] = zidify_links(smilies(bbcode($rr['location']))); $events[] = array( 'id'=>$rr['id'], 'hash' => $rr['event_hash'], diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php index 570e8e0cf..e247416d9 100644 --- a/Zotlabs/Module/Help.php +++ b/Zotlabs/Module/Help.php @@ -44,12 +44,56 @@ class Help extends \Zotlabs\Web\Controller { return $o; } + + + if(argc() > 2 && argv(argc()-2) === 'assets') { + $path = ''; + for($x = 1; $x < argc(); $x ++) { + if(strlen($path)) + $path .= '/'; + $path .= argv($x); + } + $realpath = 'doc/' . $path; + //Set the content-type header as appropriate + $imageInfo = getimagesize($realpath); + switch ($imageInfo[2]) { + case IMAGETYPE_JPEG: + header("Content-Type: image/jpeg"); + break; + case IMAGETYPE_GIF: + header("Content-Type: image/gif"); + break; + case IMAGETYPE_PNG: + header("Content-Type: image/png"); + break; + default: + break; + } + header("Content-Length: " . filesize($realpath)); - $content = get_help_content(); + // dump the picture and stop the script + readfile($realpath); + killme(); + } + + $headings = [ + 'about' => t('About'), + 'member' => t('Members'), + 'admin' => t('Administrators'), + 'developer' => t('Developers'), + 'tutorials' => t('Tutorials') + ]; + + if(array_key_exists(argv(1), $headings)) + $heading = $headings[argv(1)]; + + $content = get_help_content(); return replace_macros(get_markup_template('help.tpl'), array( '$title' => t('$Projectname Documentation'), - '$content' => $content + '$tocHeading' => t('Contents'), + '$content' => $content, + '$heading' => $heading )); } diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 344e839f4..7f2813076 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -21,6 +21,7 @@ require_once('include/crypto.php'); require_once('include/items.php'); require_once('include/attach.php'); require_once('include/bbcode.php'); +require_once('include/security.php'); use \Zotlabs\Lib as Zlib; @@ -34,9 +35,7 @@ class Item extends \Zotlabs\Web\Controller { if((! local_channel()) && (! remote_channel()) && (! x($_REQUEST,'commenter'))) return; - - require_once('include/security.php'); - + $uid = local_channel(); $channel = null; $observer = null; @@ -126,6 +125,8 @@ class Item extends \Zotlabs\Web\Controller { $ret = $this->item_check_service_class($uid,(($_REQUEST['webpage'] == ITEM_TYPE_WEBPAGE) ? true : false)); if (!$ret['success']) { notice( t($ret['message']) . EOL) ; + if($api_source) + return ( [ 'success' => false, 'message' => 'service class exception' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -180,6 +181,8 @@ class Item extends \Zotlabs\Web\Controller { if(($r === false) || (! count($r))) { notice( t('Unable to locate original post.') . EOL); + if($api_source) + return ( [ 'success' => false, 'message' => 'invalid post id' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -214,6 +217,8 @@ class Item extends \Zotlabs\Web\Controller { if(! $can_comment) { notice( t('Permission denied.') . EOL) ; + if($api_source) + return ( [ 'success' => false, 'message' => 'permission denied' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -222,6 +227,8 @@ class Item extends \Zotlabs\Web\Controller { else { if(! perm_is_allowed($profile_uid,$observer['xchan_hash'],($webpage) ? 'write_pages' : 'post_wall')) { notice( t('Permission denied.') . EOL) ; + if($api_source) + return ( [ 'success' => false, 'message' => 'permission denied' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -276,6 +283,8 @@ class Item extends \Zotlabs\Web\Controller { if(! $channel) { logger("mod_item: no channel."); + if($api_source) + return ( [ 'success' => false, 'message' => 'no channel' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -291,6 +300,8 @@ class Item extends \Zotlabs\Web\Controller { } else { logger("mod_item: no owner."); + if($api_source) + return ( [ 'success' => false, 'message' => 'no owner' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -433,6 +444,8 @@ class Item extends \Zotlabs\Web\Controller { if($preview) killme(); info( t('Empty post discarded.') . EOL ); + if($api_source) + return ( [ 'success' => false, 'message' => 'no content' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -473,6 +486,8 @@ class Item extends \Zotlabs\Web\Controller { } else { notice( t('Executable content type not permitted to this channel.') . EOL); + if($api_source) + return ( [ 'success' => false, 'message' => 'forbidden content type' ] ); if(x($_REQUEST,'return')) goaway(z_root() . "/" . $return_path ); killme(); @@ -540,42 +555,8 @@ class Item extends \Zotlabs\Web\Controller { if($x) $body .= "\n\n@group+" . $x[0]['abook_id'] . "\n"; } - - /** - * fix naked links by passing through a callback to see if this is a hubzilla site - * (already known to us) which will get a zrl, otherwise link with url, add bookmark tag to both. - * First protect any url inside certain bbcode tags so we don't double link it. - */ - - - $body = preg_replace_callback('/\[code(.*?)\[\/(code)\]/ism','\red_escape_codeblock',$body); - $body = preg_replace_callback('/\[url(.*?)\[\/(url)\]/ism','\red_escape_codeblock',$body); - $body = preg_replace_callback('/\[zrl(.*?)\[\/(zrl)\]/ism','\red_escape_codeblock',$body); - - $body = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)/ism", 'nakedoembed', $body); - $body = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)/ism", '\red_zrl_callback', $body); - - $body = preg_replace_callback('/\[\$b64zrl(.*?)\[\/(zrl)\]/ism','\red_unescape_codeblock',$body); - $body = preg_replace_callback('/\[\$b64url(.*?)\[\/(url)\]/ism','\red_unescape_codeblock',$body); - $body = preg_replace_callback('/\[\$b64code(.*?)\[\/(code)\]/ism','\red_unescape_codeblock',$body); - - - // fix any img tags that should be zmg - - $body = preg_replace_callback('/\[img(.*?)\](.*?)\[\/img\]/ism','\red_zrlify_img_callback',$body); - - - $body = bb_translate_video($body); - - /** - * Fold multi-line [code] sequences - */ - - $body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body); - - $body = scale_external_images($body,false); - + $body = cleanup_bbcode($body); // Look for tags and linkify them $results = linkify_tags($a, $body, ($uid) ? $uid : $profile_uid); @@ -863,7 +844,8 @@ class Item extends \Zotlabs\Web\Controller { logger('mod_item: post cancelled by plugin or duplicate suppressed.'); if($return_path) goaway(z_root() . "/" . $return_path); - + if($api_source) + return ( [ 'success' => false, 'message' => 'operation cancelled' ] ); $json = array('cancel' => 1); $json['reload'] = z_root() . '/' . $_REQUEST['jsreload']; echo json_encode($json); @@ -916,6 +898,10 @@ class Item extends \Zotlabs\Web\Controller { if(! $nopush) \Zotlabs\Daemon\Master::Summon(array('Notifier', 'edit_post', $post_id)); + + if($api_source) + return($x); + if((x($_REQUEST,'return')) && strlen($return_path)) { logger('return: ' . $return_path); goaway(z_root() . "/" . $return_path ); @@ -990,8 +976,11 @@ class Item extends \Zotlabs\Web\Controller { else { logger('mod_item: unable to retrieve post that was just stored.'); notice( t('System error. Post not saved.') . EOL); - goaway(z_root() . "/" . $return_path ); - // NOTREACHED + if($return_path) + goaway(z_root() . "/" . $return_path ); + if($api_source) + return ( [ 'success' => false, 'message' => 'system error' ] ); + killme(); } if(($parent) && ($parent != $post_id)) { @@ -1046,9 +1035,7 @@ class Item extends \Zotlabs\Web\Controller { if((! local_channel()) && (! remote_channel())) return; - - require_once('include/security.php'); - + if((argc() == 3) && (argv(1) === 'drop') && intval(argv(2))) { require_once('include/items.php'); @@ -1084,6 +1071,14 @@ class Item extends \Zotlabs\Web\Controller { else { // complex deletion that needs to propagate and be performed in phases drop_item($i[0]['id'],true,DROPITEM_PHASE1); + $r = q("select * from item where id = %d", + intval($i[0]['id']) + ); + if($r) { + xchan_query($r); + $sync_item = fetch_post_tags($r); + build_sync_packet($i[0]['uid'],array('item' => array(encode_item($sync_item[0],true)))); + } tag_deliver($i[0]['uid'],$i[0]['id']); } } diff --git a/Zotlabs/Module/Mail.php b/Zotlabs/Module/Mail.php index c767c8e56..459ce5acf 100644 --- a/Zotlabs/Module/Mail.php +++ b/Zotlabs/Module/Mail.php @@ -23,7 +23,34 @@ class Mail extends \Zotlabs\Web\Controller { $rstr = ((x($_REQUEST,'messagerecip')) ? notags(trim($_REQUEST['messagerecip'])) : ''); $preview = ((x($_REQUEST,'preview')) ? intval($_REQUEST['preview']) : 0); $expires = ((x($_REQUEST,'expires')) ? datetime_convert(date_default_timezone_get(),'UTC', $_REQUEST['expires']) : NULL_DATE); - + + if($preview) { + + $body = cleanup_bbcode($body); + $results = linkify_tags($a, $body, local_channel()); + + if(preg_match_all('/(\[attachment\](.*?)\[\/attachment\])/',$body,$match)) { + $attachments = array(); + foreach($match[2] as $mtch) { + $hash = substr($mtch,0,strpos($mtch,',')); + $rev = intval(substr($mtch,strpos($mtch,','))); + $r = attach_by_hash_nodata($hash,get_observer_hash(),$rev); + if($r['success']) { + $attachments[] = array( + 'href' => z_root() . '/attach/' . $r['data']['hash'], + 'length' => $r['data']['filesize'], + 'type' => $r['data']['filetype'], + 'title' => urlencode($r['data']['filename']), + 'revision' => $r['data']['revision'] + ); + } + $body = trim(str_replace($match[1],'',$body)); + } + } + echo json_encode(['preview' => zidify_links(smilies(bbcode($body)))]); + killme(); + } + // If we have a raw string for a recipient which hasn't been auto-filled, // it means they probably aren't in our address book, hence we don't know // if we have permission to send them private messages. @@ -82,6 +109,8 @@ class Mail extends \Zotlabs\Web\Controller { require_once('include/text.php'); linkify_tags($a, $body, local_channel()); + // I don't think this is used any more. + if($preview) { $mail = [ 'mailbox' => 'outbox', @@ -90,8 +119,8 @@ class Mail extends \Zotlabs\Web\Controller { 'from_name' => $channel['xchan_name'], 'from_url' => $channel['xchan_url'], 'from_photo' => $channel['xchan_photo_s'], - 'subject' => smilies(bbcode($subject)), - 'body' => smilies(bbcode($body)), + 'subject' => zidify_links(smilies(bbcode($subject))), + 'body' => zidify_links(smilies(bbcode($body))), 'attachments' => '', 'can_recall' => false, 'is_recalled' => '', @@ -341,7 +370,7 @@ class Mail extends \Zotlabs\Web\Controller { 'to_url' => chanlink_hash($message['to_xchan']), 'to_photo' => $message['to']['xchan_photo_s'], 'subject' => $message['title'], - 'body' => smilies(bbcode($message['body'])), + 'body' => zidify_links(smilies(bbcode($message['body']))), 'attachments' => $s, 'delete' => t('Delete message'), 'dreport' => t('Delivery report'), diff --git a/Zotlabs/Module/Message.php b/Zotlabs/Module/Message.php index ea2127a1d..7494f4bf4 100644 --- a/Zotlabs/Module/Message.php +++ b/Zotlabs/Module/Message.php @@ -79,7 +79,7 @@ class Message extends \Zotlabs\Web\Controller { 'to_photo' => $rr['to']['xchan_photo_s'], 'subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'), 'delete' => t('Delete conversation'), - 'body' => smilies(bbcode($rr['body'])), + 'body' => zidify_links(smilies(bbcode($rr['body']))), 'date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')), 'seen' => $rr['seen'] ); diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php index 19a642a83..72a056963 100644 --- a/Zotlabs/Module/Profiles.php +++ b/Zotlabs/Module/Profiles.php @@ -191,7 +191,7 @@ class Profiles extends \Zotlabs\Web\Controller { } } - function post() { + function post() { if(! local_channel()) { notice( t('Permission denied.') . EOL); @@ -243,6 +243,7 @@ class Profiles extends \Zotlabs\Web\Controller { check_form_security_token_redirectOnErr('/profiles', 'profile_edit'); + $is_default = (($orig[0]['is_default']) ? 1 : 0); $profile_name = notags(trim($_POST['profile_name'])); @@ -315,6 +316,15 @@ class Profiles extends \Zotlabs\Web\Controller { $hide_friends = ((intval($_POST['hide_friends'])) ? 1: 0); + + $orig_vcard = (($orig[0]['profile_vcard']) ? \Sabre\VObject\Reader::read($orig[0]['profile_vcard']) : null); + + $_REQUEST['fn'] = $name; + $_REQUEST['title'] = $pdesc; + + $profile_vcard = update_vcard($_REQUEST,$orig_vcard); + + require_once('include/text.php'); linkify_tags($a, $likes, local_channel()); linkify_tags($a, $dislikes, local_channel()); @@ -511,7 +521,8 @@ class Profiles extends \Zotlabs\Web\Controller { romance = '%s', employment = '%s', education = '%s', - hide_friends = %d + hide_friends = %d, + profile_vcard = '%s' WHERE id = %d AND uid = %d", dbesc($profile_name), dbesc($name), @@ -546,6 +557,7 @@ class Profiles extends \Zotlabs\Web\Controller { dbesc($work), dbesc($education), intval($hide_friends), + dbesc($profile_vcard), intval(argv(1)), intval(local_channel()) ); diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php index 1c9cd5121..d87967189 100644 --- a/Zotlabs/Module/Pubsites.php +++ b/Zotlabs/Module/Pubsites.php @@ -36,7 +36,7 @@ class Pubsites extends \Zotlabs\Web\Controller { $o .= '</tr>'; if($j['sites']) { foreach($j['sites'] as $jj) { - if(! $jj['project']) + if(! \Zotlabs\Lib\System::compatible_project($jj['project'])) continue; if(strpos($jj['version'],' ')) { $x = explode(' ', $jj['version']); diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php index b319b19d6..89eaa4ffa 100644 --- a/Zotlabs/Module/Search.php +++ b/Zotlabs/Module/Search.php @@ -211,7 +211,7 @@ class Search extends \Zotlabs\Web\Controller { $result = array(); require_once('include/conversation.php'); foreach($items as $item) { - $item['html'] = bbcode($item['body']); + $item['html'] = zidify_links(bbcode($item['body'])); $x = encode_item($item); $x['html'] = prepare_text($item['body'],$item['mimetype']); $result[] = $x; diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php index e18416393..a73aa2e60 100644 --- a/Zotlabs/Module/Settings/Channel.php +++ b/Zotlabs/Module/Settings/Channel.php @@ -404,8 +404,11 @@ class Channel { '$desc' => t('Your channel address is'), '$nickname' => $nickname, '$subdir' => $subdir, + '$davdesc' => t('Your files/photos are accessible via WebDAV at'), + '$davpath' => ((get_account_techlevel() > 3) ? z_root() . '/dav/' . $nickname : ''), '$basepath' => \App::get_hostname() )); + $stpl = get_markup_template('settings.tpl'); @@ -515,6 +518,8 @@ class Channel { '$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, '', $yes_no), '$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, '', $yes_no), + '$notify9' => array('notify9', t('Someone likes your post/comment'), ($notify & NOTIFY_LIKE), NOTIFY_LIKE, '', $yes_no), + '$lbl_vnot' => t('Show visual notifications including:'), diff --git a/Zotlabs/Module/Settings/Tokens.php b/Zotlabs/Module/Settings/Tokens.php index e63fed128..d32a00c95 100644 --- a/Zotlabs/Module/Settings/Tokens.php +++ b/Zotlabs/Module/Settings/Tokens.php @@ -115,6 +115,7 @@ class Tokens { $desc2 = t('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:'); $global_perms = \Zotlabs\Access\Permissions::Perms(); + $their_perms = []; $existing = get_all_perms(local_channel(),(($atoken_xchan) ? $atoken_xchan : '')); @@ -123,7 +124,6 @@ class Tokens { intval(local_channel()), dbesc($atoken_xchan) ); - $their_perms = array(); if($theirs) { foreach($theirs as $t) { $their_perms[$t['k']] = $t['v']; diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index fde9fe823..9c688af01 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -161,13 +161,6 @@ class Setup extends \Zotlabs\Web\Controller { } } - function get_db_errno() { - if(class_exists('mysqli')) - return mysqli_connect_errno(); - else - return mysql_errno(); - } - /** * @brief Get output for the setup page. * @@ -175,6 +168,7 @@ class Setup extends \Zotlabs\Web\Controller { * * @return string parsed HTML output */ + function get() { $o = ''; @@ -401,7 +395,8 @@ class Setup extends \Zotlabs\Web\Controller { if (strlen($phpath)) { $passed = file_exists($phpath); - } else { + } + elseif(function_exists('shell_exec')) { if(is_windows()) $phpath = trim(shell_exec('where php')); else @@ -426,9 +421,13 @@ class Setup extends \Zotlabs\Web\Controller { if($passed) { $str = autoname(8); $cmd = "$phpath install/testargs.php $str"; - $result = trim(shell_exec($cmd)); - $passed2 = $result == $str; $help = ''; + + if(function_exists('shell_exec')) + $result = trim(shell_exec($cmd)); + else + $help .= t('Unable to check command line PHP, as shell_exec() is disabled. This is required.') . EOL; + $passed2 = (($result == $str) ? true : false); if(!$passed2) { $help .= t('The command line version of PHP on your system does not have "register_argc_argv" enabled.'). EOL; $help .= t('This is required for message delivery to work.'); @@ -457,7 +456,7 @@ class Setup extends \Zotlabs\Web\Controller { userReadableSize($result['max_upload_filesize']), $result['max_file_uploads'] ); - $help .= '<br>' . t('You can adjust these settings in the servers php.ini.'); + $help .= '<br>' . t('You can adjust these settings in the server php.ini file.'); $this->check_add($checks, t('PHP upload limits'), true, false, $help); } @@ -497,6 +496,11 @@ class Setup extends \Zotlabs\Web\Controller { function check_funcs(&$checks) { $ck_funcs = array(); + $disabled = explode(',',ini_get('disable_functions')); + if($disabled) + array_walk($disabled,'array_trim'); + + // add check metadata, the real check is done bit later and return values set $this->check_add($ck_funcs, t('libCurl PHP module'), true, true); $this->check_add($ck_funcs, t('GD graphics PHP module'), true, true); @@ -512,11 +516,17 @@ class Setup extends \Zotlabs\Web\Controller { $this->check_add($ck_funcs, t('Apache mod_rewrite module'), true, true); } } - if((! function_exists('proc_open')) || strstr(ini_get('disable_functions'),'proc_open')) { - $this->check_add($ck_funcs, t('proc_open'), false, true, t('Error: proc_open is required but is either not installed or has been disabled in php.ini')); + if((! function_exists('exec')) || in_array('exec',$disabled)) { + $this->check_add($ck_funcs, t('exec'), false, true, t('Error: exec is required but is either not installed or has been disabled in php.ini')); + } + else { + $this->check_add($ck_funcs, t('exec'), true, true); + } + if((! function_exists('shell_exec')) || in_array('shell_exec',$disabled)) { + $this->check_add($ck_funcs, t('shell_exec'), false, true, t('Error: shell_exec is required but is either not installed or has been disabled in php.ini')); } else { - $this->check_add($ck_funcs, t('proc_open'), true, true); + $this->check_add($ck_funcs, t('shell_exec'), true, true); } if(! function_exists('curl_init')) { @@ -579,7 +589,7 @@ class Setup extends \Zotlabs\Web\Controller { if(! is_writable(TEMPLATE_BUILD_PATH) ) { $status = false; - $help = t('Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL; + $help = t('This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL; $help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder.'), TEMPLATE_BUILD_PATH) . EOL; $help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL; $help .= sprintf( t('Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.'), TEMPLATE_BUILD_PATH) . EOL; @@ -601,7 +611,7 @@ class Setup extends \Zotlabs\Web\Controller { if(! is_writable('store')) { $status = false; - $help = t('This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder') . EOL; + $help = t('This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder') . EOL; $help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL; } @@ -716,7 +726,7 @@ class Setup extends \Zotlabs\Web\Controller { // (e.g. NSS used in RedHat) require different syntax, so hopefully // the default curl cipher list will work for most sites. If not, // this can set via config. Many distros are now disabling RC4, - // but many Red sites still use it and are unable to change it. + // but many existing sites still use it and are unable to change it. // We do not use SSL for encryption, only to protect session cookies. // z_fetch_url() is also used to import shared links and other content // so in theory most any cipher could show up and we should do our best diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php index a15e2896d..7c3918425 100644 --- a/Zotlabs/Module/Siteinfo.php +++ b/Zotlabs/Module/Siteinfo.php @@ -15,63 +15,33 @@ class Siteinfo extends \Zotlabs\Web\Controller { function get() { - if(! get_config('system','hidden_version_siteinfo')) { - $version = sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version()); - if(@is_dir('.git') && function_exists('shell_exec')) { - $commit = @shell_exec('git log -1 --format="%h"'); - $tag = \Zotlabs\Lib\System::get_std_version(); // @shell_exec('git describe --tags --abbrev=0'); - } - if(! isset($commit) || strlen($commit) > 16) - $commit = ''; - } - else { - $version = $commit = ''; - } + $siteinfo = replace_macros(get_markup_template('siteinfo.tpl'), + [ + '$title' => t('About this site'), + '$sitenametxt' => t('Site Name'), + '$sitename' => \Zotlabs\Lib\System::get_site_name(), + '$headline' => t('Site Information'), + '$site_about' => bbcode(get_config('system','siteinfo')), + '$admin_headline' => t('Administrator'), + '$admin_about' => bbcode(get_config('system','admininfo')), + '$terms' => t('Terms of Service'), + '$prj_header' => t('Software and Project information'), + '$prj_name' => t('This site is powered by $Projectname'), + '$prj_transport' => t('Federated and decentralised networking and identity services provided by Zot'), + '$transport_link' => '<a href="https://zotlabs.com">https://zotlabs.com</a>', + '$prj_version' => ((get_config('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())), + '$prj_linktxt' => t('Project homepage'), + '$prj_srctxt' => t('Developer homepage'), + '$prj_link' => \Zotlabs\Lib\System::get_project_link(), + '$prj_src' => \Zotlabs\Lib\System::get_project_srclink(), + ] + ); - $plugins_list = implode(', ',visible_plugin_list()); + call_hooks('about_hook', $siteinfo); + + return $siteinfo; - if($plugins_list) - $plugins_text = t('Installed plugins/addons/apps:'); - else - $plugins_text = t('No installed plugins/addons/apps'); - - $txt = get_config('system','admininfo'); - $admininfo = bbcode($txt); - - if(file_exists('doc/site_donate.html')) - $donate .= file_get_contents('doc/site_donate.html'); - - if(function_exists('sys_getloadavg')) - $loadavg = sys_getloadavg(); - - $o = replace_macros(get_markup_template('siteinfo.tpl'), array( - '$title' => t('$Projectname'), - '$description' => t('This is a hub of $Projectname - a global cooperative network of decentralized privacy enhanced websites.'), - '$version' => $version, - '$tag_txt' => t('Tag: '), - '$tag' => $tag, - '$polled' => t('Last background fetch: '), - '$lastpoll' => get_poller_runtime(), - '$load_average' => t('Current load average: '), - '$loadavg_all' => $loadavg[0] . ', ' . $loadavg[1] . ', ' . $loadavg[2], - '$commit' => $commit, - '$web_location' => t('Running at web location') . ' ' . z_root(), - '$visit' => t('Please visit <a href="http://hubzilla.org">hubzilla.org</a> to learn more about $Projectname.'), - '$bug_text' => t('Bug reports and issues: please visit'), - '$bug_link_url' => 'https://github.com/redmatrix/hubzilla/issues', - '$bug_link_text' => t('$projectname issues'), - '$contact' => t('Suggestions, praise, etc. - please email "redmatrix" at librelist - dot com'), - '$donate' => $donate, - '$adminlabel' => t('Site Administrators'), - '$admininfo' => $admininfo, - '$plugins_text' => $plugins_text, - '$plugins_list' => $plugins_list - )); - - call_hooks('about_hook', $o); - - return $o; - } + } diff --git a/Zotlabs/Module/Sslify.php b/Zotlabs/Module/Sslify.php index db73f85e0..2891f3691 100644 --- a/Zotlabs/Module/Sslify.php +++ b/Zotlabs/Module/Sslify.php @@ -10,21 +10,16 @@ class Sslify extends \Zotlabs\Web\Controller { $h = explode("\n",$x['header']); foreach ($h as $l) { list($k,$v) = array_map("trim", explode(":", trim($l), 2)); - $hdrs[$k] = $v; + $hdrs[strtolower($k)] = $v; } - if (array_key_exists('Content-Type', $hdrs)) - $type = $hdrs['Content-Type']; - - header('Content-Type: ' . $type); + if (array_key_exists('content-type', $hdrs)) { + $type = $hdrs['content-type']; + header('Content-Type: ' . $type); + } + echo $x['body']; killme(); } killme(); - // for some reason when this fallback is in place - it gets triggered - // often, (creating mixed content exceptions) even though there is - // nothing obvious missing on the page when we bypass it. - goaway($_REQUEST['url']); - } - - + } } diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php index 9268fbb0a..c6fe7518e 100644 --- a/Zotlabs/Module/Wall_attach.php +++ b/Zotlabs/Module/Wall_attach.php @@ -12,7 +12,7 @@ class Wall_attach extends \Zotlabs\Web\Controller { $using_api = false; - if(\App::$data['api_info'] && array_key_exists('media',$_FILES)) { + if($_REQUEST['api_source'] && array_key_exists('media',$_FILES)) { $using_api = true; } diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index 0da699c73..46b94f091 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -173,7 +173,6 @@ class Webpages extends \Zotlabs\Web\Controller { if($_REQUEST['pagetitle']) $x['pagetitle'] = $_REQUEST['pagetitle']; - $editor = status_editor($a,$x); // Get a list of webpages. We can't display all them because endless scroll makes that unusable, // so just list titles and an edit link. @@ -197,6 +196,11 @@ class Webpages extends \Zotlabs\Web\Controller { // intval(ITEM_TYPE_WEBPAGE) // ); + if(! $r) + $x['pagetitle'] = 'home'; + + $editor = status_editor($a,$x); + $pages = null; if($r) { diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index edcd6ec58..95f7c8704 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -34,20 +34,16 @@ class Wiki extends \Zotlabs\Web\Controller { notice( t('Not found') . EOL); return; } - - $tab = 'wiki'; - - + require_once('include/wiki.php'); require_once('include/acl_selectors.php'); require_once('include/conversation.php'); + require_once('include/bbcode.php'); // TODO: Combine the interface configuration into a unified object // Something like $interface = array('new_page_button' => false, 'new_wiki_button' => false, ...) $wiki_owner = false; $showNewWikiButton = false; - $showCommitMsg = false; - $hidePageHistory = false; $pageHistory = array(); $local_observer = null; $resource_id = ''; @@ -90,50 +86,82 @@ class Wiki extends \Zotlabs\Web\Controller { // Not the channel owner $owner_acl = $x = array(); } - + + $is_owner = ((local_channel()) && (local_channel() == \App::$profile['profile_uid']) ? true : false); + $o = profile_tabs($a, $is_owner, \App::$profile['channel_address']); + // Download a wiki - if ((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) { - $resource_id = argv(4); - $w = wiki_get_wiki($resource_id); - if (!$w['path']) { - notice(t('Error retrieving wiki') . EOL); - } - $zip_folder_name = random_string(10); - $zip_folderpath = '/tmp/' . $zip_folder_name; - if (!mkdir($zip_folderpath, 0770, false)) { - logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); - notice(t('Error creating zip file export folder') . EOL); - } - $zip_filename = $w['urlName']; - $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; - // Generate the zip file - \Zotlabs\Lib\ExtendedZip::zipTree($w['path'], $zip_filepath, \ZipArchive::CREATE); - // Output the file for download - header('Content-disposition: attachment; filename="' . $zip_filename . '.zip"'); - header("Content-Type: application/zip"); - $success = readfile($zip_filepath); - if ($success) { - rrmdir($zip_folderpath); // delete temporary files - } else { - rrmdir($zip_folderpath); // delete temporary files - logger('Error downloading wiki: ' . $resource_id); - } + if((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) { + + $resource_id = argv(4); + + $w = wiki_get_wiki($resource_id); + if(!$w['path']) { + notice(t('Error retrieving wiki') . EOL); + } + + $zip_folder_name = random_string(10); + $zip_folderpath = '/tmp/' . $zip_folder_name; + if(!mkdir($zip_folderpath, 0770, false)) { + logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); + notice(t('Error creating zip file export folder') . EOL); + } + + $zip_filename = $w['urlName']; + $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; + + // Generate the zip file + \Zotlabs\Lib\ExtendedZip::zipTree($w['path'], $zip_filepath, \ZipArchive::CREATE); + + // Output the file for download + + header('Content-disposition: attachment; filename="' . $zip_filename . '.zip"'); + header('Content-Type: application/zip'); + + $success = readfile($zip_filepath); + + if(!$success) { + logger('Error downloading wiki: ' . $resource_id); + notice(t('Error downloading wiki: ' . $resource_id) . EOL); + } + + // delete temporary files + rrmdir($zip_folderpath); + killme(); + } switch (argc()) { case 2: - // Configure page template - $wikiheaderName = t('Wiki'); - $wikiheaderPage = t('Sandbox'); - require_once('library/markdown.php'); - $content = t('"# Wiki Sandbox\n\nContent you **edit** and **preview** here *will not be saved*."'); - $renderedContent = Markdown(json_decode($content)); - $hide_editor = false; - $showPageControls = false; - $showNewWikiButton = $wiki_owner; - $showNewPageButton = false; - $hidePageHistory = true; - $showCommitMsg = false; + $wikis = wiki_list($owner, get_observer_hash()); + if ($wikis) { + $o .= replace_macros(get_markup_template('wikilist.tpl'), array( + '$header' => t('Wikis'), + '$channel' => $owner['channel_address'], + '$wikis' => $wikis['wikis'], + // If the observer is the local channel owner, show the wiki controls + '$owner' => ((local_channel() && local_channel() === intval(\App::$profile['uid'])) ? true : false), + '$edit' => t('Edit'), + '$download' => t('Download'), + '$view' => t('View'), + '$create' => t('Create New'), + '$submit' => t('Submit'), + '$wikiName' => array('wikiName', t('Wiki name')), + '$mimeType' => array('mimeType', t('Content type'), '', '', ['text/markdown' => 'Markdown', 'text/bbcode' => 'BB Code']), + '$name' => t('Name'), + '$type' => t('Type'), + '$lockstate' => $x['lockstate'], + '$acl' => $x['acl'], + '$allow_cid' => $x['allow_cid'], + '$allow_gid' => $x['allow_gid'], + '$deny_cid' => $x['deny_cid'], + '$deny_gid' => $x['deny_gid'], + '$notify' => array('postVisible', t('Create a status post for this wiki'), '', '', array(t('No'), t('Yes'))) + )); + + return $o; + } + break; case 3: // /wiki/channel/wiki -> No page was specified, so redirect to Home.md @@ -144,10 +172,12 @@ class Wiki extends \Zotlabs\Web\Controller { // Fetch the wiki info and determine observer permissions $wikiUrlName = urlencode(argv(2)); $pageUrlName = urlencode(argv(3)); + $w = wiki_exists_by_name($owner['channel_id'], $wikiUrlName); if(!$w['resource_id']) { notice(t('Wiki not found') . EOL); goaway('/'.argv(0).'/'.argv(1)); + return; //not reached } $resource_id = $w['resource_id']; @@ -158,6 +188,7 @@ class Wiki extends \Zotlabs\Web\Controller { if(!$perms['read']) { notice(t('Permission denied.') . EOL); goaway('/'.argv(0).'/'.argv(1)); + return; //not reached } if($perms['write']) { $wiki_editor = true; @@ -169,70 +200,59 @@ class Wiki extends \Zotlabs\Web\Controller { } $wikiheaderName = urldecode($wikiUrlName); $wikiheaderPage = urldecode($pageUrlName); + $renamePage = (($wikiheaderPage === 'Home') ? '' : t('Rename page')); + $p = wiki_get_page_content(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); if(!$p['success']) { notice(t('Error retrieving page content') . EOL); goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName); + return; //not reached } - $content = ($p['content'] !== '' ? htmlspecialchars_decode($p['content'],ENT_COMPAT) : '"# New page\n"'); + + $mimeType = $p['mimeType']; + + $rawContent = (($p['mimeType'] == 'text/bbcode') ? htmlspecialchars_decode(json_decode($p['content']),ENT_COMPAT) : htmlspecialchars_decode($p['content'],ENT_COMPAT)); + $content = ($p['content'] !== '' ? $rawContent : '"# New page\n"'); // Render the Markdown-formatted page content in HTML - require_once('library/markdown.php'); - $html = wiki_generate_toc(zidify_text(purify_html(Markdown(wiki_bbcode(json_decode($content)))))); - $renderedContent = wiki_convert_links($html,argv(0).'/'.argv(1).'/'.$wikiUrlName); - $hide_editor = false; + if($mimeType == 'text/bbcode') { + $renderedContent = wiki_convert_links(zidify_links(smilies(bbcode($content))),argv(0).'/'.argv(1).'/'.$wikiUrlName); + } + else { + require_once('library/markdown.php'); + $html = wiki_generate_toc(zidify_text(purify_html(Markdown(wiki_bbcode(json_decode($content)))))); + $renderedContent = wiki_convert_links($html,argv(0).'/'.argv(1).'/'.$wikiUrlName); + } $showPageControls = $wiki_editor; - $showNewWikiButton = $wiki_owner; - $showNewPageButton = $wiki_editor; - $hidePageHistory = false; - $showCommitMsg = true; - $pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); break; default: // Strip the extraneous URL components - goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName.'/'.$pageUrlName); + goaway('/' . argv(0) . '/' . argv(1) . '/' . $wikiUrlName . '/' . $pageUrlName); + return; //not reached } $wikiModalID = random_string(3); - $wikiModal = replace_macros( - get_markup_template('generic_modal.tpl'), array( - '$id' => $wikiModalID, - '$title' => t('Revision Comparison'), - '$ok' => t('Revert'), - '$cancel' => t('Cancel') - ) - ); - - $is_owner = ((local_channel()) && (local_channel() == \App::$profile['profile_uid']) ? true : false); - - $o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']); - + $wikiModal = replace_macros(get_markup_template('generic_modal.tpl'), array( + '$id' => $wikiModalID, + '$title' => t('Revision Comparison'), + '$ok' => (($showPageControls) ? t('Revert') : ''), + '$cancel' => t('Cancel') + )); + $o .= replace_macros(get_markup_template('wiki.tpl'),array( '$wikiheaderName' => $wikiheaderName, '$wikiheaderPage' => $wikiheaderPage, - '$hideEditor' => $hide_editor, + '$renamePage' => $renamePage, '$showPageControls' => $showPageControls, - '$tools_label' => 'Wiki Tools', - '$showNewWikiButton'=> $showNewWikiButton, - '$showNewPageButton'=> $showNewPageButton, - '$hidePageHistory' => $hidePageHistory, - '$showCommitMsg' => $showCommitMsg, + '$editOrSourceLabel' => (($showPageControls) ? t('Edit') : t('Source')), + '$tools_label' => 'Page Tools', '$channel' => $owner['channel_address'], '$resource_id' => $resource_id, '$page' => $pageUrlName, - '$lockstate' => $x['lockstate'], - '$acl' => $x['acl'], - '$allow_cid' => $x['allow_cid'], - '$allow_gid' => $x['allow_gid'], - '$deny_cid' => $x['deny_cid'], - '$deny_gid' => $x['deny_gid'], - '$bang' => $x['bang'], + '$mimeType' => $mimeType, '$content' => $content, '$renderedContent' => $renderedContent, - '$wikiName' => array('wikiName', t('Enter the name of your new wiki:'), '', ''), - '$pageName' => array('pageName', t('Enter the name of the new page:'), '', ''), - '$pageRename' => array('pageRename', t('Enter the new name:'), '', ''), - '$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="(optional) Enter a custom message when saving the page..."'), - '$pageHistory' => $pageHistory['history'], + '$pageRename' => array('pageRename', t('New page name'), '', ''), + '$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="Short description of your changes (optional)"'), '$wikiModal' => $wikiModal, '$wikiModalID' => $wikiModalID, '$commit' => 'HEAD', @@ -242,17 +262,21 @@ class Wiki extends \Zotlabs\Web\Controller { '$embedPhotosModalOK' => t('OK'), '$modalchooseimages' => t('Choose images to embed'), '$modalchoosealbum' => t('Choose an album'), - '$modaldiffalbum' => t('Choose a different album...'), + '$modaldiffalbum' => t('Choose a different album'), '$modalerrorlist' => t('Error getting album list'), '$modalerrorlink' => t('Error getting photo link'), '$modalerroralbum' => t('Error getting album'), )); - head_add_js('library/ace/ace.js'); // Ace Code Editor + + if($p['mimeType'] != 'text/bbcode') + head_add_js('library/ace/ace.js'); // Ace Code Editor + return $o; } function post() { require_once('include/wiki.php'); + require_once('include/bbcode.php'); $nick = argv(1); $owner = channelx_by_nick($nick); @@ -268,13 +292,21 @@ class Wiki extends \Zotlabs\Web\Controller { // Render mardown-formatted text in HTML for preview if((argc() > 2) && (argv(2) === 'preview')) { $content = $_POST['content']; - $resource_id = $_POST['resource_id']; - require_once('library/markdown.php'); - $content = wiki_bbcode($content); - $html = wiki_generate_toc(zidify_text(purify_html(Markdown($content)))); + $resource_id = $_POST['resource_id']; $w = wiki_get_wiki($resource_id); $wikiURL = argv(0).'/'.argv(1).'/'.$w['urlName']; - $html = wiki_convert_links($html,$wikiURL); + + $mimeType = $w['mimeType']; + + if($mimeType == 'text/bbcode') { + $html = wiki_convert_links(zidify_links(smilies(bbcode($content))),$wikiURL); + } + else { + require_once('library/markdown.php'); + $content = wiki_bbcode($content); + $html = wiki_generate_toc(zidify_text(purify_html(Markdown($content)))); + $html = wiki_convert_links($html,$wikiURL); + } json_return_and_die(array('html' => $html, 'success' => true)); } @@ -288,17 +320,19 @@ class Wiki extends \Zotlabs\Web\Controller { if (local_channel() !== intval($owner['channel_id'])) { goaway('/' . argv(0) . '/' . $nick . '/'); } - $wiki = array(); // Generate new wiki info from input name $wiki['postVisible'] = ((intval($_POST['postVisible']) === 0) ? 0 : 1); $wiki['rawName'] = $_POST['wikiName']; $wiki['htmlName'] = escape_tags($_POST['wikiName']); $wiki['urlName'] = urlencode($_POST['wikiName']); + $wiki['mimeType'] = $_POST['mimeType']; + if($wiki['urlName'] === '') { notice( t('Error creating wiki. Invalid name.') . EOL); goaway('/wiki'); } + // Get ACL for permissions $acl = new \Zotlabs\Access\AccessList($owner); $acl->set_from_array($_POST); @@ -355,7 +389,18 @@ class Wiki extends \Zotlabs\Web\Controller { } $page = wiki_create_page($name, $resource_id); if ($page['success']) { - json_return_and_die(array('url' => '/'.argv(0).'/'.argv(1).'/'.$page['wiki']['urlName'].'/'.urlencode($page['page']['urlName']), 'success' => true)); + $ob = \App::get_observer(); + $commit = wiki_git_commit(array( + 'commit_msg' => t('New page created'), + 'resource_id' => $resource_id, + 'observer' => $ob, + 'files' => array($page['page']['fileName']) + )); + if($commit['success']) { + json_return_and_die(array('url' => '/'.argv(0).'/'.argv(1).'/'.$page['wiki']['urlName'].'/'.$page['page']['urlName'], 'success' => true)); + } else { + json_return_and_die(array('message' => 'Error making git commit','url' => '/'.argv(0).'/'.argv(1).'/'.$page['wiki']['urlName'].'/'.urlencode($page['page']['urlName']),'success' => false)); + } } else { logger('Error creating page'); json_return_and_die(array('message' => 'Error creating page.', 'success' => false)); @@ -405,7 +450,7 @@ class Wiki extends \Zotlabs\Web\Controller { 'commit_msg' => $commitMsg, 'resource_id' => $resource_id, 'observer' => $ob, - 'files' => array($pageUrlName.'.md') + 'files' => array($saved['fileName']) )); if($commit['success']) { json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true)); @@ -434,8 +479,9 @@ class Wiki extends \Zotlabs\Web\Controller { } $historyHTML = widget_wiki_page_history(array( - 'resource_id' => $resource_id, - 'pageUrlName' => $pageUrlName + 'resource_id' => $resource_id, + 'pageUrlName' => $pageUrlName, + 'permsWrite' => $perms['write'] )); json_return_and_die(array('historyHTML' => $historyHTML, 'message' => '', 'success' => true)); } @@ -544,7 +590,7 @@ class Wiki extends \Zotlabs\Web\Controller { 'commit_msg' => 'Renamed ' . urldecode($pageUrlName) . ' to ' . $renamed['page']['htmlName'], 'resource_id' => $resource_id, 'observer' => $ob, - 'files' => array($pageUrlName . '.md', $renamed['page']['fileName']), + 'files' => array($pageUrlName . substr($renamed['page']['fileName'], -3), $renamed['page']['fileName']), 'all' => true )); if($commit['success']) { diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php index 562a9f791..8e36f52c2 100644 --- a/Zotlabs/Render/Comanche.php +++ b/Zotlabs/Render/Comanche.php @@ -104,6 +104,8 @@ class Comanche { $x = explode('.',$v); if($x[0] == 'config') return get_config($x[1],$x[2]); + elseif($x[0] === 'request') + return $_SERVER['REQUEST_URI']; elseif($x[0] === 'observer') { if(count($x) > 1) { $y = \App::get_observer(); @@ -125,20 +127,35 @@ class Comanche { function test_condition($s) { // This is extensible. The first version of variable testing supports tests of the forms: + + // [if $config.system.foo ~= baz] which will check if get_config('system','foo') contains the string 'baz'; // [if $config.system.foo == baz] which will check if get_config('system','foo') is the string 'baz'; // [if $config.system.foo != baz] which will check if get_config('system','foo') is not the string 'baz'; - // You may check numeric entries, but these checks are evaluated as strings. + // [if $config.system.foo >= 3] which will check if get_config('system','foo') is greater than or equal to 3; + // [if $config.system.foo > 3] which will check if get_config('system','foo') is greater than 3; + + // [if $config.system.foo <= 3] which will check if get_config('system','foo') is less than or equal to 3; + // [if $config.system.foo < 3] which will check if get_config('system','foo') is less than 3; + // [if $config.system.foo {} baz] which will check if 'baz' is an array element in get_config('system','foo') // [if $config.system.foo {*} baz] which will check if 'baz' is an array key in get_config('system','foo') // [if $config.system.foo] which will check for a return of a true condition for get_config('system','foo'); // The values 0, '', an empty array, and an unset value will all evaluate to false. + if(preg_match('/[\$](.*?)\s\~\=\s(.*?)$/',$s,$matches)) { + $x = $this->get_condition_var($matches[1]); + if(stripos($x,trim($matches[2])) !== false) + return true; + return false; + } + if(preg_match('/[\$](.*?)\s\=\=\s(.*?)$/',$s,$matches)) { $x = $this->get_condition_var($matches[1]); if($x == trim($matches[2])) return true; return false; } + if(preg_match('/[\$](.*?)\s\!\=\s(.*?)$/',$s,$matches)) { $x = $this->get_condition_var($matches[1]); if($x != trim($matches[2])) @@ -146,6 +163,31 @@ class Comanche { return false; } + if(preg_match('/[\$](.*?)\s\>\=\s(.*?)$/',$s,$matches)) { + $x = $this->get_condition_var($matches[1]); + if($x >= trim($matches[2])) + return true; + return false; + } + if(preg_match('/[\$](.*?)\s\<\=\s(.*?)$/',$s,$matches)) { + $x = $this->get_condition_var($matches[1]); + if($x <= trim($matches[2])) + return true; + return false; + } + if(preg_match('/[\$](.*?)\s\>\s(.*?)$/',$s,$matches)) { + $x = $this->get_condition_var($matches[1]); + if($x > trim($matches[2])) + return true; + return false; + } + if(preg_match('/[\$](.*?)\s\>\s(.*?)$/',$s,$matches)) { + $x = $this->get_condition_var($matches[1]); + if($x < trim($matches[2])) + return true; + return false; + } + if(preg_match('/[\$](.*?)\s\{\}\s(.*?)$/',$s,$matches)) { $x = $this->get_condition_var($matches[1]); if(is_array($x) && in_array(trim($matches[2]),$x)) diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php index a3bad29ae..271836ba9 100644 --- a/Zotlabs/Web/Router.php +++ b/Zotlabs/Web/Router.php @@ -137,15 +137,21 @@ class Router { killme(); } - logger("Module {$module} not found.", LOGGER_DEBUG, LOG_WARNING); - - if((x($_SERVER, 'QUERY_STRING')) && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') && \App::$config['system']['dreamhost_error_hack']) { - logger('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI']); + if((x($_SERVER, 'QUERY_STRING')) + && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') + && \App::$config['system']['dreamhost_error_hack']) { + logger('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI'],LOGGER_DEBUG); goaway(z_root() . $_SERVER['REQUEST_URI']); } - logger('index.php: page not found: ' . $_SERVER['REQUEST_URI'] . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' . $_SERVER['QUERY_STRING'], LOGGER_DEBUG); - header($_SERVER['SERVER_PROTOCOL'] . ' 404 ' . t('Not Found')); + if(get_config('system','log_404',true)) { + logger("Module {$module} not found.", LOGGER_DEBUG, LOG_WARNING); + logger('index.php: page not found: ' . $_SERVER['REQUEST_URI'] + . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' + . $_SERVER['QUERY_STRING'], LOGGER_DEBUG); + } + + header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); $tpl = get_markup_template('404.tpl'); \App::$page['content'] = replace_macros($tpl, array( '$message' => t('Page not found.') diff --git a/Zotlabs/Zot/Auth.php b/Zotlabs/Zot/Auth.php index 0837be21a..d4d3bee1d 100644 --- a/Zotlabs/Zot/Auth.php +++ b/Zotlabs/Zot/Auth.php @@ -149,9 +149,13 @@ class Auth { // The actual channel sending the packet ($c[0]) is not important, but this provides a // generic zot packet with a sender which can be verified + $x = q("select site_crypto from site where site_url = '%s' limit 1", + dbesc($hubloc['hubloc_url']) + ); + $p = zot_build_packet($channel,$type = 'auth_check', array(array('guid' => $hubloc['hubloc_guid'],'guid_sig' => $hubloc['hubloc_guid_sig'])), - $hubloc['hubloc_sitekey'], $this->sec); + $hubloc['hubloc_sitekey'], (($x) ? $x[0]['site_crypto'] : ''), $this->sec); $this->Debug('auth check packet created using sitekey ' . $hubloc['hubloc_sitekey']); $this->Debug('packet contents: ' . $p); @@ -48,10 +48,10 @@ require_once('include/zid.php'); define ( 'PLATFORM_NAME', 'hubzilla' ); -define ( 'STD_VERSION', '1.15.1' ); -define ( 'ZOT_REVISION', '1.1' ); +define ( 'STD_VERSION', '2.1' ); +define ( 'ZOT_REVISION', '1.2' ); -define ( 'DB_UPDATE_VERSION', 1184 ); +define ( 'DB_UPDATE_VERSION', 1187 ); /** @@ -63,7 +63,6 @@ define ( 'DB_UPDATE_VERSION', 1184 ); */ define ( 'EOL', '<br>' . "\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); -//define ( 'NULL_DATE', '0000-00-00 00:00:00' ); define ( 'TEMPLATE_BUILD_PATH', 'store/[data]/smarty3' ); define ( 'DIRECTORY_MODE_NORMAL', 0x0000); // A directory client @@ -84,8 +83,7 @@ $DIRECTORY_FALLBACK_SERVERS = array( 'https://hubzilla.zottel.net', 'https://hub.pixelbits.de', 'https://my.federated.social', - 'https://hubzilla.nl', - 'https://blablanet.es' + 'https://hubzilla.nl' ); @@ -405,6 +403,7 @@ define ( 'NOTIFY_PROFILE', 0x0040 ); define ( 'NOTIFY_TAGSELF', 0x0080 ); define ( 'NOTIFY_TAGSHARE', 0x0100 ); define ( 'NOTIFY_POKE', 0x0200 ); +define ( 'NOTIFY_LIKE', 0x0400 ); define ( 'NOTIFY_SYSTEM', 0x8000 ); @@ -640,6 +639,10 @@ function sys_boot() { define( 'DEFAULT_NOTIFY_ICON', '/images/hz-white-32.png' ); } + if(! defined('CRYPTO_ALGORITHM')) { + define( 'CRYPTO_ALGORITHM', 'aes256cbc' ); + } + /* * Try to open the database; */ @@ -2450,6 +2453,11 @@ function cert_bad_email() { function check_for_new_perms() { + // Do not execute if we are in the middle of a git update and the relevant versions don't match + + if( \Zotlabs\Access\Permissions::version() != \Zotlabs\Access\PermissionRoles::version()) + return; + $pregistered = get_config('system','perms'); $pcurrent = array_keys(\Zotlabs\Access\Permissions::Perms()); @@ -2479,19 +2487,27 @@ function check_for_new_perms() { // get the permissions role details $rp = \Zotlabs\Access\PermissionRoles::role_perms($r[0]['v']); if($rp) { - // set the channel limits if appropriate or 0 - if(array_key_exists('limits',$rp) && array_key_exists($p,$rp['limits'])) { - \Zotlabs\Access\PermissionLimits::Set($cc['uid'],$p,$rp['limits'][$p]); + + // for custom permission roles we need to customise how we initiate this new permission + if(array_key_exists('role',$rp) && ($rp['role'] === 'custom' || $rp['role'] === '')) { + \Zotlabs\Access\PermissionRoles::new_custom_perms($cc['uid'],$p,$x); } else { - \Zotlabs\Access\PermissionLimits::Set($cc['uid'],$p,0); - } + // set the channel limits if appropriate or 0 + if(array_key_exists('limits',$rp) && array_key_exists($p,$rp['limits'])) { + \Zotlabs\Access\PermissionLimits::Set($cc['uid'],$p,$rp['limits'][$p]); + } + else { + \Zotlabs\Access\PermissionLimits::Set($cc['uid'],$p,0); + } + - $set = ((array_key_exists('perms_connect',$rp) && array_key_exists($p,$rp['perms_connect'])) ? true : false); - // foreach connection set to the perms_connect value - if($x) { - foreach($x as $xx) { - set_abconfig($cc['uid'],$xx['abook_xchan'],'my_perms',$p,intval($set)); + $set = ((array_key_exists('perms_connect',$rp) && array_key_exists($p,$rp['perms_connect'])) ? true : false); + // foreach connection set to the perms_connect value + if($x) { + foreach($x as $xx) { + set_abconfig($cc['uid'],$xx['abook_xchan'],'my_perms',$p,intval($set)); + } } } } diff --git a/doc/Hubzilla_on_OpenShift.bb b/doc/Hubzilla_on_OpenShift.bb index 9ccd66284..bdc8bf9bf 100644 --- a/doc/Hubzilla_on_OpenShift.bb +++ b/doc/Hubzilla_on_OpenShift.bb @@ -1,4 +1,4 @@ -[b]Hubzilla on OpenShift[/b] +[b]$Projectname on OpenShift[/b] You will notice a new .openshift folder when you fetch from upstream, i.e. from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] , which contains a deploy script to set up Hubzilla on OpenShift with plugins and extra themes. As of this writing, 2015-10-28, you do not have to pay for OpenShift on the Free plan, which gives you three gears at no cost. The Bronze plan gives you three gears at no cost too, but you can expand to 16 gears by paying, and this requires you to register your payment card. The three gears can give three instances of Hubzilla with one gear each, or you can combine two gears into one high-availability Hubzilla instance and one extra gear. The main difference to be aware of is this: gears on the Free plan will go into hibernation if left idle for too long, this does not happen on the Bronze plan. diff --git a/doc/about/about_hub.bb b/doc/about/about_hub.bb new file mode 100644 index 000000000..0c1082f51 --- /dev/null +++ b/doc/about/about_hub.bb @@ -0,0 +1,7 @@ +[h3]Site Info[/h3] +[list][*][url=[baseurl]/siteinfo]Site Info[/url] +[*][url=[baseurl]/siteinfo/json]Site Info (JSON format)[/url][/list] +[h3]Terms of Service[/h3] +[list][*][url=[baseurl]/help/TermsOfService]Terms of Service for this hub[/url][/list] +#include doc/SiteTOS.md; + diff --git a/doc/features.bb b/doc/about/about_hubzilla.bb index 578af6050..3327e0b50 100644 --- a/doc/features.bb +++ b/doc/about/about_hubzilla.bb @@ -1,211 +1,209 @@ -[b][size=20]Features[/size][/b]
-
-[b][size=24]$Projectname in a Nutshell[/size][/b]
-
-TL;DR
-
-$Projectname provides distributed web publishing and social communications with [b]decentralised permissions[/b].
-
-So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily [i]everybody[/i] on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.
-
-$Projectname combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.
-
-$Projectname is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.
-
-[b][size=24]$Projectname Features[/size][/b]
-
-
-$Projectname is a general-purpose web publishing and communication network, with several unique features. It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.
-
-This page lists some of the core features of $Projectname that are bundled with the official release. As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.
-
-[b][size=20]Built for Privacy and Freedom[/size][/b]
-
-One of the design goals of $Projectname is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, $Projectname includes a number of features allowing arbitrary levels of privacy:
-
-[b]Affinity Slider[/b]
-
-When adding connnections in $Projectname, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection. For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".
-
-On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".
-
-At this point, $Projectname [i]Affinity Slider[/i] tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.
-
-The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.
-
-[b]Connection Filtering[/b]
-
-You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.
-
-[b]Access Control Lists[/b]
-
-When sharing content, members have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.
-
-Once sent, the message will be viewable only by the sender and the selected recipients. In other words, the message will not appear on any public walls.
-
-Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.
-
-[b]Single Sign-on[/b]
-
-Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other $Projectname sites and used to control access to private resources. You login once to your home hub. After that, authentication to all $Projectname resources is "magic".
-
-
-[b]WebDAV enabled File Storage[/b]
-
-Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of $Projectname members (including some third party network members) or make them public.
-
-[b]Photo Albums[/b]
-
-Store photos in albums. All your photos may be protected by Access Control Lists.
-
-[b]Events Calendar[/b]
-
-Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.
-
-[b]Chatrooms[/b]
-
-You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.
-
-[b]Webpage Building[/b]
-
-$Projectname has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.
-
-[b]Apps[/b]
-
-Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in $Projectname are free and can be created easily by those with no programming skills.
-
-[b]Layout[/b]
-
-Page layout is based on a description language called Comanche. $Projectname is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".
-
-[b]Bookmarks[/b]
-
-Share and save/manage bookmarks from links provided in conversations.
-
-
-[b]Private Message Encryption and Privacy Concerns[/b]
-
-Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.
-
-Each $Projectname channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.
-
-Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by $Projectname operators or ISPs or anybody who does not know the passcode.
-
-Public messages are generally not encrypted in transit or in storage.
-
-Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.
-
-Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.
-
-
-[b]Service Federation[/b]
-
-In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as $Projectname and may present privacy risks.
-
-There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your $Projectname hub may be used as an OpenID provider to authenticate you to external services which use this technology.
-
-Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.
-
-[b]Privacy Groups[/b]
-
-Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).
-
-
-[b]Directory Services[/b]
-
-We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal $Projectname sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).
-
-
-[b]TLS/SSL[/b]
-
-For $Projectname hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL. Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.
-
-[b]Channel Settings[/b]
-
-When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.
-
-If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication. For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.
-
-The options are:
-
- - Nobody except yourself.
- - Only those you specifically allow.
- - Anybody in your address book.
- - Anybody on this website.
- - Anybody in this network.
- - Anybody authenticated.
- - Specific people you provide a Guest Access Token to in order to access a specific item.
- - Anybody on the Internet.
-
-
-[b]Public and Private Forums[/b]
-
-Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.
-
-
-[b]Account Cloning[/b]
-
-Accounts in $Projectname are referred to as [i]nomadic identities[/i], because a member's identity is not bound to the hub where the identity was originally created. For example, when you create a Facebook or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com.
-
-By contrast, say you've created a $Projectname identity called [b]tina@$Projectnamehub.com[/b]. You can clone it to another $Projectname hub by choosing the same, or a different name: [b]liveForever@Some$ProjectnameHub.info[/b]
-
-Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone. It doesn't matter whether you send a post from your original hub, or the new hub. Posts will be mirrored on both accounts.
-
-This is a rather revolutionary feature, if we consider some scenarios:
-
- - What happens if the hub where an identity is based suddenly goes offline? Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale"). With cloning, you just log into your cloned account, and life goes on happily ever after.
-
- - The administrator of your hub can no longer afford to pay for his free and public $Projectname hub. He announces that the hub will be shutting down in two weeks. This gives you ample time to clone your identity(ies) and preserve your$Projectname relationships, friends and content.
-
- - What if your identity is subject to government censorship? Your hub provider may be compelled to delete your account, along with any identities and associated data. With cloning, $Projectname offers [b]censorship resistance[/b]. You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.
-
-$Projectname offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.
-
-Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.
-
-[b]Multiple Profiles[/b]
-
-Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.
-
-[b]Account Backup[/b]
-
-Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s).
-
-Backups can then be used to clone or restore a profile.
-
-[b]Account Deletion[/b]
-
-Accounts can be immediately deleted by clicking on a link. That's it. All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.
-
-[b][size=20]Content Creation[/size][/b]
-
-[b]Writing Posts[/b]
-
-$Projectname supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in $Projectname. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for $Projectname had some serious issues and has since been removed. We are currently looking for a replacement.
-
-When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.
-
-[b]Deletion of content[/b]
-Any content created in $Projectname remains under the control of the member (or channel) that originally created it. At any time, a member can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot ($Projectname communication and authentication protocol).
-
-[b]Media[/b]
-Similar to any other modern blogging system, social network, or a micro-blogging service, $Projectname supports the uploading of files, embedding of videos, linking web pages.
-
-[b]Previewing/Editing[/b]
-Post can be previewed prior to sending and edited after sending.
-
-[b]Voting/Consensus[/b]
-Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.
-
-
-[b]Extending $Projectname[/b]
-
-$Projectname can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.
-
-[b]API[/b]
-
-An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to $Projectname. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided.
-
-
-
-#include doc/macros/main_footer.bb;
+[h3]What is Hubzilla?[/h3] +$Projectname is a [b]free and open source[/b] set of web applications and services running on a special kind of web server, called a "hub", that can connect to other hubs in a decentralised network we like to call "the grid", providing sophisticated communications, identity, and access control services which work together seamlessly across domains and independent websites. It allows anybody to publicly or [b]privately[/b] publish content via "channels", which are the fundamental, cryptographically secured identities that provide authentication independently of the hubs which host them. This revolutionary liberation of online identity from individual servers and domains is called "nomadic identity", and it is powered by the Zot protocol, a new framework for decentralised access control with fine-grained, extensible permissions. + +[h3]Right... so what is Hubzilla?[/h3] +From the practical perspective of hub members who use the software, $Projectname offers a variety of familiar, integrated web apps and services, including: +[ul] +[li]social networking discussion threads[/li] +[li]cloud file storage[/li] +[li]calendar and contacts (with CalDAV and CardDAV support)[/li] +[li]webpage hosting with a content management system[/li] +[li]wiki[/li] +[li]and more...[/li][/ul] +While all of these apps and services can be found in other software packages, only $Projectname allows you to set permissions for groups and individuals who may not even have accounts on your hub! In typical web apps, if you want to share things privately on the internet, the people you share with must have accounts on the server hosting your data; otherwise, there is no robust way for your server to [i]authenticate[/i] visitors to the site to know whether to grant them access. $Projectname solves this problem with an advanced system of [i]remote authentication[/i] that validates the identity of visitors by employing techniques that include public key cryptography. + +[h3]Software Stack[/h3] +The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and [url=https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt]requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language[/url]. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools. + +[h3]Additional Resources and Links[/h3] +[list][*][url=http://hubzilla.org]Hubzilla project website[/url] +[*][url=https://github.com/redmatrix/hubzilla]Hubzilla core code repository[/url] +[*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url][/list] + +[h3]Glossary[/h3] +[dl terms="b"] +[*= hub] An instance of the Hubzilla software running on a standard web server + +[*= grid] The global network of hubs that exchange information with each other using the Zot protocol. + +[*= channel] The fundamental identity on the grid. A channel can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions. + +[*= clone] Channels can have clones associated with separate and otherwise unrelated accounts on independent hubs. Communications shared with a channel are synchronized among the channel clones, allowing a channel to send and receive messages and access shared content from multiple hubs. This provides resilience against network and hardware failures, which can be a significant problem for self-hosted or limited-resource web servers. Cloning allows you to completely move a channel from one hub to another, taking your data and connections with you. See nomadic identity. + +[*= nomadic identity] The ability to authenticate and easily migrate an identity across independent hubs and web domains. Nomadic identity provides true ownership of an online identity, because the identities of the channels controlled by an account on a hub are not tied to the hub itself. A hub is more like a "host" for channels. With Hubzilla, you don't have an "account" on a server like you do on typical websites; you own an identity that you can take with you across the grid by using clones. + +[*= [url=[baseurl]/help/developer/api_zot]Zot[/url]] The novel JSON-based protocol for implementing secure decentralised communications and services. It differs from many other communication protocols by building communications on top of a decentralised identity and authentication framework. The authentication component is similar to OpenID conceptually but is insulated from DNS-based identities. Where possible remote authentication is silent and invisible. This provides a mechanism for internet-scale distributed access control which is unobtrusive. +[/dl] + +[h3]Features[/h3] +This page lists some of the core features of $Projectname that are bundled with the official release. $Projectname is a highly extensible platform, so more features and capabilities can be added via additional themes and plugins. + +[h4]Affinity Slider[/h4] + +When adding connnections in $Projectname, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection. For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances". + +On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends". + +At this point, $Projectname [i]Affinity Slider[/i] tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them. + +The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness. + +[h4]Connection Filtering[/h4] + +You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post. + +[h4]Access Control Lists[/h4] + +When sharing content, members have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names. + +Once sent, the message will be viewable only by the sender and the selected recipients. In other words, the message will not appear on any public walls. + +Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files. + +[h4]Single Sign-on[/h4] + +Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other $Projectname sites and used to control access to private resources. You login once to your home hub. After that, authentication to all $Projectname resources is "magic". + + +[h4]WebDAV enabled File Storage[/h4] + +Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of $Projectname members (including some third party network members) or make them public. + +[h4]Photo Albums[/h4] + +Store photos in albums. All your photos may be protected by Access Control Lists. + +[h4]Events Calendar[/h4] + +Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly. + +[h4]Chatrooms[/h4] + +You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins. + +[h4]Webpage Building[/h4] + +$Projectname has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience. + +[h4]Apps[/h4] + +Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in $Projectname are free and can be created easily by those with no programming skills. + +[h4]Layout[/h4] + +Page layout is based on a description language called Comanche. $Projectname is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments". + +[h4]Bookmarks[/h4] + +Share and save/manage bookmarks from links provided in conversations. + + +[h4]Private Message Encryption and Privacy Concerns[/h4] + +Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP. + +Each $Projectname channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit. + +Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by $Projectname operators or ISPs or anybody who does not know the passcode. + +Public messages are generally not encrypted in transit or in storage. + +Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet. + +Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site. + + +[h4]Service Federation[/h4] + +In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as $Projectname and may present privacy risks. + +There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your $Projectname hub may be used as an OpenID provider to authenticate you to external services which use this technology. + +Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel. + +[h4]Privacy Groups[/h4] + +Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post). + + +[h4]Directory Services[/h4] + +We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal $Projectname sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays). + + +[h4]TLS/SSL[/h4] + +For $Projectname hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL. Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite. + +[h4]Channel Settings[/h4] + +When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels. + +If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication. For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit. + +The options are: + + - Nobody except yourself. + - Only those you specifically allow. + - Anybody in your address book. + - Anybody on this website. + - Anybody in this network. + - Anybody authenticated. + - Anybody on the Internet. + + +[h4]Public and Private Forums[/h4] + +Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members. + + +[h4]Account Cloning[/h4] + +Accounts in $Projectname are referred to as [i]nomadic identities[/i], because a member's identity is not bound to the hub where the identity was originally created. For example, when you create a Facebook or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com. + +By contrast, say you've created a $Projectname identity called [b]tina@$Projectnamehub.com[/b]. You can clone it to another $Projectname hub by choosing the same, or a different name: [b]liveForever@Some$ProjectnameHub.info[/b] + +Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone. It doesn't matter whether you send a post from your original hub, or the new hub. Posts will be mirrored on both accounts. + +This is a rather revolutionary feature, if we consider some scenarios: + + - What happens if the hub where an identity is based suddenly goes offline? Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale"). With cloning, you just log into your cloned account, and life goes on happily ever after. + + - The administrator of your hub can no longer afford to pay for his free and public $Projectname hub. He announces that the hub will be shutting down in two weeks. This gives you ample time to clone your identity(ies) and preserve your$Projectname relationships, friends and content. + + - What if your identity is subject to government censorship? Your hub provider may be compelled to delete your account, along with any identities and associated data. With cloning, $Projectname offers [b]censorship resistance[/b]. You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet. + +$Projectname offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page. + +Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>. + +[h4]Multiple Profiles[/h4] + +Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public. + +[h4]Account Backup[/h4] + +$Projectname offers a simple, one-click account backup, where you can download a complete backup of your profile(s). Backups can then be used to clone or restore a profile. + +[h4]Account Deletion[/h4] +Accounts can be immediately deleted by clicking on a link. That's it. All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical. + +[h4]Deletion of content[/h4] +Any content created in $Projectname remains under the control of the member (or channel) that originally created it. At any time, a member can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot ($Projectname communication and authentication protocol). + +[h4]Media[/h4] +Similar to any other modern blogging system, social network, or a micro-blogging service, $Projectname supports the uploading of files, embedding of videos, linking web pages. + +[h4]Previewing/Editing[/h4] +Post can be previewed prior to sending and edited after sending. + +[h4]Voting/Consensus[/h4] +Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys. + +[h4]Extending $Projectname[/h4] + +$Projectname can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins. + +[h4]API[/h4] + +An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to $Projectname. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. diff --git a/doc/about/hubzilla_project.bb b/doc/about/hubzilla_project.bb new file mode 100644 index 000000000..7a584687d --- /dev/null +++ b/doc/about/hubzilla_project.bb @@ -0,0 +1,185 @@ +[h3]$Projectname Governance[/h3] +Governance relates to the management of a project and particularly how this relates to conflict resolution. + +[h4]Community Governance[/h4] +The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: + +[ol] +[*] Lazy Consensus + +If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved. + + +[*] Veto + +Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. + + +[*] Community Vote + +A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums. At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules. +[/ol] + +Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is [b]strongly recommended[/b] that the proposer take steps to address any concerns that were raised and re-submit. + + + +[h4]Privacy Policy[/h4] + +Q: Who can see my content? + +A: By default ANYBODY on the internet, UNLESS you restrict it. $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators. + +Q: Can my content be censored? + +A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws. + + +[h5]Definitions[/h5] + +**$Projectname** + +Otherwise referred to as "the network", $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network. + +**hub** + +An individual computer or server connected to $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free. + +**hub administrator** + +The system operator of an individual hub. + +[h5]Policies[/h5] + +**Public Information** + +Any information or anything posted by you within $Projectname MAY be public or visible to anybody on the internet. To the extent possible, $Projectname allows you to protect content and restrict who can view it. + +Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items. + +You MAY additionally provide other profile information. Any information which you provide in your "default" or **public profile** MAY be transmitted to other hubs in $Projectname and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information. + +**Content** + +Content you provide (status posts, photos, files, etc.) belongs to you. $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability. + +Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content. + +**Comments and Forum posts** + +Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation. + +**Private Information** + +$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator. + +[h5]Identity Privacy[/h5] + +Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible. + +A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in $Projectname network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking. + +* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of $Projectname. This setting is probably enough for most people. + +*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case. + +* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set. + +[h5]Censorship[/h5] + +$Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends. + +$Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but $Projectname as a network cannot block it from being posted. + +$Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision. + +If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences. + +[h3]Credits[/h3] + +Thanks to all who have helped and contributed to the project and its predecessors over the years. +It is possible we missed in your name but this is unintentional. We also thank the community and +its members for providing valuable input and without whom this entire effort would be meaningless. + +It is also worth acknowledging the contributions and solutions to problems which arose from +discussions amongst members and developers of other somewhat related and competing projects; +even if we have had our occasional disagreements. + +[list] +[li]Mike Macgirvin[/li] +[li]Fabio Comuni[/li] +[li]Simon L'nu[/li] +[li]marijus[/li] +[li]Tobias Diekershoff[/li] +[li]fabrixxm[/li] +[li]tommy tomson[/li] +[li]Simon[/li] +[li]zottel[/li] +[li]Christian Vogeley[/li] +[li]Jeroen van Riet Paap (jeroenpraat)[/li] +[li]Michael Vogel[/li] +[li]erik[/li] +[li]Zach Prezkuta[/li] +[li]Paolo T[/li] +[li]Michael Meer[/li] +[li]Michael[/li] +[li]Abinoam P. Marques Jr[/li] +[li]Tobias Hößl[/li] +[li]Alexander Kampmann[/li] +[li]Olaf Conradi[/li] +[li]Paolo Tacconi[/li] +[li]tobiasd[/li] +[li]Devlon Duthie[/li] +[li]Zvi ben Yaakov (a.k.a rdc)[/li] +[li]Alexandre Hannud Abdo[/li] +[li]Olivier Migeot[/li] +[li]Chris Case[/li] +[li]Klaus Weidenbach[/li] +[li]Michael Johnston[/li] +[li]olivierm[/li] +[li]Vasudev Kamath[/li] +[li]pixelroot[/li] +[li]Max Weller[/li] +[li]duthied[/li] +[li]Martin Schmitt[/li] +[li]Sebastian Egbers[/li] +[li]Erkan Yilmaz[/li] +[li]sasiflo[/li] +[li]Stefan Parviainen[/li] +[li]Haakon Meland Eriksen[/li] +[li]Oliver Hartmann (23n)[/li] +[li]Erik Lundin[/li] +[li]habeascodice[/li] +[li]sirius[/li] +[li]Charles[/li] +[li]Tony Baldwin[/li] +[li]Hauke Zuehl[/li] +[li]Keith Fernie[/li] +[li]Anne Walk[/li] +[li]toclimb[/li] +[li]Daniel Frank[/li] +[li]Matthew Exon[/li] +[li]Michal Supler[/li] +[li]Tobias Luther[/li] +[li]U-SOUND\mike[/li] +[li]mrjive[/li] +[li]nostupidzone[/li] +[li]tonnerkiller[/li] +[li]Antoine G[/li] +[li]Christian Drechsler[/li] +[li]Ludovic Grossard[/li] +[li]RedmatrixCanada[/li] +[li]Stanislav Lechev [0xAF][/li] +[li]aweiher[/li] +[li]bufalo1973[/li] +[li]dsp1986[/li] +[li]felixgilles[/li] +[li]ike[/li] +[li]maase2[/li] +[li]mycocham[/li] +[li]ndurchx[/li] +[li]pafcu[/li] +[li]Simó Albert i Beltran[/li] +[li]Manuel Reva[/li] +[li]Manuel Jiménez Friaza[/li] +[/list]
\ No newline at end of file diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md new file mode 100644 index 000000000..f21c55327 --- /dev/null +++ b/doc/admin/administrator_guide.md @@ -0,0 +1,364 @@ + +### Overview + +$Projectname is more than a simple web application. It is a +complex communications system which more closely resembles an email server +than a web server. For reliability and performance, messages are delivered in +the background and are queued for later delivery when sites are down. This +kind of functionality requires a bit more of the host system than the typical +blog. Not every PHP/MySQL hosting provider will be able to support +$Projectname. Many will but please review the requirements and confirm these +with your hosting provider prior to installation. + +We've tried very hard to ensure that $Projectname will run on commodity +hosting platforms such as those used to host Wordpress blogs and Drupal +websites. It will run on most any Linux VPS system. Windows LAMP platforms +such as XAMPP and WAMP are not officially supported at this time however +we welcome patches if you manage to get it working. + +### Where to find more help +If you encounter problems or have issues not addressed in this documentation, +please let us know via the [Github issue +tracker](https://github.com/redmatrix/hubzilla/issues). Please be as clear as you +can about your operating environment and provide as much detail as possible +about any error messages you may see, so that we can prevent it from happening +in the future. Due to the large variety of operating systems and PHP platforms +in existence we may have only limited ability to debug your PHP installation or +acquire any missing modules * but we will do our best to solve any general code +issues. + +### Before you begin + +#### Choose a domain name or subdomain name for your server + +$Projectname can only be installed into the root of a domain or sub-domain, and can +not be installed using alternate TCP ports. + +#### Decide if you will use SSL and obtain an SSL certificate before software installation + +You SHOULD use SSL. If you use SSL, you MUST use a "browser-valid" certificate. +*You MUST NOT use self-signed certificates!* + +Please test your certificate prior to installation. A web tool for testing your +certificate is available at "http://www.digicert.com/help/". When visiting your +site for the first time, please use the SSL ("https://") URL if SSL is available. +This will avoid problems later. The installation routine will not allow you to +use a non browser-valid certificate. + + +This restriction is incorporated because public posts from you may contain +references to images on your own hub. Other members viewing their stream on +other hubs will get warnings if your certificate is not trusted by their web +browser. This will confuse many people because this is a decentralised network +and they will get the warning about your hub while viewing their own hub and may +think their own hub has an issue. These warnings are very technical and scary to +some folks, many of whom will not know how to proceed except to follow the browser +advice. This is disruptive to the community. That said, we recognise the issues +surrounding the current certificate infrastructure and agree there are many +problems, but that doesn't change the requirement. + +Free "browser-valid" certificates are available from providers such as StartSSL +and LetsEncrypt. + +If you do NOT use SSL, there may be a delay of up to a minute for the initial +install script - while we check the SSL port to see if anything responds there. +When communicating with new sites, $Projectname always attempts connection on the +SSL port first, before falling back to a less secure connection. If you do not +use SSL, your webserver MUST NOT listen on port 443 at all. + +If you use LetsEncrypt to provide certificates and create a file under +.well-known/acme-challenge so that LetsEncrypt can verify your domain ownership, +please remove or rename the .well-known directory as soon as the certificate is +generated. $Projectname will provide its own handler for ".well-known" services when +it is installed, and an existing directory in this location may prevent some of +these services from working correctly. This should not be a problem with Apache, +but may be an issue with nginx or other web server platforms. + +### Deployment +There are several ways to deploy a new hub. + +* Manual installation on an existing server +* Automated installation on an existing server using a shell script +* Automated deployment using an OpenShift virtual private server (VPS) + +### Requirements +* Apache with mod-rewrite enabled and "AllowOverride All" so you can use a + local .htaccess file. Some folks have successfully used nginx and lighttpd. + Example config scripts are available for these platforms in doc/install. + Apache and nginx have the most support. + +* PHP 5.5 or later. + * Note that on some shared hosting environments, the _command line_ version of +PHP might differ from the _webserver_ version + +* PHP *command line* access with register_argc_argv set to true in the + php.ini file * and with no hosting provider restrictions on the use of + exec() and proc_open(). + +* curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt, + and openssl extensions. The imagick extension is not required but desirable. + +* xml extension is required if you want webdav to work. + +* some form of email server or email gateway such that PHP mail() works. + +* Mysql 5.x or MariaDB or postgres database server. + +* ability to schedule jobs with cron. + +* Installation into a top-level domain or sub-domain (without a + directory/path component in the URL) is REQUIRED. + +### Manual Installation + +#### Unpack the $Projectname files into the root of your web server document area +If you copy the directory tree to your webserver, make sure that you include the +hidden files like .htaccess. + +If you are able to do so, we recommend using git to clone the source +repository rather than to use a packaged tar or zip file. This makes the +software much easier to update. The Linux command to clone the repository +into a directory "mywebsite" would be: + + git clone https://github.com/redmatrix/hubzilla.git mywebsite + +and then you can pick up the latest changes at any time with: + + git pull + +make sure folders ``store/[data]/smarty3`` and ``store`` exist and are +writable by the webserver: + + mkdir -p "store/[data]/smarty3" + chmod -R 777 store + + This permission (777) is very dangerous and if you have sufficient + privilege and knowledge you should make these directories writeable + only by the webserver and, if different, the user that will run the + cron job (see below). In many shared hosting environments this may be + difficult without opening a trouble ticket with your provider. The + above permissions will allow the software to work, but are not + optimal. + +The following directories also need to be writable by the webserver in order for certain +web-based administrative tools to function: + +* `addon` +* `extend` +* `view/theme` +* `widget` + +#### Official addons +##### Installation +Navigate to your webThen you should clone the addon repository (separately). We'll give this repository a nickname of 'hzaddons'. You can pull in other hubzilla addon repositories by giving them different nicknames:: + + cd mywebsite + util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons + +##### Updating +For keeping the addon tree updated, you should be on your top level website directory and issue an update command for that repository:: + + cd mywebsite + util/update_addon_repo hzaddons + +Create searchable representations of the online documentation. You may do this + any time that the documentation is updated : + + cd mywebsite + util/importdoc + +### Automated installation via the .homeinstall shell script +There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install $Projectname and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary. + +#### Requirements +The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3: + +* Home-PC (Debian-8.3.0-amd64) + + * Internet connection and router at home + * Mini-pc connected to your router + * USB drive for backups + * Fresh installation of Debian on your mini-pc + * Router with open ports 80 and 443 for your Debian + +* DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3) + +#### Overview of installation steps +1. `apt-get install git` +1. `mkdir -p /var/www/html` +1. `cd /var/www/html` +1. `git clone https://github.com/redmatrix/hubzilla.git .` +1. `nano .homeinstall/hubzilla-config.txt` +1. `cd .homeinstall/` +1. `./hubzilla-setup.sh` +1. `sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini` +1. `sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini` +1. `service apache2 reload` +1. Open your domain with a browser and step throught the initial configuration of $Projectname. + +### Service Classes + +Service classes allow you to set limits on system resources by limiting what individual +accounts can do, including file storage and top-level post limits. Define custom service +classes according to your needs in the `.htconfig.php` file. For example, create +a _standard_ and _premium_ class using the following lines: + + // Service classes + + App::$config['system']['default_service_class']='standard'; // this is the default service class that is attached to every new account + + // configuration for parent service class + App::$config['service_class']['standard'] = + array('photo_upload_limit'=>2097152, // total photo storage limit per channel (here 2MB) + 'total_identities' =>1, // number of channels an account can create + 'total_items' =>0, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected + 'total_pages' =>100, // number of pages a channel can create + 'total_channels' =>100, // number of channels the user can add, other users can still add this channel, even if the limit is reached + 'attach_upload_limit' =>2097152, // total attachment storage limit per channel (here 2MB) + 'chatters_inroom' =>20); + + // configuration for teacher service class + App::$config['service_class']['premium'] = + array('photo_upload_limit'=>20000000000, // total photo storage limit per channel (here 20GB) + 'total_identities' =>20, // number of channels an account can create + 'total_items' =>20000, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected + 'total_pages' =>400, // number of pages a channel can create + 'total_channels' =>2000, // number of channels the user can add, other users can still add this channel, even if the limit is reached + 'attach_upload_limit' =>20000000000, // total attachment storage limit per channel (here 20GB) + 'chatters_inroom' =>100); + +To apply a service class to an existing account, use the command line utility from the +web root: + +`util/service_class` +list service classes + +`util/config system default_service_class firstclass` +set the default service class to 'firstclass' + +`util/service_class firstclass` +list the services that are part of 'firstclass' service class + +`util/service_class firstclass photo_upload_limit 10000000` +set firstclass total photo disk usage to 10 million bytes + +`util/service_class --account=5 firstclass` +set account id 5 to service class 'firstclass' (with confirmation) + +`util/service_class --channel=blogchan firstclass` +set the account that owns channel 'blogchan' to service class 'firstclass' (with confirmation) + +**Service class limit options** + +* photo_upload_limit - maximum total bytes for photos +* total_items - maximum total toplevel posts +* total_pages - maximum comanche pages +* total_identities - maximum number of channels owned by account +* total_channels - maximum number of connections +* total_feeds - maximum number of rss feed connections +* attach_upload_limit - maximum file upload storage (bytes) +* minimum_feedcheck_minutes - lowest setting allowed for polling rss feeds +* chatrooms - maximum chatrooms +* chatters_inroom - maximum chatters per room +* access_tokens - maximum number of Guest Access Tokens per channel + +### Theme management +#### Repo management example +1. Navigate to your hub web root + + ``` + root@hub:/root# cd /var/www + ``` +2. Add the theme repo and give it a name + + ``` + root@hub:/var/www# util/add_theme_repo https://github.com/DeadSuperHero/redmatrix-themes.git DeadSuperHero + ``` +3. Update the repo by using + + ``` + root@hub:/var/www# util/update_theme_repo DeadSuperHero + ``` + +### Channel Directory + +#### Keywords + +There is a "tag cloud" of keywords that can appear on the channel directory page. +If you wish to hide these keywords, which are drawn from the directory server, you +can use the *config* tool: + + util/config system disable_directory_keywords 1 + +If your hub is in the standalone mode because you do not wish to connect to the +global grid, you may instead ensure the the _directory_server_ system option is +empty: + + util/config system directory_server "" + +### Upgrading from RedMatrix to $Projectname + +#### How to migrate an individual channel from RedMatrix to $Projectname + +1. Clone the channel by opening an account on a $Projectname hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings. +1. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary. +1. Import the JSON data files sequentially in chronological order into the $Projectname clone using the new.hub/import_items tool. +1. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address. +1. After successful import (check!) delete your channel on the old RedMatrix Server. +1. On the $Projectname server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. + +### Troubleshooting + +#### Log files + +The system logfile is an extremely useful resource for tracking down things that go wrong. This can be enabled in the admin/log configuration page. A loglevel setting of LOGGER_DEBUG is preferred for stable production sites. Most things that go wrong with communications or storage are listed here. A setting of LOGGER_DATA provides [b]much[/b] more detail, but may fill your disk. In either case we recommend the use of logrotate on your operating system to cycle logs and discard older entries. + +At the bottom of your .htconfig.php file are several lines (commented out) which enable PHP error logging. This reports issues with code syntax and executing the code and is the first place you should look for issues which result in a "white screen" or blank page. This is typically the result of code/syntax problems. +Database errors are reported to the system logfile, but we've found it useful to have a file in your top-level directory called dbfail.out which [b]only[/b] collects database related issues. If the file exists and is writable, database errors will be logged to it as well as to the system logfile. + +In the case of "500" errors, the issues may often be logged in your webserver logs, often /var/log/apache2/error.log or something similar. Consult your operating system documentation. + +There are three different log facilities. + +**The first is the database failure log**. This is only used if you create a file called specifically 'dbfail.out' in the root folder of your website and make it write-able by the web server. If we have any database failed queries, they are all reported here. They generally indicate typos in our queries, but also occur if the database server disconnects or tables get corrupted. On rare occasions we'll see race conditions in here where two processes tried to create an xchan or cache entry with the same ID. Any other errors (especially persistent errors) should be investigated. + +**The second is the PHP error log**. This is created by the language processor and only reports issues in the language environment. Again these can be syntax errors or programming errors, but these generally are fatal and result in a "white screen of death"; e.g. PHP terminates. You should probably look at this file if something goes wrong that doesn't result in a white screen of death, but it isn't uncommon for this file to be empty for days on end. + +There are some lines at the bottom of the supplied .htconfig.php file; which if uncommented will enable a PHP error log (*extremely* useful for finding the source of white screen failures). This isn't done by default due to potential issues with logfile ownership and write permissions and the fact that there is no logfile rotation by default. + + +**The third is the "application log"**. This is used by $Projectname to report what is going on in the program and usually reports any difficulties or unexpected data we received. It also occasionally reports "heartbeat" status messages to indicate that we reached a certain point in a script. **This** is the most important log file to us, as we create it ourself for the sole purpose of reporting the status of background tasks and anything that seems weird or out of place. It may not be fatal, but maybe just unexpected. If you're performing a task and there's a problem, let us know what is in this file when the problem occurred. (Please don't send me 100M dumps you'll only piss me off). Just a few relevant lines so I can rule out a few hundred thousand lines of code and concentrate on where the problem starts showing up. + +These are your site logs, not mine. We report serious issues at any log level. I highly recommend 'DEBUG' log level for most sites - which provides a bit of additional info and doesn't create huge logfiles. When there's a problem which defies all attempts to track, you might wish to use DATA log level for a short period of time to capture all the detail of what structures we were dealing with at the time. This log level will use a lot of space so is recommended only for brief periods or for developer test sites. + +I recommend configuring logrotate for both the php log and the application log. I usually have a look at dbfail.out every week or two, fix any issues reported and then starting over with a fresh file. Likewise with the PHP logfile. I refer to it once in a while to see if there's something that needs fixing. + +If something goes wrong, and it's not a fatal error, I look at the application logfile. Often I will +``` +tail -f logfile.out +``` + +While repeating an operation that has problems. Often I'll insert extra logging statements in the code if there isn't any hint what's going wrong. Even something as simple as "got here" or printing out the value of a variable that might be suspect. You can do this too - in fact I encourage you to do so. Once you've found what you need to find, you can + +``` +git checkout file.php +``` + +To immediately clear out all the extra logging stuff you added. Use the information from this log and any detail you can provide from your investigation of the problem to file your bug report - unless your analysis points to the source of the problem. In that case, just fix it. + +##### Rotating log files + +1. Enable the **logrot** addon in the official [hubzilla-addons](https://github.com/redmatrix/hubzilla-addons) repo +1. Create a directory in your web root called `log` with webserver write permissions +1. Go to the **logrot** admin settings and enter this folder name as well as the max size and number of retained log files. + + +#### Reporting issues + +When reporting issues, please try to provide as much detail as may be necessary for developers to reproduce the issue and provide the complete text of all error messages. + +We encourage you to try to the best of your abilities to use these logs combined with the source code in your possession to troubleshoot issues and find their cause. The community is often able to help, but only you have access to your site logfiles and it is considered a security risk to share them. + +If a code issue has been uncovered, please report it on the project bugtracker (https://github.com/redmatrix/hubzilla/issues). Again provide as much detail as possible to avoid us going back and forth asking questions about your configuration or how to duplicate the problem, so that we can get right to the problem and figure out what to do about it. You are also welcome to offer your own solutions and submit patches. In fact we encourage this as we are all volunteers and have little spare time available. The more people that help, the easier the workload for everybody. It's OK if your solution isn't perfect. Every little bit helps and perhaps we can improve on it. + + diff --git a/doc/admin/hub_snapshots.md b/doc/admin/hub_snapshots.md new file mode 100644 index 000000000..ab0948aa8 --- /dev/null +++ b/doc/admin/hub_snapshots.md @@ -0,0 +1,127 @@ +### Hub Snapshot Tools + +Hubzilla developers frequently need to switch between branches that might have +incompatible database schemas or content. The following two scripts create and +restore complete snapshots of a Hubzilla instance, including both the hub web +root and the entire database state. Each script requires a config file called +`hub-snapshot.conf` residing in the same folder and containing the specific +directories and database details of your hub. + +### Config + +The format of the config file is very strict. There must be no spaces between the +variable name and the value. Replace only the content inside the quotes with your +configuration. Save this file as `hub-snapshot.conf` alongside the scripts. + + # Location of hub root. Typically this is the location of the Hubzilla repo clone. + HUBROOT="/var/www/" + # MySQL database name + DBNAME="hubzilla" + # MySQL database user + DBUSER="hubzilla" + # MySQL database password + DBPWD="akeufajeuwfb" + # The target snapshot folder where the git repo will be initialized + SNAPSHOTROOT="/root/snapshots/hubzilla/" + +### Snapshot + +Example usage: + + sh hub-snapshot.sh my-hub.conf "Commit message for the snapshot" + +**hub-snapshot.sh**: + + #!/bin/bash + + if ! [ -f "$1" ]; then + echo "$1 is not a valid file. Aborting..." + exit 1 + fi + source "$1" + #echo "$DBNAME" + #echo "$DBUSER" + #echo "$DBPWD" + #echo "$HUBROOT" + #echo "$SNAPSHOTROOT" + MESSAGE="snapshot: $2" + + if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then + echo "Required variable is not set. Aborting..." + exit 1 + fi + + if [ ! -d "$SNAPSHOTROOT"/db/ ]; then + mkdir -p "$SNAPSHOTROOT"/db/ + fi + if [ ! -d "$SNAPSHOTROOT"/www/ ]; then + mkdir -p "$SNAPSHOTROOT"/www/ + fi + + if [ ! -d "$SNAPSHOTROOT"/www/ ] || [ ! -d "$SNAPSHOTROOT"/db/ ]; then + echo "Error creating snapshot directories. Aborting..." + exit 1 + fi + + echo "Export database..." + mysqldump -u "$DBUSER" -p"$DBPWD" "$DBNAME" > "$SNAPSHOTROOT"/db/"$DBNAME".sql + echo "Copy hub root files..." + rsync -va --delete --exclude=.git* "$HUBROOT"/ "$SNAPSHOTROOT"/www/ + + cd "$SNAPSHOTROOT" + + if [ ! -d ".git" ]; then + git init + fi + if [ ! -d ".git" ]; then + echo "Cannot initialize git repo. Aborting..." + exit 1 + fi + + git add -A + echo "Commit hub snapshot..." + git commit -a -m "$MESSAGE" + + exit 0 + +### Restore + + #!/bin/bash + # Restore hub to a previous state. Input hub config and commit hash + + if ! [ -f "$1" ]; then + echo "$1 is not a valid file. Aborting..." + exit 1 + fi + source "$1" + COMMIT=$2 + + if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then + echo "Required variable is not set. Aborting..." + exit 1 + fi + RESTOREDIR="$(mktemp -d)/" + + if [ ! -d "$RESTOREDIR" ]; then + echo "Cannot create restore directory. Aborting..." + exit 1 + fi + echo "Cloning the snapshot repo..." + git clone "$SNAPSHOTROOT" "$RESTOREDIR" + cd "$RESTOREDIR" + echo "Checkout requested snapshot..." + git checkout "$COMMIT" + echo "Restore hub root files..." + rsync -a --delete --exclude=.git* "$RESTOREDIR"/www/ "$HUBROOT"/ + echo "Restore hub database..." + mysql -u "$DBUSER" -p"$DBPWD" "$DBNAME" < "$RESTOREDIR"/db/"$DBNAME".sql + + chown -R www-data:www-data "$HUBROOT"/{store,extend,addon,.htlog,.htconfig.php} + + echo "Restored hub to snapshot $COMMIT" + echo "Removing temporary files..." + + rm -rf "$RESTOREDIR" + + exit 0 + diff --git a/doc/api/api_albums.md b/doc/api/api_albums.md new file mode 100644 index 000000000..230daae3c --- /dev/null +++ b/doc/api/api_albums.md @@ -0,0 +1,66 @@ +API albums +========== + +Description: list photo albums + +GET /api/z/1.0/albums + + +Output: + + text - textual name + + total - number of photos in this album + + url - web URL + + urlencode - textual name, urlencoded + + bin2hex - textual name using bin2hex (which is used in the web URL link) + + +Example: + + + { + + "success": true, + "albums": [ + { + "text": "/", + "total": "2", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/", + "urlencode": "", + "bin2hex": "" + }, + { + "text": "2016-01", + "total": "6", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3031", + "urlencode": "2016-01", + "bin2hex": "323031362d3031" + }, + { + "text": "2016-02", + "total": "7", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3032", + "urlencode": "2016-02", + "bin2hex": "323031362d3032" + }, + { + "text": "Cover Photos", + "total": "5", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/436f7665722050686f746f73", + "urlencode": "Cover+Photos", + "bin2hex": "436f7665722050686f746f73" + }, + { + "text": "Profile Photos", + "total": "26", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/50726f66696c652050686f746f73", + "urlencode": "Profile+Photos", + "bin2hex": "50726f66696c652050686f746f73" + } + ] + + } diff --git a/doc/api/api_filedata.md b/doc/api/api_filedata.md new file mode 100644 index 000000000..1d46a495c --- /dev/null +++ b/doc/api/api_filedata.md @@ -0,0 +1,66 @@ +API filedata +============= + +Provides the ability to download a file from cloud storage in chunks + +GET /api/z/1.0/filedata + + +Required: + + - file_id + attach.hash of desired file ('begins with' match) + + +Optional: + + - start + starting byte of returned data in file (counting from 0) + + - length + length (prior to base64 encoding) of chunk to download + + +Returns: + + attach (DB) structure with base64 encoded 'content' comprised of the desired chunk + + + +Example: + + https://xyz.macgirvin.com/api/z/1.0/filedata?f=&file_id=9f5217770fd&start=0&length=48 + +Returns: + + { + + "attach": { + "id": "107", + "aid": "1", + "uid": "2", + "hash": "9f5217770fd55d563bd77f84d534d8e119a187514bbd391714626cd9c0e60207", + "creator": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "filename": "pcxtopbm.c", + "filetype": "application/octet-stream", + "filesize": "3934", + "revision": "0", + "folder": "", + "flags": "0", + "is_dir": "0", + "is_photo": "0", + "os_storage": "1", + "os_path": "", + "display_path": "", + "content": "LyogcGN4dG9wYm0uYyAtIGNvbnZlcnQgUEMgcGFpbnRicnVzaCAoLnBjeCkgZmls", + "created": "2016-07-24 23:13:01", + "edited": "2016-07-24 23:13:01", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "start": 0, + "length": 48 + } + + }
\ No newline at end of file diff --git a/doc/api/api_files.md b/doc/api/api_files.md new file mode 100644 index 000000000..c2a10fce5 --- /dev/null +++ b/doc/api/api_files.md @@ -0,0 +1,103 @@ +API files +========= + +List file storage (attach DB) + +GET /api/z/1.0/files + + +Options: + + - hash + return only entries matching hash (exactly) + + - filename + return only entries matching filename (substring) + + - filetype + return only entries matching filetype/mimetype (substring) + + - start + start at record (default 0) + + - records + number of records to return or 0 for unlimited + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/files -d filetype=multipart/mixed + + +Returns: + + { + + "success": true, + "results": [ + { + "id": "1", + "aid": "1", + "uid": "2", + "hash": "44ee8b2a1a7f36dea07b93b7747a2383a1bc0fdd08339e8928bfcbe45f65d939", + "filename": "Profile Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-02 21:51:17", + "edited": "2016-01-02 21:51:17", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "12", + "aid": "1", + "uid": "2", + "hash": "71883f1fc64af33889229cbc79c5a056deeec5fc277d765f182f19073e1b2998", + "filename": "Cover Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-15 00:24:33", + "edited": "2016-01-15 00:24:33", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "16", + "aid": "1", + "uid": "2", + "hash": "f48f7ec3278499d1dd86b72c3207beaaf4717b07df5cc9b373f14d7aad2e1bcd", + "filename": "2016-01", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-22 03:24:55", + "edited": "2016-01-22 03:26:57", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + } + ] + } diff --git a/doc/api_functions.bb b/doc/api/api_functions.bb index e6cde3dc6..e6cde3dc6 100644 --- a/doc/api_functions.bb +++ b/doc/api/api_functions.bb diff --git a/doc/api/api_group_members.md b/doc/api/api_group_members.md new file mode 100644 index 000000000..497e0aac6 --- /dev/null +++ b/doc/api/api_group_members.md @@ -0,0 +1,133 @@ +API group_members +================= + +GET /api/z/1.0/group_members + + + +Required: + + group_id or group_name + + +Returns: + + group_member+abook+xchan (DB join) for each member of the privacy group + + + [ + + { + "id": "1", + "uid": "2", + "gid": "1", + "xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_id": "2", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_my_perms": "218555", + "abook_their_perms": "0", + "abook_closeness": "0", + "abook_created": "2016-01-02 21:16:26", + "abook_updated": "2016-01-02 21:16:26", + "abook_connected": "0000-00-00 00:00:00", + "abook_dob": "0000-00-00 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "1", + "abook_feed": "0", + "abook_profile": "", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw", + "xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2", + "xchan_addr": "teller@xyz.macgirvin.com", + "xchan_url": "https://xyz.macgirvin.com/channel/teller", + "xchan_connurl": "https://xyz.macgirvin.com/poco/teller", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Teller", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-10-19 01:26:50", + "xchan_name_date": "2016-01-02 21:16:26", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + }, + { + "id": "12", + "uid": "2", + "gid": "1", + "xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_id": "24", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_my_perms": "218555", + "abook_their_perms": "218555", + "abook_closeness": "80", + "abook_created": "2016-01-27 00:48:43", + "abook_updated": "2016-12-04 17:16:58", + "abook_connected": "2016-12-04 17:16:58", + "abook_dob": "0001-01-01 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "0", + "abook_feed": "0", + "abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA", + "xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6", + "xchan_addr": "cloner@xyz.macgirvin.com", + "xchan_url": "http://abc.macgirvin.com/channel/cloner", + "xchan_connurl": "http://abc.macgirvin.com/poco/cloner", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Karen", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-03-31 19:59:20", + "xchan_name_date": "2016-01-26 23:23:42", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + } + + ]
\ No newline at end of file diff --git a/doc/api/api_item_update.md b/doc/api/api_item_update.md new file mode 100644 index 000000000..cf1a28044 --- /dev/null +++ b/doc/api/api_item_update.md @@ -0,0 +1,225 @@ +API item/update +=============== + + +Usage: POST /api/z/1.0/item/update + +Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. + + +Required: + +- body + + text/bbcode contents by default. + + +Optional: + +- $_FILES['media'] + + uploaded media file to include with post + +- title + + title of post/item + +- contact_allow + + array of xchan.xchan_hash allowed to view this item + +- group_allow + + array of group.hash allowed to view this item + +- contact_deny + + array of xchan.xchan_hash not allowed to view this item + +- group_deny + + array of group.hash not allowed to view this item + +- coord + + geographic coordinates + +- location + + freefrom location + +- expire + + datetime this post will expire or be removed + +- mimetype + + mimetype if not text/bbcode + +- parent + + item.id of parent to this post (makes it a comment) + +- parent_mid + + alternate form of parent using message_id + +- remote_xchan + + xchan.xchan_hash of this message author if not the channel owner + +- consensus + + boolean set to true if this is a consensus or voting item (default false) + +- nocomment + + boolean set to true if comments are to be disabled (default false) + +- origin + + do not use this without reading the code + +- namespace + + persistent identity for a remote network or service + +- remote_id + + message_id of this resource on a remote network or service + +- message_id + + message_id of this item (leave unset to generate one) + +- created + + datetime of message creation + +- post_id + + existing item.id if this is an edit operation + +- app + + application or network name to display with item + +- categories + + comma separated categories for this item + +- webpage + + item.page_type if not 0 + +- pagetitle + + for webpage and design elements, the 'page name' + +- layout_mid + + item.mid of layout for this design element + +- plink + + permalink for this item if different than the default + +- verb + + activitystream verb for this item/activity + +- obj_type + + activitystream object type for this item/activity + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" + + +Returns: + + + { + + "success": true, + "item_id": "2245", + "item": { + "id": "2245", + "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "aid": "1", + "uid": "2", + "parent": "2245", + "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "created": "2016-12-03 20:00:12", + "edited": "2016-12-03 20:00:12", + "expires": "0001-01-01 00:00:00", + "commented": "2016-12-03 20:00:12", + "received": "2016-12-03 20:00:12", + "changed": "2016-12-03 20:00:12", + "comments_closed": "0001-01-01 00:00:00", + "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "source_xchan": "", + "mimetype": "text/bbcode", + "title": "", + "body": "hello world", + "html": "", + "app": "", + "lang": "", + "revision": "0", + "verb": "http://activitystrea.ms/schema/1.0/post", + "obj_type": "http://activitystrea.ms/schema/1.0/note", + "obj": "", + "tgt_type": "", + "target": "", + "layout_mid": "", + "postopts": "", + "route": "", + "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "resource_id": "", + "resource_type": "", + "attach": "", + "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", + "diaspora_meta": "", + "location": "", + "coord": "", + "public_policy": "", + "comment_policy": "contacts", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "item_restrict": "0", + "item_flags": "0", + "item_private": "0", + "item_origin": "1", + "item_unseen": "0", + "item_starred": "0", + "item_uplink": "0", + "item_consensus": "0", + "item_wall": "1", + "item_thread_top": "1", + "item_notshown": "0", + "item_nsfw": "0", + "item_relay": "0", + "item_mentionsme": "0", + "item_nocomment": "0", + "item_obscured": "0", + "item_verified": "1", + "item_retained": "0", + "item_rss": "0", + "item_deleted": "0", + "item_type": "0", + "item_hidden": "0", + "item_unpublished": "0", + "item_delayed": "0", + "item_pending_remove": "0", + "item_blocked": "0" + } + + }
\ No newline at end of file diff --git a/doc/api_posting.bb b/doc/api/api_posting.bb index c708ad143..c708ad143 100644 --- a/doc/api_posting.bb +++ b/doc/api/api_posting.bb diff --git a/doc/api/api_xchan.md b/doc/api/api_xchan.md new file mode 100644 index 000000000..d2b15e04c --- /dev/null +++ b/doc/api/api_xchan.md @@ -0,0 +1,44 @@ +API xchan +========= + +An xchan is a global location independent channel and is the primary record for a network +identity. It may refer to channels on other websites, networks, or services. + +GET /api/z/1.0/xchan + +Required: one of [ address, hash, guid ] as GET parameters + +Returns a portable xchan structure + +Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com + +Returns: + + { + "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", + "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", + "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "photo_mimetype": "image/jpeg", + "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", + "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", + "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", + "address": "mike@macgirvin.com", + "url": "https://macgirvin.com/channel/mike", + "connurl": "https://macgirvin.com/poco/mike", + "follow": "https://macgirvin.com/follow?f=&url=%s", + "connpage": "https://macgirvin.com/connect/mike", + "name": "Mike Macgirvin", + "network": "zot", + "instance_url": "", + "flags": "0", + "photo_date": "2012-12-06 05:06:11", + "name_date": "2012-12-06 04:59:13", + "hidden": "1", + "orphan": "0", + "censored": "0", + "selfcensored": "0", + "system": "0", + "pubforum": "0", + "deleted": "0" + }
\ No newline at end of file diff --git a/doc/api/group.md b/doc/api/group.md new file mode 100644 index 000000000..8829ff416 --- /dev/null +++ b/doc/api/group.md @@ -0,0 +1,41 @@ +API group +========= + +GET /api/z/1.0/group + + +Description: list privacy groups + + +Returns: DB tables of all privacy groups. + +To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call. + + + [ + + { + "id": "1", + "hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Friends" + }, + { + "id": "2", + "hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family", + "uid": "2", + "visible": "1", + "deleted": "0", + "gname": "Family" + }, + { + "id": "3", + "hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Co-workers" + } + ]
\ No newline at end of file diff --git a/doc/bbcode.html b/doc/bbcode.html deleted file mode 100644 index 36f40d3f4..000000000 --- a/doc/bbcode.html +++ /dev/null @@ -1,109 +0,0 @@ -<h3>BBcode reference</h3> -<div style="font-size: 14px;"> -<br /><br /> -<ul class="listdecimal" style="list-style-type: decimal;"> -<li>[b]bold[/b] - <strong>bold</strong><br /> -<li>[i]italic[/i] - <em>italic</em><br /> -<li>[u]underlined[/u] - <u>underlined</u><br /> -<li>[s]strike[/s] - <strike>strike</strike><br /> -<li>[color=red]red[/color] - <span style="color: red;">red</span><br /> -<li>[url=https://zothub.com]$Projectname[/url] <a href="https://zothub.com">$Projectname</a><br /> -<li>[img]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" alt="Image/photo" /><br /> -<li>[img float=left]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:left;" alt="Image/photo" /><br /> -<div style="clear:both;"></div> -<li>[img float=right]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:right;" alt="Image/photo" /><br /> -<div style="clear:both;"></div> -<li>[code]code[/code] <code>code</code><br /> -<li>[code=xxx]syntax highlighted code[/code] <code>supported languages php, css, mysql, sql, abap, diff, html, perl, ruby, vbscript, avrc, dtd, java, xml, cpp, python, javascript, js, json, sh</code><br /> -<li>[quote]quote[/quote] <blockquote>quote</blockquote><br /> -<li>[quote=Author]Author? Me? No, no, no...[/quote] <br /><strong class="author">Author wrote:</strong><blockquote>Author? Me? No, no, no...</blockquote><br /> -<li> [nobb] may be used to escape bbcode.</ul><br /> - -<br />You can make lists with:<br /> -<ul class="listbullet" style="list-style-type: circle;"> -<li>[list]<br /> -<li>[list=1]<br /> -<li>[list=i]<br /> -<li>[list=I] <br /> -<li>[list=a]<br /> -<li>[list=A] <br /> -<li>[ul]<br /> -<li>[ol]<br /> -<li>[dl]<br /> -<li>[dl terms="biumlh"] — where style of the terms can be any combination of: - <dl class="bb-dl dl-horizontal"> - <dt>b</dt><dd>bold</dd> - <dt>i</dt><dd>italic</dd> - <dt>u</dt><dd>underline</dd> - <dt>m</dt><dd>monospace</dd> - <dt>l</dt><dd>large</dd> - <dt>h</dt><dd>horizontal — like <em>this</em> defintion list</dd> - </dl> -</li> - -</ul>For example:<br />[ul]<br />[*] First list element<br />[*] Second list element<br />[/ul]<br /><br />Will render something like: <br /> -<ul class="listbullet" style="list-style-type: circle;"> -<li> First list element<br /> -<li> Second list element</ul> - -or<br /><br />[dl terms="b"]<br />[*= First element term] First element description<br />[*= Second element term] Second element description<br />[/dl]<br /><br />Will render something like: <br /><br /> -<dl class="bb-dl dl-terms-bold"> -<dt> First element term </dt><dd>First element description</dd> -<dt> Second element term </dt><dd>Second element description</dd> -</dl><br /> - - -<br />There's also:<br /> -<ul class="listloweralpha" style="list-style-type: lower-alpha;"> -<li>[hr]<br /> -<li>[video]video URL[/video]<br /> -<li>[audio]audio URL[/audio]<br /> -<li>[table]<br /> -<li>[th] <br /> -<li>[td]<br /> -<li>[tr]<br /> -<li>[center]<br /> -<li>[font=courier]some text[/font] <span style="font-family: courier;">some text</span><br /> -</ul><br /> -<br />Tables? Yes!<br /><br />[table border=1]<br /> [tr]<br /> [th]Tables now[/th]<br /> [/tr]<br /> [tr]<br /> [td]Have headers[/td]<br /> [/tr]<br />[/table]<br /><br /><table border="1" ><tr><th>Tables now</th></tr><tr><td>Have headers</td></tr></table><br />All sizes, <br />From the [size=xx-small] - <span style="font-size: xx-small;">xx-small</span>.<br />To the [size=xx-large] - <span style="font-size: xx-large;">xx-large</span>.<br />To fit exactly <span style="font-size: 20px;">20px</span> use [size=20].<br /><br /> - -<p>$Projectname specific codes</p> -<ul class="listbullet" style="list-style-type: circle;"> -<li>[&copy;] © This works for many HTML entities</li> -<li>[zrl]https://zothub.com[/zrl] Magic-auth version of [url] tag</li> -<li>[zmg]https://zothub.com/some/photo.jpg[/zmg] Magic-auth version of [img] tag<br /></li> - -<li>[observer=1]Text to display if observer is authenticated in the matrix[/observer]</li> -<li>[observer=0]Text to display if observer is <strong>not</strong> authenticated in the matrix[/observer]</li> -<li>[observer.baseurl] website of observer</li> -<li>[observer.url] channel URL of observer</li> -<li>[observer.name] name of observer</li> -<li>[observer.webname] short name in the url of the observer</li> -<li>[observer.address] address (zot-id) of observer</li> -<li>[observer.photo] profile photo of observer<br /></li> - -<li>[spoiler] for hiding spoilers<br /><br /></li> - -<li>[rpost=title]Text to post[/rpost] The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional</li> -<li>[qr]text to post[/qr] - create a QR code (if the qrator plugin is installed).</li> -<li>[toc] - create a table of content in a webpage. Please refer to the <a href="http://ndabas.github.io/toc/" target="_blank">original jquery toc</a> to get more explanations. - <ul> - <li>Optional param: 'data-toc'. If ommited the default is 'body'</li> - <li>Optional param: 'data-toc-headings'. If ommited the default is 'h1,h2,h3'</li> - <li>Full example: [toc data-toc='div.page-body' data-toc-headings='h1,h2']</li> - </ul> -</li> -</ul> -<br /> -<p>These require a suitable map plugin/addon such as openstreetmap or else the result will be blank</p> -<ul> -<li>[map] Generate an inline map using the current browser coordinates of the poster, if browser location is enabled<br /> -<li>[map=latitude,longitude] Generate a map using global coordinates.<br /> -<li>[map]Place Name[/map] Generate a map for a given named location. The first matching location is returned. For instance "Sydney" will usually return Sydney, Australia and not Sydney, Nova Scotia, Canada unless the more precise location is specified. It is highly recommended to use the post preview utility to ensure you have the correct location before submitting the post.<br /> -</ul> - -#include doc/macros/main_footer.bb; -</div> - - - diff --git a/doc/ca/general.bb b/doc/ca/general.bb index dace92775..682b1ff52 100644 --- a/doc/ca/general.bb +++ b/doc/ca/general.bb @@ -2,8 +2,6 @@ [zrl=[baseurl]/help/Privacy]Politica de Privacitat[/zrl] -[zrl=[baseurl]/help/project/history]Història de $Projectname[/zrl] - [h3]Recursos Externs[/h3] [zrl=[baseurl]/help/external-resource-links]Enllaços a Recursos Externs[/zrl] diff --git a/doc/channels.bb b/doc/channels.bb deleted file mode 100644 index eca8dd0e6..000000000 --- a/doc/channels.bb +++ /dev/null @@ -1,39 +0,0 @@ -[h2]Channels[/h2]
-
-[h3]What are channels?[/h3]
-
-Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me".
-
-The most important features for a channel that represents "me" are:
-[ul]
-[*]Secure and private "spam free" communications
-
-[*]Identity and "single-signon" across the entire network
-
-[*]Privacy controls and permissions which extend to the entire network
-
-[*]Directory services (like a phone book)
-[/ul]
-In short, a channel that represents yourself is "me, on the internet".
-
-[h3]Creating channels[/h3]
-
-You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link.
-
-You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice.
-
-Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions.
-
-Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0]example.com/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts.
-
-[h3]The grid, permissions and delegation[/h3]
-
-The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts.
-
-As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl].
-
-You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources.
-
-#include doc/macros/main_footer.bb;
-
-
diff --git a/doc/cloud.bb b/doc/cloud.bb deleted file mode 100644 index 2ad22806b..000000000 --- a/doc/cloud.bb +++ /dev/null @@ -1,27 +0,0 @@ -[b]Personal Cloud Storage[/b]
-
-$Projectname provides an ability to store privately and/or share arbitrary files with friends.
-
-You may either upload files from your computer into your storage area, or copy them directly from the operating system using the WebDAV protocol.
-
-On many public servers there may be limits on disk usage.
-
-[b]File Attachments[/b]
-
-The quickest and easiest way to share files is through file attachments. In the row of icons below the status post editor is a tool to upload attachments. Click the tool, select a file and submit. After the file is uploaded, you will see an attachment code placed inside the text region. Do not edit this line or it may break the ability for your friends to see the attachment. You can use the post permissions dialogue box or privacy hashtags to restrict the visibility of the file - which will be set to match the permissions of the post your are sending.
-
-To delete attachments or change the permissions on the stored files, visit [observer.baseurl]/cloud/{{username}}" replacing {{username}} with the nickname you provided during channel creation.
-
-[b]Web Access[/b]
-
-Your files are visible on the web at the location "cloud/{{username}}" to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories.
-
-[b]WebDAV access[/b]
-
-See: [zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
-
-[b]Permissions[/b]
-
-When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit "filestorage/{{username}}"; select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/cloud_desktop_clients.bb b/doc/cloud_desktop_clients.bb deleted file mode 100644 index 2f099527f..000000000 --- a/doc/cloud_desktop_clients.bb +++ /dev/null @@ -1,21 +0,0 @@ -[b]Cloud Desktop Clients[/b]
-
-[b]Windows Clients[/b]
-
-[li][zrl=[baseurl]/help/dav_windows]Windows Internal Client[/zrl][/li]
-
-
-[b]Linux Clients[/b]
-
-[li][zrl=[baseurl]/help/dav_mount]Command Line as a Filesystem[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_dolphin]Dolphin[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_konqueror]Konqueror[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_nautilus]Nautilus[/zrl][/li]
-[li][zrl=[baseurl]/help/dav_nemo]Nemo[/zrl][/li]
-
-
-[b]Server Notes[/b]
-
-Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms.
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/connecting_to_channels.bb b/doc/connecting_to_channels.bb deleted file mode 100644 index 291323f75..000000000 --- a/doc/connecting_to_channels.bb +++ /dev/null @@ -1,19 +0,0 @@ -[b]Connecting To Channels[/b]
-
-Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it?
-
-First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels.
-
-The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later.
-
-To connect with other $Projectname channels:
-
-Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit".
-
-You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions.
-
-[b]Premium Channels[/b]
-
-Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/connecting_to_channels.md b/doc/connecting_to_channels.md deleted file mode 100644 index 349f58b67..000000000 --- a/doc/connecting_to_channels.md +++ /dev/null @@ -1,34 +0,0 @@ -# Connecting To Channels # - -Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it? - -First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels. - -The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later. - -To connect with other $Projectname channels: - -Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit". - -You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. - -## Block/Ignore/Archive/Hide channels ## - -Channels in your address book can have statuses such as *blocked*, *ignored*, *archived* and *hidden*. From your connections page you can see tabs that display the channels with those statuses. From your edit connection pages you can change the statuses of a channel. - -Here's their meaning: - -**Blocked:** the channel can't read your items regardless of permissions, nor can it write to your channel. - -**Ignored:** the channel can read your items if it has permission, but can't write to your channel. - -**Hidden:** the channel does not show up in your profile's connections list, noone can see you're connected, but beware they may still show up to your other connections, for example in post replies. - -**Archived:** if a channel can't be reached for 30 days, it is automatically marked as archived. This keeps all the data but stops polling the channel for new information and removes it from autocomplete. If later you learn the channel has come back online, you may manually unarchive it. - - -## Premium Channels ## - -Some channels are designated "Premium Channels" and **may** require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this **may** involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel. - -#include doc/macros/main_footer.bb; diff --git a/doc/context/en/profiles/help.html b/doc/context/en/profiles/help.html new file mode 100644 index 000000000..41f00fe64 --- /dev/null +++ b/doc/context/en/profiles/help.html @@ -0,0 +1,35 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd> + Once you have registered an <i>account</i> at the matrix you have also created a <i>profile</i> and a <i>channel</i>. + </dd> + <dt>Account</dt> + <dd> + You have <i>one</i> account. This consists of your email account and your password. With your account you access your + profile and your channel.<i>Think of your account as the way you authenticate at one Hubzilla site. It lets you + do things, such as creating profiles and channels with which you can connect to other people.</i> + </dd> + <dt>Profile</dt> + <dd> + You have surely registered with some other internet services, such as forums or online communities. For all of them + you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other + services Hubzilla offers you the advantage of creating + <i>many more profiles</i>. That way you are able to distinguish between profiles targeted specially at everyone + (your public profile), your work mates, your family and your partner.<i>Think of your profile as the basic + information about yourself you tell other people.</i> + </dd> + <dt>Channel</dt> + <dd> + During the registration you created your first <i>channel</i>. Yes, besides several profiles you are able to have + several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have + created one channel. You can use this one for the public, to communicate with people about every day life. But + perhaps you are an avid book reader and many people are bored by that. So you open a <i>second channel</i> just + for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of + posts, with a new profile (... or new profile<i>s</i> ...) and completely different contacts. Some connections + might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just + switch between both of them just like you would in real life switch when talking to people you meet on the street + or people you meet specially to talk about books. You can even connect to yourself, or better: to your other + channel. :)<i>Think of a channel as different spaces dedicated to different topics where you meet with different + people.</i> + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/settings/account/help.html b/doc/context/en/settings/account/help.html new file mode 100644 index 000000000..41f00fe64 --- /dev/null +++ b/doc/context/en/settings/account/help.html @@ -0,0 +1,35 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd> + Once you have registered an <i>account</i> at the matrix you have also created a <i>profile</i> and a <i>channel</i>. + </dd> + <dt>Account</dt> + <dd> + You have <i>one</i> account. This consists of your email account and your password. With your account you access your + profile and your channel.<i>Think of your account as the way you authenticate at one Hubzilla site. It lets you + do things, such as creating profiles and channels with which you can connect to other people.</i> + </dd> + <dt>Profile</dt> + <dd> + You have surely registered with some other internet services, such as forums or online communities. For all of them + you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other + services Hubzilla offers you the advantage of creating + <i>many more profiles</i>. That way you are able to distinguish between profiles targeted specially at everyone + (your public profile), your work mates, your family and your partner.<i>Think of your profile as the basic + information about yourself you tell other people.</i> + </dd> + <dt>Channel</dt> + <dd> + During the registration you created your first <i>channel</i>. Yes, besides several profiles you are able to have + several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have + created one channel. You can use this one for the public, to communicate with people about every day life. But + perhaps you are an avid book reader and many people are bored by that. So you open a <i>second channel</i> just + for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of + posts, with a new profile (... or new profile<i>s</i> ...) and completely different contacts. Some connections + might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just + switch between both of them just like you would in real life switch when talking to people you meet on the street + or people you meet specially to talk about books. You can even connect to yourself, or better: to your other + channel. :)<i>Think of a channel as different spaces dedicated to different topics where you meet with different + people.</i> + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/settings/channel/help.html b/doc/context/en/settings/channel/help.html new file mode 100644 index 000000000..41f00fe64 --- /dev/null +++ b/doc/context/en/settings/channel/help.html @@ -0,0 +1,35 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd> + Once you have registered an <i>account</i> at the matrix you have also created a <i>profile</i> and a <i>channel</i>. + </dd> + <dt>Account</dt> + <dd> + You have <i>one</i> account. This consists of your email account and your password. With your account you access your + profile and your channel.<i>Think of your account as the way you authenticate at one Hubzilla site. It lets you + do things, such as creating profiles and channels with which you can connect to other people.</i> + </dd> + <dt>Profile</dt> + <dd> + You have surely registered with some other internet services, such as forums or online communities. For all of them + you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other + services Hubzilla offers you the advantage of creating + <i>many more profiles</i>. That way you are able to distinguish between profiles targeted specially at everyone + (your public profile), your work mates, your family and your partner.<i>Think of your profile as the basic + information about yourself you tell other people.</i> + </dd> + <dt>Channel</dt> + <dd> + During the registration you created your first <i>channel</i>. Yes, besides several profiles you are able to have + several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have + created one channel. You can use this one for the public, to communicate with people about every day life. But + perhaps you are an avid book reader and many people are bored by that. So you open a <i>second channel</i> just + for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of + posts, with a new profile (... or new profile<i>s</i> ...) and completely different contacts. Some connections + might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just + switch between both of them just like you would in real life switch when talking to people you meet on the street + or people you meet specially to talk about books. You can even connect to yourself, or better: to your other + channel. :)<i>Think of a channel as different spaces dedicated to different topics where you meet with different + people.</i> + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/settings/tokens/help.html b/doc/context/en/settings/tokens/help.html new file mode 100644 index 000000000..d37a0fd2b --- /dev/null +++ b/doc/context/en/settings/tokens/help.html @@ -0,0 +1,23 @@ +<dl class="dl-horizontal"> + <dt>Guest Access Tokens</dt> + <dd> + In order to facilitate sharing of private resources with non-members or members of federation nodes with limited identification discovery, Hubzilla should provide members with a mechanism to create and manage temporary ("throwaway") logins, aka "Zot Access Tokens". These tokens/credentials may be used to authenticate to a hubzilla site for the sole purpose of accessing privileged or access controlled resources (files, photos, posts, webpages, chatrooms, etc.). + </dd> + <dt>Create a token</dt> + <dd> + The form to create/edit accepts three parameters, a human readable name, a password or access token, and an + optional expiration. Once expired, the access token is no longer valid, may no longer be used, and will be + automatically purged from the list of temporary accounts. The password field in the create/edit forms + displays the text of the access token and not an obscured password. + </dd> + <dt>Share a token</dt> + <dd> + We do not specify mechanisms for sharing these tokens with others. Any communication method may be used. Any tokens you have created are added to the Access Control List selector and may be used anywhere that Access Control Lists are provided. + + <b>Example</b>: A visitor arrives at your site. She has an access token you have provided, and attempts to visit one of your photo albums (which is restricted to be viewed only by yourself and one temporary identity). Permission is denied. + + The visitor now selects "Login" from the menu navigation bar. This presents a login page. She enters the name and password you have provided her, and she can now view the restricted photo album. + + Alternatively, you may share a link to a protected file by adding a parameter "&zat=abc123" to the URL, where the string "abc123" is the access token or password for the temporary login. No further negotiation is required, and the file is presented. + </dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/webpages/help.html b/doc/context/en/webpages/help.html index af57ee88a..a4817e4bf 100644 --- a/doc/context/en/webpages/help.html +++ b/doc/context/en/webpages/help.html @@ -3,6 +3,6 @@ <dd>You can create modular, identity-aware websites composed of shareable elements. </dd> <dt>Pages</dt> <dd>This page lists your "pages", which are assigned URLs where people can visit your site. The structure of pages are typically described by an associated <b>layout</b>, and their content is constructed from a collection of <b>blocks</b>.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#website-import-tools", 1); return false;' title="Click to highlight element...">Website import tool</a></dt> - <dd>The website import tool allows you import multiple webpage elements (pages, layouts, blocks) either from an uploaded zip file or from an existing cloud files folder. <a target="_blank" href="help/webpages">Read more...</a></dd> + <dt><a href='#' onclick='contextualHelpFocus("#website-portation-tools", 1); return false;' title="Click to highlight element...">Website portation tools</a></dt> + <dd>The website portation tools allows you import/export multiple webpage elements (pages, layouts, blocks). You can <b>import</b> either from an uploaded zip file or from an existing cloud files folder. You can <b>export</b> to either a zip file containing a select group of webpage elements in a form compatible with the import tool, or you can export directly to a cloud files folder. <a target="_blank" href="help/webpages">Read more...</a></dd> </dl>
\ No newline at end of file diff --git a/doc/context/en/wiki/help.html b/doc/context/en/wiki/help.html index 314a9d60b..5ac9b22ae 100644 --- a/doc/context/en/wiki/help.html +++ b/doc/context/en/wiki/help.html @@ -1,10 +1,12 @@ <dl class="dl-horizontal"> <dt>General</dt> <dd>Each wiki is a collection of pages, composed as Markdown-formatted text files.</dd> - <dt><a href='#' onclick='contextualHelpFocus("#wiki_list", 1); return false;' title="Click to highlight element...">Wiki List</a></dt> + <dt><a href='#' onclick='contextualHelpFocus("#wikis-index", 1); return false;' title="Click to highlight element...">Wiki List</a></dt> <dd>Wikis owned by the channel <i>that you have permission to view</i> are listed in the side panel.</dd> <dt><a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element...">Page History</a></dt> <dd>Every revision of a page is saved to allow quick reversion. Click the <b>History</b> tab to view a history of page revisions, including the date and author of each. The revert button will load the selected revision but will not automatically save the page.</dd> <dt><a href='#' onclick='contextualHelpFocus("#wiki_page_list", 1); return false;' title="Click to highlight element...">Pages</a></dt> <dd>The list of pages in the wiki are listed in the <b>Wiki Pages</b> panel. Prior to saving page edits using the <b>Page</b> control dropdown menu, you may <a href='#' onclick='contextualHelpFocus("#id_commitMsg", 0); return false;' title="Click to highlight element...">enter a custom message</a> to be displayed in the <a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element..."><b>Page History</b></a> viewer along with the revision.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;' title="Click to highlight element...">Channel Content Tabs</a></dt> + <dd>The channel content tabs are links to other content published by the channel. The <b>About</b> tab links to the channel profile. The <b>Photos</b> tab links to the channel photo galleries. The <b>Files</b> tab links to the general shared files published by the channel.</dd> </dl>
\ No newline at end of file diff --git a/doc/credits.bb b/doc/credits.bb deleted file mode 100644 index 5219d7bf5..000000000 --- a/doc/credits.bb +++ /dev/null @@ -1,82 +0,0 @@ -[b]Credits[/b] - -Thanks to all who have helped and contributed to the project and its predecessors over the years. It is possible we missed in your name but this is unintentional. We also thank the community and its members for providing valuable input and without whom this entire effort would be meaningless. - -It is also worth acknowledging the contributions and solutions to problems which arose from discussions amongst members and developers of other somewhat related and competing projects; even if we have had our occasional disagreements. - -Mike Macgirvin -Fabio Comuni -Simon L'nu -marijus -Tobias Diekershoff -fabrixxm -tommy tomson -Simon -zottel -Christian Vogeley -Jeroen van Riet Paap (jeroenpraat) -Michael Vogel -erik -Zach Prezkuta -Paolo T -Michael Meer -Michael -Abinoam P. Marques Jr -Tobias Hößl -Alexander Kampmann -Olaf Conradi -Paolo Tacconi -tobiasd -Devlon Duthie -Zvi ben Yaakov (a.k.a rdc) -Alexandre Hannud Abdo -Olivier Migeot -Chris Case -Klaus Weidenbach -Michael Johnston -olivierm -Vasudev Kamath -pixelroot -Max Weller -duthied -Martin Schmitt -Sebastian Egbers -Erkan Yilmaz -sasiflo -Stefan Parviainen -Haakon Meland Eriksen -Oliver Hartmann (23n) -Erik Lundin -habeascodice -sirius -Charles -Tony Baldwin -Hauke Zuehl -Keith Fernie -Anne Walk -toclimb -Daniel Frank -Matthew Exon -Michal Supler -Tobias Luther -U-SOUND\mike -mrjive -nostupidzone -tonnerkiller -Antoine G -Christian Drechsler -Ludovic Grossard -RedmatrixCanada -Stanislav Lechev [0xAF] -aweiher -bufalo1973 -dsp1986 -felixgilles -ike -maase2 -mycocham -ndurchx -pafcu -Simó Albert i Beltran -Manuel Reva -Manuel Jiménez Friaza diff --git a/doc/dav_dolphin.bb b/doc/dav_dolphin.bb deleted file mode 100644 index ae60a6d52..000000000 --- a/doc/dav_dolphin.bb +++ /dev/null @@ -1,9 +0,0 @@ -[b]Using The Cloud - Dolphin[/b]
-
-Visit webdavs://example.com/dav where "example.com" is the URL of your hub.
-
-When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account.
-
-Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication.
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_konqueror.bb b/doc/dav_konqueror.bb deleted file mode 100644 index 97c046e46..000000000 --- a/doc/dav_konqueror.bb +++ /dev/null @@ -1,12 +0,0 @@ -[b]Using The Cloud - Konqueror[/b]
-
-Simply visit webdavs://example.com/dav after logging in to your hub, where "example.com" is the URL of your hub.
-
-No further authentication is required if you are logged in to your hub in the normal manner.
-
-Additionally, if one has authenticated at a different hub during their normal browser session, your identity will be passed to the cloud for these hubs too - meaning you can access any private files on any server, as long as you have permissions to see them, as long as you have visited that site earlier in your session.
-
-This functionality is normally restricted to the web interface, and is not available to any desktop software other than KDE.
-
-#include doc/macros/cloud_footer.bb;
-
diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb deleted file mode 100644 index 0fd3d4691..000000000 --- a/doc/dav_mount.bb +++ /dev/null @@ -1,86 +0,0 @@ -[b]Mounting As A Filesystem[/b]
-
-To install your cloud directory as a filesystem, you first need davfs2 installed. 99% of the time, this will be included in your distributions repositories. In Debian
-
-[code]apt-get install davfs2[/code]
-
-If you want to let normal users mount the filesystem
-
-[code] dpkg-reconfigure davfs2[/code]
-
-and select "yes" at the prompt.
-
-Now you need to add any user you want to be able to mount dav to the davfs2 group
-
-[code]usermod -aG davfs2 <DesktopUser>[/code]
-
-[b]Note:[/b] on some systems the user group may be different, i.e. - "network"
-on Arch Linux. If in doubt, check the davfs documentation for your
-particular OS.
-
-Edit /etc/fstab
-
-[code]nano /etc/fstab[/code]
-
- to include your cloud directory by adding
-
-[code]
-[baseurl]/dav/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1
-[/code]
-
-Where [baseurl] is the URL of your hub, /mount/point is the location you want to mount the cloud, and <DesktopUser> is the user you log in to one your computer. Note that if you are mounting as a normal user (not root) the mount point must be in your home directory.
-
-For example, if I wanted to mount my cloud to a directory called 'cloud' in my home directory, and my username was bob, my fstab would be
-
-[code][baseurl]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code]
-
-Now, create the mount point.
-
-[code]mkdir /home/bob/cloud[/code]
-
-and also create a directory file to store your credentials
-
-[code]mkdir /home/bob/.davfs2[/code]
-
-Create a file called 'secrets'
-
-[code]nano /home/bob/.davfs2/secrets[/code]
-
-and add your cloud login credentials
-
-[code]
-[baseurl]/dav <username> <password>
-[/code]
-
-Where <username> and <password> are the username and password [i]for your hub[/i].
-
-Don't let this file be writeable by anyone who doesn't need it with
-
-[code]chmod 600 /home/bob/.davfs2/secrets[/code]
-
-Finally, mount the drive.
-
-[code]mount [baseurl]/dav[/code]
-
-You can now find your cloud at /home/bob/cloud and use it as though it were part of your local filesystem - even if the applications you are using have no dav support themselves.
-
-[b]Troubleshooting[/b]
-
-With some webservers and certain configurations, you may find davfs2 creating files with 0 bytes file size where other clients work just fine. This is generally caused by cache and locks. If you are affected by this issue, you need to edit your davfs2 configuration.
-
-[code]nano /etc/davfs2/davfs2.conf[/code]
-
-Your distribution will provide a sample configuration, and this file should already exist, however, most of it will be commented out with a # at the beginning of the line.
-
-First step is to remove locks.
-
-Edit the use_locks line so it reads [code]use_locks 0[/code].
-
-Unmount your file system, remount your file system, and try copying over a file from the command line. Note you should copy a new file, and not overwrite an old one for this test. Leave it a minute or two then do [code]ls -l -h[/code] and check the file size of your new file is still greater than 0 bytes. If it is, stop there, and do nothing else.
-
-If that still doesn't work, disable the cache. Note that this has a performance impact so should only be done if disabling locks didn't solve your problem. Edit the cache_size and set it to [code]cache_size 0[/code] and also set file_refresh to [code]file_refresh 0[/code]. Unmount your filesystem, remount your file system, and test it again.
-
-If it [i]still[/i] doesn't work, there is one more thing you can try. (This one is caused by a bug in older versions of dav2fs itself, so updating to a new version may also help). Enable weak etag dropping by setting [code]drop_weak_etags 1[/code]. Unmount and remount your filesystem to apply the changes.
-
-#include doc/macros/cloud_footer.bb;
-
diff --git a/doc/dav_nautilus.bb b/doc/dav_nautilus.bb deleted file mode 100644 index c8911cda8..000000000 --- a/doc/dav_nautilus.bb +++ /dev/null @@ -1,9 +0,0 @@ -[b]Using The Cloud - Nautilus[/b]
-
-1. Open a File browsing window (that's Nautilus)
-2. Select File > Connect to server from the menu
-3. Type davs://<domain_name>/dav/<your_channelname> and click Connect
-4. You will be prompted for your channel name (same as above) and password
-5. Your personal DAV directory will be shown in the window
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_nemo.bb b/doc/dav_nemo.bb deleted file mode 100644 index f2d994fbb..000000000 --- a/doc/dav_nemo.bb +++ /dev/null @@ -1,19 +0,0 @@ -[b]Using The Cloud - Nemo[/b]
-
-For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there.
-
-1st way
-type "davs://<domain_name>/dav/<your_channelname>" in the address bar.
-
-2nd way
-Menu > file > connect to server
-Fill the dialog
-- Server: hubzilla_domain_name
-- Type: Secure WebDAV (https)
-- Folder: /dav
-- Username: yourchannelname
-- Password: yourpassword
-
-Once open you can set a bookmark.
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_windows.bb b/doc/dav_windows.bb deleted file mode 100644 index 96862e2b5..000000000 --- a/doc/dav_windows.bb +++ /dev/null @@ -1,11 +0,0 @@ -[b]Using The Cloud - Windows Internal Client[/b]
-
-RedDav using Windows 7 graphical user interface wizard:
-1. Left-click the Start-button to open the start menu.
-2. Right-click the My computer icon to access its menu.
-3. Left-click Map network drive... to open the connection dialog wizard.
-4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub.
-5. Type your Hubzilla account's user name. IMPORTANT - NO at-sign or domain name.
-6. Type your Hubzilla password
-
-#include doc/macros/cloud_footer.bb;
diff --git a/doc/de/general.bb b/doc/de/general.bb index 6660370d7..b9b75f161 100644 --- a/doc/de/general.bb +++ b/doc/de/general.bb @@ -2,8 +2,6 @@ [zrl=[baseurl]/help/Privacy]Informationen zum Datenschutz[/zrl] -[zrl=[baseurl]/help/project/history]Zur Geschichte von $Projectname[/zrl] - [h3]Externe Ressourcen[/h3] [zrl=[baseurl]/help/external-resource-links]Links zu externen Ressourcen[/zrl] diff --git a/doc/developer/api_zot.bb b/doc/developer/api_zot.bb new file mode 100644 index 000000000..f33faed17 --- /dev/null +++ b/doc/developer/api_zot.bb @@ -0,0 +1,749 @@ +[h3]Zot API[/h3] + +The API endpoints detailed below are relative to [code]api/z/1.0[/code], meaning that if an API is listed as [code]channel/stream[/code] the full API URL is [code][baseurl]/api/z/1.0/channel/stream[/code]. + +[h3]channel/export/basic[/h3] + +Export channel data + + +[h3]channel/stream[/h3] + +Fetch channel conversation items + +[h3]network/stream[/h3] + + +Fetch network conversation items + + + +[h3]files[/h3] + + +List file storage (attach DB) + +GET /api/z/1.0/files + + +Options: + + - hash + return only entries matching hash (exactly) + + - filename + return only entries matching filename (substring) + + - filetype + return only entries matching filetype/mimetype (substring) + + - start + start at record (default 0) + + - records + number of records to return or 0 for unlimited + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/files -d filetype=multipart/mixed + + +Returns: +[code nowrap] + { + + "success": true, + "results": [ + { + "id": "1", + "aid": "1", + "uid": "2", + "hash": "44ee8b2a1a7f36dea07b93b7747a2383a1bc0fdd08339e8928bfcbe45f65d939", + "filename": "Profile Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-02 21:51:17", + "edited": "2016-01-02 21:51:17", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "12", + "aid": "1", + "uid": "2", + "hash": "71883f1fc64af33889229cbc79c5a056deeec5fc277d765f182f19073e1b2998", + "filename": "Cover Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-15 00:24:33", + "edited": "2016-01-15 00:24:33", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "16", + "aid": "1", + "uid": "2", + "hash": "f48f7ec3278499d1dd86b72c3207beaaf4717b07df5cc9b373f14d7aad2e1bcd", + "filename": "2016-01", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-22 03:24:55", + "edited": "2016-01-22 03:26:57", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + } + ] + } +[/code] + + + +[h3]filemeta[/h3] + +Export file metadata for any uploaded file + + +[h3]filedata[/h3] + + +Provides the ability to download a file from cloud storage in chunks + +GET /api/z/1.0/filedata + + +Required: + + - file_id + attach.hash of desired file ('begins with' match) + + +Optional: + + - start + starting byte of returned data in file (counting from 0) + + - length + length (prior to base64 encoding) of chunk to download + + +Returns: + + attach (DB) structure with base64 encoded 'content' comprised of the desired chunk + + + +Example: + + https://xyz.macgirvin.com/api/z/1.0/filedata?f=&file_id=9f5217770fd&start=0&length=48 + +Returns: +[code nowrap] + { + + "attach": { + "id": "107", + "aid": "1", + "uid": "2", + "hash": "9f5217770fd55d563bd77f84d534d8e119a187514bbd391714626cd9c0e60207", + "creator": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "filename": "pcxtopbm.c", + "filetype": "application/octet-stream", + "filesize": "3934", + "revision": "0", + "folder": "", + "flags": "0", + "is_dir": "0", + "is_photo": "0", + "os_storage": "1", + "os_path": "", + "display_path": "", + "content": "LyogcGN4dG9wYm0uYyAtIGNvbnZlcnQgUEMgcGFpbnRicnVzaCAoLnBjeCkgZmls", + "created": "2016-07-24 23:13:01", + "edited": "2016-07-24 23:13:01", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "start": 0, + "length": 48 + } + + } +[/code] + +[h3]file/export[/h3] + + +[h3]file[/h3] + + +[h3]albums[/h3] + + +Description: list photo albums + +GET /api/z/1.0/albums + + +Output: + + text - textual name + + total - number of photos in this album + + url - web URL + + urlencode - textual name, urlencoded + + bin2hex - textual name using bin2hex (which is used in the web URL link) + + +Example: + +[code nowrap] + { + + "success": true, + "albums": [ + { + "text": "/", + "total": "2", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/", + "urlencode": "", + "bin2hex": "" + }, + { + "text": "2016-01", + "total": "6", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3031", + "urlencode": "2016-01", + "bin2hex": "323031362d3031" + }, + { + "text": "2016-02", + "total": "7", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3032", + "urlencode": "2016-02", + "bin2hex": "323031362d3032" + }, + { + "text": "Cover Photos", + "total": "5", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/436f7665722050686f746f73", + "urlencode": "Cover+Photos", + "bin2hex": "436f7665722050686f746f73" + }, + { + "text": "Profile Photos", + "total": "26", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/50726f66696c652050686f746f73", + "urlencode": "Profile+Photos", + "bin2hex": "50726f66696c652050686f746f73" + } + ] + + } +[/code] + + +[h3]photos[/h3] + + +list photo metadata + + +[h3]photo[/h3] + + + +[h3]group[/h3] + + +`GET /api/z/1.0/group` + +Description: list privacy groups + +Returns: DB tables of all privacy groups. + +To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call. + +[code nowrap] + [ + + { + "id": "1", + "hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Friends" + }, + { + "id": "2", + "hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family", + "uid": "2", + "visible": "1", + "deleted": "0", + "gname": "Family" + }, + { + "id": "3", + "hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Co-workers" + } + ] +[/code] +[h3]group_members[/h3] + + +`GET /api/z/1.0/group_members` + +Required: + +group_id or group_name + + +Returns: + +group_member+abook+xchan (DB join) for each member of the privacy group + +[code nowrap] + [ + + { + "id": "1", + "uid": "2", + "gid": "1", + "xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_id": "2", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_my_perms": "218555", + "abook_their_perms": "0", + "abook_closeness": "0", + "abook_created": "2016-01-02 21:16:26", + "abook_updated": "2016-01-02 21:16:26", + "abook_connected": "0000-00-00 00:00:00", + "abook_dob": "0000-00-00 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "1", + "abook_feed": "0", + "abook_profile": "", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw", + "xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2", + "xchan_addr": "teller@xyz.macgirvin.com", + "xchan_url": "https://xyz.macgirvin.com/channel/teller", + "xchan_connurl": "https://xyz.macgirvin.com/poco/teller", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Teller", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-10-19 01:26:50", + "xchan_name_date": "2016-01-02 21:16:26", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + }, + { + "id": "12", + "uid": "2", + "gid": "1", + "xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_id": "24", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_my_perms": "218555", + "abook_their_perms": "218555", + "abook_closeness": "80", + "abook_created": "2016-01-27 00:48:43", + "abook_updated": "2016-12-04 17:16:58", + "abook_connected": "2016-12-04 17:16:58", + "abook_dob": "0001-01-01 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "0", + "abook_feed": "0", + "abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA", + "xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6", + "xchan_addr": "cloner@xyz.macgirvin.com", + "xchan_url": "http://abc.macgirvin.com/channel/cloner", + "xchan_connurl": "http://abc.macgirvin.com/poco/cloner", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Karen", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-03-31 19:59:20", + "xchan_name_date": "2016-01-26 23:23:42", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + } + + ] +[/code] + +[h3]xchan[/h3] + + +An xchan is a global location independent channel and is the primary record for a network +identity. It may refer to channels on other websites, networks, or services. + +`GET /api/z/1.0/xchan` + +Required: one of [ address, hash, guid ] as GET parameters + +Returns a portable xchan structure + +Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com + +Returns: +[code nowrap] + { + "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", + "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", + "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "photo_mimetype": "image/jpeg", + "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", + "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", + "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", + "address": "mike@macgirvin.com", + "url": "https://macgirvin.com/channel/mike", + "connurl": "https://macgirvin.com/poco/mike", + "follow": "https://macgirvin.com/follow?f=&url=%s", + "connpage": "https://macgirvin.com/connect/mike", + "name": "Mike Macgirvin", + "network": "zot", + "instance_url": "", + "flags": "0", + "photo_date": "2012-12-06 05:06:11", + "name_date": "2012-12-06 04:59:13", + "hidden": "1", + "orphan": "0", + "censored": "0", + "selfcensored": "0", + "system": "0", + "pubforum": "0", + "deleted": "0" + } +[/code] +[h3]item/update[/h3] + + +Create or update an item (post, activity, webpage, etc.) + +Usage: `POST /api/z/1.0/item/update` + +Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. + + +Required: + +- body + + text/bbcode contents by default. + + +Optional: + +- $_FILES['media'] + + uploaded media file to include with post + +- title + + title of post/item + +- contact_allow + + array of xchan.xchan_hash allowed to view this item + +- group_allow + + array of group.hash allowed to view this item + +- contact_deny + + array of xchan.xchan_hash not allowed to view this item + +- group_deny + + array of group.hash not allowed to view this item + +- coord + + geographic coordinates + +- location + + freefrom location + +- expire + + datetime this post will expire or be removed + +- mimetype + + mimetype if not text/bbcode + +- parent + + item.id of parent to this post (makes it a comment) + +- parent_mid + + alternate form of parent using message_id + +- remote_xchan + + xchan.xchan_hash of this message author if not the channel owner + +- consensus + + boolean set to true if this is a consensus or voting item (default false) + +- nocomment + + boolean set to true if comments are to be disabled (default false) + +- origin + + do not use this without reading the code + +- namespace + + persistent identity for a remote network or service + +- remote_id + + message_id of this resource on a remote network or service + +- message_id + + message_id of this item (leave unset to generate one) + +- created + + datetime of message creation + +- post_id + + existing item.id if this is an edit operation + +- app + + application or network name to display with item + +- categories + + comma separated categories for this item + +- webpage + + item.page_type if not 0 + +- pagetitle + + for webpage and design elements, the 'page name' + +- layout_mid + + item.mid of layout for this design element + +- plink + + permalink for this item if different than the default + +- verb + + activitystream verb for this item/activity + +- obj_type + + activitystream object type for this item/activity + + + +Example: + + curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" + + +Returns: + +[code nowrap] + { + + "success": true, + "item_id": "2245", + "item": { + "id": "2245", + "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "aid": "1", + "uid": "2", + "parent": "2245", + "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "created": "2016-12-03 20:00:12", + "edited": "2016-12-03 20:00:12", + "expires": "0001-01-01 00:00:00", + "commented": "2016-12-03 20:00:12", + "received": "2016-12-03 20:00:12", + "changed": "2016-12-03 20:00:12", + "comments_closed": "0001-01-01 00:00:00", + "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "source_xchan": "", + "mimetype": "text/bbcode", + "title": "", + "body": "hello world", + "html": "", + "app": "", + "lang": "", + "revision": "0", + "verb": "http://activitystrea.ms/schema/1.0/post", + "obj_type": "http://activitystrea.ms/schema/1.0/note", + "obj": "", + "tgt_type": "", + "target": "", + "layout_mid": "", + "postopts": "", + "route": "", + "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "resource_id": "", + "resource_type": "", + "attach": "", + "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", + "diaspora_meta": "", + "location": "", + "coord": "", + "public_policy": "", + "comment_policy": "contacts", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "item_restrict": "0", + "item_flags": "0", + "item_private": "0", + "item_origin": "1", + "item_unseen": "0", + "item_starred": "0", + "item_uplink": "0", + "item_consensus": "0", + "item_wall": "1", + "item_thread_top": "1", + "item_notshown": "0", + "item_nsfw": "0", + "item_relay": "0", + "item_mentionsme": "0", + "item_nocomment": "0", + "item_obscured": "0", + "item_verified": "1", + "item_retained": "0", + "item_rss": "0", + "item_deleted": "0", + "item_type": "0", + "item_hidden": "0", + "item_unpublished": "0", + "item_delayed": "0", + "item_pending_remove": "0", + "item_blocked": "0" + } + + } +[/code] +[h3]item/full[/h3] + + +Get all data associated with an item + +[h3]abook[/h3] + + +Connections + +[h3]abconfig[/h3] + + +Connection metadata (such as permissions) + +[h3]perm_allowed[/h3] + + +Check a permission for a given xchan diff --git a/doc/developer/developer_guide.md b/doc/developer/developer_guide.md new file mode 100644 index 000000000..fa50de8a1 --- /dev/null +++ b/doc/developer/developer_guide.md @@ -0,0 +1,422 @@ +### Who is a Hubzilla developer? Should I read this? + +Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, _even if you do not know how to write code_. The software itself is only a part of the Hubzilla project. You can contribute by + +* translating text to your language so that people around the world have the opportunity to use Hubzilla +* promoting Hubzilla and spreading awareness of the platform through blog posts, articles, and word-of-mouth +* creating artwork and graphics for project assets such as icons and marketing material +* supporting project infrastructure like the project website and demo servers + +_Software_ developers are of course welcomed; there are so many great ideas to implement and not enough people to make them all a reality! The Hubzilla code base is an advanced and mature system, but the platform is still very flexible and responsive to new ideas. + +This document will help you get started learning and contributing to Hubzilla. + +### Versioning system + +The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control. + +### Git repository branches + +There are two official branches of the Hubzilla git repo. + +* The stable version is maintained on the **master** branch. The latest commit in this branch is considered to be suitable for production hubs. +* Experimental development occurs on the **dev** branch, which is merged into **master** when it is deemed tested and stable enough. + +### Developer tools and workflows + +#### Hub Snapshots + +The [hub snapshots](/help/admin/hub_snapshots) page provides instructions and scripts for taking complete +snapshots of a hub to support switching between consistent and completely known +states. This is useful to prevent situations where the content or database schema +might be incompatible with the code. + +### Translations + +Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit [https://www.transifex.com/projects/p/red-matrix/](https://www.transifex.com/projects/p/red-matrix/) and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. + +#### Translation Process + +The strings used in the UI of Hubzilla is translated at [Transifex][1] and then +included in the git repository at github. If you want to help with translation +for any language, be it correcting terms or translating Hubzilla to a +currently not supported language, please register an account at transifex.com +and contact the Redmatrix translation team there. + +Translating Hubzilla is simple. Just use the online tool at transifex. If you +don't want to deal with git & co. that is fine, we check the status of the +translations regularly and import them into the source tree at github so that +others can use them. + +We do not include every translation from transifex in the source tree to avoid +a scattered and disturbed overall experience. As an uneducated guess we have a +lower limit of 50% translated strings before we include the language. This +limit is judging only by the amount of translated strings under the assumption +that the most prominent strings for the UI will be translated first by a +translation team. If you feel your translation useable before this limit, +please contact us and we will probably include your teams work in the source +tree. + +If you want to get your work into the source tree yourself, feel free to do so +and contact us with and question that arises. The process is simple and +Hubzilla ships with all the tools necessary. + +The location of the translated files in the source tree is + /view/LNG-CODE/ +where LNG-CODE is the language code used, e.g. de for German or fr for French. +For the email templates (the *.tpl files) just place them into the directory +and you are done. The translated strings come as a "hmessages.po" file from +transifex which needs to be translated into the PHP file Hubzilla uses. To do +so, place the file in the directory mentioned above and use the "po2php" +utility from the util directory of your Hubzilla installation. + +Assuming you want to convert the German localization which is placed in +view/de/hmessages.po you would do the following. + +1. Navigate at the command prompt to the base directory of your + Hubzilla installation + +2. Execute the po2php script, which will place the translation + in the hstrings.php file that is used by Hubzilla. + + $> php util/po2php.php view/de/hmessages.po + + The output of the script will be placed at view/de/hstrings.php where + froemdoca os expecting it, so you can test your translation mmediately. + +3. Visit your Hubzilla page to check if it still works in the language you + just translated. If not try to find the error, most likely PHP will give + you a hint in the log/warnings.about the error. + + For debugging you can also try to "run" the file with PHP. This should + not give any output if the file is ok but might give a hint for + searching the bug in the file. + + $> php view/de/hstrings.php + +4. commit the two files with a meaningful commit message to your git + repository, push it to your fork of the Hubzilla repository at github and + issue a pull request for that commit. + +#### Utilities + +Additional to the po2php script there are some more utilities for translation +in the "util" directory of the Hubzilla source tree. If you only want to +translate Hubzilla into another language you wont need any of these tools most +likely but it gives you an idea how the translation process of Hubzilla +works. + +For further information see the utils/README file. + +#### Known Problems + +* Hubzilla uses the language setting of the visitors browser to determain the + language for the UI. Most of the time this works, but there are some known + quirks. +* the early translations are based on the friendica translations, if you + some rough translations please let us know or fix them at Transifex. + +### To-be-organized information + +**Here is how you can join us.** + +First, get yourself a working git package on the system where you will be +doing development. + +Create your own github account. + +You may fork/clone the Red repository from [https://github.com/redmatrix/hubzilla.git](https://github.com/redmatrix/hubzilla.git). + +Follow the instructions provided here: [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/) +to create and use your own tracking fork on github + +Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work. + + +**Important** + +Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. + +Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. + + +**Licensing** + +All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. + +**Coding Style** + +In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. + +* All comments should be in English. + +* We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. + +* Indentation is accomplished primarily with tabs using a tab-width of 4. + +* String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" + +* Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. + +* Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. + +* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. + + +**File system layout:** + +[addon] optional addons/plugins + +[boot.php] Every process uses this to bootstrap the application structure + +[doc] Help Files + +[images] core required images + +[include] The "model" in MVC - (back-end functions), also contains PHP "executables" for background processing + +[index.php] The front-end controller for web access + +[install] Installation and upgrade files and DB schema + +[library] Third party modules (must be license compatible) + +[mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php) + +[mod/site/] site-specific mod overrides, excluded from git + +[util] translation tools, main English string database and other miscellaneous utilities + +[version.inc] contains current version (auto-updated via cron for the master repository and distributed via git) + +[view] theming and language files + +[view/(css,js,img,php,tpl)] default theme files + +[view/(en,it,es ...)] language strings and resources + +[view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides + +**The Database:** + + +| Table | Description | +|-------------------------|--------------------------------------------------------| +| abconfig | contact table, replaces Friendica 'contact' | +| abook | | +| account | service provider account | +| addon | | +| addressbookchanges | | +| addressbooks | | +| app | | +| atoken | | +| attach | | +| auth_codes | | +| cache | | +| cal | | +| calendarchanges | | +| calendarinstances | | +| calendarobjects | | +| calendars | | +| calendarsubscriptions | | +| cards | | +| channel | | +| chat | | +| chatpresence | | +| chatroom | | +| clients | | +| config | | +| conv | | +| dreport | | +| event | | +| group_member | | +| groupmembers | | +| groups | | +| hook | | +| hubloc | | +| iconfig | | +| issue | | +| item | | +| item_id | | +| likes | | +| locks | | +| mail | | +| menu | | +| menu_item | | +| notify | | +| obj | | +| outq | | +| pconfig | personal (per channel) configuration storage | +| photo | | +| poll | | +| poll_elm | | +| principals | | +| profdef | | +| profext | | +| profile | | +| profile_check | | +| propertystorage | | +| register | | +| schedulingobjects | | +| session | | +| shares | | +| sign | | +| site | | +| source | | +| sys_perms | | +| term | | +| tokens | | +| updates | | +| users | | +| verify | | +| vote | | +| xchan | | +| xchat | | +| xconfig | | +| xign | | +| xlink | | +| xperm | | +| xprof | | +| xtag | | + + + * abook - contact table, replaces Friendica 'contact' + * account - service provider account + * addon - registered plugins + * app - peronal app data + * attach - file attachments + * auth_codes - OAuth usage + * cache - OEmbed cache + * channel - replaces Friendica 'user' + * chat - chat room content + * chatpresence - channel presence information for chat + * chatroom - data for the actual chat room + * clients - OAuth usage + * config - main configuration storage + * conv - Diaspora private messages + * event - Events + * fcontact - friend suggestion stuff + * ffinder - friend suggestion stuff + * fserver - obsolete + * fsuggest - friend suggestion stuff + * groups - privacy groups + * group_member - privacy groups + * hook - plugin hook registry + * hubloc - Red location storage, ties a location to an xchan + * item - posts + * item_id - other identifiers on other services for posts + * likes - likes of 'things' + * mail - private messages + * menu - channel menu data + * menu_item - items uses by channel menus + * notify - notifications + * notify-threads - need to factor this out and use item thread info on notifications + * obj - object data for things (x has y) + * outq - output queue + * pconfig - personal (per channel) configuration storage + * photo - photo storage + * poll - data for polls + * poll_elm - data for poll elements + * profdef - custom profile field definitions + * profext - custom profile field data + * profile - channel profiles + * profile_check - DFRN remote auth use, may be obsolete + * register - registrations requiring admin approval + * session - web session storage + * shares - shared item information + * sign - Diaspora signatures. To be phased out. + * site - site table to find directory peers + * source - channel sources data + * spam - unfinished + * sys_perms - extensible permissions for the sys channel + * term - item taxonomy (categories, tags, etc.) table + * tokens - OAuth usage + * updates - directory sync updates + * verify - general purpose verification structure + * vote - vote data for polls + * xchan - replaces 'gcontact', list of known channels in the universe + * xchat - bookmarked chat rooms + * xconfig - as pconfig but for channels with no local account + * xlink - "friends of friends" linkages derived from poco + * xprof - if this hub is a directory server, contains basic public profile info of everybody in the network + * xtag - if this hub is a directory server, contains tags or interests of everybody in the network + + +**How to theme Hubzilla** + +This is a short documentation on what I found while trying to modify Hubzilla's appearance. + +First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it . + +Oh, and don't forget to rename the _init function in /php/theme.php to be _init() instead of redbasic_init(). + +At that point, if you need to add javascript or css files, add them to /js or /css, and then "register" them in _init() through head_add_js('file.js') and head_add_css('file.css'). + +Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory. + + +We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine. + +**Here is how you can join us.** + +First, get yourself a working git package on the system where you will be +doing development. + +Create your own github account. + +You may fork/clone the Red repository from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] + +Follow the instructions provided here: [url=http://help.github.com/fork-a-repo/]http://help.github.com/fork-a-repo/[/url] +to create and use your own tracking fork on github + +Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work. + +**Translations** + +Our translations are managed through Transifex. If you wish to help out translating the $Projectname to another language, sign up on transifex.com, visit [url=https://www.transifex.com/projects/p/red-matrix/]https://www.transifex.com/projects/p/red-matrix/[/url] and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. + + +**Important** + +Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. + +Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. + +Further documentation can be found at the Github wiki pages at: [url=https://github.com/friendica/red/wiki]https://github.com/friendica/red/wiki[/url] + +**Licensing** + +All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. + +**Concensus Building** + +Code changes which fix an obvious bug are pretty straight-forward. For instance if you click "Save" and the thing you're trying to save isn't saved, it's fairly obvious what the intended behaviour should be. Often when developing feature requests, it may affect large numbers of community members and it's possible that other members of the community won't agree with the need for the feature, or with your proposed implementation. They may not see something as a bug or a desirable feature. + +We encourage consensus building within the community when it comes to any feature which might be considered controversial or where there isn't unanimous decision that the proposed feature is the correct way to accomplish the task. The first place to pitch your ideas is to [url=https://zothub.com/channel/one]Channel One[/url]. Others may have some input or be able to point out facets of your concept which might be problematic in our environment. But also, you may encounter opposition to your plan. This doesn't mean you should stop and/or ignore the feature. Listen to the concerns of others and try and work through any implementation issues. + +There are places where opposition cannot be resolved. In these cases, please consider making your feature **optional** or non-default behaviour that must be specifically enabled. This technique can often be used when a feature has significant but less than unanimous support. Those who desire the feature can turn it on and those who don't want it - will leave it turned off. + +If a feature uses other networks or websites and or is only seen as desirable by a small minority of the community, consider making the functionality available via an addon or plugin. Once again, those who don't desire the feature won't need to install it. Plugins are relatively easy to create and "hooks" can be easily added or modified if the current hooks do not do what is needed to allow your plugin to work. + + +**Coding Style** + +In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. + +* All comments should be in English. + +* We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. + +* Indentation is accomplished primarily with tabs using a tab-width of 4. + +* String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" + +* Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. + +* Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. + +* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. + +* Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home".
\ No newline at end of file diff --git a/doc/zot.md b/doc/developer/zot_protocol.bb index 06c4d6083..b87e1cd73 100644 --- a/doc/zot.md +++ b/doc/developer/zot_protocol.bb @@ -1,34 +1,57 @@ -Intro to Zot -============ +[h3] What is Zot?[/h3] +Zot is the revolutionary protocol that powers $Projectname, providing [b]communications[/b], [b]identity management[/b], and [b]access control[/b] across a fully [b]decentralised[/b] network of independent websites, often called "the grid". The resulting platform is a robust system that supports privacy and security while enabling the kind of rich web services typically seen only in centralized, proprietary solutions. -Zot is a JSON-based web framework for implementing secure decentralised communications and services. +Consider this typical scenario: -It differs from many other communication protocols by building communications on top of a decentralised identity and authentication framework. +Jaquelina wishes to share photos with Roberto from her blog at [b]jaquelina.org[/b], but to nobody else. Roberto maintains his own family hub at [b]roberto.net[/b] on a completely independent server. Zot allows Jaquelina to publish her photos using an [i]access control list (ACL)[/i] that includes only Roberto. That means that while Roberto can see the photos when he visits her blog, his brother Marco cannot, and neither can any of his other family members who have accounts on [b]roberto.net[/b]. -The authentication component is similar to OpenID conceptually but is insulated from DNS-based identities. Where possible remote authentication is silent and invisible. This provides a mechanism for internet scale distributed access control which is unobtrusive. +The magic in this scenario comes from the fact that Roberto never logged in to Jaquelina's website. Instead, he had to login only once using his password on his [i]own[/i] website at [b]roberto.net[/b]. When Roberto visits [b]jaquelina.org[/b], her hub seamlessly authenticates him by remotely querying his server in the background. -For example, +It is not uncommon for servers to have technical problems or become inaccessible for a variety of reasons. Zot provides robustness for Roberto's online activities by allowing him to have [i]clones[/i] of his online identity, or [i]channel[/i], on multiple independent hubs. Imagine that Roberto's server crashes for some reason and he cannot log in there. He simply logs in to one of his clones at [b]gadfly.com[/b], a site operated by his friend Peter. Once authenticated at [b]gadfly.com[/b], Roberto can view Jaquelina's blog as before, without Jaquelina having to grant any additional access! -Jaquelina wishes to share photos with Roberto from her blog at "jaquelina.com.xyz", but to nobody else. Roberto maintains his own family website at "roberto.com.xyz". Zot allows Jaquelina to create an access list containing "Roberto" and allow Roberto unhindered access to the photos but without allowing Roberto's brother Marco to see the photos. +[h4] Communications[/h4] +Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers. -Roberto will only login once to his own website at roberto.com.xyz using his password. After this, no further passwords will be asked for. Marco may also have an account on roberto.com.xyz, but he is not allowed to see Jaquelina's photos. +Zot supports a wide array of background services in the grid, from friend suggestions to directory services. New content and data updates are propagated in the background between hubs across the grid according to access control lists and permissions specified by both sender [i]and[/i] receiver channels. Data is also synchronized between an arbitrary number of channel clones, allowing hub members to access data and continue collaborating seamlessly in the event that their primary hub is inaccessible or offline. +[h4] Identity [/h4] +Zot's identity layer is unique. It provides [b]invisible single sign-on[/b] across all sites in the grid. -Additionally, zot allows Roberto to use another site - gadfly.com.xyz, and after login to gadfly.com.xyz he can also access Jaquelina's private photos. Jaquelina does not have to do anything extra to allow this, as she has already given access rights of her private photos to Roberto - no matter what site he is logged into. +It also provides [b]nomadic identity[/b], so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently. -Zot also allows basic messaging and communications with anybody else on the Zot network. +The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact. -In order to provide this functionality, zot creates a decentralised globally unique identifier for each node on the network. This global identifier is not linked inextricably to DNS, providing the requisite mobility. Many existing decentralised communications frameworks provide the communication aspect, but do not provide remote access control and authentication. Additionally most of these are based on 'webfinger' such that in our example, Roberto would only be recognised if he accessed Jaquelina's photos from roberto.com.xyz - but not from gadfly.com.xyz. +Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship. +Nomadic identity, single sign-on, and $Projectname's decentralisation of hubs, we believe, introduce a high degree of degree of [b]resiliency[/b] and [b]persistence[/b] in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship. -The primary issues zot addresses are +As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit. -* completely decentralised communications -* insulation from DNS based identity -* node mobility -* invisible or reduced "interaction" remote authentication -* high performance +How does Zot do that? We call it [b]magic-auth[/b], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and login names for every different sight that someone might visit online. You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. Your password isn't stored on a thousand different sites; it is stored on servers that you control or that you have chosen to trust. +You cannot be silenced. You cannot be removed from the grid unless you yourself choose to exit it. + +[h4] Access Control[/h4] +Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across the grid. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create. + +Currently, $Projectname supports access control for many types of data, including post/comment discussion threads, photo albums, events, cloud files, web pages, wikis, and more. Every object and how it is shared and with whom is completely under your control. + +This type of control is trivial on large corporate providers because they own the user database. Within the grid, there is no need for a huge user database on your machine - because the grid [b]is[/b] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. + +Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. + +[h3]Technical Introduction[/h3] +Zot is a JSON-based web framework for implementing secure decentralised communications and services. In order to provide this functionality, Zot creates a decentralised globally unique identifier for each hub on the network. This global identifier is not linked inextricably to DNS, providing the requisite mobility. Many existing decentralised communications frameworks provide the communication aspect, but do not provide remote access control and authentication. Additionally most of these are based on 'webfinger', which still binds identity to domain names and cannot support nomadic identity. + +The primary issues Zot addresses are + +[list] +[*] completely decentralised communications +[*] independence from DNS-based identity +[*] node mobility +[*] seamless remote authentication +[*] high performance +[/list] We will rely on DNS-based user@host addresses as a "user-friendly" mechanism to let people know where you are, specifically on a named host with a given username, and communication will be carried out to DNS entities using TCP and the web. But the underlying protocol will provide an abstraction layer on top of this, so that a communications node (e.g. "identity") can move to an alternate DNS location and (to the best of our ability) gracefully recover from site re-locations and/or maintain pre-existing communication relationships. A side effect of this requirement is the ability to communicate from alternate/multiple DNS locations and service providers and yet maintain a single online identity. @@ -41,19 +64,20 @@ The ability to recover will be accomplished by communication to the original loc At least on the short term, the mobility of existing content is not a top priority. This may or may not take place at a later stage. The most important things we want to keep are your identity and your friends. -Addresses which are shared amongst people are user@host, and which describe the **current** local account credentials for a given identity. These are DNS based addresses and used as a seed to locate a given identity within the grid. The machine communications will bind this address to a globally unique ID. A single globally unique ID may be attached or bound to any number of DNS locations. Once an identity has been mapped or bound to a DNS location, communications will consist of just knowing the globally unique address, and what DNS (url) is being used currently (in order to call back and verify/complete the current communication). These concepts will be specified in better detail. +Addresses which are shared amongst people are user@host, and which describe the [b]current[/b] local account credentials for a given identity. These are DNS based addresses and used as a seed to locate a given identity within the grid. The machine communications will bind this address to a globally unique ID. A single globally unique ID may be attached or bound to any number of DNS locations. Once an identity has been mapped or bound to a DNS location, communications will consist of just knowing the globally unique address, and what DNS (url) is being used currently (in order to call back and verify/complete the current communication). These concepts will be specified in better detail. In order for an identity to persist across locations, one must be able to provide or recover -* the globally unique ID for that identity -* the private key assigned to that identity -* (if the original server no longer exists) an address book of contacts for that identity. - +[list] +[*] the globally unique ID for that identity +[*] the private key assigned to that identity +[*] (if the original server no longer exists) an address book of contacts for that identity. +[/list] This information will be exportable from the original server via API, and/or downloadable to disk or thumb-drive. We may also attempt to recover with even less information, but doing so is prone to account hijacking and will require that your contacts confirm the change. -In order to implement high performance communications, the data transfer format for all aspects of zot is JSON. XML communications require way too much overhead. +In order to implement high performance communications, the data transfer format for all aspects of Zot is JSON. XML communications require way too much overhead. Bi-directional encryption is based on RSA 4096-bit keys expressed in DER/ASN.1 format using the PKCS#8 encoding variant, with AES-256-CBC used for block encryption of variable length or large items. @@ -72,57 +96,57 @@ We must also provide the ability to change the primary to a new location. A look In order to map a zot_uid to a second (or tertiary) location, we require a secure exchange which verifies that the new location is in possession of the private key for this zot_uid. Security of the private key is thus essential to avoid hijacking of identities. Communications will then require - -* zot_uid (string) -* uid_sig -* callback (current location zot endpoint url) -* callback_sig -* spec (int) - -passed with every communique. The spec is a revision number of the applicable zot spec so that communications can be maintained with hubs using older and perhaps incompatible protocol specifications. Communications are verified using a stored public key which was copied when the connection to this zot_uid was first established. +[list] +[*] zot_uid (string) +[*] uid_sig +[*] callback (current location Zot endpoint url) +[*] callback_sig +[*] spec (int) +[/list] +passed with every communique. The spec is a revision number of the applicable Zot spec so that communications can be maintained with hubs using older and perhaps incompatible protocol specifications. Communications are verified using a stored public key which was copied when the connection to this zot_uid was first established. Key revocation and replacement must take place from the primary hub. The exact form for this is still being worked out, but will likely be a notification to all other bound hubs to "phone home" (to the primary hub) and request a copy of the new key. This communique should be verified using a site or hub key; as the original identity key may have been compromised and cannot be trusted. In order to eliminate confusion, there should be exactly one canonical url for any hub, so that these can be indexed and referenced without ambiguity. -So as to avoid ambiguity of scheme, it is strongly encouraged that all addresses to be https with a "browser valid" cert and a single valid host component (either www.domain.ext or domain.ext, but not both), which is used in all communications. Multiple URLs may be provided locally, but only one unique URL should be used for all zot communications within the grid. +So as to avoid ambiguity of scheme, it is strongly encouraged that all addresses to be https with a "browser valid" cert and a single valid host component (either www.domain.ext or domain.ext, but not both), which is used in all communications. Multiple URLs may be provided locally, but only one unique URL should be used for all Zot communications within the grid. Test installation which do not connect to the public grid may use non-SSL, but all traffic flowing over public networks should be safe from session-hijacking, preferably with a "browser recognised" cert. -Where possible, zot encourages the use of "batching" to minimise network traffic between two hubs. This means that site 'A' can send multiple messages to site 'B' in a single transaction, and also consolidate deliveries of identical messages to multiple recipients on the same hub. +Where possible, Zot encourages the use of "batching" to minimise network traffic between two hubs. This means that site 'A' can send multiple messages to site 'B' in a single transaction, and also consolidate deliveries of identical messages to multiple recipients on the same hub. Messages themselves may or may not be encrypted in transit, depending on the private nature of the messages. SSL (strongly encouraged) provides unconditional encryption of the data stream, however there is little point in encrypting public communications which have been designated as having unrestricted visibility. The encryption of data storage and so-called "end-to-end encryption" is outside the scope of zot. It is presumed that hub operators will take adequate safeguards to ensure the security of their data stores and these are functions of application and site integrity as opposed to protocol integrity. -## Messages +[h4]Messages[/h4] -Given the constraints listed previously, a zot communique should therefore be a json array of individual messages. These can be mixed and combined within the same transmission. +Given the constraints listed previously, a Zot communique should therefore be a json array of individual messages. These can be mixed and combined within the same transmission. Each message then requires: - -* type -* (optional) recipient list - +[list] +[*] type +[*] (optional) recipient list +[/list] Lack of a recipient list would indicate an unencrypted public or site level message. The recipient list would contain an array of zot_uid with an individual decryption key, and a common iv. The decryption key is encoded with the recipient identity's public key. The iv is encrypted with the sender's private key. All messages should be digitally signed by the sender. The type can be one of (this list is extensible): - -* post (or activity) -* mail -* identity -* authenticate - +[list] +[*] post (or activity) +[*] mail +[*] identity +[*] authenticate +[/list] Identity messages have no recipients and notify the system social graph of an identity update, which could be a new or deleted identity, a new or deleted location, or a change in primary hub. The signature for these messages uses system keys as opposed to identity-specific keys. Posts include many different types of activities, such as top-level posts, likes/dislikes, comments, tagging activities, etc. These types are indicated within the message sturcture. authenticate messages result in mutual authentication and browser redirect to protected resources on the remote hub such as the ability to post wall-to-wall messages and view private photo albums and events, etc. -## Discovery +[h4]Discovery[/h4] -A well-known url is used to probe a hub for zot capabilities and identity lookups, including the discovery of public keys, profile locations, profile photos, and primary hub location. +A well-known url is used to probe a hub for Zot capabilities and identity lookups, including the discovery of public keys, profile locations, profile photos, and primary hub location. The location for this service is /.well-known/zot-info - and must be available at the root of the chosen domain. @@ -134,19 +158,19 @@ address => an address on the target system such as "john" Optional -target => the zot "guid" of the observer for evaluating permissions +target => the Zot "guid" of the observer for evaluating permissions target_sig => an RSA signature (base64url encoded) of the guid key => The public key needed to verify the signature -token => a string (possibly random) chosen by the requesting service. If provided, an entry in the discovered packet will be provided called 'signed_token' which consists of the base64url_encoded RSA signature of the concatenation of the string 'token.' and the provided token using the private key of the discovered channel. This can be verified using the provided 'key' entry, and provides assurance that the server is in possession of the private key for the discovered identity. After 2017-01-01 it is **required** that a server provide a signed_token *if* a token was provided in the request. +token => a string (possibly random) chosen by the requesting service. If provided, an entry in the discovered packet will be provided called 'signed_token' which consists of the base64url_encoded RSA signature of the concatenation of the string 'token.' and the provided token using the private key of the discovered channel. This can be verified using the provided 'key' entry, and provides assurance that the server is in possession of the private key for the discovered identity. After 2017-01-01 it is [b]required[/b] that a server provide a signed_token [i]if[/i] a token was provided in the request. With no target provided, the permissions returned will be generic permissions for unknown or unauthenticated observers Example of discovery packet for 'mike@zothub.com' - +[code nowrap] { "success": true, @@ -213,7 +237,7 @@ Example of discovery packet for 'mike@zothub.com' } } - +[/code] Discovery returns a JSON array with the following components: @@ -250,74 +274,50 @@ Discovery returns a JSON array with the following components: 'searchable' => ('1' or '') '1' indicates this entry can be searched in a directory -###Permissions +[h5]Permissions[/h5] 'permisssions' => extensible array of permissions appropriate to this target, values are '1' or '' Permissions may include: - -* view_stream - -* view_profile - -* view_photos - -* view_contacts - -* view_storage - -* view_pages - -* send_stream - -* post_wall - -* post_comments - -* post_mail - -* post_photos - -* tag_deliver - -* chat - -* write_storage - -* write_pages - -* delegate - - - -###Profile +[list] +[*] view_stream +[*] view_profile +[*] view_photos +[*] view_contacts +[*] view_storage +[*] view_pages +[*] send_stream +[*] post_wall +[*] post_comments +[*] post_mail +[*] post_photos +[*] tag_deliver +[*] chat +[*] write_storage +[*] write_pages +[*] delegate +[/list] + + +[h5]Profile[/h5] 'profile' => array of important profile fields - -* description - -* birthday YYYY-MM-DD , all fields are optional, any field (such as year) may be zero - -* next_birthday => MySQL datetime string representing the next upcoming birthday, converted from the channel's default timezone to UTC. - -* gender (free form) - -* marital (marital status) - -* sexual (preference) - -* locale (city) - -* region (state) - -* postcode - -* country - - -###Locations +[list] +[*] description +[*] birthday YYYY-MM-DD , all fields are optional, any field (such as year) may be zero +[*] next_birthday => MySQL datetime string representing the next upcoming birthday, converted from the channel's default timezone to UTC. +[*] gender (free form) +[*] marital (marital status) +[*] sexual (preference) +[*] locale (city) +[*] region (state) +[*] postcode +[*] country +[/list] + +[h5]Locations[/h5] 'locations' => array of registered locations (DNS locations) this channel may be visible or may be posting from @@ -334,12 +334,12 @@ Each location is an array of 'url_sig' => base64url encoded RSA signature of the URL, signed with the channel private key -'callback' => zot communications endpoint on this site, usually https://example.com/post +'callback' => Zot communications endpoint on this site, usually https://example.com/post 'sitekey' => public key of this site/host -###Site +[h5]Site[/h5] 'site' => array providing the directory role of the site responding to this request @@ -352,26 +352,24 @@ Each location is an array of -Magic Auth -========== - +[h3]Magic Auth[/h3] -So-called "magic auth" takes place by a special exchange. On the remote computer, a redirection is made to the zot endpoint with special GET parameters. +So-called "magic auth" takes place by a special exchange. On the remote computer, a redirection is made to the Zot endpoint with special GET parameters. Endpoint: https://example.com/post/name where 'name' is the left hand side of the channel webbie, for instance 'mike' where the webbie is 'mike@zothub.com' Additionally four parameters are supplied: - -* auth => the webbie of the person requesting access -* dest => the desired destination URL (urlencoded) -* sec => a random string which is also stored locally for use during the verification phase. -* version => the zot revision - -When this packet is received, a zot message is initiated to the auth identity: - - +[list] +[*] auth => the webbie of the person requesting access +[*] dest => the desired destination URL (urlencoded) +[*] sec => a random string which is also stored locally for use during the verification phase. +[*] version => the Zot revision +[/list] +When this packet is received, a Zot message is initiated to the auth identity: + +[code nowrap] { "type":"auth_check", "sender":{ @@ -391,15 +389,91 @@ When this packet is received, a zot message is initiated to the auth identity: "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467", "secret_sig":"eKV968b1sDkOVdSMi0tLRtOhQw4otA8yFKaVg6cA4I46_zlAQGbFptS-ODiZlSAqR7RiiZQv4E2uXCKar52dHo0vvNKbpOp_ezWYcwKRu1shvAlYytsflH5acnDWL-FKOOgz5zqLLZ6cKXFMoR1VJGG_Od-DKjSwajyV9uVzTry58Hz_w0W2pjxwQ-Xv11rab5R2O4kKSW77YzPG2R5E6Q7HN38FrLtyWD_ai3K9wlsFOpwdYC064dk66X7BZtcIbKtM6zKwMywcfJzvS5_0U5yc5GGbIY_lY6SViSfx9shOKyxkEKHfS29Ynk9ATYGnwO-jnlMqkJC7t149H-sI9hYWMkLuCzaeLP56k2B2TmtnYvE_vHNQjzVhTwuHCIRVr-p6nplQn_P3SkOpYqPi3k_tnnOLa2d3Wtga8ClEY90oLWFJC3j2UkBf_VEOBNcg-t5XO3T-j9O4Sbk96k1Qoalc-QlznbGx4bOVsGkRBBMiH4YUqiiWB_OkFHtdqv7dqGeC-u-B4u9IxzYst46vvmyA3O-Q4APSZ1RY8ITUH0jLTbh6EAV7Oki8pIbOg0t56p-8RlanOZqmFvR-grVSc7Ak1ZcD8NACmvidUpa1B7WEvRcOeffx9lype0bt5XenDnMyx6szevwxZIiM8qGM2lsSk4fu8HI9cW0mLywzZT0" } - +[/code] auth_check messages MUST be encrypted with AES256CBC. This message is sent to the origination site, which checks the 'secret' to see if it is the same as the 'sec' which it passed originally. It also checks the secret_sig which is the secret signed by the destination channel's private key and base64url encoded. If everything checks out, a json packet is returned: - +[code nowrap] { "success":1, "confirm":"q0Ysovd1uQRsur2xG9Tg6bC23ynzw0191SkVd7CJcYoaePy6e_v0vnmPg2xBUtIaHpx_aSuhgAkd3aVjPeaVBmts6aakT6a_yAEy7l2rBydntu2tvrHhoVqRNOmw0Q1tI6hwobk1BgK9Pm0lwOeAo8Q98BqIJxf47yO9pATa0wktOg6a7LMogC2zkkhwOV5oEqjJfeHeo27TiHr1e2WaphfCusjmk27V_FAYTzw05HvW4SPCx55EeeTJYIwDfQwjLfP4aKV-I8HQCINt-2yxJvzH7Izy9AW-7rYU0Il_gW5hrhIS5MTM12GBXLVs2Ij1CCLXIs4cO0x6e8KEIKwIjf7iAu60JPmnb_fx4QgBlF2HLw9vXMwZokor8yktESoGl1nvf5VV5GHWSIKAur3KPS2Tb0ekNh-tIk9u-xob4d9eIf6tge_d3aq1LcAtrDBDLk8AD0bho5zrVuTmZ9k-lBVPr_DRHSV_dlpu088j3ThaBsuV1olHK3vLFRhYCDIO0CqqK5IuhqtRNnRaqhlNN6fQUHpXk2SwHiJ2W36RCYMTnno6ezFk_tN-RA2ly-FomNZoC5FPA9gFwoJR7ZmVFDmUeK3bW-zYTA5vu15lpBPnt7Up_5rZKkr0WQVbhWJmylqOuwuNWbn3SrMQ8rYFZ23Tv300cOfKVgRBaePWQb4" } - +[/code] 'confirm' in this case is the base64url encoded RSA signature of the concatenation of 'secret' with the base64url encoded whirlpool hash of the source guid and guid_sig; signed with the source channel private key. This prevents a man-in-the-middle from inserting a rogue success packet. Upon receipt and successful verification of this packet, the destination site will redirect to the original destination URL and indicate a successful remote login. - -#include doc/macros/main_footer.bb; + +[h3]Zot Structures[/h3] +[h4]Zot Signatures[/h4] +All signed data in Zot is accomplished by performing an RSA sign operation using the private key of the initiator. The binary result is then base64url encoded for transport. +[h4]Zot Encryption[/h4] +Encryption is currently provided by AES256-CBC, the Advanced Encryption Standard using 256-bit keys and the Cipher Block Chaining mode of operation. Additional algorithms MAY be supported. A 32-octet key and 16-octet initialisation vector are randomly generated. The desired data is then encrypted using these generated strings and the result base64url encoded. Then we build an array: + +[dl terms="b"] +[*= data]The base64url encoded encrypted data +[*= alg]The chosen algorithm, in this case the string 'aes256cbc'. +[*= key]The randomly generated key, RSA encrypted using the recipients public key, and the result base64url encoded +[*= iv]The randomly generated initialization vector, RSA encrypted using the recipient's public key, and the result base64url encoded +[/dl] + +[h4]Basic Zot Packet[/h4] +Used for initiating a dialogue with another Zot site. This packet MAY be encrypted. The presence of an array element 'iv' indicates encryption has been applied. When sending an 'auth_check' packet type, this packet MUST be encrypted, using the public key of the destination site (the site key, as opposed to a sender key). + +[code nowrap] + { + "type":"notify", + "sender":{ + "guid":"kgVFf_1_SSbyqH-BNWjWuhAvJ2EhQBTUdw-Q1LwwssAntr8KTBgBSzNVzUm9_RwuDpxI6X8me_QQhZMf7RfjdA", + "guid_sig":"PT9-TApzpm7QtMxC63MjtdK2nUyxNI0tUoWlOYTFGke3kNdtxSzSvDV4uzq_7SSBtlrNnVMAFx2_1FDgyKawmqVtRPmT7QSXrKOL2oPzL8Hu_nnVVTs_0YOLQJJ0GYACOOK-R5874WuXLEept5-KYg0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q", + "url":"http:\/\/podunk.edu", + "url_sig":"T8Bp7j5DHHhQDCFcAHXfuhUfGk2P3inPbImwaXXF1xJd3TGgluoXyyKDx6WDm07x0hqbupoAoZB1qBP3_WfvWiJVAK4N1FD77EOYttUEHZ7L43xy5PCpojJQmkppGbPJc2jnTIc_F1vvGvw5fv8gBWZvPqTdb6LWF6FLrzwesZpi7j2rsioZ3wyUkqb5TDZaNNeWQrIEYXrEnWkRI_qTSOzx0dRTsGO6SpU1fPWuOOYMZG8Nh18nay0kLpxReuHCiCdxjXRVvk5k9rkcMbDBJcBovhiSioPKv_yJxcZVBATw3z3TTE95kGi4wxCEenxwhSpvouwa5b0hT7NS4Ay70QaxoKiLb3ZjhZaUUn4igCyZM0h6fllR5I6J_sAQxiMYD0v5ouIlb0u8YVMni93j3zlqMWdDUZ4WgTI7NNbo8ug9NQDHd92TPmSE1TytPTgya3tsFMzwyq0LZ0b-g-zSXWIES__jKQ7vAtIs9EwlPxqJXEDDniZ2AJ6biXRYgE2Kd6W_nmI7w31igwQTms3ecXe5ENI3ckEPUAq__llNnND7mxp5ZrdXzd5HHU9slXwDShYcW3yDeQLEwAVomTGSFpBrCX8W77n9hF3JClkWaeS4QcZ3xUtsSS81yLrp__ifFfQqx9_Be89WVyIOoF4oydr08EkZ8zwlAsbZLG7eLXY" + "sitekey":"-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxTeIwXZWrw/S+Ju6gewh +LgkKnNNe2uCUqCqMZoYgJar3T5sHCDhvXc4dDCbDkxVIaA/+V1mURtBV60a3IGjn +OAO0W0XGGLe2ED7G5o9U8T9mVGq8Mauv0v1oQ5wIR1gEAhBavkQ2OUGuF/YKn2nj +HlKsv9HzUAHpcDMUe3Uklc2RhQbMcnJxEgkyjCkDyrTtCZzISkTAocHvpCG1KSog +njUZdiz9UWxvM4rCFkCJvQU4RwRZJb7GA9ul+9JrF7NvUQTx8csRP2weBk1E9yyj +wbe187E0eVj9RXX2Mx3mYhgrTdodxLOVMSXZLg1/SMpeFFl7QBhuM0SiOPg8a7Et +e2iNA/RD4WiUFqCDfafasRa1TOozOm7LA+08lkAh5PeQPJsJbrX0wVVft++Y+5/z +BvcUOP73vcbz7j5hJ7HLsbQtye/UUCfODBFybuDqRM84Aet8rjZohX7vukXdMD4I +2HuB7pjR4uIfyYr0J63ANkvbsn8LR+RnirmHrK5H/OgxxjXcfYbGEQgFxvxhF6lA +FpMu6Do4dx3CIb6pRmZ8bjSImXexJ0BSo9n3gtrz0XYLecsYFlQ9+QQjm83qxyLb +M23in0xqMVsyQvzjNkpImrO/QdbEFRIIMee83IHq+adbyjQR49Z2hNEIZhkLPc3U +2cJJ2HkzkOoF2K37qwIzk68CAwEAAQ== +-----END PUBLIC KEY----- +" + }, + "recipients":{ + { + "guid":"lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw", + "guid_sig":"PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA" + }, + }, + "callback":"\/post", + "version":"1.2", + "encryption":{ + "aes256cbc" + }, + "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467", + "secret_sig":"0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q" + } +[/code] + +[dl terms="b"] +[*= type] The message type: [b]notify, purge, refresh, force_refresh, auth_check, ping[/b] or [b]pickup[/b]. The packet contents vary by message type. Here we will describe the [b]notify[/b] packet. +[*= callback]A string to be appended onto the url which identifies the Zot communications endpoint on this system. It is typically the string "/post". +[*= version]The Zot protocol identifier, to allow future protocol revisions to co-exist. +[*= encryption] array of supported encryption algorithms, order by decreasing preference. If no compatible encryption methods are provided, applications MUST use 'aes256cbc'. +[*= secret]A 64-char string which is randomly generated by the sending site. +[*= secret_sig]The RSA signature of the secret, signed with the sender's private key. +[*= sender] An array of four components that provide a portable identity. We can contact the URL provided and download a Zot info packet to obtain the public key of the sender, and use that to verify the sender guid and the posting URL signatures. + [dl terms="b"] + [*= guid]Typically a 64 character base64url encoded string. This is generated when an identity is created and an attempt is made that it be unique; though this isn't required. + [*= guid_sig]The RSA signature of the guid, signed by the sender's private key and base64url encoded. + [*= url]The base url of the location this post is originating from. + [*= url_sig]The RSA signature of url, signed by the sender's private key and base64url encoded. + [*= sitekey]The public key of the website specified in the url + [/dl] +[*= recipients] Only used for private messages. An array of envelope recipients. Each recipient is represented by an array of guid and guid_sig. When recipients are specified, the entire packet is also encapsulated using a negotiated cryptographic algorithm or 'aes256cbc' if none could be negotiated. + [dl terms="b"] + [*= guid]The guid of a private recipient. + [*= guid_sig]The RSA signature of the guid, signed by the recipient's private key and base64url encoded + [/dl] +[/dl] diff --git a/doc/general.bb b/doc/general.bb index cc5de5a56..8390aceb3 100644 --- a/doc/general.bb +++ b/doc/general.bb @@ -3,7 +3,7 @@ [zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl] [zrl=[baseurl]/help/project/governance]Project Governance[/zrl] [zrl=[baseurl]/help/contributor/convenant]Project Covenant and Code of Conduct[/zrl] -[zrl=[baseurl]/help/project/history]$Projectname history[/zrl] + [h3]External resources[/h3] [zrl=[baseurl]/help/external-resource-links]List of external resources[/zrl] [url=https://github.com/redmatrix/hubzilla]Main Website[/url] diff --git a/doc/hook/crypto_methods.bb b/doc/hook/crypto_methods.bb new file mode 100644 index 000000000..1b16f567d --- /dev/null +++ b/doc/hook/crypto_methods.bb @@ -0,0 +1,5 @@ +[h2]crypto_mthods[/h2] + +Passed an array of crypto methods in local priority order. + +You may change the order and add new methods or disable existing methods. 'aes256cbc' is always supported as a fallback and currently removing this has no effect.
\ No newline at end of file diff --git a/doc/hook/other_encapsulate.bb b/doc/hook/other_encapsulate.bb new file mode 100644 index 000000000..ea0cdf622 --- /dev/null +++ b/doc/hook/other_encapsulate.bb @@ -0,0 +1,7 @@ +[h2]other_encapsulate[/h2] + +Passed an array of 'data', 'pubkey', 'alg', 'result' when encrypting data with an algorithm (alg) which is unknown to the system. Hooks are expected to identify their algorithm, encrypt data with pubkey and place the result in 'result'. + + + + diff --git a/doc/hook/other_unencapsulate.bb b/doc/hook/other_unencapsulate.bb new file mode 100644 index 000000000..c8b0b617f --- /dev/null +++ b/doc/hook/other_unencapsulate.bb @@ -0,0 +1,5 @@ +[h2]other_unencapsulate[/h2] + +Passed an array of 'data', 'prvkey', 'alg', 'result' when decrypting data with an algorithm (alg) which is unknown to the system. Hooks are expected to identify their algorithm, decrypt data with prvkey and place the result in 'result'. + + diff --git a/doc/hook/stream_item.bb b/doc/hook/stream_item.bb new file mode 100644 index 000000000..30086961d --- /dev/null +++ b/doc/hook/stream_item.bb @@ -0,0 +1,13 @@ +[h2]stream_item[/h2] + + +Called for each item processed for viewing by conversation(); + +The hook data consists of an array + + array( + 'mode' => current mode of conversation() + 'item' => item being processed + ); + + Set item['blocked'] to block the item from viewing. This action will not affect comment or sub-thread counts, so if there are three comments in a conversation and you block one, three comments will still be reported even though only two are visible. diff --git a/doc/hook/zot_best_algorithm.bb b/doc/hook/zot_best_algorithm.bb new file mode 100644 index 000000000..ccde505cb --- /dev/null +++ b/doc/hook/zot_best_algorithm.bb @@ -0,0 +1,3 @@ +[h2]zot_best_algorithm[/h2] + + diff --git a/doc/hooklist.bb b/doc/hooklist.bb index 5226e7de6..863824590 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -145,6 +145,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/cron_weekly]cron_weekly[/zrl] Called when weekly scheduled tasks are executed +[zrl=[baseurl]/help/hook/crypto_methods]crypto_methods[/zrl] + Called when generating a list of crypto algorithms in the locally preferred order + [zrl=[baseurl]/help/hook/directory_item]directory_item[/zrl] Called when generating a directory listing for display @@ -386,6 +389,12 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/oembed_probe]oembed_probe[/zrl] Called when performing an oembed content lookup +[zrl=[baseurl]/help/hook/other_encapsulate]other_encapsulate[/zrl] + Called when encrypting content for which the algorithm is unknown (see also crypto_methods) + +[zrl=[baseurl]/help/hook/other_unencapsulate]other_unencapsulate[/zrl] + Called when decrypting content for which the algorithm is unknown (see also crypto_methods) + [zrl=[baseurl]/help/hook/page_content_top]page_content_top[/zrl] Called when we generate a webpage (before calling the module content function) @@ -533,6 +542,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/smilie]smilie[/zrl] Called when translating emoticons +[zrl=[baseurl]/help/hook/stream_item]stream_item[/zrl] + Called for each item which is rendered for viewing via conversation() + [zrl=[baseurl]/help/hook/tagged]tagged[/zrl] Called when a delivery is processed which results in you being tagged @@ -545,6 +557,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/well_known]well_known[/zrl] Called when accessing the '.well-known' special site addresses +[zrl=[baseurl]/help/hook/zot_best_algorithm]zot_best_algorithm[/zrl] + Called when negotiating crypto algorithms with remote sites + [zrl=[baseurl]/help/hook/zid]zid[/zrl] Called when adding the observer's zid to a URL diff --git a/doc/install.bb b/doc/install.bb deleted file mode 100644 index e68b4a230..000000000 --- a/doc/install.bb +++ /dev/null @@ -1,4 +0,0 @@ -#include install/INSTALL.txt;
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/member/assets/qr_text_to_post.png b/doc/member/assets/qr_text_to_post.png Binary files differnew file mode 100644 index 000000000..887c85492 --- /dev/null +++ b/doc/member/assets/qr_text_to_post.png diff --git a/doc/member/assets/zat_dialog.png b/doc/member/assets/zat_dialog.png Binary files differnew file mode 100644 index 000000000..892964e95 --- /dev/null +++ b/doc/member/assets/zat_dialog.png diff --git a/doc/member/bbcode.html b/doc/member/bbcode.html new file mode 100644 index 000000000..99d0ce6bc --- /dev/null +++ b/doc/member/bbcode.html @@ -0,0 +1,316 @@ +<style> + section { + display: inline-block; + overflow-x: scroll; + } +</style> +<h3>Text Decoration</h3> +<table class="table table-responsive table-bordered"> + <tbody> + <tr> + <th>BBcode syntax</th><th>Rendered text</th> + </tr> + <tr> + <td><code>[b]bold[/b]</code></td><td><strong>bold</strong></td> + </tr> + <tr> + <td><code>[i]italic[/i]</code></td><td><em>italic</em></td> + </tr> + <tr> + <td><code>[u]underlined[/u]</code></td><td><u>underlined</u></td> + </tr> + <tr> + <td><code>[s]strike[/s]</code></td><td><strike>strike</strike></td> + </tr> + <tr> + <td><code>[color=red]red[/color]</code></td><td><span style="color: red;">red</span></td> + </tr> + <tr> + <td><code>[font=courier]some text[/font] </code></td><td><span style="font-family: courier;">some text</span></td> + </tr> + <tr> + <td><code>[quote]quote[/quote]</code></td><td><blockquote>quote</blockquote></td> + </tr> + <tr> + <td><code>[quote=Author]Author? Me? No, no, no...[/quote]</code></td><td><strong class="author">Author wrote:</strong><blockquote>Author? Me? No, no, no...</blockquote></td> + </tr> + <tr> + <td><code> + [size=small]small text[/size]<br> + [size=xx-large]xx-large text[/size]<br> + [size=20]20px exactly[/size]<br> + </code> + Size options include: <strong>xx-small, small, medium, large, xx-large</strong></td><td><span style="font-size: small;">small text</span><br><span style="font-size: xx-large;">xx-large text</span><br><span style="font-size: 20px;">20px exactly</span></td> + </tr> + <tr> + <td><code>Add a horizontal bar +[hr] +Like this + </code></td><td> + Add a horizontal bar<br><hr><br>Like this + </td> + </tr> + <tr> + <td><code>This is +[center]centered[/center] +text</code></td><td> + This is<br><div style="text-align:center;">centered</div><br>text + </td> + </tr> + </tbody> +</table> + +<h3>Code blocks</h3> +Code can be rendered generically in a block or inline format (depending on if there are new line characters in the text), or you can specify a supported language for enhanced syntax highlighting. Supported languages include <strong>php, css, mysql, sql, abap, diff, html, perl, ruby, vbscript, avrc, dtd, java, xml, cpp, python, javascript, js, json, sh </strong>. +<br><br> +<table class="table table-responsive table-bordered"> + <tbody> + <tr> + <th>BBcode syntax</th><th>Output</th> + </tr> + <tr> + <td><code>[code]function bbcode() { }[/code]</code></td><td><code>function bbcode() { }</code></td> + </tr> + <tr> + <td><code>[code=php]function bbcode() {<br> + $variable = true;<br> + if( $variable ) {<br> + echo "true";<br> + }<br> +}[/code]</code></td><td><code><div class="hl-main"><ol class="hl-main"><li><span class="hl-code"> </span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">bbcode</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li><li><span class="hl-code"> </span><span class="hl-var">$variable</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;</span></li><li><span class="hl-code"> </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code"> </span><span class="hl-var">$variable</span><span class="hl-code"> </span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li><li><span class="hl-code"> </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">true</span><span class="hl-quotes">"</span><span class="hl-code">;</span></li><li><span class="hl-code"> </span><span class="hl-brackets">}</span><span class="hl-code"></span></li><li><span class="hl-code"> </span><span class="hl-brackets">}</span></li></ol></div></code></td> + </tr> + <tr> + <td><code>[nobb][nobb]This is how [i]you[/i] can +[u]show[/u] how to use +[hl]BBcode[/hl] syntax[/nobb][/nobb]</code></td><td>[nobb]This is how [i]you[/i] can [u]show[/u] how to use [hl]BBcode[/hl] syntax[/nobb]</td> + </tr> + </tbody> +</table> + +<h3>Lists</h3> +<table class="table table-responsive table-bordered"> + <tbody> + <tr> + <th>BBcode syntax</th><th>Rendered list</th> + </tr> + <tr> + <td><code>[ul]<br> +[*] First list element<br> +[*] Second list element<br> +[/ul]</code></td><td><ul class="listbullet" style="list-style-type: circle;"><li> First list element</li><li> Second list element<br></li></ul></td> + </tr> + <tr> + <td><code>[ol]<br> +[*] First list element<br> +[*] Second list element<br> +[/ol]</code></td><td><ul class="listdecimal" style="list-style-type: decimal;"><li> First list element</li><li> Second list element<br></li></ul></td> + </tr> + <tr> + <td><code>[list=A]<br> +[*] First list element<br> +[*] Second list element<br> +[/list]</code> + The list type options are <code>1, i, I, a, A</code>.</td><td><ul class="listupperalpha" style="list-style-type: upper-alpha;"><li> First list element</li><li> Second list element</li></ul></td> + </tr> + <tr> + <td><code>[dl terms="b"]<br> +[*= First element term] First element description<br> +[*= Second element term] Second element description<br> +[/dl]</code> + The <strong>terms</strong> style options can be any combination of: + <dl class="bb-dl dl-horizontal"> + <dt>b</dt><dd>bold</dd> + <dt>i</dt><dd>italic</dd> + <dt>u</dt><dd>underline</dd> + <dt>m</dt><dd>monospace</dd> + <dt>l</dt><dd>large</dd> + <dt>h</dt><dd>horizontal — like <em>this</em> defintion list</dd> + </dl> + </td><td><dl class="bb-dl dl-terms-bold"> +<dt> First element term</dt><dd> First element description<br></dd> +<dt> Second element term</dt><dd> Second element description<br></dd></dl></td> + </tr> + </tbody> +</table> + +<h3>Tables</h3> + +<table class="table table-responsive table-bordered"> + <tbody> + <tr> + <th>BBcode syntax</th><th>Rendered table</th> + </tr> + <tr> + <td><code>[table border=0]<br> +[tr]<br> +[th]Header 1[/th][th]Header 2[/th]<br> +[/tr]<br> +[tr][td]Content[/td][td]Content[/td][/tr]<br> +[tr][td]Content[/td][td]Content[/td][/tr]<br> +[/table]</code></td><td><table class="table table-responsive"><tbody><tr><th>Header 1</th><th>Header 2</th></tr> +<tr><td>Content</td><td>Content</td></tr><tr><td>Content</td><td>Content</td></tr></tbody></table></td> + </tr> + <tr> + <td><code>[table border=1]<br> +[tr]<br> +[th]Header 1[/th][th]Header 2[/th]<br> +[/tr]<br> +[tr][td]Content[/td][td]Content[/td][/tr]<br> +[tr][td]Content[/td][td]Content[/td][/tr]<br> +[/table]</code></td><td><table class="table table-responsive table-bordered"><tbody><tr><th>Header 1</th><th>Header 2</th></tr> +<tr><td>Content</td><td>Content</td></tr><tr><td>Content</td><td>Content</td></tr></tbody></table></td> + </tr> + <tr> + <td><code>[table]<br> +[tr]<br> +[th]Header 1[/th][th]Header 2[/th]<br> +[/tr]<br> +[tr][td]Content[/td][td]Content[/td][/tr]<br> +[tr][td]Content[/td][td]Content[/td][/tr]<br> +[/table]</code></td><td><table><tbody><tr><th>Header 1</th><th>Header 2</th></tr><tr><td>Content</td><td>Content</td></tr><tr><td>Content</td><td>Content</td></tr></tbody></table> +</td> + </tr> + </tbody> +</table> + +<h3>Links and Embedded Content</h3> + +<table class="table table-responsive table-bordered"> + <tbody> + <tr> + <th>BBcode syntax</th><th>Output</th> + </tr> + <tr> + <td><code>[video]video URL[/video]<br> +[audio]audio URL[/audio]</code></td><td></td> + </tr> + <tr> + <td><code>[url=https://hubzilla.org]Hubzilla[/url]</code></td><td><a href="https://hubzilla.org" target="_blank">Hubzilla</a></td> + </tr> + <tr> + <td><code>An image [img]url/of/image.jpg[/img] +in some text </code></td><td> + An image <img src="/images/default_profile_photos/rainbow_man/48.jpg" alt="Image/photo"> in some text + </td> + </tr> + </tbody> +</table> + + +<h3>$Projectname specific codes</h3> + +<table class="table table-responsive table-bordered"> + <tbody> + <tr> + <th>BBcode syntax</th><th>Output</th> + </tr> + <tr> + <td>Magic-auth version of [url] tag + <code>[zrl=https://hubzilla.org]Identity-aware link[/zrl]</code> + </td><td><code>https://hubzilla.org/?zid=[observer=1][observer.address][/observer][observer=0]your_channel@your.home.hub[/observer]</code></td> + </tr> + <tr> + <td>Magic-auth version of [img] tag + <code>[zmg]https://hubzilla.org/some/photo.jpg[/zmg]</code> + </td><td>Image is only viewable by those authenticated and with permission.</td> + </tr> + <tr> + <td>Observer-dependent output:<code> + [nobb][observer=1]Text to display if observer IS authenticated[/observer][/nobb] + </code></td><td></td> + </tr> + <tr> + <td> + <code> + [nobb][observer=0]Text to display if observer IS NOT authenticated[/observer][/nobb] + </code> + </td> + <td></td> + </tr> + <tr> + <td> + <code> + [nobb][observer.url][/nobb] + </code> + </td> + <td>channel URL of observer</td> + </tr> + <tr> + <td> + <code> + [nobb][observer.baseurl][/nobb] + </code> + </td> + <td>website of observer</td> + </tr> + <tr> + <td> + <code> + [nobb][observer.name][/nobb] + </code> + </td> + <td>name of observer</td> + </tr> + <tr> + <td> + <code> + [nobb][observer.webname][/nobb] + </code> + </td> + <td>short name in the url of the observer</td> + </tr> + <tr> + <td> + <code> + [nobb][observer.address][/nobb] + </code> + </td> + <td>address (ZOT-id) of observer</td> + </tr> + <tr> + <td> + <code> + [nobb][observer.photo][/nobb] + </code> + </td> + <td>profile photo of observer</td> + </tr> + <tr> + <td><code>What is a spoiler?<br> + [spoiler]Text you want to hide.[/spoiler]</code></td><td> + What is a spoiler? <div onclick="openClose('opendiv-1131603764'); return false;" class="fakelink">Click to open/close</div><blockquote id="opendiv-1131603764" style="display: none;">Text you want to hide.</blockquote> + </td> + </tr> + <tr> + <td><code>[toc data-toc='div.page-body' data-toc-headings='h1,h2']</code><br> +Create a table of content in a webpage or wiki page. Please refer to the <a href="http://ndabas.github.io/toc/" target="_blank">original jQuery toc</a> to get more explanations. + <ul> + <li>Optional param: 'data-toc'. If omitted the default is 'body'</li> + <li>Optional param: 'data-toc-headings'. If omitted the default is 'h1,h2,h3'</li> + </ul></td><td></td> + </tr> + <tr> + <td><code>[nobb][rpost=title]Text to post[/rpost][/nobb]</code><br> +The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional</td><td><a href="[baseurl]/rpost?f=&title=title&body=Text+to+post" target="_blank">[baseurl]/rpost?f=&title=title&body=Text+to+post</a></td> + </tr> + <tr> + <td>This requires the <a href="https://github.com/redmatrix/hubzilla-addons/tree/master/qrator"><strong>qrator</strong></a> plugin.<br><code>[qr]text to post[/qr]</code></td><td><img src="/doc/member/assets/qr_text_to_post.png"></td> + </tr> + <tr> + <td>This requires a suitable map plugin such as <strong><a href="https://github.com/redmatrix/hubzilla-addons/tree/master/openstreetmap">openstreetmap</a></strong>. + <code>[map]</code></td><td>Generate an inline map using the current browser coordinates of the poster, if browser location is enabled</td> + </tr> + <tr> + <td>This requires a suitable map plugin such as <strong><a href="https://github.com/redmatrix/hubzilla-addons/tree/master/openstreetmap">openstreetmap</a></strong>. + <code>[map=latitude,longitude]</code></td><td>Generate a map using global coordinates.</td></tr> + <tr> + <td>This requires a suitable map plugin such as <strong><a href="https://github.com/redmatrix/hubzilla-addons/tree/master/openstreetmap">openstreetmap</a></strong>. + <code>[map]Place Name[/map]</code></td><td> +Generate a map for a given named location. The first matching location is returned. For instance "Sydney" will usually return Sydney, Australia and not Sydney, Nova Scotia, Canada unless the more precise location is specified. It is highly recommended to use the post preview utility to ensure you have the correct location before submitting the post. +</td> + </tr> + <tr> + <td><code>[&copy;]</code></td><td> © </td> + </tr> + </tbody> +</table> diff --git a/doc/faq_members.bb b/doc/member/member_faq.bb index c7f50314d..9533cb557 100644 --- a/doc/faq_members.bb +++ b/doc/member/member_faq.bb @@ -1,18 +1,10 @@ -[size=large][b]$Projectname FAQ[/b][/size] - -[toc] - - -[h3]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h3] +[h3]$Projectname FAQ[/h3] +[h4]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h4] Short anser: No, there isn't. There are reasons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other $Projectname servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to $Projectname posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it. If a posting is public this is even harder, as $Projectname is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post. - -[h3]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h3] +[h4]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h4] Posts and photos/files are provided separately from the channel basic information. This is due to memory limitations dealing with years of conversations and photo archives. Posts and conversations can be synced separately from the basic channel information. Photos and file archives can be transferred using a plugin tool such as 'redfiles', which is currently listed as "experimental". When creating this feature we thought that keeping all your contacts was the most important task. Your friends have already seen your old content. Posts/conversations were next in priority and these may now be synced. Files and photos are the last bit to get completely working. Once we find someone willing to finish implementing this, it will be done. :) -[h3]I can't see private resources[/h3] +[h4]I can't see private resources[/h4] You have probably disabled third party cookies. You need to enable them for remote authentication to work. -[h3]There are a lot of foreign language posts. Let's auto-translate them.[/h3] +[h4]There are a lot of foreign language posts. Let's auto-translate them.[/h4] There are also a lot of [b]private[/b] foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called [b][i]Apertium[/i][/b] which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen. - - -#include doc/macros/main_footer.bb; diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb new file mode 100644 index 000000000..c0ded4614 --- /dev/null +++ b/doc/member/member_guide.bb @@ -0,0 +1,938 @@ +[h3]Overview[/h3] + +While many features and capabilities of $Projectname are familiar to people who have used social networking sites and blogging software, there are also quite a few new concepts and features that most people have not encountered before. Some of the new ideas are related to the decentralized nature of the grid; others are associated with the advanced permissions system that is necessary to protect your data privacy. The purpose of this guide is to help you understand how to create, configure, and use your nomadic identity. + +[h3]Registration[/h3] + +Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides. + +[b]Your Email Address[/b] + +Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [i]and to recover lost passwords[/i]. + +[b]Password[/b] + +Enter a password of your choice, and repeat it in the second box to ensure it was typed correctly. As $Projectname offers a decentralised identity, your account can log you in to many other websites. + +[b]Terms Of Service[/b] + +Click the link to read the site's [zrl=[baseurl]/help/TermsOfService]Terms of Service[/zrl]. Once you've read them, tick the box in the register form to confirm. + +[b]Register[/b] + +Once you have provided the necessary details, click the 'Register' button. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval. + +[b]Create a Channel[/b] + +Next, you will be presented with the "Add a channel" screen. Normally, your first channel will be one that represents you - so using your own name (or psuedonym) as the channel name is a good idea. The channel name should be thought of as a title, or brief description of your channel. The "choose a short nickname" box is similar to a "username" field. We will use whatever you enter here to create a channel address, which other people will use to connect to you, and you will use to log in to other sites. This looks like an email address, and takes the form nickname@siteyouregisteredat.xyz + +When your channel is created you will be taken straight to your settings page where you can define permissions, enable features, etc. All these things are covered in the appropriate section of the helpfiles. + +See Also +[zrl=[baseurl]/help/accounts_profiles_channels_basics]The Basics about Identities within $Projectname[/zrl] +[zrl=[baseurl]/help/accounts]Accounts[/zrl] +[zrl=[baseurl]/help/profiles]Profiles[/zrl] +[zrl=[baseurl]/help/permissions]Permissions[/zrl] +[zrl=[baseurl]/help/remove_account]Remove Account[/zrl] + +[b]Profiles[/b] + +$Projectname has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences. This is different to having different channels. Different channels allow for completely different sets of information. You may have a channel for yourself, a channel for your sports team, a channel for your website, or whatever else. A profile allows for finely graded "sides" of each channel. For example, your default public profile might say "Hello, I'm Fred, and I like laughing". You may show your close friends a profile that adds "and I also enjoy dwarf tossing". + +You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile. + +That said, if you want other friends to be able to find you, it helps to have the following information in your public profile... + +[ul][*]Your real name or at least a nickname everybody knows +[*]A photo of you +[*]Your location on the planet, at least to a country level.[/ul] + +In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like. + +To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Settings > Additional Features[/zrl] and enable "Multiple Profiles" there, otherwise you won't have the ability to use more than just your default profile. + +Then select "Edit Profiles" from the menu of your $Projectname site. You may edit an existing profile, change the profile photo, add things to a profile or create a new profile. You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again. To do that, click on the profile you want to clone and choose "Clone this profile" there. + +In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" next to the profile in question (only available for the profiles that are not your default profile) and then click on user images to add them to or remove them from the group of people who can see this profile. + +Once a profile has been selected, when the person views your profile, they will see the private profile you have assigned. If they are not authenticated, they will see your public profile. + +There is a setting which allows you to publish your profile to a directory and ensure that it can be found by others. You can change this setting on the "Settings" page. + +If you do not wish to be found be people unless you give them your channel address, you may leave your profile unpublished. + +[b]Keywords and Directory Search[/b] + +On the directory page, you may search for people with published profiles. Currently, only the name field and the keywords are searched. You may also include such keywords in your default profile - which may be used to search for common interests with other members. Keywords are used in the channel suggestion tool and although they aren't visible in the directory, they are shown if people visit your profile page. + +On your Connnections page and in the directory there is a link to "Suggestions" or "Channel Suggestions", respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance. + +See Also + +[zrl=[baseurl]/help/AdvancedSearch]Advanced Searching[/zrl] + +[h3]Account Permission Roles[/h3] + + +[h4]Social[/h4] + +[b]Mostly Public[/b] + +The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. + + +[b]Restricted[/b] + +By default all posts and published items are sent to your 'Friends' privacy group and not made public. New friends are added to this privacy group. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers. + +[b]Private[/b] + +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. + + +[h4]Forum[/h4] + +[b]Mostly Public[/b] + +The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically. + + +[b]Restricted[/b] + +By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. + +[b]Private[/b] + +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. + + +[h4]Feed[/h4] + + +[b]Public[/b] + +Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. + + +[b]Restricted[/b] + +Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. + + +[h4]Special[/h4] + +[b]Celebrity/Soapbox[/b] + +Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. + + +[b]Group Repository[/b] + +A public forum which allows members to post files/photos/webpages. + + +[h4]Custom/Expert Mode[/h4] + +Set all the privacy and permissions manually to suit your specific needs. + + +[h3]Channels[/h3] + +[h4]What are channels?[/h4] + +Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me". + +The most important features for a channel that represents "me" are: +[ul] +[*]Secure and private "spam free" communications + +[*]Identity and "single-signon" across the entire network + +[*]Privacy controls and permissions which extend to the entire network + +[*]Directory services (like a phone book) +[/ul] +In short, a channel that represents yourself is "me, on the internet". + +[h4]Creating channels[/h4] + +You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link. + +You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice. + +Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions. + +Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0][baseurl]/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts. + +[h4]The grid, permissions and delegation[/h4] + +The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts. + +As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl]. + +You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources. + +[h3]Connecting To Channels[/h3] + +Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it? + +First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels. + +The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later. + +To connect with other $Projectname channels: + +Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit". + +You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. + +[h4] Block/Ignore/Archive/Hide channels [/h4] + +Channels in your address book can have statuses such as [i]blocked[/i], [i]ignored[/i], [i]archived[/i] and [i]hidden[/i]. From your connections page you can see tabs that display the channels with those statuses. From your edit connection pages you can change the statuses of a channel. + +Here's their meaning: + +[b]Blocked:[/b] the channel can't read your items regardless of permissions, nor can it write to your channel. + +[b]Ignored:[/b] the channel can read your items if it has permission, but can't write to your channel. + +[b]Hidden:[/b] the channel does not show up in your profile's connections list, noone can see you're connected, but beware they may still show up to your other connections, for example in post replies. + +[b]Archived:[/b] if a channel can't be reached for 30 days, it is automatically marked as archived. This keeps all the data but stops polling the channel for new information and removes it from autocomplete. If later you learn the channel has come back online, you may manually unarchive it. + +[h4]Premium Channels[/h4] + +Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel. + +[h3]Permissions[/h3] +Permissions in $Projectname are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere. + +[h4]Permission Roles[/h4] + +When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire. + + +[h4]Default Permission Limits[/h4] + +There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends. + +[h4]Access Control[/h4] + +Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish. + +We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around. + + +[dl terms="l"] +[*= The scopes of permissions are:] +[dl terms="i"] + [*= Nobody Except Yourself ] This is self explanatory. Only you will be allowed access. + + [*= Only those you specifically allow ] By default, people you are not connected to, and all new contacts will have this permission denied. You will be able to make exceptions for individual channels on their contact edit screen. + + [*= Anybody in your address book ] Anybody you do not know will have this permission denied, but anybody you accept as a contact will have this permission approved. This is the way most legacy platforms handle permissions. + + [*= Anybody On This Hub ] Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied. + + [*= Anybody in this network ] Anybody in $Projectname will have this permission approved. Even complete strangers. However, anybody not logged in/authenticated will have this permission denied. + + [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks. + + [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be $Projectname members. You can set an expiration for the Access Token. + + [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all. +[/dl] +[*= The individual permissions are:] +[dl terms="i"] + [*= Can view my "public" stream and posts. ] This permision determines who can view your channel "stream" that is, the non-private posts that appear on the "home" tab when you're logged in. + + [*= Can view my "public" channel profile. ] This permission determines who can view your channel's profile. This refers to the "about" tab + + [*= Can view my "public" photo albums. ] This permission determines who can view your photo albums. Individual photographs may still be posted to a more private audience. + + [*= Can view my "public" address book. ] This permission determines who can view your contacts. These are the connections displayed in the "View connections" section. + + [*= Can view my "public" file storage. ] This permission determines who can view your public files stored in your cloud. + + [*= Can view my "public" pages. ] This permission determines who can view your public web pages. + + [*= Can send me their channel stream and posts. ] This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery. + + [*= Can post on my channel page ("wall"). ] This permission determines who can write to your wall when clicking through to your channel. + + [*= Can comment on my posts. ] This permission determines who can comment on posts you create. Normally, you would want this to match your "can view my public stream and posts" permission + + [*= Can send me private mail messages. ] This determines who can send you private messages (zotmail). + + [*= Can post photos to my photo albums. ] This determines who can post photographs in your albums. This is very useful for forum-like channels where connections may not be connected to each other. + + [*= Can forward to all my channel contacts via post tags. ] Using @- mentions will reproduce a copy of your post on the profile specified, as though you posted on the channel wall. This determines if people can post to your channel in this way. + + [*= Can chat with me (when available). ] This determines who can join the public chat rooms created by your channel. + + [*= Can write to my "public" file storage. ] This determines who can upload files to your public file storage, or 'cloud'. + + [*= Can edit my "public" pages. ] This determines who can edit your webpages. This is useful for wikis or sites with multiple editors. + + [*= Can administer my channel resources. ] This determines who can have full control of your channel. This should normally be set to "nobody except myself". +[/dl][/dl] +[i]Note:[/i] +Plugins/addons may provide special permission settings, so you may be offered additional permission settings beyond what is described here. + +If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen. + +[h4]Affinity[/h4] + +The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number. + +The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature. + +[h3]Guest Access Tokens[/h3] +Guest access tokens (sometimes called "Zot access tokens") allow you to share a file, folder, photo, album, or channel with a specific person or group of people who are not $Projectname members. These tokens allow you to share individual items by sending a link that includes the token in the URL; alternatively, people can actually [i]log in[/i] using the token credentials, after which they can seamlessly view whatever content has been shared with that token. + +To create and manage guest tokens, open the [zrl=[baseurl]/settings/tokens/]Guest Access Tokens[/zrl] settings page. A random token is generate with each page load, allowing you to create one by inputting an associated user name and optionally specifying an expiration date. Existing tokens are listed below the dialog and can be edited by selecting them or deleted by pressing the trash icon. + +Additional permissions may be granted to the guest token by expanding the [b]Individual Permissions[/b] options and selecting privacy settings such as [b]Can view my channel stream and posts[/b] or [b]Can chat with me[/b]. + +[img][baseurl]/doc/member/assets/zat_dialog.png[/img] + +[h3]Markup Languages[/h3] +$Projectname supports several markup languages for advanced formatting of content. The default markup language is a [url=[baseurl]/help/member/bbcode]custom variant of BBcode[/url], tailored for use in $Projectname. [url=[baseurl]/help/member/bbcode]BBcode[/url] is supported for posts, wiki pages, and web page elements. Wiki pages and webpage elements may also be written using standard Markdown. +[table border=0] +[tr][th]Content Type[/th][th]Supported Markup[/th][/tr] +[tr][td]Post[/td][td][url=[baseurl]/help/member/bbcode]BBcode[/url][/td][/tr] +[tr][td]Wiki[/td][td][url=[baseurl]/help/member/bbcode]BBcode[/url], Markdown[/td][/tr] +[tr][td]Webpage element[/td][td][url=[baseurl]/help/member/bbcode]BBcode[/url], Markdown, HTML[/td][/tr] +[/table] + +[h3]Web Pages[/h3] + +$Projectname enables users to create static webpages. To activate this feature, enable the [b]Web Pages[/b] feature in your [b][url=[baseurl]/settings/features/]Additional Features[/url][/b] section. + +Once enabled, a new tab will appear on your channel page labeled "Webpages". Clicking this link will take you to the webpage editor. Pages will be accessible at [b][baseurl]/page/[observer=1][observer.webname][/observer][observer=0]channelname[/observer]/pagelinktitle[/b] + +The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. + +Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages. + +[h4]Using Blocks[/h4] + +Blocks can be parts of webpages. The basic HTML of a block looks like this +[code] + <div> + Block Content + </div> + +[/code] + +If a block has text/html content type it can also contain menu elements. Sample content of +[code] + <p>HTML block content</p> + [menu]menuname[/menu] + +[/code] +will produce HTML like this +[code] + <div> + <p>HTML block content</p> + <div> + <ul> + <li><a href="#">Link 1</a></li> + <li><a href="#">Link 2</a></li> + <li><a href="#">Link 3</a></li> + </ul> + </div> + </div> + +[/code] + +Via the $content macro a block can also contain the actual webpage content. For this create a block with only +[code] + $content + +[/code]as content. + +To make a block appear in the webpage it must be defined in the page layout inside a region. +[code] + [region=aside] + [block]blockname[/block] + [/region] + +[/code] + +The block appearance can be manipulated in the page layout. + +Custom classes can be assigned +[code] + [region=aside] + [block=myclass]blockname[/block] + [/region] + +[/code] +will produce this HTML +[code] + <div class="myclass"> + Block Content + </div> + +[/code] + +Via the wrap variable a block can be stripped off its wrapping <div></div> tag +[code] + [region=aside] + [block][var=wrap]none[/var]blockname[/block] + [/region] + +[/code] +will produce this HTML +[code] + Block Content +[/code] + +[h4]Webpage element import tool[/h4] + +There are two methods of importing webpage elements: uploading a zip file or referencing a local cloud files folder. Both methods require that the webpage elements are specified using a specific folder structure. The import tool makes it possible to import all the elements necessary to construct an entire website or set of websites. The goal is to accommodate external development of webpages as well as tools to simplify and automate deployment on a hub. + +[h5] Folder structure [/h5] +Element definitions must be stored in the repo root under folders called +[code] + /pages/ + /blocks/ + /layouts/ +[/code] + +Each element of these types must be defined in an individual subfolder using two files: one JSON-formatted file for the metadata and one plain text file for the element content. + +[h5] Page elements [/h5] +Page element metadata is specified in a JSON-formatted file called [code]page.json[/code] with the following properties: +[list] +[*] title +[*] pagelink +[*] mimetype +[*] layout +[*] contentfile +[/list] +[b]Example[/b] + +Files: +[code] + /pages/my-page/page.json + /pages/my-page/my-page.bbcode +[/code] +Content of [code]page.json[/code]: +[code] + { + "title": "My Page", + "pagelink": "mypage", + "mimetype": "text/bbcode", + "layout": "my-layout", + "contentfile": "my-page.bbcode" + } +[/code] +[h5] Layout elements [/h5] + +Layout element metadata is specified in a JSON-formatted file called [code]layout.json[/code] with the following properties: +[list] +[*] name +[*] description +[*] contentfile +[/list] +[b]Example[/b] + +Files: +[code] + /layouts/my-layout/layout.json + /layouts/my-layout/my-layout.bbcode +[/code] +Content of [code]layout.json[/code]: +[code] + { + "name": "my-layout", + "description": "Layout for my project page", + "contentfile": "my-layout.bbcode" + } +[/code] + +[h5] Block elements [/h5] + +Block element metadata is specified in a JSON-formatted file called [code]block.json[/code] with the following properties: +[list] +[*] name +[*] title +[*] mimetype +[*] contentfile +[/list] +[b]Example[/b] + +Files: +[code] + /blocks/my-block/block.json + /blocks/my-block/my-block.html +[/code] +Content of [code]block.json[/code]: + +[code] + { + "name": "my-block", + "title": "", + "mimetype": "text/html", + "contentfile": "my-block.html" + } +[/code] + +[h3]Comanche Page Description Language[/h3] + +Comanche is a markup language similar to [url=[baseurl]/help/member/bbcode]BBcode[/url] with which to create elaborate and complex web pages by assembling them from a series of components - some of which are pre-built and others which can be defined on the fly. Comanche uses a Page Decription Language to create these pages. + +Comanche primarily chooses what content will appear in various regions of the page. The various regions have names and these names can change depending on what layout template you choose. + +[h4]Page Templates[/h4] +Currently there are five layout templates, unless your site provides additional layouts. + +[dl terms="b"] +[*= default] +The default template defines a "nav" region across the top, "aside" as a fixed width sidebar, +"content" for the main content region, and "footer" for a page footer. + +[*= full] +The full template defines the same as the default template with the exception that there is no "aside" region. + +[*= choklet] +The choklet template provides a number of fluid layout styles which can be specified by flavour: +[list] +[*] (default flavour) - a two column layout similar to the "default" template, but more fluid +[*] bannertwo - a two column layout with a banner region, compatible with the "default" template on small displays +[*] three - three column layout (adds a "right_aside" region to the default template) +[*] edgestwo - two column layout with fixed side margins +[*] edgesthree - three column layout with fixed side margins +[*] full - three column layout with fixed side margins and adds a "header" region beneath the navigation bar +[/list] + +[*= redable] +A template for reading longer texts full screen (so without navigation bar). Three columns: aside, content and right_aside. +For maximum readability it is advised to only use the middle content column. + +[*= zen] +Gives you the freedom to do everything yourself. Just a blank page with a content region. +[/dl] + +To choose a layout template, use the 'template' tag. + +[code] + [template]full[/template] + +[/code] + +To choose the "choklet" template with the "three" flavour: + +[code] + [template=three]choklet[/template] + +[/code] + +The default template will be used if no other template is specified. The template can use any names it desires for content regions. You will be using 'region' tags to decide what content to place in the respective regions. + +Three "macros" have been defined for your use. +[code] + $htmlhead - replaced with the site head content. + $nav - replaced with the site navigation bar content. + $content - replaced with the main page content. + +[/code] + +By default, $nav is placed in the "nav" page region and $content is placed in the "content" region. You only need to use these macros if you wish to re-arrange where these items appear, either to change the order or to move them to other regions. + + +To select a theme for your page, use the 'theme' tag. +[code] + [theme]suckerberg[/theme] + +[/code] +This will select the theme named "suckerberg". By default your channel's preferred theme will be used. + +[code] + [theme=passion]suckerberg[/theme] + +[/code] +This will select the theme named "suckerberg" and select the "passion" schema (theme variant). Alternatively it may be possible to use a condensed theme notation for this. + +[code] + [theme]suckerberg:passion[/theme] + +[/code] + +The condensed notation isn't part of Comanche itself but is recognised by $Projectname platform as a theme specifier. + +[h4]Regions[/h4] +Each region has a name, as noted above. You will specify the region of interest using a 'region' tag, which includes the name. Any content you wish placed in this region should be placed between the opening region tag and the closing tag. + +[code] + [region=htmlhead]....content goes here....[/region] + [region=aside]....content goes here....[/region] + [region=nav]....content goes here....[/region] + [region=content]....content goes here....[/region] + +[/code] + +[h4]CSS and Javascript[/h4] +We have the possibility to include javascript and css libraries in the htmlhead region. At present we make use of jquery (js), bootstrap (css/js) and foundation (css/js). +This will overwrite the selected themes htmlhead. + +[code] + [region=htmlhead] + [css]bootstrap[/css] + [js]jquery[/js] + [js]bootstrap[/js] + [/region] + +[/code] + +[h4]Menus and Blocks[/h4] +Your webpage creation tools allow you to create menus and blocks, in addition to page content. These provide a chunk of existing content to be placed in whatever regions and whatever order you specify. Each of these has a name which you define when the menu or block is created. + +[code] + [menu]mymenu[/menu] + +[/code] +This places the menu called "mymenu" at this location on the page, which must be inside a region. + +[code] + [menu=horizontal]mymenu[/menu] + +[/code] +This places the menu called "mymenu" at this location on the page, which must be inside a region. Additionally it applies the "horizontal" class to the menu. "horizontal" is defined in the redbasic theme. It may or may not be available in other themes. + +[code] + [menu][var=wrap]none[/var]mymenu[/menu] + +[/code] +The variable [var=wrap]none[/var] in a block removes the wrapping div element from the menu. + +[code] + [block]contributors[/block] +[/code] +This places a block named "contributors" in this region. + +[code] + [block=someclass]contributors[/block] + +[/code] +This places a block named "contributors" in this region. Additionally it applies the "someclass" class to the block. This replaces the default block classes "bblock widget". + +[code] + [block][var=wrap]none[/var]contributors[/block] + +[/code] +The variable [var=wrap]none[/var] in a block removes the wrapping div element from the block. + +[h4]Widgets[/h4] +Widgets are executable apps provided by the system which you can place on your page. Some widgets take arguments which allows you to tailor the widget to your purpose. (TODO: list available widgets and arguments). The base system provides + +[code] + profile - widget which duplicates the profile sidebar of your channel page. This widget takes no arguments + tagcloud - provides a tag cloud of categories + count - maximum number of category tags to list + +[/code] + +Widgets and arguments are specified with the 'widget' and 'var' tags. +[code] + [widget=recent_visitors][var=count]24[/var][/widget] + +[/code] + +This loads the "recent_visitors" widget and supplies it with the argument "count" set to "24". + +[h4]Comments[/h4] +The 'comment' tag is used to delimit comments. These comments will not appear on the rendered page. + +[code] + [comment]This is a comment[/comment] + +[/code] + +[h4]Conditional Execution[/h4] +You can use an 'if' construct to make decisions. These are currently based on system configuration variable or the current observer. + +[code] + [if $config.system.foo] + ... the configuration variable system.foo evaluates to 'true'. + [else] + ... the configuration variable system.foo evaluates to 'false'. + [/if] + + [if $observer] + ... this content will only be show to authenticated viewers + [/if] + +[/code] + + The 'else' clause is optional. + + Several tests are supported besides boolean evaluation. + +[code] + [if $config.system.foo == bar] + ... the configuration variable system.foo is equal to the string 'bar' + [/if] + [if $config.system.foo != bar] + ... the configuration variable system.foo is not equal to the string 'bar' + [/if] + [if $config.system.foo {} bar ] + ... the configuration variable system.foo is a simple array containing a value 'bar' + [/if] + [if $config.system.foo {*} bar] + ... the configuration variable system.foo is a simple array containing a key named 'bar' + [/if] +[/code] + +[h4]Complex Example[/h4] +[code] + [comment]use an existing page template which provides a banner region plus 3 columns beneath it[/comment] + + [template]3-column-with-header[/template] + + [comment]Use the "darknight" theme[/comment] + + [theme]darkknight[/theme] + + [comment]Use the existing site navigation menu[/comment] + + [region=nav]$nav[/region] + + [region=side] + + [comment]Use my chosen menu and a couple of widgets[/comment] + + [menu]myfavouritemenu[/menu] + + [widget=recent_visitors] + [var=count]24[/var] + [var=names_only]1[/var] + [/widget] + + [widget=tagcloud][/widget] + [block]donate[/block] + + [/region] + + + + [region=middle] + + [comment]Show the normal page content[/comment] + + $content + + [/region] + + + + [region=right] + + [comment]Show my condensed channel "wall" feed and allow interaction if the observer is allowed to interact[/comment] + + [widget]channel[/widget] + + [/region] + +[/code] + + +[h3]Personal Cloud Storage[/h3] + +$Projectname provides an ability to store privately and/or share arbitrary files with friends. + +You may either upload files from your computer into your storage area, or copy them directly from the operating system using the WebDAV protocol. + +On many public servers there may be limits on disk usage. + +[h4]File Attachments[/h4] + +The quickest and easiest way to share files is through file attachments. In the row of icons below the status post editor is a tool to upload attachments. Click the tool, select a file and submit. After the file is uploaded, you will see an attachment code placed inside the text region. Do not edit this line or it may break the ability for your friends to see the attachment. You can use the post permissions dialogue box or privacy hashtags to restrict the visibility of the file - which will be set to match the permissions of the post your are sending. + +To delete attachments or change the permissions on the stored files, visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username replacing username with the nickname you provided during channel creation[/observer]. + +[h4]Web Access[/h4] + +Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. + +[h4]WebDAV access[/h4] + +See: [zrl=[baseurl]/help/member/member_guide#Cloud_Desktop_Clients]Cloud Desktop Clients[/zrl] + +[h4]Permissions[/h4] + +When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups. + +[h4]Cloud Desktop Clients - Windows[/h4] + +RedDav using Windows 7 graphical user interface wizard: +1. Left-click the Start-button to open the start menu. +2. Right-click the My computer icon to access its menu. +3. Left-click Map network drive... to open the connection dialog wizard. +4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub. +5. Type your $Projectname account's user name. IMPORTANT - NO at-sign or domain name. +6. Type your $Projectname password + +[h4]Cloud Desktop Clients - Linux[/h4] + +[h5]Mount as a filesystem[/h5] + +[b]Mounting As A Filesystem[/b] + +To install your cloud directory as a filesystem, you first need davfs2 installed. 99% of the time, this will be included in your distributions repositories. In Debian + +[code]apt-get install davfs2[/code] + +If you want to let normal users mount the filesystem + +[code] dpkg-reconfigure davfs2[/code] + +and select "yes" at the prompt. + +Now you need to add any user you want to be able to mount dav to the davfs2 group + +[code]usermod -aG davfs2 <DesktopUser>[/code] + +[b]Note:[/b] on some systems the user group may be different, i.e. - "network" +on Arch Linux. If in doubt, check the davfs documentation for your +particular OS. + +Edit /etc/fstab + +[code]nano /etc/fstab[/code] + + to include your cloud directory by adding + +[code] +[baseurl]/dav/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1 +[/code] + +Where [baseurl] is the URL of your hub, /mount/point is the location you want to mount the cloud, and <DesktopUser> is the user you log in to one your computer. Note that if you are mounting as a normal user (not root) the mount point must be in your home directory. + +For example, if I wanted to mount my cloud to a directory called 'cloud' in my home directory, and my username was bob, my fstab would be + +[code][baseurl]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code] + +Now, create the mount point. + +[code]mkdir /home/bob/cloud[/code] + +and also create a directory file to store your credentials + +[code]mkdir /home/bob/.davfs2[/code] + +Create a file called 'secrets' + +[code]nano /home/bob/.davfs2/secrets[/code] + +and add your cloud login credentials + +[code] +[baseurl]/dav <username> <password> +[/code] + +Where <username> and <password> are the username and password [i]for your hub[/i]. + +Don't let this file be writeable by anyone who doesn't need it with + +[code]chmod 600 /home/bob/.davfs2/secrets[/code] + +Finally, mount the drive. + +[code]mount [baseurl]/dav[/code] + +You can now find your cloud at /home/bob/cloud and use it as though it were part of your local filesystem - even if the applications you are using have no dav support themselves. + +[b]Troubleshooting[/b] + +With some webservers and certain configurations, you may find davfs2 creating files with 0 bytes file size where other clients work just fine. This is generally caused by cache and locks. If you are affected by this issue, you need to edit your davfs2 configuration. + +[code]nano /etc/davfs2/davfs2.conf[/code] + +Your distribution will provide a sample configuration, and this file should already exist, however, most of it will be commented out with a # at the beginning of the line. + +First step is to remove locks. + +Edit the use_locks line so it reads [code]use_locks 0[/code]. + +Unmount your file system, remount your file system, and try copying over a file from the command line. Note you should copy a new file, and not overwrite an old one for this test. Leave it a minute or two then do [code]ls -l -h[/code] and check the file size of your new file is still greater than 0 bytes. If it is, stop there, and do nothing else. + +If that still doesn't work, disable the cache. Note that this has a performance impact so should only be done if disabling locks didn't solve your problem. Edit the cache_size and set it to [code]cache_size 0[/code] and also set file_refresh to [code]file_refresh 0[/code]. Unmount your filesystem, remount your file system, and test it again. + +If it [i]still[/i] doesn't work, there is one more thing you can try. (This one is caused by a bug in older versions of dav2fs itself, so updating to a new version may also help). Enable weak etag dropping by setting [code]drop_weak_etags 1[/code]. Unmount and remount your filesystem to apply the changes. + + +[h5]Dolphin[/h5] +Visit webdavs://example.com/dav where "example.com" is the URL of your hub. + +When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account. + +Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication. + +[h5]Konqueror[/h5] + +Simply visit webdavs://example.com/dav after logging in to your hub, where "example.com" is the URL of your hub. + +No further authentication is required if you are logged in to your hub in the normal manner. + +Additionally, if one has authenticated at a different hub during their normal browser session, your identity will be passed to the cloud for these hubs too - meaning you can access any private files on any server, as long as you have permissions to see them, as long as you have visited that site earlier in your session. + +This functionality is normally restricted to the web interface, and is not available to any desktop software other than KDE. + +[h5]Nautilus[/h5] + +1. Open a File browsing window (that's Nautilus) +2. Select File > Connect to server from the menu +3. Type davs://<domain_name>/dav/<your_channelname> and click Connect +4. You will be prompted for your channel name (same as above) and password +5. Your personal DAV directory will be shown in the window + +[h5]Nemo[/h5] + +For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there. + +1st way +type "davs://<domain_name>/dav/<your_channelname>" in the address bar. + +2nd way +Menu > file > connect to server +Fill the dialog +- Server: hubzilla_domain_name +- Type: Secure WebDAV (https) +- Folder: /dav +- Username: yourchannelname +- Password: yourpassword + +Once open you can set a bookmark. + +[h5]Server Notes[/h5] + +Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. + +[h3]Remove Channel or Account[/h3] + +[h4]Remove Channel[/h4] + +Go to the bottom of your channel settings page or visit the URL: + + [baseurl]/removeme + +You will need to confirm your password and the channel you are currently logged into will be removed. + +[hl][i][b]This is irreversible.[/b][/i][/hl] + +If you have identity clones on other hubs this only removes by default the channel instance which exists on this hub. + +[h4]Remove Account[/h4] + +Go to the bottom of your account settings page or visit the URL: + + [baseurl]/removeaccount + +You will need to confirm your password and the account you are currently logged into will be removed. + +[hl][i][b]This is irreversible.[/b][/i][/hl] + +All your channels will be deleted. If you have identity clones on other hubs this only removes by default the channels instances which exists on this hub. diff --git a/doc/nomadic-identity.bb b/doc/nomadic-identity.bb deleted file mode 100644 index a062e58c8..000000000 --- a/doc/nomadic-identity.bb +++ /dev/null @@ -1 +0,0 @@ -This still needs to be written. diff --git a/doc/permissions.bb b/doc/permissions.bb deleted file mode 100644 index 64690d608..000000000 --- a/doc/permissions.bb +++ /dev/null @@ -1,84 +0,0 @@ -[h1]Permissions[/h1]
-Permissions in $Projectname are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere.
-
-[b]Permission Roles[/b]
-
-When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire.
-
-
-[b]Default Permission Limits[/b]
-
-There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends.
-
-[b]Access Control[/b]
-
-Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish.
-
-We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around.
-
-
-[dl terms="l"]
-[*= The scopes of permissions are:]
-[dl terms="i"]
- [*= Nobody Except Yourself ] This is self explanatory. Only you will be allowed access.
-
- [*= Only those you specifically allow ] By default, people you are not connected to, and all new contacts will have this permission denied. You will be able to make exceptions for individual channels on their contact edit screen.
-
- [*= Anybody in your address book ] Anybody you do not know will have this permission denied, but anybody you accept as a contact will have this permission approved. This is the way most legacy platforms handle permissions.
-
- [*= Anybody On This Hub ] Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied.
-
- [*= Anybody in this network ] Anybody in $Projectname will have this permission approved. Even complete strangers. However, anybody not logged in/authenticated will have this permission denied.
-
- [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks.
-
- [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be Hubzilla members. You can set an expiration for the Access Token.
-
- [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all.
-[/dl]
-[*= The individual permissions are:]
-[dl terms="i"]
- [*= Can view my "public" stream and posts. ] This permision determines who can view your channel "stream" that is, the non-private posts that appear on the "home" tab when you're logged in.
-
- [*= Can view my "public" channel profile. ] This permission determines who can view your channel's profile. This refers to the "about" tab
-
- [*= Can view my "public" photo albums. ] This permission determines who can view your photo albums. Individual photographs may still be posted to a more private audience.
-
- [*= Can view my "public" address book. ] This permission determines who can view your contacts. These are the connections displayed in the "View connections" section.
-
- [*= Can view my "public" file storage. ] This permission determines who can view your public files stored in your cloud.
-
- [*= Can view my "public" pages. ] This permission determines who can view your public web pages.
-
- [*= Can send me their channel stream and posts. ] This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery.
-
- [*= Can post on my channel page ("wall"). ] This permission determines who can write to your wall when clicking through to your channel.
-
- [*= Can comment on my posts. ] This permission determines who can comment on posts you create. Normally, you would want this to match your "can view my public stream and posts" permission
-
- [*= Can send me private mail messages. ] This determines who can send you private messages (zotmail).
-
- [*= Can post photos to my photo albums. ] This determines who can post photographs in your albums. This is very useful for forum-like channels where connections may not be connected to each other.
-
- [*= Can forward to all my channel contacts via post tags. ] Using @- mentions will reproduce a copy of your post on the profile specified, as though you posted on the channel wall. This determines if people can post to your channel in this way.
-
- [*= Can chat with me (when available). ] This determines who can join the public chat rooms created by your channel.
-
- [*= Can write to my "public" file storage. ] This determines who can upload files to your public file storage, or 'cloud'.
-
- [*= Can edit my "public" pages. ] This determines who can edit your webpages. This is useful for wikis or sites with multiple editors.
-
- [*= Can administer my channel resources. ] This determines who can have full control of your channel. This should normally be set to "nobody except myself".
-[/dl][/dl]
-[i]Note:[/i]
-Plugins/addons may provide special permission settings, so you may be offered additional permission settings beyond what is described here.
-
-If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen.
-
-[b]Affinity[/b]
-
-The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number.
-
-The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/project/governance.bb b/doc/project/governance.bb index e13f6218c..4c1538b4b 100644 --- a/doc/project/governance.bb +++ b/doc/project/governance.bb @@ -2,25 +2,9 @@ Governance relates to the management of a project and particularly how this relates to conflict resolution. -This project uses a dual-governance model. - -The project as a whole and the repository were created initially by Mike Macgirvin; who controls the project copyright, and the project license, and manages the project as a Self Appointed Benevolent Dictator for Life. He holds veto power over any project proposal or decision and his word is final. - -That said, Mike has no interest in running the day to day activities of the project and influencing its direction, other than to protect his own work from sabotage. - -The internal project structure contains multiple "configurations" known as 'basic', 'standard', and 'pro'. Mike's veto power extends to any proposal or decision which he feels might adversely affect the 'pro' configuration. - -The 'basic and 'standard' configurations are controlled completely by the community. If the proposal or decision is crafted in such a way that its effects are limited to these configurations, Mike will consider relinquishing his power of veto and convert it to a normal community vote. - -Mario Vavti has done an incredible amount of work on the usability and theming of the project and holds veto power over any proposal or decision which might impact usability and "look and feel"; and his decision is also final. - -Mario's veto power is likewise restricted to anything using the standard project 'theme'. If a new theme is created and an otherwise vetoed decision is implemented entirely in this different theme and has no impact on the standard project theme, his veto [b]may[/b] also be turned into a normal community vote. - -This ability to work around a veto is at the discretion of Mike and Mario. They [b]may[/b] choose to relinquish their veto if the scope of the work is limited as described above, and in most circumstances they will leave the decision to the community. They are not obligated to do so. - [h3]Community Governance[/h3] -Beyond those two special cases, the project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: +The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: [ol] [*] Lazy Consensus @@ -29,7 +13,7 @@ If a project proposal is made to one of the community governance forums and ther [*] Veto -If a proposal is vetoed, it is not necessarily the final word. See above on how to convert a veto into a normal community vote. This can be done by framing the proposal so that it does not impact the 'pro' configuration or the standard theme. +Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. [*] Community Vote diff --git a/doc/project/history.md b/doc/project/history.md deleted file mode 100644 index 99cbfec7a..000000000 --- a/doc/project/history.md +++ /dev/null @@ -1,74 +0,0 @@ -Hubzilla History -================ - -Hubzilla is a community developed open source project based on work introduced in Friendica by the Friendica community and which previously was named Redmatrix. The core design, the project mission, and software base itself were created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using variations of this platform and an evolving vision of the role of communication software in our lives. Many others have contributed to this work, both conceptually and in terms of actual code (far too many to list individually). - -##Mike Macgirvin -- Biography - -Mike Macgirvin is an American software engineer now living in Australia. He spent his early adult years designing and repairing semiconductor fabrication equipment for a number of companies as a self-described "machine wizard". In 1985 he became a research engineer at Stanford University for the Gravity Probe-B space mission and soon became a Unix systems administrator writing communication software and utilities; and becoming an expert in emerging internet technologies such as the now ubiquitous "World Wide Web". He authored an email "client" called "ML" which pioneered some advanced concepts in encryption, the ability to filter message streams into different "views", and multi-protocol support; and was an active proponent of and participant in the open source software *movement*. In 1996 he went to Netscape Communications to become tech lead on their Messaging Server and integrate this with Collabra (groupware) into a comprehensive communications server package. He stayed on after Netscape was acquired by America Online and was tech manager of the Groups@AOL project until 2001. - -During a layoff round, Mike was let go from America Online in August 2001 and purchased a music store in Mountain View, California later to be known as "Sonica Music Company". Opening a retail store for non-essential goods at the beginning of a prolonged economic downturn was in retrospect probably not the wisest career move. Sonica eventually folded; in late 2006. Mike returned to working on software and systems support full-time and was employed briefly at Symantec before moving to Australia in early 2007. He currently lives on a farm "out in the middle of nowhere" and is employed as a Computer Systems Officer at the University of Wollongong. - - -##Hubzilla - The Early Years - -The software which went into creating Hubzilla has been through several distinct historical phases. It began in 2003 when Mike Macgirvin was looking for a content management system to power the website for his music store and found the available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to each other and not clash (or in this case Mike's personal website and the music store website). This software was developed primarily from 2003 until 2008. - -In 2006 this software was used as the prototype for Symantec's "safeweb" reputation and community site. It was developed and enhanced until about 2008. A rewrite took place in 2008 named "Reflection" but work stagnated as the community dwindled. The need for content management systems and communications software dropped dramatically during this time as humans flocked to the new social aggregrators - Facebook and Twitter. - - -##Mistpark/Friendica - -In early 2010, Mike left Facebook, concerned at the company's increasing hold and control of personal information. In his words "Companies die. We watched it happen in the dot-com years. When they do, their databases are sold to the highest bidder.". Mike used some remnants of the old CMS project to create a decentralised social communications platform. This was launched in July 2010 as "Mistpark". The name was chosen as a tribute to his new home in the Southern Highlands of Australia. The key innovation in this project was the ability to authenticate remotely and invisibly to other decentralised instances of the software so to allow remote viewing of private photos and provide "wall-to-wall" posting across website instances. The lack of simple remote identity *provenance* was a serious limitation of other decentralised communication protocols. - -In late 2010, the name was changed to "Friendika". The name Friendika had some symbolic issues, since the suffix was common with "swastika" and "Amerika", both having negative connotations, however the dot-com domain was available. Friendica was in fact the first choice but the 'friendica.com' domain name was already registered. It became available a year later and the project was renamed to Friendica in late 2011. - -Soon after version 1 was released in July 2010 - providing basic social communications, the software also took on a new role - cross-service federation; which was first introduced in August and September 2010. Federation allowed the software to "behave as" a StatusNet site and friends and messages could communicate to the other service from their own platforms. It was also hoped to provide federation with Diaspora - a project with similar scope being developed in secret in New York and first released in November of that year. Over the course of the next year, the federation ability was extended to provide integrated communications from RSS feeds, to and from email, StatusNet, Facebook, Twitter, and the emerging Diaspora project. The software provided a single "view" of your entire social space no matter what provider you or your friends used. StatusNet and Diaspora were supported natively so that one account could access any of these services. Facebook and Twitter used "API federation" which required the person to have an account on those services with which to link. - -By July 2012, Twitter and Facebook had both changed their terms of service and essentially outlawed "API federation" in the way Friendica was using it. Diaspora announced they were changing their protocol and would not maintain compatibility nor provide any warning when compatibility would break (or documentation on the proposed changes). The creator of StatusNet was also leaving his project to create something new (pump.io). As the software's primary purpose by this time was "federation of different social services into one interface", this created a bit of a crisis. The federated social web was crumbling. Also of concern was that independent and decentralised social websites shut down frequently, requiring all their members to start over again on another site. Often the effort involved to do this seemed daunting - and many people ran back to the relative safety of the large corporate providers - Facebook, Twitter, and now Google+. - -Mike realised he did not want to be held hostage to the decisions that other projects and companies and independent websites make. Friendica could operate on its own without attaching to these other networks, but its vision and implementation of a federated social world depended on federation with others for its project identity - so this created an identity crisis. - -Mike had been working on this project for some time and there were a number of things which needed re-writing, including the base communication protocol which Friendica used (DFRN or the "Distributed Friends and Relations Network" protocol). These ideas were starting to emerge as a different method of communication he called "zot". Zot began as a way to create a common language for federated websites, but there was no interest in this ability and as mentioned, the federated web was crumbling. The first version was soon scrapped and zot was re-designed and re-ignited as a streamlined communication protocol which was location-independent; e.g. not tied to any website. This would allow people to carry on unaffected if their website operator shut down temporarily or permanently. They wouldn't have to make friends all over again, and permissions of everything on the system wouldn't have to be changed to allow bob@site1 to see something that was private to him, even though he was now bob@site2. This was a serious problem with decentralisation. People moved and their online identities were lost and had to be re-created from scratch and existing relationships destroyed and had to be created all over again. - - -##Redmatrix - -In July 2012, Mike left the Friendica project and began development of "zot" and a new base project called "red" in his somewhat elusive *spare time*. Red is Spanish for "network". It wasn't really a "social network" and especially not a "federated social network". It was just Red (technically "la red"), or "the network". Work began by removing all the "federation" components and going back to basics - communication and remote authentication. It was a major re-write and took roughly six months before even basic communication was re-established. It was also no longer compatible with Friendica - which had been given to the "Friendica community" and by this time (December 2012) was developing separately on its own track. - -It became clear during this time that the single most compelling feature of the project wasn't the social network at all, but the authentication layer and decentralised access control mechanisms. Combined with zot's location independence it created a new model for software which had never existed previously - decentralised identity-aware web publishing and single sign-on to any compatible provider across the web. These weren't *evolutionary*, they were **revolutionary**. One of the biggest flaws of the modern web is the reliance on different passwords for every service you use, or reliance on a single provider if you were to tie them to - say your Facebook login. Facebook can remove your account at any time. Gone. If you rely on their authentication for all your websites, your entire online identity - now gone. This is also what was missing from Friendica - a compelling software feature which could stand on its own, without requiring a social network and especially without requiring a federated social network with all the mentioned external dependencies. - -An early visitor to the project noted that he had some difficulty finding the project on Google because of the choice of name - "red". Yes, this was a poor decision in retrospect. We were buried on page 23,712 of the search results. The concept that was emerging around this identity-aware publishing was that of "a matrix of inter-connected thought streams", since we didn't have a concept of "people" and "friends". All were just connected "channels" with different ways to connect. So "Redmatrix" was chosen to give it a searchable name. It had nothing to do with the Matrix film and red and blue pills, though that is frequently cited (erronously); and in fact isn't a bad analogy. - -The concept of identity-aware content was alien to anything that existed previously on the web, so to make it useful we had to provide the ability to use it for content. It needed content publishing tools. This brought back concepts from the old "Content Management System" on which the software was originally based. To get it up and running quickly we created a markup language for webpages called "Comanche" which let you describe a page in high-level terms based on bbcode tags. We also added WebDAV so you could put decentralised access control on files and drag/drop from your operating system. So now you could have private photos, webpages, files, events, conversations, chatrooms - and they are visible to those you choose - no matter what site they use. All they need is zot. And your viewers could move to another site or just pop up at a different site any time they want and we don't care. And it **also** had a built-in social network; with lots of additional privacy and encryption features which were added even before the Snowden revelations gave them added urgency. - -Over time a few federation components re-emerged. The ability to view RSS feeds was important to many people. Diaspora never really managed to re-write their protocol, so that was re-implemented and allowed Redmatrix to connect with Diaspora and Friendica again (Friendica still had their Diaspora protocol intact, so this was the most common language now remaining on the free web - despite its faults). Diaspora communications aren't able to make use of the advanced identity features, but they work for basic communications. - - -##Hubzilla - -The Redmatrix project reached a point of stagnation in early 2015 as network growth leveled and active interest in the project declined. Mike met with several external high tech developers and innovators in a round of discussions that were called "Zotopia" in early 2015 to perform an independent review of the project and try to identify what had gone wrong and plan a route forward. The basic consensus is that the project suffered from bad marketing decisions which were compounded by mixed messages about the project goals and target audience. A "rival" project (Diaspora) was marketing itself as a Facebook competitor, but after some long discussions it was determined that Redmatrix wasn't a Facebook competitor at all, and too much emphasis was being placed on the "social network" and "anti-Facebook" features. It was a novel decentralisation platform with distributed identity and permissions, and as was pointed out, the "end user" was the wrong target market. These marketing mistakes were now identified with the project name and random sampling of various "customers" showed that none of them really had a clue about the software goals or target market segment. The mixed messages were associated with the brand identity and this was a problem. - -The Redmatrix community held a vote and the project was renamed "Hubzilla", with a renewed identity and focus - to provide software for creating and ultimately linking together unrelated community websites or "hubs" into a global community. This is in fact what we were building all along, but didn't fully recognise it. The target audience for this software as it turns out is not the members or end users, but software integrators and digital community architects and builders. These in turn will be responsible for marketing their own product (their respective online communities) to end-users or members. The software solves a real world need of linking isolated and "walled garden" community sites together into a larger cooperative. The transition from Redmatrix to Hubzilla was complex and has taken several months as we consolidated the marketing and media assets to deliver a consistent message. It is still ongoing at this time, and should be completed in Q4 2015. - -Mike stepped down as active coordinator for the project in early 2015 and turned management over to the community. He remains active as a Hubzilla developer. - -##And Then... - -In 2016, the project was re-architected to support multiple server "roles". These correspond to sub-projects which can be isolated from each other in terms of supported feature sets, but all use and support the same code-base and developers are able to work together on common features and goals. The roles primarily differ in target audience, project [governance](help/project/governance) and decision making structures, and this results in slightly different features and idealogy. They all share a common code repository. - -Those roles are: - -### Basic - -Entry level server. Supported by and governed by the Hubzilla community. Most advanced or complex features have been stripped away to ease federation with external services. It is best suited as a FOSS social network tool. - -### Standard - -The standard Hubzilla server. This provides a wide range of useful features and is supported by and governed by the Hubzilla community. It is best suited as an open source community and cloud server. - -### Pro - -This is a specially crafted server with a unique feature set. It is supported by and governed by Mike Macgirvin dba "Zotlabs". Federation with external services has been stripped away in order to support a wide range of more technically advanced and complex features; and also includes features and modes which may not have the support or backing of the Hubzilla open source community. It is best suited for business and workplace applications. - -#include doc/macros/main_footer.bb; diff --git a/doc/project/toc.html b/doc/project/toc.html index b9489de3d..e264e014d 100644 --- a/doc/project/toc.html +++ b/doc/project/toc.html @@ -1,6 +1,5 @@ <h3>Project Information</h3> <ul> <li><a href="help/project/governance">Project Governance</a></li> -<li><a href="help/project/history">Project History</a></li> <li><a href="help/project/versions">Versions and Versioning</a></li> </ul> diff --git a/doc/registration.bb b/doc/registration.bb deleted file mode 100644 index f656eeaa6..000000000 --- a/doc/registration.bb +++ /dev/null @@ -1,35 +0,0 @@ -[size=large][b]Registration[/b][/size]
-
-Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides.
-
-[b]Your Email Address[/b]
-
-Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [i]and to recover lost passwords[/i].
-
-[b]Password[/b]
-
-Enter a password of your choice, and repeat it in the second box to ensure it was typed correctly. As $Projectname offers a decentralised identity, your account can log you in to many other websites.
-
-[b]Terms Of Service[/b]
-
-Click the link to read the site's [zrl=[baseurl]/help/TermsOfService]Terms of Service[/zrl]. Once you've read them, tick the box in the register form to confirm.
-
-[b]Register[/b]
-
-Once you have provided the necessary details, click the 'Register' button. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval.
-
-[b]Create a Channel[/b]
-
-Next, you will be presented with the "Add a channel" screen. Normally, your first channel will be one that represents you - so using your own name (or psuedonym) as the channel name is a good idea. The channel name should be thought of as a title, or brief description of your channel. The "choose a short nickname" box is similar to a "username" field. We will use whatever you enter here to create a channel address, which other people will use to connect to you, and you will use to log in to other sites. This looks like an email address, and takes the form nickname@siteyouregisteredat.xyz
-
-When your channel is created you will be taken straight to your settings page where you can define permissions, enable features, etc. All these things are covered in the appropriate section of the helpfiles.
-
-See Also
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]The Basics about Identities within $Projectname[/zrl]
-[zrl=[baseurl]/help/accounts]Accounts[/zrl]
-[zrl=[baseurl]/help/profiles]Profiles[/zrl]
-[zrl=[baseurl]/help/permissions]Permissions[/zrl]
-[zrl=[baseurl]/help/remove_account]Remove Account[/zrl]
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/remove_account.bb b/doc/remove_account.bb deleted file mode 100644 index 704f0b94c..000000000 --- a/doc/remove_account.bb +++ /dev/null @@ -1,27 +0,0 @@ -[b]Remove Channel or Account[/b]
-
-[b]Remove Channel[/b]
-
-Go to the bottom of your channel settings page or visit the URL:
-
- [baseurl]/removeme
-
-You will need to confirm your password and the channel you are currently logged into will be removed.
-
-This is irreversible.
-
-If you have identity clones on other hubs this only removes by default the channel instance which exists on this hub.
-
-[b]Remove Account[/b]
-
-Go to the bottom of your account settings page or visit the URL:
-
- [baseurl]/removeaccount
-
-You will need to confirm your password and the account you are currently logged into will be removed.
-
-This is irreversible.
-
-All your channels will be deleted. If you have identity clones on other hubs this only removes by default the channels instances which exists on this hub.
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/roadmap_hz3.md b/doc/roadmap_hz3.md new file mode 100644 index 000000000..9f24cf1f2 --- /dev/null +++ b/doc/roadmap_hz3.md @@ -0,0 +1,23 @@ + +Hubzilla III +============ + +Due: December 2017 +Codename: + + +Wishlist: + +- Move CalDAV/CardDAV server to core + +- Integrate Hubzilla events with CalDAV + +- Connection 'roles' allows you to select different permission roles for your connections; such as follower, friend, contributor, etc. + +- CardDAV integration with abook and profiles + +- App tray + +- issues manager + +- wiki cloning
\ No newline at end of file diff --git a/doc/roles.md b/doc/roles.md deleted file mode 100644 index a7608ff90..000000000 --- a/doc/roles.md +++ /dev/null @@ -1,66 +0,0 @@ -Account Permission Roles -======================== - - -##Social - -**Mostly Public** - -The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. - - -**Restricted** - -By default all posts and published items are sent to your 'Friends' privacy group and not made public. New friends are added to this privacy group. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers. - -**Private** - -By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. - - -##Forum - -**Mostly Public** - -The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically. - - -**Restricted** - -By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. - -**Private** - -By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. - - -##Feed - - -**Public** - -Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. - - -**Restricted** - -Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. - - -##Special - -**Celebrity/Soapbox** - -Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. - - -**Group Repository** - -A public forum which allows members to post files/photos/webpages. - - -##Custom/Expert Mode - -Set all the privacy and permissions manually to suit your specific needs. - -#include doc/macros/main_footer.bb; diff --git a/doc/sv/main.bb b/doc/sv/main.bb index 27a7a742e..1c6ad3f63 100644 --- a/doc/sv/main.bb +++ b/doc/sv/main.bb @@ -43,7 +43,6 @@ Zot är en fantastisk ny kommunikationsprotokoll uppfunnit speciellt för $Proje [zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
[h3]Teknisk dokumentation[/h3]
-[zrl=[baseurl]/help/project/history]$Projectname history[/zrl]
[zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl]
[zrl=[baseurl]/help/zot]An introduction to Zot[/zrl]
[zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl]
diff --git a/doc/toc.html b/doc/toc.html index ac21959cf..eeb0fe437 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -1,6 +1,117 @@ -<ul> -<li><a href="help/general">Project/Site Information</a></li> -<li><a href="help/members">For Members</a></li> -<li><a href="help/admins">For Administrators</a></li> -<li><a href="help/develop">For Developers</a></li> -</ul> +<div class="" id="accordion"> + <div class="panel"> + <div class=""> + <h3 class="panel-title"> + About + </h3> + </div> + <div id="about" class="panel-collapse collapse in"> + <ul class="list-group"> + <li class="doco-list-group-item"><a href="/help/about/about_hubzilla">About Hubzilla</a></li> + <li class="doco-list-group-item"><a href="/help/about/hubzilla_project">Hubzilla project</a></li> + <li class="doco-list-group-item"><a href="/help/about/about_hub">About this hub</a></li> + </ul> + </div> + </div> + <div class="panel"> + <div class=""> + <h3 class="panel-title"> + Members + </h3> + </div> + <div id="members" class="panel-collapse collapse in"> + <ul class="list-group"> + <li class="doco-list-group-item"><a href="/help/member/member_guide">Guide</a></li> + <li class="doco-list-group-item"><a href="/help/member/bbcode">BBcode Reference</a></li> + <li class="doco-list-group-item"><a href="/help/member/member_faq">FAQ</a></li> + </ul> + </div> + </div> + <div class="panel"> + <div class=""> + <h3 class="panel-title"> + Administrators + </h3> + </div> + <div id="administrators" class="panel-collapse collapse in"> + <ul class="list-group"> + <li class="doco-list-group-item"><a href="/help/admin/administrator_guide">Guide</a></li> + <li class="doco-list-group-item"><a href="/help/admin/hub_snapshots">Hub Snapshots</a></li> + </ul> + </div> + </div> + <div class="panel"> + <div class=""> + <h3 class="panel-title"> + Developers + </h3> + </div> + <div id="developers" class="panel-collapse collapse in"> + <ul class="list-group"> + <li class="doco-list-group-item"><a href="/help/developer/developer_guide">Guide</a></li> + <li class="doco-list-group-item"><a href="/help/developer/zot_protocol">Zot Protocol</a></li> + <li class="doco-list-group-item"><a href="/help/developer/api_zot">Zot API</a></li> + </ul> + </div> + </div> + <div class="panel"> + <div class=""> + <h3 class="panel-title"> + Tutorials + </h3> + </div> + <div id="tutorials" class="panel-collapse collapse in"> + <ul class="list-group"> + <li class="doco-list-group-item"><a href="/help/tutorials/personal_channel">Personal Channel</a></li> + </ul> + </div> + </div> +</div> +<script> + toc = {}; + // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) + $(document).ready(function () { + $(".panel-collapse.in").find('a').each(function(){ + window.console.log($(this).attr('href')); + var url = document.createElement('a'); + url.href = window.location; + var pageName = url.href.split('/').pop().split('#').shift(); + window.console.log('pageName: ' + pageName); + var linkName = $(this).attr('href').split('/').pop(); + window.console.log('linkName: ' + linkName); + if(pageName === linkName) { + var tocUl = $(this).closest('li').append('<ul>').find('ul'); + tocUl.removeClass(); // Classes are automatically added to <ul> elements by something else + tocUl.toc({content: "#doco-content", headings: "h3"}); + tocUl.addClass('toc-content sub-menu'); + tocUl.attr('id', 'doco-side-toc'); + + } + }); + + $(document.body).trigger("sticky_kit:recalc"); + + toc.contentTop = []; + toc.edgeMargin = 20; // margin above the top or margin from the end of the page + toc.topRange = 200; // measure from the top of the viewport to X pixels down + // Set up content an array of locations + $('#doco-side-toc').find('a').each(function(){ + toc.contentTop.push( $( '#'+$(this).attr('href').split('#').pop() ).offset().top ); + }); + + + // adjust side menu + $(window).scroll(function(){ + var winTop = $(window).scrollTop(), + bodyHt = $(document).height(), + vpHt = $(window).height() + toc.edgeMargin; // viewport height + margin + $.each( toc.contentTop, function(i,loc){ + if ( ( loc > winTop - toc.edgeMargin && ( loc < winTop + toc.topRange || ( winTop + vpHt ) >= bodyHt ) ) ){ + $('#doco-side-toc li') + .removeClass('selected-doco-nav') + .eq(i).addClass('selected-doco-nav'); + } + }); + }); + }); +</script> diff --git a/doc/troubleshooting.bb b/doc/troubleshooting.bb deleted file mode 100644 index 023d3c8b1..000000000 --- a/doc/troubleshooting.bb +++ /dev/null @@ -1,22 +0,0 @@ -[h2]Troubleshooting[/h2]
-
-When reporting issues, please try to provide as much detail as may be necessary for developers to reproduce the issue and provide the complete text of all error messages.
-
-The system logfile is an extremely useful resource for tracking down things that go wrong. This can be enabled in the admin/log configuration page. A loglevel setting of LOGGER_DEBUG is preferred for stable production sites. Most things that go wrong with communications or storage are listed here. A setting of LOGGER_DATA provides [b]much[/b] more detail, but may fill your disk. In either case we recommend the use of logrotate on your operating system to cycle logs and discard older entries.
-
-At the bottom of your .htconfig.php file are several lines (commented out) which enable PHP error logging. This reports issues with code syntax and executing the code and is the first place you should look for issues which result in a "white screen" or blank page. This is typically the result of code/syntax problems.
-Database errors are reported to the system logfile, but we've found it useful to have a file in your top-level directory called dbfail.out which [b]only[/b] collects database related issues. If the file exists and is writable, database errors will be logged to it as well as to the system logfile.
-
-In the case of "500" errors, the issues may often be logged in your webserver logs, often /var/log/apache2/error.log or something similar. Consult your operating system documentation.
-
-We encourage you to try to the best of your abilities to use these logs combined with the source code in your possession to troubleshoot issues and find their cause. The community is often able to help, but only you have access to your site logfiles and it is considered a security risk to share them.
-
-If a code issue has been uncovered, please report it on the project bugtracker (https://github.com/redmatrix/hubzilla/issues). Again provide as much detail as possible to avoid us going back and forth asking questions about your configuration or how to duplicate the problem, so that we can get right to the problem and figure out what to do about it. You are also welcome to offer your own solutions and submit patches. In fact we encourage this as we are all volunteers and have little spare time available. The more people that help, the easier the workload for everybody. It's OK if your solution isn't perfect. Every little bit helps and perhaps we can improve on it.
-
-[h3]Troubleshooting updates[/h3]
-[ul]
-[li][zrl=[baseurl]/help/problems-following-an-update]Problems following an update[/zrl][/li]
-[/ul]
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png b/doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png Binary files differnew file mode 100644 index 000000000..d5cf1093f --- /dev/null +++ b/doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png diff --git a/doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png b/doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png Binary files differnew file mode 100644 index 000000000..d613925aa --- /dev/null +++ b/doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png diff --git a/doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png b/doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png Binary files differnew file mode 100644 index 000000000..c403bf806 --- /dev/null +++ b/doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png diff --git a/doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png b/doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png Binary files differnew file mode 100644 index 000000000..ca8ba6fb9 --- /dev/null +++ b/doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png diff --git a/doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png b/doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png Binary files differnew file mode 100644 index 000000000..0da2d96e2 --- /dev/null +++ b/doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png diff --git a/doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png b/doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png Binary files differnew file mode 100644 index 000000000..2a209b2be --- /dev/null +++ b/doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png diff --git a/doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png b/doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png Binary files differnew file mode 100644 index 000000000..f992672b0 --- /dev/null +++ b/doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png diff --git a/doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png b/doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png Binary files differnew file mode 100644 index 000000000..b656192dc --- /dev/null +++ b/doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png diff --git a/doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png b/doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png Binary files differnew file mode 100644 index 000000000..6129195b6 --- /dev/null +++ b/doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png diff --git a/doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png b/doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png Binary files differnew file mode 100644 index 000000000..923403fe9 --- /dev/null +++ b/doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png diff --git a/doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png b/doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png Binary files differnew file mode 100644 index 000000000..f158ad5d9 --- /dev/null +++ b/doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png diff --git a/doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png b/doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png Binary files differnew file mode 100644 index 000000000..edc8b01cc --- /dev/null +++ b/doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png diff --git a/doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png b/doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png Binary files differnew file mode 100644 index 000000000..5b259058b --- /dev/null +++ b/doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png diff --git a/doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png b/doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png Binary files differnew file mode 100644 index 000000000..c03ffd18d --- /dev/null +++ b/doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png diff --git a/doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png b/doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png Binary files differnew file mode 100644 index 000000000..65d4c5f0a --- /dev/null +++ b/doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png diff --git a/doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png b/doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png Binary files differnew file mode 100644 index 000000000..45609a7bb --- /dev/null +++ b/doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png diff --git a/doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png b/doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png Binary files differnew file mode 100644 index 000000000..d239d6965 --- /dev/null +++ b/doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png diff --git a/doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png b/doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png Binary files differnew file mode 100644 index 000000000..45ed64d00 --- /dev/null +++ b/doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png diff --git a/doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png b/doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png Binary files differnew file mode 100644 index 000000000..fcaed8bef --- /dev/null +++ b/doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png diff --git a/doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png b/doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png Binary files differnew file mode 100644 index 000000000..0ccfc8995 --- /dev/null +++ b/doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png diff --git a/doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png b/doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png Binary files differnew file mode 100644 index 000000000..1cb4d2d22 --- /dev/null +++ b/doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png diff --git a/doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png b/doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png Binary files differnew file mode 100644 index 000000000..22e4cb5d5 --- /dev/null +++ b/doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png diff --git a/doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png b/doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png Binary files differnew file mode 100644 index 000000000..5674f5207 --- /dev/null +++ b/doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png diff --git a/doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png b/doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png Binary files differnew file mode 100644 index 000000000..e6b4a9974 --- /dev/null +++ b/doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png diff --git a/doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png b/doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png Binary files differnew file mode 100644 index 000000000..8de042ae4 --- /dev/null +++ b/doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png diff --git a/doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png b/doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png Binary files differnew file mode 100644 index 000000000..cec391fb4 --- /dev/null +++ b/doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png diff --git a/doc/tutorials/personal_channel.html b/doc/tutorials/personal_channel.html new file mode 100644 index 000000000..f2ad87077 --- /dev/null +++ b/doc/tutorials/personal_channel.html @@ -0,0 +1,163 @@ + +<p>This tutorial is intended to be followed in sequence as if you were setting up a +channel for the first time. It introduces some of the tools and features related +to a personal channel in a natural way.</p> + +<h3 id="Create_a_new_channel">Create a new channel</h3> + +<p>When you log in for the first time after registering, you must create a channel. +(Alternatively you can load https://grid.reticu.li/new_channel)</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png" alt="image"></p> + +<p>Enter your name and a nickname for the channel address, and select a "role". +Typically if this is a personal channel that represents you, select a <strong>Social</strong> role +with a level of default privacy that you are comfortable with. If you are unsure, +select <strong>Social - Restricted</strong>.</p> + +<h3 id="Configure_your_channel_features">Configure your channel features</h3> + +<p>When your new channel is created you are directed to the channel settings page. +Take the time to look around at all the settings pages to familiarize yourself with +your options, even if you don't understand everything you see right now.</p> + +<p>Navigate to the <strong>Additional Features</strong> settings and follow the screenshots below to +enable various features. Remember to press the Submit button when you are done with +your selections.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png" alt="image"><img class="img-responsive" src="/help/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png" alt="image"><img class="img-responsive" src="/help/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png" alt="image"><img class="img-responsive" src="/help/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png" alt="image"></p> + +<h3 id="Add_a_profile_photo">Add a profile photo</h3> + +<p>Navigate to your channel home by clicking the "Home" icon on the left side of the +navbar, and then select the <strong>About</strong> tab to view your profile.</p> + +<p>Press the <strong>Edit</strong> button on the right to edit your profile information.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png" alt="image"></p> + +<p>From the <strong>Profile Tools</strong> dropdown menu, select the <strong>Change profile photo</strong></p> + +<p><img class="img-responsive" src="/help/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png" alt="image"></p> + +<p>Upload your photo and size as necessary using the image editor.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png" alt="image"></p> + +<p>When you press <strong>Submit</strong> you will be redirected back to the profile editor. +(You might need to clear your browser cache if you have trouble seeing the new photo.)</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png" alt="image"></p> + +<p>Returning to your channel home page you will see that a post notifying others of your new +profile pic has been automatically posted.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png" alt="image"></p> + +<h3 id="Compose_a_post">Compose a post</h3> + +<p>Go to your channel home and open the post editor by pressing the <strong>Share</strong> textbox +at the top of the channel "wall". Enter a message, and then drag-and-drop an image +file into the post editor text area (alternatively you can use the <strong>Attach file</strong> +tool at the bottom).</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png" alt="image"></p> + +<p>Your image file will be automatically uploaded and stored in your cloud files, and +a link will appear in the post window. Pressing the post preview button will allow you to preview your post before publishing it.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png" alt="image"></p> + +<p>Pressing the lock button near the Submit button will open the <strong>Access Control List</strong> +so you can specify exactly who can access this post.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png" alt="image"></p> + +<h3 id="Use_an_uploaded_image_as_a_channel_cover_photo">Use an uploaded image as a channel cover photo</h3> + +<p>One way to add some pizzazz your channel is to add a cover photo that visitors will +see when they load your channel page. Hubzilla's integrated cloud file system +allows you to choose an existing photo for this purpose.</p> + +<p>Visit your photos in the <strong>Photos</strong> app</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png" alt="image"></p> + +<p>Select the photo you wish to use and select <strong>Use as cover photo</strong> from the <strong>Photo Tools</strong> +dropdown menu.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png" alt="image"></p> + +<p>Crop the image using the photo editor and save your changes.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png" alt="image"></p> + +<p>When you load your channel home page, you will first see the cover photo, and your +channel page will fade in as you scroll down.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png" alt="image"></p> + +<h3 id="Make_a_connection">Make a connection</h3> + +<p>Making connections between channels to share things is what Hubzilla is all about. +Making a connection is simple. If you do not already know how to reach a channel's home +page, you might try a directory search by opening the <strong>Directory</strong> link on the right +side of the top navbar.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png" alt="image"></p> + +<p>You can connect directly from the directory entry using the <strong>Connect</strong> button there, +or you can open the channel page first and press the <strong>Connect</strong> button below the +profile photo.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png" alt="image"></p> + +<p>After you connect you are immediately taken to the connection editor page, where +you make some important decisions about what you plan to share with this channel.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png" alt="image"></p> + +<p>The two important settings are</p> + +<ul><li>The individual permissions for the newly connected channel</li> +<li>The privacy group(s) the connection is a member of</li> +</ul><p>The individual permissions are mostly straightforward, but they can be slightly +unclear at first. For example, <strong>Can view my file storage and photos</strong> does <em>not</em> +mean that the connected channel will be able to view <em>all</em> of your photos and files! +It means that you will have the <em>option</em> to share photos and files with that +channel. It is perfectly possible for you to allow someone to read your posts but +disallow them from seeing photos in that post. This kind of unusual situation is, +as they say, not a bug; it is a feature.</p> + +<p>Privacy groups allow you to conveniently share items with groups of people. You can +create whatever groups fit your needs by opening the <strong>Add privacy group</strong> link.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png" alt="image"></p> + +<p>In this editor, you can switch between the existing privacy groups and see at a +glance what channels are and are not members of the group. Selecting the icon of +a channel in either box will move it to the in or out of the group.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png" alt="image"></p> + +<p>When editing an individual channel's settings, you can set their privacy group +membership using the widget on the left:</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png" alt="image"></p> + +<p>Connections are a mutual engagement. The channel you connect can <em>choose</em> to approve your +connection. They will receive a notification that you connected</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png" alt="image"></p> + +<p>which takes them to their <a href="https://grid.reticu.li/connections"><strong>Connections</strong></a> editor page where +they can choose to approve the connection or not.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png" alt="image"></p> + +<p>After you approve a connection, it is a good idea to open the individual connection +editor by pressing the edit button beside the <strong>Delete</strong> button.</p> + +<p><img class="img-responsive" src="/help/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png" alt="image"></p> + +
\ No newline at end of file diff --git a/doc/webpage-element-import.md b/doc/webpage-element-import.md deleted file mode 100644 index 4330227c2..000000000 --- a/doc/webpage-element-import.md +++ /dev/null @@ -1,94 +0,0 @@ -## <a href="#webpage-element-import"></a>Webpage element import - -There are two methods of importing webpage elements: uploading a zip file or -referencing a local cloud files folder. Both methods require that the webpage -elements are specified using a specific folder structure. The import tool makes -it possible to import all the elements necessary to construct an entire website -or set of websites. The goal is to accommodate external development of webpages -as well as tools to simplify and automate deployment on a hub. - -### Folder structure -Element definitions must be stored in the repo root under folders called - - /pages/ - /blocks/ - /layouts/ - - -Each element of these types must be defined in an individual subfolder using two files: one JSON-formatted file for the metadata and one plain text file for the element content. - -### Page elements -Page element metadata is specified in a JSON-formatted file called `page.json` with the following properties: - - * title - * pagelink - * mimetype - * layout - * contentfile - -**Example** - -Files: - - /pages/my-page/page.json - /pages/my-page/my-page.bbcode - -Content of `page.json`: - - { - "title": "My Page", - "pagelink": "mypage", - "mimetype": "text/bbcode", - "layout": "my-layout", - "contentfile": "my-page.bbcode" - } - - -### Layout elements -Layout element metadata is specified in a JSON-formatted file called `layout.json` with the following properties: - - * name - * description - * contentfile - -**Example** - -Files: - - /layouts/my-layout/layout.json - /layouts/my-layout/my-layout.bbcode - -Content of `layout.json`: - - { - "name": "my-layout", - "description": "Layout for my project page", - "contentfile": "my-layout.bbcode" - } - - -### Block elements -Block element metadata is specified in a JSON-formatted file called `block.json` with the following properties: - - * name - * title - * mimetype - * contentfile - -**Example** - -Files: - - /blocks/my-block/block.json - /blocks/my-block/my-block.html - -Content of `block.json`: - - - { - "name": "my-block", - "title": "", - "mimetype": "text/html", - "contentfile": "my-block.html" - } -
\ No newline at end of file diff --git a/doc/webpages.bb b/doc/webpages.bb deleted file mode 100644 index 2b909dc63..000000000 --- a/doc/webpages.bb +++ /dev/null @@ -1,93 +0,0 @@ -[b]Creating Web Pages[/b]
-
-Hubzilla enables users to create static webpages. To activate this feature, enable the web pages feature in your Additional Features section.
-
-Once enabled, a new tab will appear on your channel page labelled "Webpages". Clicking this link will take you to the webpage editor.
-Pages will be accessible at mydomain/page/username/pagelinktitle
-
-The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item.
-
-Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages.
-
-See also:
-
-[zrl=[baseurl]/help/webpage-element-import]Webpage element import tool[/zrl]
-
-[b]Using Blocks[/b]
-
-Blocks can be parts of webpages. The basic HTML of a block looks like this
-[code]
- <div>
- Block Content
- </div>
-
-[/code]
-
-If a block has text/html content type it can also contain menu elements. Sample content of
-[code]
- <p>HTML block content</p>
- [menu]menuname[/menu]
-
-[/code]
-will produce HTML like this
-[code]
- <div>
- <p>HTML block content</p>
- <div>
- <ul>
- <li><a href="#">Link 1</a></li>
- <li><a href="#">Link 2</a></li>
- <li><a href="#">Link 3</a></li>
- </ul>
- </div>
- </div>
-
-[/code]
-
-Via the $content macro a block can also contain the actual webpage content. For this create a block with only
-[code]
- $content
-
-[/code]as content.
-
-To make a block appear in the webpage it must be defined in the page layout inside a region.
-[code]
- [region=aside]
- [block]blockname[/block]
- [/region]
-
-[/code]
-
-The block appearance can be manipulated in the page layout.
-
-Custom classes can be assigned
-[code]
- [region=aside]
- [block=myclass]blockname[/block]
- [/region]
-
-[/code]
-will produce this HTML
-[code]
- <div class="myclass">
- Block Content
- </div>
-
-[/code]
-
-Via the wrap variable a block can be stripped off its wrapping <div></div> tag
-[code]
- [region=aside]
- [block][var=wrap]none[/var]blockname[/block]
- [/region]
-
-[/code]
-will produce this HTML
-[code]
- Block Content
-
-[/code]
-
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/webpages.md b/doc/webpages.md deleted file mode 100644 index 05c16f2bb..000000000 --- a/doc/webpages.md +++ /dev/null @@ -1,17 +0,0 @@ -Creating Webpages -================= - -Hubzilla enables users to create static webpages. To activate this feature, enable the web pages feature in your Additional Features section. - -Once enabled, a new tab will appear on your channel page labelled "Webpages". Clicking this link will take you to the webpage editor. Here you can create a post using either BBCode or the rich text editor. - -Pages will be accessible at mydomain/page/username/pagelinktitle - -The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. - -Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages. - -If you are the admin of a site, you can specify a channel whose webpages we will use at key points around the site. Presently, the only place this is implemented is the home page. If you specify the channel "admin" and then the channel called "admin" creates a webpage called "home", we will display it's content on your websites home page. We expect this functionality to be extended to other areas in future. - -#include doc/webpage-element-import.md; -#include doc/macros/main_footer.bb; diff --git a/doc/what_is_zot.bb b/doc/what_is_zot.bb deleted file mode 100644 index 9285f4ec6..000000000 --- a/doc/what_is_zot.bb +++ /dev/null @@ -1,61 +0,0 @@ -[b]What is Zot?[/b]
-
-Zot is the protocol that powers $Projectname, providing three core capabilities: Communications, Identity, and Access Control.
-
-The functionality it provides can also be described as follows:
-
- - a relationship online is just a bunch of permissions
- - the internet is just another folder
-
-[b][size=20]Communications[/size][/b]
-
-Zot is a revolutionary protocol which provides [i]decentralised communications[/i] and [i]identity management[/i] across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality.
-
-Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers.
-
-Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the [i]Affinity Slider[/i].
-
-You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of [i]decentralized identity[/i] services.
-
-[b][size=20]Identity[/size][/b]
-
-Zot's identity layer is unique. It provides [i]invisible single sign-on[/i] across all sites in the grid.
-
-It also provides [i]nomadic identity[/i], so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently.
-
-The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact.
-
-Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship.
-
-Nomadic identity, single sign-on, and $Projectname's decentralization of hubs, we believe, introduce a high degree of degree of [i]resiliency[/i] and [i]persistence[/i] in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship.
-
-As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit.
-
-How does Zot do that? We call it [i]magic-auth[/i], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online.
-
-You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control.
-
-You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it.
-
-[b][size=20]Access Control[/size][/b]
-
-Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create.
-
-Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control.
-
-This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers.
-
-Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it.
-
-[b][size=18]Additional Resources and Links[/size][/b]
-
-For more detailed, technical information about Zot, check out the following links:
-
- - [url=https://github.com/friendica/red/wiki/Zot---A-High-Level-Overview]A high level overview[/url]
-
- - [url=https://github.com/friendica/red/wiki/zot]Zot development specification[/url]
-
- - [url=https://github.com/redmatrix/hubzilla/blob/master/include/zot.php]Zot reference implementation in PHP[/url]
-
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/zot_structures.md b/doc/zot_structures.md deleted file mode 100644 index e8a65ff1f..000000000 --- a/doc/zot_structures.md +++ /dev/null @@ -1,62 +0,0 @@ -Zot Structures -============== - -**Zot signatures** -All signed data in zot is accomplished by performing an RSA sign operation using the private key of the initiator. The binary result is then base64url encoded for transport. - -**Zot encryption** - -Encryption is currently provided by AES256CBC, though additional algorithms MAY be supported. A 32-octet key and 16-octet initialisation vector are randomly generated. The desired data is then encrypted using these generated strings and the result base64url encoded. Then we build an array: - - data: the base64url encoded encrypted data - alg: The chosen algorithm, in this case the string 'aes256cbc'. - key: The randomly generated key, RSA encrypted using the recipients public key, and the result base64url encoded - iv: The randomly generated IV, RDSA encrypted using the recipient's public key, and the result base64url encoded - - - -**The zot basic packet** - -Used for initiating a dialogue with another zot site. This packet MAY be encrypted. The presence of an array element 'iv' indicates encryption has been applied. When sending an 'auth_check' packet type, this packet MUST be encrypted, using the public key of the destination site (the site key, as opposed to a sender key). - - - { - "type":"notify", - "sender":{ - "guid":"kgVFf_1_SSbyqH-BNWjWuhAvJ2EhQBTUdw-Q1LwwssAntr8KTBgBSzNVzUm9_RwuDpxI6X8me_QQhZMf7RfjdA", - "guid_sig":"PT9-TApzpm7QtMxC63MjtdK2nUyxNI0tUoWlOYTFGke3kNdtxSzSvDV4uzq_7SSBtlrNnVMAFx2_1FDgyKawmqVtRPmT7QSXrKOL2oPzL8Hu_nnVVTs_0YOLQJJ0GYACOOK-R5874WuXLEept5-KYg0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q", - "url":"http:\/\/podunk.edu", - "url_sig":"T8Bp7j5DHHhQDCFcAHXfuhUfGk2P3inPbImwaXXF1xJd3TGgluoXyyKDx6WDm07x0hqbupoAoZB1qBP3_WfvWiJVAK4N1FD77EOYttUEHZ7L43xy5PCpojJQmkppGbPJc2jnTIc_F1vvGvw5fv8gBWZvPqTdb6LWF6FLrzwesZpi7j2rsioZ3wyUkqb5TDZaNNeWQrIEYXrEnWkRI_qTSOzx0dRTsGO6SpU1fPWuOOYMZG8Nh18nay0kLpxReuHCiCdxjXRVvk5k9rkcMbDBJcBovhiSioPKv_yJxcZVBATw3z3TTE95kGi4wxCEenxwhSpvouwa5b0hT7NS4Ay70QaxoKiLb3ZjhZaUUn4igCyZM0h6fllR5I6J_sAQxiMYD0v5ouIlb0u8YVMni93j3zlqMWdDUZ4WgTI7NNbo8ug9NQDHd92TPmSE1TytPTgya3tsFMzwyq0LZ0b-g-zSXWIES__jKQ7vAtIs9EwlPxqJXEDDniZ2AJ6biXRYgE2Kd6W_nmI7w31igwQTms3ecXe5ENI3ckEPUAq__llNnND7mxp5ZrdXzd5HHU9slXwDShYcW3yDeQLEwAVomTGSFpBrCX8W77n9hF3JClkWaeS4QcZ3xUtsSS81yLrp__ifFfQqx9_Be89WVyIOoF4oydr08EkZ8zwlAsbZLG7eLXY" - }, - "callback":"\/post", - "version":1, - "secret":"1eaa6613699be6ebb2adcefa5379c61a3678aa0df89025470fac871431b70467", - "secret_sig":"0uShifsvhHnxnPIlDM9lWuZ1hSJTrk3NN9Ds6AKpyNRqf3DUdz81-Xvs8I2kj6y5vfFtm-FPKAqu77XP05r74vGaWbqb1r8zpWC7zxXakVVOHHC4plG6rLINjQzvdSFKCQb5R_xtGsPPfvuE24bv4fvN4ZG2ILvb6X4Dly37WW_HXBqBnUs24mngoTxFaPgNmz1nDQNYQu91-ekX4-BNaovjDx4tP379qIG3-NygHTjFoOMDVUvs-pOPi1kfaoMjmYF2mdZAmVYS2nNLWxbeUymkHXF8lT_iVsJSzyaRFJS1Iqn7zbvwH1iUBjD_pB9EmtNmnUraKrCU9eHES27xTwD-yaaH_GHNc1XwXNbhWJaPFAm35U8ki1Le4WbUVRluFx0qwVqlEF3ieGO84PMidrp51FPm83B_oGt80xpvf6P8Ht5WvVpytjMU8UG7-js8hAzWQeYiK05YTXk-78xg0AO6NoNe_RSRk05zYpF6KlA2yQ_My79rZBv9GFt4kUfIxNjd9OiV1wXdidO7Iaq_Q" - } - - -Type: is the message type. One of 'notify', 'purge' refresh' 'force_refresh', 'auth_check', 'ping' or 'pickup'. The packet contents vary by message type. Here we will describe the 'notify' packet. - -Sender is an array of four components. - -The guid of the sender is typically a 64 character base64url encoded string. This is generated when an identity is created and an attempt is made that it be unique; though this isn't required. - -The guid_sig is the RSA signature of the guid, signed by the sender's private key. - -url is the base url of the location this post is originating from. - -url_sig is the RSA signature of url, signed by the sender's private key. - - -These four elements provide a portable identity. We can contact the URL provided and download a zot info packet to obtain the public key of the sender, and use that to verify the sender guid and the posting URL signatures. - - -callback is a string to be appended onto the url which identifies the zot communications endpoint on this system. It is typically the string "/post". - -version is the zot protocol identifier, to allow future protocol revisions to co-exist. - -secret is a 64-char string which is randomly generated by the sending site. - -secret_sig is the RSA signature of the secret, signed with the sender's private key. - -#include doc/macros/main_footer.bb; diff --git a/include/api_zot.php b/include/api_zot.php index 60cb288af..0881211d0 100644 --- a/include/api_zot.php +++ b/include/api_zot.php @@ -1,6 +1,8 @@ <?php function zot_api_init() { + api_register_func('api/red/version','api_zot_version',false); + api_register_func('api/z/1.0/version','api_zot_version',false); api_register_func('api/export/basic','api_export_basic', true); api_register_func('api/red/channel/export/basic','api_export_basic', true); api_register_func('api/z/1.0/channel/export/basic','api_export_basic', true); @@ -28,11 +30,12 @@ api_register_func('api/z/1.0/group','api_group', true); api_register_func('api/red/xchan','api_red_xchan',true); api_register_func('api/z/1.0/xchan','api_red_xchan',true); - api_register_func('api/red/item/new','red_item_new', true); - api_register_func('api/z/1.0/item/new','red_item_new', true); + api_register_func('api/red/item/update','zot_item_update', true); + api_register_func('api/z/1.0/item/update','zot_item_update', true); api_register_func('api/red/item/full','red_item', true); api_register_func('api/z/1.0/item/full','red_item', true); + api_register_func('api/z/1.0/network/stream','api_network_stream', true); api_register_func('api/z/1.0/abook','api_zot_abook_xchan',true); api_register_func('api/z/1.0/abconfig','api_zot_abconfig',true); api_register_func('api/z/1.0/perm_allowed','api_zot_perm_allowed',true); @@ -41,6 +44,22 @@ } + function api_zot_version($type) { + + if($type === 'xml') { + header('Content-type: application/xml'); + echo '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" . '<version>' . Zotlabs\Lib\System::get_project_version() . '</version>' . "\r\n"; + killme(); + } + elseif($type === 'json') { + header('Content-type: application/json'); + echo '"' . Zotlabs\Lib\System::get_project_version() . '"'; + killme(); + } + } + + + /* * Red basic channel export */ @@ -55,29 +74,90 @@ } + function api_network_stream($type) { + if(api_user() === false) { + logger('api_channel_stream: no user'); + return false; + } + + $channel = channelx_by_n(api_user()); + if(! $channel) + return false; + + + if($_SERVER['REQUEST_METHOD'] == 'POST') { + // json_return_and_die(post_activity_item($_REQUEST)); + } + else { + $mindate = (($_REQUEST['mindate']) ? datetime_convert('UTC','UTC',$_REQUEST['mindate']) : ''); + if(! $mindate) + $mindate = datetime_convert('UTC','UTC', 'now - 14 days'); + + $arr = $_REQUEST; + $ret = []; + $i = items_fetch($arr,App::get_channel(),get_observer_hash()); + if($i) { + foreach($i as $iv) { + $ret[] = encode_item($iv); + } + } + + json_return_and_die($ret); + } + } + + + + + + function api_channel_stream($type) { if(api_user() === false) { logger('api_channel_stream: no user'); return false; } + $channel = channelx_by_n(api_user()); + if(! $channel) + return false; + + if($_SERVER['REQUEST_METHOD'] == 'POST') { json_return_and_die(post_activity_item($_REQUEST)); } else { - // fetch stream + $mindate = (($_REQUEST['mindate']) ? datetime_convert('UTC','UTC',$_REQUEST['mindate']) : ''); + if(! $mindate) + $mindate = datetime_convert('UTC','UTC', 'now - 14 days'); + json_return_and_die(zot_feed($channel['channel_id'],$channel['channel_hash'],[ 'mindate' => $mindate ])); } } function api_attach_list($type) { + if(api_user() === false) + return false; + logger('api_user: ' . api_user()); - json_return_and_die(attach_list_files(api_user(),get_observer_hash(),'','','','created asc')); + $hash = ((array_key_exists('filehash',$_REQUEST)) ? $_REQUEST['filehash'] : ''); + $filename = ((array_key_exists('filename',$_REQUEST)) ? $_REQUEST['filename'] : ''); + $filetype = ((array_key_exists('filetype',$_REQUEST)) ? $_REQUEST['filetype'] : ''); + $start = ((array_key_exists('start',$_REQUEST)) ? intval($_REQUEST['start']) : 0); + $records = ((array_key_exists('records',$_REQUEST)) ? intval($_REQUEST['records']) : 0); + + $x = attach_list_files(api_user(),get_observer_hash(),$hash,$filename,$filetype,'created asc',$start,$records); + if($start || $records) { + $x['start'] = $start; + $x['records'] = count($x['results']); + } + + json_return_and_die($x); } function api_file_meta($type) { - if (api_user()===false) return false; + if(api_user() === false) + return false; if(! $_REQUEST['file_id']) return false; $r = q("select * from attach where uid = %d and hash = '%s' limit 1", intval(api_user()), @@ -94,14 +174,15 @@ function api_file_data($type) { - if (api_user()===false) return false; + if(api_user() === false) + return false; if(! $_REQUEST['file_id']) return false; $start = (($_REQUEST['start']) ? intval($_REQUEST['start']) : 0); $length = (($_REQUEST['length']) ? intval($_REQUEST['length']) : 0); - $r = q("select * from attach where uid = %d and hash = '%s' limit 1", + $r = q("select * from attach where uid = %d and hash like '%s' limit 1", intval(api_user()), - dbesc($_REQUEST['file_id']) + dbesc($_REQUEST['file_id'] . '%') ); if($r) { $ptr = $r[0]; @@ -135,8 +216,10 @@ function api_file_export($type) { - if (api_user()===false) return false; - if(! $_REQUEST['file_id']) return false; + if(api_user() === false) + return false; + if(! $_REQUEST['file_id']) + return false; $ret = attach_export_data(api_user(),$_REQUEST['file_id']); if($ret) { @@ -147,7 +230,8 @@ function api_file_detail($type) { - if (api_user()===false) return false; + if(api_user() === false) + return false; if(! $_REQUEST['file_id']) return false; $r = q("select * from attach where uid = %d and hash = '%s' limit 1", intval(api_user()), @@ -170,16 +254,21 @@ function api_albums($type) { + if(api_user() === false) + return false; json_return_and_die(photos_albums_list(App::get_channel(),App::get_observer())); } function api_photos($type) { + if(api_user() === false) + return false; $album = $_REQUEST['album']; json_return_and_die(photos_list_photos(App::get_channel(),App::get_observer(),$album)); } function api_photo_detail($type) { - if (api_user()===false) return false; + if(api_user() === false) + return false; if(! $_REQUEST['photo_id']) return false; $scale = ((array_key_exists('scale',$_REQUEST)) ? intval($_REQUEST['scale']) : 0); $r = q("select * from photo where uid = %d and resource_id = '%s' and imgscale = %d limit 1", @@ -237,8 +326,8 @@ } if($r) { - $x = q("select * from group_member left join xchan on group_member.xchan = xchan.xchan_hash - left join abook on abook_xchan = xchan_hash where gid = %d", + $x = q("select * from group_member left join abook on abook_xchan = xchan and abook_channel = group_member.uid left join xchan on group_member.xchan = xchan.xchan_hash + where gid = %d", intval($r[0]['id']) ); json_return_and_die($x); @@ -258,14 +347,12 @@ function api_red_xchan($type) { - logger('api_xchan'); - if(api_user() === false) return false; logger('api_xchan'); require_once('include/hubloc.php'); - if($_SERVER['REQUEST_METHOD'] === 'POST') { + if($_SERVER['REQUEST_METHOD'] === 'POST') { $r = xchan_store($_REQUEST); } $r = xchan_fetch($_REQUEST); @@ -341,15 +428,15 @@ } - function red_item_new($type) { + function zot_item_update($type) { if (api_user() === false) { - logger('api_red_item_new: no user'); + logger('api_red_item_store: no user'); return false; } - logger('api_red_item_new: REQUEST ' . print_r($_REQUEST,true)); - logger('api_red_item_new: FILES ' . print_r($_FILES,true)); + logger('api_red_item_store: REQUEST ' . print_r($_REQUEST,true)); + logger('api_red_item_store: FILES ' . print_r($_FILES,true)); // set this so that the item_post() function is quiet and doesn't redirect or emit json @@ -360,11 +447,10 @@ if(x($_FILES,'media')) { $_FILES['userfile'] = $_FILES['media']; // upload the image if we have one - $_REQUEST['silent']='1'; //tell wall_upload function to return img info instead of echo - $mod = new Zotlabs\Module\Wall_upload(); + $mod = new Zotlabs\Module\Wall_attach(); $media = $mod->post(); - if(strlen($media)>0) - $_REQUEST['body'] .= "\n\n".$media; + if($media) + $_REQUEST['body'] .= "\n\n" . $media; } $mod = new Zotlabs\Module\Item(); diff --git a/include/attach.php b/include/attach.php index ac0185f5d..ba2f60a90 100644 --- a/include/attach.php +++ b/include/attach.php @@ -197,13 +197,13 @@ function attach_list_files($channel_id, $observer, $hash = '', $filename = '', $ $sql_extra .= protect_sprintf(" and hash = '" . dbesc($hash) . "' "); if($filename) - $sql_extra .= protect_sprintf(" and filename like '@" . dbesc($filename) . "@' "); + $sql_extra .= protect_sprintf(" and filename like '%" . dbesc($filename) . "%' "); if($filetype) - $sql_extra .= protect_sprintf(" and filetype like '@" . dbesc($filetype) . "@' "); + $sql_extra .= protect_sprintf(" and filetype like '%" . dbesc($filetype) . "%' "); if($entries) - $limit = " limit " . intval($start) . ", " . intval(entries) . " "; + $limit = " limit " . intval($start) . ", " . intval($entries) . " "; // Retrieve all columns except 'data' diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index da02d6cac..1759154f0 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -128,8 +128,16 @@ function markdown_to_bb($s, $use_zrl = false) { $s = str_replace("
","\r",$s); $s = str_replace("
\n>","",$s); + if(is_array($s)) { + btlogger('markdown_to_bb called with array. ' . print_r($s,true), LOGGER_NORMAL, LOG_WARNING); + return ''; + } + $s = html_entity_decode($s,ENT_COMPAT,'UTF-8'); + // if empty link text replace with the url + $s = preg_replace("/\[\]\((.*?)\)/ism",'[$1]($1)',$s); + // first try plustags $s = preg_replace_callback('/\@\{(.+?)\; (.+?)\@(.+?)\}\+/','diaspora_mention_callback',$s); @@ -155,10 +163,10 @@ function markdown_to_bb($s, $use_zrl = false) { // Convert everything that looks like a link to a link if($use_zrl) { $s = str_replace(array('[img','/img]'),array('[zmg','/zmg]'),$s); - $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[zrl=$2$3]$2$3[/zrl]',$s); + $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\(\)]+)/ism", '$1[zrl=$2$3]$2$3[/zrl]',$s); } else { - $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s); + $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\(\)]+)/ism", '$1[url=$2$3]$2$3[/url]',$s); } // remove duplicate adjacent code tags @@ -427,6 +435,12 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) { $Text = preg_replace_callback('/\@\!?\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/([zu])rl\]/i', 'bb2dmention_callback', $Text); + // strip map tags, as the rendering is performed in bbcode() and the resulting output + // is not compatible with Diaspora (at least in the case of openstreetmap and probably + // due to the inclusion of an html iframe) + + $Text = preg_replace("/\[map\=(.*?)\]/ism", '$1', $Text); + $Text = preg_replace("/\[map\](.*?)\[\/map\]/ism", '$1', $Text); // Converting images with size parameters to simple images. Markdown doesn't know it. $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text); diff --git a/include/bbcode.php b/include/bbcode.php index 21bc6de77..00d22d26d 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -511,11 +511,25 @@ function bb_code($match) { return '<code class="inline-code">' . trim($match[1]) . '</code>'; } +function bb_code_options($match) { + if(strpos($match[0], "<br />")) { + $class = ""; + } else { + $class = "inline-code"; + } + if(strpos($match[1], 'nowrap')) { + $style = "overflow-x: auto; white-space: pre;"; + } else { + $style = ""; + } + return '<code class="'. $class .'" style="'. $style .'">' . trim($match[2]) . '</code>'; +} + function bb_highlight($match) { - if(in_array(strtolower($match[1]),['php','css','mysql','sql','abap','diff','html','perl','ruby', + $lang = ((in_array(strtolower($match[1]),['php','css','mysql','sql','abap','diff','html','perl','ruby', 'vbscript','avrc','dtd','java','xml','cpp','python','javascript','js','json','sh'])) - return text_highlight($match[2],strtolower($match[1])); - return $match[0]; + ? strtolower($match[1]) : 'php' ); + return text_highlight($match[2],$lang); } function bb_fixtable_lf($match) { @@ -529,7 +543,71 @@ function bb_fixtable_lf($match) { } +function parseIdentityAwareHTML($Text) { + // Hide all [noparse] contained bbtags by spacefying them + if (strpos($Text,'[noparse]') !== false) { + $Text = preg_replace_callback("/\[noparse\](.*?)\[\/noparse\]/ism", 'bb_spacefy',$Text); + } + if (strpos($Text,'[nobb]') !== false) { + $Text = preg_replace_callback("/\[nobb\](.*?)\[\/nobb\]/ism", 'bb_spacefy',$Text); + } + if (strpos($Text,'[pre]') !== false) { + $Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_spacefy',$Text); + } + // process [observer] tags before we do anything else because we might + // be stripping away stuff that then doesn't need to be worked on anymore + + $observer = App::get_observer(); + + if ((strpos($Text,'[/observer]') !== false) || (strpos($Text,'[/rpost]') !== false)) { + if ($observer) { + $Text = preg_replace("/\[observer\=1\](.*?)\[\/observer\]/ism", '$1', $Text); + $Text = preg_replace("/\[observer\=0\].*?\[\/observer\]/ism", '', $Text); + $Text = preg_replace_callback("/\[rpost(=(.*?))?\](.*?)\[\/rpost\]/ism", 'rpost_callback', $Text); + } else { + $Text = preg_replace("/\[observer\=1\].*?\[\/observer\]/ism", '', $Text); + $Text = preg_replace("/\[observer\=0\](.*?)\[\/observer\]/ism", '$1', $Text); + $Text = preg_replace("/\[rpost(=.*?)?\](.*?)\[\/rpost\]/ism", '', $Text); + } + } + // replace [observer.baseurl] + if ($observer) { + $s1 = '<span class="bb_observer" title="' . t('Different viewers will see this text differently') . '">'; + $s2 = '</span>'; + $obsBaseURL = $observer['xchan_connurl']; + $obsBaseURL = preg_replace("/\/poco\/.*$/", '', $obsBaseURL); + $Text = str_replace('[observer.baseurl]', $obsBaseURL, $Text); + $Text = str_replace('[observer.url]',$observer['xchan_url'], $Text); + $Text = str_replace('[observer.name]',$s1 . $observer['xchan_name'] . $s2, $Text); + $Text = str_replace('[observer.address]',$s1 . $observer['xchan_addr'] . $s2, $Text); + $Text = str_replace('[observer.webname]', substr($observer['xchan_addr'],0,strpos($observer['xchan_addr'],'@')), $Text); + $Text = str_replace('[observer.photo]',$s1 . '[zmg]'.$observer['xchan_photo_l'].'[/zmg]' . $s2, $Text); + } else { + $Text = str_replace('[observer.baseurl]', '', $Text); + $Text = str_replace('[observer.url]','', $Text); + $Text = str_replace('[observer.name]','', $Text); + $Text = str_replace('[observer.address]','', $Text); + $Text = str_replace('[observer.webname]','',$Text); + $Text = str_replace('[observer.photo]','', $Text); + } + + $Text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),get_config('system','sitename')),$Text); + + + // Unhide all [noparse] contained bbtags unspacefying them + // and triming the [noparse] tag. + if (strpos($Text,'[noparse]') !== false) { + $Text = preg_replace_callback("/\[noparse\](.*?)\[\/noparse\]/ism", 'bb_unspacefy_and_trim', $Text); + } + if (strpos($Text,'[nobb]') !== false) { + $Text = preg_replace_callback("/\[nobb\](.*?)\[\/nobb\]/ism", 'bb_unspacefy_and_trim', $Text); + } + if (strpos($Text,'[pre]') !== false) { + $Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_unspacefy_and_trim', $Text); + } + return $Text; +} // BBcode 2 HTML was written by WAY2WEB.net // extended to work with Mistpark/Friendica/Redmatrix/Hubzilla - Mike Macgirvin @@ -661,7 +739,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) // Perform URL Search - $urlchars = '[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,\@]'; + $urlchars = '[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,\@\(\)]'; if (strpos($Text,'http') !== false) { if($tryoembed) { @@ -745,6 +823,12 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) if (strpos($Text,'[/color]') !== false) { $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])ism", "<span style=\"color: $1;\">$2</span>", $Text); } + // Check for colored text + if (strpos($Text,'[/hl]') !== false) { + $Text = preg_replace("(\[hl\](.*?)\[\/hl\])ism", "<span style=\"background-color: yellow;\">$1</span>", $Text); + $Text = preg_replace("(\[hl=(.*?)\](.*?)\[\/hl\])ism", "<span style=\"background-color: $1;\">$2</span>", $Text); + } + // Check for sized text // [size=50] --> font-size: 50px (with the unit). if (strpos($Text,'[/size]') !== false) { @@ -776,12 +860,14 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) $Text = preg_replace("(\[h6\](.*?)\[\/h6\])ism",'<h6>$1</h6>',$Text); } // Check for table of content without params - if (strpos($Text,'[toc]') !== false) { - $Text = preg_replace("/\[toc\]/ism",'<ul id="toc"></ul>',$Text); + while(strpos($Text,'[toc]') !== false) { + $toc_id = 'toc-' . random_string(10); + $Text = preg_replace("/\[toc\]/ism", '<ul id="' . $toc_id . '" class="toc" data-toc=".section-content-wrapper"></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1); } // Check for table of content with params - if (strpos($Text,'[toc') !== false) { - $Text = preg_replace("/\[toc([^\]]+?)\]/ism",'<ul$1></ul>',$Text); + while(strpos($Text,'[toc') !== false) { + $toc_id = 'toc-' . random_string(10); + $Text = preg_replace("/\[toc([^\]]+?)\]/ism", '<ul id="' . $toc_id . '" class="toc"$1></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1); } // Check for centered text if (strpos($Text,'[/center]') !== false) { @@ -841,8 +927,8 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) } if (strpos($Text,'[/table]') !== false) { $Text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '<table>$1</table>', $Text); - $Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '<table border="1" >$1</table>', $Text); - $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '<table border="0" >$1</table>', $Text); + $Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '<table class="table table-responsive table-bordered" >$1</table>', $Text); + $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '<table class="table table-responsive" >$1</table>', $Text); } $Text = str_replace('</tr><br /><tr>', "</tr>\n<tr>", $Text); $Text = str_replace('[hr]', '<hr />', $Text); @@ -861,6 +947,11 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) $Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/ism", 'bb_code', $Text); } + // Check for [code options] text + if (strpos($Text,'[code ') !== false) { + $Text = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism", 'bb_code_options', $Text); + } + // Check for [spoiler] text $endlessloop = 0; while ((strpos($Text, "[/spoiler]")!== false) and (strpos($Text, "[spoiler]") !== false) and (++$endlessloop < 20)) { @@ -1017,15 +1108,15 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) $Text = preg_replace("/\[zaudio\](.*?)\[\/zaudio\]/", '<a class="zid" href="$1" target="_blank" >$1</a>', $Text); } - if ($tryoembed){ - if (strpos($Text,'[/iframe]') !== false) { - $Text = preg_replace_callback("/\[iframe\](.*?)\[\/iframe\]/ism", 'bb_iframe', $Text); - } - } else { - if (strpos($Text,'[/iframe]') !== false) { - $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '<a href="$1" target="_blank" >$1</a>', $Text); - } - } +// if ($tryoembed){ +// if (strpos($Text,'[/iframe]') !== false) { +// $Text = preg_replace_callback("/\[iframe\](.*?)\[\/iframe\]/ism", 'bb_iframe', $Text); +// } +// } else { +// if (strpos($Text,'[/iframe]') !== false) { +// $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '<a href="$1" target="_blank" >$1</a>', $Text); +// } +// } // oembed tag $Text = oembed_bbcode2html($Text); @@ -1077,9 +1168,9 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) $Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&\;(.*?)\>/ism", '<$1$2=$3&$4>', $Text); // This is subtle - it's an XSS filter. It only accepts links with a protocol scheme and where - // the scheme begins with z (zhttp), h (http(s)), f (ftp), m (mailto), and named anchors. + // the scheme begins with z (zhttp), h (http(s)), f (ftp(s)), m (mailto), t (tel) and named anchors. - $Text = preg_replace("/\<(.*?)(src|href)=\"[^zhfm#](.*?)\>/ism", '<$1$2="">', $Text); + $Text = preg_replace("/\<(.*?)(src|href)=\"[^zhfmt#](.*?)\>/ism", '<$1$2="">', $Text); $Text = bb_replace_images($Text, $saved_images); diff --git a/include/channel.php b/include/channel.php index 4fc873402..caf3ded71 100644 --- a/include/channel.php +++ b/include/channel.php @@ -1218,7 +1218,7 @@ function advanced_profile(&$a) { $profile['marital'] = array( t('Status:'), App::$profile['marital']); if(App::$profile['partner']) - $profile['marital']['partner'] = bbcode(App::$profile['partner']); + $profile['marital']['partner'] = zidify_links(bbcode(App::$profile['partner'])); if(strlen(App::$profile['howlong']) && App::$profile['howlong'] > NULL_DATE) { $profile['howlong'] = relative_date(App::$profile['howlong'], t('for %1$d %2$s')); diff --git a/include/config.php b/include/config.php index 44ef29614..0b0e639ab 100644 --- a/include/config.php +++ b/include/config.php @@ -35,8 +35,8 @@ function load_config($family) { Zlib\Config::Load($family); } -function get_config($family, $key) { - return Zlib\Config::Get($family,$key); +function get_config($family, $key, $default = false) { + return Zlib\Config::Get($family,$key,$default); } function set_config($family, $key, $value) { @@ -51,8 +51,8 @@ function load_pconfig($uid) { Zlib\PConfig::Load($uid); } -function get_pconfig($uid, $family, $key, $instore = false) { - return Zlib\PConfig::Get($uid,$family,$key,$instore = false); +function get_pconfig($uid, $family, $key, $default = false) { + return Zlib\PConfig::Get($uid,$family,$key,$default); } function set_pconfig($uid, $family, $key, $value) { @@ -67,8 +67,8 @@ function load_xconfig($xchan) { Zlib\XConfig::Load($xchan); } -function get_xconfig($xchan, $family, $key) { - return Zlib\XConfig::Get($xchan,$family,$key); +function get_xconfig($xchan, $family, $key, $default = false) { + return Zlib\XConfig::Get($xchan,$family,$key, $default); } function set_xconfig($xchan, $family, $key, $value) { @@ -83,8 +83,8 @@ function load_aconfig($account_id) { Zlib\AConfig::Load($account_id); } -function get_aconfig($account_id, $family, $key) { - return Zlib\AConfig::Get($account_id, $family, $key); +function get_aconfig($account_id, $family, $key, $default = false) { + return Zlib\AConfig::Get($account_id, $family, $key, $default); } function set_aconfig($account_id, $family, $key, $value) { @@ -99,8 +99,8 @@ function load_abconfig($chan, $xhash, $family = '') { return Zlib\AbConfig::Load($chan,$xhash,$family); } -function get_abconfig($chan,$xhash,$family,$key) { - return Zlib\AbConfig::Get($chan,$xhash,$family,$key); +function get_abconfig($chan,$xhash,$family,$key, $default = false) { + return Zlib\AbConfig::Get($chan,$xhash,$family,$key, $default); } function set_abconfig($chan,$xhash,$family,$key,$value) { @@ -115,8 +115,8 @@ function load_iconfig(&$item) { Zlib\IConfig::Load($item); } -function get_iconfig(&$item, $family, $key) { - return Zlib\IConfig::Get($item, $family, $key); +function get_iconfig(&$item, $family, $key, $default = false) { + return Zlib\IConfig::Get($item, $family, $key, $default); } function set_iconfig(&$item, $family, $key, $value, $sharing = false) { diff --git a/include/connections.php b/include/connections.php index b08d046b3..31e941e95 100644 --- a/include/connections.php +++ b/include/connections.php @@ -630,3 +630,273 @@ function random_profile() { return ''; } +function update_vcard($arr,$vcard = null) { + + $fn = $arr['fn']; + + + // This isn't strictly correct and could be a cause for concern. + // 'N' => array_reverse(explode(' ', $fn)) + + + // What we really want is + // 'N' => Adams;John;Quincy;Reverend,Dr.;III + // which is a very difficult parsing problem especially if you allow + // the surname to contain spaces. The only way to be sure to get it + // right is to provide a form to input all the various fields and not + // try to extract it from the FN. + + if(! $vcard) { + $vcard = new \Sabre\VObject\Component\VCard([ + 'FN' => $fn, + 'N' => array_reverse(explode(' ', $fn)) + ]); + } + else { + $vcard->FN = $fn; + $vcard->N = array_reverse(explode(' ', $fn)); + } + + $org = $arr['org']; + if($org) { + $vcard->ORG = $org; + } + + $title = $arr['title']; + if($title) { + $vcard->TITLE = $title; + } + + $tel = $arr['tel']; + $tel_type = $arr['tel_type']; + if($tel) { + $i = 0; + foreach($tel as $item) { + if($item) { + $vcard->add('TEL', $item, ['type' => $tel_type[$i]]); + } + $i++; + } + } + + $email = $arr['email']; + $email_type = $arr['email_type']; + if($email) { + $i = 0; + foreach($email as $item) { + if($item) { + $vcard->add('EMAIL', $item, ['type' => $email_type[$i]]); + } + $i++; + } + } + + $impp = $arr['impp']; + $impp_type = $arr['impp_type']; + if($impp) { + $i = 0; + foreach($impp as $item) { + if($item) { + $vcard->add('IMPP', $item, ['type' => $impp_type[$i]]); + } + $i++; + } + } + + $url = $arr['url']; + $url_type = $arr['url_type']; + if($url) { + $i = 0; + foreach($url as $item) { + if($item) { + $vcard->add('URL', $item, ['type' => $url_type[$i]]); + } + $i++; + } + } + + $adr = $arr['adr']; + $adr_type = $arr['adr_type']; + + if($adr) { + $i = 0; + foreach($adr as $item) { + if($item) { + $vcard->add('ADR', $item, ['type' => $adr_type[$i]]); + } + $i++; + } + } + + $note = $arr['note']; + if($note) { + $vcard->NOTE = $note; + } + + return $vcard->serialize(); + +} + +function get_vcard_array($vc,$id) { + + $photo = ''; + if($vc->PHOTO) { + $photo_value = strtolower($vc->PHOTO->getValueType()); // binary or uri + if($photo_value === 'binary') { + $photo_type = strtolower($vc->PHOTO['TYPE']); // mime jpeg, png or gif + $photo = 'data:image/' . $photo_type . ';base64,' . base64_encode((string)$vc->PHOTO); + } + else { + $url = parse_url((string)$vc->PHOTO); + $photo = 'data:' . $url['path']; + } + } + + $fn = ''; + if($vc->FN) { + $fn = (string) escape_tags($vc->FN); + } + + $org = ''; + if($vc->ORG) { + $org = (string) escape_tags($vc->ORG); + } + + $title = ''; + if($vc->TITLE) { + $title = (string) escape_tags($vc->TITLE); + } + + $tels = []; + if($vc->TEL) { + foreach($vc->TEL as $tel) { + $type = (($tel['TYPE']) ? vcard_translate_type((string)$tel['TYPE']) : ''); + $tels[] = [ + 'type' => $type, + 'nr' => (string) escape_tags($tel) + ]; + } + } + $emails = []; + if($vc->EMAIL) { + foreach($vc->EMAIL as $email) { + $type = (($email['TYPE']) ? vcard_translate_type((string)$email['TYPE']) : ''); + $emails[] = [ + 'type' => $type, + 'address' => (string) escape_tags($email) + ]; + } + } + + $impps = []; + if($vc->IMPP) { + foreach($vc->IMPP as $impp) { + $type = (($impp['TYPE']) ? vcard_translate_type((string)$impp['TYPE']) : ''); + $impps[] = [ + 'type' => $type, + 'address' => (string) escape_tags($impp) + ]; + } + } + + $urls = []; + if($vc->URL) { + foreach($vc->URL as $url) { + $type = (($url['TYPE']) ? vcard_translate_type((string)$url['TYPE']) : ''); + $urls[] = [ + 'type' => $type, + 'address' => (string) escape_tags($url) + ]; + } + } + + $adrs = []; + if($vc->ADR) { + foreach($vc->ADR as $adr) { + $type = (($adr['TYPE']) ? vcard_translate_type((string)$adr['TYPE']) : ''); + $adrs[] = [ + 'type' => $type, + 'address' => escape_tags($adr->getParts()) + ]; + } + } + + $note = ''; + if($vc->NOTE) { + $note = (string) escape_tags($vc->NOTE); + } + + $card = [ + 'id' => $id, + 'photo' => $photo, + 'fn' => $fn, + 'org' => $org, + 'title' => $title, + 'tels' => $tels, + 'emails' => $emails, + 'impps' => $impps, + 'urls' => $urls, + 'adrs' => $adrs, + 'note' => $note + ]; + + return $card; + +} + + +function vcard_translate_type($type) { + + if(!$type) + return; + + $type = strtoupper($type); + + $map = [ + 'CELL' => t('Mobile'), + 'HOME' => t('Home'), + 'HOME,VOICE' => t('Home, Voice'), + 'HOME,FAX' => t('Home, Fax'), + 'WORK' => t('Work'), + 'WORK,VOICE' => t('Work, Voice'), + 'WORK,FAX' => t('Work, Fax'), + 'OTHER' => t('Other') + ]; + + if (array_key_exists($type, $map)) { + return [$type, $map[$type]]; + } + else { + return [$type, t('Other') . ' (' . $type . ')']; + } +} + + +function vcard_query(&$r) { + + $arr = []; + + if($r && is_array($r) && count($r)) { + $uid = $r[0]['abook_channel']; + foreach($r as $rv) { + if($rv['abook_xchan'] && (! in_array("'" . dbesc($rv['abook_xchan']) . "'",$arr))) + $arr[] = "'" . dbesc($rv['abook_xchan']) . "'"; + } + } + + if($arr) { + $a = q("select * from abconfig where chan = %d and xchan in (" . protect_sprintf(implode(',', $arr)) . ") and cat = 'system' and k = 'vcard'", + intval($uid) + ); + if($a) { + foreach($a as $av) { + for($x = 0; $x < count($r); $x ++) { + if($r[$x]['abook_xchan'] == $av['xchan']) { + $vctmp = \Sabre\VObject\Reader::read($av['v']); + $r[$x]['vcard'] = (($vctmp) ? get_vcard_array($vctmp,$r[$x]['abook_id']) : [] ); + } + } + } + } + } +}
\ No newline at end of file diff --git a/include/conversation.php b/include/conversation.php index c260eb4a0..0ff368e6e 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -363,7 +363,7 @@ function localize_item(&$item){ if(intval($item['item_obscured']) && strlen($item['body']) && (! strpos($item['body'],'data'))) { - $item['body'] = json_encode(crypto_encapsulate($item['body'],get_config('system','pubkey'))); + $item['body'] = z_obscure($item['body']); } } @@ -473,22 +473,6 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $ if (local_channel()) load_pconfig(local_channel(),''); - $arr_blocked = null; - - if (local_channel()) - $str_blocked = get_pconfig(local_channel(),'system','blocked'); - if (! local_channel() && ($mode == 'network')) { - $sys = get_sys_channel(); - $id = $sys['channel_id']; - $str_blocked = get_pconfig($id,'system','blocked'); - } - - if ($str_blocked) { - $arr_blocked = explode(',',$str_blocked); - for ($x = 0; $x < count($arr_blocked); $x ++) - $arr_blocked[$x] = trim($arr_blocked[$x]); - } - $profile_owner = 0; $page_writeable = false; $live_update_div = ''; @@ -615,17 +599,13 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $ foreach($items as $item) { - if($arr_blocked) { - $blocked = false; - foreach($arr_blocked as $b) { - if(($b) && (($item['author_xchan'] == $b) || ($item['owner_xchan'] == $b))) { - $blocked = true; - break; - } - } - if($blocked) - continue; - } + $x = [ 'mode' => $mode, 'item' => $item ]; + call_hooks('stream_item',$x); + + if($x['item']['blocked']) + continue; + + $item = $x['item']; $threadsid++; @@ -709,7 +689,8 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $ 'id' => (($preview) ? 'P0' : $item['item_id']), 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, $profile_url), 'profile_url' => $profile_link, - 'item_photo_menu' => item_photo_menu($item), + 'thread_action_menu' => thread_action_menu($item,$mode), + 'thread_author_menu' => thread_author_menu($item,$mode), 'name' => $profile_name, 'sparkle' => $sparkle, 'lock' => $lock, @@ -787,28 +768,14 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $ // Check for any blocked authors - if($arr_blocked) { - $blocked = false; - foreach($arr_blocked as $b) { - if(($b) && ($item['author_xchan'] == $b)) { - $blocked = true; - break; - } - } - if($blocked) - continue; - } - // Check all the kids too + $x = [ 'mode' => $mode, 'item' => $item ]; + call_hooks('stream_item',$x); + + if($x['item']['blocked']) + continue; - if($arr_blocked && $item['children']) { - for($d = 0; $d < count($item['children']); $d ++) { - foreach($arr_blocked as $b) { - if(($b) && ($item['children'][$d]['author_xchan'] == $b)) - $item['children'][$d]['author_blocked'] = true; - } - } - } + $item = $x['item']; builtin_activity_puller($item, $conv_responses); @@ -994,6 +961,169 @@ function item_photo_menu($item){ return $o; } + +function thread_action_menu($item,$mode = '') { + + $menu = []; + + if((local_channel()) && local_channel() == $item['uid']) { + $menu[] = [ + 'menu' => 'view_source', + 'title' => t('View Source'), + 'icon' => 'eye', + 'action' => 'viewsrc(' . $item['id'] . '); return false;', + 'href' => '#' + ]; + + if(! in_array($mode, [ 'network-new', 'search', 'community'])) { + if($item['parent'] == $item['id'] && (get_observer_hash() != $item['author_xchan'])) { + $menu[] = [ + 'menu' => 'follow_thread', + 'title' => t('Follow Thread'), + 'icon' => 'plus', + 'action' => 'dosubthread(' . $item['id'] . '); return false;', + 'href' => '#' + ]; + } + + $menu[] = [ + 'menu' => 'unfollow_thread', + 'title' => t('Unfollow Thread'), + 'icon' => 'minus', + 'action' => 'dounsubthread(' . $item['id'] . '); return false;', + 'href' => '#' + ]; + } + + } + + + + + $args = [ 'item' => $item, 'mode' => $mode, 'menu' => $menu ]; + call_hooks('thread_action_menu', $args); + + return $args['menu']; + +} + +function thread_author_menu($item, $mode = '') { + + $menu = []; + + $local_channel = local_channel(); + + if($local_channel) { + if(! count(App::$contacts)) + load_contact_links($local_channel); + $channel = App::get_channel(); + $channel_hash = (($channel) ? $channel['channel_hash'] : ''); + } + + $profile_link = chanlink_hash($item['author_xchan']); + if($item['uid'] > 0) + $pm_url = z_root() . '/mail/new/?f=&hash=' . $item['author_xchan']; + + if(App::$contacts && array_key_exists($item['author_xchan'],App::$contacts)) + $contact = App::$contacts[$item['author_xchan']]; + else + if($local_channel && $item['author']['xchan_addr']) + $follow_url = z_root() . '/follow/?f=&url=' . $item['author']['xchan_addr']; + + if($contact) { + $poke_link = z_root() . '/poke/?f=&c=' . $contact['abook_id']; + if (! intval($contact['abook_self'])) + $contact_url = z_root() . '/connedit/' . $contact['abook_id']; + $posts_link = z_root() . '/network/?cid=' . $contact['abook_id']; + + $clean_url = normalise_link($item['author-link']); + } + + $rating_enabled = get_config('system','rating_enabled'); + + $ratings_url = (($rating_enabled) ? z_root() . '/ratings/' . urlencode($item['author_xchan']) : ''); + + if($profile_link) { + $menu[] = [ + 'menu' => 'view_profile', + 'title' => t('View Profile'), + 'icon' => 'fw', + 'action' => '', + 'href' => $profile_link + ]; + } + + if($posts_link) { + $menu[] = [ + 'menu' => 'view_posts', + 'title' => t('Activity/Posts'), + 'icon' => 'fw', + 'action' => '', + 'href' => $posts_link + ]; + } + + if($follow_url) { + $menu[] = [ + 'menu' => 'follow', + 'title' => t('Connect'), + 'icon' => 'fw', + 'action' => '', + 'href' => $follow_url + ]; + } + + if($contact_url) { + $menu[] = [ + 'menu' => 'connedit', + 'title' => t('Edit Connection'), + 'icon' => 'fw', + 'action' => '', + 'href' => $contact_url + ]; + } + + if($pm_url) { + $menu[] = [ + 'menu' => 'prv_message', + 'title' => t('Message'), + 'icon' => 'fw', + 'action' => '', + 'href' => $pm_url + ]; + } + + if($ratings_url) { + $menu[] = [ + 'menu' => 'ratings', + 'title' => t('Ratings'), + 'icon' => 'fw', + 'action' => '', + 'href' => $ratings_url + ]; + } + + if($poke_link) { + $menu[] = [ + 'menu' => 'poke', + 'title' => t('Poke'), + 'icon' => 'fw', + 'action' => '', + 'href' => $poke_link + ]; + } + + $args = [ 'item' => $item, 'mode' => $mode, 'menu' => $menu ]; + call_hooks('thread_author_menu', $args); + + return $args['menu']; + +} + + + + + /** * @brief Checks item to see if it is one of the builtin activities (like/dislike, event attendance, consensus items, etc.) * @@ -1266,11 +1396,11 @@ function status_editor($a, $x, $popup = false) { '$setloc' => $setloc, '$voting' => t('Toggle voting'), '$feature_voting' => $feature_voting, - '$consensus' => 0, + '$consensus' => ((array_key_exists('item',$x)) ? $x['item']['item_consensus'] : 0), '$nocommenttitle' => t('Disable comments'), '$nocommenttitlesub' => t('Toggle comments'), '$feature_nocomment' => $feature_nocomment, - '$nocomment' => 0, + '$nocomment' => ((array_key_exists('item',$x)) ? $x['item']['item_nocomment'] : 0), '$clearloc' => $clearloc, '$title' => ((x($x, 'title')) ? htmlspecialchars($x['title'], ENT_COMPAT,'UTF-8') : ''), '$placeholdertitle' => ((x($x, 'placeholdertitle')) ? $x['placeholdertitle'] : t('Title (optional)')), @@ -1434,7 +1564,7 @@ function format_location($item) { if(strpos($item['location'],'#') === 0) { $location = substr($item['location'],1); - $location = ((strpos($location,'[') !== false) ? bbcode($location) : $location); + $location = ((strpos($location,'[') !== false) ? zidify_links(bbcode($location)) : $location); } else { $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); @@ -1486,7 +1616,7 @@ function prepare_page($item) { '$author' => (($naked) ? '' : $item['author']['xchan_name']), '$auth_url' => (($naked) ? '' : zid($item['author']['xchan_url'])), '$date' => (($naked) ? '' : datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'Y-m-d H:i')), - '$title' => smilies(bbcode($item['title'])), + '$title' => zidify_links(smilies(bbcode($item['title']))), '$body' => $body['html'], '$preview' => $preview, '$link' => $link, @@ -1656,6 +1786,20 @@ function profile_tabs($a, $is_owner = false, $nickname = null){ $cal_link = '/cal/' . $nickname; } + require_once('include/security.php'); + $sql_options = item_permissions_sql($uid); + + $r = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' + and item.item_delayed = 0 and item.item_deleted = 0 + and ( iconfig.k = 'WEBPAGE' and item_type = %d ) + $sql_options limit 1", + intval($uid), + dbesc('home'), + intval(ITEM_TYPE_WEBPAGE) + ); + + $has_webpages = (($r) ? true : false); if (get_pconfig($uid, 'system', 'noprofiletabs')) return; @@ -1740,19 +1884,20 @@ function profile_tabs($a, $is_owner = false, $nickname = null){ ); } - if ($p['write_pages'] && feature_enabled($uid,'webpages')) { + if($has_webpages && feature_enabled($uid,'webpages')) { $tabs[] = array( 'label' => t('Webpages'), - 'url' => z_root() . '/webpages/' . $nickname, + 'url' => z_root() . '/page/' . $nickname . '/home', 'sel' => ((argv(0) == 'webpages') ? 'active' : ''), - 'title' => t('Manage Webpages'), + 'title' => t('View Webpages'), 'id' => 'webpages-tab', ); - } + } + if(feature_enabled($uid,'wiki') && (get_account_techlevel($account_id) > 3)) { $tabs[] = array( - 'label' => t('Wiki'), + 'label' => t('Wikis'), 'url' => z_root() . '/wiki/' . $nickname, 'sel' => ((argv(0) == 'wiki') ? 'active' : ''), 'title' => t('Wiki'), diff --git a/include/crypto.php b/include/crypto.php index bc798d919..f75390985 100644 --- a/include/crypto.php +++ b/include/crypto.php @@ -48,27 +48,122 @@ function pkcs5_unpad($text) function AES256CBC_encrypt($data,$key,$iv) { return openssl_encrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0")); - } function AES256CBC_decrypt($data,$key,$iv) { return openssl_decrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0")); +} + +function AES128CBC_encrypt($data,$key,$iv) { + $key = substr($key,0,16); + $iv = substr($iv,0,16); + return openssl_encrypt($data,'aes-128-cbc',str_pad($key,16,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0")); +} + +function AES128CBC_decrypt($data,$key,$iv) { + $key = substr($key,0,16); + $iv = substr($iv,0,16); + return openssl_decrypt($data,'aes-128-cbc',str_pad($key,16,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0")); +} + +function STD_encrypt($data,$key,$iv) { + $key = substr($key,0,32); + $iv = substr($iv,0,16); + return openssl_encrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0")); +} + +function STD_decrypt($data,$key,$iv) { + $key = substr($key,0,32); + $iv = substr($iv,0,16); + return openssl_decrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0")); +} +function CAST5CBC_encrypt($data,$key,$iv) { + $key = substr($key,0,16); + $iv = substr($iv,0,8); + return openssl_encrypt($data,'cast5-cbc',str_pad($key,16,"\0"),OPENSSL_RAW_DATA,str_pad($iv,8,"\0")); +} + +function CAST5CBC_decrypt($data,$key,$iv) { + $key = substr($key,0,16); + $iv = substr($iv,0,8); + return openssl_decrypt($data,'cast5-cbc',str_pad($key,16,"\0"),OPENSSL_RAW_DATA,str_pad($iv,8,"\0")); } function crypto_encapsulate($data,$pubkey,$alg='aes256cbc') { + $fn = strtoupper($alg) . '_encrypt'; + if($alg === 'aes256cbc') return aes_encapsulate($data,$pubkey); + return other_encapsulate($data,$pubkey,$alg); + +} + +function other_encapsulate($data,$pubkey,$alg) { + if(! $pubkey) + logger('no key. data: ' . $data); + + $fn = strtoupper($alg) . '_encrypt'; + if(function_exists($fn)) { + + // A bit hesitant to use openssl_random_pseudo_bytes() as we know + // it has been historically targeted by US agencies for 'weakening'. + // It is still arguably better than trying to come up with an + // alternative cryptographically secure random generator. + // There is little point in using the optional second arg to flag the + // assurance of security since it is meaningless if the source algorithms + // have been compromised. Also none of this matters if RSA has been + // compromised by state actors and evidence is mounting that this has + // already happened. + + $key = openssl_random_pseudo_bytes(256); + $iv = openssl_random_pseudo_bytes(256); + $result['data'] = base64url_encode($fn($data,$key,$iv),true); + // log the offending call so we can track it down + if(! openssl_public_encrypt($key,$k,$pubkey)) { + $x = debug_backtrace(); + logger('RSA failed. ' . print_r($x[0],true)); + } + + $result['alg'] = $alg; + $result['key'] = base64url_encode($k,true); + openssl_public_encrypt($iv,$i,$pubkey); + $result['iv'] = base64url_encode($i,true); + return $result; + } + else { + $x = [ 'data' => $data, 'pubkey' => $pubkey, 'alg' => $alg, 'result' => $data ]; + call_hooks('other_encapsulate', $x); + return $x['result']; + } +} + +function crypto_methods() { + + if(\Zotlabs\Lib\System::get_server_role() !== 'pro') + return [ 'aes256cbc' ]; + + // 'std' is the new project standard which is aes256cbc but transmits/receives 256-byte key and iv. + // aes256cbc is provided for compatibility with earlier zot implementations which assume 32-byte key and 16-byte iv. + // other_encapsulate() now produces these longer keys/ivs by default so that it is difficult to guess a + // particular implementation or choice of underlying implementations based on the key/iv length. + // The actual methods are responsible for deriving the actual key/iv from the provided parameters; + // possibly by truncation or segmentation - though many other methods could be used. + + $r = [ 'std', 'aes256cbc', 'aes128cbc', 'cast5cbc' ]; + call_hooks('crypto_methods',$r); + return $r; + } function aes_encapsulate($data,$pubkey) { if(! $pubkey) logger('aes_encapsulate: no key. data: ' . $data); - $key = random_string(32,RANDOM_STRING_TEXT); - $iv = random_string(16,RANDOM_STRING_TEXT); + $key = openssl_random_pseudo_bytes(32); + $iv = openssl_random_pseudo_bytes(16); $result['data'] = base64url_encode(AES256CBC_encrypt($data,$key,$iv),true); // log the offending call so we can track it down if(! openssl_public_encrypt($key,$k,$pubkey)) { @@ -89,6 +184,22 @@ function crypto_unencapsulate($data,$prvkey) { if($alg === 'aes256cbc') return aes_unencapsulate($data,$prvkey); + return other_unencapsulate($data,$prvkey,$alg); + +} + +function other_unencapsulate($data,$prvkey,$alg) { + $fn = strtoupper($alg) . '_decrypt'; + if(function_exists($fn)) { + openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey); + openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey); + return $fn(base64url_decode($data['data']),$k,$i); + } + else { + $x = [ 'data' => $data, 'prvkey' => $prvkey, 'alg' => $alg, 'result' => $data ]; + call_hooks('other_unencapsulate',$x); + return $x['result']; + } } diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php index 0b5f085af..e47f97387 100755 --- a/include/dba/dba_driver.php +++ b/include/dba/dba_driver.php @@ -98,7 +98,7 @@ class DBA { abstract class dba_driver { // legacy behavior - protected $db; + public $db; protected $pdo = array(); public $debug = 0; @@ -337,7 +337,7 @@ function db_concat($fld, $sep) { function q($sql) { $args = func_get_args(); - unset($args[0]); + array_shift($args); if(\DBA::$dba && \DBA::$dba->connected) { $stmt = vsprintf($sql, $args); diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php index e235c467b..f76e6cdd7 100755 --- a/include/dba/dba_pdo.php +++ b/include/dba/dba_pdo.php @@ -133,7 +133,7 @@ class dba_pdo extends dba_driver { } function unescapebin($str) { - if($this->driver_dbtype === 'pgsql') { + if($this->driver_dbtype === 'pgsql' && (! is_null($str))) { $x = ''; while(! feof($str)) { $x .= fread($str,8192); diff --git a/include/dir_fns.php b/include/dir_fns.php index 03cc2706a..3922730fc 100644 --- a/include/dir_fns.php +++ b/include/dir_fns.php @@ -192,17 +192,19 @@ function sync_directories($dirmode) { 'site_update' => NULL_DATE, 'site_directory' => DIRECTORY_FALLBACK_MASTER . '/dirsearch', 'site_realm' => DIRECTORY_REALM, - 'site_valid' => 1 + 'site_valid' => 1, + 'site_crypto' => 'aes256cbc' ); - $x = q("insert into site ( site_url, site_flags, site_update, site_directory, site_realm, site_valid ) - values ( '%s', %d, '%s', '%s', '%s', %d ) ", + $x = q("insert into site ( site_url, site_flags, site_update, site_directory, site_realm, site_valid, site_crypto ) + values ( '%s', %d, '%s', '%s', '%s', %d, '%s' ) ", dbesc($r[0]['site_url']), intval($r[0]['site_flags']), dbesc($r[0]['site_update']), dbesc($r[0]['site_directory']), dbesc($r[0]['site_realm']), - intval($r[0]['site_valid']) + intval($r[0]['site_valid']), + dbesc($r[0]['site_crypto']) ); $r = q("select * from site where site_flags in (%d, %d) and site_url != '%s' and site_type = %d ", diff --git a/include/event.php b/include/event.php index cbee2b759..f3366fb69 100644 --- a/include/event.php +++ b/include/event.php @@ -25,7 +25,7 @@ function format_event_html($ev) { $o = '<div class="vevent">' . "\r\n"; - $o .= '<div class="event-title"><h3><i class="fa fa-calendar"></i> ' . bbcode($ev['summary']) . '</h3></div>' . "\r\n"; + $o .= '<div class="event-title"><h3><i class="fa fa-calendar"></i> ' . zidify_links(smilies(bbcode($ev['summary']))) . '</h3></div>' . "\r\n"; $o .= '<div class="event-start"><span class="event-label">' . t('Starts:') . '</span> <span class="dtstart" title="' . datetime_convert('UTC', 'UTC', $ev['dtstart'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )) @@ -46,11 +46,11 @@ function format_event_html($ev) { $ev['dtend'] , $bd_format ))) . '</span></div>' . "\r\n"; - $o .= '<div class="event-description">' . bbcode($ev['description']) . '</div>' . "\r\n"; + $o .= '<div class="event-description">' . zidify_links(smilies(bbcode($ev['description']))) . '</div>' . "\r\n"; if(strlen($ev['location'])) $o .= '<div class="event-location"><span class="event-label"> ' . t('Location:') . '</span> <span class="location">' - . bbcode($ev['location']) + . zidify_links(smilies(bbcode($ev['location']))) . '</span></div>' . "\r\n"; $o .= '</div>' . "\r\n"; @@ -69,7 +69,7 @@ function format_event_obj($jobject) { $bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM $event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array( - '$title' => bbcode($object['title']), + '$title' => zidify_links(smilies(bbcode($object['title']))), '$dtstart_label' => t('Starts:'), '$dtstart_title' => datetime_convert('UTC', 'UTC', $object['dtstart'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )), '$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtstart'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtstart'] , $bd_format))), @@ -80,9 +80,9 @@ function format_event_obj($jobject) { )); $event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array( - '$description' => bbcode($object['description']), + '$description' => zidify_links(smilies(bbcode($object['description']))), '$location_label' => t('Location:'), - '$location' => bbcode($object['location']) + '$location' => zidify_links(smilies(bbcode($object['location']))) )); } @@ -127,12 +127,18 @@ function format_event_ical($ev) { $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['dtstart'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); if($ev['dtend'] && ! $ev['nofinish']) $o .= "\r\nDTEND:" . datetime_convert('UTC','UTC', $ev['dtend'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); - if($ev['summary']) + if($ev['summary']) { $o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']); - if($ev['location']) + $o .= "\r\nX-ZOT-SUMMARY:" . format_ical_sourcetext($ev['summary']); + } + if($ev['location']) { $o .= "\r\nLOCATION:" . format_ical_text($ev['location']); - if($ev['description']) + $o .= "\r\nX-ZOT-LOCATION:" . format_ical_sourcetext($ev['location']); + } + if($ev['description']) { $o .= "\r\nDESCRIPTION:" . format_ical_text($ev['description']); + $o .= "\r\nX-ZOT-DESCRIPTION:" . format_ical_sourcetext($ev['description']); + } if($ev['event_priority']) $o .= "\r\nPRIORITY:" . intval($ev['event_priority']); $o .= "\r\nUID:" . $ev['event_hash'] ; @@ -154,8 +160,10 @@ function format_todo_ical($ev) { $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['dtstart'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); if($ev['dtend'] && ! $ev['nofinish']) $o .= "\r\nDUE:" . datetime_convert('UTC','UTC', $ev['dtend'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); - if($ev['summary']) + if($ev['summary']) { $o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']); + $o .= "\r\nX-ZOT-SUMMARY:" . format_ical_sourcetext($ev['summary']); + } if($ev['event_status']) { $o .= "\r\nSTATUS:" . $ev['event_status']; if($ev['event_status'] === 'COMPLETED') @@ -165,10 +173,14 @@ function format_todo_ical($ev) { $o .= "\r\nPERCENT-COMPLETE:" . $ev['event_percent']; if(intval($ev['event_sequence'])) $o .= "\r\nSEQUENCE:" . $ev['event_sequence']; - if($ev['location']) + if($ev['location']) { $o .= "\r\nLOCATION:" . format_ical_text($ev['location']); - if($ev['description']) + $o .= "\r\nX-ZOT-LOCATION:" . format_ical_sourcetext($ev['location']); + } + if($ev['description']) { $o .= "\r\nDESCRIPTION:" . format_ical_text($ev['description']); + $o .= "\r\nX-ZOT-DESCRIPTION:" . format_ical_sourcetext($ev['description']); + } $o .= "\r\nUID:" . $ev['event_hash'] ; if($ev['event_priority']) $o .= "\r\nPRIORITY:" . intval($ev['event_priority']); @@ -178,7 +190,6 @@ function format_todo_ical($ev) { } - function format_ical_text($s) { require_once('include/bbcode.php'); require_once('include/html2plain.php'); @@ -186,6 +197,12 @@ function format_ical_text($s) { $s = html2plain(bbcode($s)); $s = str_replace(["\r\n","\n"],["",""],$s); return(wordwrap(str_replace(['\\',',',';'],['\\\\','\\,','\\;'],$s),72,"\r\n ",true)); + +} + +function format_ical_sourcetext($s) { + $s = base64_encode($s); + return(wordwrap(str_replace(['\\',',',';'],['\\\\','\\,','\\;'],$s),72,"\r\n ",true)); } @@ -623,12 +640,21 @@ function event_import_ical($ical, $uid) { $ev['edited'] = datetime_convert('UTC','UTC',$edited->format(\DateTime::W3C)); } - if(isset($ical->LOCATION)) + if(isset($ical->{'X-ZOT-LOCATION'})) + $ev['location'] = event_ical_get_sourcetext( (string) $ical->{'X-ZOT-LOCATION'}); + elseif(isset($ical->LOCATION)) $ev['location'] = (string) $ical->LOCATION; - if(isset($ical->DESCRIPTION)) + + if(isset($ical->{'X-ZOT-DESCRIPTION'})) + $ev['description'] = event_ical_get_sourcetext( (string) $ical->{'X-ZOT-DESCRIPTION'}); + elseif(isset($ical->DESCRIPTION)) $ev['description'] = (string) $ical->DESCRIPTION; - if(isset($ical->SUMMARY)) + + if(isset($ical->{'X-ZOT-SUMMARY'})) + $ev['summary'] = event_ical_get_sourcetext( (string) $ical->{'X-ZOT-SUMMARY'}); + elseif(isset($ical->SUMMARY)) $ev['summary'] = (string) $ical->SUMMARY; + if(isset($ical->PRIORITY)) $ev['event_priority'] = intval((string) $ical->PRIORITY); @@ -663,6 +689,10 @@ function event_import_ical($ical, $uid) { } +function event_ical_get_sourcetext($s) { + return base64_decode($s); +} + function event_import_ical_task($ical, $uid) { $c = q("select * from channel where channel_id = %d limit 1", @@ -718,12 +748,21 @@ function event_import_ical_task($ical, $uid) { $ev['edited'] = datetime_convert('UTC','UTC',$edited->format(\DateTime::W3C)); } - if(isset($ical->LOCATION)) + if(isset($ical->{'X-ZOT-LOCATION'})) + $ev['location'] = event_ical_get_sourcetext( (string) $ical->{'X-ZOT-LOCATION'}); + elseif(isset($ical->LOCATION)) $ev['location'] = (string) $ical->LOCATION; - if(isset($ical->DESCRIPTION)) + + if(isset($ical->{'X-ZOT-DESCRIPTION'})) + $ev['description'] = event_ical_get_sourcetext( (string) $ical->{'X-ZOT-DESCRIPTION'}); + elseif(isset($ical->DESCRIPTION)) $ev['description'] = (string) $ical->DESCRIPTION; - if(isset($ical->SUMMARY)) + + if(isset($ical->{'X-ZOT-SUMMARY'})) + $ev['summary'] = event_ical_get_sourcetext( (string) $ical->{'X-ZOT-SUMMARY'}); + elseif(isset($ical->SUMMARY)) $ev['summary'] = (string) $ical->SUMMARY; + if(isset($ical->PRIORITY)) $ev['event_priority'] = intval((string) $ical->PRIORITY); diff --git a/include/features.php b/include/features.php index 1ccdbf015..8ff0d2d21 100644 --- a/include/features.php +++ b/include/features.php @@ -157,6 +157,15 @@ function get_features($filtered = true) { feature_level('smart_birthdays',2), ], + [ + 'event_tz_select', + t('Event Timezone Selection'), + t('Allow event creation in timezones other than your own.'), + false, + get_config('feature_lock','event_tz_select'), + feature_level('event_tz_select',2), + ], + [ 'advanced_dirsearch', t('Advanced Directory Search'), diff --git a/include/feedutils.php b/include/feedutils.php index 1d58ec317..68ac20782 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -236,7 +236,7 @@ function get_atom_elements($feed, $item, &$author) { if(substr($author['author_link'],-1,1) == '/') $author['author_link'] = substr($author['author_link'],0,-1); - $res['mid'] = base64url_encode(unxmlify($item->get_id())); + $res['mid'] = unxmlify($item->get_id()); $res['title'] = unxmlify($item->get_title()); $res['body'] = unxmlify($item->get_content()); $res['plink'] = unxmlify($item->get_link(0)); @@ -331,6 +331,8 @@ function get_atom_elements($feed, $item, &$author) { } } + $ostatus_protocol = (($item->get_item_tags(NAMESPACE_OSTATUS,'conversation')) ? true : false); + $apps = $item->get_item_tags(NAMESPACE_STATUSNET,'notice_info'); if($apps && $apps[0]['attribs']['']['source']) { $res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source'])); @@ -343,6 +345,8 @@ function get_atom_elements($feed, $item, &$author) { $have_real_body = false; $rawenv = $item->get_item_tags(NAMESPACE_DFRN, 'env'); + if(! $rawenv) + $rawenv = $item->get_item_tags(NAMESPACE_ZOT,'source'); if($rawenv) { $have_real_body = true; $res['body'] = $rawenv[0]['data']; @@ -388,7 +392,15 @@ function get_atom_elements($feed, $item, &$author) { $res['body'] = escape_tags($res['body']); } - if($res['plink'] && $res['title']) { + + // strip title and don't apply "title-in-body" if the feed involved + // uses the OStatus stack. We need a more generalised way for the calling + // function to specify this behaviour or for plugins to alter it. + + if($ostatus_protocol) { + $res['title'] = ''; + } + elseif($res['plink'] && $res['title']) { $res['body'] = '#^[url=' . $res['plink'] . ']' . $res['title'] . '[/url]' . "\n\n" . $res['body']; $terms = array(); $terms[] = array( @@ -623,14 +635,15 @@ function get_atom_elements($feed, $item, &$author) { $res['target'] = $obj; } - $arr = array('feed' => $feed, 'item' => $item, 'result' => $res); + $arr = array('feed' => $feed, 'item' => $item, 'author' => $author, 'result' => $res); call_hooks('parse_atom', $arr); - logger('get_atom_elements: author: ' . print_r($author,true),LOGGER_DATA); - logger('get_atom_elements: ' . print_r($res,true),LOGGER_DATA); + logger('get_atom_elements: author: ' . print_r($arr['author'],true),LOGGER_DATA); + + logger('get_atom_elements: ' . print_r($arr['result'],true),LOGGER_DATA); - return $res; + return $arr['result']; } function encode_rel_links($links) { @@ -730,7 +743,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { if($deleted && is_array($contact)) { $r = q("SELECT * from item where mid = '%s' and author_xchan = '%s' and uid = %d limit 1", - dbesc(base64url_encode($mid)), + dbesc($mid), dbesc($contact['xchan_hash']), intval($importer['channel_id']) ); @@ -739,7 +752,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $item = $r[0]; if(! intval($item['item_deleted'])) { - logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . base64url_decode($item['mid']), LOGGER_DEBUG); + logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . $item['mid'], LOGGER_DEBUG); drop_item($item['id'],false); } } @@ -758,14 +771,14 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { foreach($items as $item) { $is_reply = false; - $item_id = base64url_encode($item->get_id()); + $item_id = $item->get_id(); - logger('consume_feed: processing ' . $item_id, LOGGER_DEBUG); + logger('consume_feed: processing ' . $raw_item_id, LOGGER_DEBUG); $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to'); if(isset($rawthread[0]['attribs']['']['ref'])) { $is_reply = true; - $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']); + $parent_mid = $rawthread[0]['attribs']['']['ref']; } if($is_reply) { @@ -775,7 +788,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // Have we seen it? If not, import it. - $item_id = base64url_encode($item->get_id()); + $item_id = $item->get_id(); $author = array(); $datarray = get_atom_elements($feed,$item,$author); @@ -824,7 +837,16 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { continue; } + $x = q("select mid from item where mid = '%s' and uid = %d limit 1", + dbesc($parent_mid), + intval($importer['channel_id']) + ); + if($x) + $parent_mid = $x[0]['mid']; + $datarray['parent_mid'] = $parent_mid; + + $datarray['aid'] = $importer['channel_account_id']; $datarray['uid'] = $importer['channel_id']; @@ -838,7 +860,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // Head post of a conversation. Have we seen it? If not, import it. - $item_id = base64url_encode($item->get_id()); + $item_id = $item->get_id(); $author = array(); $datarray = get_atom_elements($feed,$item,$author); @@ -983,14 +1005,14 @@ function process_salmon_feed($xml, $importer) { foreach($items as $item) { - $item_id = base64url_encode($item->get_id()); + $item_id = $item->get_id(); logger('processing ' . $item_id, LOGGER_DEBUG); $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to'); if(isset($rawthread[0]['attribs']['']['ref'])) { $is_reply = true; - $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']); + $parent_mid = $rawthread[0]['attribs']['']['ref']; } if($is_reply) @@ -1160,6 +1182,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) { $parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']); $o .= '<thr:in-reply-to ref="' . z_root() . '/display/' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n"; + } if(activity_match($item['obj_type'],ACTIVITY_OBJ_EVENT) && activity_match($item['verb'],ACTIVITY_POST)) { @@ -1206,26 +1229,67 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { if(strlen($actarg)) $o .= $actarg; - // FIXME -// $tags = item_getfeedtags($item); -// if(count($tags)) { -// foreach($tags as $t) { -// $o .= '<category scheme="X-DFRN:' . xmlify($t[0]) . ':' . xmlify($t[1]) . '" term="' . xmlify($t[2]) . '" />' . "\r\n"; -// } -// } -// FIXME -// $o .= item_getfeedattach($item); + if($item['attach']) { + $enclosures = json_decode($item['attach'],true); + if($enclosures) { + foreach($enclosures as $enc) { + $o .= '<link rel="enclosure" ' + . (($enc['href']) ? 'href="' . $enc['href'] . '" ' : '') + . (($enc['length']) ? 'length="' . $enc['length'] . '" ' : '') + . (($enc['type']) ? 'type="' . $enc['type'] . '" ' : '') + . ' />'; + } + } + } -// $mentioned = get_mentions($item,$tags); -// if($mentioned) -// $o .= $mentioned; + if($item['term']) { + foreach($item['term'] as $term) { + $scheme = ''; + $label = ''; + switch($term['ttype']) { + case TERM_UNKNOWN: + $scheme = NAMESPACE_ZOT . '/term/unknown'; + $label = $term['term']; + break; + case TERM_HASHTAG: + case TERM_COMMUNITYTAG: + $scheme = NAMESPACE_ZOT . '/term/hashtag'; + $label = '#' . $term['term']; + break; + case TERM_MENTION: + $scheme = NAMESPACE_ZOT . '/term/mention'; + $label = '@' . $term['term']; + break; + case TERM_CATEGORY: + $scheme = NAMESPACE_ZOT . '/term/category'; + $label = $term['term']; + break; + default: + break; + } + if(! $scheme) + continue; - call_hooks('atom_entry', $o); + $o .= '<category scheme="' . $scheme . '" term="' . $term['term'] . '" label="' . $label . '" />' . "\r\n"; + } + } $o .= '</entry>' . "\r\n"; - return $o; + $x = [ + 'item' => $item, + 'type' => $type, + 'author' => $author, + 'owner' => $owner, + 'comment' => $comment, + 'abook_id' => $cid, + 'entry' => $o + ]; + + call_hooks('atom_entry', $x); + + return $x['entry']; } diff --git a/include/help.php b/include/help.php index f7fffc4d4..6e779f000 100644 --- a/include/help.php +++ b/include/help.php @@ -15,7 +15,7 @@ function get_help_content($tocpath = false) { $text = ''; $path = (($tocpath !== false) ? $tocpath : ''); - + if($tocpath === false && argc() > 1) { $path = ''; for($x = 1; $x < argc(); $x ++) { @@ -55,6 +55,7 @@ function get_help_content($tocpath = false) { if(! $text) { $doctype = 'bbcode'; $text = load_doc_file('doc/main.bb'); + goaway('/help/about/about_hubzilla'); \App::$page['title'] = t('Help'); } @@ -68,7 +69,7 @@ function get_help_content($tocpath = false) { } if($doctype === 'html') - $content = $text; + $content = parseIdentityAwareHTML($text); if($doctype === 'markdown') { require_once('library/markdown.php'); # escape #include tags @@ -78,7 +79,7 @@ function get_help_content($tocpath = false) { } if($doctype === 'bbcode') { require_once('include/bbcode.php'); - $content = bbcode($text); + $content = zidify_links(bbcode($text)); // bbcode retargets external content to new windows. This content is internal. $content = str_replace(' target="_blank"', '', $content); } @@ -94,7 +95,7 @@ function preg_callback_help_include($matches) { $include = str_replace($matches[0],load_doc_file($matches[1]),$matches[0]); if(preg_match('/\.bb$/', $matches[1]) || preg_match('/\.txt$/', $matches[1])) { require_once('include/bbcode.php'); - $include = bbcode($include); + $include = zidify_links(bbcode($include)); $include = str_replace(' target="_blank"','',$include); } elseif(preg_match('/\.md$/', $matches[1])) { diff --git a/include/html2plain.php b/include/html2plain.php index 2f5be7f69..979354079 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -113,7 +113,7 @@ function html2plain($html, $wraplength = 75, $compact = false) $xpath = new DomXPath($doc); $list = $xpath->query("//pre"); foreach ($list as $node) { - $node->nodeValue = str_replace("\n", "\r", $node->nodeValue); + $node->nodeValue = str_replace("\n", "\r", htmlspecialchars($node->nodeValue)); } $message = $doc->saveHTML(); diff --git a/include/hubloc.php b/include/hubloc.php index 17f921f67..6f81ea31f 100644 --- a/include/hubloc.php +++ b/include/hubloc.php @@ -200,6 +200,14 @@ function xchan_store($arr) { if(! $arr['photo']) $arr['photo'] = z_root() . '/' . get_default_profile_photo(); + + if($arr['network'] === 'zot') { + if((! $arr['key']) || (! rsa_verify($arr['guid'],base64url_decode($arr['guid_sig']),$arr['key']))) { + logger('Unable to verify signature for ' . $arr['hash']); + return false; + } + } + $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_instance_url, xchan_hidden, xchan_orphan, xchan_censored, xchan_selfcensored, xchan_system, xchan_pubforum, xchan_deleted, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s','%s','%s',%d, %d, %d, %d, %d, %d, %d, '%s') ", dbesc($arr['hash']), dbesc($arr['guid']), diff --git a/include/import.php b/include/import.php index 0d8398acb..e3d3e7e81 100644 --- a/include/import.php +++ b/include/import.php @@ -86,7 +86,7 @@ function import_channel($channel, $account_id, $seize) { } if(! $r) { - logger('mod_import: channel clone failed. ', print_r($channel,true)); + logger('mod_import: channel clone failed. ' . print_r($channel,true)); notice( t('Channel clone failed. Import failed.') . EOL); return false; } @@ -96,7 +96,7 @@ function import_channel($channel, $account_id, $seize) { $channel['channel_guid'] // Already dbesc'd ); if(! $r) { - logger('mod_import: channel not found. ', print_r($channel,true)); + logger('mod_import: channel not found. ' . print_r($channel,true)); notice( t('Cloned channel not found. Import failed.') . EOL); return false; } diff --git a/include/items.php b/include/items.php index 4ac4d6049..57a9022da 100755 --- a/include/items.php +++ b/include/items.php @@ -1463,6 +1463,11 @@ function item_store($arr, $allow_exec = false, $deliver = true) { $ret = array('success' => false, 'item_id' => 0); + if(array_key_exists('cancel',$arr) && $arr['cancel']) { + logger('cancelled by plugin'); + return $ret; + } + if(! $arr['uid']) { logger('item_store: no uid'); $ret['message'] = 'No uid.'; @@ -1522,7 +1527,7 @@ function item_store($arr, $allow_exec = false, $deliver = true) { // apply the input filter here - if it is obscured it has been filtered already $arr['body'] = trim(z_input_filter($arr['uid'],$arr['body'],$arr['mimetype'])); - if(local_channel() && (! $arr['sig'])) { + if(local_channel() && (local_channel() == $arr['uid']) && (! $arr['sig'])) { $channel = App::get_channel(); if($channel['channel_hash'] === $arr['author_xchan']) { $arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey'])); @@ -1808,6 +1813,7 @@ function item_store($arr, $allow_exec = false, $deliver = true) { $x = q("update item set parent = id where id = %d", intval($r[0]['id']) ); + $arr['parent'] = $r[0]['id']; } @@ -1841,18 +1847,22 @@ function item_store($arr, $allow_exec = false, $deliver = true) { call_hooks('post_remote_end',$arr); - // update the commented timestamp on the parent + // update the commented timestamp on the parent - unless this is potentially a clone of an older item + // which we don't wish to bring to the surface. As the queue only holds deliveries for 3 days, it's + // suspected of being an older cloned item if the creation time is older than that. - $z = q("select max(created) as commented from item where parent_mid = '%s' and uid = %d and item_delayed = 0 ", - dbesc($arr['parent_mid']), - intval($arr['uid']) - ); + if($arr['created'] > datetime_convert('','','now - 4 days')) { + $z = q("select max(created) as commented from item where parent_mid = '%s' and uid = %d and item_delayed = 0 ", + dbesc($arr['parent_mid']), + intval($arr['uid']) + ); - q("UPDATE item set commented = '%s', changed = '%s' WHERE id = %d", - dbesc(($z) ? $z[0]['commented'] : (datetime_convert())), - dbesc(datetime_convert()), - intval($parent_id) - ); + q("UPDATE item set commented = '%s', changed = '%s' WHERE id = %d", + dbesc(($z) ? $z[0]['commented'] : (datetime_convert())), + dbesc(datetime_convert()), + intval($parent_id) + ); + } // If _creating_ a deleted item, don't propagate it further or send out notifications. @@ -1881,6 +1891,12 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) { $allow_exec = $d['allow_exec']; $ret = array('success' => false, 'item_id' => 0); + + if(array_key_exists('cancel',$arr) && $arr['cancel']) { + logger('cancelled by plugin'); + return $ret; + } + if(! intval($arr['uid'])) { logger('item_store_update: no uid'); $ret['message'] = 'no uid.'; @@ -1928,7 +1944,7 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) { // apply the input filter here - if it is obscured it has been filtered already $arr['body'] = trim(z_input_filter($arr['uid'],$arr['body'],$arr['mimetype'])); - if(local_channel() && (! $arr['sig'])) { + if(local_channel() && (local_channel() == $arr['uid']) && (! $arr['sig'])) { $channel = App::get_channel(); if($channel['channel_hash'] === $arr['author_xchan']) { $arr['sig'] = base64url_encode(rsa_sign($arr['body'],$channel['channel_prvkey'])); @@ -1987,20 +2003,8 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) { $arr['commented'] = $orig[0]['commented']; - if($deliver) { - $arr['received'] = datetime_convert(); - $arr['changed'] = datetime_convert(); - } - else { - - // When deliver flag is false, we are *probably* performing an import or bulk migration. - // If one updates the changed timestamp it will be made available to zotfeed and delivery - // will still take place through backdoor methods. Since these fields are rarely used - // otherwise, just preserve the original timestamp. - - $arr['received'] = $orig[0]['received']; - $arr['changed'] = $orig[0]['changed']; - } + $arr['received'] = $orig[0]['received']; + $arr['changed'] = $orig[0]['changed']; $arr['route'] = ((array_key_exists('route',$arr)) ? trim($arr['route']) : $orig[0]['route']); $arr['diaspora_meta'] = ((x($arr,'diaspora_meta')) ? $arr['diaspora_meta'] : $orig[0]['diaspora_meta']); @@ -3968,8 +3972,8 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C $sql_nets .= "( abook.abook_closeness >= " . intval($arr['cmin']) . " "; $sql_nets .= " AND abook.abook_closeness <= " . intval($arr['cmax']) . " ) "; - /** @fixme dead code, $cmax is undefined */ - if ($cmax == 99) + + if ($arr['cmax'] == 99) $sql_nets .= " OR abook.abook_closeness IS NULL ) "; } } @@ -4104,25 +4108,21 @@ function webpage_to_namespace($webpage) { function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid) { - $page_type = ''; - if(! $post_id) return; - if($webpage == ITEM_TYPE_WEBPAGE) - $page_type = 'WEBPAGE'; - elseif($webpage == ITEM_TYPE_BLOCK) - $page_type = 'BUILDBLOCK'; - elseif($webpage == ITEM_TYPE_PDL) - $page_type = 'PDL'; - elseif($webpage == ITEM_TYPE_DOC) - $page_type = 'docfile'; - elseif($namespace && $remote_id) { + $page_type = webpage_to_namespace($webpage); + + if($page_type == 'unknown' && $namespace && $remote_id) { $page_type = $namespace; $pagetitle = $remote_id; } + else { + $page_type = ''; + } if($page_type) { + // store page info as an alternate message_id so we can access it via // https://sitename/page/$channelname/$pagetitle // if no pagetitle was given or it couldn't be transliterated into a url, use the first diff --git a/include/menu.php b/include/menu.php index b54ff7f9e..4add78c39 100644 --- a/include/menu.php +++ b/include/menu.php @@ -102,7 +102,7 @@ function menu_render($menu, $class='', $edit = false, $var = array()) { if($menu['items'][$x]['mitem_flags'] & MENU_ITEM_NEWWIN) $menu['items'][$x]['newwin'] = '1'; - $menu['items'][$x]['mitem_desc'] = bbcode($menu['items'][$x]['mitem_desc']); + $menu['items'][$x]['mitem_desc'] = zidify_links(smilies(bbcode($menu['items'][$x]['mitem_desc']))); } $wrap = (($var['wrap'] === 'none') ? false : true); diff --git a/include/message.php b/include/message.php index 7cbea3c6b..bde07afd8 100644 --- a/include/message.php +++ b/include/message.php @@ -8,7 +8,7 @@ require_once('include/attach.php'); // send a private message -function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='',$expires = ''){ +function send_message($uid = 0, $recipient = '', $body = '', $subject = '', $replyto = '', $expires = NULL_DATE) { $ret = array('success' => false); $is_reply = false; @@ -16,19 +16,6 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' $a = get_app(); $observer_hash = get_observer_hash(); - if(! $recipient) { - $ret['message'] = t('No recipient provided.'); - return $ret; - } - - if(! strlen($subject)) - $subject = t('[no subject]'); - -// if(! $expires) -// $expires = NULL_DATE; -// else -// $expires = datetime_convert(date_default_timezone_get(),'UTC',$expires); - if($uid) { $r = q("select * from channel where channel_id = %d limit 1", @@ -47,6 +34,46 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' } + $body = cleanup_bbcode($body); + $results = linkify_tags($a, $body, $uid); + + + if(preg_match_all("/\[attachment\](.*?)\[\/attachment\]/",((strpos($body,'[/crypt]')) ? $_POST['media_str'] : $body),$match)) + $attaches = $match[1]; + + $attachments = ''; + + if(preg_match_all('/(\[attachment\](.*?)\[\/attachment\])/',$body,$match)) { + $attachments = array(); + foreach($match[2] as $mtch) { + $hash = substr($mtch,0,strpos($mtch,',')); + $rev = intval(substr($mtch,strpos($mtch,','))); + $r = attach_by_hash_nodata($hash,get_observer_hash(),$rev); + if($r['success']) { + $attachments[] = array( + 'href' => z_root() . '/attach/' . $r['data']['hash'], + 'length' => $r['data']['filesize'], + 'type' => $r['data']['filetype'], + 'title' => urlencode($r['data']['filename']), + 'revision' => $r['data']['revision'] + ); + } + $body = trim(str_replace($match[1],'',$body)); + } + } + + $jattach = (($attachments) ? json_encode($attachments) : ''); + + + if(! $recipient) { + $ret['message'] = t('No recipient provided.'); + return $ret; + } + + if(! strlen($subject)) + $subject = t('[no subject]'); + + // look for any existing conversation structure $conv_guid = ''; @@ -156,31 +183,6 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' $match = false; - if(preg_match_all("/\[attachment\](.*?)\[\/attachment\]/",((strpos($body,'[/crypt]')) ? $_POST['media_str'] : $body),$match)) - $attaches = $match[1]; - - $attachments = ''; - - if(preg_match_all('/(\[attachment\](.*?)\[\/attachment\])/',$body,$match)) { - $attachments = array(); - foreach($match[2] as $mtch) { - $hash = substr($mtch,0,strpos($mtch,',')); - $rev = intval(substr($mtch,strpos($mtch,','))); - $r = attach_by_hash_nodata($hash,get_observer_hash(),$rev); - if($r['success']) { - $attachments[] = array( - 'href' => z_root() . '/attach/' . $r['data']['hash'], - 'length' => $r['data']['filesize'], - 'type' => $r['data']['filetype'], - 'title' => urlencode($r['data']['filename']), - 'revision' => $r['data']['revision'] - ); - } - $body = trim(str_replace($match[1],'',$body)); - } - } - - $jattach = (($attachments) ? json_encode($attachments) : ''); if($subject) $subject = str_rot47(base64url_encode($subject)); diff --git a/include/nav.php b/include/nav.php index c2a058457..2762e2a14 100644 --- a/include/nav.php +++ b/include/nav.php @@ -108,7 +108,7 @@ EOT; if(feature_enabled($channel['channel_id'],'webpages') && (! $basic)) $nav['usermenu'][] = Array('webpages/' . $channel['channel_address'],t('Webpages'),"",t('Your webpages'),'webpages_nav_btn'); if(feature_enabled($channel['channel_id'],'wiki') && (! $basic)) - $nav['usermenu'][] = Array('wiki/' . $channel['channel_address'],t('Wiki'),"",t('Your wiki'),'wiki_nav_btn'); + $nav['usermenu'][] = Array('wiki/' . $channel['channel_address'],t('Wikis'),"",t('Your wikis'),'wiki_nav_btn'); } else { if(! get_account_id()) { @@ -127,26 +127,24 @@ EOT; ); } - if($observer) { - $nav['lock'] = array('logout','','lock', - sprintf( t('%s - click to logout'), $observer['xchan_addr'])); - } elseif(! $_SESSION['authenticated']) { $nav['loginmenu'][] = Array('rmagic',t('Remote authentication'),'',t('Click to authenticate to your home hub'),'rmagic_nav_btn'); } - /** - * "Home" should also take you home from an authenticated remote profile connection - */ - $homelink = get_my_url(); if(! $homelink) { $observer = App::get_observer(); $homelink = (($observer) ? $observer['xchan_url'] : ''); } - if(! local_channel()) - $nav['home'] = array($homelink, t('Home'), "", t('Home Page'),'home_nav_btn'); + if(! local_channel()) { + $nav['rusermenu'] = array( + $homelink, + t('Get me home'), + 'logout', + t('Log me out of this site') + ); + } if(((get_config('system','register_policy') == REGISTER_OPEN) || (get_config('system','register_policy') == REGISTER_APPROVE)) && (! $_SESSION['authenticated'])) $nav['register'] = array('register',t('Register'), "", t('Create an account'),'register_nav_btn'); diff --git a/include/network.php b/include/network.php index fe360c425..451ce12a1 100644 --- a/include/network.php +++ b/include/network.php @@ -59,7 +59,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { if(x($opts,'filep')) { @curl_setopt($ch, CURLOPT_FILE, $opts['filep']); - @curl_setopt($ch, CURLOPT_HEADER, $false); + @curl_setopt($ch, CURLOPT_HEADER, false); } if(x($opts,'upload')) @@ -87,7 +87,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']); } else { - $curl_time = intval(get_config('system','curl_timeout')); + $curl_time = intval(@get_config('system','curl_timeout')); @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); } @@ -107,7 +107,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true)); - $prx = get_config('system','proxy'); + $prx = @get_config('system','proxy'); if(strlen($prx)) { @curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); @curl_setopt($ch, CURLOPT_PROXY, $prx); @@ -226,7 +226,7 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) { if(x($opts,'filep')) { @curl_setopt($ch, CURLOPT_FILE, $opts['filep']); - @curl_setopt($ch, CURLOPT_HEADER, $false); + @curl_setopt($ch, CURLOPT_HEADER, false); } if(x($opts,'headers')) { @@ -246,7 +246,7 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']); } else { - $curl_time = intval(get_config('system','curl_timeout')); + $curl_time = intval(@get_config('system','curl_timeout')); @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); } diff --git a/include/oembed.php b/include/oembed.php index 52fb04058..36395cfbc 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -104,7 +104,7 @@ function oembed_action($embedurl) { function oembed_process($url) { $j = oembed_fetch_url($url); - logger('oembed_process: ' . print_r($j,true)); + logger('oembed_process: ' . print_r($j,true), LOGGER_DATA, LOG_DEBUG); if($j && $j['type'] !== 'error') return '[embed]' . $url . '[/embed]'; return false; @@ -135,19 +135,15 @@ function oembed_fetch_url($embedurl){ // we should try to cache this and avoid a lookup on each render $zrl = is_matrix_url($embedurl); + $furl = ((local_channel() && $zrl) ? zid($embedurl) : $embedurl); + if($action !== 'block') { - $txt = Zlib\Cache::get('[' . App::$videowidth . '] ' . $embedurl); + $txt = Zlib\Cache::get('[' . App::$videowidth . '] ' . $furl); } if(is_null($txt)) { $txt = ""; - $furl = $embedurl; - - logger('local_channel: ' . local_channel()); - - if(local_channel() && $zrl) - $furl = zid($furl); if ($action !== 'block') { // try oembed autodiscovery @@ -206,11 +202,10 @@ function oembed_fetch_url($embedurl){ //save in cache if(! get_config('system','oembed_cache_disable')) - Zlib\Cache::set('[' . App::$videowidth . '] ' . $embedurl,$txt); + Zlib\Cache::set('[' . App::$videowidth . '] ' . $furl, $txt); } - $j = json_decode($txt,true); if(! $j) @@ -338,7 +333,7 @@ function oembed_iframe($src,$width,$height) { // Make sure any children are sandboxed within their own iframe. - return '<iframe ' . $scroll . 'height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >' + return '<iframe ' . $scroll . 'height="' . $height . '" width="' . $width . '" src="' . $s . '" allowfullscreen frameborder="no" >' . t('Embedded content') . '</iframe>'; } diff --git a/include/queue_fn.php b/include/queue_fn.php index 1e3126f77..0950faf85 100644 --- a/include/queue_fn.php +++ b/include/queue_fn.php @@ -93,7 +93,7 @@ function queue_deliver($outq, $immediate = false) { // your site has existed. Since we don't know for sure what these sites are, // call them unknown - q("insert into site (site_url, site_update, site_dead, site_type) values ('%s','%s',0,%d) ", + q("insert into site (site_url, site_update, site_dead, site_type, site_crypto) values ('%s','%s',0,%d,'') ", dbesc($base), dbesc(datetime_convert()), intval(($outq['outq_driver'] === 'post') ? SITE_TYPE_NOTZOT : SITE_TYPE_UNKNOWN) diff --git a/include/taxonomy.php b/include/taxonomy.php index 067bd3246..0b4b2aa9a 100644 --- a/include/taxonomy.php +++ b/include/taxonomy.php @@ -386,7 +386,7 @@ function get_things($profile_hash,$uid) { $things[$k] = null; foreach($r as $rr) { - $l = q("select xchan_name, xchan_photo_s, xchan_url from likes left join xchan on likee = xchan_hash where + $l = q("select xchan_name, xchan_photo_s, xchan_url from likes left join xchan on liker = xchan_hash where target_type = '%s' and target_id = '%s' and channel_id = %d", dbesc(ACTIVITY_OBJ_THING), dbesc($rr['obj_obj']), diff --git a/include/text.php b/include/text.php index 12b37222b..fbf6df49e 100644 --- a/include/text.php +++ b/include/text.php @@ -656,11 +656,24 @@ function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) { function btlogger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) { logger($msg, $level, $priority); + + if(file_exists('btlogger.log') && is_writable('btlogger.log')) { + $stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); + $where = basename($stack[0]['file']) . ':' . $stack[0]['line'] . ':' . $stack[1]['function'] . ': '; + $s = datetime_convert() . ':' . log_priority_str($priority) . ':' . session_id() . ':' . $where . $msg . PHP_EOL; + @file_put_contents('btlogger.log', $s, FILE_APPEND); + } + if(version_compare(PHP_VERSION, '5.4.0') >= 0) { $stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); if($stack) { for($x = 1; $x < count($stack); $x ++) { - logger('stack: ' . basename($stack[$x]['file']) . ':' . $stack[$x]['line'] . ':' . $stack[$x]['function'] . '()',$level, $priority); + $s = 'stack: ' . basename($stack[$x]['file']) . ':' . $stack[$x]['line'] . ':' . $stack[$x]['function'] . '()'; + logger($s,$level, $priority); + + if(file_exists('btlogger.log') && is_writable('btlogger.log')) { + @file_put_contents('btlogger.log', $s, FILE_APPEND); + } } } } @@ -2049,7 +2062,7 @@ function ids_to_array($arr,$idx = 'id') { $t = array(); if($arr) { foreach($arr as $x) { - if(array_key_exists($idx,$x) && strlen($x[$idx]) && (! in_array($x[$idx],$t))) { + if(array_key_exists($idx,$x) && strlen($x[$idx]) && (! in_array($x[$idx],$t))) { $t[] = $x[$idx]; } } @@ -2060,12 +2073,15 @@ function ids_to_array($arr,$idx = 'id') { -function ids_to_querystr($arr,$idx = 'id') { +function ids_to_querystr($arr,$idx = 'id',$quote = false) { $t = array(); if($arr) { foreach($arr as $x) { if(! in_array($x[$idx],$t)) { - $t[] = $x[$idx]; + if($quote) + $t[] = "'" . dbesc($x[$idx]) . "'"; + else + $t[] = $x[$idx]; } } } @@ -3058,4 +3074,55 @@ function create_table_from_array($table, $arr) { } return $r; +} + + + +function cleanup_bbcode($body) { + + + /** + * fix naked links by passing through a callback to see if this is a hubzilla site + * (already known to us) which will get a zrl, otherwise link with url, add bookmark tag to both. + * First protect any url inside certain bbcode tags so we don't double link it. + */ + + $body = preg_replace_callback('/\[code(.*?)\[\/(code)\]/ism','\red_escape_codeblock',$body); + $body = preg_replace_callback('/\[url(.*?)\[\/(url)\]/ism','\red_escape_codeblock',$body); + $body = preg_replace_callback('/\[zrl(.*?)\[\/(zrl)\]/ism','\red_escape_codeblock',$body); + + + $body = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\\ ++\,\(\)]+)/ism", '\nakedoembed', $body); + $body = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\\ ++\,\(\)]+)/ism", '\red_zrl_callback', $body); + + $body = preg_replace_callback('/\[\$b64zrl(.*?)\[\/(zrl)\]/ism','\red_unescape_codeblock',$body); + $body = preg_replace_callback('/\[\$b64url(.*?)\[\/(url)\]/ism','\red_unescape_codeblock',$body); + $body = preg_replace_callback('/\[\$b64code(.*?)\[\/(code)\]/ism','\red_unescape_codeblock',$body); + + // fix any img tags that should be zmg + + $body = preg_replace_callback('/\[img(.*?)\](.*?)\[\/img\]/ism','\red_zrlify_img_callback',$body); + + + $body = bb_translate_video($body); + + /** + * Fold multi-line [code] sequences + */ + + $body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body); + + $body = scale_external_images($body,false); + + + return $body; + +} + +// callback for array_walk + +function array_trim(&$v,$k) { + $v = trim($v); }
\ No newline at end of file diff --git a/include/widgets.php b/include/widgets.php index 3dc555b46..dde8e7cd0 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -778,7 +778,7 @@ function widget_conversations($arr) { '$messages' => $messages )); - $o .= alt_pager($a,count($r)); + //$o .= alt_pager($a,count($r)); } @@ -898,87 +898,17 @@ function widget_chatroom_members() { } function widget_wiki_list($arr) { - - require_once("include/wiki.php"); - $channel = null; - if (argc() < 2 && local_channel()) { - // This should not occur because /wiki should redirect to /wiki/channel ... - $channel = \App::get_channel(); - } else { - $channel = channelx_by_nick(argv(1)); // Channel being viewed by observer - } - if (!$channel) { - return ''; - } - // init() should have forced the URL to redirect to /wiki/channel so assume argc() > 1 - $nick = argv(1); - $owner = channelx_by_nick($nick); // The channel who owns the wikis being viewed - // Determine if the observer is the channel owner so the ACL dialog can be populated - if (local_channel() === intval($owner['channel_id'])) { - - // Obtain the default permission settings of the channel - $owner_acl = array( - 'allow_cid' => $owner['channel_allow_cid'], - 'allow_gid' => $owner['channel_allow_gid'], - 'deny_cid' => $owner['channel_deny_cid'], - 'deny_gid' => $owner['channel_deny_gid'] - ); - // Initialize the ACL to the channel default permissions - $x = array( - 'lockstate' => (( $owner['channel_allow_cid'] || - $owner['channel_allow_gid'] || - $owner['channel_deny_cid'] || - $owner['channel_deny_gid']) ? 'lock' : 'unlock' - ), - 'acl' => populate_acl($owner_acl), - 'allow_cid' => acl2json($owner_acl['allow_cid']), - 'allow_gid' => acl2json($owner_acl['allow_gid']), - 'deny_cid' => acl2json($owner_acl['deny_cid']), - 'deny_gid' => acl2json($owner_acl['deny_gid']), - 'bang' => '' - ); - } else { - // Not the channel owner - $owner_acl = $x = array(); - } - if(argc()>1) { - $activeWikiURLname = argv(2); - } else { - $activeWikiURLname = ''; - } - logger($activeWikiURLname, LOGGER_DEBUG); - $wikis = wiki_list($channel, get_observer_hash()); - foreach($wikis['wikis'] as &$w) { - if($w['urlName'] === $activeWikiURLname) { - $w['active'] = true; - } else { - $w['active'] = false; - } - } - if ($wikis) { - return replace_macros(get_markup_template('wikilist.tpl'), array( - '$header' => t('Wiki List'), - '$channel' => $channel['channel_address'], - '$wikis' => $wikis['wikis'], - // If the observer is the local channel owner, show the wiki controls - '$owner' => ((local_channel() && local_channel() === intval(\App::$profile['uid'])) ? true : false), - '$edit' => t('Edit'), - '$download' => t('Download'), - '$view' => t('View'), - '$addnew' => t('Create new wiki'), - '$create' => t('Create'), - '$wikiName' => array('wikiName', t('Wiki name'), '', ''), - '$lockstate' => $x['lockstate'], - '$acl' => $x['acl'], - '$allow_cid' => $x['allow_cid'], - '$allow_gid' => $x['allow_gid'], - '$deny_cid' => $x['deny_cid'], - '$deny_gid' => $x['deny_gid'], - '$bang' => $x['bang'], - '$notify' => t('Send notification') - )); - } - return ''; + require_once("include/wiki.php"); + $channel = channelx_by_n(App::$profile_uid); + $wikis = wiki_list($channel, get_observer_hash()); + if($wikis) { + return replace_macros(get_markup_template('wikilist_widget.tpl'), array( + '$header' => t('Wiki List'), + '$channel' => $channel['channel_address'], + '$wikis' => $wikis['wikis'] + )); + } + return ''; } function widget_wiki_pages($arr) { @@ -1017,6 +947,7 @@ function widget_wiki_pages($arr) { '$pages' => $pages, '$canadd' => $can_create, '$addnew' => t('Add new page'), + '$pageName' => array('pageName', t('Page name')), )); } @@ -1027,7 +958,8 @@ function widget_wiki_page_history($arr) { $pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); return replace_macros(get_markup_template('wiki_page_history.tpl'), array( - '$pageHistory' => $pageHistory['history'] + '$pageHistory' => $pageHistory['history'], + '$permsWrite' => $arr['permsWrite'] )); } @@ -1472,14 +1404,23 @@ function widget_forums($arr) { $perms_sql = item_permissions_sql(local_channel()) . item_normal(); - /** - * We used to try and find public forums with custom permissions by checking to see if - * send_stream was false and tag_deliver was true. However with the newer extensible - * permissions infrastructure this makes for a very complicated query. Now we're only - * checking channels that report themselves specifically as pubforums - */ + $xf = false; + + $x1 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'send_stream' and v = '0'", + intval(local_channel()) + ); + if($x1) { + $xc = ids_to_querystr($x1,'xchan',true); + $x2 = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = 'tag_deliver' and v = '1' and xchan in (" . $xc . ") ", + intval(local_channel()) + ); + if($x2) + $xf = ids_to_querystr($x2,'xchan',true); + } + + $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 "); - $r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_pubforum = 1 and xchan_deleted = 0 and abook_channel = %d order by xchan_name $limit ", + $r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d $sql_extra order by xchan_name $limit ", intval(local_channel()) ); if(! $r1) @@ -1563,7 +1504,6 @@ function widget_tasklist($arr) { function widget_helpindex($arr) { $o .= '<div class="widget">'; - $o .= '<h3>' . t('Documentation') . '</h3>'; $level_0 = get_help_content('sitetoc'); if(! $level_0) diff --git a/include/wiki.php b/include/wiki.php index bcdf9d7d8..922be6924 100644 --- a/include/wiki.php +++ b/include/wiki.php @@ -14,11 +14,13 @@ function wiki_list($channel, $observer_hash) { intval($channel['channel_id']) ); if($wikis) { - foreach($wikis as &$w) { + foreach($wikis as &$w) { $w['rawName'] = get_iconfig($w, 'wiki', 'rawName'); $w['htmlName'] = get_iconfig($w, 'wiki', 'htmlName'); $w['urlName'] = get_iconfig($w, 'wiki', 'urlName'); $w['path'] = get_iconfig($w, 'wiki', 'path'); + $w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType'); + $w['lock'] = (($w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? true : false); } } // TODO: query db for wikis the observer can access. Return with two lists, for read and write access @@ -31,14 +33,30 @@ function wiki_page_list($resource_id) { if (!$w['path']) { return array('pages' => null, 'wiki' => null); } - $pages = array(); + + $pages[] = [ + 'resource_id' => '', + 'title' => 'Home', + 'url' => 'Home', + 'link_id' => 'id_wiki_home_0' + ]; + if (is_dir($w['path']) === true) { $files = array_diff(scandir($w['path']), array('.', '..', '.git')); // TODO: Check that the files are all text files - + $i = 1; foreach($files as $file) { - // strip the .md file extension and unwrap URL encoding to leave HTML encoded name - $pages[] = array('title' => urldecode(substr($file, 0, -3)), 'url' => urlencode(substr($file, 0, -3))); + // strip the file extension and unwrap URL encoding to leave HTML encoded name + $title = substr($file, 0, strrpos($file,'.')); + if(urldecode($title) !== 'Home') { + $pages[] = [ + 'resource_id' => $resource_id, + 'title' => urldecode($title), + 'url' => $title, + 'link_id' => 'id_' . substr($resource_id, 0, 10) . '_' . $i + ]; + $i++; + } } } @@ -75,7 +93,7 @@ function wiki_create_wiki($channel, $observer_hash, $wiki, $acl) { $resource_id = random_string(); $r = q("SELECT mid FROM item WHERE resource_id = '%s' AND resource_type = '%s' AND uid = %d LIMIT 1", dbesc($resource_id), - dbesc(WIKI_ITEM_RESOURCE_TYPE), + dbesc(WIKI_ITEM_RESOURCE_TYPE), intval($channel['channel_id']) ); if (count($r)) @@ -123,11 +141,14 @@ function wiki_create_wiki($channel, $observer_hash, $wiki, $acl) { if (!set_iconfig($arr, 'wiki', 'urlName', $wiki['urlName'], true)) { return array('item' => null, 'success' => false); } + if (!set_iconfig($arr, 'wiki', 'mimeType', $wiki['mimeType'], true)) { + return array('item' => null, 'success' => false); + } $post = item_store($arr); $item_id = $post['item_id']; if ($item_id) { - \Zotlabs\Daemon\Master::Summon(array('Notifier', 'activity', $item_id)); + \Zotlabs\Daemon\Master::Summon(array('Notifier', 'activity', $item_id)); return array('item' => $post['item'], 'success' => true); } else { return array('item' => null, 'success' => false); @@ -152,8 +173,8 @@ function wiki_delete_wiki($resource_id) { function wiki_get_wiki($resource_id) { $item = q("SELECT * FROM item WHERE resource_type = '%s' AND resource_id = '%s' AND item_deleted = 0 limit 1", - dbesc(WIKI_ITEM_RESOURCE_TYPE), - dbesc($resource_id) + dbesc(WIKI_ITEM_RESOURCE_TYPE), + dbesc($resource_id) ); if (!$item) { return array('wiki' => null, 'path' => null); @@ -163,17 +184,21 @@ function wiki_get_wiki($resource_id) { $rawName = get_iconfig($w, 'wiki', 'rawName'); $htmlName = get_iconfig($w, 'wiki', 'htmlName'); $urlName = get_iconfig($w, 'wiki', 'urlName'); + $mimeType = get_iconfig($w, 'wiki', 'mimeType'); + $path = get_iconfig($w, 'wiki', 'path'); if (!realpath(__DIR__ . '/../' . $path)) { return array('wiki' => null, 'path' => null); } // Path to wiki exists $abs_path = realpath(__DIR__ . '/../' . $path); - return array( 'wiki' => $w, - 'path' => $abs_path, - 'rawName' => $rawName, - 'htmlName' => $htmlName, - 'urlName' => $urlName + return array( + 'wiki' => $w, + 'path' => $abs_path, + 'rawName' => $rawName, + 'htmlName' => $htmlName, + 'urlName' => $urlName, + 'mimeType' => $mimeType ); } } @@ -202,8 +227,8 @@ function wiki_get_permissions($resource_id, $owner_id, $observer_hash) { $r = q("SELECT * FROM item WHERE uid = %d and resource_type = '%s' AND resource_id = '%s' $sql_extra LIMIT 1", intval($owner_id), dbesc(WIKI_ITEM_RESOURCE_TYPE), - dbesc($resource_id) - ); + dbesc($resource_id) + ); if (!$r) { return array('read' => false, 'write' => false, 'success' => true); @@ -220,7 +245,8 @@ function wiki_create_page($name, $resource_id) { if (!$w['path']) { return array('page' => null, 'wiki' => null, 'message' => 'Wiki not found.', 'success' => false); } - $page = array('rawName' => $name, 'htmlName' => escape_tags($name), 'urlName' => urlencode(escape_tags($name)), 'fileName' => urlencode(escape_tags($name)).'.md'); + + $page = array('rawName' => $name, 'htmlName' => escape_tags($name), 'urlName' => urlencode(escape_tags($name)), 'fileName' => urlencode(escape_tags($name)) . wiki_get_file_ext($w)); $page_path = $w['path'] . '/' . $page['fileName']; if (is_file($page_path)) { return array('page' => null, 'wiki' => null, 'message' => 'Page already exists.', 'success' => false); @@ -242,11 +268,11 @@ function wiki_rename_page($arr) { if (!$w['path']) { return array('message' => 'Wiki not found.', 'success' => false); } - $page_path_old = $w['path'].'/'.$pageUrlName.'.md'; + $page_path_old = $w['path'] . '/' . $pageUrlName . wiki_get_file_ext($w); if (!is_readable($page_path_old) === true) { return array('message' => 'Cannot read wiki page: ' . $page_path_old, 'success' => false); } - $page = array('rawName' => $pageNewName, 'htmlName' => escape_tags($pageNewName), 'urlName' => urlencode(escape_tags($pageNewName)), 'fileName' => urlencode(escape_tags($pageNewName)).'.md'); + $page = array('rawName' => $pageNewName, 'htmlName' => escape_tags($pageNewName), 'urlName' => urlencode(escape_tags($pageNewName)), 'fileName' => urlencode(escape_tags($pageNewName)) . wiki_get_file_ext($w)); $page_path_new = $w['path'] . '/' . $page['fileName'] ; if (is_file($page_path_new)) { return array('message' => 'Page already exists.', 'success' => false); @@ -267,7 +293,7 @@ function wiki_get_page_content($arr) { if (!$w['path']) { return array('content' => null, 'message' => 'Error reading wiki', 'success' => false); } - $page_path = $w['path'].'/'.$pageUrlName.'.md'; + $page_path = $w['path'] . '/' . $pageUrlName . wiki_get_file_ext($w); if (is_readable($page_path) === true) { if(filesize($page_path) === 0) { $content = ''; @@ -278,7 +304,7 @@ function wiki_get_page_content($arr) { } } // TODO: Check that the files are all text files - return array('content' => json_encode($content), 'message' => '', 'success' => true); + return array('content' => json_encode($content), 'mimeType' => $w['mimeType'], 'message' => '', 'success' => true); } } @@ -289,7 +315,7 @@ function wiki_page_history($arr) { if (!$w['path']) { return array('history' => null, 'message' => 'Error reading wiki', 'success' => false); } - $page_path = $w['path'].'/'.$pageUrlName.'.md'; + $page_path = $w['path'] . '/' . $pageUrlName . wiki_get_file_ext($w); if (!is_readable($page_path) === true) { return array('history' => null, 'message' => 'Cannot read wiki page: ' . $page_path, 'success' => false); } @@ -306,20 +332,48 @@ function wiki_page_history($arr) { } } +function wiki_prepare_content($s) { + + $text = preg_replace_callback('{ + (?:\n\n|\A\n?) + ( # $1 = the code block -- one or more lines, starting with a space/tab + (?> + [ ]{'.'4'.'} # Lines must start with a tab or a tab-width of spaces + .*\n+ + )+ + ) + ((?=^[ ]{0,'.'4'.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc + }xm', + 'wiki_prepare_content_callback', $s); + + return $text; +} + +function wiki_prepare_content_callback($matches) { + $codeblock = $matches[1]; + + $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES, UTF8, false); + return "\n\n" . $codeblock ; +} + + + function wiki_save_page($arr) { $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : ''); - $content = ((array_key_exists('content',$arr)) ? purify_html($arr['content']) : ''); + $content = ((array_key_exists('content',$arr)) ? purify_html(wiki_prepare_content($arr['content'])) : ''); $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : ''); $w = wiki_get_wiki($resource_id); if (!$w['path']) { return array('message' => 'Error reading wiki', 'success' => false); } - $page_path = $w['path'].'/'.$pageUrlName.'.md'; + + $fileName = $pageUrlName . wiki_get_file_ext($w); + $page_path = $w['path'] . '/' . $fileName; if (is_writable($page_path) === true) { if(!file_put_contents($page_path, $content)) { return array('message' => 'Error writing to page file', 'success' => false); } - return array('message' => '', 'success' => true); + return array('message' => '', 'filename' => $filename, 'success' => true); } else { return array('message' => 'Page file not writable', 'success' => false); } @@ -332,7 +386,7 @@ function wiki_delete_page($arr) { if (!$w['path']) { return array('message' => 'Error reading wiki', 'success' => false); } - $page_path = $w['path'].'/'.$pageUrlName.'.md'; + $page_path = $w['path'] . '/' . $pageUrlName . wiki_get_file_ext($w); if (is_writable($page_path) === true) { if(!unlink($page_path)) { return array('message' => 'Error deleting page file', 'success' => false); @@ -354,7 +408,7 @@ function wiki_revert_page($arr) { if (!$w['path']) { return array('content' => $content, 'message' => 'Error reading wiki', 'success' => false); } - $page_path = $w['path'].'/'.$pageUrlName.'.md'; + $page_path = $w['path'] . '/' . $pageUrlName . wiki_get_file_ext($w); if (is_writable($page_path) === true) { $reponame = ((array_key_exists('title', $w['wiki'])) ? urlencode($w['wiki']['title']) : 'repo'); @@ -366,7 +420,7 @@ function wiki_revert_page($arr) { try { $git->setIdentity($observer['xchan_name'], $observer['xchan_addr']); foreach ($git->git->tree($commitHash) as $object) { - if ($object['type'] == 'blob' && $object['file'] === $pageUrlName.'.md' ) { + if ($object['type'] == 'blob' && $object['file'] === $pageUrlName . wiki_get_file_ext($w)) { $content = $git->git->cat->blob($object['hash']); } } @@ -391,7 +445,7 @@ function wiki_compare_page($arr) { if (!$w['path']) { return array('message' => 'Error reading wiki', 'success' => false); } - $page_path = $w['path'].'/'.$pageUrlName.'.md'; + $page_path = $w['path'] . '/' . $pageUrlName . wiki_get_file_ext($w); if (is_readable($page_path) === true) { $reponame = ((array_key_exists('title', $w['wiki'])) ? urlencode($w['wiki']['title']) : 'repo'); if($reponame === '') { @@ -401,12 +455,12 @@ function wiki_compare_page($arr) { $compareContent = $currentContent = ''; try { foreach ($git->git->tree($currentCommit) as $object) { - if ($object['type'] == 'blob' && $object['file'] === $pageUrlName.'.md' ) { + if ($object['type'] == 'blob' && $object['file'] === $pageUrlName . wiki_get_file_ext($w)) { $currentContent = $git->git->cat->blob($object['hash']); } } foreach ($git->git->tree($compareCommit) as $object) { - if ($object['type'] == 'blob' && $object['file'] === $pageUrlName.'.md' ) { + if ($object['type'] == 'blob' && $object['file'] === $pageUrlName . wiki_get_file_ext($w)) { $compareContent = $git->git->cat->blob($object['hash']); } } @@ -469,15 +523,6 @@ function wiki_git_commit($arr) { } } -function wiki_generate_page_filename($name) { - $file = urlencode(escape_tags($name)); - if( $file === '') { - return null; - } else { - return $file . '.md'; - } -} - function wiki_convert_links($s, $wikiURL) { if (strpos($s,'[[') !== false) { @@ -505,7 +550,6 @@ function wiki_convert_links($s, $wikiURL) { * @return string */ function wiki_generate_toc($s) { - if (strpos($s,'[toc]') !== false) { //$toc_md = wiki_toc($s); // Generate Markdown-formatted list prior to HTML render $toc_md = '<ul id="wiki-toc"></ul>'; // use the available jQuery plugin http://ndabas.github.io/toc/ @@ -547,6 +591,13 @@ function wiki_bbcode($s) { return $s; } +function wiki_get_file_ext($arr) { + if($arr['mimeType'] == 'text/bbcode') + return '.bb'; + else + return '.md'; +} + // This function is derived from // http://stackoverflow.com/questions/32068537/generate-table-of-contents-from-markdown-in-php function wiki_toc($content) { @@ -555,36 +606,36 @@ function wiki_toc($content) { // look for markdown TOC items preg_match_all( - '/^(?:=|-|#).*$/m', - $source, - $matches, - PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE + '/^(?:=|-|#).*$/m', + $source, + $matches, + PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE ); // preprocess: iterate matched lines to create an array of items // where each item is an array(level, text) $file_size = strlen($source); foreach ($matches[0] as $item) { - $found_mark = substr($item[0], 0, 1); - if ($found_mark == '#') { - // text is the found item - $item_text = $item[0]; - $item_level = strrpos($item_text, '#') + 1; - $item_text = substr($item_text, $item_level); - } else { - // text is the previous line (empty if <hr>) - $item_offset = $item[1]; - $prev_line_offset = strrpos($source, "\n", -($file_size - $item_offset + 2)); - $item_text = - substr($source, $prev_line_offset, $item_offset - $prev_line_offset - 1); - $item_text = trim($item_text); - $item_level = $found_mark == '=' ? 1 : 2; - } - if (!trim($item_text) OR strpos($item_text, '|') !== FALSE) { - // item is an horizontal separator or a table header, don't mind - continue; - } - $raw_toc[] = ['level' => $item_level, 'text' => trim($item_text)]; + $found_mark = substr($item[0], 0, 1); + if ($found_mark == '#') { + // text is the found item + $item_text = $item[0]; + $item_level = strrpos($item_text, '#') + 1; + $item_text = substr($item_text, $item_level); + } else { + // text is the previous line (empty if <hr>) + $item_offset = $item[1]; + $prev_line_offset = strrpos($source, "\n", -($file_size - $item_offset + 2)); + $item_text = + substr($source, $prev_line_offset, $item_offset - $prev_line_offset - 1); + $item_text = trim($item_text); + $item_level = $found_mark == '=' ? 1 : 2; + } + if (!trim($item_text) OR strpos($item_text, '|') !== FALSE) { + // item is an horizontal separator or a table header, don't mind + continue; + } + $raw_toc[] = ['level' => $item_level, 'text' => trim($item_text)]; } $o = ''; foreach($raw_toc as $t) { diff --git a/include/zot.php b/include/zot.php index 5c9fb4e82..96ec71112 100644 --- a/include/zot.php +++ b/include/zot.php @@ -110,20 +110,21 @@ function zot_get_hublocs($hash) { * @param string $extra * @returns string json encoded zot packet */ -function zot_build_packet($channel, $type = 'notify', $recipients = null, $remote_key = null, $secret = null, $extra = null) { +function zot_build_packet($channel, $type = 'notify', $recipients = null, $remote_key = null, $methods = '', $secret = null, $extra = null) { - $data = array( + $data = [ 'type' => $type, - 'sender' => array( + 'sender' => [ 'guid' => $channel['channel_guid'], 'guid_sig' => base64url_encode(rsa_sign($channel['channel_guid'],$channel['channel_prvkey'])), 'url' => z_root(), 'url_sig' => base64url_encode(rsa_sign(z_root(),$channel['channel_prvkey'])), 'sitekey' => get_config('system','pubkey') - ), + ], 'callback' => '/post', - 'version' => ZOT_REVISION - ); + 'version' => ZOT_REVISION, + 'encryption' => crypto_methods() + ]; if ($recipients) { for ($x = 0; $x < count($recipients); $x ++) @@ -146,14 +147,54 @@ function zot_build_packet($channel, $type = 'notify', $recipients = null, $remot // Hush-hush ultra top-secret mode - if ($remote_key) { - $data = crypto_encapsulate(json_encode($data),$remote_key); + if($remote_key) { + $algorithm = zot_best_algorithm($methods); + $data = crypto_encapsulate(json_encode($data),$remote_key, $algorithm); } return json_encode($data); } /** + * @brief choose best encryption function from those available on both sites + * + * @param string $methods + * comma separated list of encryption methods + * @return string first match from our site method preferences crypto_methods() array + * of a method which is common to both sites; or 'aes256cbc' if no matches are found. + */ + +function zot_best_algorithm($methods) { + + if(\Zotlabs\Lib\System::get_server_role() !== 'pro') + return 'aes256cbc'; + + $x = [ 'methods' => $methods, 'result' => '' ]; + call_hooks('zot_best_algorithm',$x); + if($x['result']) + return $x['result']; + + if($methods) { + $x = explode(',',$methods); + if($x) { + $y = crypto_methods(); + if($y) { + foreach($y as $yv) { + $yv = trim($yv); + if(in_array($yv,$x)) { + return($yv); + } + } + } + } + } + + return 'aes256cbc'; +} + + + +/** * @brief * * @see z_post_url() @@ -167,101 +208,11 @@ function zot_zot($url, $data) { } /** - * @brief Look up information about channel. - * - * @param string $webbie - * does not have to be host qualified e.g. 'foo' is treated as 'foo\@thishub' - * @param array $channel - * (optional), if supplied permissions will be enumerated specifically for $channel - * @param boolean $autofallback - * fallback/failover to http if https connection cannot be established. Default is true. - * - * @return array see z_post_url() and \ref Zotlabs::Zot::Finger "\\Zotlabs\\Zot\\Finger" - */ -function zot_finger($webbie, $channel = null, $autofallback = true) { - - if (strpos($webbie,'@') === false) { - $address = $webbie; - $host = App::get_hostname(); - } else { - $address = substr($webbie,0,strpos($webbie,'@')); - $host = substr($webbie,strpos($webbie,'@')+1); - if(strpos($host,'/')) - $host = substr($host,0,strpos($host,'/')); - } - - $xchan_addr = $address . '@' . $host; - - if ((! $address) || (! $xchan_addr)) { - logger('zot_finger: no address :' . $webbie); - return array('success' => false); - } - logger('using xchan_addr: ' . $xchan_addr, LOGGER_DATA, LOG_DEBUG); - - // potential issue here; the xchan_addr points to the primary hub. - // The webbie we were called with may not, so it might not be found - // unless we query for hubloc_addr instead of xchan_addr - - $r = q("select xchan.*, hubloc.* from xchan - left join hubloc on xchan_hash = hubloc_hash - where xchan_addr = '%s' and hubloc_primary = 1 limit 1", - dbesc($xchan_addr) - ); - - if ($r) { - $url = $r[0]['hubloc_url']; - - if ($r[0]['hubloc_network'] && $r[0]['hubloc_network'] !== 'zot') { - logger('zot_finger: alternate network: ' . $webbie); - logger('url: '.$url.', net: '.var_export($r[0]['hubloc_network'],true), LOGGER_DATA, LOG_DEBUG); - return array('success' => false); - } - } else { - $url = 'https://' . $host; - } - - $rhs = '/.well-known/zot-info'; - $https = ((strpos($url,'https://') === 0) ? true : false); - - logger('zot_finger: ' . $address . ' at ' . $url, LOGGER_DEBUG); - - if ($channel) { - $postvars = array( - 'address' => $address, - 'target' => $channel['channel_guid'], - 'target_sig' => $channel['channel_guid_sig'], - 'key' => $channel['channel_pubkey'] - ); - - $result = z_post_url($url . $rhs,$postvars); - - if ((! $result['success']) && ($autofallback)) { - if ($https) { - logger('zot_finger: https failed. falling back to http'); - $result = z_post_url('http://' . $host . $rhs,$postvars); - } - } - } else { - $rhs .= '?f=&address=' . urlencode($address); - - $result = z_fetch_url($url . $rhs); - if ((! $result['success']) && ($autofallback)) { - if ($https) { - logger('zot_finger: https failed. falling back to http'); - $result = z_fetch_url('http://' . $host . $rhs); - } - } - } - - if (! $result['success']) - logger('zot_finger: no results'); - - return $result; -} - -/** * @brief Refreshes after permission changed or friending, etc. * + * The top half of this function is similar to \Zotlabs\Zot\Finger::run() and could potentially be + * consolidated. + * * zot_refresh is typically invoked when somebody has changed permissions of a channel and they are notified * to fetch new permissions via a finger/discovery operation. This may result in a new connection * (abook entry) being added to a local channel and it may result in auto-permissions being granted. @@ -283,6 +234,7 @@ function zot_finger($webbie, $channel = null, $autofallback = true) { * * @returns boolean true if successful, else false */ + function zot_refresh($them, $channel = null, $force = false) { if (array_key_exists('xchan_network', $them) && ($them['xchan_network'] !== 'zot')) { @@ -298,7 +250,8 @@ function zot_refresh($them, $channel = null, $force = false) { if ($them['hubloc_url']) { $url = $them['hubloc_url']; - } else { + } + else { $r = null; // if they re-installed the server we could end up with the wrong record - pointing to the old install. @@ -334,7 +287,7 @@ function zot_refresh($them, $channel = null, $force = false) { $token = random_string(); - $postvars = array(); + $postvars = []; $postvars['token'] = $token; @@ -395,10 +348,13 @@ function zot_refresh($them, $channel = null, $force = false) { if($channel) { if($j['permissions']['data']) { - $permissions = crypto_unencapsulate(array( + $permissions = crypto_unencapsulate( + [ 'data' => $j['permissions']['data'], 'key' => $j['permissions']['key'], - 'iv' => $j['permissions']['iv']), + 'iv' => $j['permissions']['iv'], + 'alg' => $j['permissions']['alg'] + ], $channel['channel_prvkey']); if($permissions) $permissions = json_decode($permissions,true); @@ -424,6 +380,10 @@ function zot_refresh($them, $channel = null, $force = false) { $next_birthday = NULL_DATE; } + + // Keep original perms to check if we need to notify them + $previous_perms = get_all_perms($channel['channel_id'],$x['hash']); + $r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 limit 1", dbesc($x['hash']), intval($channel['channel_id']) @@ -487,10 +447,6 @@ function zot_refresh($them, $channel = null, $force = false) { } } - // Keep original perms to check if we need to notify them - $previous_perms = get_all_perms($channel['channel_id'],$x['hash']); - - $closeness = get_pconfig($channel['channel_id'],'system','new_abook_closeness'); if($closeness === false) $closeness = 80; @@ -520,12 +476,14 @@ function zot_refresh($them, $channel = null, $force = false) { if($new_connection) { if(! \Zotlabs\Access\Permissions::PermsCompare($new_perms,$previous_perms)) Zotlabs\Daemon\Master::Summon(array('Notifier','permission_create',$new_connection[0]['abook_id'])); - Zotlabs\Lib\Enotify::submit(array( + Zotlabs\Lib\Enotify::submit( + [ 'type' => NOTIFY_INTRO, 'from_xchan' => $x['hash'], 'to_xchan' => $channel['channel_hash'], - 'link' => z_root() . '/connedit/' . $new_connection[0]['abook_id'], - )); + 'link' => z_root() . '/connedit/' . $new_connection[0]['abook_id'] + ] + ); if(intval($permissions['view_stream'])) { if(intval(get_pconfig($channel['channel_id'],'perm_limits','send_stream') & PERMS_PENDING) @@ -535,6 +493,7 @@ function zot_refresh($them, $channel = null, $force = false) { /** If there is a default group for this channel, add this connection to it */ + $default_group = $channel['channel_default_group']; if($default_group) { require_once('include/group.php'); @@ -580,6 +539,7 @@ function zot_refresh($them, $channel = null, $force = false) { * @returns array|null null if site is blacklisted or not found, otherwise an * array with an hubloc record */ + function zot_gethub($arr, $multiple = false) { if($arr['guid'] && $arr['guid_sig'] && $arr['url'] && $arr['url_sig']) { @@ -592,7 +552,7 @@ function zot_gethub($arr, $multiple = false) { $limit = (($multiple) ? '' : ' limit 1 '); $sitekey = ((array_key_exists('sitekey',$arr) && $arr['sitekey']) ? " and hubloc_sitekey = '" . protect_sprintf($arr['sitekey']) . "' " : ''); - $r = q("select * from hubloc + $r = q("select hubloc.*, site.site_crypto from hubloc left join site on hubloc_url = site_url where hubloc_guid = '%s' and hubloc_guid_sig = '%s' and hubloc_url = '%s' and hubloc_url_sig = '%s' $sitekey $limit", @@ -629,9 +589,10 @@ function zot_gethub($arr, $multiple = false) { * * \b success boolean true or false * * \b message (optional) error string only if success is false */ + function zot_register_hub($arr) { - $result = array('success' => false); + $result = [ 'success' => false ]; if($arr['url'] && $arr['url_sig'] && $arr['guid'] && $arr['guid_sig']) { @@ -690,6 +651,7 @@ function zot_register_hub($arr) { * * \e boolean \b success boolean true or false * * \e string \b message (optional) error string only if success is false */ + function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { call_hooks('import_xchan', $arr); @@ -788,7 +750,8 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { $what .= 'xchan '; $changed = true; } - } else { + } + else { $import_photos = true; if((($arr['site']['directory_mode'] === 'standalone') @@ -824,7 +787,7 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { $changed = true; } - if ($import_photos) { + if($import_photos) { require_once('include/photo/photo_driver.php'); @@ -833,9 +796,9 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { $local = q("select channel_account_id, channel_id from channel where channel_hash = '%s' limit 1", dbesc($xchan_hash) ); - if ($local) { + if($local) { $ph = z_fetch_url($arr['photo'], true); - if ($ph['success']) { + if($ph['success']) { $hash = import_channel_photo($ph['body'], $arr['photo_mimetype'], $local[0]['channel_account_id'], $local[0]['channel_id']); @@ -873,11 +836,12 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { false ); } - } else { + } + else { $photos = import_xchan_photo($arr['photo'], $xchan_hash); } - if ($photos) { - if ($photos[4]) { + if($photos) { + if($photos[4]) { // importing the photo failed somehow. Leave the photo_date alone so we can try again at a later date. // This often happens when somebody joins the matrix with a bad cert. $r = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' @@ -888,7 +852,8 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { dbesc($photos[3]), dbesc($xchan_hash) ); - } else { + } + else { $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'", dbescdate(datetime_convert('UTC','UTC',$arr['photo_updated'])), @@ -945,7 +910,8 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { $what .= 'profile '; $changed = true; } - } else { + } + else { logger('import_xchan: profile not available - hiding'); // they may have made it private $r = q("delete from xprof where xprof_hash = '%s'", @@ -998,16 +964,17 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) { * @param array $arr - output of z_post_url() * @param array $outq - The queue structure attached to this request */ + function zot_process_response($hub, $arr, $outq) { - if (! $arr['success']) { + if(! $arr['success']) { logger('zot_process_response: failed: ' . $hub); return; } $x = json_decode($arr['body'], true); - if (! $x) { + if(! $x) { logger('zot_process_response: No json from ' . $hub); logger('zot_process_response: headers: ' . print_r($arr['header'],true), LOGGER_DATA, LOG_DEBUG); } @@ -1065,6 +1032,7 @@ function zot_process_response($hub, $arr, $outq) { * decrypted and json decoded notify packet from remote site * @return array from zot_import() */ + function zot_fetch($arr) { logger('zot_fetch: ' . print_r($arr,true), LOGGER_DATA, LOG_DEBUG); @@ -1082,16 +1050,18 @@ function zot_fetch($arr) { } foreach($ret_hubs as $ret_hub) { - $data = array( - 'type' => 'pickup', - 'url' => z_root(), - 'callback_sig' => base64url_encode(rsa_sign(z_root() . '/post',get_config('system','prvkey'))), - 'callback' => z_root() . '/post', - 'secret' => $arr['secret'], - 'secret_sig' => base64url_encode(rsa_sign($arr['secret'],get_config('system','prvkey'))) - ); - $datatosend = json_encode(crypto_encapsulate(json_encode($data),$ret_hub['hubloc_sitekey'])); + $data = [ + 'type' => 'pickup', + 'url' => z_root(), + 'callback_sig' => base64url_encode(rsa_sign(z_root() . '/post', get_config('system','prvkey'))), + 'callback' => z_root() . '/post', + 'secret' => $arr['secret'], + 'secret_sig' => base64url_encode(rsa_sign($arr['secret'], get_config('system','prvkey'))) + ]; + + $algorithm = zot_best_algorithm($ret_hub['site_crypto']); + $datatosend = json_encode(crypto_encapsulate(json_encode($data),$ret_hub['hubloc_sitekey'], $algorithm)); $fetch = zot_zot($url,$datatosend); @@ -1142,6 +1112,11 @@ function zot_import($arr, $sender_url) { $data = json_decode(crypto_unencapsulate($data,get_config('system','prvkey')),true); } + if(! is_array($data)) { + logger('decode error'); + return array(); + } + if(! $data['success']) { if($data['message']) logger('remote pickup failed: ' . $data['message']); @@ -1167,6 +1142,12 @@ function zot_import($arr, $sender_url) { logger('zot_import: notify: ' . print_r($i['notify'],true), LOGGER_DATA, LOG_DEBUG); + if(! is_array($i['notify'])) { + logger('decode error'); + continue; + } + + $hub = zot_gethub($i['notify']['sender']); if((! $hub) || ($hub['hubloc_url'] != $sender_url)) { logger('zot_import: potential forgery: wrong site for sender: ' . $sender_url . ' != ' . print_r($i['notify'],true)); @@ -1357,6 +1338,7 @@ function zot_import($arr, $sender_url) { * @param array $msg * @return NULL|array */ + function public_recips($msg) { require_once('include/channel.php'); @@ -1566,6 +1548,7 @@ function allowed_public_recips($msg) { * @param boolean $request (optional) default false * @return array */ + function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $request = false) { $result = array(); @@ -1799,7 +1782,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $ $result[] = $DR->get(); } else { - update_imported_item($sender,$arr,$r[0],$channel['channel_id']); + update_imported_item($sender,$arr,$r[0],$channel['channel_id'],$tag_delivery); $DR->update('updated'); $result[] = $DR->get(); if(! $relay) @@ -1875,6 +1858,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $ * * \e int \b mid * @param int $uid */ + function remove_community_tag($sender, $arr, $uid) { if(! (activity_match($arr['verb'], ACTIVITY_TAG) && ($arr['obj_type'] == ACTIVITY_OBJ_TAGTERM))) @@ -1945,7 +1929,8 @@ function remove_community_tag($sender, $arr, $uid) { * @param array $orig * @param int $uid */ -function update_imported_item($sender, $item, $orig, $uid) { + +function update_imported_item($sender, $item, $orig, $uid, $tag_delivery) { // If this is a comment being updated, remove any privacy information // so that item_store_update will set it from the original. @@ -1958,6 +1943,15 @@ function update_imported_item($sender, $item, $orig, $uid) { unset($item['item_private']); } + // we need the tag_delivery check for downstream flowing posts as the stored post + // may have a different owner than the one being transmitted. + + if(($sender['hash'] != $orig['owner_xchan'] && $sender['hash'] != $orig['author_xchan']) && (! $tag_delivery)) { + notice('sender is not owner or author'); + return; + } + + $x = item_store_update($item); // If we're updating an event that we've saved locally, we store the item info first @@ -1985,6 +1979,7 @@ function update_imported_item($sender, $item, $orig, $uid) { * @param boolean $relay * @return boolean|int post_id */ + function delete_imported_item($sender, $item, $uid, $relay) { logger('delete_imported_item invoked', LOGGER_DEBUG); @@ -2002,13 +1997,14 @@ function delete_imported_item($sender, $item, $uid, $relay) { intval($uid) ); - if ($r) { - if ($r[0]['author_xchan'] === $sender['hash'] || $r[0]['owner_xchan'] === $sender['hash'] || $r[0]['source_xchan'] === $sender['hash']) + if($r) { + if($r[0]['author_xchan'] === $sender['hash'] || $r[0]['owner_xchan'] === $sender['hash'] || $r[0]['source_xchan'] === $sender['hash']) $ownership_valid = true; $post_id = $r[0]['id']; $item_found = true; - } else { + } + else { // perhaps the item is still in transit and the delete notification got here before the actual item did. Store it with the deleted flag set. // item_store() won't try to deliver any notifications or start delivery chains if this flag is set. @@ -2017,25 +2013,24 @@ function delete_imported_item($sender, $item, $uid, $relay) { logger('delete received for non-existent item - storing item data.'); - /** @BUG $arr is undefined here, so this is dead code */ - if ($arr['author_xchan'] === $sender['hash'] || $arr['owner_xchan'] === $sender['hash'] || $arr['source_xchan'] === $sender['hash']) { + if($item['author_xchan'] === $sender['hash'] || $item['owner_xchan'] === $sender['hash'] || $item['source_xchan'] === $sender['hash']) { $ownership_valid = true; - $item_result = item_store($arr); + $item_result = item_store($item); $post_id = $item_result['item_id']; } } - if ($ownership_valid === false) { + if($ownership_valid === false) { logger('delete_imported_item: failed: ownership issue'); return false; } require_once('include/items.php'); - if ($item_found) { - if (intval($r[0]['item_deleted'])) { + if($item_found) { + if(intval($r[0]['item_deleted'])) { logger('delete_imported_item: item was already deleted'); - if (! $relay) + if(! $relay) return false; // This is a bit hackish, but may have to suffice until the notification/delivery loop is optimised @@ -2146,6 +2141,7 @@ function process_mail_delivery($sender, $arr, $deliveries) { * * \e string \b hash a xchan_hash * @param array $arr */ + function process_rating_delivery($sender, $arr) { logger('process_rating_delivery: ' . print_r($arr,true)); @@ -2205,6 +2201,7 @@ function process_rating_delivery($sender, $arr) { * @param array $arr * @param array $deliveries (unused) */ + function process_profile_delivery($sender, $arr, $deliveries) { logger('process_profile_delivery', LOGGER_DEBUG); @@ -2301,6 +2298,7 @@ function check_location_move($sender_hash,$locations) { * @param boolean $absolute (optional) default false * @return array */ + function sync_locations($sender, $arr, $absolute = false) { $ret = array(); @@ -2548,7 +2546,7 @@ function zot_encode_locations($channel) { if(intval($channel['channel_removed']) && $hub['hubloc_url'] === z_root()) $hub['hubloc_deleted'] = 1; - $ret[] = array( + $ret[] = [ 'host' => $hub['hubloc_host'], 'address' => $hub['hubloc_addr'], 'primary' => (intval($hub['hubloc_primary']) ? true : false), @@ -2557,7 +2555,7 @@ function zot_encode_locations($channel) { 'callback' => $hub['hubloc_callback'], 'sitekey' => $hub['hubloc_sitekey'], 'deleted' => (intval($hub['hubloc_deleted']) ? true : false) - ); + ]; } } @@ -2574,6 +2572,7 @@ function zot_encode_locations($channel) { * @param number $suppress_update default 0 * @return boolean $updated if something changed */ + function import_directory_profile($hash, $profile, $addr, $ud_flags = UPDATE_FLAGS_UPDATED, $suppress_update = 0) { logger('import_directory_profile', LOGGER_DEBUG); @@ -2708,6 +2707,7 @@ function import_directory_profile($hash, $profile, $addr, $ud_flags = UPDATE_FLA * @param string $hash * @param array $keywords */ + function import_directory_keywords($hash, $keywords) { $existing = array(); @@ -2752,6 +2752,7 @@ function import_directory_keywords($hash, $keywords) { * @param string $addr * @param int $flags (optional) default 0 */ + function update_modtime($hash, $guid, $addr, $flags = 0) { $dirmode = intval(get_config('system', 'directory_mode')); @@ -2784,6 +2785,7 @@ function update_modtime($hash, $guid, $addr, $flags = 0) { * @param string $pubkey * @return boolean true if updated or inserted */ + function import_site($arr, $pubkey) { if( (! is_array($arr)) || (! $arr['url']) || (! $arr['url_sig'])) return false; @@ -2851,6 +2853,7 @@ function import_site($arr, $pubkey) { $site_location = htmlspecialchars($arr['location'],ENT_COMPAT,'UTF-8',false); $site_realm = htmlspecialchars($arr['realm'],ENT_COMPAT,'UTF-8',false); $site_project = htmlspecialchars($arr['project'],ENT_COMPAT,'UTF-8',false); + $site_crypto = ((array_key_exists('encryption',$arr) && is_array($arr['encryption'])) ? htmlspecialchars(implode(',',$arr['encryption']),ENT_COMPAT,'UTF-8',false) : ''); $site_version = ((array_key_exists('version',$arr)) ? htmlspecialchars($arr['version'],ENT_COMPAT,'UTF-8',false) : ''); // You can have one and only one primary directory per realm. @@ -2872,6 +2875,7 @@ function import_site($arr, $pubkey) { || ($siterecord['site_register'] != $register_policy) || ($siterecord['site_project'] != $site_project) || ($siterecord['site_realm'] != $site_realm) + || ($siterecord['site_crypto'] != $site_crypto) || ($siterecord['site_version'] != $site_version) ) { $update = true; @@ -2880,7 +2884,7 @@ function import_site($arr, $pubkey) { // logger('import_site: stored: ' . print_r($siterecord,true)); - $r = q("update site set site_dead = 0, site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s', site_realm = '%s', site_type = %d, site_project = '%s', site_version = '%s' + $r = q("update site set site_dead = 0, site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s', site_realm = '%s', site_type = %d, site_project = '%s', site_version = '%s', site_crypto = '%s' where site_url = '%s'", dbesc($site_location), intval($site_directory), @@ -2893,6 +2897,7 @@ function import_site($arr, $pubkey) { intval(SITE_TYPE_ZOT), dbesc($site_project), dbesc($site_version), + dbesc($site_crypto), dbesc($url) ); if(! $r) { @@ -2910,8 +2915,8 @@ function import_site($arr, $pubkey) { else { $update = true; - $r = q("insert into site ( site_location, site_url, site_access, site_flags, site_update, site_directory, site_register, site_sellpage, site_realm, site_type, site_project, site_version ) - values ( '%s', '%s', %d, %d, '%s', '%s', %d, '%s', '%s', %d, '%s', '%s' )", + $r = q("insert into site ( site_location, site_url, site_access, site_flags, site_update, site_directory, site_register, site_sellpage, site_realm, site_type, site_project, site_version, site_crypto ) + values ( '%s', '%s', %d, %d, '%s', '%s', %d, '%s', '%s', %d, '%s', '%s', '%s' )", dbesc($site_location), dbesc($url), intval($access_policy), @@ -2923,7 +2928,8 @@ function import_site($arr, $pubkey) { dbesc($site_realm), intval(SITE_TYPE_ZOT), dbesc($site_project), - dbesc($site_version) + dbesc($site_version), + dbesc($site_crypto) ); if(! $r) { logger('import_site: record create failed. ' . print_r($arr,true)); @@ -2942,6 +2948,7 @@ function import_site($arr, $pubkey) { * @param array $packet (optional) default null * @param boolean $groups_changed (optional) default false */ + function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) { if(get_config('system','server_role') === 'basic') @@ -2977,7 +2984,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) { if(intval($channel['channel_removed'])) return; - $h = q("select * from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0", + $h = q("select hubloc.*, site.site_crypto from hubloc left join site on site_url = hubloc_url where hubloc_hash = '%s' and hubloc_deleted = 0", dbesc($channel['channel_hash']) ); @@ -3064,7 +3071,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) { foreach($synchubs as $hub) { $hash = random_string(); - $n = zot_build_packet($channel,'notify',$env_recips,$hub['hubloc_sitekey'],$hash); + $n = zot_build_packet($channel,'notify',$env_recips,$hub['hubloc_sitekey'],$hub['site_crypto'],$hash); queue_insert(array( 'hash' => $hash, 'account_id' => $channel['channel_account_id'], @@ -3090,6 +3097,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) { * @param array $deliveries * @return array */ + function process_channel_sync_delivery($sender, $arr, $deliveries) { if(get_config('system','server_role') === 'basic') @@ -3564,6 +3572,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { * * \e string \b xchan_url * @return string */ + function get_rpost_path($observer) { if(! $observer) return ''; @@ -3579,6 +3588,7 @@ function get_rpost_path($observer) { * @param array $x * @return boolean|string return false or a hash */ + function import_author_zot($x) { $hash = make_xchan_hash($x['guid'],$x['guid_sig']); @@ -3618,6 +3628,7 @@ function import_author_zot($x) { * @param array $data * @return array */ + function zot_reply_message_request($data) { $ret = array('success' => false); @@ -3654,7 +3665,7 @@ function zot_reply_message_request($data) { if ($messages) { $env_recips = null; - $r = q("select * from hubloc where hubloc_hash = '%s' and hubloc_error = 0 and hubloc_deleted = 0", + $r = q("select hubloc.*, site.site_crypto from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and hubloc_error = 0 and hubloc_deleted = 0", dbesc($sender_hash) ); if (! $r) { @@ -3676,7 +3687,7 @@ function zot_reply_message_request($data) { * create a notify packet and drop the actual message packet in the queue for pickup */ - $n = zot_build_packet($c[0],'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash,array('message_id' => $data['message_id'])); + $n = zot_build_packet($c[0],'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hub['site_crypto'],$hash,array('message_id' => $data['message_id'])); queue_insert(array( 'hash' => $hash, @@ -3913,6 +3924,11 @@ function zotinfo($arr) { $permissions['connected'] = true; } + // encrypt this with the default aes256cbc since we cannot be sure at this point which + // algorithms are preferred for communications with the remote site; notably + // because ztarget refers to an xchan and we don't necessarily know the origination + // location. + $ret['permissions'] = (($ztarget && $zkey) ? crypto_encapsulate(json_encode($permissions),$zkey) : $permissions); if($permissions['view_profile']) @@ -3943,6 +3959,8 @@ function zotinfo($arr) { $ret['site']['directory_url'] = z_root() . '/dirsearch'; + $ret['site']['encryption'] = crypto_methods(); + // hide detailed site information if you're off the grid if($dirmode != DIRECTORY_MODE_STANDALONE) { @@ -3980,17 +3998,17 @@ function zotinfo($arr) { $r = q("select * from addon where hidden = 0"); if($r) foreach($r as $rr) - $visible_plugins[] = $rr['name']; + $visible_plugins[] = $rr['aname']; } - $ret['site']['plugins'] = $visible_plugins; - $ret['site']['sitehash'] = get_config('system','location_hash'); - $ret['site']['sitename'] = get_config('system','sitename'); - $ret['site']['sellpage'] = get_config('system','sellpage'); - $ret['site']['location'] = get_config('system','site_location'); - $ret['site']['realm'] = get_directory_realm(); - $ret['site']['project'] = Zotlabs\Lib\System::get_platform_name() . ' ' . Zotlabs\Lib\System::get_server_role(); - $ret['site']['version'] = Zotlabs\Lib\System::get_project_version(); + $ret['site']['plugins'] = $visible_plugins; + $ret['site']['sitehash'] = get_config('system','location_hash'); + $ret['site']['sitename'] = get_config('system','sitename'); + $ret['site']['sellpage'] = get_config('system','sellpage'); + $ret['site']['location'] = get_config('system','site_location'); + $ret['site']['realm'] = get_directory_realm(); + $ret['site']['project'] = Zotlabs\Lib\System::get_platform_name() . ' ' . Zotlabs\Lib\System::get_server_role(); + $ret['site']['version'] = Zotlabs\Lib\System::get_project_version(); } @@ -4175,7 +4193,7 @@ function update_hub_connected($hub,$sitekey = '') { dbesc($sitekey) ); if(intval($hub['hubloc_orphancheck'])) { - q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d and hubloc_sitekey = '%s' ", + q("update hubloc set hubloc_orphancheck = 0 where hubloc_id = %d and hubloc_sitekey = '%s' ", intval($hub['hubloc_id']), dbesc($sitekey) ); @@ -4317,7 +4335,15 @@ function zot_reply_pickup($data) { } } - $encrypted = crypto_encapsulate(json_encode($ret),$sitekey); + // this is a bit of a hack because we don't have the hubloc_url here, only the callback url. + // worst case is we'll end up using aes256cbc if they've got a different post endpoint + + $x = q("select site_crypto from site where site_url = '%s' limit 1", + dbesc(str_replace('/post','',$data['callback'])) + ); + $algorithm = zot_best_algorithm(($x) ? $x[0]['site_crypto'] : ''); + + $encrypted = crypto_encapsulate(json_encode($ret),$sitekey,$algorithm); json_return_and_die($encrypted); /* pickup: end */ diff --git a/install/INSTALL.txt b/install/INSTALL.txt index a216e630d..7d4ed9534 100644 --- a/install/INSTALL.txt +++ b/install/INSTALL.txt @@ -1,12 +1,12 @@ -Hubzilla Installation +Software Installation -We've tried very hard to ensure that Hubzilla will run on commodity +We've tried very hard to ensure that this software will run on commodity hosting platforms - such as those used to host Wordpress blogs and Drupal websites. It will run on most any Linux VPS system. Windows LAMP platforms such as XAMPP and WAMP are not officially supported at this time - however we welcome patches if you manage to get it working. -Be aware that the Hubzilla is more than a simple web application. It is a +Be aware that this software is more than a simple web application. It is a complex communications system which more closely resembles an email server than a web server. For reliability and performance, messages are delivered in the background and are queued for later delivery when sites are down. This @@ -17,20 +17,24 @@ with your hosting provider prior to installation. (And preferably before entering into a long-term contract.) If you encounter installation issues, please let us know via the Github issue -tracker (https://github.com/redmatrix/hubzilla/issues). Please be as clear as you -can about your operating environment and provide as much detail as possible +tracker where you downloaded the software. Please be as clear as +you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms -in existence we may have only limited ability to debug your PHP installation or -acquire any missing modules - but we will do our best to solve any general code -issues. +in existence we may have only limited ability to debug your PHP installation +or acquire any missing modules - but we will do our best to solve any general +code issues. -Before you begin: Choose a domain name or subdomain name for your server. +**Before you begin** -Hubzilla can only be installed into the root of a domain or -sub-domain, and can not be installed using alternate TCP ports. +Choose a domain name or subdomain name for your server. + +The software can only be installed into the root of a domain or +sub-domain, and can not be installed using alternate TCP ports. These +restrictions may be relaxed in the future, but will be inconvenient to work +with, so we still STRONGLY recommend you abide by them. Decide if you will use SSL and obtain an SSL certificate before software installation. You SHOULD use SSL. If you use SSL, you MUST use a @@ -46,12 +50,12 @@ This restriction is incorporated because public posts from you may contain references to images on your own hub. Other members viewing their stream on other hubs will get warnings if your certificate is not trusted by their web browser. This will confuse many people because this is a decentralised network -and they will get the warning about your hub while viewing their own hub and may -think their own hub has an issue. These warnings are very technical and scary to -some folks, many of whom will not know how to proceed except to follow the browser -advice. This is disruptive to the community. That said, we recognise the issues -surrounding the current certificate infrastructure and agree there are many -problems, but that doesn't change the requirement. +and they will get the warning about your hub while viewing their own hub and +may think their own hub has an issue. These warnings are very technical and +scary to some folks, many of whom will not know how to proceed except to +follow the browser advice. This is disruptive to the community. That said, we +recognise the issues surrounding the current certificate infrastructure and +agree there are many problems, but that doesn't change the requirement. Free "browser-valid" certificates are available from providers such as StartSSL and LetsEncrypt. @@ -63,13 +67,36 @@ SSL port first, before falling back to a less secure connection. If you do not use SSL, your webserver MUST NOT listen on port 443 at all. If you use LetsEncrypt to provide certificates and create a file under -.well-known/acme-challenge so that LetsEncrypt can verify your domain ownership, -please remove or rename the .well-known directory as soon as the certificate is -generated. Hubzilla will provide its own handler for ".well-known" services when -it is installed, and an existing directory in this location may prevent some of -these services from working correctly. This should not be a problem with Apache, -but may be an issue with nginx or other web server platforms. +.well-known/acme-challenge so that LetsEncrypt can verify your domain +ownership, please remove or rename the .well-known directory as soon as the +certificate is generated. The software will provide its own handler for +".well-known" services when it is installed, and an existing directory in this +location may prevent some of these services from working correctly. This +should not be a problem with Apache, but may be an issue with nginx or other +web server platforms. + +**Server Roles** + +During installation you will be asked to choose a server role. Your choices are +1. Basic +2. Standard +3. Pro + +Basic is highly simplified, with almost all the advanced functionality and +complexity removed or permanently disabled. + +Standard is typically used for federated network use, when you wish to interact +with other networks using other protocols. Not all the built in features and +functionality work correctly when other networks are involved. All advanced +and complex features are available to all members by default. + +Pro is for sites that wish to make full use of the built-in abilities and +features, but **not** to interact with other networks. Advanced features are +enabled according to a per-account 'techlevel' which reduces complexity +initially and allows members to adjust the software complexity to match their +technical abilities. +**Installation** 1. Requirements - Apache with mod-rewrite enabled and "AllowOverride All" so you can use a @@ -96,7 +123,7 @@ but may be an issue with nginx or other web server platforms. - Installation into a top-level domain or sub-domain (without a directory/path component in the URL) is REQUIRED. -2. Unpack the Hubzilla files into the root of your web server document area. +2. Unpack the project files into the root of your web server document area. If you copy the directory tree to your webserver, make sure that you also copy .htaccess - as "dot" files are often hidden and aren't normally diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql index 4cbcfc64d..bd7d9d79c 100644 --- a/install/schema_mysql.sql +++ b/install/schema_mysql.sql @@ -114,7 +114,7 @@ CREATE TABLE IF NOT EXISTS `app` ( `app_sig` char(255) NOT NULL DEFAULT '', `app_author` char(255) NOT NULL DEFAULT '', `app_name` char(255) NOT NULL DEFAULT '', - `app_desc` text NOT NULL, + `app_desc` text NOT NULL DEFAULT '', `app_url` char(255) NOT NULL DEFAULT '', `app_photo` char(255) NOT NULL DEFAULT '', `app_version` char(255) NOT NULL DEFAULT '', @@ -125,6 +125,7 @@ CREATE TABLE IF NOT EXISTS `app` ( `app_requires` char(255) NOT NULL DEFAULT '', `app_deleted` int(11) NOT NULL DEFAULT '0', `app_system` int(11) NOT NULL DEFAULT '0', + `app_plugin` char(255) NOT NULL DEFAULT '', `app_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', `app_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', PRIMARY KEY (`id`), @@ -1058,6 +1059,7 @@ CREATE TABLE IF NOT EXISTS `profile` ( `photo` char(255) NOT NULL DEFAULT '', `thumb` char(255) NOT NULL DEFAULT '', `publish` tinyint(1) NOT NULL DEFAULT '0', + `profile_vcard` text NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `guid` (`profile_guid`,`uid`), KEY `uid` (`uid`), @@ -1153,6 +1155,7 @@ CREATE TABLE IF NOT EXISTS `site` ( `site_type` smallint NOT NULL DEFAULT '0', `site_project` char(255) NOT NULL DEFAULT '', `site_version` varchar(32) NOT NULL DEFAULT '', + `site_crypto` text NOT NULL DEFAULT '', PRIMARY KEY (`site_url`), KEY `site_flags` (`site_flags`), KEY `site_update` (`site_update`), diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql index a682aa49d..f8e4ecf5f 100644 --- a/install/schema_postgres.sql +++ b/install/schema_postgres.sql @@ -111,7 +111,7 @@ CREATE TABLE "app" ( "app_sig" text NOT NULL DEFAULT '', "app_author" text NOT NULL DEFAULT '', "app_name" text NOT NULL DEFAULT '', - "app_desc" text NOT NULL, + "app_desc" text NOT NULL DEFAULT '', "app_url" text NOT NULL DEFAULT '', "app_photo" text NOT NULL DEFAULT '', "app_version" text NOT NULL DEFAULT '', @@ -122,6 +122,7 @@ CREATE TABLE "app" ( "app_requires" text NOT NULL DEFAULT '', "app_deleted" smallint NOT NULL DEFAULT '0', "app_system" smallint NOT NULL DEFAULT '0', + "app_plugin" text NOT NULL DEFAULT '', "app_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', "app_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', PRIMARY KEY ("id") @@ -138,6 +139,7 @@ create index "app_edited" on app ("app_edited"); create index "app_deleted" on app ("app_deleted"); create index "app_system" on app ("app_system"); + CREATE TABLE "atoken" ( "atoken_id" serial NOT NULL, "atoken_aid" bigint NOT NULL DEFAULT 0, @@ -1041,6 +1043,7 @@ CREATE TABLE "profile" ( "photo" text NOT NULL, "thumb" text NOT NULL, "publish" numeric(1) NOT NULL DEFAULT '0', + "profile_vcard" text NOT NULL DEFAULT '', PRIMARY KEY ("id"), UNIQUE ("profile_guid","uid") @@ -1134,6 +1137,7 @@ CREATE TABLE "site" ( "site_type" smallint NOT NULL DEFAULT '0', "site_project" text NOT NULL DEFAULT '', "site_version" text NOT NULL DEFAULT '', + "site_crypto" text NOT NULL DEFAULT '', PRIMARY KEY ("site_url") ); create index "site_flags" on site ("site_flags"); diff --git a/install/update.php b/install/update.php index 7e7104b74..34f23b049 100644 --- a/install/update.php +++ b/install/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1184 ); +define( 'UPDATE_VERSION' , 1187 ); /** * @@ -2463,3 +2463,32 @@ function update_r1183() { return UPDATE_SUCCESS; return UPDATE_FAILED; } + +function update_r1184() { + + $r1 = q("alter table site add site_crypto text not null default '' "); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + +function update_r1185() { + + $r1 = q("alter table app add app_plugin char(255) not null default '' "); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + +function update_r1186() { + + $r1 = q("alter table profile add profile_vcard text not null default '' "); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + +}
\ No newline at end of file diff --git a/library/fullcalendar/CHANGELOG.txt b/library/fullcalendar/CHANGELOG.txt index e91ce3bd6..ed2eddb8a 100644 --- a/library/fullcalendar/CHANGELOG.txt +++ b/library/fullcalendar/CHANGELOG.txt @@ -1,4 +1,27 @@ +v3.1.0 (2016-12-05) +------------------- + +- experimental support for implicitly batched ("debounced") event rendering (#2938) + - `eventRenderWait` (off by default) +- new `footer` option, similar to header toolbar (#654, #3299) +- event rendering batch methods (#3351): + - `renderEvents` + - `updateEvents` +- more granular touch settings (#3377): + - `eventLongPressDelay` + - `selectLongPressDelay` +- eventDestroy not called when removing the popover (#3416, #3419) +- print stylesheet and gcal extension now offered as minified (#3415) +- fc-today in agenda header cells (#3361, #3365) +- height-related options in tandem with other options (#3327, #3384) +- Kazakh locale (#3394) +- Afrikaans locale (#3390) +- internal refactor related to timing of rendering and firing handlers. + calls to rerender the current date-range and events from within handlers + might not execute immediately. instead, will execute after handler finishes. + + v3.0.1 (2016-09-26) ------------------- diff --git a/library/fullcalendar/fullcalendar.css b/library/fullcalendar/fullcalendar.css index 7a3f39923..5620e0bd6 100644 --- a/library/fullcalendar/fullcalendar.css +++ b/library/fullcalendar/fullcalendar.css @@ -1,5 +1,5 @@ /*! - * FullCalendar v3.0.1 Stylesheet + * FullCalendar v3.1.0 Stylesheet * Docs & License: http://fullcalendar.io/ * (c) 2016 Adam Shaw */ @@ -49,7 +49,7 @@ body .fc { /* extra precedence to overcome jqui */ color: #666; } -.fc-unthemed .fc-today { +.fc-unthemed td.fc-today { background: #fcf8e3; } @@ -811,9 +811,16 @@ a.fc-more:hover { .fc-toolbar { text-align: center; +} + +.fc-toolbar.fc-header-toolbar { margin-bottom: 1em; } +.fc-toolbar.fc-footer-toolbar { + margin-top: 1em; +} + .fc-toolbar .fc-left { float: left; } diff --git a/library/fullcalendar/fullcalendar.js b/library/fullcalendar/fullcalendar.js index 3c2c380bc..b7371e25f 100644 --- a/library/fullcalendar/fullcalendar.js +++ b/library/fullcalendar/fullcalendar.js @@ -1,5 +1,5 @@ /*! - * FullCalendar v3.0.1 + * FullCalendar v3.1.0 * Docs & License: http://fullcalendar.io/ * (c) 2016 Adam Shaw */ @@ -19,8 +19,8 @@ ;; var FC = $.fullCalendar = { - version: "3.0.1", - internalApiVersion: 6 + version: "3.1.0", + internalApiVersion: 7 }; var fcViews = FC.views = {}; @@ -53,13 +53,14 @@ $.fn.fullCalendar = function(options) { calendar.render(); } }); - + return res; }; var complexOptions = [ // names of options that are objects whose properties should be combined 'header', + 'footer', 'buttonText', 'buttonIcons', 'themeButtonIcons' @@ -848,6 +849,7 @@ function createObject(proto) { f.prototype = proto; return new f(); } +FC.createObject = createObject; function copyOwnProps(src, dest) { @@ -1004,20 +1006,6 @@ function debounce(func, wait, immediate) { }; } - -// HACK around jQuery's now A+ promises: execute callback synchronously if already resolved. -// thenFunc shouldn't accept args. -// similar to whenResources in Scheduler plugin. -function syncThen(promise, thenFunc) { - // not a promise, or an already-resolved promise? - if (!promise || !promise.then || promise.state() === 'resolved') { - return $.when(thenFunc()); // resolve immediately - } - else if (thenFunc) { - return promise.then(thenFunc); - } -} - ;; /* @@ -1681,6 +1669,201 @@ function mixIntoClass(theClass, members) { } ;; +/* +Wrap jQuery's Deferred Promise object to be slightly more Promise/A+ compliant. +With the added non-standard feature of synchronously executing handlers on resolved promises, +which doesn't always happen otherwise (esp with nested .then handlers!?), +so, this makes things a lot easier, esp because jQuery 3 changed the synchronicity for Deferred objects. + +TODO: write tests and more comments +*/ + +function Promise(executor) { + var deferred = $.Deferred(); + var promise = deferred.promise(); + + if (typeof executor === 'function') { + executor( + function(value) { // resolve + if (Promise.immediate) { + promise._value = value; + } + deferred.resolve(value); + }, + function() { // reject + deferred.reject(); + } + ); + } + + if (Promise.immediate) { + var origThen = promise.then; + + promise.then = function(onFulfilled, onRejected) { + var state = promise.state(); + + if (state === 'resolved') { + if (typeof onFulfilled === 'function') { + return Promise.resolve(onFulfilled(promise._value)); + } + } + else if (state === 'rejected') { + if (typeof onRejected === 'function') { + onRejected(); + return promise; // already rejected + } + } + + return origThen.call(promise, onFulfilled, onRejected); + }; + } + + return promise; // instanceof Promise will break :( TODO: make Promise a real class +} + +FC.Promise = Promise; + +Promise.immediate = true; + + +Promise.resolve = function(value) { + if (value && typeof value.resolve === 'function') { + return value.promise(); + } + if (value && typeof value.then === 'function') { + return value; + } + else { + var deferred = $.Deferred().resolve(value); + var promise = deferred.promise(); + + if (Promise.immediate) { + var origThen = promise.then; + + promise._value = value; + + promise.then = function(onFulfilled, onRejected) { + if (typeof onFulfilled === 'function') { + return Promise.resolve(onFulfilled(value)); + } + return origThen.call(promise, onFulfilled, onRejected); + }; + } + + return promise; + } +}; + + +Promise.reject = function() { + return $.Deferred().reject().promise(); +}; + + +Promise.all = function(inputs) { + var hasAllValues = false; + var values; + var i, input; + + if (Promise.immediate) { + hasAllValues = true; + values = []; + + for (i = 0; i < inputs.length; i++) { + input = inputs[i]; + + if (input && typeof input.state === 'function' && input.state() === 'resolved' && ('_value' in input)) { + values.push(input._value); + } + else if (input && typeof input.then === 'function') { + hasAllValues = false; + break; + } + else { + values.push(input); + } + } + } + + if (hasAllValues) { + return Promise.resolve(values); + } + else { + return $.when.apply($.when, inputs).then(function() { + return $.when($.makeArray(arguments)); + }); + } +}; + +;; + +// TODO: write tests and clean up code + +function TaskQueue(debounceWait) { + var q = []; // array of runFuncs + + function addTask(taskFunc) { + return new Promise(function(resolve) { + + // should run this function when it's taskFunc's turn to run. + // responsible for popping itself off the queue. + var runFunc = function() { + Promise.resolve(taskFunc()) // result might be async, coerce to promise + .then(resolve) // resolve TaskQueue::push's promise, for the caller. will receive result of taskFunc. + .then(function() { + q.shift(); // pop itself off + + // run the next task, if any + if (q.length) { + q[0](); + } + }); + }; + + // always put the task at the end of the queue, BEFORE running the task + q.push(runFunc); + + // if it's the only task in the queue, run immediately + if (q.length === 1) { + runFunc(); + } + }); + } + + this.add = // potentially debounce, for the public method + typeof debounceWait === 'number' ? + debounce(addTask, debounceWait) : + addTask; // if not a number (null/undefined/false), no debounce at all + + this.addQuickly = addTask; // guaranteed no debounce +} + +FC.TaskQueue = TaskQueue; + +/* +q = new TaskQueue(); + +function work(i) { + return q.push(function() { + trigger(); + console.log('work' + i); + }); +} + +var cnt = 0; + +function trigger() { + if (cnt < 5) { + cnt++; + work(cnt); + } +} + +work(9); +*/ + +;; + var EmitterMixin = FC.EmitterMixin = { // jQuery-ification via $(this) allows a non-DOM object to have @@ -1688,7 +1871,18 @@ var EmitterMixin = FC.EmitterMixin = { on: function(types, handler) { + $(this).on(types, this._prepareIntercept(handler)); + return this; // for chaining + }, + + + one: function(types, handler) { + $(this).one(types, this._prepareIntercept(handler)); + return this; // for chaining + }, + + _prepareIntercept: function(handler) { // handlers are always called with an "event" object as their first param. // sneak the `this` context and arguments into the extra parameter object // and forward them on to the original handler. @@ -1708,9 +1902,7 @@ var EmitterMixin = FC.EmitterMixin = { } intercept.guid = handler.guid; - $(this).on(types, intercept); - - return this; // for chaining + return intercept; }, @@ -2039,9 +2231,15 @@ var CoordCache = FC.CoordCache = Class.extend({ // Queries the els for coordinates and stores them. // Call this method before using and of the get* methods below. build: function() { - var offsetParentEl = this.forcedOffsetParentEl || this.els.eq(0).offsetParent(); + var offsetParentEl = this.forcedOffsetParentEl; + if (!offsetParentEl && this.els.length > 0) { + offsetParentEl = this.els.eq(0).offsetParent(); + } + + this.origin = offsetParentEl ? + offsetParentEl.offset() : + null; - this.origin = offsetParentEl.offset(); this.boundingRect = this.queryBoundingRect(); if (this.isHorizontal) { @@ -2224,12 +2422,19 @@ var CoordCache = FC.CoordCache = Class.extend({ // Compute and return what the elements' bounding rectangle is, from the user's perspective. // Right now, only returns a rectangle if constrained by an overflow:scroll element. + // Returns null if there are no elements queryBoundingRect: function() { - var scrollParentEl = getScrollParent(this.els.eq(0)); + var scrollParentEl; + + if (this.els.length > 0) { + scrollParentEl = getScrollParent(this.els.eq(0)); - if (!scrollParentEl.is(document)) { - return getClientRect(scrollParentEl); + if (!scrollParentEl.is(document)) { + return getClientRect(scrollParentEl); + } } + + return null; }, isPointInBounds: function(leftOffset, topOffset) { @@ -3448,6 +3653,7 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, { dayTouchStart: function(ev) { var view = this.view; + var selectLongPressDelay = view.opt('selectLongPressDelay'); // HACK to prevent a user's clickaway for unselecting a range or an event // from causing a dayClick. @@ -3455,8 +3661,12 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, { this.tempIgnoreMouse(); } + if (selectLongPressDelay == null) { + selectLongPressDelay = view.opt('longPressDelay'); // fallback + } + this.dayDragListener.startInteraction(ev, { - delay: this.view.opt('longPressDelay') + delay: selectLongPressDelay }); }, @@ -3793,7 +4003,7 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, { // Computes HTML classNames for a single-day element - getDayClasses: function(date) { + getDayClasses: function(date, noThemeHighlight) { var view = this.view; var today = view.calendar.getNow(); var classes = [ 'fc-' + dayIDs[date.day()] ]; @@ -3806,10 +4016,11 @@ var Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, { } if (date.isSame(today, 'day')) { - classes.push( - 'fc-today', - view.highlightStateClass - ); + classes.push('fc-today'); + + if (noThemeHighlight !== true) { + classes.push(view.highlightStateClass); + } } else if (date < today) { classes.push('fc-past'); @@ -4005,16 +4216,33 @@ Grid.mixin({ // Compute business hour segs for the grid's current date range. // Caller must ask if whole-day business hours are needed. - buildBusinessHourSegs: function(wholeDay) { - var events = this.view.calendar.getCurrentBusinessHourEvents(wholeDay); + // If no `businessHours` configuration value is specified, assumes the calendar default. + buildBusinessHourSegs: function(wholeDay, businessHours) { + return this.eventsToSegs( + this.buildBusinessHourEvents(wholeDay, businessHours) + ); + }, + + + // Compute business hour *events* for the grid's current date range. + // Caller must ask if whole-day business hours are needed. + // If no `businessHours` configuration value is specified, assumes the calendar default. + buildBusinessHourEvents: function(wholeDay, businessHours) { + var calendar = this.view.calendar; + var events; + + if (businessHours == null) { + // fallback + // access from calendawr. don't access from view. doesn't update with dynamic options. + businessHours = calendar.options.businessHours; + } + + events = calendar.computeBusinessHourEvents(wholeDay, businessHours); // HACK. Eventually refactor business hours "events" system. // If no events are given, but businessHours is activated, this means the entire visible range should be // marked as *not* business-hours, via inverse-background rendering. - if ( - !events.length && - this.view.calendar.options.businessHours // don't access view option. doesn't update with dynamic options - ) { + if (!events.length && businessHours) { events = [ $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, { start: this.view.end, // guaranteed out-of-range @@ -4024,7 +4252,7 @@ Grid.mixin({ ]; } - return this.eventsToSegs(events); + return events; }, @@ -4066,7 +4294,7 @@ Grid.mixin({ handleSegClick: function(seg, ev) { - var res = this.view.trigger('eventClick', seg.el[0], seg.event, ev); // can return `false` to cancel + var res = this.view.publiclyTrigger('eventClick', seg.el[0], seg.event, ev); // can return `false` to cancel if (res === false) { ev.preventDefault(); } @@ -4083,7 +4311,7 @@ Grid.mixin({ if (this.view.isEventResizable(seg.event)) { seg.el.addClass('fc-allow-mouse-resize'); } - this.view.trigger('eventMouseover', seg.el[0], seg.event, ev); + this.view.publiclyTrigger('eventMouseover', seg.el[0], seg.event, ev); } }, @@ -4099,7 +4327,7 @@ Grid.mixin({ if (this.view.isEventResizable(seg.event)) { seg.el.removeClass('fc-allow-mouse-resize'); } - this.view.trigger('eventMouseout', seg.el[0], seg.event, ev); + this.view.publiclyTrigger('eventMouseout', seg.el[0], seg.event, ev); } }, @@ -4124,6 +4352,7 @@ Grid.mixin({ var isResizable = view.isEventResizable(event); var isResizing = false; var dragListener; + var eventLongPressDelay; if (isSelected && isResizable) { // only allow resizing of the event is selected @@ -4132,12 +4361,17 @@ Grid.mixin({ if (!isResizing && (isDraggable || isResizable)) { // allowed to be selected? + eventLongPressDelay = view.opt('eventLongPressDelay'); + if (eventLongPressDelay == null) { + eventLongPressDelay = view.opt('longPressDelay'); // fallback + } + dragListener = isDraggable ? this.buildSegDragListener(seg) : this.buildSegSelectListener(seg); // seg isn't draggable, but still needs to be selected dragListener.startInteraction(ev, { // won't start if already started - delay: isSelected ? 0 : this.view.opt('longPressDelay') // do delay if not already selected + delay: isSelected ? 0 : eventLongPressDelay // do delay if not already selected }); } @@ -4270,11 +4504,15 @@ Grid.mixin({ mouseFollower.stop(!dropLocation, function() { if (isDragging) { view.unrenderDrag(); - view.showEvent(event); _this.segDragStop(seg, ev); } + if (dropLocation) { - view.reportEventDrop(event, dropLocation, this.largeUnit, el, ev); + // no need to re-show original, will rerender all anyways. esp important if eventRenderWait + view.reportEventDrop(event, dropLocation, _this.largeUnit, el, ev); + } + else { + view.showEvent(event); } }); _this.segDragListener = null; @@ -4316,14 +4554,14 @@ Grid.mixin({ // Called before event segment dragging starts segDragStart: function(seg, ev) { this.isDraggingSeg = true; - this.view.trigger('eventDragStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy + this.view.publiclyTrigger('eventDragStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy }, // Called after event segment dragging stops segDragStop: function(seg, ev) { this.isDraggingSeg = false; - this.view.trigger('eventDragStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy + this.view.publiclyTrigger('eventDragStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy }, @@ -4561,18 +4799,23 @@ Grid.mixin({ }, hitOut: function() { // called before mouse moves to a different hit OR moved out of all hits resizeLocation = null; + view.showEvent(event); // for when out-of-bounds. show original }, hitDone: function() { // resets the rendering to show the original event _this.unrenderEventResize(); - view.showEvent(event); enableCursor(); }, interactionEnd: function(ev) { if (isDragging) { _this.segResizeStop(seg, ev); } + if (resizeLocation) { // valid date to resize to? - view.reportEventResize(event, resizeLocation, this.largeUnit, el, ev); + // no need to re-show original, will rerender all anyways. esp important if eventRenderWait + view.reportEventResize(event, resizeLocation, _this.largeUnit, el, ev); + } + else { + view.showEvent(event); } _this.segResizeListener = null; } @@ -4585,14 +4828,14 @@ Grid.mixin({ // Called before event segment resizing starts segResizeStart: function(seg, ev) { this.isResizingSeg = true; - this.view.trigger('eventResizeStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy + this.view.publiclyTrigger('eventResizeStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy }, // Called after event segment resizing stops segResizeStop: function(seg, ev) { this.isResizingSeg = false; - this.view.trigger('eventResizeStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy + this.view.publiclyTrigger('eventResizeStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy }, @@ -5143,7 +5386,7 @@ var DayTableMixin = FC.DayTableMixin = { this.dayIndices = dayIndices; this.daysPerRow = daysPerRow; this.rowCnt = rowCnt; - + this.updateDayTableCols(); }, @@ -5381,9 +5624,25 @@ var DayTableMixin = FC.DayTableMixin = { // (colspan should be no different) renderHeadDateCellHtml: function(date, colspan, otherAttrs) { var view = this.view; + var classNames = [ + 'fc-day-header', + view.widgetHeaderClass + ]; + + // if only one row of days, the classNames on the header can represent the specific days beneath + if (this.rowCnt === 1) { + classNames = classNames.concat( + // includes the day-of-week class + // noThemeHighlight=true (don't highlight the header) + this.getDayClasses(date, true) + ); + } + else { + classNames.push('fc-' + dayIDs[date.day()]); // only add the day-of-week class + } return '' + - '<th class="fc-day-header ' + view.widgetHeaderClass + ' fc-' + dayIDs[date.day()] + '"' + + '<th class="' + classNames.join(' ') + '"' + (this.rowCnt === 1 ? ' data-date="' + date.format('YYYY-MM-DD') + '"' : '') + @@ -5534,7 +5793,7 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, { // trigger dayRender with each cell's element for (row = 0; row < rowCnt; row++) { for (col = 0; col < colCnt; col++) { - view.trigger( + view.publiclyTrigger( 'dayRender', null, this.getCellDate(row, col), @@ -6469,7 +6728,7 @@ DayGrid.mixin({ if (typeof clickOption === 'function') { // the returned value can be an atomic option - clickOption = view.trigger('eventLimitClick', null, { + clickOption = view.publiclyTrigger('eventLimitClick', null, { date: date, dayEl: dayEl, moreEl: moreEl, @@ -6512,6 +6771,14 @@ DayGrid.mixin({ viewportConstrain: view.opt('popoverViewportConstrain'), hide: function() { // kill everything when the popover is hidden + // notify events to be removed + if (_this.popoverSegs) { + var seg; + for (var i = 0; i < _this.popoverSegs.length; ++i) { + seg = _this.popoverSegs[i]; + view.publiclyTrigger('eventDestroy', seg.event, seg.event, seg.el); + } + } _this.segPopover.removeElement(); _this.segPopover = null; _this.popoverSegs = null; @@ -7789,9 +8056,14 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { options: null, // hash containing all options. already merged with view-specific-options el: null, // the view's containing element. set by Calendar - displaying: null, // a promise representing the state of rendering. null if no render requested - isSkeletonRendered: false, + isDateSet: false, + isDateRendered: false, + dateRenderQueue: null, + + isEventsBound: false, + isEventsSet: false, isEventsRendered: false, + eventRenderQueue: null, // range the view is actually displaying (moments) start: null, @@ -7841,6 +8113,9 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { this.eventOrderSpecs = parseFieldSpecs(this.opt('eventOrder')); + this.dateRenderQueue = new TaskQueue(); + this.eventRenderQueue = new TaskQueue(this.opt('eventRenderWait')); + this.initialize(); }, @@ -7858,10 +8133,10 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Triggers handlers that are view-related. Modifies args before passing to calendar. - trigger: function(name, thisObj) { // arguments beyond thisObj are passed along + publiclyTrigger: function(name, thisObj) { // arguments beyond thisObj are passed along var calendar = this.calendar; - return calendar.trigger.apply( + return calendar.publiclyTrigger.apply( calendar, [name, thisObj || this].concat( Array.prototype.slice.call(arguments, 2), // arguments beyond thisObj @@ -7871,16 +8146,33 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { }, - /* Dates - ------------------------------------------------------------------------------------------------------------------*/ + // Returns a proxy of the given promise that will be rejected if the given event fires + // before the promise resolves. + rejectOn: function(eventName, promise) { + var _this = this; + return new Promise(function(resolve, reject) { + _this.one(eventName, reject); - // Updates all internal dates to center around the given current unzoned date. - setDate: function(date) { - this.setRange(this.computeRange(date)); + function cleanup() { + _this.off(eventName, reject); + } + + promise.then(function(res) { // success + cleanup(); + resolve(res); + }, function() { // failure + cleanup(); + reject(); + }); + }); }, + /* Date Computation + ------------------------------------------------------------------------------------------------------------------*/ + + // Updates all internal dates for displaying the given unzoned range. setRange: function(range) { $.extend(this, range); // assigns every property to this object's member variables @@ -7963,6 +8255,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Sets the view's title property to the most updated computed value updateTitle: function() { this.title = this.computeTitle(); + this.calendar.setToolbarsTitle(this.title); }, @@ -8068,164 +8361,219 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { }, - /* Rendering - ------------------------------------------------------------------------------------------------------------------*/ + // Rendering Non-date-related Content + // ----------------------------------------------------------------------------------------------------------------- - // Sets the container element that the view should render inside of. - // Does other DOM-related initializations. + // Sets the container element that the view should render inside of, does global DOM-related initializations, + // and renders all the non-date-related content inside. setElement: function(el) { this.el = el; this.bindGlobalHandlers(); + this.renderSkeleton(); }, // Removes the view's container element from the DOM, clearing any content beforehand. // Undoes any other DOM-related attachments. removeElement: function() { - this.clear(); // clears all content - - // clean up the skeleton - if (this.isSkeletonRendered) { - this.unrenderSkeleton(); - this.isSkeletonRendered = false; - } + this.unsetDate(); + this.unrenderSkeleton(); this.unbindGlobalHandlers(); this.el.remove(); - // NOTE: don't null-out this.el in case the View was destroyed within an API callback. // We don't null-out the View's other jQuery element references upon destroy, // so we shouldn't kill this.el either. }, - // Does everything necessary to display the view centered around the given unzoned date. - // Does every type of rendering EXCEPT rendering events. - // Is asychronous and returns a promise. - display: function(date, explicitScrollState) { - var _this = this; - var prevScrollState = null; + // Renders the basic structure of the view before any content is rendered + renderSkeleton: function() { + // subclasses should implement + }, + - if (explicitScrollState != null && this.displaying) { // don't need prevScrollState if explicitScrollState - prevScrollState = this.queryScroll(); + // Unrenders the basic structure of the view + unrenderSkeleton: function() { + // subclasses should implement + }, + + + // Date Setting/Unsetting + // ----------------------------------------------------------------------------------------------------------------- + + + setDate: function(date) { + var isReset = this.isDateSet; + + this.isDateSet = true; + this.handleDate(date, isReset); + this.trigger(isReset ? 'dateReset' : 'dateSet', date); + }, + + + unsetDate: function() { + if (this.isDateSet) { + this.isDateSet = false; + this.handleDateUnset(); + this.trigger('dateUnset'); } + }, - this.calendar.freezeContentHeight(); - return syncThen(this.clear(), function() { // clear the content first - return ( - _this.displaying = - syncThen(_this.displayView(date), function() { // displayView might return a promise + // Date Handling + // ----------------------------------------------------------------------------------------------------------------- - // caller of display() wants a specific scroll state? - if (explicitScrollState != null) { - // we make an assumption that this is NOT the initial render, - // and thus don't need forceScroll (is inconveniently asynchronous) - _this.setScroll(explicitScrollState); - } - else { - _this.forceScroll(_this.computeInitialScroll(prevScrollState)); - } - _this.calendar.unfreezeContentHeight(); - _this.triggerRender(); - }) - ); + handleDate: function(date, isReset) { + var _this = this; + + this.unbindEvents(); // will do nothing if not already bound + this.requestDateRender(date).then(function() { + // wish we could start earlier, but setRange/computeRange needs to execute first + _this.bindEvents(); // will request events }); }, - // Does everything necessary to clear the content of the view. - // Clears dates and events. Does not clear the skeleton. - // Is asychronous and returns a promise. - clear: function() { + handleDateUnset: function() { + this.unbindEvents(); + this.requestDateUnrender(); + }, + + + // Date Render Queuing + // ----------------------------------------------------------------------------------------------------------------- + + + // if date not specified, uses current + requestDateRender: function(date) { var _this = this; - var displaying = this.displaying; - if (displaying) { // previously displayed, or in the process of being displayed? - return syncThen(displaying, function() { // wait for the display to finish - _this.displaying = null; - _this.clearEvents(); - return _this.clearView(); // might return a promise. chain it - }); - } - else { - return $.when(); // an immediately-resolved promise - } + return this.dateRenderQueue.add(function() { + return _this.executeDateRender(date); + }); }, - // Displays the view's non-event content, such as date-related content or anything required by events. - // Renders the view's non-content skeleton if necessary. - // Can be asynchronous and return a promise. - displayView: function(date) { - if (!this.isSkeletonRendered) { - this.renderSkeleton(); - this.isSkeletonRendered = true; - } + requestDateUnrender: function() { + var _this = this; + + return this.dateRenderQueue.add(function() { + return _this.executeDateUnrender(); + }); + }, + + + // Date High-level Rendering + // ----------------------------------------------------------------------------------------------------------------- + + + // if date not specified, uses current + executeDateRender: function(date) { + var _this = this; + + // if rendering a new date, reset scroll to initial state (scrollTime) if (date) { - this.setDate(date); + this.captureInitialScroll(); } - if (this.render) { - this.render(); // TODO: deprecate + else { + this.captureScroll(); // a rerender of the current date } - this.renderDates(); - this.updateSize(); - this.renderBusinessHours(); // might need coordinates, so should go after updateSize() - this.startNowIndicator(); + + this.freezeHeight(); + + return this.executeDateUnrender().then(function() { + + if (date) { + _this.setRange(_this.computeRange(date)); + } + + if (_this.render) { + _this.render(); // TODO: deprecate + } + + _this.renderDates(); + _this.updateSize(); + _this.renderBusinessHours(); // might need coordinates, so should go after updateSize() + _this.startNowIndicator(); + + _this.thawHeight(); + _this.releaseScroll(); + + _this.isDateRendered = true; + _this.onDateRender(); + _this.trigger('dateRender'); + }); }, - // Unrenders the view content that was rendered in displayView. - // Can be asynchronous and return a promise. - clearView: function() { - this.unselect(); - this.stopNowIndicator(); - this.triggerUnrender(); - this.unrenderBusinessHours(); - this.unrenderDates(); - if (this.destroy) { - this.destroy(); // TODO: deprecate + executeDateUnrender: function() { + var _this = this; + + if (_this.isDateRendered) { + return this.requestEventsUnrender().then(function() { + + _this.unselect(); + _this.stopNowIndicator(); + _this.triggerUnrender(); + _this.unrenderBusinessHours(); + _this.unrenderDates(); + + if (_this.destroy) { + _this.destroy(); // TODO: deprecate + } + + _this.isDateRendered = false; + _this.trigger('dateUnrender'); + }); + } + else { + return Promise.resolve(); } }, - // Renders the basic structure of the view before any content is rendered - renderSkeleton: function() { - // subclasses should implement - }, + // Date Rendering Triggers + // ----------------------------------------------------------------------------------------------------------------- - // Unrenders the basic structure of the view - unrenderSkeleton: function() { - // subclasses should implement + onDateRender: function() { + this.triggerRender(); }, - // Renders the view's date-related content. - // Assumes setRange has already been called and the skeleton has already been rendered. + // Date Low-level Rendering + // ----------------------------------------------------------------------------------------------------------------- + + + // date-cell content only renderDates: function() { // subclasses should implement }, - // Unrenders the view's date-related content + // date-cell content only unrenderDates: function() { // subclasses should override }, + // Misc view rendering utils + // ------------------------- + + // Signals that the view's content has been rendered triggerRender: function() { - this.trigger('viewRender', this, this, this.el); + this.publiclyTrigger('viewRender', this, this, this.el); }, // Signals that the view's content is about to be unrendered triggerUnrender: function() { - this.trigger('viewDestroy', this, this, this.el); + this.publiclyTrigger('viewDestroy', this, this, this.el); }, @@ -8362,10 +8710,9 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Refreshes anything dependant upon sizing of the container element of the grid updateSize: function(isResize) { - var scrollState; if (isResize) { - scrollState = this.queryScroll(); + this.captureScroll(); } this.updateHeight(isResize); @@ -8373,7 +8720,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { this.updateNowIndicator(); if (isResize) { - this.setScroll(scrollState); + this.releaseScroll(); } }, @@ -8406,72 +8753,294 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { ------------------------------------------------------------------------------------------------------------------*/ - // Computes the initial pre-configured scroll state prior to allowing the user to change it. - // Given the scroll state from the previous rendering. If first time rendering, given null. - computeInitialScroll: function(previousScrollState) { - return 0; + capturedScroll: null, + capturedScrollDepth: 0, + + + captureScroll: function() { + if (!(this.capturedScrollDepth++)) { + this.capturedScroll = this.isDateRendered ? this.queryScroll() : {}; // require a render first + return true; // root? + } + return false; }, - // Retrieves the view's current natural scroll state. Can return an arbitrary format. - queryScroll: function() { - // subclasses must implement + captureInitialScroll: function(forcedScroll) { + if (this.captureScroll()) { // root? + this.capturedScroll.isInitial = true; + + if (forcedScroll) { + $.extend(this.capturedScroll, forcedScroll); + } + else { + this.capturedScroll.isComputed = true; + } + } }, - // Sets the view's scroll state. Will accept the same format computeInitialScroll and queryScroll produce. - setScroll: function(scrollState) { - // subclasses must implement + releaseScroll: function() { + var scroll = this.capturedScroll; + var isRoot = this.discardScroll(); + + if (scroll.isComputed) { + if (isRoot) { + // only compute initial scroll if it will actually be used (is the root capture) + $.extend(scroll, this.computeInitialScroll()); + } + else { + scroll = null; // scroll couldn't be computed. don't apply it to the DOM + } + } + + if (scroll) { + // we act immediately on a releaseScroll operation, as opposed to captureScroll. + // if capture/release wraps a render operation that screws up the scroll, + // we still want to restore it a good state after, regardless of depth. + + if (scroll.isInitial) { + this.hardSetScroll(scroll); // outsmart how browsers set scroll on initial DOM + } + else { + this.setScroll(scroll); + } + } + }, + + + discardScroll: function() { + if (!(--this.capturedScrollDepth)) { + this.capturedScroll = null; + return true; // root? + } + return false; + }, + + + computeInitialScroll: function() { + return {}; + }, + + + queryScroll: function() { + return {}; }, - // Sets the scroll state, making sure to overcome any predefined scroll value the browser has in mind - forceScroll: function(scrollState) { + hardSetScroll: function(scroll) { var _this = this; + var exec = function() { _this.setScroll(scroll); }; + exec(); + setTimeout(exec, 0); // to surely clear the browser's initial scroll for the DOM + }, - this.setScroll(scrollState); - setTimeout(function() { - _this.setScroll(scrollState); - }, 0); + + setScroll: function(scroll) { }, - /* Event Elements / Segments + /* Height Freezing ------------------------------------------------------------------------------------------------------------------*/ - // Does everything necessary to display the given events onto the current view - displayEvents: function(events) { - var scrollState = this.queryScroll(); + freezeHeight: function() { + this.calendar.freezeContentHeight(); + }, + + + thawHeight: function() { + this.calendar.thawContentHeight(); + }, + + + // Event Binding/Unbinding + // ----------------------------------------------------------------------------------------------------------------- + + + bindEvents: function() { + var _this = this; + + if (!this.isEventsBound) { + this.isEventsBound = true; + this.rejectOn('eventsUnbind', this.requestEvents()).then(function(events) { // TODO: test rejection + _this.listenTo(_this.calendar, 'eventsReset', _this.setEvents); + _this.setEvents(events); + }); + } + }, + + + unbindEvents: function() { + if (this.isEventsBound) { + this.isEventsBound = false; + this.stopListeningTo(this.calendar, 'eventsReset'); + this.unsetEvents(); + this.trigger('eventsUnbind'); + } + }, + + + // Event Setting/Unsetting + // ----------------------------------------------------------------------------------------------------------------- + - this.clearEvents(); - this.renderEvents(events); - this.isEventsRendered = true; - this.setScroll(scrollState); - this.triggerEventRender(); + setEvents: function(events) { + var isReset = this.isEventSet; + + this.isEventsSet = true; + this.handleEvents(events, isReset); + this.trigger(isReset ? 'eventsReset' : 'eventsSet', events); + }, + + + unsetEvents: function() { + if (this.isEventsSet) { + this.isEventsSet = false; + this.handleEventsUnset(); + this.trigger('eventsUnset'); + } }, - // Does everything necessary to clear the view's currently-rendered events - clearEvents: function() { - var scrollState; + whenEventsSet: function() { + var _this = this; + if (this.isEventsSet) { + return Promise.resolve(this.getCurrentEvents()); + } + else { + return new Promise(function(resolve) { + _this.one('eventsSet', resolve); + }); + } + }, + + + // Event Handling + // ----------------------------------------------------------------------------------------------------------------- + + + handleEvents: function(events, isReset) { + this.requestEventsRender(events); + }, + + + handleEventsUnset: function() { + this.requestEventsUnrender(); + }, + + + // Event Render Queuing + // ----------------------------------------------------------------------------------------------------------------- + + + // assumes any previous event renders have been cleared already + requestEventsRender: function(events) { + var _this = this; + + return this.eventRenderQueue.add(function() { // might not return a promise if debounced!? bad + return _this.executeEventsRender(events); + }); + }, + + + requestEventsUnrender: function() { + var _this = this; + + if (this.isEventsRendered) { + return this.eventRenderQueue.addQuickly(function() { + return _this.executeEventsUnrender(); + }); + } + else { + return Promise.resolve(); + } + }, + + + requestCurrentEventsRender: function() { + if (this.isEventsSet) { + this.requestEventsRender(this.getCurrentEvents()); + } + else { + return Promise.reject(); + } + }, + + + // Event High-level Rendering + // ----------------------------------------------------------------------------------------------------------------- + + + executeEventsRender: function(events) { + var _this = this; + + this.captureScroll(); + this.freezeHeight(); + + return this.executeEventsUnrender().then(function() { + _this.renderEvents(events); + + _this.thawHeight(); + _this.releaseScroll(); + + _this.isEventsRendered = true; + _this.onEventsRender(); + _this.trigger('eventsRender'); + }); + }, + + + executeEventsUnrender: function() { if (this.isEventsRendered) { + this.onBeforeEventsUnrender(); - // TODO: optimize: if we know this is part of a displayEvents call, don't queryScroll/setScroll - scrollState = this.queryScroll(); + this.captureScroll(); + this.freezeHeight(); - this.triggerEventUnrender(); if (this.destroyEvents) { this.destroyEvents(); // TODO: deprecate } + this.unrenderEvents(); - this.setScroll(scrollState); + + this.thawHeight(); + this.releaseScroll(); + this.isEventsRendered = false; + this.trigger('eventsUnrender'); } + + return Promise.resolve(); // always synchronous + }, + + + // Event Rendering Triggers + // ----------------------------------------------------------------------------------------------------------------- + + + // Signals that all events have been rendered + onEventsRender: function() { + this.renderedEventSegEach(function(seg) { + this.publiclyTrigger('eventAfterRender', seg.event, seg.event, seg.el); + }); + this.publiclyTrigger('eventAfterAllRender'); + }, + + + // Signals that all event elements are about to be removed + onBeforeEventsUnrender: function() { + this.renderedEventSegEach(function(seg) { + this.publiclyTrigger('eventDestroy', seg.event, seg.event, seg.el); + }); }, + // Event Low-level Rendering + // ----------------------------------------------------------------------------------------------------------------- + + // Renders the events onto the view. renderEvents: function(events) { // subclasses should implement @@ -8484,27 +9053,28 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { }, - // Signals that all events have been rendered - triggerEventRender: function() { - this.renderedEventSegEach(function(seg) { - this.trigger('eventAfterRender', seg.event, seg.event, seg.el); - }); - this.trigger('eventAfterAllRender'); + // Event Data Access + // ----------------------------------------------------------------------------------------------------------------- + + + requestEvents: function() { + return this.calendar.requestEvents(this.start, this.end); }, - // Signals that all event elements are about to be removed - triggerEventUnrender: function() { - this.renderedEventSegEach(function(seg) { - this.trigger('eventDestroy', seg.event, seg.event, seg.el); - }); + getCurrentEvents: function() { + return this.calendar.getPrunedEventCache(); }, + // Event Rendering Utils + // ----------------------------------------------------------------------------------------------------------------- + + // Given an event and the default element used for rendering, returns the element that should actually be used. // Basically runs events and elements through the eventRender hook. resolveEventEl: function(event, el) { - var custom = this.trigger('eventRender', event, event, el); + var custom = this.publiclyTrigger('eventRender', event, event, el); if (custom === false) { // means don't render at all el = null; @@ -8603,7 +9173,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Triggers event-drop handlers that have subscribed via the API triggerEventDrop: function(event, dateDelta, undoFunc, el, ev) { - this.trigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy + this.publiclyTrigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy }, @@ -8633,10 +9203,10 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { triggerExternalDrop: function(event, dropLocation, el, ev, ui) { // trigger 'drop' regardless of whether element represents an event - this.trigger('drop', el[0], dropLocation.start, ev, ui); + this.publiclyTrigger('drop', el[0], dropLocation.start, ev, ui); if (event) { - this.trigger('eventReceive', null, event); // signal an external event landed + this.publiclyTrigger('eventReceive', null, event); // signal an external event landed } }, @@ -8706,7 +9276,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Triggers event-resize handlers that have subscribed via the API triggerEventResize: function(event, durationDelta, undoFunc, el, ev) { - this.trigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy + this.publiclyTrigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy }, @@ -8738,7 +9308,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Triggers handlers to 'select' triggerSelect: function(span, ev) { - this.trigger( + this.publiclyTrigger( 'select', null, this.calendar.applyTimezone(span.start), // convert to calendar's tz for external API @@ -8757,7 +9327,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { this.destroySelection(); // TODO: deprecate } this.unrenderSelection(); - this.trigger('unselect', null, ev); + this.publiclyTrigger('unselect', null, ev); } }, @@ -8849,7 +9419,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { // Triggers handlers to 'dayClick' // Span has start/end of the clicked area. Only the start is useful. triggerDayClick: function(span, dayEl, ev) { - this.trigger( + this.publiclyTrigger( 'dayClick', dayEl, this.calendar.applyTimezone(span.start), // convert to calendar's timezone for external API @@ -9076,6 +9646,295 @@ var Scroller = FC.Scroller = Class.extend({ }); ;; +function Iterator(items) { + this.items = items || []; +} + + +/* Calls a method on every item passing the arguments through */ +Iterator.prototype.proxyCall = function(methodName) { + var args = Array.prototype.slice.call(arguments, 1); + var results = []; + + this.items.forEach(function(item) { + results.push(item[methodName].apply(item, args)); + }); + + return results; +}; + +;; + +/* Toolbar with buttons and title +----------------------------------------------------------------------------------------------------------------------*/ + +function Toolbar(calendar, toolbarOptions) { + var t = this; + + // exports + t.setToolbarOptions = setToolbarOptions; + t.render = render; + t.removeElement = removeElement; + t.updateTitle = updateTitle; + t.activateButton = activateButton; + t.deactivateButton = deactivateButton; + t.disableButton = disableButton; + t.enableButton = enableButton; + t.getViewsWithButtons = getViewsWithButtons; + t.el = null; // mirrors local `el` + + // locals + var el; + var viewsWithButtons = []; + var tm; + + // method to update toolbar-specific options, not calendar-wide options + function setToolbarOptions(newToolbarOptions) { + toolbarOptions = newToolbarOptions; + } + + // can be called repeatedly and will rerender + function render() { + var sections = toolbarOptions.layout; + + tm = calendar.options.theme ? 'ui' : 'fc'; + + if (sections) { + if (!el) { + el = this.el = $("<div class='fc-toolbar "+ toolbarOptions.extraClasses + "'/>"); + } + else { + el.empty(); + } + el.append(renderSection('left')) + .append(renderSection('right')) + .append(renderSection('center')) + .append('<div class="fc-clear"/>'); + } + else { + removeElement(); + } + } + + + function removeElement() { + if (el) { + el.remove(); + el = t.el = null; + } + } + + + function renderSection(position) { + var sectionEl = $('<div class="fc-' + position + '"/>'); + var buttonStr = toolbarOptions.layout[position]; + + if (buttonStr) { + $.each(buttonStr.split(' '), function(i) { + var groupChildren = $(); + var isOnlyButtons = true; + var groupEl; + + $.each(this.split(','), function(j, buttonName) { + var customButtonProps; + var viewSpec; + var buttonClick; + var overrideText; // text explicitly set by calendar's constructor options. overcomes icons + var defaultText; + var themeIcon; + var normalIcon; + var innerHtml; + var classes; + var button; // the element + + if (buttonName == 'title') { + groupChildren = groupChildren.add($('<h2> </h2>')); // we always want it to take up height + isOnlyButtons = false; + } + else { + if ((customButtonProps = (calendar.options.customButtons || {})[buttonName])) { + buttonClick = function(ev) { + if (customButtonProps.click) { + customButtonProps.click.call(button[0], ev); + } + }; + overrideText = ''; // icons will override text + defaultText = customButtonProps.text; + } + else if ((viewSpec = calendar.getViewSpec(buttonName))) { + buttonClick = function() { + calendar.changeView(buttonName); + }; + viewsWithButtons.push(buttonName); + overrideText = viewSpec.buttonTextOverride; + defaultText = viewSpec.buttonTextDefault; + } + else if (calendar[buttonName]) { // a calendar method + buttonClick = function() { + calendar[buttonName](); + }; + overrideText = (calendar.overrides.buttonText || {})[buttonName]; + defaultText = calendar.options.buttonText[buttonName]; // everything else is considered default + } + + if (buttonClick) { + + themeIcon = + customButtonProps ? + customButtonProps.themeIcon : + calendar.options.themeButtonIcons[buttonName]; + + normalIcon = + customButtonProps ? + customButtonProps.icon : + calendar.options.buttonIcons[buttonName]; + + if (overrideText) { + innerHtml = htmlEscape(overrideText); + } + else if (themeIcon && calendar.options.theme) { + innerHtml = "<span class='ui-icon ui-icon-" + themeIcon + "'></span>"; + } + else if (normalIcon && !calendar.options.theme) { + innerHtml = "<span class='fc-icon fc-icon-" + normalIcon + "'></span>"; + } + else { + innerHtml = htmlEscape(defaultText); + } + + classes = [ + 'fc-' + buttonName + '-button', + tm + '-button', + tm + '-state-default' + ]; + + button = $( // type="button" so that it doesn't submit a form + '<button type="button" class="' + classes.join(' ') + '">' + + innerHtml + + '</button>' + ) + .click(function(ev) { + // don't process clicks for disabled buttons + if (!button.hasClass(tm + '-state-disabled')) { + + buttonClick(ev); + + // after the click action, if the button becomes the "active" tab, or disabled, + // it should never have a hover class, so remove it now. + if ( + button.hasClass(tm + '-state-active') || + button.hasClass(tm + '-state-disabled') + ) { + button.removeClass(tm + '-state-hover'); + } + } + }) + .mousedown(function() { + // the *down* effect (mouse pressed in). + // only on buttons that are not the "active" tab, or disabled + button + .not('.' + tm + '-state-active') + .not('.' + tm + '-state-disabled') + .addClass(tm + '-state-down'); + }) + .mouseup(function() { + // undo the *down* effect + button.removeClass(tm + '-state-down'); + }) + .hover( + function() { + // the *hover* effect. + // only on buttons that are not the "active" tab, or disabled + button + .not('.' + tm + '-state-active') + .not('.' + tm + '-state-disabled') + .addClass(tm + '-state-hover'); + }, + function() { + // undo the *hover* effect + button + .removeClass(tm + '-state-hover') + .removeClass(tm + '-state-down'); // if mouseleave happens before mouseup + } + ); + + groupChildren = groupChildren.add(button); + } + } + }); + + if (isOnlyButtons) { + groupChildren + .first().addClass(tm + '-corner-left').end() + .last().addClass(tm + '-corner-right').end(); + } + + if (groupChildren.length > 1) { + groupEl = $('<div/>'); + if (isOnlyButtons) { + groupEl.addClass('fc-button-group'); + } + groupEl.append(groupChildren); + sectionEl.append(groupEl); + } + else { + sectionEl.append(groupChildren); // 1 or 0 children + } + }); + } + + return sectionEl; + } + + + function updateTitle(text) { + if (el) { + el.find('h2').text(text); + } + } + + + function activateButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .addClass(tm + '-state-active'); + } + } + + + function deactivateButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .removeClass(tm + '-state-active'); + } + } + + + function disableButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .prop('disabled', true) + .addClass(tm + '-state-disabled'); + } + } + + + function enableButton(buttonName) { + if (el) { + el.find('.fc-' + buttonName + '-button') + .prop('disabled', false) + .removeClass(tm + '-state-disabled'); + } + } + + + function getViewsWithButtons() { + return viewsWithButtons; + } + +} + +;; var Calendar = FC.Calendar = Class.extend({ @@ -9087,6 +9946,7 @@ var Calendar = FC.Calendar = Class.extend({ viewSpecCache: null, // cache of view definitions view: null, // current View object header: null, + footer: null, loadingLevel: 0, // number of simultaneous loading tasks @@ -9155,7 +10015,7 @@ var Calendar = FC.Calendar = Class.extend({ if ($.inArray(unit, intervalUnits) != -1) { // put views that have buttons first. there will be duplicates, but oh well - viewTypes = this.header.getViewsWithButtons(); + viewTypes = this.header.getViewsWithButtons(); // TODO: include footer as well? $.each(FC.views, function(viewType) { // all views viewTypes.push(viewType); }); @@ -9302,7 +10162,7 @@ var Calendar = FC.Calendar = Class.extend({ // Should be called when any type of async data fetching begins pushLoading: function() { if (!(this.loadingLevel++)) { - this.trigger('loading', null, true, this.view); + this.publiclyTrigger('loading', null, true, this.view); } }, @@ -9310,7 +10170,7 @@ var Calendar = FC.Calendar = Class.extend({ // Should be called when any type of async data fetching completes popLoading: function() { if (!(--this.loadingLevel)) { - this.trigger('loading', null, false, this.view); + this.publiclyTrigger('loading', null, false, this.view); } }, @@ -9348,11 +10208,7 @@ function Calendar_constructor(element, overrides) { t.render = render; t.destroy = destroy; - t.refetchEvents = refetchEvents; - t.refetchEventSources = refetchEventSources; - t.reportEvents = reportEvents; - t.reportEventChange = reportEventChange; - t.rerenderEvents = renderEvents; // `renderEvents` serves as a rerender. an API method + t.rerenderEvents = rerenderEvents; t.changeView = renderView; // `renderView` will switch to another view t.select = select; t.unselect = unselect; @@ -9368,7 +10224,7 @@ function Calendar_constructor(element, overrides) { t.getCalendar = getCalendar; t.getView = getView; t.option = option; // getter/setter method - t.trigger = trigger; + t.publiclyTrigger = publiclyTrigger; // Options @@ -9561,15 +10417,12 @@ function Calendar_constructor(element, overrides) { }; - + // Imports // ----------------------------------------------------------------------------------- EventManager.call(t); - var isFetchNeeded = t.isFetchNeeded; - var fetchEvents = t.fetchEvents; - var fetchEventSources = t.fetchEventSources; @@ -9578,7 +10431,9 @@ function Calendar_constructor(element, overrides) { var _element = element[0]; + var toolbarsManager; var header; + var footer; var content; var tm; // for making theme classes var currentView; // NOTE: keep this in sync with this.view @@ -9586,11 +10441,10 @@ function Calendar_constructor(element, overrides) { var suggestedViewHeight; var windowResizeProxy; // wraps the windowResize function var ignoreWindowResize = 0; - var events = []; var date; // unzoned - - - + + + // Main Rendering // ----------------------------------------------------------------------------------- @@ -9602,8 +10456,8 @@ function Calendar_constructor(element, overrides) { else { date = t.getNow(); // getNow already returns unzoned } - - + + function render() { if (!content) { initialRender(); @@ -9614,8 +10468,8 @@ function Calendar_constructor(element, overrides) { renderView(); } } - - + + function initialRender() { element.addClass('fc'); @@ -9656,9 +10510,14 @@ function Calendar_constructor(element, overrides) { content = $("<div class='fc-view-container'/>").prependTo(element); - header = t.header = new Header(t); - renderHeader(); + var toolbars = buildToolbars(); + toolbarsManager = new Iterator(toolbars); + + header = t.header = toolbars[0]; + footer = t.footer = toolbars[1]; + renderHeader(); + renderFooter(); renderView(t.options.defaultView); if (t.options.handleWindowResize) { @@ -9668,15 +10527,6 @@ function Calendar_constructor(element, overrides) { } - // can be called repeatedly and Header will rerender - function renderHeader() { - header.render(); - if (header.el) { - element.prepend(header.el); - } - } - - function destroy() { if (currentView) { @@ -9686,7 +10536,7 @@ function Calendar_constructor(element, overrides) { // It is still the "current" view, just not rendered. } - header.removeElement(); + toolbarsManager.proxyCall('removeElement'); content.remove(); element.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget'); @@ -9696,13 +10546,13 @@ function Calendar_constructor(element, overrides) { $(window).unbind('resize', windowResizeProxy); } } - - + + function elementVisible() { return element.is(':visible'); } - - + + // View Rendering // ----------------------------------------------------------------------------------- @@ -9711,11 +10561,13 @@ function Calendar_constructor(element, overrides) { // Renders a view because of a date change, view-type change, or for the first time. // If not given a viewType, keep the current view but render different dates. // Accepts an optional scroll state to restore to. - function renderView(viewType, explicitScrollState) { + function renderView(viewType, forcedScroll) { ignoreWindowResize++; + var needsClearView = currentView && viewType && currentView.type !== viewType; + // if viewType is changing, remove the old view's rendering - if (currentView && viewType && currentView.type !== viewType) { + if (needsClearView) { freezeContentHeight(); // prevent a scroll jump when view element is removed clearView(); } @@ -9729,7 +10581,7 @@ function Calendar_constructor(element, overrides) { currentView.setElement( $("<div class='fc-view fc-" + viewType + "-view' />").appendTo(content) ); - header.activateButton(viewType); + toolbarsManager.proxyCall('activateButton', viewType); } if (currentView) { @@ -9739,7 +10591,7 @@ function Calendar_constructor(element, overrides) { // render or rerender the view if ( - !currentView.displaying || + !currentView.isDateSet || !( // NOT within interval range signals an implicit date window change date >= currentView.intervalStart && date < currentView.intervalEnd @@ -9747,19 +10599,27 @@ function Calendar_constructor(element, overrides) { ) { if (elementVisible()) { - currentView.display(date, explicitScrollState); // will call freezeContentHeight - unfreezeContentHeight(); // immediately unfreeze regardless of whether display is async + if (forcedScroll) { + currentView.captureInitialScroll(forcedScroll); + } - // need to do this after View::render, so dates are calculated - updateHeaderTitle(); - updateTodayButton(); + currentView.setDate(date, forcedScroll); + + if (forcedScroll) { + currentView.releaseScroll(); + } - getAndRenderEvents(); + // need to do this after View::render, so dates are calculated + // NOTE: view updates title text proactively + updateToolbarsTodayButton(); } } } - unfreezeContentHeight(); // undo any lone freezeContentHeight calls + if (needsClearView) { + thawContentHeight(); + } + ignoreWindowResize--; } @@ -9767,7 +10627,7 @@ function Calendar_constructor(element, overrides) { // Unrenders the current view and reflects this change in the Header. // Unregsiters the `currentView`, but does not remove from viewByType hash. function clearView() { - header.deactivateButton(currentView.type); + toolbarsManager.proxyCall('deactivateButton', currentView.type); currentView.removeElement(); currentView = t.view = null; } @@ -9783,13 +10643,14 @@ function Calendar_constructor(element, overrides) { var viewType = currentView.type; var scrollState = currentView.queryScroll(); clearView(); + calcSize(); renderView(viewType, scrollState); - unfreezeContentHeight(); + thawContentHeight(); ignoreWindowResize--; } - + // Resizing // ----------------------------------------------------------------------------------- @@ -9806,8 +10667,8 @@ function Calendar_constructor(element, overrides) { t.isHeightAuto = function() { return t.options.contentHeight === 'auto' || t.options.height === 'auto'; }; - - + + function updateSize(shouldRecalc) { if (elementVisible()) { @@ -9829,8 +10690,8 @@ function Calendar_constructor(element, overrides) { _calcSize(); } } - - + + function _calcSize() { // assumes elementVisible var contentHeightInput = t.options.contentHeight; var heightInput = t.options.height; @@ -9842,13 +10703,13 @@ function Calendar_constructor(element, overrides) { suggestedViewHeight = contentHeightInput(); } else if (typeof heightInput === 'number') { // exists and not 'auto' - suggestedViewHeight = heightInput - queryHeaderHeight(); + suggestedViewHeight = heightInput - queryToolbarsHeight(); } else if (typeof heightInput === 'function') { // exists and is a function - suggestedViewHeight = heightInput() - queryHeaderHeight(); + suggestedViewHeight = heightInput() - queryToolbarsHeight(); } else if (heightInput === 'parent') { // set to height of parent element - suggestedViewHeight = element.parent().height() - queryHeaderHeight(); + suggestedViewHeight = element.parent().height() - queryToolbarsHeight(); } else { suggestedViewHeight = Math.round(content.width() / Math.max(t.options.aspectRatio, .5)); @@ -9856,11 +10717,14 @@ function Calendar_constructor(element, overrides) { } - function queryHeaderHeight() { - return header.el ? header.el.outerHeight(true) : 0; // includes margin + function queryToolbarsHeight() { + return toolbarsManager.items.reduce(function(accumulator, toolbar) { + var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin + return accumulator + toolbarHeight; + }, 0); } - - + + function windowResize(ev) { if ( !ignoreWindowResize && @@ -9868,94 +10732,93 @@ function Calendar_constructor(element, overrides) { currentView.start // view has already been rendered ) { if (updateSize(true)) { - currentView.trigger('windowResize', _element); + currentView.publiclyTrigger('windowResize', _element); } } } - - - - /* Event Fetching/Rendering - -----------------------------------------------------------------------------*/ - // TODO: going forward, most of this stuff should be directly handled by the view - function refetchEvents() { // can be called as an API method - fetchAndRenderEvents(); - } - - // TODO: move this into EventManager? - function refetchEventSources(matchInputs) { - fetchEventSources(t.getEventSourcesByMatchArray(matchInputs)); - } + /* Event Rendering + -----------------------------------------------------------------------------*/ - function renderEvents() { // destroys old events if previously rendered + function rerenderEvents() { // API method. destroys old events if previously rendered. if (elementVisible()) { - freezeContentHeight(); - currentView.displayEvents(events); - unfreezeContentHeight(); + t.reportEventChange(); // will re-trasmit events to the view, causing a rerender } } - - function getAndRenderEvents() { - if (!t.options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) { - fetchAndRenderEvents(); - } - else { - renderEvents(); - } - } - function fetchAndRenderEvents() { - fetchEvents(currentView.start, currentView.end); - // ... will call reportEvents - // ... which will call renderEvents - } + /* Toolbars + -----------------------------------------------------------------------------*/ - - // called when event data arrives - function reportEvents(_events) { - events = _events; - renderEvents(); + + function buildToolbars() { + return [ + new Toolbar(t, computeHeaderOptions()), + new Toolbar(t, computeFooterOptions()) + ]; } - // called when a single event's data has been changed - function reportEventChange() { - renderEvents(); + function computeHeaderOptions() { + return { + extraClasses: 'fc-header-toolbar', + layout: t.options.header + }; } + function computeFooterOptions() { + return { + extraClasses: 'fc-footer-toolbar', + layout: t.options.footer + }; + } - /* Header Updating - -----------------------------------------------------------------------------*/ + + // can be called repeatedly and Header will rerender + function renderHeader() { + header.setToolbarOptions(computeHeaderOptions()); + header.render(); + if (header.el) { + element.prepend(header.el); + } + } - function updateHeaderTitle() { - header.updateTitle(currentView.title); + // can be called repeatedly and Footer will rerender + function renderFooter() { + footer.setToolbarOptions(computeFooterOptions()); + footer.render(); + if (footer.el) { + element.append(footer.el); + } } - function updateTodayButton() { - var now = t.getNow(); + t.setToolbarsTitle = function(title) { + toolbarsManager.proxyCall('updateTitle', title); + }; + + function updateToolbarsTodayButton() { + var now = t.getNow(); if (now >= currentView.intervalStart && now < currentView.intervalEnd) { - header.disableButton('today'); + toolbarsManager.proxyCall('disableButton', 'today'); } else { - header.enableButton('today'); + toolbarsManager.proxyCall('enableButton', 'today'); } } - + /* Selection -----------------------------------------------------------------------------*/ - + // this public method receives start/end dates in any format, with any timezone function select(zonedStartInput, zonedEndInput) { @@ -9963,56 +10826,56 @@ function Calendar_constructor(element, overrides) { t.buildSelectSpan.apply(t, arguments) ); } - + function unselect() { // safe to be called before renderView if (currentView) { currentView.unselect(); } } - - - + + + /* Date -----------------------------------------------------------------------------*/ - - + + function prev() { date = currentView.computePrevDate(date); renderView(); } - - + + function next() { date = currentView.computeNextDate(date); renderView(); } - - + + function prevYear() { date.add(-1, 'years'); renderView(); } - - + + function nextYear() { date.add(1, 'years'); renderView(); } - - + + function today() { date = t.getNow(); renderView(); } - - + + function gotoDate(zonedDateInput) { date = t.moment(zonedDateInput).stripZone(); renderView(); } - - + + function incrementDate(delta) { date.add(moment.duration(delta)); renderView(); @@ -10030,8 +10893,8 @@ function Calendar_constructor(element, overrides) { date = newDate.clone(); renderView(spec ? spec.type : null); } - - + + // for external API function getDate() { return t.applyTimezone(date); // infuse the calendar's timezone @@ -10041,45 +10904,51 @@ function Calendar_constructor(element, overrides) { /* Height "Freezing" -----------------------------------------------------------------------------*/ - // TODO: move this into the view + t.freezeContentHeight = freezeContentHeight; - t.unfreezeContentHeight = unfreezeContentHeight; + t.thawContentHeight = thawContentHeight; + + var freezeContentHeightDepth = 0; function freezeContentHeight() { - content.css({ - width: '100%', - height: content.height(), - overflow: 'hidden' - }); + if (!(freezeContentHeightDepth++)) { + content.css({ + width: '100%', + height: content.height(), + overflow: 'hidden' + }); + } } - function unfreezeContentHeight() { - content.css({ - width: '', - height: '', - overflow: '' - }); + function thawContentHeight() { + if (!(--freezeContentHeightDepth)) { + content.css({ + width: '', + height: '', + overflow: '' + }); + } } - - - + + + /* Misc -----------------------------------------------------------------------------*/ - + function getCalendar() { return t; } - + function getView() { return currentView; } - - + + function option(name, value) { var newOptionHash; @@ -10135,19 +11004,20 @@ function Calendar_constructor(element, overrides) { } else if (optionName === 'timezone') { t.rezoneArrayEventSources(); - refetchEvents(); + t.refetchEvents(); return; } } - // catch-all. rerender the header and rebuild/rerender the current view + // catch-all. rerender the header and footer and rebuild/rerender the current view renderHeader(); + renderFooter(); viewsByType = {}; // even non-current views will be affected by this option change. do before rerender reinitView(); } - - - function trigger(name, thisObj) { // overrides the Emitter's trigger method :( + + + function publiclyTrigger(name, thisObj) { var args = Array.prototype.slice.call(arguments, 2); thisObj = thisObj || _element; @@ -10310,6 +11180,7 @@ Calendar.defaults = { dropAccept: '*', eventOrder: 'title', + //eventRenderWait: null, eventLimit: false, eventLimitText: 'more', @@ -10549,275 +11420,6 @@ FC.locale('en', Calendar.englishDefaults); ;; -/* Top toolbar area with buttons and title -----------------------------------------------------------------------------------------------------------------------*/ -// TODO: rename all header-related things to "toolbar" - -function Header(calendar) { - var t = this; - - // exports - t.render = render; - t.removeElement = removeElement; - t.updateTitle = updateTitle; - t.activateButton = activateButton; - t.deactivateButton = deactivateButton; - t.disableButton = disableButton; - t.enableButton = enableButton; - t.getViewsWithButtons = getViewsWithButtons; - t.el = null; // mirrors local `el` - - // locals - var el; - var viewsWithButtons = []; - var tm; - - - // can be called repeatedly and will rerender - function render() { - var options = calendar.options; - var sections = options.header; - - tm = options.theme ? 'ui' : 'fc'; - - if (sections) { - if (!el) { - el = this.el = $("<div class='fc-toolbar'/>"); - } - else { - el.empty(); - } - el.append(renderSection('left')) - .append(renderSection('right')) - .append(renderSection('center')) - .append('<div class="fc-clear"/>'); - } - else { - removeElement(); - } - } - - - function removeElement() { - if (el) { - el.remove(); - el = t.el = null; - } - } - - - function renderSection(position) { - var sectionEl = $('<div class="fc-' + position + '"/>'); - var options = calendar.options; - var buttonStr = options.header[position]; - - if (buttonStr) { - $.each(buttonStr.split(' '), function(i) { - var groupChildren = $(); - var isOnlyButtons = true; - var groupEl; - - $.each(this.split(','), function(j, buttonName) { - var customButtonProps; - var viewSpec; - var buttonClick; - var overrideText; // text explicitly set by calendar's constructor options. overcomes icons - var defaultText; - var themeIcon; - var normalIcon; - var innerHtml; - var classes; - var button; // the element - - if (buttonName == 'title') { - groupChildren = groupChildren.add($('<h2> </h2>')); // we always want it to take up height - isOnlyButtons = false; - } - else { - if ((customButtonProps = (options.customButtons || {})[buttonName])) { - buttonClick = function(ev) { - if (customButtonProps.click) { - customButtonProps.click.call(button[0], ev); - } - }; - overrideText = ''; // icons will override text - defaultText = customButtonProps.text; - } - else if ((viewSpec = calendar.getViewSpec(buttonName))) { - buttonClick = function() { - calendar.changeView(buttonName); - }; - viewsWithButtons.push(buttonName); - overrideText = viewSpec.buttonTextOverride; - defaultText = viewSpec.buttonTextDefault; - } - else if (calendar[buttonName]) { // a calendar method - buttonClick = function() { - calendar[buttonName](); - }; - overrideText = (calendar.overrides.buttonText || {})[buttonName]; - defaultText = options.buttonText[buttonName]; // everything else is considered default - } - - if (buttonClick) { - - themeIcon = - customButtonProps ? - customButtonProps.themeIcon : - options.themeButtonIcons[buttonName]; - - normalIcon = - customButtonProps ? - customButtonProps.icon : - options.buttonIcons[buttonName]; - - if (overrideText) { - innerHtml = htmlEscape(overrideText); - } - else if (themeIcon && options.theme) { - innerHtml = "<span class='ui-icon ui-icon-" + themeIcon + "'></span>"; - } - else if (normalIcon && !options.theme) { - innerHtml = "<span class='fc-icon fc-icon-" + normalIcon + "'></span>"; - } - else { - innerHtml = htmlEscape(defaultText); - } - - classes = [ - 'fc-' + buttonName + '-button', - tm + '-button', - tm + '-state-default' - ]; - - button = $( // type="button" so that it doesn't submit a form - '<button type="button" class="' + classes.join(' ') + '">' + - innerHtml + - '</button>' - ) - .click(function(ev) { - // don't process clicks for disabled buttons - if (!button.hasClass(tm + '-state-disabled')) { - - buttonClick(ev); - - // after the click action, if the button becomes the "active" tab, or disabled, - // it should never have a hover class, so remove it now. - if ( - button.hasClass(tm + '-state-active') || - button.hasClass(tm + '-state-disabled') - ) { - button.removeClass(tm + '-state-hover'); - } - } - }) - .mousedown(function() { - // the *down* effect (mouse pressed in). - // only on buttons that are not the "active" tab, or disabled - button - .not('.' + tm + '-state-active') - .not('.' + tm + '-state-disabled') - .addClass(tm + '-state-down'); - }) - .mouseup(function() { - // undo the *down* effect - button.removeClass(tm + '-state-down'); - }) - .hover( - function() { - // the *hover* effect. - // only on buttons that are not the "active" tab, or disabled - button - .not('.' + tm + '-state-active') - .not('.' + tm + '-state-disabled') - .addClass(tm + '-state-hover'); - }, - function() { - // undo the *hover* effect - button - .removeClass(tm + '-state-hover') - .removeClass(tm + '-state-down'); // if mouseleave happens before mouseup - } - ); - - groupChildren = groupChildren.add(button); - } - } - }); - - if (isOnlyButtons) { - groupChildren - .first().addClass(tm + '-corner-left').end() - .last().addClass(tm + '-corner-right').end(); - } - - if (groupChildren.length > 1) { - groupEl = $('<div/>'); - if (isOnlyButtons) { - groupEl.addClass('fc-button-group'); - } - groupEl.append(groupChildren); - sectionEl.append(groupEl); - } - else { - sectionEl.append(groupChildren); // 1 or 0 children - } - }); - } - - return sectionEl; - } - - - function updateTitle(text) { - if (el) { - el.find('h2').text(text); - } - } - - - function activateButton(buttonName) { - if (el) { - el.find('.fc-' + buttonName + '-button') - .addClass(tm + '-state-active'); - } - } - - - function deactivateButton(buttonName) { - if (el) { - el.find('.fc-' + buttonName + '-button') - .removeClass(tm + '-state-active'); - } - } - - - function disableButton(buttonName) { - if (el) { - el.find('.fc-' + buttonName + '-button') - .prop('disabled', true) - .addClass(tm + '-state-disabled'); - } - } - - - function enableButton(buttonName) { - if (el) { - el.find('.fc-' + buttonName + '-button') - .prop('disabled', false) - .removeClass(tm + '-state-disabled'); - } - } - - - function getViewsWithButtons() { - return viewsWithButtons; - } - -} - -;; - FC.sourceNormalizers = []; FC.sourceFetchers = []; @@ -10831,38 +11433,39 @@ var eventGUID = 1; function EventManager() { // assumed to be a calendar var t = this; - - + + // exports + t.requestEvents = requestEvents; + t.reportEventChange = reportEventChange; t.isFetchNeeded = isFetchNeeded; t.fetchEvents = fetchEvents; t.fetchEventSources = fetchEventSources; + t.refetchEvents = refetchEvents; + t.refetchEventSources = refetchEventSources; t.getEventSources = getEventSources; t.getEventSourceById = getEventSourceById; - t.getEventSourcesByMatchArray = getEventSourcesByMatchArray; - t.getEventSourcesByMatch = getEventSourcesByMatch; t.addEventSource = addEventSource; t.removeEventSource = removeEventSource; t.removeEventSources = removeEventSources; t.updateEvent = updateEvent; + t.updateEvents = updateEvents; t.renderEvent = renderEvent; + t.renderEvents = renderEvents; t.removeEvents = removeEvents; t.clientEvents = clientEvents; t.mutateEvent = mutateEvent; t.normalizeEventDates = normalizeEventDates; t.normalizeEventTimes = normalizeEventTimes; - - - // imports - var reportEvents = t.reportEvents; - - + + // locals var stickySource = { events: [] }; var sources = [ stickySource ]; var rangeStart, rangeEnd; var pendingSourceCnt = 0; // outstanding fetch requests, max one per source var cache = []; // holds events that have already been expanded + var prunedCache; // like cache, but only events that intersect with rangeStart/rangeEnd $.each( @@ -10874,9 +11477,55 @@ function EventManager() { // assumed to be a calendar } } ); - - - + + + + function requestEvents(start, end) { + if (!t.options.lazyFetching || isFetchNeeded(start, end)) { + return fetchEvents(start, end); + } + else { + return Promise.resolve(prunedCache); + } + } + + + function reportEventChange() { + prunedCache = filterEventsWithinRange(cache); + t.trigger('eventsReset', prunedCache); + } + + + function filterEventsWithinRange(events) { + var filteredEvents = []; + var i, event; + + for (i = 0; i < events.length; i++) { + event = events[i]; + + if ( + event.start.clone().stripZone() < rangeEnd && + t.getEventEnd(event).stripZone() > rangeStart + ) { + filteredEvents.push(event); + } + } + + return filteredEvents; + } + + + t.getEventCache = function() { + return cache; + }; + + + t.getPrunedEventCache = function() { + return prunedCache; + }; + + + /* Fetching -----------------------------------------------------------------------------*/ @@ -10886,12 +11535,24 @@ function EventManager() { // assumed to be a calendar return !rangeStart || // nothing has been fetched yet? start < rangeStart || end > rangeEnd; // is part of the new range outside of the old range? } - - + + function fetchEvents(start, end) { rangeStart = start; rangeEnd = end; - fetchEventSources(sources, 'reset'); + return refetchEvents(); + } + + + // poorly named. fetches all sources with current `rangeStart` and `rangeEnd`. + function refetchEvents() { + return fetchEventSources(sources, 'reset'); + } + + + // poorly named. fetches a subset of event sources. + function refetchEventSources(matchInputs) { + return fetchEventSources(getEventSourcesByMatchArray(matchInputs)); } @@ -10921,9 +11582,17 @@ function EventManager() { // assumed to be a calendar for (i = 0; i < specificSources.length; i++) { source = specificSources[i]; - tryFetchEventSource(source, source._fetchId); } + + if (pendingSourceCnt) { + return new Promise(function(resolve) { + t.one('eventsReceived', resolve); // will send prunedCache + }); + } + else { // executed all synchronously, or no sources at all + return Promise.resolve(prunedCache); + } } @@ -10956,7 +11625,7 @@ function EventManager() { // assumed to be a calendar } if (abstractEvent) { // not false (an invalid event) - cache.push.apply( + cache.push.apply( // append cache, expandEvent(abstractEvent) // add individual expanded events to the cache ); @@ -10984,11 +11653,12 @@ function EventManager() { // assumed to be a calendar function decrementPendingSourceCnt() { pendingSourceCnt--; if (!pendingSourceCnt) { - reportEvents(cache); + reportEventChange(cache); // updates prunedCache + t.trigger('eventsReceived', prunedCache); } } - - + + function _fetchEventSource(source, callback) { var i; var fetchers = FC.sourceFetchers; @@ -11097,9 +11767,9 @@ function EventManager() { // assumed to be a calendar } } } - - - + + + /* Sources -----------------------------------------------------------------------------*/ @@ -11108,7 +11778,7 @@ function EventManager() { // assumed to be a calendar var source = buildEventSource(sourceInput); if (source) { sources.push(source); - fetchEventSources([ source ], 'add'); // will eventually call reportEvents + fetchEventSources([ source ], 'add'); // will eventually call reportEventChange } } @@ -11204,7 +11874,7 @@ function EventManager() { // assumed to be a calendar cache = excludeEventsBySources(cache, targetSources); } - reportEvents(cache); + reportEventChange(); } @@ -11298,27 +11968,39 @@ function EventManager() { // assumed to be a calendar return true; // keep }); } - - - + + + /* Manipulation -----------------------------------------------------------------------------*/ // Only ever called from the externally-facing API function updateEvent(event) { + updateEvents([ event ]); + } - // massage start/end values, even if date string values - event.start = t.moment(event.start); - if (event.end) { - event.end = t.moment(event.end); - } - else { - event.end = null; + + // Only ever called from the externally-facing API + function updateEvents(events) { + var i, event; + + for (i = 0; i < events.length; i++) { + event = events[i]; + + // massage start/end values, even if date string values + event.start = t.moment(event.start); + if (event.end) { + event.end = t.moment(event.end); + } + else { + event.end = null; + } + + mutateEvent(event, getMiscEventProps(event)); // will handle start/end/allDay normalization } - mutateEvent(event, getMiscEventProps(event)); // will handle start/end/allDay normalization - reportEvents(cache); // reports event modifications (so we can redraw) + reportEventChange(); // reports event modifications (so we can redraw) } @@ -11342,37 +12024,50 @@ function EventManager() { // assumed to be a calendar return !/^_|^(id|allDay|start|end)$/.test(name); } - + // returns the expanded events that were created function renderEvent(eventInput, stick) { - var abstractEvent = buildEventFromInput(eventInput); - var events; - var i, event; + return renderEvents([ eventInput ], stick); + } - if (abstractEvent) { // not false (a valid input) - events = expandEvent(abstractEvent); - for (i = 0; i < events.length; i++) { - event = events[i]; + // returns the expanded events that were created + function renderEvents(eventInputs, stick) { + var renderedEvents = []; + var renderableEvents; + var abstractEvent; + var i, j, event; + + for (i = 0; i < eventInputs.length; i++) { + abstractEvent = buildEventFromInput(eventInputs[i]); + + if (abstractEvent) { // not false (a valid input) + renderableEvents = expandEvent(abstractEvent); - if (!event.source) { - if (stick) { - stickySource.events.push(event); - event.source = stickySource; + for (j = 0; j < renderableEvents.length; j++) { + event = renderableEvents[j]; + + if (!event.source) { + if (stick) { + stickySource.events.push(event); + event.source = stickySource; + } + cache.push(event); } - cache.push(event); } - } - reportEvents(cache); + renderedEvents = renderedEvents.concat(renderableEvents); + } + } - return events; + if (renderedEvents.length) { // any new events rendered? + reportEventChange(); } - return []; + return renderedEvents; } - - + + function removeEvents(filter) { var eventID; var i; @@ -11399,10 +12094,10 @@ function EventManager() { // assumed to be a calendar } } - reportEvents(cache); + reportEventChange(); } - + function clientEvents(filter) { if ($.isFunction(filter)) { return $.grep(cache, filter); @@ -11442,8 +12137,8 @@ function EventManager() { // assumed to be a calendar } backupEventDates(event); } - - + + /* Event Normalization -----------------------------------------------------------------------------*/ @@ -11853,11 +12548,6 @@ function EventManager() { // assumed to be a calendar }; } - - t.getEventCache = function() { - return cache; - }; - } @@ -12386,13 +13076,18 @@ var BasicView = FC.BasicView = View.extend({ ------------------------------------------------------------------------------------------------------------------*/ + computeInitialScroll: function() { + return { top: 0 }; + }, + + queryScroll: function() { - return this.scroller.getScrollTop(); + return { top: this.scroller.getScrollTop() }; }, - setScroll: function(top) { - this.scroller.setScrollTop(top); + setScroll: function(scroll) { + this.scroller.setScrollTop(scroll.top); }, @@ -12909,17 +13604,17 @@ var AgendaView = FC.AgendaView = View.extend({ top++; // to overcome top border that slots beyond the first have. looks better } - return top; + return { top: top }; }, queryScroll: function() { - return this.scroller.getScrollTop(); + return { top: this.scroller.getScrollTop() }; }, - setScroll: function(top) { - this.scroller.setScrollTop(top); + setScroll: function(scroll) { + this.scroller.setScrollTop(scroll.top); }, diff --git a/library/fullcalendar/fullcalendar.min.css b/library/fullcalendar/fullcalendar.min.css index 87ee16e69..1339120b4 100644 --- a/library/fullcalendar/fullcalendar.min.css +++ b/library/fullcalendar/fullcalendar.min.css @@ -1,5 +1,5 @@ /*! - * FullCalendar v3.0.1 Stylesheet + * FullCalendar v3.1.0 Stylesheet * Docs & License: http://fullcalendar.io/ * (c) 2016 Adam Shaw - */.fc-icon,body .fc{font-size:1em}.fc-button-group,.fc-icon{display:inline-block}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-icon,.fc-unselectable{-khtml-user-select:none;-webkit-touch-callout:none}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view td.fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-icon{height:1em;line-height:1em;overflow:hidden;font-family:"Courier New",Courier,monospace;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a[data-goto]{cursor:pointer}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;font-weight:400}.fc-event,.fc-event-dot{background-color:#3a87ad}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fc-toolbar{margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:2px}.fc-basic-view th.fc-day-number,.fc-basic-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-basic-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-basic-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-basic-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-basic-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-basic-view td.fc-week-number>*{display:inline-block;min-width:1.25em}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item:hover td{background-color:#f5f5f5}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}
\ No newline at end of file + */.fc-icon,body .fc{font-size:1em}.fc-button-group,.fc-icon{display:inline-block}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-icon,.fc-unselectable{-khtml-user-select:none;-webkit-touch-callout:none}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view td.fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-icon{height:1em;line-height:1em;overflow:hidden;font-family:"Courier New",Courier,monospace;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a[data-goto]{cursor:pointer}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;font-weight:400}.fc-event,.fc-event-dot{background-color:#3a87ad}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fc-toolbar.fc-header-toolbar{margin-bottom:1em}.fc-toolbar.fc-footer-toolbar{margin-top:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:2px}.fc-basic-view th.fc-day-number,.fc-basic-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-basic-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-basic-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-basic-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-basic-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-basic-view td.fc-week-number>*{display:inline-block;min-width:1.25em}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item:hover td{background-color:#f5f5f5}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}
\ No newline at end of file diff --git a/library/fullcalendar/fullcalendar.min.js b/library/fullcalendar/fullcalendar.min.js index bc8b51c8a..8484b7c45 100644 --- a/library/fullcalendar/fullcalendar.min.js +++ b/library/fullcalendar/fullcalendar.min.js @@ -1,9 +1,10 @@ /*! - * FullCalendar v3.0.1 + * FullCalendar v3.1.0 * Docs & License: http://fullcalendar.io/ * (c) 2016 Adam Shaw */ -!function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):"object"==typeof exports?module.exports=t(require("jquery"),require("moment")):t(jQuery,moment)}(function(t,e){function n(t){return q(t,qt)}function i(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function r(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function s(){t("body").addClass("fc-not-allowed")}function o(){t("body").removeClass("fc-not-allowed")}function l(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],u=[],d=0;a(e),e.each(function(n,i){var a=n===e.length-1?s:r,c=t(i).outerHeight(!0);c<a?(o.push(i),l.push(c),u.push(t(i).height())):d+=c}),i&&(n-=d,r=Math.floor(n/o.length),s=Math.floor(n-r*(o.length-1))),t(o).each(function(e,n){var i=e===o.length-1?s:r,a=l[e],d=u[e],c=i-(a-d);a<i&&t(n).height(c)})}function a(t){t.height("")}function u(e){var n=0;return e.find("> *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function d(t,e){var n,i=t.add(e);return i.css({position:"relative",left:-1}),n=t.outerHeight()-e.outerHeight(),i.css({position:"",left:""}),n}function c(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function h(t,e){var n=t.offset(),i=n.left-(e?e.left:0),r=n.top-(e?e.top:0);return{left:i,right:i+t.outerWidth(),top:r,bottom:r+t.outerHeight()}}function f(t,e){var n=t.offset(),i=p(t),r=n.left+y(t,"border-left-width")+i.left-(e?e.left:0),s=n.top+y(t,"border-top-width")+i.top-(e?e.top:0);return{left:r,right:r+t[0].clientWidth,top:s,bottom:s+t[0].clientHeight}}function g(t,e){var n=t.offset(),i=n.left+y(t,"border-left-width")+y(t,"padding-left")-(e?e.left:0),r=n.top+y(t,"border-top-width")+y(t,"padding-top")-(e?e.top:0);return{left:i,right:i+t.width(),top:r,bottom:r+t.height()}}function p(t){var e=t.innerWidth()-t[0].clientWidth,n={left:0,right:0,top:0,bottom:t.innerHeight()-t[0].clientHeight};return v()&&"rtl"==t.css("direction")?n.left=e:n.right=e,n}function v(){return null===Zt&&(Zt=m()),Zt}function m(){var e=t("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),n=e.children(),i=n.offset().left>e.offset().left;return e.remove(),i}function y(t,e){return parseFloat(t.css(e))||0}function S(t){return 1==t.which&&!t.ctrlKey}function w(t){if(void 0!==t.pageX)return t.pageX;var e=t.originalEvent.touches;return e?e[0].pageX:void 0}function E(t){if(void 0!==t.pageY)return t.pageY;var e=t.originalEvent.touches;return e?e[0].pageY:void 0}function D(t){return/^touch/.test(t.type)}function b(t){t.addClass("fc-unselectable").on("selectstart",C)}function C(t){t.preventDefault()}function H(t){return!!window.addEventListener&&(window.addEventListener("scroll",t,!0),!0)}function T(t){return!!window.removeEventListener&&(window.removeEventListener("scroll",t,!0),!0)}function x(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function R(t,e){return{left:Math.min(Math.max(t.left,e.left),e.right),top:Math.min(Math.max(t.top,e.top),e.bottom)}}function I(t){return{left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}}function k(t,e){return{left:t.left-e.left,top:t.top-e.top}}function M(e){var n,i,r=[],s=[];for("string"==typeof e?s=e.split(/\s*,\s*/):"function"==typeof e?s=[e]:t.isArray(e)&&(s=e),n=0;n<s.length;n++)i=s[n],"string"==typeof i?r.push("-"==i.charAt(0)?{field:i.substring(1),order:-1}:{field:i,order:1}):"function"==typeof i&&r.push({func:i});return r}function L(t,e,n){var i,r;for(i=0;i<n.length;i++)if(r=B(t,e,n[i]))return r;return 0}function B(t,e,n){return n.func?n.func(t,e):z(t[n.field],e[n.field])*(n.order||1)}function z(e,n){return e||n?null==n?-1:null==e?1:"string"===t.type(e)||"string"===t.type(n)?String(e).localeCompare(String(n)):e-n:0}function F(t,e){var n,i,r,s,o=t.start,l=t.end,a=e.start,u=e.end;if(l>a&&o<u)return o>=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),l<=u?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}}function N(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function G(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function A(t,n,i){return e.duration(Math.round(t.diff(n,i,!0)),i)}function O(t,e){var n,i,r;for(n=0;n<Xt.length&&(i=Xt[n],r=V(i,t,e),!(r>=1&&ot(r)));n++);return i}function V(t,n,i){return null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0)}function P(t,e,n){var i;return W(n)?(e-t)/n:(i=n.asMonths(),Math.abs(i)>=1&&ot(i)?e.diff(t,"months",!0)/i:e.diff(t,"days",!0)/n.asDays())}function _(t,e){var n,i;return W(t)||W(e)?t/e:(n=t.asMonths(),i=e.asMonths(),Math.abs(n)>=1&&ot(n)&&Math.abs(i)>=1&&ot(i)?n/i:t.asDays()/e.asDays())}function Y(t,n){var i;return W(t)?e.duration(t*n):(i=t.asMonths(),Math.abs(i)>=1&&ot(i)?e.duration({months:i*n}):e.duration({days:t.asDays()*n}))}function W(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function j(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function U(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function q(t,e){var n,i,r,s,o,l,a={};if(e)for(n=0;n<e.length;n++){for(i=e[n],r=[],s=t.length-1;s>=0;s--)if(o=t[s][i],"object"==typeof o)r.unshift(o);else if(void 0!==o){a[i]=o;break}r.length&&(a[i]=q(r))}for(n=t.length-1;n>=0;n--){l=t[n];for(i in l)i in a||(a[i]=l[i])}return a}function Z(t){var e=function(){};return e.prototype=t,new e}function $(t,e){for(var n in t)X(t,n)&&(e[n]=t[n])}function X(t,e){return Kt.call(t,e)}function K(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function Q(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;r<e.length;r++)s=e[r].apply(n,i)||s;return s}}function J(){for(var t=0;t<arguments.length;t++)if(void 0!==arguments[t])return arguments[t]}function tt(t){return(t+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br />")}function et(t){return t.replace(/&.*?;/g,"")}function nt(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+":"+e)}),n.join(";")}function it(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+'="'+tt(e)+'"')}),n.join(" ")}function rt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function st(t,e){return t-e}function ot(t){return t%1===0}function lt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function at(t,e,n){var i,r,s,o,l,a=function(){var u=+new Date-o;u<e?i=setTimeout(a,e-u):(i=null,n||(l=t.apply(s,r),s=r=null))};return function(){s=this,r=arguments,o=+new Date;var u=n&&!i;return i||(i=setTimeout(a,e)),u&&(l=t.apply(s,r),s=r=null),l}}function ut(e,n){return e&&e.then&&"resolved"!==e.state()?n?e.then(n):void 0:t.when(n())}function dt(n,i,r){var s,o,l,a,u=n[0],d=1==n.length&&"string"==typeof u;return e.isMoment(u)||j(u)||void 0===u?a=e.apply(null,n):(s=!1,o=!1,d?Qt.test(u)?(u+="-01",n=[u],s=!0,o=!0):(l=Jt.exec(u))&&(s=!l[5],o=!0):t.isArray(u)&&(o=!0),a=i||s?e.utc.apply(e,n):e.apply(null,n),s?(a._ambigTime=!0,a._ambigZone=!0):r&&(o?a._ambigZone=!0:d&&a.utcOffset(u))),a._fullCalendar=!0,a}function ct(t,e){return ee.format.call(t,e)}function ht(t,e){return ft(t,yt(e))}function ft(t,e){var n,i="";for(n=0;n<e.length;n++)i+=gt(t,e[n]);return i}function gt(t,e){var n,i;return"string"==typeof e?e:(n=e.token)?ie[n]?ie[n](t):ct(t,n):e.maybe&&(i=ft(t,e.maybe),i.match(/[1-9]/))?i:""}function pt(t,e,n,i,r){var s;return t=jt.moment.parseZone(t),e=jt.moment.parseZone(e),s=t.localeData(),n=s.longDateFormat(n)||n,i=i||" - ",vt(t,e,yt(n),i,r)}function vt(t,e,n,i,r){var s,o,l,a,u=t.clone().stripZone(),d=e.clone().stripZone(),c="",h="",f="",g="",p="";for(o=0;o<n.length&&(s=mt(t,e,u,d,n[o]),s!==!1);o++)c+=s;for(l=n.length-1;l>o&&(s=mt(t,e,u,d,n[l]),s!==!1);l--)h=s+h;for(a=o;a<=l;a++)f+=gt(t,n[a]),g+=gt(e,n[a]);return(f||g)&&(p=r?g+i+f:f+i+g),c+p+h}function mt(t,e,n,i,r){var s,o;return"string"==typeof r?r:!!((s=r.token)&&(o=re[s.charAt(0)],o&&n.isSame(i,o)))&&ct(t,s)}function yt(t){return t in se?se[t]:se[t]=St(t)}function St(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:St(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function wt(){}function Et(t,e){var n;return X(e,"constructor")&&(n=e.constructor),"function"!=typeof n&&(n=e.constructor=function(){t.apply(this,arguments)}),n.prototype=Z(t.prototype),$(e,n.prototype),$(t,n),n}function Dt(t,e){$(e,t.prototype)}function bt(t,e){return!t&&!e||!(!t||!e)&&(t.component===e.component&&Ct(t,e)&&Ct(e,t))}function Ct(t,e){for(var n in t)if(!/^(component|left|right|top|bottom)$/.test(n)&&t[n]!==e[n])return!1;return!0}function Ht(t){return{start:t.start.clone(),end:t.end?t.end.clone():null,allDay:t.allDay}}function Tt(t){var e=Rt(t);return"background"===e||"inverse-background"===e}function xt(t){return"inverse-background"===Rt(t)}function Rt(t){return J((t.source||{}).rendering,t.rendering)}function It(t){var e,n,i={};for(e=0;e<t.length;e++)n=t[e],(i[n._id]||(i[n._id]=[])).push(n);return i}function kt(t,e){return t.start-e.start}function Mt(n){var i,r,s,o,l=jt.dataAttrPrefix;return l&&(l+="-"),i=n.data(l+"event")||null,i&&(i="object"==typeof i?t.extend({},i):{},r=i.start,null==r&&(r=i.time),s=i.duration,o=i.stick,delete i.start,delete i.time,delete i.duration,delete i.stick),null==r&&(r=n.data(l+"start")),null==r&&(r=n.data(l+"time")),null==s&&(s=n.data(l+"duration")),null==o&&(o=n.data(l+"stick")),r=null!=r?e.duration(r):null,s=null!=s?e.duration(s):null,o=Boolean(o),{eventProps:i,startTime:r,duration:s,stick:o}}function Lt(t,e){var n,i;for(n=0;n<e.length;n++)if(i=e[n],i.leftCol<=t.rightCol&&i.rightCol>=t.leftCol)return!0;return!1}function Bt(t,e){return t.leftCol-e.leftCol}function zt(t){var e,n,i,r=[];for(e=0;e<t.length;e++){for(n=t[e],i=0;i<r.length&&Gt(n,r[i]).length;i++);n.level=i,(r[i]||(r[i]=[])).push(n)}return r}function Ft(t){var e,n,i,r,s;for(e=0;e<t.length;e++)for(n=t[e],i=0;i<n.length;i++)for(r=n[i],r.forwardSegs=[],s=e+1;s<t.length;s++)Gt(r,t[s],r.forwardSegs)}function Nt(t){var e,n,i=t.forwardSegs,r=0;if(void 0===t.forwardPressure){for(e=0;e<i.length;e++)n=i[e],Nt(n),r=Math.max(r,1+n.forwardPressure);t.forwardPressure=r}}function Gt(t,e,n){n=n||[];for(var i=0;i<e.length;i++)At(t,e[i])&&n.push(e[i]);return n}function At(t,e){return t.bottom>e.top&&t.top<e.bottom}function Ot(n,i){function r(t){t._locale=U}function s(){$?u()&&(g(),d()):o()}function o(){n.addClass("fc"),n.on("click.fc","a[data-goto]",function(e){var n=t(this),i=n.data("goto"),r=j.moment(i.date),s=i.type,o=K.opt("navLink"+rt(s)+"Click");"function"==typeof o?o(r,e):("string"==typeof o&&(s=o),N(r,s))}),j.bindOption("theme",function(t){X=t?"ui":"fc",n.toggleClass("ui-widget",t),n.toggleClass("fc-unthemed",!t)}),j.bindOptions(["isRTL","locale"],function(t){n.toggleClass("fc-ltr",!t),n.toggleClass("fc-rtl",t)}),$=t("<div class='fc-view-container'/>").prependTo(n),q=j.header=new _t(j),l(),d(j.options.defaultView),j.options.handleWindowResize&&(J=at(m,j.options.windowResizeDelay),t(window).resize(J))}function l(){q.render(),q.el&&n.prepend(q.el)}function a(){K&&K.removeElement(),q.removeElement(),$.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),n.off(".fc"),J&&t(window).unbind("resize",J)}function u(){return n.is(":visible")}function d(e,n){lt++,K&&e&&K.type!==e&&(A(),c()),!K&&e&&(K=j.view=ot[e]||(ot[e]=j.instantiateView(e)),K.setElement(t("<div class='fc-view fc-"+e+"-view' />").appendTo($)),q.activateButton(e)),K&&(tt=K.massageCurrentDate(tt),K.displaying&&tt>=K.intervalStart&&tt<K.intervalEnd||u()&&(K.display(tt,n),O(),H(),T(),E())),O(),lt--}function c(){q.deactivateButton(K.type),K.removeElement(),K=j.view=null}function h(){lt++,A();var t=K.type,e=K.queryScroll();c(),d(t,e),O(),lt--}function f(t){if(u())return t&&p(),lt++,K.updateSize(!0),lt--,!0}function g(){u()&&p()}function p(){var t=j.options.contentHeight,e=j.options.height;Q="number"==typeof t?t:"function"==typeof t?t():"number"==typeof e?e-v():"function"==typeof e?e()-v():"parent"===e?n.parent().height()-v():Math.round($.width()/Math.max(j.options.aspectRatio,.5))}function v(){return q.el?q.el.outerHeight(!0):0}function m(t){!lt&&t.target===window&&K.start&&f(!0)&&K.trigger("windowResize",st)}function y(){D()}function S(t){it(j.getEventSourcesByMatchArray(t))}function w(){u()&&(A(),K.displayEvents(ut),O())}function E(){!j.options.lazyFetching||et(K.start,K.end)?D():w()}function D(){nt(K.start,K.end)}function b(t){ut=t,w()}function C(){w()}function H(){q.updateTitle(K.title)}function T(){var t=j.getNow();t>=K.intervalStart&&t<K.intervalEnd?q.disableButton("today"):q.enableButton("today")}function x(t,e){K.select(j.buildSelectSpan.apply(j,arguments))}function R(){K&&K.unselect()}function I(){tt=K.computePrevDate(tt),d()}function k(){tt=K.computeNextDate(tt),d()}function M(){tt.add(-1,"years"),d()}function L(){tt.add(1,"years"),d()}function B(){tt=j.getNow(),d()}function z(t){tt=j.moment(t).stripZone(),d()}function F(t){tt.add(e.duration(t)),d()}function N(t,e){var n;e=e||"day",n=j.getViewSpec(e)||j.getUnitViewSpec(e),tt=t.clone(),d(n?n.type:null)}function G(){return j.applyTimezone(tt)}function A(){$.css({width:"100%",height:$.height(),overflow:"hidden"})}function O(){$.css({width:"",height:"",overflow:""})}function V(){return j}function P(){return K}function _(t,e){var n;if("string"==typeof t){if(void 0===e)return j.options[t];n={},n[t]=e,Y(n)}else"object"==typeof t&&Y(t)}function Y(t){var e,n=0;for(e in t)j.dynamicOverrides[e]=t[e];j.viewSpecCache={},j.populateOptionsHash();for(e in t)j.triggerOptionHandlers(e),n++;if(1===n){if("height"===e||"contentHeight"===e||"aspectRatio"===e)return void f(!0);if("defaultDate"===e)return;if("businessHours"===e)return void(K&&(K.unrenderBusinessHours(),K.renderBusinessHours()));if("timezone"===e)return j.rezoneArrayEventSources(),void y()}l(),ot={},h()}function W(t,e){var n=Array.prototype.slice.call(arguments,2);if(e=e||st,this.triggerWith(t,e,n),j.options[t])return j.options[t].apply(e,n)}var j=this;j.render=s,j.destroy=a,j.refetchEvents=y,j.refetchEventSources=S,j.reportEvents=b,j.reportEventChange=C,j.rerenderEvents=w,j.changeView=d,j.select=x,j.unselect=R,j.prev=I,j.next=k,j.prevYear=M,j.nextYear=L,j.today=B,j.gotoDate=z,j.incrementDate=F,j.zoomTo=N,j.getDate=G,j.getCalendar=V,j.getView=P,j.option=_,j.trigger=W,j.dynamicOverrides={},j.viewSpecCache={},j.optionHandlers={},j.overrides=t.extend({},i),j.populateOptionsHash();var U;j.bindOptions(["locale","monthNames","monthNamesShort","dayNames","dayNamesShort","firstDay","weekNumberCalculation"],function(t,e,n,i,s,o,l){if("iso"===l&&(l="ISO"),U=Z(Pt(t)),e&&(U._months=e),n&&(U._monthsShort=n),i&&(U._weekdays=i),s&&(U._weekdaysShort=s),null==o&&"ISO"===l&&(o=1),null!=o){var a=Z(U._week);a.dow=o,U._week=a}"ISO"!==l&&"local"!==l&&"function"!=typeof l||(U._fullCalendar_weekCalc=l),tt&&r(tt)}),j.defaultAllDayEventDuration=e.duration(j.options.defaultAllDayEventDuration),j.defaultTimedEventDuration=e.duration(j.options.defaultTimedEventDuration),j.moment=function(){var t;return"local"===j.options.timezone?(t=jt.moment.apply(null,arguments),t.hasTime()&&t.local()):t="UTC"===j.options.timezone?jt.moment.utc.apply(null,arguments):jt.moment.parseZone.apply(null,arguments),r(t),t},j.localizeMoment=r,j.getIsAmbigTimezone=function(){return"local"!==j.options.timezone&&"UTC"!==j.options.timezone},j.applyTimezone=function(t){if(!t.hasTime())return t.clone();var e,n=j.moment(t.toArray()),i=t.time()-n.time();return i&&(e=n.clone().add(i),t.time()-e.time()===0&&(n=e)),n},j.getNow=function(){var t=j.options.now;return"function"==typeof t&&(t=t()),j.moment(t).stripZone()},j.getEventEnd=function(t){return t.end?t.end.clone():j.getDefaultEventEnd(t.allDay,t.start)},j.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(j.defaultAllDayEventDuration):n.add(j.defaultTimedEventDuration),j.getIsAmbigTimezone()&&n.stripZone(),n},j.humanizeDuration=function(t){return t.locale(j.options.locale).humanize()},Yt.call(j);var q,$,X,K,Q,J,tt,et=j.isFetchNeeded,nt=j.fetchEvents,it=j.fetchEventSources,st=n[0],ot={},lt=0,ut=[];tt=null!=j.options.defaultDate?j.moment(j.options.defaultDate).stripZone():j.getNow(),j.getSuggestedViewHeight=function(){return void 0===Q&&g(),Q},j.isHeightAuto=function(){return"auto"===j.options.contentHeight||"auto"===j.options.height},j.freezeContentHeight=A,j.unfreezeContentHeight=O,j.initialize()}function Vt(e){t.each(He,function(t,n){null==e[t]&&(e[t]=n(e))})}function Pt(t){return e.localeData(t)||e.localeData("en")}function _t(e){function n(){var n=e.options,s=n.header;f=n.theme?"ui":"fc",s?(h?h.empty():h=this.el=t("<div class='fc-toolbar'/>"),h.append(r("left")).append(r("right")).append(r("center")).append('<div class="fc-clear"/>')):i()}function i(){h&&(h.remove(),h=c.el=null)}function r(n){var i=t('<div class="fc-'+n+'"/>'),r=e.options,s=r.header[n];return s&&t.each(s.split(" "),function(n){var s,o=t(),l=!0;t.each(this.split(","),function(n,i){var s,a,u,d,c,h,p,v,m,y;"title"==i?(o=o.add(t("<h2> </h2>")),l=!1):((s=(r.customButtons||{})[i])?(u=function(t){s.click&&s.click.call(y[0],t)},d="",c=s.text):(a=e.getViewSpec(i))?(u=function(){e.changeView(i)},g.push(i),d=a.buttonTextOverride,c=a.buttonTextDefault):e[i]&&(u=function(){e[i]()},d=(e.overrides.buttonText||{})[i],c=r.buttonText[i]),u&&(h=s?s.themeIcon:r.themeButtonIcons[i],p=s?s.icon:r.buttonIcons[i],v=d?tt(d):h&&r.theme?"<span class='ui-icon ui-icon-"+h+"'></span>":p&&!r.theme?"<span class='fc-icon fc-icon-"+p+"'></span>":tt(c),m=["fc-"+i+"-button",f+"-button",f+"-state-default"],y=t('<button type="button" class="'+m.join(" ")+'">'+v+"</button>").click(function(t){y.hasClass(f+"-state-disabled")||(u(t),(y.hasClass(f+"-state-active")||y.hasClass(f+"-state-disabled"))&&y.removeClass(f+"-state-hover"))}).mousedown(function(){y.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-down")}).mouseup(function(){y.removeClass(f+"-state-down")}).hover(function(){y.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-hover")},function(){y.removeClass(f+"-state-hover").removeClass(f+"-state-down")}),o=o.add(y)))}),l&&o.first().addClass(f+"-corner-left").end().last().addClass(f+"-corner-right").end(),o.length>1?(s=t("<div/>"),l&&s.addClass("fc-button-group"),s.append(o),i.append(s)):i.append(o)}),i}function s(t){h&&h.find("h2").text(t)}function o(t){h&&h.find(".fc-"+t+"-button").addClass(f+"-state-active")}function l(t){h&&h.find(".fc-"+t+"-button").removeClass(f+"-state-active")}function a(t){h&&h.find(".fc-"+t+"-button").prop("disabled",!0).addClass(f+"-state-disabled")}function u(t){h&&h.find(".fc-"+t+"-button").prop("disabled",!1).removeClass(f+"-state-disabled")}function d(){return g}var c=this;c.render=n,c.removeElement=i,c.updateTitle=s,c.activateButton=o,c.deactivateButton=l,c.disableButton=a,c.enableButton=u,c.getViewsWithButtons=d,c.el=null;var h,f,g=[]}function Yt(){function n(t,e){return!O||t<O||e>V}function i(t,e){O=t,V=e,r(Y,"reset")}function r(t,e){var n,i;for("reset"===e?j=[]:"add"!==e&&(j=w(j,t)),n=0;n<t.length;n++)i=t[n],"pending"!==i._status&&W++,i._fetchId=(i._fetchId||0)+1,i._status="pending";for(n=0;n<t.length;n++)i=t[n],s(i,i._fetchId)}function s(e,n){a(e,function(i){var r,s,o,a=t.isArray(e.events);if(n===e._fetchId&&"rejected"!==e._status){if(e._status="resolved",i)for(r=0;r<i.length;r++)s=i[r],o=a?s:R(s,e),o&&j.push.apply(j,L(o));l()}})}function o(t){var e="pending"===t._status;t._status="rejected",e&&l()}function l(){W--,W||P(j)}function a(e,n){var i,r,s=jt.sourceFetchers;for(i=0;i<s.length;i++){if(r=s[i].call(F,e,O.clone(),V.clone(),F.options.timezone,n),r===!0)return;if("object"==typeof r)return void a(r,n)}var o=e.events;if(o)t.isFunction(o)?(F.pushLoading(),o.call(F,O.clone(),V.clone(),F.options.timezone,function(t){n(t),F.popLoading()})):t.isArray(o)?n(o):n();else{var l=e.url;if(l){var u,d=e.success,c=e.error,h=e.complete;u=t.isFunction(e.data)?e.data():e.data;var f=t.extend({},u||{}),g=J(e.startParam,F.options.startParam),p=J(e.endParam,F.options.endParam),v=J(e.timezoneParam,F.options.timezoneParam);g&&(f[g]=O.format()),p&&(f[p]=V.format()),F.options.timezone&&"local"!=F.options.timezone&&(f[v]=F.options.timezone),F.pushLoading(),t.ajax(t.extend({},Te,e,{data:f,success:function(e){e=e||[];var i=Q(d,this,arguments);t.isArray(i)&&(e=i),n(e)},error:function(){Q(c,this,arguments),n()},complete:function(){Q(h,this,arguments),F.popLoading()}}))}else n()}}function u(t){var e=d(t);e&&(Y.push(e),r([e],"add"))}function d(e){var n,i,r=jt.sourceNormalizers;if(t.isFunction(e)||t.isArray(e)?n={events:e}:"string"==typeof e?n={url:e}:"object"==typeof e&&(n=t.extend({},e)),n){for(n.className?"string"==typeof n.className&&(n.className=n.className.split(/\s+/)):n.className=[],t.isArray(n.events)&&(n.origArray=n.events,n.events=t.map(n.events,function(t){return R(t,n)})),i=0;i<r.length;i++)r[i].call(F,n);return n}}function c(t){f(m(t))}function h(t){null==t?f(Y,!0):f(v(t))}function f(e,n){var i;for(i=0;i<e.length;i++)o(e[i]);n?(Y=[],j=[]):(Y=t.grep(Y,function(t){for(i=0;i<e.length;i++)if(t===e[i])return!1;return!0}),j=w(j,e)),P(j)}function g(){return Y.slice(1)}function p(e){return t.grep(Y,function(t){return t.id&&t.id===e})[0]}function v(e){e?t.isArray(e)||(e=[e]):e=[];var n,i=[];for(n=0;n<e.length;n++)i.push.apply(i,m(e[n]));return i}function m(e){var n,i;for(n=0;n<Y.length;n++)if(i=Y[n],i===e)return[i];return i=p(e),i?[i]:t.grep(Y,function(t){return y(e,t)})}function y(t,e){return t&&e&&S(t)==S(e)}function S(t){return("object"==typeof t?t.origArray||t.googleCalendarId||t.url||t.events:null)||t}function w(e,n){return t.grep(e,function(t){for(var e=0;e<n.length;e++)if(t.source===n[e])return!1;return!0})}function E(t){t.start=F.moment(t.start),t.end?t.end=F.moment(t.end):t.end=null,B(t,D(t)),P(j)}function D(e){var n={};return t.each(e,function(t,e){b(t)&&void 0!==e&&K(e)&&(n[t]=e)}),n}function b(t){return!/^_|^(id|allDay|start|end)$/.test(t)}function C(t,e){var n,i,r,s=R(t);if(s){for(n=L(s),i=0;i<n.length;i++)r=n[i],r.source||(e&&(_.events.push(r),r.source=_),j.push(r));return P(j),n}return[]}function H(e){var n,i;for(null==e?e=function(){return!0}:t.isFunction(e)||(n=e+"",e=function(t){return t._id==n}),j=t.grep(j,e,!0),i=0;i<Y.length;i++)t.isArray(Y[i].events)&&(Y[i].events=t.grep(Y[i].events,e,!0));P(j)}function T(e){return t.isFunction(e)?t.grep(j,e):null!=e?(e+="",t.grep(j,function(t){return t._id==e})):j}function x(t){t.start=F.moment(t.start),t.end&&(t.end=F.moment(t.end)),Wt(t)}function R(n,i){var r,s,o,l={};if(F.options.eventDataTransform&&(n=F.options.eventDataTransform(n)),i&&i.eventDataTransform&&(n=i.eventDataTransform(n)),t.extend(l,n),i&&(l.source=i),l._id=n._id||(void 0===n.id?"_fc"+xe++:n.id+""),n.className?"string"==typeof n.className?l.className=n.className.split(/\s+/):l.className=n.className:l.className=[],r=n.start||n.date,s=n.end,U(r)&&(r=e.duration(r)),U(s)&&(s=e.duration(s)),n.dow||e.isDuration(r)||e.isDuration(s))l.start=r?e.duration(r):null,l.end=s?e.duration(s):null,l._recurring=!0;else{if(r&&(r=F.moment(r),!r.isValid()))return!1;s&&(s=F.moment(s),s.isValid()||(s=null)),o=n.allDay,void 0===o&&(o=J(i?i.allDayDefault:void 0,F.options.allDayDefault)),I(r,s,o,l)}return F.normalizeEvent(l),l}function I(t,e,n,i){i.start=t,i.end=e,i.allDay=n,k(i),Wt(i)}function k(t){M(t),t.end&&!t.end.isAfter(t.start)&&(t.end=null),t.end||(F.options.forceEventDuration?t.end=F.getDefaultEventEnd(t.allDay,t.start):t.end=null)}function M(t){null==t.allDay&&(t.allDay=!(t.start.hasTime()||t.end&&t.end.hasTime())),t.allDay?(t.start.stripTime(),t.end&&t.end.stripTime()):(t.start.hasTime()||(t.start=F.applyTimezone(t.start.time(0))),t.end&&!t.end.hasTime()&&(t.end=F.applyTimezone(t.end.time(0))))}function L(e,n,i){var r,s,o,l,a,u,d,c,h,f=[];if(n=n||O,i=i||V,e)if(e._recurring){if(s=e.dow)for(r={},o=0;o<s.length;o++)r[s[o]]=!0;for(l=n.clone().stripTime();l.isBefore(i);)r&&!r[l.day()]||(a=e.start,u=e.end,d=l.clone(),c=null,a&&(d=d.time(a)),u&&(c=l.clone().time(u)),h=t.extend({},e),I(d,c,!a&&!u,h),f.push(h)),l.add(1,"days")}else f.push(e);return f}function B(e,n,i){function r(t,e){return i?A(t,e,i):n.allDay?G(t,e):N(t,e)}var s,o,l,a,u,d,c={};return n=n||{},n.start||(n.start=e.start.clone()),void 0===n.end&&(n.end=e.end?e.end.clone():null),null==n.allDay&&(n.allDay=e.allDay),k(n),s={start:e._start.clone(),end:e._end?e._end.clone():F.getDefaultEventEnd(e._allDay,e._start),allDay:n.allDay},k(s),o=null!==e._end&&null===n.end,l=r(n.start,s.start),n.end?(a=r(n.end,s.end),u=a.subtract(l)):u=null,t.each(n,function(t,e){b(t)&&void 0!==e&&(c[t]=e)}),d=z(T(e._id),o,n.allDay,l,u,c),{dateDelta:l,durationDelta:u,undo:d}}function z(e,n,i,r,s,o){var l=F.getIsAmbigTimezone(),a=[];return r&&!r.valueOf()&&(r=null),s&&!s.valueOf()&&(s=null),t.each(e,function(e,u){var d,c;d={start:u.start.clone(),end:u.end?u.end.clone():null,allDay:u.allDay},t.each(o,function(t){d[t]=u[t]}),c={start:u._start,end:u._end,allDay:i},k(c),n?c.end=null:s&&!c.end&&(c.end=F.getDefaultEventEnd(c.allDay,c.start)),r&&(c.start.add(r),c.end&&c.end.add(r)),s&&c.end.add(s),l&&!c.allDay&&(r||s)&&(c.start.stripZone(),c.end&&c.end.stripZone()),t.extend(u,o,c),Wt(u),a.push(function(){t.extend(u,d),Wt(u)})}),function(){for(var t=0;t<a.length;t++)a[t]()}}var F=this;F.isFetchNeeded=n,F.fetchEvents=i,F.fetchEventSources=r,F.getEventSources=g,F.getEventSourceById=p,F.getEventSourcesByMatchArray=v,F.getEventSourcesByMatch=m,F.addEventSource=u,F.removeEventSource=c,F.removeEventSources=h,F.updateEvent=E,F.renderEvent=C,F.removeEvents=H,F.clientEvents=T,F.mutateEvent=B,F.normalizeEventDates=k,F.normalizeEventTimes=M;var O,V,P=F.reportEvents,_={events:[]},Y=[_],W=0,j=[];t.each((F.options.events?[F.options.events]:[]).concat(F.options.eventSources||[]),function(t,e){var n=d(e);n&&Y.push(n)}),F.rezoneArrayEventSources=function(){var e,n,i;for(e=0;e<Y.length;e++)if(n=Y[e].events,t.isArray(n))for(i=0;i<n.length;i++)x(n[i])},F.buildEventFromInput=R,F.expandEvent=L,F.getEventCache=function(){return j}}function Wt(t){t._allDay=t.allDay,t._start=t.start.clone(),t._end=t.end?t.end.clone():null}var jt=t.fullCalendar={version:"3.0.1",internalApiVersion:6},Ut=jt.views={};t.fn.fullCalendar=function(e){var n=Array.prototype.slice.call(arguments,1),i=this;return this.each(function(r,s){var o,l=t(s),a=l.data("fullCalendar");"string"==typeof e?a&&t.isFunction(a[e])&&(o=a[e].apply(a,n),r||(i=o),"destroy"===e&&l.removeData("fullCalendar")):a||(a=new Ee(l,e),l.data("fullCalendar",a),a.render())}),i};var qt=["header","buttonText","buttonIcons","themeButtonIcons"];jt.intersectRanges=F,jt.applyAll=Q,jt.debounce=at,jt.isInt=ot,jt.htmlEscape=tt,jt.cssToStr=nt,jt.proxy=lt,jt.capitaliseFirstLetter=rt,jt.getOuterRect=h,jt.getClientRect=f,jt.getContentRect=g,jt.getScrollbarWidths=p;var Zt=null;jt.preventDefault=C,jt.intersectRects=x,jt.parseFieldSpecs=M,jt.compareByFieldSpecs=L,jt.compareByFieldSpec=B,jt.flexibleCompare=z,jt.computeIntervalUnit=O,jt.divideRangeByDuration=P,jt.divideDurationByDuration=_,jt.multiplyDuration=Y,jt.durationHasTime=W;var $t=["sun","mon","tue","wed","thu","fri","sat"],Xt=["year","month","week","day","hour","minute","second","millisecond"];jt.log=function(){var t=window.console;if(t&&t.log)return t.log.apply(t,arguments)},jt.warn=function(){var t=window.console;return t&&t.warn?t.warn.apply(t,arguments):jt.log.apply(jt,arguments)};var Kt={}.hasOwnProperty,Qt=/^\s*\d{4}-\d\d$/,Jt=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,te=e.fn,ee=t.extend({},te),ne=e.momentProperties;ne.push("_fullCalendar"),ne.push("_ambigTime"),ne.push("_ambigZone"),jt.moment=function(){return dt(arguments)},jt.moment.utc=function(){var t=dt(arguments,!0);return t.hasTime()&&t.utc(),t},jt.moment.parseZone=function(){return dt(arguments,!0,!0)},te.week=te.weeks=function(t){var e=this._locale._fullCalendar_weekCalc;return null==t&&"function"==typeof e?e(this):"ISO"===e?ee.isoWeek.apply(this,arguments):ee.week.apply(this,arguments)},te.time=function(t){if(!this._fullCalendar)return ee.time.apply(this,arguments);if(null==t)return e.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,e.isDuration(t)||e.isMoment(t)||(t=e.duration(t));var n=0;return e.isDuration(t)&&(n=24*Math.floor(t.asDays())),this.hours(n+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},te.stripTime=function(){return this._ambigTime||(this.utc(!0),this.set({hours:0,minutes:0,seconds:0,ms:0}),this._ambigTime=!0,this._ambigZone=!0),this},te.hasTime=function(){return!this._ambigTime},te.stripZone=function(){var t;return this._ambigZone||(t=this._ambigTime,this.utc(!0),this._ambigTime=t||!1,this._ambigZone=!0),this},te.hasZone=function(){return!this._ambigZone},te.local=function(t){return ee.local.call(this,this._ambigZone||t),this._ambigTime=!1,this._ambigZone=!1,this},te.utc=function(t){return ee.utc.call(this,t),this._ambigTime=!1,this._ambigZone=!1,this},te.utcOffset=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),ee.utcOffset.apply(this,arguments)},te.format=function(){return this._fullCalendar&&arguments[0]?ht(this,arguments[0]):this._ambigTime?ct(this,"YYYY-MM-DD"):this._ambigZone?ct(this,"YYYY-MM-DD[T]HH:mm:ss"):ee.format.apply(this,arguments)},te.toISOString=function(){return this._ambigTime?ct(this,"YYYY-MM-DD"):this._ambigZone?ct(this,"YYYY-MM-DD[T]HH:mm:ss"):ee.toISOString.apply(this,arguments)};var ie={t:function(t){return ct(t,"a").charAt(0)},T:function(t){return ct(t,"A").charAt(0)}};jt.formatRange=pt;var re={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},se={},oe={Y:{value:1,unit:"year"},M:{value:2,unit:"month"},W:{value:3,unit:"week"},w:{value:3,unit:"week"},D:{value:4,unit:"day"},d:{value:4,unit:"day"}};jt.queryMostGranularFormatUnit=function(t){var e,n,i,r,s=yt(t);for(e=0;e<s.length;e++)n=s[e],n.token&&(i=oe[n.token.charAt(0)],i&&(!r||i.value>r.value)&&(r=i));return r?r.unit:null},jt.Class=wt,wt.extend=function(){var t,e,n=arguments.length;for(t=0;t<n;t++)e=arguments[t],t<n-1&&Dt(this,e);return Et(this,e||{})},wt.mixin=function(t){Dt(this,t)};var le=jt.EmitterMixin={on:function(e,n){var i=function(t,e){return n.apply(e.context||this,e.args||[])};return n.guid||(n.guid=t.guid++),i.guid=n.guid,t(this).on(e,i),this},off:function(e,n){return t(this).off(e,n),this},trigger:function(e){var n=Array.prototype.slice.call(arguments,1);return t(this).triggerHandler(e,{args:n}),this},triggerWith:function(e,n,i){return t(this).triggerHandler(e,{context:n,args:i}),this}},ae=jt.ListenerMixin=function(){var e=0,n={listenerId:null,listenTo:function(e,n,i){if("object"==typeof n)for(var r in n)n.hasOwnProperty(r)&&this.listenTo(e,r,n[r]);else"string"==typeof n&&e.on(n+"."+this.getListenerNamespace(),t.proxy(i,this))},stopListeningTo:function(t,e){t.off((e||"")+"."+this.getListenerNamespace())},getListenerNamespace:function(){return null==this.listenerId&&(this.listenerId=e++),"_listener"+this.listenerId}};return n}(),ue={isIgnoringMouse:!1,delayUnignoreMouse:null,initMouseIgnoring:function(t){this.delayUnignoreMouse=at(lt(this,"unignoreMouse"),t||1e3)},tempIgnoreMouse:function(){this.isIgnoringMouse=!0,this.delayUnignoreMouse()},unignoreMouse:function(){this.isIgnoringMouse=!1}},de=wt.extend(ae,{isHidden:!0,options:null,el:null,margin:10,constructor:function(t){this.options=t||{}},show:function(){ -this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var e=this,n=this.options;this.el=t('<div class="fc-popover"/>').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&this.listenTo(t(document),"mousedown",this.documentMousedown)},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(t(document),"mousedown")},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),d=t(window),h=c(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,h.is(window)||h.is(document)?(h=d,e=0,n=0):(i=h.offset(),e=i.top,n=i.left),e+=d.scrollTop(),n+=d.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+h.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+h.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),ce=jt.CoordCache=wt.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(e){this.els=t(e.els),this.isHorizontal=e.isHorizontal,this.isVertical=e.isVertical,this.forcedOffsetParentEl=e.offsetParent?t(e.offsetParent):null},build:function(){var t=this.forcedOffsetParentEl||this.els.eq(0).offsetParent();this.origin=t.offset(),this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},buildElHorizontals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().left,l=s.outerWidth();e.push(o),n.push(o+l)}),this.lefts=e,this.rights=n},buildElVerticals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().top,l=s.outerHeight();e.push(o),n.push(o+l)}),this.tops=e,this.bottoms=n},getHorizontalIndex:function(t){this.ensureBuilt();var e,n=this.lefts,i=this.rights,r=n.length;for(e=0;e<r;e++)if(t>=n[e]&&t<i[e])return e},getVerticalIndex:function(t){this.ensureBuilt();var e,n=this.tops,i=this.bottoms,r=n.length;for(e=0;e<r;e++)if(t>=n[e]&&t<i[e])return e},getLeftOffset:function(t){return this.ensureBuilt(),this.lefts[t]},getLeftPosition:function(t){return this.ensureBuilt(),this.lefts[t]-this.origin.left},getRightOffset:function(t){return this.ensureBuilt(),this.rights[t]},getRightPosition:function(t){return this.ensureBuilt(),this.rights[t]-this.origin.left},getWidth:function(t){return this.ensureBuilt(),this.rights[t]-this.lefts[t]},getTopOffset:function(t){return this.ensureBuilt(),this.tops[t]},getTopPosition:function(t){return this.ensureBuilt(),this.tops[t]-this.origin.top},getBottomOffset:function(t){return this.ensureBuilt(),this.bottoms[t]},getBottomPosition:function(t){return this.ensureBuilt(),this.bottoms[t]-this.origin.top},getHeight:function(t){return this.ensureBuilt(),this.bottoms[t]-this.tops[t]},queryBoundingRect:function(){var t=c(this.els.eq(0));if(!t.is(document))return f(t)},isPointInBounds:function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},isLeftInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.left&&t<this.boundingRect.right},isTopInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.top&&t<this.boundingRect.bottom}}),he=jt.DragListener=wt.extend(ae,ue,{options:null,subjectEl:null,originX:null,originY:null,scrollEl:null,isInteracting:!1,isDistanceSurpassed:!1,isDelayEnded:!1,isDragging:!1,isTouch:!1,delay:null,delayTimeoutId:null,minDistance:null,handleTouchScrollProxy:null,constructor:function(t){this.options=t||{},this.handleTouchScrollProxy=lt(this,"handleTouchScroll"),this.initMouseIgnoring(500)},startInteraction:function(e,n){var i=D(e);if("mousedown"===e.type){if(this.isIgnoringMouse)return;if(!S(e))return;e.preventDefault()}this.isInteracting||(n=n||{},this.delay=J(n.delay,this.options.delay,0),this.minDistance=J(n.distance,this.options.distance,0),this.subjectEl=this.options.subjectEl,this.isInteracting=!0,this.isTouch=i,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.originX=w(e),this.originY=E(e),this.scrollEl=c(t(e.target)),this.bindHandlers(),this.initAutoScroll(),this.handleInteractionStart(e),this.startDelay(e),this.minDistance||this.handleDistanceSurpassed(e))},handleInteractionStart:function(t){this.trigger("interactionStart",t)},endInteraction:function(t,e){this.isInteracting&&(this.endDrag(t),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null),this.destroyAutoScroll(),this.unbindHandlers(),this.isInteracting=!1,this.handleInteractionEnd(t,e),this.isTouch&&this.tempIgnoreMouse())},handleInteractionEnd:function(t,e){this.trigger("interactionEnd",t,e||!1)},bindHandlers:function(){var e=this,n=1;this.isTouch?(this.listenTo(t(document),{touchmove:this.handleTouchMove,touchend:this.endInteraction,touchcancel:this.endInteraction,touchstart:function(t){n?n--:e.endInteraction(t,!0)}}),!H(this.handleTouchScrollProxy)&&this.scrollEl&&this.listenTo(this.scrollEl,"scroll",this.handleTouchScroll)):this.listenTo(t(document),{mousemove:this.handleMouseMove,mouseup:this.endInteraction}),this.listenTo(t(document),{selectstart:C,contextmenu:C})},unbindHandlers:function(){this.stopListeningTo(t(document)),T(this.handleTouchScrollProxy),this.scrollEl&&this.stopListeningTo(this.scrollEl,"scroll")},startDrag:function(t,e){this.startInteraction(t,e),this.isDragging||(this.isDragging=!0,this.handleDragStart(t))},handleDragStart:function(t){this.trigger("dragStart",t)},handleMove:function(t){var e,n=w(t)-this.originX,i=E(t)-this.originY,r=this.minDistance;this.isDistanceSurpassed||(e=n*n+i*i,e>=r*r&&this.handleDistanceSurpassed(t)),this.isDragging&&this.handleDrag(n,i,t)},handleDrag:function(t,e,n){this.trigger("drag",t,e,n),this.updateAutoScroll(n)},endDrag:function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},handleDragEnd:function(t){this.trigger("dragEnd",t)},startDelay:function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},handleDelayEnd:function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},handleDistanceSurpassed:function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},handleTouchMove:function(t){this.isDragging&&t.preventDefault(),this.handleMove(t)},handleMouseMove:function(t){this.handleMove(t)},handleTouchScroll:function(t){this.isDragging||this.endInteraction(t,!0)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1)),this["_"+t]&&this["_"+t].apply(this,Array.prototype.slice.call(arguments,1))}});he.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,"scroll",at(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=h(this.scrollEl))},updateAutoScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(E(t)-o.top))/s,n=(s-(o.bottom-E(t)))/s,i=(s-(w(t)-o.left))/s,r=(s-(o.right-w(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),i>=0&&i<=1?a=i*this.scrollSpeed*-1:r>=0&&r<=1&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(lt(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var fe=he.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(t,e){he.call(this,e),this.component=t},handleInteractionStart:function(t){var e,n,i,r=this.subjectEl;this.computeCoords(),t?(n={left:w(t),top:E(t)},i=n,r&&(e=h(r),i=R(i,e)),this.origHit=this.queryHit(i.left,i.top),r&&this.options.subjectCenter&&(this.origHit&&(e=x(this.origHit,e)||e),i=I(e)),this.coordAdjust=k(i,n)):(this.origHit=null,this.coordAdjust=null),he.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},handleDragStart:function(t){var e;he.prototype.handleDragStart.apply(this,arguments),e=this.queryHit(w(t),E(t)),e&&this.handleHitOver(e)},handleDrag:function(t,e,n){var i;he.prototype.handleDrag.apply(this,arguments),i=this.queryHit(w(n),E(n)),bt(i,this.hit)||(this.hit&&this.handleHitOut(),i&&this.handleHitOver(i))},handleDragEnd:function(){this.handleHitDone(),he.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(t){var e=bt(t,this.origHit);this.hit=t,this.trigger("hitOver",this.hit,e,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},handleInteractionEnd:function(){he.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},handleScrollEnd:function(){he.prototype.handleScrollEnd.apply(this,arguments),this.computeCoords()},queryHit:function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)}}),ge=wt.extend(ae,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.y0=E(e),this.x0=w(e),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),D(e)?this.listenTo(t(document),"touchmove",this.handleMove):this.listenTo(t(document),"mousemove",this.handleMove))},stop:function(e,n){function i(){r.isAnimating=!1,r.removeElement(),r.top0=r.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(t(document)),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),t.addClass("fc-unselectable"),t.appendTo(this.parentEl)),t},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(t){this.topDelta=E(t)-this.y0,this.leftDelta=w(t)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),pe=jt.Grid=wt.extend(ae,ue,{hasDayInteractions:!0,view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL"),this.elsByFill={},this.dayDragListener=this.buildDayDragListener(),this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(t){this.start=t.start.clone(),this.end=t.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var t,e,n=this.view;this.eventTimeFormat=n.opt("eventTimeFormat")||n.opt("timeFormat")||this.computeEventTimeFormat(),t=n.opt("displayEventTime"),null==t&&(t=this.computeDisplayEventTime()),e=n.opt("displayEventEnd"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},spanToSegs:function(t){},diffDates:function(t,e){return this.largeUnit?A(t,e,this.largeUnit):N(t,e)},prepareHits:function(){},releaseHits:function(){},queryHit:function(t,e){},getHitSpan:function(t){},getHitEl:function(t){},setElement:function(t){this.el=t,this.hasDayInteractions&&(b(t),this.bindDayHandler("touchstart",this.dayTouchStart),this.bindDayHandler("mousedown",this.dayMousedown)),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(e,n){var i=this;this.el.on(e,function(e){if(!t(e.target).is(i.segSelector+","+i.segSelector+" *,.fc-more,a[data-goto]"))return n.call(i,e)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(t(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},dayMousedown:function(t){this.isIgnoringMouse||this.dayDragListener.startInteraction(t,{})},dayTouchStart:function(t){var e=this.view;(e.isSelected||e.selectedEvent)&&this.tempIgnoreMouse(),this.dayDragListener.startInteraction(t,{delay:this.view.opt("longPressDelay")})},buildDayDragListener:function(){var t,e,n=this,i=this.view,r=i.opt("selectable"),l=new fe(this,{scroll:i.opt("dragScroll"),interactionStart:function(){t=l.origHit,e=null},dragStart:function(){i.unselect()},hitOver:function(i,o,l){l&&(o||(t=null),r&&(e=n.computeSelection(n.getHitSpan(l),n.getHitSpan(i)),e?n.renderSelection(e):e===!1&&s()))},hitOut:function(){t=null,e=null,n.unrenderSelection()},hitDone:function(){o()},interactionEnd:function(r,s){s||(t&&!n.isIgnoringMouse&&i.triggerDayClick(n.getHitSpan(t),n.getHitEl(t),r),e&&i.reportSelection(e,r))}});return l},clearDragListeners:function(){this.dayDragListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(t,e){var n=this.fabricateHelperEvent(t,e);return this.renderHelper(n,e)},fabricateHelperEvent:function(t,e){var n=e?Z(e.event):{};return n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDates(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),n},renderHelper:function(t,e){},unrenderHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(t,e){var n=this.computeSelectionSpan(t,e);return!(n&&!this.view.calendar.isSelectionSpanAllowed(n))&&n},computeSelectionSpan:function(t,e){var n=[t.start,t.end,e.start,e.end];return n.sort(st),{start:n[0].clone(),end:n[3].clone()}},renderHighlight:function(t){this.renderFill("highlight",this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},renderFill:function(t,e){},unrenderFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;i<n.length;i++)o+=this.fillSegHtml(e,n[i]);t(o).each(function(e,i){var o=n[e],a=t(i);s&&(a=s.call(r,o,a)),a&&(a=t(a),a.is(r.fillSegTag)&&(o.el=a,l.push(o)))})}return l},fillSegTag:"div",fillSegHtml:function(t,e){var n=this[t+"SegClasses"],i=this[t+"SegCss"],r=n?n.call(this,e):[],s=nt(i?i.call(this,e):{});return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(s?' style="'+s+'"':"")+" />"},getDayClasses:function(t){var e=this.view,n=e.calendar.getNow(),i=["fc-"+$t[t.day()]];return 1==e.intervalDuration.as("months")&&t.month()!=e.intervalStart.month()&&i.push("fc-other-month"),t.isSame(n,"day")?i.push("fc-today",e.highlightStateClass):t<n?i.push("fc-past"):i.push("fc-future"),i}});pe.mixin({segSelector:".fc-event-container > *",mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(t){var e,n=[],i=[];for(e=0;e<t.length;e++)(Tt(t[e])?n:i).push(t[e]);this.segs=[].concat(this.renderBgEvents(n),this.renderFgEvents(i))},renderBgEvents:function(t){var e=this.eventsToSegs(t);return this.renderBgSegs(e)||e},renderFgEvents:function(t){var e=this.eventsToSegs(t);return this.renderFgSegs(e)||e},unrenderEvents:function(){this.handleSegMouseout(),this.clearDragListeners(),this.unrenderFgSegs(),this.unrenderBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(t){},unrenderFgSegs:function(){},renderFgSegEls:function(e,n){var i,r=this.view,s="",o=[];if(e.length){for(i=0;i<e.length;i++)s+=this.fgSegHtml(e[i],n);t(s).each(function(n,i){var s=e[n],l=r.resolveEventEl(s.event,t(i));l&&(l.data("fc-seg",s),s.el=l,o.push(s))})}return o},fgSegHtml:function(t,e){},renderBgSegs:function(t){return this.renderFill("bgEvent",t)},unrenderBgSegs:function(){this.unrenderFill("bgEvent")},bgEventSegEl:function(t,e){return this.view.resolveEventEl(t.event,e)},bgEventSegClasses:function(t){var e=t.event,n=e.source||{};return["fc-bgevent"].concat(e.className,n.className||[])},bgEventSegCss:function(t){return{"background-color":this.getSegSkinCss(t)["background-color"]}},businessHoursSegClasses:function(t){return["fc-nonbusiness","fc-bgevent"]},buildBusinessHourSegs:function(e){var n=this.view.calendar.getCurrentBusinessHourEvents(e);return!n.length&&this.view.calendar.options.businessHours&&(n=[t.extend({},Re,{start:this.view.end,end:this.view.end,dow:null})]),this.eventsToSegs(n)},bindSegHandlers:function(){this.bindSegHandlersToEl(this.el)},bindSegHandlersToEl:function(t){this.bindSegHandlerToEl(t,"touchstart",this.handleSegTouchStart),this.bindSegHandlerToEl(t,"touchend",this.handleSegTouchEnd),this.bindSegHandlerToEl(t,"mouseenter",this.handleSegMouseover),this.bindSegHandlerToEl(t,"mouseleave",this.handleSegMouseout),this.bindSegHandlerToEl(t,"mousedown",this.handleSegMousedown),this.bindSegHandlerToEl(t,"click",this.handleSegClick)},bindSegHandlerToEl:function(e,n,i){var r=this;e.on(n,this.segSelector,function(e){var n=t(this).data("fc-seg");if(n&&!r.isDraggingSeg&&!r.isResizingSeg)return i.call(r,n,e)})},handleSegClick:function(t,e){var n=this.view.trigger("eventClick",t.el[0],t.event,e);n===!1&&e.preventDefault()},handleSegMouseover:function(t,e){this.isIgnoringMouse||this.mousedOverSeg||(this.mousedOverSeg=t,this.view.isEventResizable(t.event)&&t.el.addClass("fc-allow-mouse-resize"),this.view.trigger("eventMouseover",t.el[0],t.event,e))},handleSegMouseout:function(t,e){e=e||{},this.mousedOverSeg&&(t=t||this.mousedOverSeg,this.mousedOverSeg=null,this.view.isEventResizable(t.event)&&t.el.removeClass("fc-allow-mouse-resize"),this.view.trigger("eventMouseout",t.el[0],t.event,e))},handleSegMousedown:function(t,e){var n=this.startSegResize(t,e,{distance:5});!n&&this.view.isEventDraggable(t.event)&&this.buildSegDragListener(t).startInteraction(e,{distance:5})},handleSegTouchStart:function(t,e){var n,i=this.view,r=t.event,s=i.isEventSelected(r),o=i.isEventDraggable(r),l=i.isEventResizable(r),a=!1;s&&l&&(a=this.startSegResize(t,e)),a||!o&&!l||(n=o?this.buildSegDragListener(t):this.buildSegSelectListener(t),n.startInteraction(e,{delay:s?0:this.view.opt("longPressDelay")})),this.tempIgnoreMouse()},handleSegTouchEnd:function(t,e){this.tempIgnoreMouse()},startSegResize:function(e,n,i){return!!t(n.target).is(".fc-resizer")&&(this.buildSegResizeListener(e,t(n.target).is(".fc-start-resizer")).startInteraction(n,i),!0)},buildSegDragListener:function(t){var e,n,i,r=this,l=this.view,a=l.calendar,u=t.el,d=t.event;if(this.segDragListener)return this.segDragListener;var c=this.segDragListener=new fe(l,{scroll:l.opt("dragScroll"),subjectEl:u,subjectCenter:!0,interactionStart:function(i){t.component=r,e=!1,n=new ge(t.el,{additionalClass:"fc-dragging",parentEl:l.el,opacity:c.isTouch?null:l.opt("dragOpacity"),revertDuration:l.opt("dragRevertDuration"),zIndex:2}),n.hide(),n.start(i)},dragStart:function(n){c.isTouch&&!l.isEventSelected(d)&&l.selectEvent(d),e=!0,r.handleSegMouseout(t,n),r.segDragStart(t,n),l.hideEvent(d)},hitOver:function(e,o,u){var h;t.hit&&(u=t.hit),i=r.computeEventDrop(u.component.getHitSpan(u),e.component.getHitSpan(e),d),i&&!a.isEventSpanAllowed(r.eventToSpan(i),d)&&(s(),i=null),i&&(h=l.renderDrag(i,t))?(h.addClass("fc-dragging"),c.isTouch||r.applyDragOpacity(h),n.hide()):n.show(),o&&(i=null)},hitOut:function(){l.unrenderDrag(),n.show(),i=null},hitDone:function(){o()},interactionEnd:function(s){delete t.component,n.stop(!i,function(){e&&(l.unrenderDrag(),l.showEvent(d),r.segDragStop(t,s)),i&&l.reportEventDrop(d,i,this.largeUnit,u,s)}),r.segDragListener=null}});return c},buildSegSelectListener:function(t){var e=this,n=this.view,i=t.event;if(this.segDragListener)return this.segDragListener;var r=this.segDragListener=new he({dragStart:function(t){r.isTouch&&!n.isEventSelected(i)&&n.selectEvent(i)},interactionEnd:function(t){e.segDragListener=null}});return r},segDragStart:function(t,e){this.isDraggingSeg=!0,this.view.trigger("eventDragStart",t.el[0],t.event,e,{})},segDragStop:function(t,e){this.isDraggingSeg=!1,this.view.trigger("eventDragStop",t.el[0],t.event,e,{})},computeEventDrop:function(t,e,n){var i,r,s=this.view.calendar,o=t.start,l=e.start;return o.hasTime()===l.hasTime()?(i=this.diffDates(l,o),n.allDay&&W(i)?(r={start:n.start.clone(),end:s.getEventEnd(n),allDay:!1},s.normalizeEventTimes(r)):r=Ht(n),r.start.add(i),r.end&&r.end.add(i)):r={start:l.clone(),end:null,allDay:!l.hasTime()},r},applyDragOpacity:function(t){var e=this.view.opt("dragOpacity");null!=e&&t.css("opacity",e)},externalDragStart:function(e,n){var i,r,s=this.view;s.opt("droppable")&&(i=t((n?n.item:null)||e.target),r=s.opt("dropAccept"),(t.isFunction(r)?r.call(i[0],i):i.is(r))&&(this.isDraggingExternal||this.listenToExternalDrag(i,e,n)))},listenToExternalDrag:function(t,e,n){var i,r=this,l=this.view.calendar,a=Mt(t),u=r.externalDragListener=new fe(this,{interactionStart:function(){r.isDraggingExternal=!0},hitOver:function(t){i=r.computeExternalDrop(t.component.getHitSpan(t),a),i&&!l.isExternalSpanAllowed(r.eventToSpan(i),i,a.eventProps)&&(s(),i=null),i&&r.renderDrag(i)},hitOut:function(){i=null},hitDone:function(){o(),r.unrenderDrag()},interactionEnd:function(e){i&&r.view.reportExternalDrop(a,i,t,e,n),r.isDraggingExternal=!1,r.externalDragListener=null}});u.startDrag(e)},computeExternalDrop:function(t,e){var n=this.view.calendar,i={start:n.applyTimezone(t.start),end:null};return e.startTime&&!i.start.hasTime()&&i.start.time(e.startTime),e.duration&&(i.end=i.start.clone().add(e.duration)),i},renderDrag:function(t,e){},unrenderDrag:function(){},buildSegResizeListener:function(t,e){var n,i,r=this,l=this.view,a=l.calendar,u=t.el,d=t.event,c=a.getEventEnd(d),h=this.segResizeListener=new fe(this,{scroll:l.opt("dragScroll"),subjectEl:u,interactionStart:function(){n=!1},dragStart:function(e){n=!0,r.handleSegMouseout(t,e),r.segResizeStart(t,e)},hitOver:function(n,o,u){var h=r.getHitSpan(u),f=r.getHitSpan(n);i=e?r.computeEventStartResize(h,f,d):r.computeEventEndResize(h,f,d),i&&(a.isEventSpanAllowed(r.eventToSpan(i),d)?i.start.isSame(d.start.clone().stripZone())&&i.end.isSame(c.clone().stripZone())&&(i=null):(s(),i=null)),i&&(l.hideEvent(d),r.renderEventResize(i,t))},hitOut:function(){i=null},hitDone:function(){r.unrenderEventResize(),l.showEvent(d),o()},interactionEnd:function(e){n&&r.segResizeStop(t,e),i&&l.reportEventResize(d,i,this.largeUnit,u,e),r.segResizeListener=null}});return h},segResizeStart:function(t,e){this.isResizingSeg=!0,this.view.trigger("eventResizeStart",t.el[0],t.event,e,{})},segResizeStop:function(t,e){this.isResizingSeg=!1,this.view.trigger("eventResizeStop",t.el[0],t.event,e,{})},computeEventStartResize:function(t,e,n){return this.computeEventResize("start",t,e,n)},computeEventEndResize:function(t,e,n){return this.computeEventResize("end",t,e,n)},computeEventResize:function(t,e,n,i){var r,s,o=this.view.calendar,l=this.diffDates(n[t],e[t]);return r={start:i.start.clone(),end:o.getEventEnd(i),allDay:i.allDay},r.allDay&&W(l)&&(r.allDay=!1,o.normalizeEventTimes(r)),r[t].add(l),r.start.isBefore(r.end)||(s=this.minResizeDuration||(i.allDay?o.defaultAllDayEventDuration:o.defaultTimedEventDuration),"start"==t?r.start=r.end.clone().subtract(s):r.end=r.start.clone().add(s)),r},renderEventResize:function(t,e){},unrenderEventResize:function(){},getEventTimeText:function(t,e,n){return null==e&&(e=this.eventTimeFormat),null==n&&(n=this.displayEventEnd),this.displayEventTime&&t.start.hasTime()?n&&t.end?this.view.formatRange(t,e):t.start.format(e):""},getSegClasses:function(t,e,n){var i=this.view,r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(this.getSegCustomClasses(t));return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),i.isEventSelected(t.event)&&r.push("fc-selected"),r},getSegCustomClasses:function(t){var e=t.event;return[].concat(e.className,e.source?e.source.className:[])},getSegSkinCss:function(t){return{"background-color":this.getSegBackgroundColor(t),"border-color":this.getSegBorderColor(t),color:this.getSegTextColor(t)}},getSegBackgroundColor:function(t){return t.event.backgroundColor||t.event.color||this.getSegDefaultBackgroundColor(t)},getSegDefaultBackgroundColor:function(t){var e=t.event.source||{};return e.backgroundColor||e.color||this.view.opt("eventBackgroundColor")||this.view.opt("eventColor")},getSegBorderColor:function(t){return t.event.borderColor||t.event.color||this.getSegDefaultBorderColor(t)},getSegDefaultBorderColor:function(t){var e=t.event.source||{};return e.borderColor||e.color||this.view.opt("eventBorderColor")||this.view.opt("eventColor")},getSegTextColor:function(t){return t.event.textColor||this.getSegDefaultTextColor(t)},getSegDefaultTextColor:function(t){var e=t.event.source||{};return e.textColor||this.view.opt("eventTextColor")},eventToSegs:function(t){return this.eventsToSegs([t])},eventToSpan:function(t){return this.eventToSpans(t)[0]},eventToSpans:function(t){var e=this.eventToRange(t);return this.eventRangeToSpans(e,t)},eventsToSegs:function(e,n){var i=this,r=It(e),s=[];return t.each(r,function(t,e){var r,o=[];for(r=0;r<e.length;r++)o.push(i.eventToRange(e[r]));if(xt(e[0]))for(o=i.invertRanges(o),r=0;r<o.length;r++)s.push.apply(s,i.eventRangeToSegs(o[r],e[0],n));else for(r=0;r<o.length;r++)s.push.apply(s,i.eventRangeToSegs(o[r],e[r],n))}),s},eventToRange:function(t){var e=this.view.calendar,n=t.start.clone().stripZone(),i=(t.end?t.end.clone():e.getDefaultEventEnd(null!=t.allDay?t.allDay:!t.start.hasTime(),t.start)).stripZone();return e.localizeMoment(n),e.localizeMoment(i),{start:n,end:i}},eventRangeToSegs:function(t,e,n){var i,r=this.eventRangeToSpans(t,e),s=[];for(i=0;i<r.length;i++)s.push.apply(s,this.eventSpanToSegs(r[i],e,n));return s},eventRangeToSpans:function(e,n){return[t.extend({},e)]},eventSpanToSegs:function(t,e,n){var i,r,s=n?n(t):this.spanToSegs(t);for(i=0;i<s.length;i++)r=s[i],r.event=e,r.eventStartMS=+t.start,r.eventDurationMS=t.end-t.start;return s},invertRanges:function(t){var e,n,i=this.view,r=i.start.clone(),s=i.end.clone(),o=[],l=r;for(t.sort(kt),e=0;e<t.length;e++)n=t[e],n.start>l&&o.push({start:l,end:n.start}),l=n.end;return l<s&&o.push({start:l,end:s}),o},sortEventSegs:function(t){t.sort(lt(this,"compareEventSegs"))},compareEventSegs:function(t,e){return t.eventStartMS-e.eventStartMS||e.eventDurationMS-t.eventDurationMS||e.event.allDay-t.event.allDay||L(t.event,e.event,this.view.eventOrderSpecs)}}),jt.pluckEventDateProps=Ht,jt.isBgEvent=Tt,jt.dataAttrPrefix="";var ve=jt.DayTableMixin={breakOnWeeks:!1,dayDates:null,dayIndices:null,daysPerRow:null,rowCnt:null,colCnt:null,colHeadFormat:null,updateDayTable:function(){for(var t,e,n,i=this.view,r=this.start.clone(),s=-1,o=[],l=[];r.isBefore(this.end);)i.isHiddenDay(r)?o.push(s+.5):(s++,o.push(s),l.push(r.clone())),r.add(1,"days");if(this.breakOnWeeks){for(e=l[0].day(),t=1;t<l.length&&l[t].day()!=e;t++);n=Math.ceil(l.length/t)}else n=1,t=l.length;this.dayDates=l,this.dayIndices=o,this.daysPerRow=t,this.rowCnt=n,this.updateDayTableCols()},updateDayTableCols:function(){this.colCnt=this.computeColCnt(),this.colHeadFormat=this.view.opt("columnFormat")||this.computeColHeadFormat()},computeColCnt:function(){return this.daysPerRow},getCellDate:function(t,e){return this.dayDates[this.getCellDayIndex(t,e)].clone()},getCellRange:function(t,e){var n=this.getCellDate(t,e),i=n.clone().add(1,"days");return{start:n,end:i}},getCellDayIndex:function(t,e){return t*this.daysPerRow+this.getColDayIndex(e)},getColDayIndex:function(t){return this.isRTL?this.colCnt-1-t:t},getDateDayIndex:function(t){var e=this.dayIndices,n=t.diff(this.start,"days");return n<0?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(t){var e,n,i,r,s,o=this.daysPerRow,l=this.view.computeDayRange(t),a=this.getDateDayIndex(l.start),u=this.getDateDayIndex(l.end.clone().subtract(1,"days")),d=[];for(e=0;e<this.rowCnt;e++)n=e*o,i=n+o-1,r=Math.max(a,n),s=Math.min(u,i),r=Math.ceil(r),s=Math.floor(s),r<=s&&d.push({row:e,firstRowDayIndex:r-n,lastRowDayIndex:s-n,isStart:r===a,isEnd:s===u});return d},sliceRangeByDay:function(t){var e,n,i,r,s,o,l=this.daysPerRow,a=this.view.computeDayRange(t),u=this.getDateDayIndex(a.start),d=this.getDateDayIndex(a.end.clone().subtract(1,"days")),c=[];for(e=0;e<this.rowCnt;e++)for(n=e*l,i=n+l-1,r=n;r<=i;r++)s=Math.max(u,r),o=Math.min(d,r),s=Math.ceil(s),o=Math.floor(o),s<=o&&c.push({row:e,firstRowDayIndex:s-n,lastRowDayIndex:o-n,isStart:s===u,isEnd:o===d});return c; -},renderHeadHtml:function(){var t=this.view;return'<div class="fc-row '+t.widgetHeaderClass+'"><table><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},renderHeadDateCellsHtml:function(){var t,e,n=[];for(t=0;t<this.colCnt;t++)e=this.getCellDate(0,t),n.push(this.renderHeadDateCellHtml(e));return n.join("")},renderHeadDateCellHtml:function(t,e,n){var i=this.view;return'<th class="fc-day-header '+i.widgetHeaderClass+" fc-"+$t[t.day()]+'"'+(1===this.rowCnt?' data-date="'+t.format("YYYY-MM-DD")+'"':"")+(e>1?' colspan="'+e+'"':"")+(n?" "+n:"")+">"+i.buildGotoAnchorHtml({date:t,forceOff:this.rowCnt>1||1===this.colCnt},tt(t.format(this.colHeadFormat)))+"</th>"},renderBgTrHtml:function(t){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):"")+"</tr>"},renderBgIntroHtml:function(t){return this.renderIntroHtml()},renderBgCellsHtml:function(t){var e,n,i=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),i.push(this.renderBgCellHtml(n));return i.join("")},renderBgCellHtml:function(t,e){var n=this.view,i=this.getDayClasses(t);return i.unshift("fc-day",n.widgetContentClass),'<td class="'+i.join(" ")+'" data-date="'+t.format("YYYY-MM-DD")+'"'+(e?" "+e:"")+"></td>"},renderIntroHtml:function(){},bookendCells:function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))}},me=jt.DayGrid=pe.extend(ve,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(t){var e,n,i=this.view,r=this.rowCnt,s=this.colCnt,o="";for(e=0;e<r;e++)o+=this.renderDayRowHtml(e,t);for(this.el.html(o),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day"),this.rowCoordCache=new ce({els:this.rowEls,isVertical:!0}),this.colCoordCache=new ce({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),e=0;e<r;e++)for(n=0;n<s;n++)i.trigger("dayRender",null,this.getCellDate(e,n),this.getCellEl(e,n))},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var t=this.buildBusinessHourSegs(!0);this.renderFill("businessHours",t,"bgevent")},unrenderBusinessHours:function(){this.unrenderFill("businessHours")},renderDayRowHtml:function(t,e){var n=this.view,i=["fc-row","fc-week",n.widgetContentClass];return e&&i.push("fc-rigid"),'<div class="'+i.join(" ")+'"><div class="fc-bg"><table>'+this.renderBgTrHtml(t)+'</table></div><div class="fc-content-skeleton"><table>'+(this.numbersVisible?"<thead>"+this.renderNumberTrHtml(t)+"</thead>":"")+"</table></div></div>"},renderNumberTrHtml:function(t){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):"")+"</tr>"},renderNumberIntroHtml:function(t){return this.renderIntroHtml()},renderNumberCellsHtml:function(t){var e,n,i=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),i.push(this.renderNumberCellHtml(n));return i.join("")},renderNumberCellHtml:function(t){var e,n,i="";return this.view.dayNumbersVisible||this.view.cellWeekNumbersVisible?(e=this.getDayClasses(t),e.unshift("fc-day-top"),this.view.cellWeekNumbersVisible&&(n="ISO"===t._locale._fullCalendar_weekCalc?1:t._locale.firstDayOfWeek()),i+='<td class="'+e.join(" ")+'" data-date="'+t.format()+'">',this.view.cellWeekNumbersVisible&&t.day()==n&&(i+=this.view.buildGotoAnchorHtml({date:t,type:"week"},{class:"fc-week-number"},t.format("w"))),this.view.dayNumbersVisible&&(i+=this.view.buildGotoAnchorHtml(t,{class:"fc-day-number"},t.date())),i+="</td>"):"<td/>"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(t){var e,n,i=this.sliceRangeByRow(t);for(e=0;e<i.length;e++)n=i[e],this.isRTL?(n.leftCol=this.daysPerRow-1-n.lastRowDayIndex,n.rightCol=this.daysPerRow-1-n.firstRowDayIndex):(n.leftCol=n.firstRowDayIndex,n.rightCol=n.lastRowDayIndex);return i},prepareHits:function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},releaseHits:function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},queryHit:function(t,e){if(this.colCoordCache.isLeftInBounds(t)&&this.rowCoordCache.isTopInBounds(e)){var n=this.colCoordCache.getHorizontalIndex(t),i=this.rowCoordCache.getVerticalIndex(e);if(null!=i&&null!=n)return this.getCellHit(i,n)}},getHitSpan:function(t){return this.getCellRange(t.row,t.col)},getHitEl:function(t){return this.getCellEl(t.row,t.col)},getCellHit:function(t,e){return{row:t,col:e,component:this,left:this.colCoordCache.getLeftOffset(e),right:this.colCoordCache.getRightOffset(e),top:this.rowCoordCache.getTopOffset(t),bottom:this.rowCoordCache.getBottomOffset(t)}},getCellEl:function(t,e){return this.cellEls.eq(t*this.colCnt+e)},renderDrag:function(t,e){if(this.renderHighlight(this.eventToSpan(t)),e&&e.component!==this)return this.renderEventLocationHelper(t,e)},unrenderDrag:function(){this.unrenderHighlight(),this.unrenderHelper()},renderEventResize:function(t,e){return this.renderHighlight(this.eventToSpan(t)),this.renderEventLocationHelper(t,e)},unrenderEventResize:function(){this.unrenderHighlight(),this.unrenderHelper()},renderHelper:function(e,n){var i,r=[],s=this.eventToSegs(e);return s=this.renderFgSegEls(s),i=this.renderSegRows(s),this.rowEls.each(function(e,s){var o,l=t(s),a=t('<div class="fc-helper-skeleton"><table/></div>');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n,i){var r,s,o,l=[];for(n=this.renderFillSegEls(e,n),r=0;r<n.length;r++)s=n[r],o=this.renderFillRow(e,s,i),this.rowEls.eq(s.row).append(o),l.push(o[0]);return this.elsByFill[e]=t(l),n},renderFillRow:function(e,n,i){var r,s,o=this.colCnt,l=n.leftCol,a=n.rightCol+1;return i=i||e.toLowerCase(),r=t('<div class="fc-'+i+'-skeleton"><table><tr/></table></div>'),s=r.find("tr"),l>0&&s.append('<td colspan="'+l+'"/>'),s.append(n.el.attr("colspan",a-l)),a<o&&s.append('<td colspan="'+(o-a)+'"/>'),this.bookendCells(s),r}});me.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),pe.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return pe.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return pe.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},unrenderFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;n<e.length;n++)i.push(this.renderSegRow(n,e[n]));return i},fgSegHtml:function(t,e){var n,i,r=this.view,s=t.event,o=r.isEventDraggable(s),l=!e&&s.allDay&&t.isStart&&r.isEventResizableFromStart(s),a=!e&&s.allDay&&t.isEnd&&r.isEventResizableFromEnd(s),u=this.getSegClasses(t,o,l||a),d=nt(this.getSegSkinCss(t)),c="";return u.unshift("fc-day-grid-event","fc-h-event"),t.isStart&&(n=this.getEventTimeText(s),n&&(c='<span class="fc-time">'+tt(n)+"</span>")),i='<span class="fc-title">'+(tt(s.title||"")||" ")+"</span>",'<a class="'+u.join(" ")+'"'+(s.url?' href="'+tt(s.url)+'"':"")+(d?' style="'+d+'"':"")+'><div class="fc-content">'+(this.isRTL?i+" "+c:c+" "+i)+"</div>"+(l?'<div class="fc-resizer fc-start-resizer" />':"")+(a?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},renderSegRow:function(e,n){function i(e){for(;o<e;)d=(m[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=t("<td/>"),l.append(d)),v[r][o]=d,m[r][o]=d,o++}var r,s,o,l,a,u,d,c=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t("<tbody/>"),p=[],v=[],m=[];for(r=0;r<f;r++){if(s=h[r],o=0,l=t("<tr/>"),p.push([]),v.push([]),m.push([]),s)for(a=0;a<s.length;a++){for(u=s[a],i(u.leftCol),d=t('<td class="fc-event-container"/>').append(u.el),u.leftCol!=u.rightCol?d.attr("colspan",u.rightCol-u.leftCol+1):m[r][o]=d;o<=u.rightCol;)v[r][o]=d,p[r][o]=u,o++;l.append(d)}i(c),this.bookendCells(l),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:v,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(this.sortEventSegs(t),e=0;e<t.length;e++){for(n=t[e],i=0;i<r.length&&Lt(n,r[i]);i++);n.level=i,(r[i]||(r[i]=[])).push(n)}for(i=0;i<r.length;i++)r[i].sort(Bt);return r},groupSegRows:function(t){var e,n=[];for(e=0;e<this.rowCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].row].push(t[e]);return n}}),me.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(t){var e,n,i=this.rowStructs||[];for(e=0;e<i.length;e++)this.unlimitRow(e),n=!!t&&("number"==typeof t?t:this.computeRowLevelLimit(e)),n!==!1&&this.limitRow(e,n)},computeRowLevelLimit:function(e){function n(e,n){s=Math.max(s,t(n).outerHeight())}var i,r,s,o=this.rowEls.eq(e),l=o.height(),a=this.rowStructs[e].tbodyEl.children();for(i=0;i<a.length;i++)if(r=a.eq(i).removeClass("fc-limited"),s=0,r.find("> td > :first-child").each(n),r.position().top+s>l)return i;return!1},limitRow:function(e,n){function i(i){for(;D<i;)u=S.getCellSegs(e,D,n),u.length&&(h=s[n-1][D],y=S.renderMoreLink(e,D,u),m=t("<div/>").append(y),h.append(m),E.push(m[0])),D++}var r,s,o,l,a,u,d,c,h,f,g,p,v,m,y,S=this,w=this.rowStructs[e],E=[],D=0;if(n&&n<w.segLevels.length){for(r=w.segLevels[n-1],s=w.cellMatrix,o=w.tbodyEl.children().slice(n).addClass("fc-limited").get(),l=0;l<r.length;l++){for(a=r[l],i(a.leftCol),c=[],d=0;D<=a.rightCol;)u=this.getCellSegs(e,D,n),c.push(u),d+=u.length,D++;if(d){for(h=s[n-1][a.leftCol],f=h.attr("rowspan")||1,g=[],p=0;p<c.length;p++)v=t('<td class="fc-more-cell"/>').attr("rowspan",f),u=c[p],y=this.renderMoreLink(e,a.leftCol+p,[a].concat(u)),m=t("<div/>").append(y),v.append(m),g.push(v[0]),E.push(v[0]);h.addClass("fc-limited").after(t(g)),o.push(h[0])}}i(this.colCnt),w.moreEls=t(E),w.limitedEls=t(o)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n,i){var r=this,s=this.view;return t('<a class="fc-more"/>').text(this.getMoreLinkText(i.length)).on("click",function(o){var l=s.opt("eventLimitClick"),a=r.getCellDate(e,n),u=t(this),d=r.getCellEl(e,n),c=r.getCellSegs(e,n),h=r.resliceDaySegs(c,a),f=r.resliceDaySegs(i,a);"function"==typeof l&&(l=s.trigger("eventLimitClick",null,{date:a,dayEl:d,moreEl:u,segs:h,hiddenSegs:f},o)),"popover"===l?r.showSegPopover(e,n,u,h):"string"==typeof l&&s.calendar.zoomTo(a,l)})},showSegPopover:function(t,e,n,i){var r,s,o=this,l=this.view,a=n.parent();r=1==this.rowCnt?l.el:this.rowEls.eq(t),s={className:"fc-more-popover",content:this.renderSegPopoverContent(t,e,i),parentEl:this.view.el,top:r.offset().top,autoHide:!0,viewportConstrain:l.opt("popoverViewportConstrain"),hide:function(){o.segPopover.removeElement(),o.segPopover=null,o.popoverSegs=null}},this.isRTL?s.right=a.offset().left+a.outerWidth()+1:s.left=a.offset().left-1,this.segPopover=new de(s),this.segPopover.show(),this.bindSegHandlersToEl(this.segPopover.el)},renderSegPopoverContent:function(e,n,i){var r,s=this.view,o=s.opt("theme"),l=this.getCellDate(e,n).format(s.opt("dayPopoverFormat")),a=t('<div class="fc-header '+s.widgetHeaderClass+'"><span class="fc-close '+(o?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span><span class="fc-title">'+tt(l)+'</span><div class="fc-clear"/></div><div class="fc-body '+s.widgetContentClass+'"><div class="fc-event-container"></div></div>'),u=a.find(".fc-event-container");for(i=this.renderFgSegEls(i,!0),this.popoverSegs=i,r=0;r<i.length;r++)this.prepareHits(),i[r].hit=this.getCellHit(e,n),this.releaseHits(),u.append(i[r].el);return a},resliceDaySegs:function(e,n){var i=t.map(e,function(t){return t.event}),r=n.clone(),s=r.clone().add(1,"days"),o={start:r,end:s};return e=this.eventsToSegs(i,function(t){var e=F(t,o);return e?[e]:[]}),this.sortEventSegs(e),e},getMoreLinkText:function(t){var e=this.view.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},getCellSegs:function(t,e,n){for(var i,r=this.rowStructs[t].segMatrix,s=n||0,o=[];s<r.length;)i=r[s][e],i&&o.push(i),s++;return o}});var ye=jt.TimeGrid=pe.extend(ve,{slotDuration:null,snapDuration:null,snapsPerSlot:null,minTime:null,maxTime:null,labelFormat:null,labelInterval:null,colEls:null,slatContainerEl:null,slatEls:null,nowIndicatorEls:null,colCoordCache:null,slatCoordCache:null,constructor:function(){pe.apply(this,arguments),this.processOptions()},renderDates:function(){this.el.html(this.renderHtml()),this.colEls=this.el.find(".fc-day"),this.slatContainerEl=this.el.find(".fc-slats"),this.slatEls=this.slatContainerEl.find("tr"),this.colCoordCache=new ce({els:this.colEls,isHorizontal:!0}),this.slatCoordCache=new ce({els:this.slatEls,isVertical:!0}),this.renderContentSkeleton()},renderHtml:function(){return'<div class="fc-bg"><table>'+this.renderBgTrHtml(0)+'</table></div><div class="fc-slats"><table>'+this.renderSlatRowHtml()+"</table></div>"},renderSlatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=e.duration(+this.minTime);l<this.maxTime;)t=this.start.clone().time(l),n=ot(_(l,this.labelInterval)),i='<td class="fc-axis fc-time '+r.widgetContentClass+'" '+r.axisStyleAttr()+">"+(n?"<span>"+tt(t.format(this.labelFormat))+"</span>":"")+"</td>",o+='<tr data-time="'+t.format("HH:mm:ss")+'"'+(n?"":' class="fc-minor"')+">"+(s?"":i)+'<td class="'+r.widgetContentClass+'"/>'+(s?i:"")+"</tr>",l.add(this.slotDuration);return o},processOptions:function(){var n,i=this.view,r=i.opt("slotDuration"),s=i.opt("snapDuration");r=e.duration(r),s=s?e.duration(s):r,this.slotDuration=r,this.snapDuration=s,this.snapsPerSlot=r/s,this.minResizeDuration=s,this.minTime=e.duration(i.opt("minTime")),this.maxTime=e.duration(i.opt("maxTime")),n=i.opt("slotLabelFormat"),t.isArray(n)&&(n=n[n.length-1]),this.labelFormat=n||i.opt("smallTimeFormat"),n=i.opt("slotLabelInterval"),this.labelInterval=n?e.duration(n):this.computeLabelInterval(r)},computeLabelInterval:function(t){var n,i,r;for(n=Ne.length-1;n>=0;n--)if(i=e.duration(Ne[n]),r=_(i,t),ot(r)&&r>1)return i;return e.duration(t)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(t,e){var n=this.snapsPerSlot,i=this.colCoordCache,r=this.slatCoordCache;if(i.isLeftInBounds(t)&&r.isTopInBounds(e)){var s=i.getHorizontalIndex(t),o=r.getVerticalIndex(e);if(null!=s&&null!=o){var l=r.getTopOffset(o),a=r.getHeight(o),u=(e-l)/a,d=Math.floor(u*n),c=o*n+d,h=l+d/n*a,f=l+(d+1)/n*a;return{col:s,snap:c,component:this,left:i.getLeftOffset(s),right:i.getRightOffset(s),top:h,bottom:f}}}},getHitSpan:function(t){var e,n=this.getCellDate(0,t.col),i=this.computeSnapTime(t.snap);return n.time(i),e=n.clone().add(this.snapDuration),{start:n,end:e}},getHitEl:function(t){return this.colEls.eq(t.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},spanToSegs:function(t){var e,n=this.sliceRangeByTimes(t);for(e=0;e<n.length;e++)this.isRTL?n[e].col=this.daysPerRow-1-n[e].dayIndex:n[e].col=n[e].dayIndex;return n},sliceRangeByTimes:function(t){var e,n,i,r,s=[];for(n=0;n<this.daysPerRow;n++)i=this.dayDates[n].clone(),r={start:i.clone().time(this.minTime),end:i.clone().time(this.maxTime)},e=F(t,r),e&&(e.dayIndex=n,s.push(e));return s},updateSize:function(t){this.slatCoordCache.build(),t&&this.updateSegVerticals([].concat(this.fgSegs||[],this.bgSegs||[],this.businessSegs||[]))},getTotalSlatHeight:function(){return this.slatContainerEl.outerHeight()},computeDateTop:function(t,n){return this.computeTimeTop(e.duration(t-n.clone().stripTime()))},computeTimeTop:function(t){var e,n,i=this.slatEls.length,r=(t-this.minTime)/this.slotDuration;return r=Math.max(0,r),r=Math.min(i,r),e=Math.floor(r),e=Math.min(e,i-1),n=r-e,this.slatCoordCache.getTopPosition(e)+this.slatCoordCache.getHeight(e)*n},renderDrag:function(t,e){return e?this.renderEventLocationHelper(t,e):void this.renderHighlight(this.eventToSpan(t))},unrenderDrag:function(){this.unrenderHelper(),this.unrenderHighlight()},renderEventResize:function(t,e){return this.renderEventLocationHelper(t,e)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(t,e){return this.renderHelperSegs(this.eventToSegs(t),e)},unrenderHelper:function(){this.unrenderHelperSegs()},renderBusinessHours:function(){this.renderBusinessSegs(this.buildBusinessHourSegs())},unrenderBusinessHours:function(){this.unrenderBusinessSegs()},getNowIndicatorUnit:function(){return"minute"},renderNowIndicator:function(e){var n,i=this.spanToSegs({start:e,end:e}),r=this.computeDateTop(e,e),s=[];for(n=0;n<i.length;n++)s.push(t('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",r).appendTo(this.colContainerEls.eq(i[n].col))[0]);i.length>0&&s.push(t('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",r).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=t(s)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderEventLocationHelper(t):this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(t){this.renderHighlightSegs(this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});ye.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var e,n,i="";for(e=0;e<this.colCnt;e++)i+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';n=t('<div class="fc-content-skeleton"><table><tr>'+i+"</tr></table></div>"),this.colContainerEls=n.find(".fc-content-col"),this.helperContainerEls=n.find(".fc-helper-container"),this.fgContainerEls=n.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=n.find(".fc-bgevent-container"),this.highlightContainerEls=n.find(".fc-highlight-container"),this.businessContainerEls=n.find(".fc-business-container"),this.bookendCells(n.find("tr")),this.el.append(n)},renderFgSegs:function(t){return t=this.renderFgSegsIntoContainers(t,this.fgContainerEls),this.fgSegs=t,t},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(e,n){var i,r,s,o=[];for(e=this.renderFgSegsIntoContainers(e,this.helperContainerEls),i=0;i<e.length;i++)r=e[i],n&&n.col===r.col&&(s=n.el,r.el.css({left:s.css("left"),right:s.css("right"),"margin-left":s.css("margin-left"),"margin-right":s.css("margin-right")})),o.push(r.el[0]);return this.helperSegs=e,t(o)},unrenderHelperSegs:function(){this.unrenderNamedSegs("helperSegs")},renderBgSegs:function(t){return t=this.renderFillSegEls("bgEvent",t),this.updateSegVerticals(t),this.attachSegsByCol(this.groupSegsByCol(t),this.bgContainerEls),this.bgSegs=t,t},unrenderBgSegs:function(){this.unrenderNamedSegs("bgSegs")},renderHighlightSegs:function(t){t=this.renderFillSegEls("highlight",t),this.updateSegVerticals(t),this.attachSegsByCol(this.groupSegsByCol(t),this.highlightContainerEls),this.highlightSegs=t},unrenderHighlightSegs:function(){this.unrenderNamedSegs("highlightSegs")},renderBusinessSegs:function(t){t=this.renderFillSegEls("businessHours",t),this.updateSegVerticals(t),this.attachSegsByCol(this.groupSegsByCol(t),this.businessContainerEls),this.businessSegs=t},unrenderBusinessSegs:function(){this.unrenderNamedSegs("businessSegs")},groupSegsByCol:function(t){var e,n=[];for(e=0;e<this.colCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].col].push(t[e]);return n},attachSegsByCol:function(t,e){var n,i,r;for(n=0;n<this.colCnt;n++)for(i=t[n],r=0;r<i.length;r++)e.eq(n).append(i[r].el)},unrenderNamedSegs:function(t){var e,n=this[t];if(n){for(e=0;e<n.length;e++)n[e].el.remove();this[t]=null}},renderFgSegsIntoContainers:function(t,e){var n,i;for(t=this.renderFgSegEls(t),n=this.groupSegsByCol(t),i=0;i<this.colCnt;i++)this.updateFgSegCoords(n[i]);return this.attachSegsByCol(n,e),t},fgSegHtml:function(t,e){var n,i,r,s=this.view,o=t.event,l=s.isEventDraggable(o),a=!e&&t.isStart&&s.isEventResizableFromStart(o),u=!e&&t.isEnd&&s.isEventResizableFromEnd(o),d=this.getSegClasses(t,l,a||u),c=nt(this.getSegSkinCss(t));return d.unshift("fc-time-grid-event","fc-v-event"),s.isMultiDayEvent(o)?(t.isStart||t.isEnd)&&(n=this.getEventTimeText(t),i=this.getEventTimeText(t,"LT"),r=this.getEventTimeText(t,null,!1)):(n=this.getEventTimeText(o),i=this.getEventTimeText(o,"LT"),r=this.getEventTimeText(o,null,!1)),'<a class="'+d.join(" ")+'"'+(o.url?' href="'+tt(o.url)+'"':"")+(c?' style="'+c+'"':"")+'><div class="fc-content">'+(n?'<div class="fc-time" data-start="'+tt(r)+'" data-full="'+tt(i)+'"><span>'+tt(n)+"</span></div>":"")+(o.title?'<div class="fc-title">'+tt(o.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(u?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},updateSegVerticals:function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},computeSegVerticals:function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.top=this.computeDateTop(n.start,n.start),n.bottom=this.computeDateTop(n.end,n.start)},assignSegVerticals:function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateSegVerticalCss(n))},generateSegVerticalCss:function(t){return{top:t.top,bottom:-t.bottom}},updateFgSegCoords:function(t){this.computeSegVerticals(t),this.computeFgSegHorizontals(t),this.assignSegVerticals(t),this.assignFgSegHorizontals(t)},computeFgSegHorizontals:function(t){var e,n,i;if(this.sortEventSegs(t),e=zt(t),Ft(e),n=e[0]){for(i=0;i<n.length;i++)Nt(n[i]);for(i=0;i<n.length;i++)this.computeFgSegForwardBack(n[i],0,0)}},computeFgSegForwardBack:function(t,e,n){var i,r=t.forwardSegs;if(void 0===t.forwardCoord)for(r.length?(this.sortForwardSegs(r),this.computeFgSegForwardBack(r[0],e+1,n),t.forwardCoord=r[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),i=0;i<r.length;i++)this.computeFgSegForwardBack(r[i],0,t.forwardCoord)},sortForwardSegs:function(t){t.sort(lt(this,"compareForwardSegs"))},compareForwardSegs:function(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||this.compareEventSegs(t,e)},assignFgSegHorizontals:function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateFgSegHorizontalCss(n)),n.bottom-n.top<30&&n.el.addClass("fc-short")},generateFgSegHorizontalCss:function(t){var e,n,i=this.view.opt("slotEventOverlap"),r=t.backwardCoord,s=t.forwardCoord,o=this.generateSegVerticalCss(t);return i&&(s=Math.min(1,r+2*(s-r))),this.isRTL?(e=1-s,n=r):(e=r,n=1-s),o.zIndex=t.level+1,o.left=100*e+"%",o.right=100*n+"%",i&&t.forwardPressure&&(o[this.isRTL?"marginLeft":"marginRight"]=20),o}});var Se=jt.View=wt.extend(le,ae,{type:null,name:null,title:null,calendar:null,options:null,el:null,displaying:null,isSkeletonRendered:!1,isEventsRendered:!1,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,selectedEvent:null,eventOrderSpecs:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,isNowIndicatorRendered:null,initialNowDate:null,initialNowQueriedMs:null,nowIndicatorTimeoutID:null,nowIndicatorIntervalID:null,constructor:function(t,n,i,r){this.calendar=t,this.type=this.name=n,this.options=i,this.intervalDuration=r||e.duration(1,"day"),this.nextDayThreshold=e.duration(this.opt("nextDayThreshold")),this.initThemingProps(),this.initHiddenDays(),this.isRTL=this.opt("isRTL"),this.eventOrderSpecs=M(this.opt("eventOrder")),this.initialize()},initialize:function(){},opt:function(t){return this.options[t]},trigger:function(t,e){var n=this.calendar;return n.trigger.apply(n,[t,e||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(t){this.setRange(this.computeRange(t))},setRange:function(e){t.extend(this,e),this.updateTitle()},computeRange:function(t){var e,n,i=O(this.intervalDuration),r=t.clone().startOf(i),s=r.clone().add(this.intervalDuration);return/year|month|week|day/.test(i)?(r.stripTime(),s.stripTime()):(r.hasTime()||(r=this.calendar.time(0)),s.hasTime()||(s=this.calendar.time(0))),e=r.clone(),e=this.skipHiddenDays(e),n=s.clone(),n=this.skipHiddenDays(n,-1,!0),{intervalUnit:i,intervalStart:r,intervalEnd:s,start:e,end:n}},computePrevDate:function(t){return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(t){return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(t,e){return this.intervalDuration.as("days")<=1&&this.isHiddenDay(t)&&(t=this.skipHiddenDays(t,e),t.startOf("day")),t},updateTitle:function(){this.title=this.computeTitle()},computeTitle:function(){return this.formatRange({start:this.calendar.applyTimezone(this.intervalStart),end:this.calendar.applyTimezone(this.intervalEnd)},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),pt(t.start,i,e,n,this.opt("isRTL"))},getAllDayHtml:function(){return this.opt("allDayHtml")||tt(this.opt("allDayText"))},buildGotoAnchorHtml:function(e,n,i){var r,s,o,l;return t.isPlainObject(e)?(r=e.date,s=e.type,o=e.forceOff):r=e,r=jt.moment(r),l={date:r.format("YYYY-MM-DD"),type:s||"day"},"string"==typeof n&&(i=n,n=null),n=n?" "+it(n):"",i=i||"",!o&&this.opt("navLinks")?"<a"+n+' data-goto="'+tt(JSON.stringify(l))+'">'+i+"</a>":"<span"+n+">"+i+"</span>"},setElement:function(t){this.el=t,this.bindGlobalHandlers()},removeElement:function(){this.clear(),this.isSkeletonRendered&&(this.unrenderSkeleton(),this.isSkeletonRendered=!1),this.unbindGlobalHandlers(),this.el.remove()},display:function(t,e){var n=this,i=null;return null!=e&&this.displaying&&(i=this.queryScroll()),this.calendar.freezeContentHeight(),ut(this.clear(),function(){return n.displaying=ut(n.displayView(t),function(){null!=e?n.setScroll(e):n.forceScroll(n.computeInitialScroll(i)),n.calendar.unfreezeContentHeight(),n.triggerRender()})})},clear:function(){var e=this,n=this.displaying;return n?ut(n,function(){return e.displaying=null,e.clearEvents(),e.clearView()}):t.when()},displayView:function(t){this.isSkeletonRendered||(this.renderSkeleton(),this.isSkeletonRendered=!0),t&&this.setDate(t),this.render&&this.render(),this.renderDates(),this.updateSize(),this.renderBusinessHours(),this.startNowIndicator()},clearView:function(){this.unselect(),this.stopNowIndicator(),this.triggerUnrender(),this.unrenderBusinessHours(),this.unrenderDates(),this.destroy&&this.destroy()},renderSkeleton:function(){},unrenderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.trigger("viewRender",this,this,this.el)},triggerUnrender:function(){this.trigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(t(document),"mousedown",this.handleDocumentMousedown),this.listenTo(t(document),"touchstart",this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},initThemingProps:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var t,n,i,r=this;this.opt("nowIndicator")&&(t=this.getNowIndicatorUnit(),t&&(n=lt(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,i=this.initialNowDate.clone().startOf(t).add(1,t)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,n(),i=+e.duration(1,t),i=Math.max(100,i),r.nowIndicatorIntervalID=setInterval(n,i)},i)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},updateSize:function(t){var e;t&&(e=this.queryScroll()),this.updateHeight(t),this.updateWidth(t),this.updateNowIndicator(),t&&this.setScroll(e)},updateWidth:function(t){},updateHeight:function(t){var e=this.calendar;this.setHeight(e.getSuggestedViewHeight(),e.isHeightAuto())},setHeight:function(t,e){},computeInitialScroll:function(t){return 0},queryScroll:function(){},setScroll:function(t){},forceScroll:function(t){var e=this;this.setScroll(t),setTimeout(function(){e.setScroll(t)},0)},displayEvents:function(t){var e=this.queryScroll();this.clearEvents(),this.renderEvents(t),this.isEventsRendered=!0,this.setScroll(e),this.triggerEventRender()},clearEvents:function(){var t;this.isEventsRendered&&(t=this.queryScroll(),this.triggerEventUnrender(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.setScroll(t),this.isEventsRendered=!1)},renderEvents:function(t){},unrenderEvents:function(){},triggerEventRender:function(){this.renderedEventSegEach(function(t){this.trigger("eventAfterRender",t.event,t.event,t.el)}),this.trigger("eventAfterAllRender")},triggerEventUnrender:function(){this.renderedEventSegEach(function(t){this.trigger("eventDestroy",t.event,t.event,t.el)})},resolveEventEl:function(e,n){var i=this.trigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","hidden")},t)},renderedEventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;n<i.length;n++)e&&i[n].event._id!==e._id||i[n].el&&t.call(this,i[n])},getEventSegs:function(){return[]},isEventDraggable:function(t){return this.isEventStartEditable(t)},isEventStartEditable:function(t){return J(t.startEditable,(t.source||{}).startEditable,this.opt("eventStartEditable"),this.isEventGenerallyEditable(t))},isEventGenerallyEditable:function(t){return J(t.editable,(t.source||{}).editable,this.opt("editable"))},reportEventDrop:function(t,e,n,i,r){ -var s=this.calendar,o=s.mutateEvent(t,e,n),l=function(){o.undo(),s.reportEventChange()};this.triggerEventDrop(t,o.dateDelta,l,i,r),s.reportEventChange()},triggerEventDrop:function(t,e,n,i,r){this.trigger("eventDrop",i[0],t,e,n,r,{})},reportExternalDrop:function(e,n,i,r,s){var o,l,a=e.eventProps;a&&(o=t.extend({},a,n),l=this.calendar.renderEvent(o,e.stick)[0]),this.triggerExternalDrop(l,n,i,r,s)},triggerExternalDrop:function(t,e,n,i,r){this.trigger("drop",n[0],e.start,i,r),t&&this.trigger("eventReceive",null,t)},renderDrag:function(t,e){},unrenderDrag:function(){},isEventResizableFromStart:function(t){return this.opt("eventResizableFromStart")&&this.isEventResizable(t)},isEventResizableFromEnd:function(t){return this.isEventResizable(t)},isEventResizable:function(t){var e=t.source||{};return J(t.durationEditable,e.durationEditable,this.opt("eventDurationEditable"),t.editable,e.editable,this.opt("editable"))},reportEventResize:function(t,e,n,i,r){var s=this.calendar,o=s.mutateEvent(t,e,n),l=function(){o.undo(),s.reportEventChange()};this.triggerEventResize(t,o.durationDelta,l,i,r),s.reportEventChange()},triggerEventResize:function(t,e,n,i,r){this.trigger("eventResize",i[0],t,e,n,r,{})},select:function(t,e){this.unselect(e),this.renderSelection(t),this.reportSelection(t,e)},renderSelection:function(t){},reportSelection:function(t,e){this.isSelected=!0,this.triggerSelect(t,e)},triggerSelect:function(t,e){this.trigger("select",null,this.calendar.applyTimezone(t.start),this.calendar.applyTimezone(t.end),e)},unselect:function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.trigger("unselect",null,t))},unrenderSelection:function(){},selectEvent:function(t){this.selectedEvent&&this.selectedEvent===t||(this.unselectEvent(),this.renderedEventSegEach(function(t){t.el.addClass("fc-selected")},t),this.selectedEvent=t)},unselectEvent:function(){this.selectedEvent&&(this.renderedEventSegEach(function(t){t.el.removeClass("fc-selected")},this.selectedEvent),this.selectedEvent=null)},isEventSelected:function(t){return this.selectedEvent&&this.selectedEvent._id===t._id},handleDocumentMousedown:function(t){S(t)&&this.processUnselect(t)},processUnselect:function(t){this.processRangeUnselect(t),this.processEventUnselect(t)},processRangeUnselect:function(e){var n;this.isSelected&&this.opt("unselectAuto")&&(n=this.opt("unselectCancel"),n&&t(e.target).closest(n).length||this.unselect(e))},processEventUnselect:function(e){this.selectedEvent&&(t(e.target).closest(".fc-selected").length||this.unselectEvent())},triggerDayClick:function(t,e,n){this.trigger("dayClick",e,this.calendar.applyTimezone(t.start),n)},initHiddenDays:function(){var e,n=this.opt("hiddenDays")||[],i=[],r=0;for(this.opt("weekends")===!1&&n.push(0,6),e=0;e<7;e++)(i[e]=t.inArray(e,n)!==-1)||r++;if(!r)throw"invalid hiddenDays";this.isHiddenDayHash=i},isHiddenDay:function(t){return e.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},skipHiddenDays:function(t,e,n){var i=t.clone();for(e=e||1;this.isHiddenDayHash[(i.day()+(n?e:0)+7)%7];)i.add(e,"days");return i},computeDayRange:function(t){var e,n=t.start.clone().stripTime(),i=t.end,r=null;return i&&(r=i.clone().stripTime(),e=+i.time(),e&&e>=this.nextDayThreshold&&r.add(1,"days")),(!i||r<=n)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}}),we=jt.Scroller=wt.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(t){t=t||{},this.overflowX=t.overflowX||t.overflow||"auto",this.overflowY=t.overflowY||t.overflow||"auto"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=t('<div class="fc-scroller"></div>')},clear:function(){this.setHeight("auto"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},lockOverflow:function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),"auto"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":e,"overflow-y":n})},setHeight:function(t){this.scrollEl.height(t)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(t){this.scrollEl.scrollTop(t)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return p(this.scrollEl)}}),Ee=jt.Calendar=wt.extend({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,loadingLevel:0,constructor:Ot,initialize:function(){},populateOptionsHash:function(){var t,e,i,r;t=J(this.dynamicOverrides.locale,this.overrides.locale),e=De[t],e||(t=Ee.defaults.locale,e=De[t]||{}),i=J(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,Ee.defaults.isRTL),r=i?Ee.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,this.options=n([Ee.defaults,r,e,this.overrides,this.dynamicOverrides]),Vt(this.options)},getViewSpec:function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},getUnitViewSpec:function(e){var n,i,r;if(t.inArray(e,Xt)!=-1)for(n=this.header.getViewsWithButtons(),t.each(jt.views,function(t){n.push(t)}),i=0;i<n.length;i++)if(r=this.getViewSpec(n[i]),r&&r.singleUnit==e)return r},buildViewSpec:function(t){for(var i,r,s,o,l=this.overrides.views||{},a=[],u=[],d=[],c=t;c;)i=Ut[c],r=l[c],c=null,"function"==typeof i&&(i={class:i}),i&&(a.unshift(i),u.unshift(i.defaults||{}),s=s||i.duration,c=c||i.type),r&&(d.unshift(r),s=s||r.duration,c=c||r.type);return i=q(a),i.type=t,!!i.class&&(s&&(s=e.duration(s),s.valueOf()&&(i.duration=s,o=O(s),1===s.as(o)&&(i.singleUnit=o,d.unshift(l[o]||{})))),i.defaults=n(u),i.overrides=n(d),this.buildViewSpecOptions(i),this.buildViewSpecButtonText(i,t),i)},buildViewSpecOptions:function(t){t.options=n([Ee.defaults,t.defaults,this.dirDefaults,this.localeDefaults,this.overrides,t.overrides,this.dynamicOverrides]),Vt(t.options)},buildViewSpecButtonText:function(t,e){function n(n){var i=n.buttonText||{};return i[e]||(t.buttonTextKey?i[t.buttonTextKey]:null)||(t.singleUnit?i[t.singleUnit]:null)}t.buttonTextOverride=n(this.dynamicOverrides)||n(this.overrides)||t.overrides.buttonText,t.buttonTextDefault=n(this.localeDefaults)||n(this.dirDefaults)||t.defaults.buttonText||n(Ee.defaults)||(t.duration?this.humanizeDuration(t.duration):null)||e},instantiateView:function(t){var e=this.getViewSpec(t);return new e.class(this,t,e.options,e.duration)},isValidViewType:function(t){return Boolean(this.getViewSpec(t))},pushLoading:function(){this.loadingLevel++||this.trigger("loading",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.trigger("loading",null,!1,this.view)},buildSelectSpan:function(t,e){var n,i=this.moment(t).stripZone();return n=e?this.moment(e).stripZone():i.hasTime()?i.clone().add(this.defaultTimedEventDuration):i.clone().add(this.defaultAllDayEventDuration),{start:i,end:n}}});Ee.mixin(le),Ee.mixin({optionHandlers:null,bindOption:function(t,e){this.bindOptions([t],e)},bindOptions:function(t,e){var n,i={func:e,names:t};for(n=0;n<t.length;n++)this.registerOptionHandlerObj(t[n],i);this.triggerOptionHandlerObj(i)},registerOptionHandlerObj:function(t,e){(this.optionHandlers[t]||(this.optionHandlers[t]=[])).push(e)},triggerOptionHandlers:function(t){var e,n=this.optionHandlers[t]||[];for(e=0;e<n.length;e++)this.triggerOptionHandlerObj(n[e])},triggerOptionHandlerObj:function(t){var e,n=t.names,i=[];for(e=0;e<n.length;e++)i.push(this.options[n[e]]);t.func.apply(this,i)}}),Ee.defaults={titleRangeSeparator:" – ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},allDayText:"all-day",theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3},Ee.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},Ee.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var De=jt.locales={};jt.datepickerLocale=function(e,n,i){var r=De[e]||(De[e]={});r.isRTL=i.isRTL,r.weekNumberTitle=i.weekHeader,t.each(be,function(t,e){r[t]=e(i)}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[""],t.datepicker.setDefaults(i))},jt.locale=function(e,i){var r,s;r=De[e]||(De[e]={}),i&&(r=De[e]=n([r,i])),s=Pt(e),t.each(Ce,function(t,e){null==r[t]&&(r[t]=e(s,r))}),Ee.defaults.locale=e};var be={buttonText:function(t){return{prev:et(t.prevText),next:et(t.nextText),today:et(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},Ce={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},mediumTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(t){return t.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}},He={smallDayDateFormat:function(t){return t.isRTL?"D dd":"dd D"},weekFormat:function(t){return t.isRTL?"w[ "+t.weekNumberTitle+"]":"["+t.weekNumberTitle+" ]w"},smallWeekFormat:function(t){return t.isRTL?"w["+t.weekNumberTitle+"]":"["+t.weekNumberTitle+"]w"}};jt.locale("en",Ee.englishDefaults),jt.sourceNormalizers=[],jt.sourceFetchers=[];var Te={dataType:"json",cache:!1},xe=1;Ee.prototype.normalizeEvent=function(t){},Ee.prototype.spanContainsSpan=function(t,e){var n=t.start.clone().stripZone(),i=this.getEventEnd(t).stripZone();return e.start>=n&&e.end<=i},Ee.prototype.getPeerEvents=function(t,e){var n,i,r=this.getEventCache(),s=[];for(n=0;n<r.length;n++)i=r[n],e&&e._id===i._id||s.push(i);return s},Ee.prototype.isEventSpanAllowed=function(t,e){var n=e.source||{},i=J(e.constraint,n.constraint,this.options.eventConstraint),r=J(e.overlap,n.overlap,this.options.eventOverlap);return this.isSpanAllowed(t,i,r,e)&&(!this.options.eventAllow||this.options.eventAllow(t,e)!==!1)},Ee.prototype.isExternalSpanAllowed=function(e,n,i){var r,s;return i&&(r=t.extend({},i,n),s=this.expandEvent(this.buildEventFromInput(r))[0]),s?this.isEventSpanAllowed(e,s):this.isSelectionSpanAllowed(e)},Ee.prototype.isSelectionSpanAllowed=function(t){return this.isSpanAllowed(t,this.options.selectConstraint,this.options.selectOverlap)&&(!this.options.selectAllow||this.options.selectAllow(t)!==!1)},Ee.prototype.isSpanAllowed=function(t,e,n,i){var r,s,o,l,a,u;if(null!=e&&(r=this.constraintToEvents(e))){for(s=!1,l=0;l<r.length;l++)if(this.spanContainsSpan(r[l],t)){s=!0;break}if(!s)return!1}for(o=this.getPeerEvents(t,i),l=0;l<o.length;l++)if(a=o[l],this.eventIntersectsRange(a,t)){if(n===!1)return!1;if("function"==typeof n&&!n(a,i))return!1;if(i){if(u=J(a.overlap,(a.source||{}).overlap),u===!1)return!1;if("function"==typeof u&&!u(i,a))return!1}}return!0},Ee.prototype.constraintToEvents=function(t){return"businessHours"===t?this.getCurrentBusinessHourEvents():"object"==typeof t?null!=t.start?this.expandEvent(this.buildEventFromInput(t)):null:this.clientEvents(t)},Ee.prototype.eventIntersectsRange=function(t,e){var n=t.start.clone().stripZone(),i=this.getEventEnd(t).stripZone();return e.start<i&&e.end>n};var Re={id:"_fcBusinessHours",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"};Ee.prototype.getCurrentBusinessHourEvents=function(t){return this.computeBusinessHourEvents(t,this.options.businessHours)},Ee.prototype.computeBusinessHourEvents=function(e,n){return n===!0?this.expandBusinessHourEvents(e,[{}]):t.isPlainObject(n)?this.expandBusinessHourEvents(e,[n]):t.isArray(n)?this.expandBusinessHourEvents(e,n,!0):[]},Ee.prototype.expandBusinessHourEvents=function(e,n,i){var r,s,o=this.getView(),l=[];for(r=0;r<n.length;r++)s=n[r],i&&!s.dow||(s=t.extend({},Re,s),e&&(s.start=null,s.end=null),l.push.apply(l,this.expandEvent(this.buildEventFromInput(s),o.start,o.end)));return l};var Ie=jt.BasicView=Se.extend({scroller:null,dayGridClass:me,dayGrid:null,dayNumbersVisible:!1,colWeekNumbersVisible:!1,cellWeekNumbersVisible:!1,weekNumberWidth:null,headContainerEl:null,headRowEl:null,initialize:function(){this.dayGrid=this.instantiateDayGrid(),this.scroller=new we({overflowX:"hidden",overflowY:"auto"})},instantiateDayGrid:function(){var t=this.dayGridClass.extend(ke);return new t(this)},setRange:function(t){Se.prototype.setRange.call(this,t),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(t)},computeRange:function(t){var e=Se.prototype.computeRange.call(this,t);return/year|month/.test(e.intervalUnit)&&(e.start.startOf("week"),e.start=this.skipHiddenDays(e.start),e.end.weekday()&&(e.end.add(1,"week").startOf("week"),e.end=this.skipHiddenDays(e.end,-1,!0))),e},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.opt("weekNumbers")&&(this.opt("weekNumbersWithinDays")?(this.cellWeekNumbersVisible=!0,this.colWeekNumbersVisible=!1):(this.cellWeekNumbersVisible=!1,this.colWeekNumbersVisible=!0)),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-day-grid-container"),n=t('<div class="fc-day-grid" />').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.dayGrid.setElement(n),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'"></td></tr></tbody></table>'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.colWeekNumbersVisible&&(this.weekNumberWidth=u(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,s,o=this.opt("eventLimit");this.scroller.clear(),r(this.headRowEl),this.dayGrid.removeSegPopover(),o&&"number"==typeof o&&this.dayGrid.limitRows(o),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),o&&"number"!=typeof o&&this.dayGrid.limitRows(o),e||(this.scroller.setHeight(n),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(i(this.headRowEl,s),n=this.computeScrollerHeight(t),this.scroller.setHeight(n)),this.scroller.lockOverflow(s))},computeScrollerHeight:function(t){return t-d(this.el,this.scroller.el)},setGridHeight:function(t,e){e?a(this.dayGrid.rowEls):l(this.dayGrid.rowEls,t,!0)},queryScroll:function(){return this.scroller.getScrollTop()},setScroll:function(t){this.scroller.setScrollTop(t)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(t,e){return this.dayGrid.queryHit(t,e)},getHitSpan:function(t){return this.dayGrid.getHitSpan(t)},getHitEl:function(t){return this.dayGrid.getHitEl(t)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),ke={renderHeadIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'<th class="fc-week-number '+t.widgetHeaderClass+'" '+t.weekNumberStyleAttr()+"><span>"+tt(t.opt("weekNumberTitle"))+"</span></th>":""},renderNumberIntroHtml:function(t){var e=this.view,n=this.getCellDate(t,0);return e.colWeekNumbersVisible?'<td class="fc-week-number" '+e.weekNumberStyleAttr()+">"+e.buildGotoAnchorHtml({date:n,type:"week",forceOff:1===this.colCnt},n.format("w"))+"</td>":""},renderBgIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'<td class="fc-week-number '+t.widgetContentClass+'" '+t.weekNumberStyleAttr()+"></td>":""},renderIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'<td class="fc-week-number" '+t.weekNumberStyleAttr()+"></td>":""}},Me=jt.MonthView=Ie.extend({computeRange:function(t){var e,n=Ie.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&(e=Math.ceil(n.end.diff(n.start,"weeks",!0)),n.end.add(6-e,"weeks")),n},setGridHeight:function(t,e){e&&(t*=this.rowCnt/6),l(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){return this.opt("fixedWeekCount")}});Ut.basic={class:Ie},Ut.basicDay={type:"basic",duration:{days:1}},Ut.basicWeek={type:"basic",duration:{weeks:1}},Ut.month={class:Me,duration:{months:1},defaults:{fixedWeekCount:!0}};var Le=jt.AgendaView=Se.extend({scroller:null,timeGridClass:ye,timeGrid:null,dayGridClass:me,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new we({overflowX:"hidden",overflowY:"auto"})},instantiateTimeGrid:function(){var t=this.timeGridClass.extend(Be);return new t(this)},instantiateDayGrid:function(){var t=this.dayGridClass.extend(ze);return new t(this)},setRange:function(t){Se.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-time-grid-container"),n=t('<div class="fc-time-grid" />').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.timeGrid.setElement(n),this.timeGrid.renderDates(),this.bottomRuleEl=t('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+this.widgetHeaderClass+'"/>':"")+"</td></tr></tbody></table>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(t){this.timeGrid.renderNowIndicator(t)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(t){this.timeGrid.updateSize(t),Se.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=u(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,s,o;this.bottomRuleEl.hide(),this.scroller.clear(),r(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=Fe),n&&this.dayGrid.limitRows(n)),e||(s=this.computeScrollerHeight(t),this.scroller.setHeight(s),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(i(this.noScrollRowEls,o),s=this.computeScrollerHeight(t),this.scroller.setHeight(s)),this.scroller.lockOverflow(o),this.timeGrid.getTotalSlatHeight()<s&&this.bottomRuleEl.show())},computeScrollerHeight:function(t){return t-d(this.el,this.scroller.el)},computeInitialScroll:function(){var t=e.duration(this.opt("scrollTime")),n=this.timeGrid.computeTimeTop(t);return n=Math.ceil(n),n&&n++,n},queryScroll:function(){return this.scroller.getScrollTop()},setScroll:function(t){this.scroller.setScrollTop(t)},prepareHits:function(){this.timeGrid.prepareHits(),this.dayGrid&&this.dayGrid.prepareHits()},releaseHits:function(){this.timeGrid.releaseHits(),this.dayGrid&&this.dayGrid.releaseHits()},queryHit:function(t,e){var n=this.timeGrid.queryHit(t,e);return!n&&this.dayGrid&&(n=this.dayGrid.queryHit(t,e)),n},getHitSpan:function(t){return t.component.getHitSpan(t)},getHitEl:function(t){return t.component.getHitEl(t)},renderEvents:function(t){var e,n,i=[],r=[],s=[];for(n=0;n<t.length;n++)t[n].allDay?i.push(t[n]):r.push(t[n]);e=this.timeGrid.renderEvents(r),this.dayGrid&&(s=this.dayGrid.renderEvents(i)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents(),this.dayGrid&&this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return t.start.hasTime()?this.timeGrid.renderDrag(t,e):this.dayGrid?this.dayGrid.renderDrag(t,e):void 0},unrenderDrag:function(){this.timeGrid.unrenderDrag(),this.dayGrid&&this.dayGrid.unrenderDrag()},renderSelection:function(t){t.start.hasTime()||t.end.hasTime()?this.timeGrid.renderSelection(t):this.dayGrid&&this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.timeGrid.unrenderSelection(),this.dayGrid&&this.dayGrid.unrenderSelection()}}),Be={renderHeadIntroHtml:function(){var t,e=this.view;return e.opt("weekNumbers")?(t=this.start.format(e.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+e.widgetHeaderClass+'" '+e.axisStyleAttr()+">"+e.buildGotoAnchorHtml({date:this.start,type:"week",forceOff:this.colCnt>1},tt(t))+"</th>"):'<th class="fc-axis '+e.widgetHeaderClass+'" '+e.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.widgetContentClass+'" '+t.axisStyleAttr()+"></td>"},renderIntroHtml:function(){var t=this.view;return'<td class="fc-axis" '+t.axisStyleAttr()+"></td>"}},ze={renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.widgetContentClass+'" '+t.axisStyleAttr()+"><span>"+t.getAllDayHtml()+"</span></td>"},renderIntroHtml:function(){var t=this.view;return'<td class="fc-axis" '+t.axisStyleAttr()+"></td>"}},Fe=5,Ne=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];Ut.agenda={class:Le,defaults:{allDaySlot:!0,slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Ut.agendaDay={type:"agenda",duration:{days:1}},Ut.agendaWeek={type:"agenda",duration:{weeks:1}};var Ge=Se.extend({grid:null,scroller:null,initialize:function(){this.grid=new Ae(this),this.scroller=new we({overflowX:"hidden",overflowY:"auto"})},setRange:function(t){Se.prototype.setRange.call(this,t),this.grid.setRange(t)},renderSkeleton:function(){this.el.addClass("fc-list-view "+this.widgetContentClass),this.scroller.render(),this.scroller.el.appendTo(this.el),this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(t,e){this.scroller.setHeight(this.computeScrollerHeight(t))},computeScrollerHeight:function(t){return t-d(this.el,this.scroller.el)},renderEvents:function(t){this.grid.renderEvents(t)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(t){return!1},isEventDraggable:function(t){return!1}}),Ae=pe.extend({segSelector:".fc-list-item",hasDayInteractions:!1,spanToSegs:function(t){for(var e,n=this.view,i=n.start.clone().time(0),r=0,s=[];i<n.end;)if(e=F(t,{start:i,end:i.clone().add(1,"day")}),e&&(e.dayIndex=r,s.push(e)),i.add(1,"day"),r++,e&&!e.isEnd&&t.end.hasTime()&&t.end<i.clone().add(this.view.nextDayThreshold)){e.end=t.end.clone(),e.isEnd=!0;break}return s},computeEventTimeFormat:function(){return this.view.opt("mediumTimeFormat")},handleSegClick:function(e,n){var i;pe.prototype.handleSegClick.apply(this,arguments),t(n.target).closest("a[href]").length||(i=e.event.url,i&&!n.isDefaultPrevented()&&(window.location.href=i))},renderFgSegs:function(t){return t=this.renderFgSegEls(t),t.length?this.renderSegList(t):this.renderEmptyMessage(),t},renderEmptyMessage:function(){this.el.html('<div class="fc-list-empty-wrap2"><div class="fc-list-empty-wrap1"><div class="fc-list-empty">'+tt(this.view.opt("noEventsMessage"))+"</div></div></div>")},renderSegList:function(e){var n,i,r,s=this.groupSegsByDay(e),o=t('<table class="fc-list-table"><tbody/></table>'),l=o.find("tbody");for(n=0;n<s.length;n++)if(i=s[n])for(l.append(this.dayHeaderHtml(this.view.start.clone().add(n,"days"))),this.sortEventSegs(i),r=0;r<i.length;r++)l.append(i[r].el);this.el.empty().append(o)},groupSegsByDay:function(t){var e,n,i=[];for(e=0;e<t.length;e++)n=t[e],(i[n.dayIndex]||(i[n.dayIndex]=[])).push(n);return i},dayHeaderHtml:function(t){var e=this.view,n=e.opt("listDayFormat"),i=e.opt("listDayAltFormat");return'<tr class="fc-list-heading" data-date="'+t.format("YYYY-MM-DD")+'"><td class="'+e.widgetHeaderClass+'" colspan="3">'+(n?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-main"},tt(t.format(n))):"")+(i?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-alt"},tt(t.format(i))):"")+"</td></tr>"},fgSegHtml:function(t){var e,n=this.view,i=["fc-list-item"].concat(this.getSegCustomClasses(t)),r=this.getSegBackgroundColor(t),s=t.event,o=s.url;return e=s.allDay?n.getAllDayHtml():n.isMultiDayEvent(s)?t.isStart||t.isEnd?tt(this.getEventTimeText(t)):n.getAllDayHtml():tt(this.getEventTimeText(s)),o&&i.push("fc-has-url"),'<tr class="'+i.join(" ")+'">'+(this.displayEventTime?'<td class="fc-list-item-time '+n.widgetContentClass+'">'+(e||"")+"</td>":"")+'<td class="fc-list-item-marker '+n.widgetContentClass+'"><span class="fc-event-dot"'+(r?' style="background-color:'+r+'"':"")+'></span></td><td class="fc-list-item-title '+n.widgetContentClass+'"><a'+(o?' href="'+tt(o)+'"':"")+">"+tt(t.event.title||"")+"</a></td></tr>"}});return Ut.list={class:Ge,buttonTextKey:"list",defaults:{buttonText:"list",listDayFormat:"LL",noEventsMessage:"No events to display"}},Ut.listDay={type:"list",duration:{days:1},defaults:{listDayFormat:"dddd"}},Ut.listWeek={type:"list",duration:{weeks:1},defaults:{listDayFormat:"dddd",listDayAltFormat:"LL"}},Ut.listMonth={type:"list",duration:{month:1},defaults:{listDayAltFormat:"dddd"}},Ut.listYear={type:"list",duration:{year:1},defaults:{listDayAltFormat:"dddd"}},jt});
\ No newline at end of file +!function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):"object"==typeof exports?module.exports=t(require("jquery"),require("moment")):t(jQuery,moment)}(function(t,e){function n(t){return q(t,$t)}function i(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function r(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function s(){t("body").addClass("fc-not-allowed")}function o(){t("body").removeClass("fc-not-allowed")}function l(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],u=[],c=0;a(e),e.each(function(n,i){var a=n===e.length-1?s:r,d=t(i).outerHeight(!0);d<a?(o.push(i),l.push(d),u.push(t(i).height())):c+=d}),i&&(n-=c,r=Math.floor(n/o.length),s=Math.floor(n-r*(o.length-1))),t(o).each(function(e,n){var i=e===o.length-1?s:r,a=l[e],c=u[e],d=i-(a-c);a<i&&t(n).height(d)})}function a(t){t.height("")}function u(e){var n=0;return e.find("> *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function c(t,e){var n,i=t.add(e);return i.css({position:"relative",left:-1}),n=t.outerHeight()-e.outerHeight(),i.css({position:"",left:""}),n}function d(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function h(t,e){var n=t.offset(),i=n.left-(e?e.left:0),r=n.top-(e?e.top:0);return{left:i,right:i+t.outerWidth(),top:r,bottom:r+t.outerHeight()}}function f(t,e){var n=t.offset(),i=p(t),r=n.left+y(t,"border-left-width")+i.left-(e?e.left:0),s=n.top+y(t,"border-top-width")+i.top-(e?e.top:0);return{left:r,right:r+t[0].clientWidth,top:s,bottom:s+t[0].clientHeight}}function g(t,e){var n=t.offset(),i=n.left+y(t,"border-left-width")+y(t,"padding-left")-(e?e.left:0),r=n.top+y(t,"border-top-width")+y(t,"padding-top")-(e?e.top:0);return{left:i,right:i+t.width(),top:r,bottom:r+t.height()}}function p(t){var e=t.innerWidth()-t[0].clientWidth,n={left:0,right:0,top:0,bottom:t.innerHeight()-t[0].clientHeight};return v()&&"rtl"==t.css("direction")?n.left=e:n.right=e,n}function v(){return null===Qt&&(Qt=m()),Qt}function m(){var e=t("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),n=e.children(),i=n.offset().left>e.offset().left;return e.remove(),i}function y(t,e){return parseFloat(t.css(e))||0}function S(t){return 1==t.which&&!t.ctrlKey}function w(t){if(void 0!==t.pageX)return t.pageX;var e=t.originalEvent.touches;return e?e[0].pageX:void 0}function E(t){if(void 0!==t.pageY)return t.pageY;var e=t.originalEvent.touches;return e?e[0].pageY:void 0}function b(t){return/^touch/.test(t.type)}function D(t){t.addClass("fc-unselectable").on("selectstart",T)}function T(t){t.preventDefault()}function C(t){return!!window.addEventListener&&(window.addEventListener("scroll",t,!0),!0)}function H(t){return!!window.removeEventListener&&(window.removeEventListener("scroll",t,!0),!0)}function R(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function x(t,e){return{left:Math.min(Math.max(t.left,e.left),e.right),top:Math.min(Math.max(t.top,e.top),e.bottom)}}function I(t){return{left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}}function k(t,e){return{left:t.left-e.left,top:t.top-e.top}}function L(e){var n,i,r=[],s=[];for("string"==typeof e?s=e.split(/\s*,\s*/):"function"==typeof e?s=[e]:t.isArray(e)&&(s=e),n=0;n<s.length;n++)i=s[n],"string"==typeof i?r.push("-"==i.charAt(0)?{field:i.substring(1),order:-1}:{field:i,order:1}):"function"==typeof i&&r.push({func:i});return r}function M(t,e,n){var i,r;for(i=0;i<n.length;i++)if(r=B(t,e,n[i]))return r;return 0}function B(t,e,n){return n.func?n.func(t,e):z(t[n.field],e[n.field])*(n.order||1)}function z(e,n){return e||n?null==n?-1:null==e?1:"string"===t.type(e)||"string"===t.type(n)?String(e).localeCompare(String(n)):e-n:0}function F(t,e){var n,i,r,s,o=t.start,l=t.end,a=e.start,u=e.end;if(l>a&&o<u)return o>=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),l<=u?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}}function N(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function G(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function O(t,n,i){return e.duration(Math.round(t.diff(n,i,!0)),i)}function A(t,e){var n,i,r;for(n=0;n<Kt.length&&(i=Kt[n],r=V(i,t,e),!(r>=1&&ot(r)));n++);return i}function V(t,n,i){return null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0)}function P(t,e,n){var i;return W(n)?(e-t)/n:(i=n.asMonths(),Math.abs(i)>=1&&ot(i)?e.diff(t,"months",!0)/i:e.diff(t,"days",!0)/n.asDays())}function _(t,e){var n,i;return W(t)||W(e)?t/e:(n=t.asMonths(),i=e.asMonths(),Math.abs(n)>=1&&ot(n)&&Math.abs(i)>=1&&ot(i)?n/i:t.asDays()/e.asDays())}function Y(t,n){var i;return W(t)?e.duration(t*n):(i=t.asMonths(),Math.abs(i)>=1&&ot(i)?e.duration({months:i*n}):e.duration({days:t.asDays()*n}))}function W(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function U(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function j(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function q(t,e){var n,i,r,s,o,l,a={};if(e)for(n=0;n<e.length;n++){for(i=e[n],r=[],s=t.length-1;s>=0;s--)if(o=t[s][i],"object"==typeof o)r.unshift(o);else if(void 0!==o){a[i]=o;break}r.length&&(a[i]=q(r))}for(n=t.length-1;n>=0;n--){l=t[n];for(i in l)i in a||(a[i]=l[i])}return a}function Z(t){var e=function(){};return e.prototype=t,new e}function $(t,e){for(var n in t)Q(t,n)&&(e[n]=t[n])}function Q(t,e){return Jt.call(t,e)}function X(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function K(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;r<e.length;r++)s=e[r].apply(n,i)||s;return s}}function J(){for(var t=0;t<arguments.length;t++)if(void 0!==arguments[t])return arguments[t]}function tt(t){return(t+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br />")}function et(t){return t.replace(/&.*?;/g,"")}function nt(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+":"+e)}),n.join(";")}function it(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+'="'+tt(e)+'"')}),n.join(" ")}function rt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function st(t,e){return t-e}function ot(t){return t%1===0}function lt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function at(t,e,n){var i,r,s,o,l,a=function(){var u=+new Date-o;u<e?i=setTimeout(a,e-u):(i=null,n||(l=t.apply(s,r),s=r=null))};return function(){s=this,r=arguments,o=+new Date;var u=n&&!i;return i||(i=setTimeout(a,e)),u&&(l=t.apply(s,r),s=r=null),l}}function ut(n,i,r){var s,o,l,a,u=n[0],c=1==n.length&&"string"==typeof u;return e.isMoment(u)||U(u)||void 0===u?a=e.apply(null,n):(s=!1,o=!1,c?te.test(u)?(u+="-01",n=[u],s=!0,o=!0):(l=ee.exec(u))&&(s=!l[5],o=!0):t.isArray(u)&&(o=!0),a=i||s?e.utc.apply(e,n):e.apply(null,n),s?(a._ambigTime=!0,a._ambigZone=!0):r&&(o?a._ambigZone=!0:c&&a.utcOffset(u))),a._fullCalendar=!0,a}function ct(t,e){return ie.format.call(t,e)}function dt(t,e){return ht(t,mt(e))}function ht(t,e){var n,i="";for(n=0;n<e.length;n++)i+=ft(t,e[n]);return i}function ft(t,e){var n,i;return"string"==typeof e?e:(n=e.token)?se[n]?se[n](t):ct(t,n):e.maybe&&(i=ht(t,e.maybe),i.match(/[1-9]/))?i:""}function gt(t,e,n,i,r){var s;return t=qt.moment.parseZone(t),e=qt.moment.parseZone(e),s=t.localeData(),n=s.longDateFormat(n)||n,i=i||" - ",pt(t,e,mt(n),i,r)}function pt(t,e,n,i,r){var s,o,l,a,u=t.clone().stripZone(),c=e.clone().stripZone(),d="",h="",f="",g="",p="";for(o=0;o<n.length&&(s=vt(t,e,u,c,n[o]),s!==!1);o++)d+=s;for(l=n.length-1;l>o&&(s=vt(t,e,u,c,n[l]),s!==!1);l--)h=s+h;for(a=o;a<=l;a++)f+=ft(t,n[a]),g+=ft(e,n[a]);return(f||g)&&(p=r?g+i+f:f+i+g),d+p+h}function vt(t,e,n,i,r){var s,o;return"string"==typeof r?r:!!((s=r.token)&&(o=oe[s.charAt(0)],o&&n.isSame(i,o)))&&ct(t,s)}function mt(t){return t in le?le[t]:le[t]=yt(t)}function yt(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:yt(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function St(){}function wt(t,e){var n;return Q(e,"constructor")&&(n=e.constructor),"function"!=typeof n&&(n=e.constructor=function(){t.apply(this,arguments)}),n.prototype=Z(t.prototype),$(e,n.prototype),$(t,n),n}function Et(t,e){$(e,t.prototype)}function bt(e){var n=t.Deferred(),i=n.promise();if("function"==typeof e&&e(function(t){bt.immediate&&(i._value=t),n.resolve(t)},function(){n.reject()}),bt.immediate){var r=i.then;i.then=function(t,e){var n=i.state();if("resolved"===n){if("function"==typeof t)return bt.resolve(t(i._value))}else if("rejected"===n&&"function"==typeof e)return e(),i;return r.call(i,t,e)}}return i}function Dt(t){function e(t){return new bt(function(e){var i=function(){bt.resolve(t()).then(e).then(function(){n.shift(),n.length&&n[0]()})};n.push(i),1===n.length&&i()})}var n=[];this.add="number"==typeof t?at(e,t):e,this.addQuickly=e}function Tt(t,e){return!t&&!e||!(!t||!e)&&(t.component===e.component&&Ct(t,e)&&Ct(e,t))}function Ct(t,e){for(var n in t)if(!/^(component|left|right|top|bottom)$/.test(n)&&t[n]!==e[n])return!1;return!0}function Ht(t){return{start:t.start.clone(),end:t.end?t.end.clone():null,allDay:t.allDay}}function Rt(t){var e=It(t);return"background"===e||"inverse-background"===e}function xt(t){return"inverse-background"===It(t)}function It(t){return J((t.source||{}).rendering,t.rendering)}function kt(t){var e,n,i={};for(e=0;e<t.length;e++)n=t[e],(i[n._id]||(i[n._id]=[])).push(n);return i}function Lt(t,e){return t.start-e.start}function Mt(n){var i,r,s,o,l=qt.dataAttrPrefix;return l&&(l+="-"),i=n.data(l+"event")||null,i&&(i="object"==typeof i?t.extend({},i):{},r=i.start,null==r&&(r=i.time),s=i.duration,o=i.stick,delete i.start,delete i.time,delete i.duration,delete i.stick),null==r&&(r=n.data(l+"start")),null==r&&(r=n.data(l+"time")),null==s&&(s=n.data(l+"duration")),null==o&&(o=n.data(l+"stick")),r=null!=r?e.duration(r):null,s=null!=s?e.duration(s):null,o=Boolean(o),{eventProps:i,startTime:r,duration:s,stick:o}}function Bt(t,e){var n,i;for(n=0;n<e.length;n++)if(i=e[n],i.leftCol<=t.rightCol&&i.rightCol>=t.leftCol)return!0;return!1}function zt(t,e){return t.leftCol-e.leftCol}function Ft(t){var e,n,i,r=[];for(e=0;e<t.length;e++){for(n=t[e],i=0;i<r.length&&Ot(n,r[i]).length;i++);n.level=i,(r[i]||(r[i]=[])).push(n)}return r}function Nt(t){var e,n,i,r,s;for(e=0;e<t.length;e++)for(n=t[e],i=0;i<n.length;i++)for(r=n[i],r.forwardSegs=[],s=e+1;s<t.length;s++)Ot(r,t[s],r.forwardSegs)}function Gt(t){var e,n,i=t.forwardSegs,r=0;if(void 0===t.forwardPressure){for(e=0;e<i.length;e++)n=i[e],Gt(n),r=Math.max(r,1+n.forwardPressure);t.forwardPressure=r}}function Ot(t,e,n){n=n||[];for(var i=0;i<e.length;i++)At(t,e[i])&&n.push(e[i]);return n}function At(t,e){return t.bottom>e.top&&t.top<e.bottom}function Vt(t){this.items=t||[]}function Pt(e,n){function i(t){n=t}function r(){var i=n.layout;p=e.options.theme?"ui":"fc",i?(g?g.empty():g=this.el=t("<div class='fc-toolbar "+n.extraClasses+"'/>"),g.append(o("left")).append(o("right")).append(o("center")).append('<div class="fc-clear"/>')):s()}function s(){g&&(g.remove(),g=f.el=null)}function o(i){var r=t('<div class="fc-'+i+'"/>'),s=n.layout[i];return s&&t.each(s.split(" "),function(n){var i,s=t(),o=!0;t.each(this.split(","),function(n,i){var r,l,a,u,c,d,h,f,g,m;"title"==i?(s=s.add(t("<h2> </h2>")),o=!1):((r=(e.options.customButtons||{})[i])?(a=function(t){r.click&&r.click.call(m[0],t)},u="",c=r.text):(l=e.getViewSpec(i))?(a=function(){e.changeView(i)},v.push(i),u=l.buttonTextOverride,c=l.buttonTextDefault):e[i]&&(a=function(){e[i]()},u=(e.overrides.buttonText||{})[i],c=e.options.buttonText[i]),a&&(d=r?r.themeIcon:e.options.themeButtonIcons[i],h=r?r.icon:e.options.buttonIcons[i],f=u?tt(u):d&&e.options.theme?"<span class='ui-icon ui-icon-"+d+"'></span>":h&&!e.options.theme?"<span class='fc-icon fc-icon-"+h+"'></span>":tt(c),g=["fc-"+i+"-button",p+"-button",p+"-state-default"],m=t('<button type="button" class="'+g.join(" ")+'">'+f+"</button>").click(function(t){m.hasClass(p+"-state-disabled")||(a(t),(m.hasClass(p+"-state-active")||m.hasClass(p+"-state-disabled"))&&m.removeClass(p+"-state-hover"))}).mousedown(function(){m.not("."+p+"-state-active").not("."+p+"-state-disabled").addClass(p+"-state-down")}).mouseup(function(){m.removeClass(p+"-state-down")}).hover(function(){m.not("."+p+"-state-active").not("."+p+"-state-disabled").addClass(p+"-state-hover")},function(){m.removeClass(p+"-state-hover").removeClass(p+"-state-down")}),s=s.add(m)))}),o&&s.first().addClass(p+"-corner-left").end().last().addClass(p+"-corner-right").end(),s.length>1?(i=t("<div/>"),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function l(t){g&&g.find("h2").text(t)}function a(t){g&&g.find(".fc-"+t+"-button").addClass(p+"-state-active")}function u(t){g&&g.find(".fc-"+t+"-button").removeClass(p+"-state-active")}function c(t){g&&g.find(".fc-"+t+"-button").prop("disabled",!0).addClass(p+"-state-disabled")}function d(t){g&&g.find(".fc-"+t+"-button").prop("disabled",!1).removeClass(p+"-state-disabled")}function h(){return v}var f=this;f.setToolbarOptions=i,f.render=r,f.removeElement=s,f.updateTitle=l,f.activateButton=a,f.deactivateButton=u,f.disableButton=c,f.enableButton=d,f.getViewsWithButtons=h,f.el=null;var g,p,v=[]}function _t(n,i){function r(t){t._locale=Y}function s(){q?a()&&(f(),u()):o()}function o(){n.addClass("fc"),n.on("click.fc","a[data-goto]",function(e){var n=t(this),i=n.data("goto"),r=_.moment(i.date),s=i.type,o=Q.opt("navLink"+rt(s)+"Click");"function"==typeof o?o(r,e):("string"==typeof o&&(s=o),B(r,s))}),_.bindOption("theme",function(t){$=t?"ui":"fc",n.toggleClass("ui-widget",t),n.toggleClass("fc-unthemed",!t)}),_.bindOptions(["isRTL","locale"],function(t){n.toggleClass("fc-ltr",!t),n.toggleClass("fc-rtl",t)}),q=t("<div class='fc-view-container'/>").prependTo(n);var e=y();W=new Vt(e),U=_.header=e[0],j=_.footer=e[1],E(),b(),u(_.options.defaultView),_.options.handleWindowResize&&(K=at(v,_.options.windowResizeDelay),t(window).resize(K))}function l(){Q&&Q.removeElement(),W.proxyCall("removeElement"),q.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),n.off(".fc"),K&&t(window).unbind("resize",K)}function a(){return n.is(":visible")}function u(e,n){nt++;var i=Q&&e&&Q.type!==e;i&&(F(),c()),!Q&&e&&(Q=_.view=et[e]||(et[e]=_.instantiateView(e)),Q.setElement(t("<div class='fc-view fc-"+e+"-view' />").appendTo(q)),W.proxyCall("activateButton",e)),Q&&(J=Q.massageCurrentDate(J),Q.isDateSet&&J>=Q.intervalStart&&J<Q.intervalEnd||a()&&(n&&Q.captureInitialScroll(n),Q.setDate(J,n),n&&Q.releaseScroll(),D())),i&&N(),nt--}function c(){W.proxyCall("deactivateButton",Q.type),Q.removeElement(),Q=_.view=null}function d(){nt++,F();var t=Q.type,e=Q.queryScroll();c(),f(),u(t,e),N(),nt--}function h(t){if(a())return t&&g(),nt++,Q.updateSize(!0),nt--,!0}function f(){a()&&g()}function g(){var t=_.options.contentHeight,e=_.options.height;X="number"==typeof t?t:"function"==typeof t?t():"number"==typeof e?e-p():"function"==typeof e?e()-p():"parent"===e?n.parent().height()-p():Math.round(q.width()/Math.max(_.options.aspectRatio,.5))}function p(){return W.items.reduce(function(t,e){var n=e.el?e.el.outerHeight(!0):0;return t+n},0)}function v(t){!nt&&t.target===window&&Q.start&&h(!0)&&Q.publiclyTrigger("windowResize",tt)}function m(){a()&&_.reportEventChange()}function y(){return[new Pt(_,S()),new Pt(_,w())]}function S(){return{extraClasses:"fc-header-toolbar",layout:_.options.header}}function w(){return{extraClasses:"fc-footer-toolbar",layout:_.options.footer}}function E(){U.setToolbarOptions(S()),U.render(),U.el&&n.prepend(U.el)}function b(){j.setToolbarOptions(w()),j.render(),j.el&&n.append(j.el)}function D(){var t=_.getNow();t>=Q.intervalStart&&t<Q.intervalEnd?W.proxyCall("disableButton","today"):W.proxyCall("enableButton","today")}function T(t,e){Q.select(_.buildSelectSpan.apply(_,arguments))}function C(){Q&&Q.unselect()}function H(){J=Q.computePrevDate(J),u()}function R(){J=Q.computeNextDate(J),u()}function x(){J.add(-1,"years"),u()}function I(){J.add(1,"years"),u()}function k(){J=_.getNow(),u()}function L(t){J=_.moment(t).stripZone(),u()}function M(t){J.add(e.duration(t)),u()}function B(t,e){var n;e=e||"day",n=_.getViewSpec(e)||_.getUnitViewSpec(e),J=t.clone(),u(n?n.type:null)}function z(){return _.applyTimezone(J)}function F(){it++||q.css({width:"100%",height:q.height(),overflow:"hidden"})}function N(){--it||q.css({width:"",height:"",overflow:""})}function G(){return _}function O(){return Q}function A(t,e){var n;if("string"==typeof t){if(void 0===e)return _.options[t];n={},n[t]=e,V(n)}else"object"==typeof t&&V(t)}function V(t){var e,n=0;for(e in t)_.dynamicOverrides[e]=t[e];_.viewSpecCache={},_.populateOptionsHash();for(e in t)_.triggerOptionHandlers(e),n++;if(1===n){if("height"===e||"contentHeight"===e||"aspectRatio"===e)return void h(!0);if("defaultDate"===e)return;if("businessHours"===e)return void(Q&&(Q.unrenderBusinessHours(),Q.renderBusinessHours()));if("timezone"===e)return _.rezoneArrayEventSources(),void _.refetchEvents()}E(),b(),et={},d()}function P(t,e){var n=Array.prototype.slice.call(arguments,2);if(e=e||tt,this.triggerWith(t,e,n),_.options[t])return _.options[t].apply(e,n)}var _=this;_.render=s,_.destroy=l,_.rerenderEvents=m,_.changeView=u,_.select=T,_.unselect=C,_.prev=H,_.next=R,_.prevYear=x,_.nextYear=I,_.today=k,_.gotoDate=L,_.incrementDate=M,_.zoomTo=B,_.getDate=z,_.getCalendar=G,_.getView=O,_.option=A,_.publiclyTrigger=P,_.dynamicOverrides={},_.viewSpecCache={},_.optionHandlers={},_.overrides=t.extend({},i),_.populateOptionsHash();var Y;_.bindOptions(["locale","monthNames","monthNamesShort","dayNames","dayNamesShort","firstDay","weekNumberCalculation"],function(t,e,n,i,s,o,l){if("iso"===l&&(l="ISO"),Y=Z(Wt(t)),e&&(Y._months=e),n&&(Y._monthsShort=n),i&&(Y._weekdays=i),s&&(Y._weekdaysShort=s),null==o&&"ISO"===l&&(o=1),null!=o){var a=Z(Y._week);a.dow=o,Y._week=a}"ISO"!==l&&"local"!==l&&"function"!=typeof l||(Y._fullCalendar_weekCalc=l),J&&r(J)}),_.defaultAllDayEventDuration=e.duration(_.options.defaultAllDayEventDuration),_.defaultTimedEventDuration=e.duration(_.options.defaultTimedEventDuration),_.moment=function(){var t;return"local"===_.options.timezone?(t=qt.moment.apply(null,arguments),t.hasTime()&&t.local()):t="UTC"===_.options.timezone?qt.moment.utc.apply(null,arguments):qt.moment.parseZone.apply(null,arguments),r(t),t},_.localizeMoment=r,_.getIsAmbigTimezone=function(){return"local"!==_.options.timezone&&"UTC"!==_.options.timezone},_.applyTimezone=function(t){if(!t.hasTime())return t.clone();var e,n=_.moment(t.toArray()),i=t.time()-n.time();return i&&(e=n.clone().add(i),t.time()-e.time()===0&&(n=e)),n},_.getNow=function(){var t=_.options.now;return"function"==typeof t&&(t=t()),_.moment(t).stripZone()},_.getEventEnd=function(t){return t.end?t.end.clone():_.getDefaultEventEnd(t.allDay,t.start)},_.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(_.defaultAllDayEventDuration):n.add(_.defaultTimedEventDuration),_.getIsAmbigTimezone()&&n.stripZone(),n},_.humanizeDuration=function(t){return t.locale(_.options.locale).humanize()},Ut.call(_);var W,U,j,q,$,Q,X,K,J,tt=n[0],et={},nt=0;J=null!=_.options.defaultDate?_.moment(_.options.defaultDate).stripZone():_.getNow(),_.getSuggestedViewHeight=function(){return void 0===X&&f(),X},_.isHeightAuto=function(){return"auto"===_.options.contentHeight||"auto"===_.options.height},_.setToolbarsTitle=function(t){W.proxyCall("updateTitle",t)},_.freezeContentHeight=F,_.thawContentHeight=N;var it=0;_.initialize()}function Yt(e){t.each(Re,function(t,n){null==e[t]&&(e[t]=n(e))})}function Wt(t){return e.localeData(t)||e.localeData("en")}function Ut(){function n(t,e){return!U.options.lazyFetching||s(t,e)?o(t,e):bt.resolve($)}function i(){$=r(nt),U.trigger("eventsReset",$)}function r(t){var e,n,i=[];for(e=0;e<t.length;e++)n=t[e],n.start.clone().stripZone()<Z&&U.getEventEnd(n).stripZone()>q&&i.push(n);return i}function s(t,e){return!q||t<q||e>Z}function o(t,e){return q=t,Z=e,l()}function l(){return u(tt,"reset")}function a(t){return u(E(t))}function u(t,e){var n,i;for("reset"===e?nt=[]:"add"!==e&&(nt=C(nt,t)),n=0;n<t.length;n++)i=t[n],"pending"!==i._status&&et++,i._fetchId=(i._fetchId||0)+1,i._status="pending";for(n=0;n<t.length;n++)i=t[n],c(i,i._fetchId);return et?new bt(function(t){U.one("eventsReceived",t)}):bt.resolve($)}function c(e,n){f(e,function(i){var r,s,o,l=t.isArray(e.events);if(n===e._fetchId&&"rejected"!==e._status){if(e._status="resolved",i)for(r=0;r<i.length;r++)s=i[r],o=l?s:F(s,e),o&&nt.push.apply(nt,_(o));h()}})}function d(t){var e="pending"===t._status;t._status="rejected",e&&h()}function h(){et--,et||(i(nt),U.trigger("eventsReceived",$))}function f(e,n){var i,r,s=qt.sourceFetchers;for(i=0;i<s.length;i++){if(r=s[i].call(U,e,q.clone(),Z.clone(),U.options.timezone,n),r===!0)return;if("object"==typeof r)return void f(r,n)}var o=e.events;if(o)t.isFunction(o)?(U.pushLoading(),o.call(U,q.clone(),Z.clone(),U.options.timezone,function(t){n(t),U.popLoading()})):t.isArray(o)?n(o):n();else{var l=e.url;if(l){var a,u=e.success,c=e.error,d=e.complete;a=t.isFunction(e.data)?e.data():e.data;var h=t.extend({},a||{}),g=J(e.startParam,U.options.startParam),p=J(e.endParam,U.options.endParam),v=J(e.timezoneParam,U.options.timezoneParam);g&&(h[g]=q.format()),p&&(h[p]=Z.format()),U.options.timezone&&"local"!=U.options.timezone&&(h[v]=U.options.timezone),U.pushLoading(),t.ajax(t.extend({},xe,e,{data:h,success:function(e){e=e||[];var i=K(u,this,arguments);t.isArray(i)&&(e=i),n(e)},error:function(){K(c,this,arguments),n()},complete:function(){K(d,this,arguments),U.popLoading()}}))}else n()}}function g(t){var e=p(t);e&&(tt.push(e),u([e],"add"))}function p(e){var n,i,r=qt.sourceNormalizers;if(t.isFunction(e)||t.isArray(e)?n={events:e}:"string"==typeof e?n={url:e}:"object"==typeof e&&(n=t.extend({},e)),n){for(n.className?"string"==typeof n.className&&(n.className=n.className.split(/\s+/)):n.className=[],t.isArray(n.events)&&(n.origArray=n.events,n.events=t.map(n.events,function(t){return F(t,n)})),i=0;i<r.length;i++)r[i].call(U,n);return n}}function v(t){y(b(t))}function m(t){null==t?y(tt,!0):y(E(t))}function y(e,n){var r;for(r=0;r<e.length;r++)d(e[r]);n?(tt=[],nt=[]):(tt=t.grep(tt,function(t){for(r=0;r<e.length;r++)if(t===e[r])return!1;return!0}),nt=C(nt,e)),i()}function S(){return tt.slice(1)}function w(e){return t.grep(tt,function(t){return t.id&&t.id===e})[0]}function E(e){e?t.isArray(e)||(e=[e]):e=[];var n,i=[];for(n=0;n<e.length;n++)i.push.apply(i,b(e[n]));return i}function b(e){var n,i;for(n=0;n<tt.length;n++)if(i=tt[n],i===e)return[i];return i=w(e),i?[i]:t.grep(tt,function(t){return D(e,t)})}function D(t,e){return t&&e&&T(t)==T(e)}function T(t){return("object"==typeof t?t.origArray||t.googleCalendarId||t.url||t.events:null)||t}function C(e,n){return t.grep(e,function(t){for(var e=0;e<n.length;e++)if(t.source===n[e])return!1;return!0})}function H(t){R([t])}function R(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.start=U.moment(n.start),n.end?n.end=U.moment(n.end):n.end=null,Y(n,x(n));i()}function x(e){var n={};return t.each(e,function(t,e){I(t)&&void 0!==e&&X(e)&&(n[t]=e)}),n}function I(t){return!/^_|^(id|allDay|start|end)$/.test(t)}function k(t,e){return L([t],e)}function L(t,e){var n,r,s,o,l,a=[];for(s=0;s<t.length;s++)if(r=F(t[s])){for(n=_(r),o=0;o<n.length;o++)l=n[o],l.source||(e&&(Q.events.push(l),l.source=Q),nt.push(l));a=a.concat(n)}return a.length&&i(),a}function M(e){var n,r;for(null==e?e=function(){return!0}:t.isFunction(e)||(n=e+"",e=function(t){return t._id==n}),nt=t.grep(nt,e,!0),r=0;r<tt.length;r++)t.isArray(tt[r].events)&&(tt[r].events=t.grep(tt[r].events,e,!0));i()}function B(e){return t.isFunction(e)?t.grep(nt,e):null!=e?(e+="",t.grep(nt,function(t){return t._id==e})):nt}function z(t){t.start=U.moment(t.start),t.end&&(t.end=U.moment(t.end)),jt(t)}function F(n,i){var r,s,o,l={};if(U.options.eventDataTransform&&(n=U.options.eventDataTransform(n)),i&&i.eventDataTransform&&(n=i.eventDataTransform(n)),t.extend(l,n),i&&(l.source=i),l._id=n._id||(void 0===n.id?"_fc"+Ie++:n.id+""),n.className?"string"==typeof n.className?l.className=n.className.split(/\s+/):l.className=n.className:l.className=[],r=n.start||n.date,s=n.end,j(r)&&(r=e.duration(r)),j(s)&&(s=e.duration(s)),n.dow||e.isDuration(r)||e.isDuration(s))l.start=r?e.duration(r):null,l.end=s?e.duration(s):null,l._recurring=!0;else{if(r&&(r=U.moment(r),!r.isValid()))return!1;s&&(s=U.moment(s),s.isValid()||(s=null)),o=n.allDay,void 0===o&&(o=J(i?i.allDayDefault:void 0,U.options.allDayDefault)),A(r,s,o,l)}return U.normalizeEvent(l),l}function A(t,e,n,i){i.start=t,i.end=e,i.allDay=n,V(i),jt(i)}function V(t){P(t),t.end&&!t.end.isAfter(t.start)&&(t.end=null),t.end||(U.options.forceEventDuration?t.end=U.getDefaultEventEnd(t.allDay,t.start):t.end=null)}function P(t){null==t.allDay&&(t.allDay=!(t.start.hasTime()||t.end&&t.end.hasTime())),t.allDay?(t.start.stripTime(),t.end&&t.end.stripTime()):(t.start.hasTime()||(t.start=U.applyTimezone(t.start.time(0))),t.end&&!t.end.hasTime()&&(t.end=U.applyTimezone(t.end.time(0))))}function _(e,n,i){var r,s,o,l,a,u,c,d,h,f=[];if(n=n||q,i=i||Z,e)if(e._recurring){if(s=e.dow)for(r={},o=0;o<s.length;o++)r[s[o]]=!0;for(l=n.clone().stripTime();l.isBefore(i);)r&&!r[l.day()]||(a=e.start,u=e.end,c=l.clone(),d=null,a&&(c=c.time(a)),u&&(d=l.clone().time(u)),h=t.extend({},e),A(c,d,!a&&!u,h),f.push(h)),l.add(1,"days")}else f.push(e);return f}function Y(e,n,i){function r(t,e){return i?O(t,e,i):n.allDay?G(t,e):N(t,e)}var s,o,l,a,u,c,d={};return n=n||{},n.start||(n.start=e.start.clone()),void 0===n.end&&(n.end=e.end?e.end.clone():null),null==n.allDay&&(n.allDay=e.allDay),V(n),s={start:e._start.clone(),end:e._end?e._end.clone():U.getDefaultEventEnd(e._allDay,e._start),allDay:n.allDay},V(s),o=null!==e._end&&null===n.end,l=r(n.start,s.start),n.end?(a=r(n.end,s.end),u=a.subtract(l)):u=null,t.each(n,function(t,e){I(t)&&void 0!==e&&(d[t]=e)}),c=W(B(e._id),o,n.allDay,l,u,d),{dateDelta:l,durationDelta:u,undo:c}}function W(e,n,i,r,s,o){var l=U.getIsAmbigTimezone(),a=[];return r&&!r.valueOf()&&(r=null),s&&!s.valueOf()&&(s=null),t.each(e,function(e,u){var c,d;c={start:u.start.clone(),end:u.end?u.end.clone():null,allDay:u.allDay},t.each(o,function(t){c[t]=u[t]}),d={start:u._start,end:u._end,allDay:i},V(d),n?d.end=null:s&&!d.end&&(d.end=U.getDefaultEventEnd(d.allDay,d.start)),r&&(d.start.add(r),d.end&&d.end.add(r)),s&&d.end.add(s),l&&!d.allDay&&(r||s)&&(d.start.stripZone(),d.end&&d.end.stripZone()),t.extend(u,o,d),jt(u),a.push(function(){t.extend(u,c),jt(u)})}),function(){for(var t=0;t<a.length;t++)a[t]()}}var U=this;U.requestEvents=n,U.reportEventChange=i,U.isFetchNeeded=s,U.fetchEvents=o,U.fetchEventSources=u,U.refetchEvents=l,U.refetchEventSources=a,U.getEventSources=S,U.getEventSourceById=w,U.addEventSource=g,U.removeEventSource=v,U.removeEventSources=m,U.updateEvent=H,U.updateEvents=R,U.renderEvent=k,U.renderEvents=L,U.removeEvents=M,U.clientEvents=B,U.mutateEvent=Y,U.normalizeEventDates=V,U.normalizeEventTimes=P;var q,Z,$,Q={events:[]},tt=[Q],et=0,nt=[];t.each((U.options.events?[U.options.events]:[]).concat(U.options.eventSources||[]),function(t,e){var n=p(e);n&&tt.push(n)}),U.getEventCache=function(){return nt},U.getPrunedEventCache=function(){return $},U.rezoneArrayEventSources=function(){var e,n,i;for(e=0;e<tt.length;e++)if(n=tt[e].events,t.isArray(n))for(i=0;i<n.length;i++)z(n[i])},U.buildEventFromInput=F,U.expandEvent=_}function jt(t){t._allDay=t.allDay,t._start=t.start.clone(),t._end=t.end?t.end.clone():null}var qt=t.fullCalendar={version:"3.1.0",internalApiVersion:7},Zt=qt.views={};t.fn.fullCalendar=function(e){var n=Array.prototype.slice.call(arguments,1),i=this;return this.each(function(r,s){var o,l=t(s),a=l.data("fullCalendar");"string"==typeof e?a&&t.isFunction(a[e])&&(o=a[e].apply(a,n),r||(i=o),"destroy"===e&&l.removeData("fullCalendar")):a||(a=new De(l,e),l.data("fullCalendar",a),a.render())}),i};var $t=["header","footer","buttonText","buttonIcons","themeButtonIcons"];qt.intersectRanges=F,qt.applyAll=K,qt.debounce=at,qt.isInt=ot,qt.htmlEscape=tt,qt.cssToStr=nt,qt.proxy=lt,qt.capitaliseFirstLetter=rt,qt.getOuterRect=h,qt.getClientRect=f,qt.getContentRect=g,qt.getScrollbarWidths=p;var Qt=null;qt.preventDefault=T,qt.intersectRects=R,qt.parseFieldSpecs=L,qt.compareByFieldSpecs=M,qt.compareByFieldSpec=B,qt.flexibleCompare=z,qt.computeIntervalUnit=A,qt.divideRangeByDuration=P,qt.divideDurationByDuration=_,qt.multiplyDuration=Y,qt.durationHasTime=W;var Xt=["sun","mon","tue","wed","thu","fri","sat"],Kt=["year","month","week","day","hour","minute","second","millisecond"];qt.log=function(){var t=window.console;if(t&&t.log)return t.log.apply(t,arguments)},qt.warn=function(){var t=window.console;return t&&t.warn?t.warn.apply(t,arguments):qt.log.apply(qt,arguments)};var Jt={}.hasOwnProperty;qt.createObject=Z;var te=/^\s*\d{4}-\d\d$/,ee=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,ne=e.fn,ie=t.extend({},ne),re=e.momentProperties;re.push("_fullCalendar"),re.push("_ambigTime"),re.push("_ambigZone"),qt.moment=function(){return ut(arguments)},qt.moment.utc=function(){var t=ut(arguments,!0);return t.hasTime()&&t.utc(),t},qt.moment.parseZone=function(){return ut(arguments,!0,!0)},ne.week=ne.weeks=function(t){var e=this._locale._fullCalendar_weekCalc;return null==t&&"function"==typeof e?e(this):"ISO"===e?ie.isoWeek.apply(this,arguments):ie.week.apply(this,arguments)},ne.time=function(t){if(!this._fullCalendar)return ie.time.apply(this,arguments);if(null==t)return e.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,e.isDuration(t)||e.isMoment(t)||(t=e.duration(t));var n=0;return e.isDuration(t)&&(n=24*Math.floor(t.asDays())),this.hours(n+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},ne.stripTime=function(){return this._ambigTime||(this.utc(!0),this.set({hours:0,minutes:0,seconds:0,ms:0}),this._ambigTime=!0,this._ambigZone=!0),this},ne.hasTime=function(){return!this._ambigTime},ne.stripZone=function(){var t;return this._ambigZone||(t=this._ambigTime,this.utc(!0),this._ambigTime=t||!1,this._ambigZone=!0),this},ne.hasZone=function(){return!this._ambigZone},ne.local=function(t){return ie.local.call(this,this._ambigZone||t),this._ambigTime=!1,this._ambigZone=!1,this},ne.utc=function(t){return ie.utc.call(this,t),this._ambigTime=!1,this._ambigZone=!1,this},ne.utcOffset=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),ie.utcOffset.apply(this,arguments)},ne.format=function(){return this._fullCalendar&&arguments[0]?dt(this,arguments[0]):this._ambigTime?ct(this,"YYYY-MM-DD"):this._ambigZone?ct(this,"YYYY-MM-DD[T]HH:mm:ss"):ie.format.apply(this,arguments)},ne.toISOString=function(){return this._ambigTime?ct(this,"YYYY-MM-DD"):this._ambigZone?ct(this,"YYYY-MM-DD[T]HH:mm:ss"):ie.toISOString.apply(this,arguments)};var se={t:function(t){return ct(t,"a").charAt(0)},T:function(t){return ct(t,"A").charAt(0)}};qt.formatRange=gt;var oe={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},le={},ae={Y:{value:1,unit:"year"},M:{value:2,unit:"month"},W:{value:3,unit:"week"},w:{value:3,unit:"week"},D:{value:4,unit:"day"},d:{value:4,unit:"day"}};qt.queryMostGranularFormatUnit=function(t){ +var e,n,i,r,s=mt(t);for(e=0;e<s.length;e++)n=s[e],n.token&&(i=ae[n.token.charAt(0)],i&&(!r||i.value>r.value)&&(r=i));return r?r.unit:null},qt.Class=St,St.extend=function(){var t,e,n=arguments.length;for(t=0;t<n;t++)e=arguments[t],t<n-1&&Et(this,e);return wt(this,e||{})},St.mixin=function(t){Et(this,t)},qt.Promise=bt,bt.immediate=!0,bt.resolve=function(e){if(e&&"function"==typeof e.resolve)return e.promise();if(e&&"function"==typeof e.then)return e;var n=t.Deferred().resolve(e),i=n.promise();if(bt.immediate){var r=i.then;i._value=e,i.then=function(t,n){return"function"==typeof t?bt.resolve(t(e)):r.call(i,t,n)}}return i},bt.reject=function(){return t.Deferred().reject().promise()},bt.all=function(e){var n,i,r,s=!1;if(bt.immediate)for(s=!0,n=[],i=0;i<e.length;i++)if(r=e[i],r&&"function"==typeof r.state&&"resolved"===r.state()&&"_value"in r)n.push(r._value);else{if(r&&"function"==typeof r.then){s=!1;break}n.push(r)}return s?bt.resolve(n):t.when.apply(t.when,e).then(function(){return t.when(t.makeArray(arguments))})},qt.TaskQueue=Dt;var ue=qt.EmitterMixin={on:function(e,n){return t(this).on(e,this._prepareIntercept(n)),this},one:function(e,n){return t(this).one(e,this._prepareIntercept(n)),this},_prepareIntercept:function(e){var n=function(t,n){return e.apply(n.context||this,n.args||[])};return e.guid||(e.guid=t.guid++),n.guid=e.guid,n},off:function(e,n){return t(this).off(e,n),this},trigger:function(e){var n=Array.prototype.slice.call(arguments,1);return t(this).triggerHandler(e,{args:n}),this},triggerWith:function(e,n,i){return t(this).triggerHandler(e,{context:n,args:i}),this}},ce=qt.ListenerMixin=function(){var e=0,n={listenerId:null,listenTo:function(e,n,i){if("object"==typeof n)for(var r in n)n.hasOwnProperty(r)&&this.listenTo(e,r,n[r]);else"string"==typeof n&&e.on(n+"."+this.getListenerNamespace(),t.proxy(i,this))},stopListeningTo:function(t,e){t.off((e||"")+"."+this.getListenerNamespace())},getListenerNamespace:function(){return null==this.listenerId&&(this.listenerId=e++),"_listener"+this.listenerId}};return n}(),de={isIgnoringMouse:!1,delayUnignoreMouse:null,initMouseIgnoring:function(t){this.delayUnignoreMouse=at(lt(this,"unignoreMouse"),t||1e3)},tempIgnoreMouse:function(){this.isIgnoringMouse=!0,this.delayUnignoreMouse()},unignoreMouse:function(){this.isIgnoringMouse=!1}},he=St.extend(ce,{isHidden:!0,options:null,el:null,margin:10,constructor:function(t){this.options=t||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var e=this,n=this.options;this.el=t('<div class="fc-popover"/>').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&this.listenTo(t(document),"mousedown",this.documentMousedown)},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(t(document),"mousedown")},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),c=t(window),h=d(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,h.is(window)||h.is(document)?(h=c,e=0,n=0):(i=h.offset(),e=i.top,n=i.left),e+=c.scrollTop(),n+=c.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+h.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+h.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),fe=qt.CoordCache=St.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(e){this.els=t(e.els),this.isHorizontal=e.isHorizontal,this.isVertical=e.isVertical,this.forcedOffsetParentEl=e.offsetParent?t(e.offsetParent):null},build:function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},buildElHorizontals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().left,l=s.outerWidth();e.push(o),n.push(o+l)}),this.lefts=e,this.rights=n},buildElVerticals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().top,l=s.outerHeight();e.push(o),n.push(o+l)}),this.tops=e,this.bottoms=n},getHorizontalIndex:function(t){this.ensureBuilt();var e,n=this.lefts,i=this.rights,r=n.length;for(e=0;e<r;e++)if(t>=n[e]&&t<i[e])return e},getVerticalIndex:function(t){this.ensureBuilt();var e,n=this.tops,i=this.bottoms,r=n.length;for(e=0;e<r;e++)if(t>=n[e]&&t<i[e])return e},getLeftOffset:function(t){return this.ensureBuilt(),this.lefts[t]},getLeftPosition:function(t){return this.ensureBuilt(),this.lefts[t]-this.origin.left},getRightOffset:function(t){return this.ensureBuilt(),this.rights[t]},getRightPosition:function(t){return this.ensureBuilt(),this.rights[t]-this.origin.left},getWidth:function(t){return this.ensureBuilt(),this.rights[t]-this.lefts[t]},getTopOffset:function(t){return this.ensureBuilt(),this.tops[t]},getTopPosition:function(t){return this.ensureBuilt(),this.tops[t]-this.origin.top},getBottomOffset:function(t){return this.ensureBuilt(),this.bottoms[t]},getBottomPosition:function(t){return this.ensureBuilt(),this.bottoms[t]-this.origin.top},getHeight:function(t){return this.ensureBuilt(),this.bottoms[t]-this.tops[t]},queryBoundingRect:function(){var t;return this.els.length>0&&(t=d(this.els.eq(0)),!t.is(document))?f(t):null},isPointInBounds:function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},isLeftInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.left&&t<this.boundingRect.right},isTopInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.top&&t<this.boundingRect.bottom}}),ge=qt.DragListener=St.extend(ce,de,{options:null,subjectEl:null,originX:null,originY:null,scrollEl:null,isInteracting:!1,isDistanceSurpassed:!1,isDelayEnded:!1,isDragging:!1,isTouch:!1,delay:null,delayTimeoutId:null,minDistance:null,handleTouchScrollProxy:null,constructor:function(t){this.options=t||{},this.handleTouchScrollProxy=lt(this,"handleTouchScroll"),this.initMouseIgnoring(500)},startInteraction:function(e,n){var i=b(e);if("mousedown"===e.type){if(this.isIgnoringMouse)return;if(!S(e))return;e.preventDefault()}this.isInteracting||(n=n||{},this.delay=J(n.delay,this.options.delay,0),this.minDistance=J(n.distance,this.options.distance,0),this.subjectEl=this.options.subjectEl,this.isInteracting=!0,this.isTouch=i,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.originX=w(e),this.originY=E(e),this.scrollEl=d(t(e.target)),this.bindHandlers(),this.initAutoScroll(),this.handleInteractionStart(e),this.startDelay(e),this.minDistance||this.handleDistanceSurpassed(e))},handleInteractionStart:function(t){this.trigger("interactionStart",t)},endInteraction:function(t,e){this.isInteracting&&(this.endDrag(t),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null),this.destroyAutoScroll(),this.unbindHandlers(),this.isInteracting=!1,this.handleInteractionEnd(t,e),this.isTouch&&this.tempIgnoreMouse())},handleInteractionEnd:function(t,e){this.trigger("interactionEnd",t,e||!1)},bindHandlers:function(){var e=this,n=1;this.isTouch?(this.listenTo(t(document),{touchmove:this.handleTouchMove,touchend:this.endInteraction,touchcancel:this.endInteraction,touchstart:function(t){n?n--:e.endInteraction(t,!0)}}),!C(this.handleTouchScrollProxy)&&this.scrollEl&&this.listenTo(this.scrollEl,"scroll",this.handleTouchScroll)):this.listenTo(t(document),{mousemove:this.handleMouseMove,mouseup:this.endInteraction}),this.listenTo(t(document),{selectstart:T,contextmenu:T})},unbindHandlers:function(){this.stopListeningTo(t(document)),H(this.handleTouchScrollProxy),this.scrollEl&&this.stopListeningTo(this.scrollEl,"scroll")},startDrag:function(t,e){this.startInteraction(t,e),this.isDragging||(this.isDragging=!0,this.handleDragStart(t))},handleDragStart:function(t){this.trigger("dragStart",t)},handleMove:function(t){var e,n=w(t)-this.originX,i=E(t)-this.originY,r=this.minDistance;this.isDistanceSurpassed||(e=n*n+i*i,e>=r*r&&this.handleDistanceSurpassed(t)),this.isDragging&&this.handleDrag(n,i,t)},handleDrag:function(t,e,n){this.trigger("drag",t,e,n),this.updateAutoScroll(n)},endDrag:function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},handleDragEnd:function(t){this.trigger("dragEnd",t)},startDelay:function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},handleDelayEnd:function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},handleDistanceSurpassed:function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},handleTouchMove:function(t){this.isDragging&&t.preventDefault(),this.handleMove(t)},handleMouseMove:function(t){this.handleMove(t)},handleTouchScroll:function(t){this.isDragging||this.endInteraction(t,!0)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1)),this["_"+t]&&this["_"+t].apply(this,Array.prototype.slice.call(arguments,1))}});ge.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,"scroll",at(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=h(this.scrollEl))},updateAutoScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(E(t)-o.top))/s,n=(s-(o.bottom-E(t)))/s,i=(s-(w(t)-o.left))/s,r=(s-(o.right-w(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),i>=0&&i<=1?a=i*this.scrollSpeed*-1:r>=0&&r<=1&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(lt(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var pe=ge.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(t,e){ge.call(this,e),this.component=t},handleInteractionStart:function(t){var e,n,i,r=this.subjectEl;this.computeCoords(),t?(n={left:w(t),top:E(t)},i=n,r&&(e=h(r),i=x(i,e)),this.origHit=this.queryHit(i.left,i.top),r&&this.options.subjectCenter&&(this.origHit&&(e=R(this.origHit,e)||e),i=I(e)),this.coordAdjust=k(i,n)):(this.origHit=null,this.coordAdjust=null),ge.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},handleDragStart:function(t){var e;ge.prototype.handleDragStart.apply(this,arguments),e=this.queryHit(w(t),E(t)),e&&this.handleHitOver(e)},handleDrag:function(t,e,n){var i;ge.prototype.handleDrag.apply(this,arguments),i=this.queryHit(w(n),E(n)),Tt(i,this.hit)||(this.hit&&this.handleHitOut(),i&&this.handleHitOver(i))},handleDragEnd:function(){this.handleHitDone(),ge.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(t){var e=Tt(t,this.origHit);this.hit=t,this.trigger("hitOver",this.hit,e,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},handleInteractionEnd:function(){ge.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},handleScrollEnd:function(){ge.prototype.handleScrollEnd.apply(this,arguments),this.computeCoords()},queryHit:function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)}}),ve=St.extend(ce,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.y0=E(e),this.x0=w(e),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),b(e)?this.listenTo(t(document),"touchmove",this.handleMove):this.listenTo(t(document),"mousemove",this.handleMove))},stop:function(e,n){function i(){r.isAnimating=!1,r.removeElement(),r.top0=r.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(t(document)),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),t.addClass("fc-unselectable"),t.appendTo(this.parentEl)),t},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(t){this.topDelta=E(t)-this.y0,this.leftDelta=w(t)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),me=qt.Grid=St.extend(ce,de,{hasDayInteractions:!0,view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL"),this.elsByFill={},this.dayDragListener=this.buildDayDragListener(),this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(t){this.start=t.start.clone(),this.end=t.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var t,e,n=this.view;this.eventTimeFormat=n.opt("eventTimeFormat")||n.opt("timeFormat")||this.computeEventTimeFormat(),t=n.opt("displayEventTime"),null==t&&(t=this.computeDisplayEventTime()),e=n.opt("displayEventEnd"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},spanToSegs:function(t){},diffDates:function(t,e){return this.largeUnit?O(t,e,this.largeUnit):N(t,e)},prepareHits:function(){},releaseHits:function(){},queryHit:function(t,e){},getHitSpan:function(t){},getHitEl:function(t){},setElement:function(t){this.el=t,this.hasDayInteractions&&(D(t),this.bindDayHandler("touchstart",this.dayTouchStart),this.bindDayHandler("mousedown",this.dayMousedown)),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(e,n){var i=this;this.el.on(e,function(e){if(!t(e.target).is(i.segSelector+","+i.segSelector+" *,.fc-more,a[data-goto]"))return n.call(i,e)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(t(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},dayMousedown:function(t){this.isIgnoringMouse||this.dayDragListener.startInteraction(t,{})},dayTouchStart:function(t){var e=this.view,n=e.opt("selectLongPressDelay");(e.isSelected||e.selectedEvent)&&this.tempIgnoreMouse(),null==n&&(n=e.opt("longPressDelay")),this.dayDragListener.startInteraction(t,{delay:n})},buildDayDragListener:function(){var t,e,n=this,i=this.view,r=i.opt("selectable"),l=new pe(this,{scroll:i.opt("dragScroll"),interactionStart:function(){t=l.origHit,e=null},dragStart:function(){i.unselect()},hitOver:function(i,o,l){l&&(o||(t=null),r&&(e=n.computeSelection(n.getHitSpan(l),n.getHitSpan(i)),e?n.renderSelection(e):e===!1&&s()))},hitOut:function(){t=null,e=null,n.unrenderSelection()},hitDone:function(){o()},interactionEnd:function(r,s){s||(t&&!n.isIgnoringMouse&&i.triggerDayClick(n.getHitSpan(t),n.getHitEl(t),r),e&&i.reportSelection(e,r))}});return l},clearDragListeners:function(){this.dayDragListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(t,e){var n=this.fabricateHelperEvent(t,e);return this.renderHelper(n,e)},fabricateHelperEvent:function(t,e){var n=e?Z(e.event):{};return n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDates(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),n},renderHelper:function(t,e){},unrenderHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(t,e){var n=this.computeSelectionSpan(t,e);return!(n&&!this.view.calendar.isSelectionSpanAllowed(n))&&n},computeSelectionSpan:function(t,e){var n=[t.start,t.end,e.start,e.end];return n.sort(st),{start:n[0].clone(),end:n[3].clone()}},renderHighlight:function(t){this.renderFill("highlight",this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},renderFill:function(t,e){},unrenderFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;i<n.length;i++)o+=this.fillSegHtml(e,n[i]);t(o).each(function(e,i){var o=n[e],a=t(i);s&&(a=s.call(r,o,a)),a&&(a=t(a),a.is(r.fillSegTag)&&(o.el=a,l.push(o)))})}return l},fillSegTag:"div",fillSegHtml:function(t,e){var n=this[t+"SegClasses"],i=this[t+"SegCss"],r=n?n.call(this,e):[],s=nt(i?i.call(this,e):{});return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(s?' style="'+s+'"':"")+" />"},getDayClasses:function(t,e){var n=this.view,i=n.calendar.getNow(),r=["fc-"+Xt[t.day()]];return 1==n.intervalDuration.as("months")&&t.month()!=n.intervalStart.month()&&r.push("fc-other-month"),t.isSame(i,"day")?(r.push("fc-today"),e!==!0&&r.push(n.highlightStateClass)):t<i?r.push("fc-past"):r.push("fc-future"),r}});me.mixin({segSelector:".fc-event-container > *",mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(t){var e,n=[],i=[];for(e=0;e<t.length;e++)(Rt(t[e])?n:i).push(t[e]);this.segs=[].concat(this.renderBgEvents(n),this.renderFgEvents(i))},renderBgEvents:function(t){var e=this.eventsToSegs(t);return this.renderBgSegs(e)||e},renderFgEvents:function(t){var e=this.eventsToSegs(t);return this.renderFgSegs(e)||e},unrenderEvents:function(){this.handleSegMouseout(),this.clearDragListeners(),this.unrenderFgSegs(),this.unrenderBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(t){},unrenderFgSegs:function(){},renderFgSegEls:function(e,n){var i,r=this.view,s="",o=[];if(e.length){for(i=0;i<e.length;i++)s+=this.fgSegHtml(e[i],n);t(s).each(function(n,i){var s=e[n],l=r.resolveEventEl(s.event,t(i));l&&(l.data("fc-seg",s),s.el=l,o.push(s))})}return o},fgSegHtml:function(t,e){},renderBgSegs:function(t){return this.renderFill("bgEvent",t)},unrenderBgSegs:function(){this.unrenderFill("bgEvent")},bgEventSegEl:function(t,e){return this.view.resolveEventEl(t.event,e)},bgEventSegClasses:function(t){var e=t.event,n=e.source||{};return["fc-bgevent"].concat(e.className,n.className||[])},bgEventSegCss:function(t){return{"background-color":this.getSegSkinCss(t)["background-color"]}},businessHoursSegClasses:function(t){return["fc-nonbusiness","fc-bgevent"]},buildBusinessHourSegs:function(t,e){return this.eventsToSegs(this.buildBusinessHourEvents(t,e))},buildBusinessHourEvents:function(e,n){var i,r=this.view.calendar;return null==n&&(n=r.options.businessHours),i=r.computeBusinessHourEvents(e,n),!i.length&&n&&(i=[t.extend({},ke,{start:this.view.end,end:this.view.end,dow:null})]),i},bindSegHandlers:function(){this.bindSegHandlersToEl(this.el)},bindSegHandlersToEl:function(t){this.bindSegHandlerToEl(t,"touchstart",this.handleSegTouchStart),this.bindSegHandlerToEl(t,"touchend",this.handleSegTouchEnd),this.bindSegHandlerToEl(t,"mouseenter",this.handleSegMouseover),this.bindSegHandlerToEl(t,"mouseleave",this.handleSegMouseout),this.bindSegHandlerToEl(t,"mousedown",this.handleSegMousedown),this.bindSegHandlerToEl(t,"click",this.handleSegClick)},bindSegHandlerToEl:function(e,n,i){var r=this;e.on(n,this.segSelector,function(e){var n=t(this).data("fc-seg");if(n&&!r.isDraggingSeg&&!r.isResizingSeg)return i.call(r,n,e)})},handleSegClick:function(t,e){var n=this.view.publiclyTrigger("eventClick",t.el[0],t.event,e);n===!1&&e.preventDefault()},handleSegMouseover:function(t,e){this.isIgnoringMouse||this.mousedOverSeg||(this.mousedOverSeg=t,this.view.isEventResizable(t.event)&&t.el.addClass("fc-allow-mouse-resize"),this.view.publiclyTrigger("eventMouseover",t.el[0],t.event,e))},handleSegMouseout:function(t,e){e=e||{},this.mousedOverSeg&&(t=t||this.mousedOverSeg,this.mousedOverSeg=null,this.view.isEventResizable(t.event)&&t.el.removeClass("fc-allow-mouse-resize"),this.view.publiclyTrigger("eventMouseout",t.el[0],t.event,e))},handleSegMousedown:function(t,e){var n=this.startSegResize(t,e,{distance:5});!n&&this.view.isEventDraggable(t.event)&&this.buildSegDragListener(t).startInteraction(e,{distance:5})},handleSegTouchStart:function(t,e){var n,i,r=this.view,s=t.event,o=r.isEventSelected(s),l=r.isEventDraggable(s),a=r.isEventResizable(s),u=!1;o&&a&&(u=this.startSegResize(t,e)),u||!l&&!a||(i=r.opt("eventLongPressDelay"),null==i&&(i=r.opt("longPressDelay")),n=l?this.buildSegDragListener(t):this.buildSegSelectListener(t),n.startInteraction(e,{delay:o?0:i})),this.tempIgnoreMouse()},handleSegTouchEnd:function(t,e){this.tempIgnoreMouse()},startSegResize:function(e,n,i){return!!t(n.target).is(".fc-resizer")&&(this.buildSegResizeListener(e,t(n.target).is(".fc-start-resizer")).startInteraction(n,i),!0)},buildSegDragListener:function(t){var e,n,i,r=this,l=this.view,a=l.calendar,u=t.el,c=t.event;if(this.segDragListener)return this.segDragListener;var d=this.segDragListener=new pe(l,{scroll:l.opt("dragScroll"),subjectEl:u,subjectCenter:!0,interactionStart:function(i){t.component=r,e=!1,n=new ve(t.el,{additionalClass:"fc-dragging",parentEl:l.el,opacity:d.isTouch?null:l.opt("dragOpacity"),revertDuration:l.opt("dragRevertDuration"),zIndex:2}),n.hide(),n.start(i)},dragStart:function(n){d.isTouch&&!l.isEventSelected(c)&&l.selectEvent(c),e=!0,r.handleSegMouseout(t,n),r.segDragStart(t,n),l.hideEvent(c)},hitOver:function(e,o,u){var h;t.hit&&(u=t.hit),i=r.computeEventDrop(u.component.getHitSpan(u),e.component.getHitSpan(e),c),i&&!a.isEventSpanAllowed(r.eventToSpan(i),c)&&(s(),i=null),i&&(h=l.renderDrag(i,t))?(h.addClass("fc-dragging"),d.isTouch||r.applyDragOpacity(h),n.hide()):n.show(),o&&(i=null)},hitOut:function(){l.unrenderDrag(),n.show(),i=null},hitDone:function(){o()},interactionEnd:function(s){delete t.component,n.stop(!i,function(){e&&(l.unrenderDrag(),r.segDragStop(t,s)),i?l.reportEventDrop(c,i,r.largeUnit,u,s):l.showEvent(c)}),r.segDragListener=null}});return d},buildSegSelectListener:function(t){var e=this,n=this.view,i=t.event;if(this.segDragListener)return this.segDragListener;var r=this.segDragListener=new ge({dragStart:function(t){r.isTouch&&!n.isEventSelected(i)&&n.selectEvent(i)},interactionEnd:function(t){e.segDragListener=null}});return r},segDragStart:function(t,e){this.isDraggingSeg=!0,this.view.publiclyTrigger("eventDragStart",t.el[0],t.event,e,{})},segDragStop:function(t,e){this.isDraggingSeg=!1,this.view.publiclyTrigger("eventDragStop",t.el[0],t.event,e,{})},computeEventDrop:function(t,e,n){var i,r,s=this.view.calendar,o=t.start,l=e.start;return o.hasTime()===l.hasTime()?(i=this.diffDates(l,o),n.allDay&&W(i)?(r={start:n.start.clone(),end:s.getEventEnd(n),allDay:!1},s.normalizeEventTimes(r)):r=Ht(n),r.start.add(i),r.end&&r.end.add(i)):r={start:l.clone(),end:null,allDay:!l.hasTime()},r},applyDragOpacity:function(t){var e=this.view.opt("dragOpacity");null!=e&&t.css("opacity",e)},externalDragStart:function(e,n){var i,r,s=this.view;s.opt("droppable")&&(i=t((n?n.item:null)||e.target),r=s.opt("dropAccept"),(t.isFunction(r)?r.call(i[0],i):i.is(r))&&(this.isDraggingExternal||this.listenToExternalDrag(i,e,n)))},listenToExternalDrag:function(t,e,n){var i,r=this,l=this.view.calendar,a=Mt(t),u=r.externalDragListener=new pe(this,{interactionStart:function(){r.isDraggingExternal=!0},hitOver:function(t){i=r.computeExternalDrop(t.component.getHitSpan(t),a),i&&!l.isExternalSpanAllowed(r.eventToSpan(i),i,a.eventProps)&&(s(),i=null),i&&r.renderDrag(i)},hitOut:function(){i=null},hitDone:function(){o(),r.unrenderDrag()},interactionEnd:function(e){i&&r.view.reportExternalDrop(a,i,t,e,n),r.isDraggingExternal=!1,r.externalDragListener=null}});u.startDrag(e)},computeExternalDrop:function(t,e){var n=this.view.calendar,i={start:n.applyTimezone(t.start),end:null};return e.startTime&&!i.start.hasTime()&&i.start.time(e.startTime),e.duration&&(i.end=i.start.clone().add(e.duration)),i},renderDrag:function(t,e){},unrenderDrag:function(){},buildSegResizeListener:function(t,e){var n,i,r=this,l=this.view,a=l.calendar,u=t.el,c=t.event,d=a.getEventEnd(c),h=this.segResizeListener=new pe(this,{scroll:l.opt("dragScroll"),subjectEl:u,interactionStart:function(){n=!1},dragStart:function(e){n=!0,r.handleSegMouseout(t,e),r.segResizeStart(t,e)},hitOver:function(n,o,u){var h=r.getHitSpan(u),f=r.getHitSpan(n);i=e?r.computeEventStartResize(h,f,c):r.computeEventEndResize(h,f,c),i&&(a.isEventSpanAllowed(r.eventToSpan(i),c)?i.start.isSame(c.start.clone().stripZone())&&i.end.isSame(d.clone().stripZone())&&(i=null):(s(),i=null)),i&&(l.hideEvent(c),r.renderEventResize(i,t))},hitOut:function(){i=null,l.showEvent(c)},hitDone:function(){r.unrenderEventResize(),o()},interactionEnd:function(e){n&&r.segResizeStop(t,e),i?l.reportEventResize(c,i,r.largeUnit,u,e):l.showEvent(c),r.segResizeListener=null}});return h},segResizeStart:function(t,e){this.isResizingSeg=!0,this.view.publiclyTrigger("eventResizeStart",t.el[0],t.event,e,{})},segResizeStop:function(t,e){this.isResizingSeg=!1,this.view.publiclyTrigger("eventResizeStop",t.el[0],t.event,e,{})},computeEventStartResize:function(t,e,n){return this.computeEventResize("start",t,e,n)},computeEventEndResize:function(t,e,n){return this.computeEventResize("end",t,e,n)},computeEventResize:function(t,e,n,i){var r,s,o=this.view.calendar,l=this.diffDates(n[t],e[t]);return r={start:i.start.clone(),end:o.getEventEnd(i),allDay:i.allDay},r.allDay&&W(l)&&(r.allDay=!1,o.normalizeEventTimes(r)),r[t].add(l),r.start.isBefore(r.end)||(s=this.minResizeDuration||(i.allDay?o.defaultAllDayEventDuration:o.defaultTimedEventDuration),"start"==t?r.start=r.end.clone().subtract(s):r.end=r.start.clone().add(s)),r},renderEventResize:function(t,e){},unrenderEventResize:function(){},getEventTimeText:function(t,e,n){return null==e&&(e=this.eventTimeFormat),null==n&&(n=this.displayEventEnd),this.displayEventTime&&t.start.hasTime()?n&&t.end?this.view.formatRange(t,e):t.start.format(e):""},getSegClasses:function(t,e,n){var i=this.view,r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(this.getSegCustomClasses(t));return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),i.isEventSelected(t.event)&&r.push("fc-selected"),r},getSegCustomClasses:function(t){var e=t.event;return[].concat(e.className,e.source?e.source.className:[])},getSegSkinCss:function(t){return{"background-color":this.getSegBackgroundColor(t),"border-color":this.getSegBorderColor(t),color:this.getSegTextColor(t)}},getSegBackgroundColor:function(t){return t.event.backgroundColor||t.event.color||this.getSegDefaultBackgroundColor(t)},getSegDefaultBackgroundColor:function(t){var e=t.event.source||{};return e.backgroundColor||e.color||this.view.opt("eventBackgroundColor")||this.view.opt("eventColor")},getSegBorderColor:function(t){return t.event.borderColor||t.event.color||this.getSegDefaultBorderColor(t)},getSegDefaultBorderColor:function(t){var e=t.event.source||{};return e.borderColor||e.color||this.view.opt("eventBorderColor")||this.view.opt("eventColor")},getSegTextColor:function(t){return t.event.textColor||this.getSegDefaultTextColor(t)},getSegDefaultTextColor:function(t){var e=t.event.source||{};return e.textColor||this.view.opt("eventTextColor")},eventToSegs:function(t){return this.eventsToSegs([t])},eventToSpan:function(t){return this.eventToSpans(t)[0]},eventToSpans:function(t){var e=this.eventToRange(t);return this.eventRangeToSpans(e,t)},eventsToSegs:function(e,n){var i=this,r=kt(e),s=[];return t.each(r,function(t,e){var r,o=[];for(r=0;r<e.length;r++)o.push(i.eventToRange(e[r]));if(xt(e[0]))for(o=i.invertRanges(o),r=0;r<o.length;r++)s.push.apply(s,i.eventRangeToSegs(o[r],e[0],n));else for(r=0;r<o.length;r++)s.push.apply(s,i.eventRangeToSegs(o[r],e[r],n))}),s},eventToRange:function(t){var e=this.view.calendar,n=t.start.clone().stripZone(),i=(t.end?t.end.clone():e.getDefaultEventEnd(null!=t.allDay?t.allDay:!t.start.hasTime(),t.start)).stripZone();return e.localizeMoment(n),e.localizeMoment(i),{start:n,end:i}},eventRangeToSegs:function(t,e,n){var i,r=this.eventRangeToSpans(t,e),s=[];for(i=0;i<r.length;i++)s.push.apply(s,this.eventSpanToSegs(r[i],e,n));return s},eventRangeToSpans:function(e,n){return[t.extend({},e)]},eventSpanToSegs:function(t,e,n){var i,r,s=n?n(t):this.spanToSegs(t); +for(i=0;i<s.length;i++)r=s[i],r.event=e,r.eventStartMS=+t.start,r.eventDurationMS=t.end-t.start;return s},invertRanges:function(t){var e,n,i=this.view,r=i.start.clone(),s=i.end.clone(),o=[],l=r;for(t.sort(Lt),e=0;e<t.length;e++)n=t[e],n.start>l&&o.push({start:l,end:n.start}),l=n.end;return l<s&&o.push({start:l,end:s}),o},sortEventSegs:function(t){t.sort(lt(this,"compareEventSegs"))},compareEventSegs:function(t,e){return t.eventStartMS-e.eventStartMS||e.eventDurationMS-t.eventDurationMS||e.event.allDay-t.event.allDay||M(t.event,e.event,this.view.eventOrderSpecs)}}),qt.pluckEventDateProps=Ht,qt.isBgEvent=Rt,qt.dataAttrPrefix="";var ye=qt.DayTableMixin={breakOnWeeks:!1,dayDates:null,dayIndices:null,daysPerRow:null,rowCnt:null,colCnt:null,colHeadFormat:null,updateDayTable:function(){for(var t,e,n,i=this.view,r=this.start.clone(),s=-1,o=[],l=[];r.isBefore(this.end);)i.isHiddenDay(r)?o.push(s+.5):(s++,o.push(s),l.push(r.clone())),r.add(1,"days");if(this.breakOnWeeks){for(e=l[0].day(),t=1;t<l.length&&l[t].day()!=e;t++);n=Math.ceil(l.length/t)}else n=1,t=l.length;this.dayDates=l,this.dayIndices=o,this.daysPerRow=t,this.rowCnt=n,this.updateDayTableCols()},updateDayTableCols:function(){this.colCnt=this.computeColCnt(),this.colHeadFormat=this.view.opt("columnFormat")||this.computeColHeadFormat()},computeColCnt:function(){return this.daysPerRow},getCellDate:function(t,e){return this.dayDates[this.getCellDayIndex(t,e)].clone()},getCellRange:function(t,e){var n=this.getCellDate(t,e),i=n.clone().add(1,"days");return{start:n,end:i}},getCellDayIndex:function(t,e){return t*this.daysPerRow+this.getColDayIndex(e)},getColDayIndex:function(t){return this.isRTL?this.colCnt-1-t:t},getDateDayIndex:function(t){var e=this.dayIndices,n=t.diff(this.start,"days");return n<0?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(t){var e,n,i,r,s,o=this.daysPerRow,l=this.view.computeDayRange(t),a=this.getDateDayIndex(l.start),u=this.getDateDayIndex(l.end.clone().subtract(1,"days")),c=[];for(e=0;e<this.rowCnt;e++)n=e*o,i=n+o-1,r=Math.max(a,n),s=Math.min(u,i),r=Math.ceil(r),s=Math.floor(s),r<=s&&c.push({row:e,firstRowDayIndex:r-n,lastRowDayIndex:s-n,isStart:r===a,isEnd:s===u});return c},sliceRangeByDay:function(t){var e,n,i,r,s,o,l=this.daysPerRow,a=this.view.computeDayRange(t),u=this.getDateDayIndex(a.start),c=this.getDateDayIndex(a.end.clone().subtract(1,"days")),d=[];for(e=0;e<this.rowCnt;e++)for(n=e*l,i=n+l-1,r=n;r<=i;r++)s=Math.max(u,r),o=Math.min(c,r),s=Math.ceil(s),o=Math.floor(o),s<=o&&d.push({row:e,firstRowDayIndex:s-n,lastRowDayIndex:o-n,isStart:s===u,isEnd:o===c});return d},renderHeadHtml:function(){var t=this.view;return'<div class="fc-row '+t.widgetHeaderClass+'"><table><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},renderHeadDateCellsHtml:function(){var t,e,n=[];for(t=0;t<this.colCnt;t++)e=this.getCellDate(0,t),n.push(this.renderHeadDateCellHtml(e));return n.join("")},renderHeadDateCellHtml:function(t,e,n){var i=this.view,r=["fc-day-header",i.widgetHeaderClass];return 1===this.rowCnt?r=r.concat(this.getDayClasses(t,!0)):r.push("fc-"+Xt[t.day()]),'<th class="'+r.join(" ")+'"'+(1===this.rowCnt?' data-date="'+t.format("YYYY-MM-DD")+'"':"")+(e>1?' colspan="'+e+'"':"")+(n?" "+n:"")+">"+i.buildGotoAnchorHtml({date:t,forceOff:this.rowCnt>1||1===this.colCnt},tt(t.format(this.colHeadFormat)))+"</th>"},renderBgTrHtml:function(t){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):"")+"</tr>"},renderBgIntroHtml:function(t){return this.renderIntroHtml()},renderBgCellsHtml:function(t){var e,n,i=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),i.push(this.renderBgCellHtml(n));return i.join("")},renderBgCellHtml:function(t,e){var n=this.view,i=this.getDayClasses(t);return i.unshift("fc-day",n.widgetContentClass),'<td class="'+i.join(" ")+'" data-date="'+t.format("YYYY-MM-DD")+'"'+(e?" "+e:"")+"></td>"},renderIntroHtml:function(){},bookendCells:function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))}},Se=qt.DayGrid=me.extend(ye,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(t){var e,n,i=this.view,r=this.rowCnt,s=this.colCnt,o="";for(e=0;e<r;e++)o+=this.renderDayRowHtml(e,t);for(this.el.html(o),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day"),this.rowCoordCache=new fe({els:this.rowEls,isVertical:!0}),this.colCoordCache=new fe({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),e=0;e<r;e++)for(n=0;n<s;n++)i.publiclyTrigger("dayRender",null,this.getCellDate(e,n),this.getCellEl(e,n))},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var t=this.buildBusinessHourSegs(!0);this.renderFill("businessHours",t,"bgevent")},unrenderBusinessHours:function(){this.unrenderFill("businessHours")},renderDayRowHtml:function(t,e){var n=this.view,i=["fc-row","fc-week",n.widgetContentClass];return e&&i.push("fc-rigid"),'<div class="'+i.join(" ")+'"><div class="fc-bg"><table>'+this.renderBgTrHtml(t)+'</table></div><div class="fc-content-skeleton"><table>'+(this.numbersVisible?"<thead>"+this.renderNumberTrHtml(t)+"</thead>":"")+"</table></div></div>"},renderNumberTrHtml:function(t){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):"")+"</tr>"},renderNumberIntroHtml:function(t){return this.renderIntroHtml()},renderNumberCellsHtml:function(t){var e,n,i=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),i.push(this.renderNumberCellHtml(n));return i.join("")},renderNumberCellHtml:function(t){var e,n,i="";return this.view.dayNumbersVisible||this.view.cellWeekNumbersVisible?(e=this.getDayClasses(t),e.unshift("fc-day-top"),this.view.cellWeekNumbersVisible&&(n="ISO"===t._locale._fullCalendar_weekCalc?1:t._locale.firstDayOfWeek()),i+='<td class="'+e.join(" ")+'" data-date="'+t.format()+'">',this.view.cellWeekNumbersVisible&&t.day()==n&&(i+=this.view.buildGotoAnchorHtml({date:t,type:"week"},{class:"fc-week-number"},t.format("w"))),this.view.dayNumbersVisible&&(i+=this.view.buildGotoAnchorHtml(t,{class:"fc-day-number"},t.date())),i+="</td>"):"<td/>"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(t){var e,n,i=this.sliceRangeByRow(t);for(e=0;e<i.length;e++)n=i[e],this.isRTL?(n.leftCol=this.daysPerRow-1-n.lastRowDayIndex,n.rightCol=this.daysPerRow-1-n.firstRowDayIndex):(n.leftCol=n.firstRowDayIndex,n.rightCol=n.lastRowDayIndex);return i},prepareHits:function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},releaseHits:function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},queryHit:function(t,e){if(this.colCoordCache.isLeftInBounds(t)&&this.rowCoordCache.isTopInBounds(e)){var n=this.colCoordCache.getHorizontalIndex(t),i=this.rowCoordCache.getVerticalIndex(e);if(null!=i&&null!=n)return this.getCellHit(i,n)}},getHitSpan:function(t){return this.getCellRange(t.row,t.col)},getHitEl:function(t){return this.getCellEl(t.row,t.col)},getCellHit:function(t,e){return{row:t,col:e,component:this,left:this.colCoordCache.getLeftOffset(e),right:this.colCoordCache.getRightOffset(e),top:this.rowCoordCache.getTopOffset(t),bottom:this.rowCoordCache.getBottomOffset(t)}},getCellEl:function(t,e){return this.cellEls.eq(t*this.colCnt+e)},renderDrag:function(t,e){if(this.renderHighlight(this.eventToSpan(t)),e&&e.component!==this)return this.renderEventLocationHelper(t,e)},unrenderDrag:function(){this.unrenderHighlight(),this.unrenderHelper()},renderEventResize:function(t,e){return this.renderHighlight(this.eventToSpan(t)),this.renderEventLocationHelper(t,e)},unrenderEventResize:function(){this.unrenderHighlight(),this.unrenderHelper()},renderHelper:function(e,n){var i,r=[],s=this.eventToSegs(e);return s=this.renderFgSegEls(s),i=this.renderSegRows(s),this.rowEls.each(function(e,s){var o,l=t(s),a=t('<div class="fc-helper-skeleton"><table/></div>');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n,i){var r,s,o,l=[];for(n=this.renderFillSegEls(e,n),r=0;r<n.length;r++)s=n[r],o=this.renderFillRow(e,s,i),this.rowEls.eq(s.row).append(o),l.push(o[0]);return this.elsByFill[e]=t(l),n},renderFillRow:function(e,n,i){var r,s,o=this.colCnt,l=n.leftCol,a=n.rightCol+1;return i=i||e.toLowerCase(),r=t('<div class="fc-'+i+'-skeleton"><table><tr/></table></div>'),s=r.find("tr"),l>0&&s.append('<td colspan="'+l+'"/>'),s.append(n.el.attr("colspan",a-l)),a<o&&s.append('<td colspan="'+(o-a)+'"/>'),this.bookendCells(s),r}});Se.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),me.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return me.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return me.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},unrenderFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;n<e.length;n++)i.push(this.renderSegRow(n,e[n]));return i},fgSegHtml:function(t,e){var n,i,r=this.view,s=t.event,o=r.isEventDraggable(s),l=!e&&s.allDay&&t.isStart&&r.isEventResizableFromStart(s),a=!e&&s.allDay&&t.isEnd&&r.isEventResizableFromEnd(s),u=this.getSegClasses(t,o,l||a),c=nt(this.getSegSkinCss(t)),d="";return u.unshift("fc-day-grid-event","fc-h-event"),t.isStart&&(n=this.getEventTimeText(s),n&&(d='<span class="fc-time">'+tt(n)+"</span>")),i='<span class="fc-title">'+(tt(s.title||"")||" ")+"</span>",'<a class="'+u.join(" ")+'"'+(s.url?' href="'+tt(s.url)+'"':"")+(c?' style="'+c+'"':"")+'><div class="fc-content">'+(this.isRTL?i+" "+d:d+" "+i)+"</div>"+(l?'<div class="fc-resizer fc-start-resizer" />':"")+(a?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},renderSegRow:function(e,n){function i(e){for(;o<e;)c=(m[r-1]||[])[o],c?c.attr("rowspan",parseInt(c.attr("rowspan")||1,10)+1):(c=t("<td/>"),l.append(c)),v[r][o]=c,m[r][o]=c,o++}var r,s,o,l,a,u,c,d=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t("<tbody/>"),p=[],v=[],m=[];for(r=0;r<f;r++){if(s=h[r],o=0,l=t("<tr/>"),p.push([]),v.push([]),m.push([]),s)for(a=0;a<s.length;a++){for(u=s[a],i(u.leftCol),c=t('<td class="fc-event-container"/>').append(u.el),u.leftCol!=u.rightCol?c.attr("colspan",u.rightCol-u.leftCol+1):m[r][o]=c;o<=u.rightCol;)v[r][o]=c,p[r][o]=u,o++;l.append(c)}i(d),this.bookendCells(l),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:v,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(this.sortEventSegs(t),e=0;e<t.length;e++){for(n=t[e],i=0;i<r.length&&Bt(n,r[i]);i++);n.level=i,(r[i]||(r[i]=[])).push(n)}for(i=0;i<r.length;i++)r[i].sort(zt);return r},groupSegRows:function(t){var e,n=[];for(e=0;e<this.rowCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].row].push(t[e]);return n}}),Se.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(t){var e,n,i=this.rowStructs||[];for(e=0;e<i.length;e++)this.unlimitRow(e),n=!!t&&("number"==typeof t?t:this.computeRowLevelLimit(e)),n!==!1&&this.limitRow(e,n)},computeRowLevelLimit:function(e){function n(e,n){s=Math.max(s,t(n).outerHeight())}var i,r,s,o=this.rowEls.eq(e),l=o.height(),a=this.rowStructs[e].tbodyEl.children();for(i=0;i<a.length;i++)if(r=a.eq(i).removeClass("fc-limited"),s=0,r.find("> td > :first-child").each(n),r.position().top+s>l)return i;return!1},limitRow:function(e,n){function i(i){for(;b<i;)u=S.getCellSegs(e,b,n),u.length&&(h=s[n-1][b],y=S.renderMoreLink(e,b,u),m=t("<div/>").append(y),h.append(m),E.push(m[0])),b++}var r,s,o,l,a,u,c,d,h,f,g,p,v,m,y,S=this,w=this.rowStructs[e],E=[],b=0;if(n&&n<w.segLevels.length){for(r=w.segLevels[n-1],s=w.cellMatrix,o=w.tbodyEl.children().slice(n).addClass("fc-limited").get(),l=0;l<r.length;l++){for(a=r[l],i(a.leftCol),d=[],c=0;b<=a.rightCol;)u=this.getCellSegs(e,b,n),d.push(u),c+=u.length,b++;if(c){for(h=s[n-1][a.leftCol],f=h.attr("rowspan")||1,g=[],p=0;p<d.length;p++)v=t('<td class="fc-more-cell"/>').attr("rowspan",f),u=d[p],y=this.renderMoreLink(e,a.leftCol+p,[a].concat(u)),m=t("<div/>").append(y),v.append(m),g.push(v[0]),E.push(v[0]);h.addClass("fc-limited").after(t(g)),o.push(h[0])}}i(this.colCnt),w.moreEls=t(E),w.limitedEls=t(o)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n,i){var r=this,s=this.view;return t('<a class="fc-more"/>').text(this.getMoreLinkText(i.length)).on("click",function(o){var l=s.opt("eventLimitClick"),a=r.getCellDate(e,n),u=t(this),c=r.getCellEl(e,n),d=r.getCellSegs(e,n),h=r.resliceDaySegs(d,a),f=r.resliceDaySegs(i,a);"function"==typeof l&&(l=s.publiclyTrigger("eventLimitClick",null,{date:a,dayEl:c,moreEl:u,segs:h,hiddenSegs:f},o)),"popover"===l?r.showSegPopover(e,n,u,h):"string"==typeof l&&s.calendar.zoomTo(a,l)})},showSegPopover:function(t,e,n,i){var r,s,o=this,l=this.view,a=n.parent();r=1==this.rowCnt?l.el:this.rowEls.eq(t),s={className:"fc-more-popover",content:this.renderSegPopoverContent(t,e,i),parentEl:this.view.el,top:r.offset().top,autoHide:!0,viewportConstrain:l.opt("popoverViewportConstrain"),hide:function(){if(o.popoverSegs)for(var t,e=0;e<o.popoverSegs.length;++e)t=o.popoverSegs[e],l.publiclyTrigger("eventDestroy",t.event,t.event,t.el);o.segPopover.removeElement(),o.segPopover=null,o.popoverSegs=null}},this.isRTL?s.right=a.offset().left+a.outerWidth()+1:s.left=a.offset().left-1,this.segPopover=new he(s),this.segPopover.show(),this.bindSegHandlersToEl(this.segPopover.el)},renderSegPopoverContent:function(e,n,i){var r,s=this.view,o=s.opt("theme"),l=this.getCellDate(e,n).format(s.opt("dayPopoverFormat")),a=t('<div class="fc-header '+s.widgetHeaderClass+'"><span class="fc-close '+(o?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span><span class="fc-title">'+tt(l)+'</span><div class="fc-clear"/></div><div class="fc-body '+s.widgetContentClass+'"><div class="fc-event-container"></div></div>'),u=a.find(".fc-event-container");for(i=this.renderFgSegEls(i,!0),this.popoverSegs=i,r=0;r<i.length;r++)this.prepareHits(),i[r].hit=this.getCellHit(e,n),this.releaseHits(),u.append(i[r].el);return a},resliceDaySegs:function(e,n){var i=t.map(e,function(t){return t.event}),r=n.clone(),s=r.clone().add(1,"days"),o={start:r,end:s};return e=this.eventsToSegs(i,function(t){var e=F(t,o);return e?[e]:[]}),this.sortEventSegs(e),e},getMoreLinkText:function(t){var e=this.view.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},getCellSegs:function(t,e,n){for(var i,r=this.rowStructs[t].segMatrix,s=n||0,o=[];s<r.length;)i=r[s][e],i&&o.push(i),s++;return o}});var we=qt.TimeGrid=me.extend(ye,{slotDuration:null,snapDuration:null,snapsPerSlot:null,minTime:null,maxTime:null,labelFormat:null,labelInterval:null,colEls:null,slatContainerEl:null,slatEls:null,nowIndicatorEls:null,colCoordCache:null,slatCoordCache:null,constructor:function(){me.apply(this,arguments),this.processOptions()},renderDates:function(){this.el.html(this.renderHtml()),this.colEls=this.el.find(".fc-day"),this.slatContainerEl=this.el.find(".fc-slats"),this.slatEls=this.slatContainerEl.find("tr"),this.colCoordCache=new fe({els:this.colEls,isHorizontal:!0}),this.slatCoordCache=new fe({els:this.slatEls,isVertical:!0}),this.renderContentSkeleton()},renderHtml:function(){return'<div class="fc-bg"><table>'+this.renderBgTrHtml(0)+'</table></div><div class="fc-slats"><table>'+this.renderSlatRowHtml()+"</table></div>"},renderSlatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=e.duration(+this.minTime);l<this.maxTime;)t=this.start.clone().time(l),n=ot(_(l,this.labelInterval)),i='<td class="fc-axis fc-time '+r.widgetContentClass+'" '+r.axisStyleAttr()+">"+(n?"<span>"+tt(t.format(this.labelFormat))+"</span>":"")+"</td>",o+='<tr data-time="'+t.format("HH:mm:ss")+'"'+(n?"":' class="fc-minor"')+">"+(s?"":i)+'<td class="'+r.widgetContentClass+'"/>'+(s?i:"")+"</tr>",l.add(this.slotDuration);return o},processOptions:function(){var n,i=this.view,r=i.opt("slotDuration"),s=i.opt("snapDuration");r=e.duration(r),s=s?e.duration(s):r,this.slotDuration=r,this.snapDuration=s,this.snapsPerSlot=r/s,this.minResizeDuration=s,this.minTime=e.duration(i.opt("minTime")),this.maxTime=e.duration(i.opt("maxTime")),n=i.opt("slotLabelFormat"),t.isArray(n)&&(n=n[n.length-1]),this.labelFormat=n||i.opt("smallTimeFormat"),n=i.opt("slotLabelInterval"),this.labelInterval=n?e.duration(n):this.computeLabelInterval(r)},computeLabelInterval:function(t){var n,i,r;for(n=Oe.length-1;n>=0;n--)if(i=e.duration(Oe[n]),r=_(i,t),ot(r)&&r>1)return i;return e.duration(t)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(t,e){var n=this.snapsPerSlot,i=this.colCoordCache,r=this.slatCoordCache;if(i.isLeftInBounds(t)&&r.isTopInBounds(e)){var s=i.getHorizontalIndex(t),o=r.getVerticalIndex(e);if(null!=s&&null!=o){var l=r.getTopOffset(o),a=r.getHeight(o),u=(e-l)/a,c=Math.floor(u*n),d=o*n+c,h=l+c/n*a,f=l+(c+1)/n*a;return{col:s,snap:d,component:this,left:i.getLeftOffset(s),right:i.getRightOffset(s),top:h,bottom:f}}}},getHitSpan:function(t){var e,n=this.getCellDate(0,t.col),i=this.computeSnapTime(t.snap);return n.time(i),e=n.clone().add(this.snapDuration),{start:n,end:e}},getHitEl:function(t){return this.colEls.eq(t.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},spanToSegs:function(t){var e,n=this.sliceRangeByTimes(t);for(e=0;e<n.length;e++)this.isRTL?n[e].col=this.daysPerRow-1-n[e].dayIndex:n[e].col=n[e].dayIndex;return n},sliceRangeByTimes:function(t){var e,n,i,r,s=[];for(n=0;n<this.daysPerRow;n++)i=this.dayDates[n].clone(),r={start:i.clone().time(this.minTime),end:i.clone().time(this.maxTime)},e=F(t,r),e&&(e.dayIndex=n,s.push(e));return s},updateSize:function(t){this.slatCoordCache.build(),t&&this.updateSegVerticals([].concat(this.fgSegs||[],this.bgSegs||[],this.businessSegs||[]))},getTotalSlatHeight:function(){return this.slatContainerEl.outerHeight()},computeDateTop:function(t,n){return this.computeTimeTop(e.duration(t-n.clone().stripTime()))},computeTimeTop:function(t){var e,n,i=this.slatEls.length,r=(t-this.minTime)/this.slotDuration;return r=Math.max(0,r),r=Math.min(i,r),e=Math.floor(r),e=Math.min(e,i-1),n=r-e,this.slatCoordCache.getTopPosition(e)+this.slatCoordCache.getHeight(e)*n},renderDrag:function(t,e){return e?this.renderEventLocationHelper(t,e):void this.renderHighlight(this.eventToSpan(t))},unrenderDrag:function(){this.unrenderHelper(),this.unrenderHighlight()},renderEventResize:function(t,e){return this.renderEventLocationHelper(t,e)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(t,e){return this.renderHelperSegs(this.eventToSegs(t),e)},unrenderHelper:function(){this.unrenderHelperSegs()},renderBusinessHours:function(){this.renderBusinessSegs(this.buildBusinessHourSegs())},unrenderBusinessHours:function(){this.unrenderBusinessSegs()},getNowIndicatorUnit:function(){return"minute"},renderNowIndicator:function(e){var n,i=this.spanToSegs({start:e,end:e}),r=this.computeDateTop(e,e),s=[];for(n=0;n<i.length;n++)s.push(t('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",r).appendTo(this.colContainerEls.eq(i[n].col))[0]);i.length>0&&s.push(t('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",r).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=t(s)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderEventLocationHelper(t):this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(t){this.renderHighlightSegs(this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});we.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var e,n,i="";for(e=0;e<this.colCnt;e++)i+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';n=t('<div class="fc-content-skeleton"><table><tr>'+i+"</tr></table></div>"),this.colContainerEls=n.find(".fc-content-col"),this.helperContainerEls=n.find(".fc-helper-container"),this.fgContainerEls=n.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=n.find(".fc-bgevent-container"),this.highlightContainerEls=n.find(".fc-highlight-container"),this.businessContainerEls=n.find(".fc-business-container"),this.bookendCells(n.find("tr")),this.el.append(n)},renderFgSegs:function(t){return t=this.renderFgSegsIntoContainers(t,this.fgContainerEls),this.fgSegs=t,t},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(e,n){var i,r,s,o=[];for(e=this.renderFgSegsIntoContainers(e,this.helperContainerEls),i=0;i<e.length;i++)r=e[i],n&&n.col===r.col&&(s=n.el,r.el.css({left:s.css("left"),right:s.css("right"),"margin-left":s.css("margin-left"),"margin-right":s.css("margin-right")})),o.push(r.el[0]);return this.helperSegs=e,t(o)},unrenderHelperSegs:function(){this.unrenderNamedSegs("helperSegs")},renderBgSegs:function(t){return t=this.renderFillSegEls("bgEvent",t),this.updateSegVerticals(t),this.attachSegsByCol(this.groupSegsByCol(t),this.bgContainerEls),this.bgSegs=t,t},unrenderBgSegs:function(){this.unrenderNamedSegs("bgSegs")},renderHighlightSegs:function(t){t=this.renderFillSegEls("highlight",t),this.updateSegVerticals(t),this.attachSegsByCol(this.groupSegsByCol(t),this.highlightContainerEls),this.highlightSegs=t},unrenderHighlightSegs:function(){this.unrenderNamedSegs("highlightSegs")},renderBusinessSegs:function(t){t=this.renderFillSegEls("businessHours",t),this.updateSegVerticals(t),this.attachSegsByCol(this.groupSegsByCol(t),this.businessContainerEls),this.businessSegs=t},unrenderBusinessSegs:function(){this.unrenderNamedSegs("businessSegs")},groupSegsByCol:function(t){var e,n=[];for(e=0;e<this.colCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].col].push(t[e]);return n},attachSegsByCol:function(t,e){var n,i,r;for(n=0;n<this.colCnt;n++)for(i=t[n],r=0;r<i.length;r++)e.eq(n).append(i[r].el)},unrenderNamedSegs:function(t){var e,n=this[t];if(n){for(e=0;e<n.length;e++)n[e].el.remove();this[t]=null}},renderFgSegsIntoContainers:function(t,e){var n,i;for(t=this.renderFgSegEls(t),n=this.groupSegsByCol(t),i=0;i<this.colCnt;i++)this.updateFgSegCoords(n[i]);return this.attachSegsByCol(n,e),t},fgSegHtml:function(t,e){var n,i,r,s=this.view,o=t.event,l=s.isEventDraggable(o),a=!e&&t.isStart&&s.isEventResizableFromStart(o),u=!e&&t.isEnd&&s.isEventResizableFromEnd(o),c=this.getSegClasses(t,l,a||u),d=nt(this.getSegSkinCss(t));return c.unshift("fc-time-grid-event","fc-v-event"),s.isMultiDayEvent(o)?(t.isStart||t.isEnd)&&(n=this.getEventTimeText(t),i=this.getEventTimeText(t,"LT"),r=this.getEventTimeText(t,null,!1)):(n=this.getEventTimeText(o),i=this.getEventTimeText(o,"LT"),r=this.getEventTimeText(o,null,!1)),'<a class="'+c.join(" ")+'"'+(o.url?' href="'+tt(o.url)+'"':"")+(d?' style="'+d+'"':"")+'><div class="fc-content">'+(n?'<div class="fc-time" data-start="'+tt(r)+'" data-full="'+tt(i)+'"><span>'+tt(n)+"</span></div>":"")+(o.title?'<div class="fc-title">'+tt(o.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(u?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},updateSegVerticals:function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},computeSegVerticals:function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.top=this.computeDateTop(n.start,n.start),n.bottom=this.computeDateTop(n.end,n.start)},assignSegVerticals:function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateSegVerticalCss(n))},generateSegVerticalCss:function(t){return{top:t.top,bottom:-t.bottom}},updateFgSegCoords:function(t){this.computeSegVerticals(t),this.computeFgSegHorizontals(t),this.assignSegVerticals(t),this.assignFgSegHorizontals(t)},computeFgSegHorizontals:function(t){var e,n,i;if(this.sortEventSegs(t),e=Ft(t),Nt(e),n=e[0]){for(i=0;i<n.length;i++)Gt(n[i]);for(i=0;i<n.length;i++)this.computeFgSegForwardBack(n[i],0,0)}},computeFgSegForwardBack:function(t,e,n){var i,r=t.forwardSegs;if(void 0===t.forwardCoord)for(r.length?(this.sortForwardSegs(r),this.computeFgSegForwardBack(r[0],e+1,n),t.forwardCoord=r[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),i=0;i<r.length;i++)this.computeFgSegForwardBack(r[i],0,t.forwardCoord)},sortForwardSegs:function(t){t.sort(lt(this,"compareForwardSegs"))},compareForwardSegs:function(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||this.compareEventSegs(t,e)},assignFgSegHorizontals:function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateFgSegHorizontalCss(n)),n.bottom-n.top<30&&n.el.addClass("fc-short")},generateFgSegHorizontalCss:function(t){var e,n,i=this.view.opt("slotEventOverlap"),r=t.backwardCoord,s=t.forwardCoord,o=this.generateSegVerticalCss(t);return i&&(s=Math.min(1,r+2*(s-r))),this.isRTL?(e=1-s,n=r):(e=r,n=1-s),o.zIndex=t.level+1,o.left=100*e+"%",o.right=100*n+"%",i&&t.forwardPressure&&(o[this.isRTL?"marginLeft":"marginRight"]=20),o}});var Ee=qt.View=St.extend(ue,ce,{type:null,name:null,title:null,calendar:null,options:null,el:null,isDateSet:!1,isDateRendered:!1,dateRenderQueue:null,isEventsBound:!1,isEventsSet:!1,isEventsRendered:!1,eventRenderQueue:null,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,selectedEvent:null,eventOrderSpecs:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,isNowIndicatorRendered:null,initialNowDate:null,initialNowQueriedMs:null,nowIndicatorTimeoutID:null,nowIndicatorIntervalID:null,constructor:function(t,n,i,r){this.calendar=t,this.type=this.name=n,this.options=i,this.intervalDuration=r||e.duration(1,"day"),this.nextDayThreshold=e.duration(this.opt("nextDayThreshold")),this.initThemingProps(),this.initHiddenDays(),this.isRTL=this.opt("isRTL"),this.eventOrderSpecs=L(this.opt("eventOrder")),this.dateRenderQueue=new Dt,this.eventRenderQueue=new Dt(this.opt("eventRenderWait")),this.initialize()},initialize:function(){},opt:function(t){return this.options[t]},publiclyTrigger:function(t,e){var n=this.calendar;return n.publiclyTrigger.apply(n,[t,e||this].concat(Array.prototype.slice.call(arguments,2),[this]))},rejectOn:function(t,e){var n=this;return new bt(function(i,r){function s(){n.off(t,r)}n.one(t,r),e.then(function(t){s(),i(t)},function(){s(),r()})})},setRange:function(e){t.extend(this,e),this.updateTitle()},computeRange:function(t){var e,n,i=A(this.intervalDuration),r=t.clone().startOf(i),s=r.clone().add(this.intervalDuration);return/year|month|week|day/.test(i)?(r.stripTime(),s.stripTime()):(r.hasTime()||(r=this.calendar.time(0)),s.hasTime()||(s=this.calendar.time(0))),e=r.clone(),e=this.skipHiddenDays(e),n=s.clone(),n=this.skipHiddenDays(n,-1,!0),{intervalUnit:i,intervalStart:r,intervalEnd:s,start:e,end:n}},computePrevDate:function(t){return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(t){return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(t,e){return this.intervalDuration.as("days")<=1&&this.isHiddenDay(t)&&(t=this.skipHiddenDays(t,e),t.startOf("day")),t},updateTitle:function(){this.title=this.computeTitle(),this.calendar.setToolbarsTitle(this.title)},computeTitle:function(){return this.formatRange({start:this.calendar.applyTimezone(this.intervalStart),end:this.calendar.applyTimezone(this.intervalEnd)},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),gt(t.start,i,e,n,this.opt("isRTL"))},getAllDayHtml:function(){return this.opt("allDayHtml")||tt(this.opt("allDayText"))},buildGotoAnchorHtml:function(e,n,i){var r,s,o,l;return t.isPlainObject(e)?(r=e.date,s=e.type,o=e.forceOff):r=e,r=qt.moment(r),l={date:r.format("YYYY-MM-DD"),type:s||"day"},"string"==typeof n&&(i=n,n=null),n=n?" "+it(n):"",i=i||"",!o&&this.opt("navLinks")?"<a"+n+' data-goto="'+tt(JSON.stringify(l))+'">'+i+"</a>":"<span"+n+">"+i+"</span>"},setElement:function(t){this.el=t,this.bindGlobalHandlers(),this.renderSkeleton()},removeElement:function(){this.unsetDate(),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.el.remove()},renderSkeleton:function(){},unrenderSkeleton:function(){},setDate:function(t){var e=this.isDateSet;this.isDateSet=!0,this.handleDate(t,e),this.trigger(e?"dateReset":"dateSet",t)},unsetDate:function(){this.isDateSet&&(this.isDateSet=!1,this.handleDateUnset(),this.trigger("dateUnset"))},handleDate:function(t,e){var n=this;this.unbindEvents(),this.requestDateRender(t).then(function(){n.bindEvents()})},handleDateUnset:function(){this.unbindEvents(),this.requestDateUnrender()},requestDateRender:function(t){var e=this;return this.dateRenderQueue.add(function(){return e.executeDateRender(t)})},requestDateUnrender:function(){var t=this;return this.dateRenderQueue.add(function(){return t.executeDateUnrender()})},executeDateRender:function(t){var e=this;return t?this.captureInitialScroll():this.captureScroll(),this.freezeHeight(),this.executeDateUnrender().then(function(){t&&e.setRange(e.computeRange(t)),e.render&&e.render(),e.renderDates(),e.updateSize(),e.renderBusinessHours(),e.startNowIndicator(),e.thawHeight(),e.releaseScroll(),e.isDateRendered=!0,e.onDateRender(),e.trigger("dateRender")})},executeDateUnrender:function(){var t=this;return t.isDateRendered?this.requestEventsUnrender().then(function(){t.unselect(),t.stopNowIndicator(),t.triggerUnrender(),t.unrenderBusinessHours(),t.unrenderDates(),t.destroy&&t.destroy(),t.isDateRendered=!1,t.trigger("dateUnrender")}):bt.resolve()},onDateRender:function(){this.triggerRender()},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.publiclyTrigger("viewRender",this,this,this.el); +},triggerUnrender:function(){this.publiclyTrigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(t(document),"mousedown",this.handleDocumentMousedown),this.listenTo(t(document),"touchstart",this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},initThemingProps:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var t,n,i,r=this;this.opt("nowIndicator")&&(t=this.getNowIndicatorUnit(),t&&(n=lt(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,i=this.initialNowDate.clone().startOf(t).add(1,t)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,n(),i=+e.duration(1,t),i=Math.max(100,i),r.nowIndicatorIntervalID=setInterval(n,i)},i)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},updateSize:function(t){t&&this.captureScroll(),this.updateHeight(t),this.updateWidth(t),this.updateNowIndicator(),t&&this.releaseScroll()},updateWidth:function(t){},updateHeight:function(t){var e=this.calendar;this.setHeight(e.getSuggestedViewHeight(),e.isHeightAuto())},setHeight:function(t,e){},capturedScroll:null,capturedScrollDepth:0,captureScroll:function(){return!this.capturedScrollDepth++&&(this.capturedScroll=this.isDateRendered?this.queryScroll():{},!0)},captureInitialScroll:function(e){this.captureScroll()&&(this.capturedScroll.isInitial=!0,e?t.extend(this.capturedScroll,e):this.capturedScroll.isComputed=!0)},releaseScroll:function(){var e=this.capturedScroll,n=this.discardScroll();e.isComputed&&(n?t.extend(e,this.computeInitialScroll()):e=null),e&&(e.isInitial?this.hardSetScroll(e):this.setScroll(e))},discardScroll:function(){return!--this.capturedScrollDepth&&(this.capturedScroll=null,!0)},computeInitialScroll:function(){return{}},queryScroll:function(){return{}},hardSetScroll:function(t){var e=this,n=function(){e.setScroll(t)};n(),setTimeout(n,0)},setScroll:function(t){},freezeHeight:function(){this.calendar.freezeContentHeight()},thawHeight:function(){this.calendar.thawContentHeight()},bindEvents:function(){var t=this;this.isEventsBound||(this.isEventsBound=!0,this.rejectOn("eventsUnbind",this.requestEvents()).then(function(e){t.listenTo(t.calendar,"eventsReset",t.setEvents),t.setEvents(e)}))},unbindEvents:function(){this.isEventsBound&&(this.isEventsBound=!1,this.stopListeningTo(this.calendar,"eventsReset"),this.unsetEvents(),this.trigger("eventsUnbind"))},setEvents:function(t){var e=this.isEventSet;this.isEventsSet=!0,this.handleEvents(t,e),this.trigger(e?"eventsReset":"eventsSet",t)},unsetEvents:function(){this.isEventsSet&&(this.isEventsSet=!1,this.handleEventsUnset(),this.trigger("eventsUnset"))},whenEventsSet:function(){var t=this;return this.isEventsSet?bt.resolve(this.getCurrentEvents()):new bt(function(e){t.one("eventsSet",e)})},handleEvents:function(t,e){this.requestEventsRender(t)},handleEventsUnset:function(){this.requestEventsUnrender()},requestEventsRender:function(t){var e=this;return this.eventRenderQueue.add(function(){return e.executeEventsRender(t)})},requestEventsUnrender:function(){var t=this;return this.isEventsRendered?this.eventRenderQueue.addQuickly(function(){return t.executeEventsUnrender()}):bt.resolve()},requestCurrentEventsRender:function(){return this.isEventsSet?void this.requestEventsRender(this.getCurrentEvents()):bt.reject()},executeEventsRender:function(t){var e=this;return this.captureScroll(),this.freezeHeight(),this.executeEventsUnrender().then(function(){e.renderEvents(t),e.thawHeight(),e.releaseScroll(),e.isEventsRendered=!0,e.onEventsRender(),e.trigger("eventsRender")})},executeEventsUnrender:function(){return this.isEventsRendered&&(this.onBeforeEventsUnrender(),this.captureScroll(),this.freezeHeight(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.thawHeight(),this.releaseScroll(),this.isEventsRendered=!1,this.trigger("eventsUnrender")),bt.resolve()},onEventsRender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger("eventAfterRender",t.event,t.event,t.el)}),this.publiclyTrigger("eventAfterAllRender")},onBeforeEventsUnrender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger("eventDestroy",t.event,t.event,t.el)})},renderEvents:function(t){},unrenderEvents:function(){},requestEvents:function(){return this.calendar.requestEvents(this.start,this.end)},getCurrentEvents:function(){return this.calendar.getPrunedEventCache()},resolveEventEl:function(e,n){var i=this.publiclyTrigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","hidden")},t)},renderedEventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;n<i.length;n++)e&&i[n].event._id!==e._id||i[n].el&&t.call(this,i[n])},getEventSegs:function(){return[]},isEventDraggable:function(t){return this.isEventStartEditable(t)},isEventStartEditable:function(t){return J(t.startEditable,(t.source||{}).startEditable,this.opt("eventStartEditable"),this.isEventGenerallyEditable(t))},isEventGenerallyEditable:function(t){return J(t.editable,(t.source||{}).editable,this.opt("editable"))},reportEventDrop:function(t,e,n,i,r){var s=this.calendar,o=s.mutateEvent(t,e,n),l=function(){o.undo(),s.reportEventChange()};this.triggerEventDrop(t,o.dateDelta,l,i,r),s.reportEventChange()},triggerEventDrop:function(t,e,n,i,r){this.publiclyTrigger("eventDrop",i[0],t,e,n,r,{})},reportExternalDrop:function(e,n,i,r,s){var o,l,a=e.eventProps;a&&(o=t.extend({},a,n),l=this.calendar.renderEvent(o,e.stick)[0]),this.triggerExternalDrop(l,n,i,r,s)},triggerExternalDrop:function(t,e,n,i,r){this.publiclyTrigger("drop",n[0],e.start,i,r),t&&this.publiclyTrigger("eventReceive",null,t)},renderDrag:function(t,e){},unrenderDrag:function(){},isEventResizableFromStart:function(t){return this.opt("eventResizableFromStart")&&this.isEventResizable(t)},isEventResizableFromEnd:function(t){return this.isEventResizable(t)},isEventResizable:function(t){var e=t.source||{};return J(t.durationEditable,e.durationEditable,this.opt("eventDurationEditable"),t.editable,e.editable,this.opt("editable"))},reportEventResize:function(t,e,n,i,r){var s=this.calendar,o=s.mutateEvent(t,e,n),l=function(){o.undo(),s.reportEventChange()};this.triggerEventResize(t,o.durationDelta,l,i,r),s.reportEventChange()},triggerEventResize:function(t,e,n,i,r){this.publiclyTrigger("eventResize",i[0],t,e,n,r,{})},select:function(t,e){this.unselect(e),this.renderSelection(t),this.reportSelection(t,e)},renderSelection:function(t){},reportSelection:function(t,e){this.isSelected=!0,this.triggerSelect(t,e)},triggerSelect:function(t,e){this.publiclyTrigger("select",null,this.calendar.applyTimezone(t.start),this.calendar.applyTimezone(t.end),e)},unselect:function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.publiclyTrigger("unselect",null,t))},unrenderSelection:function(){},selectEvent:function(t){this.selectedEvent&&this.selectedEvent===t||(this.unselectEvent(),this.renderedEventSegEach(function(t){t.el.addClass("fc-selected")},t),this.selectedEvent=t)},unselectEvent:function(){this.selectedEvent&&(this.renderedEventSegEach(function(t){t.el.removeClass("fc-selected")},this.selectedEvent),this.selectedEvent=null)},isEventSelected:function(t){return this.selectedEvent&&this.selectedEvent._id===t._id},handleDocumentMousedown:function(t){S(t)&&this.processUnselect(t)},processUnselect:function(t){this.processRangeUnselect(t),this.processEventUnselect(t)},processRangeUnselect:function(e){var n;this.isSelected&&this.opt("unselectAuto")&&(n=this.opt("unselectCancel"),n&&t(e.target).closest(n).length||this.unselect(e))},processEventUnselect:function(e){this.selectedEvent&&(t(e.target).closest(".fc-selected").length||this.unselectEvent())},triggerDayClick:function(t,e,n){this.publiclyTrigger("dayClick",e,this.calendar.applyTimezone(t.start),n)},initHiddenDays:function(){var e,n=this.opt("hiddenDays")||[],i=[],r=0;for(this.opt("weekends")===!1&&n.push(0,6),e=0;e<7;e++)(i[e]=t.inArray(e,n)!==-1)||r++;if(!r)throw"invalid hiddenDays";this.isHiddenDayHash=i},isHiddenDay:function(t){return e.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},skipHiddenDays:function(t,e,n){var i=t.clone();for(e=e||1;this.isHiddenDayHash[(i.day()+(n?e:0)+7)%7];)i.add(e,"days");return i},computeDayRange:function(t){var e,n=t.start.clone().stripTime(),i=t.end,r=null;return i&&(r=i.clone().stripTime(),e=+i.time(),e&&e>=this.nextDayThreshold&&r.add(1,"days")),(!i||r<=n)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}}),be=qt.Scroller=St.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(t){t=t||{},this.overflowX=t.overflowX||t.overflow||"auto",this.overflowY=t.overflowY||t.overflow||"auto"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=t('<div class="fc-scroller"></div>')},clear:function(){this.setHeight("auto"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},lockOverflow:function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),"auto"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":e,"overflow-y":n})},setHeight:function(t){this.scrollEl.height(t)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(t){this.scrollEl.scrollTop(t)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return p(this.scrollEl)}});Vt.prototype.proxyCall=function(t){var e=Array.prototype.slice.call(arguments,1),n=[];return this.items.forEach(function(i){n.push(i[t].apply(i,e))}),n};var De=qt.Calendar=St.extend({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,footer:null,loadingLevel:0,constructor:_t,initialize:function(){},populateOptionsHash:function(){var t,e,i,r;t=J(this.dynamicOverrides.locale,this.overrides.locale),e=Te[t],e||(t=De.defaults.locale,e=Te[t]||{}),i=J(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,De.defaults.isRTL),r=i?De.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,this.options=n([De.defaults,r,e,this.overrides,this.dynamicOverrides]),Yt(this.options)},getViewSpec:function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},getUnitViewSpec:function(e){var n,i,r;if(t.inArray(e,Kt)!=-1)for(n=this.header.getViewsWithButtons(),t.each(qt.views,function(t){n.push(t)}),i=0;i<n.length;i++)if(r=this.getViewSpec(n[i]),r&&r.singleUnit==e)return r},buildViewSpec:function(t){for(var i,r,s,o,l=this.overrides.views||{},a=[],u=[],c=[],d=t;d;)i=Zt[d],r=l[d],d=null,"function"==typeof i&&(i={class:i}),i&&(a.unshift(i),u.unshift(i.defaults||{}),s=s||i.duration,d=d||i.type),r&&(c.unshift(r),s=s||r.duration,d=d||r.type);return i=q(a),i.type=t,!!i.class&&(s&&(s=e.duration(s),s.valueOf()&&(i.duration=s,o=A(s),1===s.as(o)&&(i.singleUnit=o,c.unshift(l[o]||{})))),i.defaults=n(u),i.overrides=n(c),this.buildViewSpecOptions(i),this.buildViewSpecButtonText(i,t),i)},buildViewSpecOptions:function(t){t.options=n([De.defaults,t.defaults,this.dirDefaults,this.localeDefaults,this.overrides,t.overrides,this.dynamicOverrides]),Yt(t.options)},buildViewSpecButtonText:function(t,e){function n(n){var i=n.buttonText||{};return i[e]||(t.buttonTextKey?i[t.buttonTextKey]:null)||(t.singleUnit?i[t.singleUnit]:null)}t.buttonTextOverride=n(this.dynamicOverrides)||n(this.overrides)||t.overrides.buttonText,t.buttonTextDefault=n(this.localeDefaults)||n(this.dirDefaults)||t.defaults.buttonText||n(De.defaults)||(t.duration?this.humanizeDuration(t.duration):null)||e},instantiateView:function(t){var e=this.getViewSpec(t);return new e.class(this,t,e.options,e.duration)},isValidViewType:function(t){return Boolean(this.getViewSpec(t))},pushLoading:function(){this.loadingLevel++||this.publiclyTrigger("loading",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.publiclyTrigger("loading",null,!1,this.view)},buildSelectSpan:function(t,e){var n,i=this.moment(t).stripZone();return n=e?this.moment(e).stripZone():i.hasTime()?i.clone().add(this.defaultTimedEventDuration):i.clone().add(this.defaultAllDayEventDuration),{start:i,end:n}}});De.mixin(ue),De.mixin({optionHandlers:null,bindOption:function(t,e){this.bindOptions([t],e)},bindOptions:function(t,e){var n,i={func:e,names:t};for(n=0;n<t.length;n++)this.registerOptionHandlerObj(t[n],i);this.triggerOptionHandlerObj(i)},registerOptionHandlerObj:function(t,e){(this.optionHandlers[t]||(this.optionHandlers[t]=[])).push(e)},triggerOptionHandlers:function(t){var e,n=this.optionHandlers[t]||[];for(e=0;e<n.length;e++)this.triggerOptionHandlerObj(n[e])},triggerOptionHandlerObj:function(t){var e,n=t.names,i=[];for(e=0;e<n.length;e++)i.push(this.options[n[e]]);t.func.apply(this,i)}}),De.defaults={titleRangeSeparator:" – ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},allDayText:"all-day",theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3},De.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},De.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var Te=qt.locales={};qt.datepickerLocale=function(e,n,i){var r=Te[e]||(Te[e]={});r.isRTL=i.isRTL,r.weekNumberTitle=i.weekHeader,t.each(Ce,function(t,e){r[t]=e(i)}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[""],t.datepicker.setDefaults(i))},qt.locale=function(e,i){var r,s;r=Te[e]||(Te[e]={}),i&&(r=Te[e]=n([r,i])),s=Wt(e),t.each(He,function(t,e){null==r[t]&&(r[t]=e(s,r))}),De.defaults.locale=e};var Ce={buttonText:function(t){return{prev:et(t.prevText),next:et(t.nextText),today:et(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},He={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},mediumTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(t){return t.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}},Re={smallDayDateFormat:function(t){return t.isRTL?"D dd":"dd D"},weekFormat:function(t){return t.isRTL?"w[ "+t.weekNumberTitle+"]":"["+t.weekNumberTitle+" ]w"},smallWeekFormat:function(t){return t.isRTL?"w["+t.weekNumberTitle+"]":"["+t.weekNumberTitle+"]w"}};qt.locale("en",De.englishDefaults),qt.sourceNormalizers=[],qt.sourceFetchers=[];var xe={dataType:"json",cache:!1},Ie=1;De.prototype.normalizeEvent=function(t){},De.prototype.spanContainsSpan=function(t,e){var n=t.start.clone().stripZone(),i=this.getEventEnd(t).stripZone();return e.start>=n&&e.end<=i},De.prototype.getPeerEvents=function(t,e){var n,i,r=this.getEventCache(),s=[];for(n=0;n<r.length;n++)i=r[n],e&&e._id===i._id||s.push(i);return s},De.prototype.isEventSpanAllowed=function(t,e){var n=e.source||{},i=J(e.constraint,n.constraint,this.options.eventConstraint),r=J(e.overlap,n.overlap,this.options.eventOverlap);return this.isSpanAllowed(t,i,r,e)&&(!this.options.eventAllow||this.options.eventAllow(t,e)!==!1)},De.prototype.isExternalSpanAllowed=function(e,n,i){var r,s;return i&&(r=t.extend({},i,n),s=this.expandEvent(this.buildEventFromInput(r))[0]),s?this.isEventSpanAllowed(e,s):this.isSelectionSpanAllowed(e)},De.prototype.isSelectionSpanAllowed=function(t){return this.isSpanAllowed(t,this.options.selectConstraint,this.options.selectOverlap)&&(!this.options.selectAllow||this.options.selectAllow(t)!==!1)},De.prototype.isSpanAllowed=function(t,e,n,i){var r,s,o,l,a,u;if(null!=e&&(r=this.constraintToEvents(e))){for(s=!1,l=0;l<r.length;l++)if(this.spanContainsSpan(r[l],t)){s=!0;break}if(!s)return!1}for(o=this.getPeerEvents(t,i),l=0;l<o.length;l++)if(a=o[l],this.eventIntersectsRange(a,t)){if(n===!1)return!1;if("function"==typeof n&&!n(a,i))return!1;if(i){if(u=J(a.overlap,(a.source||{}).overlap),u===!1)return!1;if("function"==typeof u&&!u(i,a))return!1}}return!0},De.prototype.constraintToEvents=function(t){return"businessHours"===t?this.getCurrentBusinessHourEvents():"object"==typeof t?null!=t.start?this.expandEvent(this.buildEventFromInput(t)):null:this.clientEvents(t)},De.prototype.eventIntersectsRange=function(t,e){var n=t.start.clone().stripZone(),i=this.getEventEnd(t).stripZone();return e.start<i&&e.end>n};var ke={id:"_fcBusinessHours",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"};De.prototype.getCurrentBusinessHourEvents=function(t){return this.computeBusinessHourEvents(t,this.options.businessHours)},De.prototype.computeBusinessHourEvents=function(e,n){return n===!0?this.expandBusinessHourEvents(e,[{}]):t.isPlainObject(n)?this.expandBusinessHourEvents(e,[n]):t.isArray(n)?this.expandBusinessHourEvents(e,n,!0):[]},De.prototype.expandBusinessHourEvents=function(e,n,i){var r,s,o=this.getView(),l=[];for(r=0;r<n.length;r++)s=n[r],i&&!s.dow||(s=t.extend({},ke,s),e&&(s.start=null,s.end=null),l.push.apply(l,this.expandEvent(this.buildEventFromInput(s),o.start,o.end)));return l};var Le=qt.BasicView=Ee.extend({scroller:null,dayGridClass:Se,dayGrid:null,dayNumbersVisible:!1,colWeekNumbersVisible:!1,cellWeekNumbersVisible:!1,weekNumberWidth:null,headContainerEl:null,headRowEl:null,initialize:function(){this.dayGrid=this.instantiateDayGrid(),this.scroller=new be({overflowX:"hidden",overflowY:"auto"})},instantiateDayGrid:function(){var t=this.dayGridClass.extend(Me);return new t(this)},setRange:function(t){Ee.prototype.setRange.call(this,t),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(t)},computeRange:function(t){var e=Ee.prototype.computeRange.call(this,t);return/year|month/.test(e.intervalUnit)&&(e.start.startOf("week"),e.start=this.skipHiddenDays(e.start),e.end.weekday()&&(e.end.add(1,"week").startOf("week"),e.end=this.skipHiddenDays(e.end,-1,!0))),e},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.opt("weekNumbers")&&(this.opt("weekNumbersWithinDays")?(this.cellWeekNumbersVisible=!0,this.colWeekNumbersVisible=!1):(this.cellWeekNumbersVisible=!1,this.colWeekNumbersVisible=!0)),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-day-grid-container"),n=t('<div class="fc-day-grid" />').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.dayGrid.setElement(n),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'"></td></tr></tbody></table>'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.colWeekNumbersVisible&&(this.weekNumberWidth=u(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,s,o=this.opt("eventLimit");this.scroller.clear(),r(this.headRowEl),this.dayGrid.removeSegPopover(),o&&"number"==typeof o&&this.dayGrid.limitRows(o),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),o&&"number"!=typeof o&&this.dayGrid.limitRows(o),e||(this.scroller.setHeight(n),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(i(this.headRowEl,s),n=this.computeScrollerHeight(t),this.scroller.setHeight(n)),this.scroller.lockOverflow(s))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el)},setGridHeight:function(t,e){e?a(this.dayGrid.rowEls):l(this.dayGrid.rowEls,t,!0)},computeInitialScroll:function(){return{top:0}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(t){this.scroller.setScrollTop(t.top)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(t,e){return this.dayGrid.queryHit(t,e)},getHitSpan:function(t){return this.dayGrid.getHitSpan(t)},getHitEl:function(t){return this.dayGrid.getHitEl(t)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),Me={renderHeadIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'<th class="fc-week-number '+t.widgetHeaderClass+'" '+t.weekNumberStyleAttr()+"><span>"+tt(t.opt("weekNumberTitle"))+"</span></th>":""},renderNumberIntroHtml:function(t){var e=this.view,n=this.getCellDate(t,0);return e.colWeekNumbersVisible?'<td class="fc-week-number" '+e.weekNumberStyleAttr()+">"+e.buildGotoAnchorHtml({date:n,type:"week",forceOff:1===this.colCnt},n.format("w"))+"</td>":""},renderBgIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'<td class="fc-week-number '+t.widgetContentClass+'" '+t.weekNumberStyleAttr()+"></td>":""},renderIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'<td class="fc-week-number" '+t.weekNumberStyleAttr()+"></td>":""}},Be=qt.MonthView=Le.extend({computeRange:function(t){var e,n=Le.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&(e=Math.ceil(n.end.diff(n.start,"weeks",!0)),n.end.add(6-e,"weeks")),n},setGridHeight:function(t,e){e&&(t*=this.rowCnt/6),l(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){return this.opt("fixedWeekCount")}});Zt.basic={class:Le},Zt.basicDay={type:"basic",duration:{days:1}},Zt.basicWeek={type:"basic",duration:{weeks:1}},Zt.month={class:Be,duration:{months:1},defaults:{fixedWeekCount:!0}};var ze=qt.AgendaView=Ee.extend({scroller:null,timeGridClass:we,timeGrid:null,dayGridClass:Se,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new be({overflowX:"hidden",overflowY:"auto"})},instantiateTimeGrid:function(){var t=this.timeGridClass.extend(Fe);return new t(this)},instantiateDayGrid:function(){var t=this.dayGridClass.extend(Ne);return new t(this)},setRange:function(t){Ee.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-time-grid-container"),n=t('<div class="fc-time-grid" />').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.timeGrid.setElement(n),this.timeGrid.renderDates(),this.bottomRuleEl=t('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+this.widgetHeaderClass+'"/>':"")+"</td></tr></tbody></table>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(t){this.timeGrid.renderNowIndicator(t)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(t){this.timeGrid.updateSize(t),Ee.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=u(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,s,o;this.bottomRuleEl.hide(),this.scroller.clear(),r(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=Ge),n&&this.dayGrid.limitRows(n)),e||(s=this.computeScrollerHeight(t),this.scroller.setHeight(s),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(i(this.noScrollRowEls,o),s=this.computeScrollerHeight(t),this.scroller.setHeight(s)),this.scroller.lockOverflow(o),this.timeGrid.getTotalSlatHeight()<s&&this.bottomRuleEl.show())},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el)},computeInitialScroll:function(){var t=e.duration(this.opt("scrollTime")),n=this.timeGrid.computeTimeTop(t);return n=Math.ceil(n),n&&n++,{top:n}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(t){this.scroller.setScrollTop(t.top)},prepareHits:function(){this.timeGrid.prepareHits(),this.dayGrid&&this.dayGrid.prepareHits()},releaseHits:function(){this.timeGrid.releaseHits(),this.dayGrid&&this.dayGrid.releaseHits()},queryHit:function(t,e){var n=this.timeGrid.queryHit(t,e);return!n&&this.dayGrid&&(n=this.dayGrid.queryHit(t,e)),n},getHitSpan:function(t){return t.component.getHitSpan(t)},getHitEl:function(t){return t.component.getHitEl(t)},renderEvents:function(t){var e,n,i=[],r=[],s=[];for(n=0;n<t.length;n++)t[n].allDay?i.push(t[n]):r.push(t[n]);e=this.timeGrid.renderEvents(r),this.dayGrid&&(s=this.dayGrid.renderEvents(i)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents(),this.dayGrid&&this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return t.start.hasTime()?this.timeGrid.renderDrag(t,e):this.dayGrid?this.dayGrid.renderDrag(t,e):void 0},unrenderDrag:function(){this.timeGrid.unrenderDrag(),this.dayGrid&&this.dayGrid.unrenderDrag()},renderSelection:function(t){t.start.hasTime()||t.end.hasTime()?this.timeGrid.renderSelection(t):this.dayGrid&&this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.timeGrid.unrenderSelection(),this.dayGrid&&this.dayGrid.unrenderSelection()}}),Fe={renderHeadIntroHtml:function(){var t,e=this.view;return e.opt("weekNumbers")?(t=this.start.format(e.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+e.widgetHeaderClass+'" '+e.axisStyleAttr()+">"+e.buildGotoAnchorHtml({date:this.start,type:"week",forceOff:this.colCnt>1},tt(t))+"</th>"):'<th class="fc-axis '+e.widgetHeaderClass+'" '+e.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.widgetContentClass+'" '+t.axisStyleAttr()+"></td>"},renderIntroHtml:function(){var t=this.view;return'<td class="fc-axis" '+t.axisStyleAttr()+"></td>"}},Ne={renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.widgetContentClass+'" '+t.axisStyleAttr()+"><span>"+t.getAllDayHtml()+"</span></td>"},renderIntroHtml:function(){var t=this.view;return'<td class="fc-axis" '+t.axisStyleAttr()+"></td>"}},Ge=5,Oe=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];Zt.agenda={class:ze,defaults:{allDaySlot:!0,slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Zt.agendaDay={type:"agenda",duration:{days:1}},Zt.agendaWeek={type:"agenda",duration:{weeks:1}};var Ae=Ee.extend({grid:null,scroller:null,initialize:function(){this.grid=new Ve(this),this.scroller=new be({overflowX:"hidden",overflowY:"auto"})},setRange:function(t){Ee.prototype.setRange.call(this,t),this.grid.setRange(t)},renderSkeleton:function(){this.el.addClass("fc-list-view "+this.widgetContentClass),this.scroller.render(),this.scroller.el.appendTo(this.el),this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(t,e){this.scroller.setHeight(this.computeScrollerHeight(t))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el); +},renderEvents:function(t){this.grid.renderEvents(t)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(t){return!1},isEventDraggable:function(t){return!1}}),Ve=me.extend({segSelector:".fc-list-item",hasDayInteractions:!1,spanToSegs:function(t){for(var e,n=this.view,i=n.start.clone().time(0),r=0,s=[];i<n.end;)if(e=F(t,{start:i,end:i.clone().add(1,"day")}),e&&(e.dayIndex=r,s.push(e)),i.add(1,"day"),r++,e&&!e.isEnd&&t.end.hasTime()&&t.end<i.clone().add(this.view.nextDayThreshold)){e.end=t.end.clone(),e.isEnd=!0;break}return s},computeEventTimeFormat:function(){return this.view.opt("mediumTimeFormat")},handleSegClick:function(e,n){var i;me.prototype.handleSegClick.apply(this,arguments),t(n.target).closest("a[href]").length||(i=e.event.url,i&&!n.isDefaultPrevented()&&(window.location.href=i))},renderFgSegs:function(t){return t=this.renderFgSegEls(t),t.length?this.renderSegList(t):this.renderEmptyMessage(),t},renderEmptyMessage:function(){this.el.html('<div class="fc-list-empty-wrap2"><div class="fc-list-empty-wrap1"><div class="fc-list-empty">'+tt(this.view.opt("noEventsMessage"))+"</div></div></div>")},renderSegList:function(e){var n,i,r,s=this.groupSegsByDay(e),o=t('<table class="fc-list-table"><tbody/></table>'),l=o.find("tbody");for(n=0;n<s.length;n++)if(i=s[n])for(l.append(this.dayHeaderHtml(this.view.start.clone().add(n,"days"))),this.sortEventSegs(i),r=0;r<i.length;r++)l.append(i[r].el);this.el.empty().append(o)},groupSegsByDay:function(t){var e,n,i=[];for(e=0;e<t.length;e++)n=t[e],(i[n.dayIndex]||(i[n.dayIndex]=[])).push(n);return i},dayHeaderHtml:function(t){var e=this.view,n=e.opt("listDayFormat"),i=e.opt("listDayAltFormat");return'<tr class="fc-list-heading" data-date="'+t.format("YYYY-MM-DD")+'"><td class="'+e.widgetHeaderClass+'" colspan="3">'+(n?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-main"},tt(t.format(n))):"")+(i?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-alt"},tt(t.format(i))):"")+"</td></tr>"},fgSegHtml:function(t){var e,n=this.view,i=["fc-list-item"].concat(this.getSegCustomClasses(t)),r=this.getSegBackgroundColor(t),s=t.event,o=s.url;return e=s.allDay?n.getAllDayHtml():n.isMultiDayEvent(s)?t.isStart||t.isEnd?tt(this.getEventTimeText(t)):n.getAllDayHtml():tt(this.getEventTimeText(s)),o&&i.push("fc-has-url"),'<tr class="'+i.join(" ")+'">'+(this.displayEventTime?'<td class="fc-list-item-time '+n.widgetContentClass+'">'+(e||"")+"</td>":"")+'<td class="fc-list-item-marker '+n.widgetContentClass+'"><span class="fc-event-dot"'+(r?' style="background-color:'+r+'"':"")+'></span></td><td class="fc-list-item-title '+n.widgetContentClass+'"><a'+(o?' href="'+tt(o)+'"':"")+">"+tt(t.event.title||"")+"</a></td></tr>"}});return Zt.list={class:Ae,buttonTextKey:"list",defaults:{buttonText:"list",listDayFormat:"LL",noEventsMessage:"No events to display"}},Zt.listDay={type:"list",duration:{days:1},defaults:{listDayFormat:"dddd"}},Zt.listWeek={type:"list",duration:{weeks:1},defaults:{listDayFormat:"dddd",listDayAltFormat:"LL"}},Zt.listMonth={type:"list",duration:{month:1},defaults:{listDayAltFormat:"dddd"}},Zt.listYear={type:"list",duration:{year:1},defaults:{listDayAltFormat:"dddd"}},qt});
\ No newline at end of file diff --git a/library/fullcalendar/fullcalendar.print.css b/library/fullcalendar/fullcalendar.print.css index bfa910b3c..5e1183071 100644 --- a/library/fullcalendar/fullcalendar.print.css +++ b/library/fullcalendar/fullcalendar.print.css @@ -1,5 +1,5 @@ /*! - * FullCalendar v3.0.1 Print Stylesheet + * FullCalendar v3.1.0 Print Stylesheet * Docs & License: http://fullcalendar.io/ * (c) 2016 Adam Shaw */ diff --git a/library/fullcalendar/fullcalendar.print.min.css b/library/fullcalendar/fullcalendar.print.min.css new file mode 100644 index 000000000..05281cf21 --- /dev/null +++ b/library/fullcalendar/fullcalendar.print.min.css @@ -0,0 +1,5 @@ +/*! + * FullCalendar v3.1.0 Print Stylesheet + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-helper-container,.fc-helper-skeleton,.fc-highlight-container,.fc-highlight-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-agenda-view .fc-axis,.fc-popover{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}
\ No newline at end of file diff --git a/library/fullcalendar/gcal.js b/library/fullcalendar/gcal.js index dfe6fa905..1975cca72 100644 --- a/library/fullcalendar/gcal.js +++ b/library/fullcalendar/gcal.js @@ -1,5 +1,5 @@ /*! - * FullCalendar v3.0.1 Google Calendar Plugin + * FullCalendar v3.1.0 Google Calendar Plugin * Docs & License: http://fullcalendar.io/ * (c) 2016 Adam Shaw */ diff --git a/library/fullcalendar/gcal.min.js b/library/fullcalendar/gcal.min.js new file mode 100644 index 000000000..08876848f --- /dev/null +++ b/library/fullcalendar/gcal.min.js @@ -0,0 +1,6 @@ +/*! + * FullCalendar v3.1.0 Google Calendar Plugin + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){function a(a,t,d,c,i){function s(o,r){var l=r||[{message:o}];(a.googleCalendarError||e.noop).apply(i,l),(i.options.googleCalendarError||e.noop).apply(i,l),n.warn.apply(null,[o].concat(r||[]))}var u,g,p=r+"/"+encodeURIComponent(a.googleCalendarId)+"/events?callback=?",m=a.googleCalendarApiKey||i.options.googleCalendarApiKey,f=a.success;return m?(t.hasZone()||(t=t.clone().utc().add(-1,"day")),d.hasZone()||(d=d.clone().utc().add(1,"day")),c&&"local"!=c&&(g=c.replace(" ","_")),u=e.extend({},a.data||{},{key:m,timeMin:t.format(),timeMax:d.format(),timeZone:g,singleEvents:!0,maxResults:9999}),e.extend({},a,{googleCalendarId:null,url:p,data:u,startParam:!1,endParam:!1,timezoneParam:!1,success:function(a){var r,n,t=[];if(a.error)s("Google Calendar API: "+a.error.message,a.error.errors);else if(a.items&&(e.each(a.items,function(e,a){var r=a.htmlLink||null;g&&null!==r&&(r=o(r,"ctz="+g)),t.push({id:a.id,title:a.summary,start:a.start.dateTime||a.start.date,end:a.end.dateTime||a.end.date,url:r,location:a.location,description:a.description})}),r=[t].concat(Array.prototype.slice.call(arguments,1)),n=l(f,this,r),e.isArray(n)))return n;return t}})):(s("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),{})}function o(e,a){return e.replace(/(\?.*?)?(#|$)/,function(e,o,r){return(o?o+"&":"?")+a+r})}var r="https://www.googleapis.com/calendar/v3/calendars",n=e.fullCalendar,l=n.applyAll;n.sourceNormalizers.push(function(e){var a,o=e.googleCalendarId,r=e.url;!o&&r&&(/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(r)?o=r:((a=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(r))||(a=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(r)))&&(o=decodeURIComponent(a[1])),o&&(e.googleCalendarId=o)),o&&(null==e.editable&&(e.editable=!1),e.url=o)}),n.sourceFetchers.push(function(e,o,r,n){if(e.googleCalendarId)return a(e,o,r,n,this)})});
\ No newline at end of file diff --git a/library/fullcalendar/locale-all.js b/library/fullcalendar/locale-all.js index 8332f58fa..a648a74bc 100644 --- a/library/fullcalendar/locale-all.js +++ b/library/fullcalendar/locale-all.js @@ -1,5 +1,5 @@ -!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,a){!function(){!function(){var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],i=a.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return i}(),e.fullCalendar.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return e}(),e.fullCalendar.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return n}(),e.fullCalendar.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e},noEventsMessage:"Няма събития за показване"})}(),function(){!function(){var e=a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})}(),function(){!function(){function e(e){return e>1&&e<5&&1!==~~(e/10)}function t(a,t,n,r){var s=a+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?s+(e(a)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(e(a)?"hodiny":"hodin"):s+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?s+(e(a)?"dny":"dní"):s+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?s+(e(a)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?s+(e(a)?"roky":"let"):s+"lety"}}var n="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),r="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=a.defineLocale("cs",{months:n,monthsShort:r,monthsParse:function(e,a){var t,n=[];for(t=0;t<12;t++)n[t]=new RegExp("^"+e[t]+"$|^"+a[t]+"$","i");return n}(n,r),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(r),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(n),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})}(),function(){!function(){var e=a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})}(),function(){!function(){function e(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}var t=a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("de",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})}(),function(){!function(){function e(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}var t=a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("de-at",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})}(),function(){!function(){function e(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}var t=a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,a){return/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ΜΜ":t?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,t){var n=this._calendarEl[a],r=t&&t.hours();return e(n)&&(n=n.apply(t)),n.replace("{}",r%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})}(),function(){!function(){var e=a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("en-au")}(),function(){!function(){var e=a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t}});return e}(),e.fullCalendar.locale("en-ca")}(),function(){!function(){var e=a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("en-gb")}(),function(){!function(){var e=a.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.locale("en-ie")}(),function(){!function(){var e=a.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("en-nz")}(),function(){!function(){var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=a.defineLocale("es",{ -months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})}(),function(){!function(){var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=a.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})}(),function(){!function(){var e=a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})}(),function(){!function(){var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},t={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},n=a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return n}(),e.fullCalendar.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})}(),function(){!function(){function e(e,a,n,r){var s="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"m":return r?"minuutin":"minuutti";case"mm":s=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":s=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":s=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":s=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":s=r?"vuoden":"vuotta"}return s=t(e,r)+" "+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",n[7],n[8],n[9]],s=a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei tapahtumia näytettäviä"})}(),function(){!function(){var e=a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})}(),function(){!function(){var e=a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?"er":"e")}});return e}(),e.fullCalendar.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})}(),function(){!function(){var e=a.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?"er":"e")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})}(),function(){!function(){var e=a.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),monthsParseExact:!0,weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return"uns segundos"===e?"nuns segundos":"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})}(),function(){!function(){var e=a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10===0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?t?'לפנה"צ':"לפני הצהריים":e<18?t?'אחה"צ':"אחרי הצהריים":"בערב"}});return e}(),e.fullCalendar.datepickerLocale("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})}(),function(){!function(){var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},n=a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सुबह"===a?e:"दोपहर"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}});return n}(),e.fullCalendar.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})}(),function(){!function(){function e(e,a,t){var n=e+" ";switch(t){case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}var t=a.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("hr",{buttonText:{month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})}(),function(){!function(){function e(e,a,t,n){var r=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return r+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return r+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return r+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return r+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return r+(n||a?" év":" éve")}return""}function t(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),r=a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?t===!0?"de":"DE":t===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return t.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return t.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return r}(),e.fullCalendar.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),e.fullCalendar.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető események"})}(),function(){!function(){var e=a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})}(),function(){!function(){function e(e){return e%100===11||e%10!==1}function t(a,t,n,r){var s=a+" ";switch(n){case"s":return t||r?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return t?"mínúta":"mínútu";case"mm":return e(a)?s+(t||r?"mínútur":"mínútum"):t?s+"mínúta":s+"mínútu";case"hh":return e(a)?s+(t||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return t?"dagur":r?"dag":"degi";case"dd":return e(a)?t?s+"dagar":s+(r?"daga":"dögum"):t?s+"dagur":s+(r?"dag":"degi");case"M":return t?"mánuður":r?"mánuð":"mánuði";case"MM":return e(a)?t?s+"mánuðir":s+(r?"mánuði":"mánuðum"):t?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return t||r?"ár":"ári";case"yy":return e(a)?s+(t||r?"ár":"árum"):s+(t||r?"ár":"ári")}}var n=a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{ -sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})}(),function(){!function(){var e=a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})}(),function(){!function(){var e=a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,a,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return e}(),e.fullCalendar.datepickerLocale("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),e.fullCalendar.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"イベントが表示されないように"})}(),function(){!function(){var e=a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,a,t){return e<12?"오전":"오후"}});return e}(),e.fullCalendar.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),e.fullCalendar.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 표시 없습니다"})}(),function(){!function(){function e(e,a,t,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?r[t][0]:r[t][1]}function t(e){var a=e.substr(0,e.indexOf(" "));return r(a)?"a "+e:"an "+e}function n(e){var a=e.substr(0,e.indexOf(" "));return r(a)?"viru "+e:"virun "+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}var s=a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:n,s:"e puer Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})}(),function(){!function(){function e(e,a,t,n){return a?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10===0||e>10&&e<20}function r(e){return d[e].split("_")}function s(e,a,s,d){var i=e+" ";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},i=a.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:e,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},ordinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});return i}(),e.fullCalendar.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),e.fullCalendar.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})}(),function(){!function(){function e(e,a,t){return t?a%10===1&&a%100!==11?e[2]:e[3]:a%10===1&&a%100!==11?e[0]:e[1]}function t(a,t,n){return a+" "+e(s[n],a,t)}function n(a,t,n){return e(s[n],a,t)}function r(e,a){return a?"dažas sekundes":"dažām sekundēm"}var s={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},d=a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:r,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d}(),e.fullCalendar.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu, lai parādītu"})}(),function(){!function(){var e=a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})}(),function(){!function(){var e=a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})}(),function(){!function(){var e=a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})}(),function(){!function(){var e=a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})}(),function(){!function(){var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nl",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})}(),function(){!function(){var e=a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})}(),function(){!function(){function e(e){return e%10<5&&e%10>1&&~~(e/10)%10!==1}function t(a,t,n){var r=a+" ";switch(n){case"m":return t?"minuta":"minutę";case"mm":return r+(e(a)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return r+(e(a)?"godziny":"godzin");case"MM":return r+(e(a)?"miesiące":"miesięcy");case"yy":return r+(e(a)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),s=a.defineLocale("pl",{months:function(e,a){return""===a?"("+r[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(a)?r[e.month()]:n[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:t,mm:t,h:t,hh:t,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:t,y:"rok",yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})}(),function(){!function(){var e=a.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})}(),function(){!function(){var e=a.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return e}(),e.fullCalendar.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"], -weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})}(),function(){!function(){function e(e,a,t){var n={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100===0)&&(r=" de "),e+r+n[t]}var t=a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})}(),function(){!function(){function e(e,a){var t=e.split("_");return a%10===1&&a%100!==11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(a,t,n){var r={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?t?"минута":"минуту":a+" "+e(r[n],+a)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],r=a.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:7}});return r}(),e.fullCalendar.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})}(),function(){!function(){function e(e){return e>1&&e<5}function t(a,t,n,r){var s=a+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(e(a)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(e(a)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(e(a)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(e(a)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(e(a)?"roky":"rokov"):s+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),s=a.defineLocale("sk",{months:n,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})}(),function(){!function(){function e(e,a,t,n){var r=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"m":return a?"ena minuta":"eno minuto";case"mm":return r+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return r+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return r+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return r+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return r+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}var t=a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})}(),function(){!function(){var e={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,n){var r=e.words[n];return 1===n.length?t?r[0]:r[1]:a+" "+e.correctGrammaticalCase(a,r)}},t=a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var e=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}(),function(){!function(){var e={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,n){var r=e.words[n];return 1===n.length?t?r[0]:r[1]:a+" "+e.correctGrammaticalCase(a,r)}},t=a.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var e=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}(),function(){!function(){var e=a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"e":1===a?"a":2===a?"a":"e";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})}(),function(){!function(){var e=a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,a,t){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return e}(),e.fullCalendar.datepickerLocale("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})}(),function(){!function(){var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},t=a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var t=a%10,n=a%100-t,r=a>=100?100:null;return a+(e[t]||e[n]||e[r])},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Herhangi bir etkinlik görüntülemek için"})}(),function(){!function(){function e(e,a){var t=e.split("_");return a%10===1&&a%100!==11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(a,t,n){var r={mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":a+" "+e(r[n],+a)}function n(e,a){var t={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},n=/(\[[ВвУу]\]) ?dddd/.test(a)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(a)?"genitive":"nominative";return t[n][e.day()]}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}var s=a.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:r("[Сьогодні "),nextDay:r("[Завтра "),lastDay:r("[Вчора "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r("[Минулої] dddd [").call(this);case 1:case 2:case 4:return r("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}});return s}(),e.fullCalendar.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})}(),function(){!function(){var e=a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"Không có sự kiện để hiển thị"})}(),function(){!function(){var e=a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"下午"===a||"晚上"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var e,t;return e=a().startOf("week"),t=this.diff(e,"days")>=7?"[下]":"[本]",0===this.minutes()?t+"dddAh点整":t+"dddAh点mm"},lastWeek:function(){var e,t;return e=a().startOf("week"),t=this.unix()<e.unix()?"[上]":"[本]",0===this.minutes()?t+"dddAh点整":t+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),e.fullCalendar.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})}(),function(){!function(){var e=a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週"; -default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return e}(),e.fullCalendar.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),e.fullCalendar.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"待辦事項"},allDayText:"全天",eventLimitText:"更多",noEventsMessage:"没有事件显示"})}(),a.locale("en"),e.fullCalendar.locale("en"),e.datepicker&&e.datepicker.setDefaults(e.datepicker.regional[""])});
\ No newline at end of file +!function(e){"function"==typeof define&&define.amd?define(["jquery","moment"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("moment")):e(jQuery,moment)}(function(e,a){!function(){!function(){var e=a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenis"})}(),function(){!function(){var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],i=a.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return i}(),e.fullCalendar.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}});return e}(),e.fullCalendar.datepickerLocale("ar-dz","ar-DZ",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-dz",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],d=a.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/\u200f/g,"").replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d}(),e.fullCalendar.datepickerLocale("ar-ly","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-ly",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return e}(),e.fullCalendar.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},week:{dow:0,doy:6}});return n}(),e.fullCalendar.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})}(),function(){!function(){var e=a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e},noEventsMessage:"Няма събития за показване"})}(),function(){!function(){var e=a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})}(),function(){!function(){function e(e){return e>1&&e<5&&1!==~~(e/10)}function t(a,t,n,r){var s=a+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?s+(e(a)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(e(a)?"hodiny":"hodin"):s+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?s+(e(a)?"dny":"dní"):s+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?s+(e(a)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?s+(e(a)?"roky":"let"):s+"lety"}}var n="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),r="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=a.defineLocale("cs",{months:n,monthsShort:r,monthsParse:function(e,a){var t,n=[];for(t=0;t<12;t++)n[t]=new RegExp("^"+e[t]+"$|^"+a[t]+"$","i");return n}(n,r),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(r),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(n),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})}(),function(){!function(){var e=a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})}(),function(){!function(){function e(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}var t=a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("de",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})}(),function(){!function(){function e(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}var t=a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("de-at",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})}(),function(){!function(){function e(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}var t=a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,a){return/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ΜΜ":t?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,t){var n=this._calendarEl[a],r=t&&t.hours();return e(n)&&(n=n.apply(t)),n.replace("{}",r%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return t}(),e.fullCalendar.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})}(),function(){!function(){var e=a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{ +dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("en-au")}(),function(){!function(){var e=a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t}});return e}(),e.fullCalendar.locale("en-ca")}(),function(){!function(){var e=a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("en-gb")}(),function(){!function(){var e=a.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.locale("en-ie")}(),function(){!function(){var e=a.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("en-nz")}(),function(){!function(){var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=a.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})}(),function(){!function(){var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=a.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})}(),function(){!function(){var e=a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})}(),function(){!function(){var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},t={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},n=a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return n}(),e.fullCalendar.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})}(),function(){!function(){function e(e,a,n,r){var s="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"m":return r?"minuutin":"minuutti";case"mm":s=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":s=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":s=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":s=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":s=r?"vuoden":"vuotta"}return s=t(e,r)+" "+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",n[7],n[8],n[9]],s=a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei tapahtumia näytettäviä"})}(),function(){!function(){var e=a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})}(),function(){!function(){var e=a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?"er":"e")}});return e}(),e.fullCalendar.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})}(),function(){!function(){var e=a.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?"er":"e")},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})}(),function(){!function(){var e=a.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})}(),function(){!function(){var e=a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10===0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?t?'לפנה"צ':"לפני הצהריים":e<18?t?'אחה"צ':"אחרי הצהריים":"בערב"}});return e}(),e.fullCalendar.datepickerLocale("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})}(),function(){!function(){var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},n=a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(a){return a.replace(/\d/g,function(a){return e[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सुबह"===a?e:"दोपहर"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}});return n}(),e.fullCalendar.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})}(),function(){!function(){function e(e,a,t){var n=e+" ";switch(t){case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}var t=a.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"], +monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("hr",{buttonText:{month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})}(),function(){!function(){function e(e,a,t,n){var r=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return r+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return r+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return r+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return r+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return r+(n||a?" év":" éve")}return""}function t(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),r=a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?t===!0?"de":"DE":t===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return t.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return t.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return r}(),e.fullCalendar.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),e.fullCalendar.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető események"})}(),function(){!function(){var e=a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})}(),function(){!function(){function e(e){return e%100===11||e%10!==1}function t(a,t,n,r){var s=a+" ";switch(n){case"s":return t||r?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return t?"mínúta":"mínútu";case"mm":return e(a)?s+(t||r?"mínútur":"mínútum"):t?s+"mínúta":s+"mínútu";case"hh":return e(a)?s+(t||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return t?"dagur":r?"dag":"degi";case"dd":return e(a)?t?s+"dagar":s+(r?"daga":"dögum"):t?s+"dagur":s+(r?"dag":"degi");case"M":return t?"mánuður":r?"mánuð":"mánuði";case"MM":return e(a)?t?s+"mánuðir":s+(r?"mánuði":"mánuðum"):t?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return t||r?"ár":"ári";case"yy":return e(a)?s+(t||r?"ár":"árum"):s+(t||r?"ár":"ári")}}var n=a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return n}(),e.fullCalendar.datepickerLocale("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})}(),function(){!function(){var e=a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})}(),function(){!function(){var e=a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,a,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return e}(),e.fullCalendar.datepickerLocale("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),e.fullCalendar.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"イベントが表示されないように"})}(),function(){!function(){var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"},t=a.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(a){var t=a%10,n=a>=100?100:null;return a+(e[a]||e[t]||e[n])},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("kk","kk",{closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("kk",{buttonText:{month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},allDayText:"Күні бойы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшін оқиғалар жоқ"})}(),function(){!function(){var e=a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,a,t){return e<12?"오전":"오후"}});return e}(),e.fullCalendar.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),e.fullCalendar.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 표시 없습니다"})}(),function(){!function(){function e(e,a,t,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?r[t][0]:r[t][1]}function t(e){var a=e.substr(0,e.indexOf(" "));return r(a)?"a "+e:"an "+e}function n(e){var a=e.substr(0,e.indexOf(" "));return r(a)?"viru "+e:"virun "+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}var s=a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:n,s:"e puer Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})}(),function(){!function(){function e(e,a,t,n){return a?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10===0||e>10&&e<20}function r(e){return d[e].split("_")}function s(e,a,s,d){var i=e+" ";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},i=a.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:e,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},ordinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});return i}(),e.fullCalendar.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),e.fullCalendar.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})}(),function(){!function(){function e(e,a,t){return t?a%10===1&&a%100!==11?e[2]:e[3]:a%10===1&&a%100!==11?e[0]:e[1]}function t(a,t,n){return a+" "+e(s[n],a,t)}function n(a,t,n){return e(s[n],a,t)}function r(e,a){return a?"dažas sekundes":"dažām sekundēm"}var s={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},d=a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:r,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d}(),e.fullCalendar.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu, lai parādītu"})}(),function(){!function(){var e=a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})}(),function(){!function(){var e=a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})}(),function(){!function(){var e=a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}(),e.fullCalendar.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})}(),function(){!function(){var e=a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})}(),function(){!function(){var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,s=a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT", +lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nl",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})}(),function(){!function(){var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,s=a.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,n){return/-MMM-/.test(n)?t[a.month()]:e[a.month()]},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})}(),function(){!function(){var e=a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})}(),function(){!function(){function e(e){return e%10<5&&e%10>1&&~~(e/10)%10!==1}function t(a,t,n){var r=a+" ";switch(n){case"m":return t?"minuta":"minutę";case"mm":return r+(e(a)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return r+(e(a)?"godziny":"godzin");case"MM":return r+(e(a)?"miesiące":"miesięcy");case"yy":return r+(e(a)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),s=a.defineLocale("pl",{months:function(e,a){return""===a?"("+r[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(a)?r[e.month()]:n[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:t,mm:t,h:t,hh:t,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:t,y:"rok",yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})}(),function(){!function(){var e=a.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})}(),function(){!function(){var e=a.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return e}(),e.fullCalendar.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})}(),function(){!function(){function e(e,a,t){var n={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100===0)&&(r=" de "),e+r+n[t]}var t=a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})}(),function(){!function(){function e(e,a){var t=e.split("_");return a%10===1&&a%100!==11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(a,t,n){var r={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?t?"минута":"минуту":a+" "+e(r[n],+a)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],r=a.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:7}});return r}(),e.fullCalendar.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})}(),function(){!function(){function e(e){return e>1&&e<5}function t(a,t,n,r){var s=a+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(e(a)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(e(a)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(e(a)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(e(a)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(e(a)?"roky":"rokov"):s+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),s=a.defineLocale("sk",{months:n,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}(),e.fullCalendar.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})}(),function(){!function(){function e(e,a,t,n){var r=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"m":return a?"ena minuta":"eno minuto";case"mm":return r+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return r+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return r+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return r+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return r+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}var t=a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})}(),function(){!function(){var e={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,n){var r=e.words[n];return 1===n.length?t?r[0]:r[1]:a+" "+e.correctGrammaticalCase(a,r)}},t=a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var e=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}(),function(){!function(){var e={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(a,t,n){var r=e.words[n];return 1===n.length?t?r[0]:r[1]:a+" "+e.correctGrammaticalCase(a,r)}},t=a.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var e=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})}(),function(){!function(){var e=a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var a=e%10,t=1===~~(e%100/10)?"e":1===a?"a":2===a?"a":"e";return e+t},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})}(),function(){!function(){var e=a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,a,t){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี" +}});return e}(),e.fullCalendar.datepickerLocale("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})}(),function(){!function(){var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},t=a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var t=a%10,n=a%100-t,r=a>=100?100:null;return a+(e[t]||e[n]||e[r])},week:{dow:1,doy:7}});return t}(),e.fullCalendar.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Herhangi bir etkinlik görüntülemek için"})}(),function(){!function(){function e(e,a){var t=e.split("_");return a%10===1&&a%100!==11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(a,t,n){var r={mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":a+" "+e(r[n],+a)}function n(e,a){var t={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},n=/(\[[ВвУу]\]) ?dddd/.test(a)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(a)?"genitive":"nominative";return t[n][e.day()]}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}var s=a.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:r("[Сьогодні "),nextDay:r("[Завтра "),lastDay:r("[Вчора "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r("[Минулої] dddd [").call(this);case 1:case 2:case 4:return r("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}});return s}(),e.fullCalendar.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})}(),function(){!function(){var e=a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),e.fullCalendar.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"Không có sự kiện để hiển thị"})}(),function(){!function(){var e=a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"下午"===a||"晚上"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var e,t;return e=a().startOf("week"),t=this.diff(e,"days")>=7?"[下]":"[本]",0===this.minutes()?t+"dddAh点整":t+"dddAh点mm"},lastWeek:function(){var e,t;return e=a().startOf("week"),t=this.unix()<e.unix()?"[上]":"[本]",0===this.minutes()?t+"dddAh点整":t+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return e}(),e.fullCalendar.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),e.fullCalendar.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})}(),function(){!function(){var e=a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return e}(),e.fullCalendar.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),e.fullCalendar.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"待辦事項"},allDayText:"全天",eventLimitText:"更多",noEventsMessage:"没有事件显示"})}(),a.locale("en"),e.fullCalendar.locale("en"),e.datepicker&&e.datepicker.setDefaults(e.datepicker.regional[""])});
\ No newline at end of file diff --git a/library/sticky-kit/sticky-kit.js b/library/sticky-kit/sticky-kit.js new file mode 100644 index 000000000..eb2ea8a26 --- /dev/null +++ b/library/sticky-kit/sticky-kit.js @@ -0,0 +1,265 @@ +// Generated by CoffeeScript 1.10.0 + +/** +@license Sticky-kit v1.1.3 | MIT | Leaf Corcoran 2015 | http://leafo.net + */ + +(function() { + var $, win; + + $ = window.jQuery; + + win = $(window); + + $.fn.stick_in_parent = function(opts) { + var doc, elm, enable_bottoming, fn, i, inner_scrolling, len, manual_spacer, offset_top, outer_width, parent_selector, recalc_every, sticky_class; + if (opts == null) { + opts = {}; + } + sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling, recalc_every = opts.recalc_every, parent_selector = opts.parent, offset_top = opts.offset_top, manual_spacer = opts.spacer, enable_bottoming = opts.bottoming; + if (offset_top == null) { + offset_top = 0; + } + if (parent_selector == null) { + parent_selector = void 0; + } + if (inner_scrolling == null) { + inner_scrolling = true; + } + if (sticky_class == null) { + sticky_class = "is_stuck"; + } + doc = $(document); + if (enable_bottoming == null) { + enable_bottoming = true; + } + outer_width = function(el) { + var _el, computed, w; + if (window.getComputedStyle) { + _el = el[0]; + computed = window.getComputedStyle(el[0]); + w = parseFloat(computed.getPropertyValue("width")) + parseFloat(computed.getPropertyValue("margin-left")) + parseFloat(computed.getPropertyValue("margin-right")); + if (computed.getPropertyValue("box-sizing") !== "border-box") { + w += parseFloat(computed.getPropertyValue("border-left-width")) + parseFloat(computed.getPropertyValue("border-right-width")) + parseFloat(computed.getPropertyValue("padding-left")) + parseFloat(computed.getPropertyValue("padding-right")); + } + return w; + } else { + return el.outerWidth(true); + } + }; + fn = function(elm, padding_bottom, parent_top, parent_height, top, height, el_float, detached) { + var bottomed, detach, fixed, last_pos, last_scroll_height, offset, parent, recalc, recalc_and_tick, recalc_counter, spacer, tick; + if (elm.data("sticky_kit")) { + return; + } + elm.data("sticky_kit", true); + last_scroll_height = doc.height(); + parent = elm.parent(); + if (parent_selector != null) { + parent = parent.closest(parent_selector); + } + if (!parent.length) { + throw "failed to find stick parent"; + } + fixed = false; + bottomed = false; + spacer = manual_spacer != null ? manual_spacer && elm.closest(manual_spacer) : $("<div />"); + if (spacer) { + spacer.css('position', elm.css('position')); + } + recalc = function() { + var border_top, padding_top, restore; + if (detached) { + return; + } + last_scroll_height = doc.height(); + border_top = parseInt(parent.css("border-top-width"), 10); + padding_top = parseInt(parent.css("padding-top"), 10); + padding_bottom = parseInt(parent.css("padding-bottom"), 10); + parent_top = parent.offset().top + border_top + padding_top; + parent_height = parent.outerHeight(true); + if (fixed) { + fixed = false; + bottomed = false; + if (manual_spacer == null) { + elm.insertAfter(spacer); + spacer.detach(); + } + elm.css({ + position: "", + top: "", + width: "", + bottom: "" + }).removeClass(sticky_class); + restore = true; + } + top = elm.offset().top - (parseInt(elm.css("margin-top"), 10) || 0) - offset_top; + height = elm.outerHeight(true); + el_float = elm.css("float"); + if (spacer) { + spacer.css({ + width: outer_width(elm), + height: height, + display: elm.css("display"), + "vertical-align": elm.css("vertical-align"), + "float": el_float + }); + } + if (restore) { + return tick(); + } + }; + recalc(); + if (height === parent_height) { + return; + } + last_pos = void 0; + offset = offset_top; + recalc_counter = recalc_every; + tick = function() { + var css, delta, recalced, scroll, will_bottom, win_height; + if (detached) { + return; + } + recalced = false; + if (recalc_counter != null) { + recalc_counter -= 1; + if (recalc_counter <= 0) { + recalc_counter = recalc_every; + recalc(); + recalced = true; + } + } + if (!recalced && doc.height() !== last_scroll_height) { + recalc(); + recalced = true; + } + scroll = win.scrollTop(); + if (last_pos != null) { + delta = scroll - last_pos; + } + last_pos = scroll; + if (fixed) { + if (enable_bottoming) { + will_bottom = scroll + height + offset > parent_height + parent_top; + if (bottomed && !will_bottom) { + bottomed = false; + elm.css({ + position: "fixed", + bottom: "", + top: offset + }).trigger("sticky_kit:unbottom"); + } + } + if (scroll < top) { + fixed = false; + offset = offset_top; + if (manual_spacer == null) { + if (el_float === "left" || el_float === "right") { + elm.insertAfter(spacer); + } + spacer.detach(); + } + css = { + position: "", + width: "", + top: "" + }; + elm.css(css).removeClass(sticky_class).trigger("sticky_kit:unstick"); + } + if (inner_scrolling) { + win_height = win.height(); + if (height + offset_top > win_height) { + if (!bottomed) { + offset -= delta; + offset = Math.max(win_height - height, offset); + offset = Math.min(offset_top, offset); + if (fixed) { + elm.css({ + top: offset + "px" + }); + } + } + } + } + } else { + if (scroll > top) { + fixed = true; + css = { + position: "fixed", + top: offset + }; + css.width = elm.css("box-sizing") === "border-box" ? elm.outerWidth() + "px" : elm.width() + "px"; + elm.css(css).addClass(sticky_class); + if (manual_spacer == null) { + elm.after(spacer); + if (el_float === "left" || el_float === "right") { + spacer.append(elm); + } + } + elm.trigger("sticky_kit:stick"); + } + } + if (fixed && enable_bottoming) { + if (will_bottom == null) { + will_bottom = scroll + height + offset > parent_height + parent_top; + } + if (!bottomed && will_bottom) { + bottomed = true; + if (parent.css("position") === "static") { + parent.css({ + position: "relative" + }); + } + return elm.css({ + position: "absolute", + bottom: padding_bottom, + top: "auto" + }).trigger("sticky_kit:bottom"); + } + } + }; + recalc_and_tick = function() { + recalc(); + return tick(); + }; + detach = function() { + detached = true; + win.off("touchmove", tick); + win.off("scroll", tick); + win.off("resize", recalc_and_tick); + $(document.body).off("sticky_kit:recalc", recalc_and_tick); + elm.off("sticky_kit:detach", detach); + elm.removeData("sticky_kit"); + elm.css({ + position: "", + bottom: "", + top: "", + width: "" + }); + parent.position("position", ""); + if (fixed) { + if (manual_spacer == null) { + if (el_float === "left" || el_float === "right") { + elm.insertAfter(spacer); + } + spacer.remove(); + } + return elm.removeClass(sticky_class); + } + }; + win.on("touchmove", tick); + win.on("scroll", tick); + win.on("resize", recalc_and_tick); + $(document.body).on("sticky_kit:recalc", recalc_and_tick); + elm.on("sticky_kit:detach", detach); + return setTimeout(tick, 0); + }; + for (i = 0, len = this.length; i < len; i++) { + elm = this[i]; + fn($(elm)); + } + return this; + }; + +}).call(this); diff --git a/library/sticky-kit/sticky-kit.min.js b/library/sticky-kit/sticky-kit.min.js new file mode 100644 index 000000000..c4d7f2e3b --- /dev/null +++ b/library/sticky-kit/sticky-kit.min.js @@ -0,0 +1,10 @@ +/* + Sticky-kit v1.1.3 | MIT | Leaf Corcoran 2015 | http://leafo.net +*/ +(function(){var c,f;c=window.jQuery;f=c(window);c.fn.stick_in_parent=function(b){var A,w,J,n,B,K,p,q,L,k,E,t;null==b&&(b={});t=b.sticky_class;B=b.inner_scrolling;E=b.recalc_every;k=b.parent;q=b.offset_top;p=b.spacer;w=b.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=c(document);null==w&&(w=!0);L=function(a){var b;return window.getComputedStyle?(a=window.getComputedStyle(a[0]),b=parseFloat(a.getPropertyValue("width"))+parseFloat(a.getPropertyValue("margin-left"))+ +parseFloat(a.getPropertyValue("margin-right")),"border-box"!==a.getPropertyValue("box-sizing")&&(b+=parseFloat(a.getPropertyValue("border-left-width"))+parseFloat(a.getPropertyValue("border-right-width"))+parseFloat(a.getPropertyValue("padding-left"))+parseFloat(a.getPropertyValue("padding-right"))),b):a.outerWidth(!0)};J=function(a,b,n,C,F,u,r,G){var v,H,m,D,I,d,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k));if(!g.length)throw"failed to find stick parent"; +v=m=!1;(h=null!=p?p&&a.closest(p):c("<div />"))&&h.css("position",a.css("position"));x=function(){var d,f,e;if(!G&&(I=A.height(),d=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),b=parseInt(g.css("padding-bottom"),10),n=g.offset().top+d+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q,u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:L(a), +height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,d=q,z=E,l=function(){var c,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+d>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:d}).trigger("sticky_kit:unbottom"))),e<F&&(m=!1,d=q,null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.detach()),c={position:"",width:"",top:""},a.css(c).removeClass(t).trigger("sticky_kit:unstick")), +B&&(c=f.height(),u+q>c&&!v&&(d-=l,d=Math.max(c-u,d),d=Math.min(q,d),m&&a.css({top:d+"px"})))):e>F&&(m=!0,c={position:"fixed",top:d},c.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(c).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+d>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}),a.css({position:"absolute",bottom:b,top:"auto"}).trigger("sticky_kit:bottom")}, +y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);c(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize",y),c(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l, +0)}};n=0;for(K=this.length;n<K;n++)b=this[n],J(c(b));return this}}).call(this); diff --git a/util/hmessages.po b/util/hmessages.po index 0293d32b7..6f58c4244 100644 --- a/util/hmessages.po +++ b/util/hmessages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 1.15.1\n" +"Project-Id-Version: 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-11 00:05-0800\n" +"POT-Creation-Date: 2017-01-06 00:05-0800\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,154 +17,155 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../Zotlabs/Access/PermissionRoles.php:182 +#: ../../Zotlabs/Access/PermissionRoles.php:227 #: ../../include/permissions.php:945 msgid "Social Networking" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:183 +#: ../../Zotlabs/Access/PermissionRoles.php:228 #: ../../include/permissions.php:945 msgid "Social - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:184 +#: ../../Zotlabs/Access/PermissionRoles.php:229 #: ../../include/permissions.php:945 msgid "Social - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:185 +#: ../../Zotlabs/Access/PermissionRoles.php:230 #: ../../include/permissions.php:945 msgid "Social - Private" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:188 +#: ../../Zotlabs/Access/PermissionRoles.php:233 #: ../../include/permissions.php:946 msgid "Community Forum" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:189 +#: ../../Zotlabs/Access/PermissionRoles.php:234 #: ../../include/permissions.php:946 msgid "Forum - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:190 +#: ../../Zotlabs/Access/PermissionRoles.php:235 #: ../../include/permissions.php:946 msgid "Forum - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:191 +#: ../../Zotlabs/Access/PermissionRoles.php:236 #: ../../include/permissions.php:946 msgid "Forum - Private" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:194 +#: ../../Zotlabs/Access/PermissionRoles.php:239 #: ../../include/permissions.php:947 msgid "Feed Republish" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:195 +#: ../../Zotlabs/Access/PermissionRoles.php:240 #: ../../include/permissions.php:947 msgid "Feed - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:196 +#: ../../Zotlabs/Access/PermissionRoles.php:241 #: ../../include/permissions.php:947 msgid "Feed - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:199 +#: ../../Zotlabs/Access/PermissionRoles.php:244 #: ../../include/permissions.php:948 msgid "Special Purpose" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:200 +#: ../../Zotlabs/Access/PermissionRoles.php:245 #: ../../include/permissions.php:948 msgid "Special - Celebrity/Soapbox" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:201 +#: ../../Zotlabs/Access/PermissionRoles.php:246 #: ../../include/permissions.php:948 msgid "Special - Group Repository" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:204 -#: ../../Zotlabs/Module/Register.php:213 +#: ../../Zotlabs/Access/PermissionRoles.php:249 +#: ../../Zotlabs/Module/Register.php:213 ../../Zotlabs/Module/Connedit.php:856 #: ../../Zotlabs/Module/New_channel.php:132 -#: ../../Zotlabs/Module/Settings/Channel.php:442 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144 -#: ../../extend/addon/addon/cdav/cdav.php:270 -#: ../../extend/addon/addon/cdav/cdav.php:277 ../../include/selectors.php:49 +#: ../../Zotlabs/Module/Settings/Channel.php:445 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1148 +#: ../../extend/addon/addon/cdav/cdav.php:277 +#: ../../extend/addon/addon/cdav/cdav.php:284 ../../include/selectors.php:49 #: ../../include/selectors.php:66 ../../include/selectors.php:104 -#: ../../include/selectors.php:140 ../../include/permissions.php:949 +#: ../../include/selectors.php:140 ../../include/connections.php:863 +#: ../../include/connections.php:870 ../../include/permissions.php:949 msgid "Other" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:205 +#: ../../Zotlabs/Access/PermissionRoles.php:250 #: ../../include/permissions.php:949 msgid "Custom/Expert Mode" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:30 +#: ../../Zotlabs/Access/Permissions.php:46 msgid "Can view my channel stream and posts" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:31 ../../include/permissions.php:42 +#: ../../Zotlabs/Access/Permissions.php:47 ../../include/permissions.php:42 msgid "Can send me their channel stream and posts" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:32 ../../include/permissions.php:36 +#: ../../Zotlabs/Access/Permissions.php:48 ../../include/permissions.php:36 msgid "Can view my default channel profile" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:33 ../../include/permissions.php:37 +#: ../../Zotlabs/Access/Permissions.php:49 ../../include/permissions.php:37 msgid "Can view my connections" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:34 ../../include/permissions.php:38 +#: ../../Zotlabs/Access/Permissions.php:50 ../../include/permissions.php:38 msgid "Can view my file storage and photos" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:35 +#: ../../Zotlabs/Access/Permissions.php:51 msgid "Can upload/modify my file storage and photos" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:36 +#: ../../Zotlabs/Access/Permissions.php:52 msgid "Can view my channel webpages" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:37 +#: ../../Zotlabs/Access/Permissions.php:53 msgid "Can create/edit my channel webpages" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:38 +#: ../../Zotlabs/Access/Permissions.php:54 msgid "Can post on my channel (wall) page" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:39 ../../include/permissions.php:44 +#: ../../Zotlabs/Access/Permissions.php:55 ../../include/permissions.php:44 msgid "Can comment on or like my posts" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:40 ../../include/permissions.php:45 +#: ../../Zotlabs/Access/Permissions.php:56 ../../include/permissions.php:45 msgid "Can send me private mail messages" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:41 +#: ../../Zotlabs/Access/Permissions.php:57 msgid "Can like/dislike profiles and profile things" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:42 +#: ../../Zotlabs/Access/Permissions.php:58 msgid "Can forward to all my channel connections via @+ mentions in posts" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:43 +#: ../../Zotlabs/Access/Permissions.php:59 msgid "Can chat with me" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:44 ../../include/permissions.php:53 +#: ../../Zotlabs/Access/Permissions.php:60 ../../include/permissions.php:53 msgid "Can source my public posts in derived channels" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:45 +#: ../../Zotlabs/Access/Permissions.php:61 msgid "Can administer my channel" msgstr "" @@ -172,7 +173,7 @@ msgstr "" msgid "parent" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2723 +#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2695 msgid "Collection" msgstr "" @@ -198,18 +199,18 @@ msgstr "" #: ../../Zotlabs/Storage/Browser.php:163 ../../Zotlabs/Module/Photos.php:789 #: ../../Zotlabs/Module/Photos.php:1249 -#: ../../Zotlabs/Module/Embedphotos.php:145 ../../Zotlabs/Lib/Apps.php:490 -#: ../../Zotlabs/Lib/Apps.php:565 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 +#: ../../Zotlabs/Module/Embedphotos.php:145 ../../Zotlabs/Lib/Apps.php:526 +#: ../../Zotlabs/Lib/Apps.php:603 #: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 -#: ../../include/widgets.php:1682 ../../include/conversation.php:1047 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 +#: ../../include/widgets.php:1684 ../../include/conversation.php:1177 msgid "Unknown" msgstr "" #: ../../Zotlabs/Storage/Browser.php:224 ../../Zotlabs/Module/Fbrowser.php:85 -#: ../../Zotlabs/Lib/Apps.php:217 ../../include/nav.php:96 -#: ../../include/conversation.php:1700 +#: ../../Zotlabs/Lib/Apps.php:219 ../../include/nav.php:96 +#: ../../include/conversation.php:1843 msgid "Files" msgstr "" @@ -222,43 +223,45 @@ msgid "Shared" msgstr "" #: ../../Zotlabs/Storage/Browser.php:228 ../../Zotlabs/Storage/Browser.php:321 -#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:147 +#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/Connedit.php:859 +#: ../../Zotlabs/Module/New_channel.php:147 #: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Layouts.php:184 -#: ../../Zotlabs/Module/Webpages.php:239 +#: ../../Zotlabs/Module/Webpages.php:243 #: ../../extend/addon/addon/cdav/include/widgets.php:127 #: ../../extend/addon/addon/cdav/include/widgets.php:164 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151 msgid "Create" msgstr "" #: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:323 -#: ../../Zotlabs/Module/Cover_photo.php:357 #: ../../Zotlabs/Module/Photos.php:816 ../../Zotlabs/Module/Photos.php:1370 +#: ../../Zotlabs/Module/Cover_photo.php:357 #: ../../Zotlabs/Module/Profile_photo.php:410 #: ../../Zotlabs/Module/Embedphotos.php:157 #: ../../extend/addon/addon/cdav/include/widgets.php:132 #: ../../extend/addon/addon/cdav/include/widgets.php:168 -#: ../../include/widgets.php:1695 +#: ../../include/widgets.php:1697 msgid "Upload" msgstr "" #: ../../Zotlabs/Storage/Browser.php:233 #: ../../Zotlabs/Module/Admin/Channels.php:159 -#: ../../Zotlabs/Module/Sharedwithme.php:99 +#: ../../Zotlabs/Module/Connedit.php:844 +#: ../../Zotlabs/Module/Sharedwithme.php:99 ../../Zotlabs/Module/Wiki.php:151 #: ../../Zotlabs/Module/Settings/Oauth.php:89 #: ../../Zotlabs/Module/Settings/Oauth.php:115 #: ../../Zotlabs/Module/Chat.php:250 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1132 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:132 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:164 msgid "Name" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:234 +#: ../../Zotlabs/Storage/Browser.php:234 ../../Zotlabs/Module/Wiki.php:152 msgid "Type" msgstr "" #: ../../Zotlabs/Storage/Browser.php:235 -#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1397 +#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1403 msgid "Size" msgstr "" @@ -267,42 +270,44 @@ msgstr "" msgid "Last Modified" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:238 +#: ../../Zotlabs/Storage/Browser.php:238 ../../Zotlabs/Module/Editpost.php:85 #: ../../Zotlabs/Module/Editblock.php:109 -#: ../../Zotlabs/Module/Connections.php:290 -#: ../../Zotlabs/Module/Connections.php:310 +#: ../../Zotlabs/Module/Connections.php:300 +#: ../../Zotlabs/Module/Connections.php:320 #: ../../Zotlabs/Module/Admin/Profs.php:154 #: ../../Zotlabs/Module/Editlayout.php:114 #: ../../Zotlabs/Module/Editwebpage.php:145 ../../Zotlabs/Module/Menu.php:112 -#: ../../Zotlabs/Module/Editpost.php:84 ../../Zotlabs/Module/Blocks.php:160 -#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:240 +#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:192 +#: ../../Zotlabs/Module/Webpages.php:244 ../../Zotlabs/Module/Wiki.php:144 +#: ../../Zotlabs/Module/Wiki.php:246 #: ../../Zotlabs/Module/Settings/Oauth.php:149 -#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Lib/Apps.php:341 +#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Lib/Apps.php:346 #: ../../Zotlabs/Lib/ThreadItem.php:106 #: ../../extend/addon/addon/cdav/include/widgets.php:125 #: ../../extend/addon/addon/cdav/include/widgets.php:161 -#: ../../include/channel.php:961 ../../include/channel.php:965 -#: ../../include/page_widgets.php:9 ../../include/page_widgets.php:39 -#: ../../include/menu.php:113 +#: ../../include/menu.php:113 ../../include/page_widgets.php:9 +#: ../../include/page_widgets.php:39 ../../include/channel.php:961 +#: ../../include/channel.php:965 msgid "Edit" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:239 +#: ../../Zotlabs/Storage/Browser.php:239 ../../Zotlabs/Module/Photos.php:1179 #: ../../Zotlabs/Module/Editblock.php:134 -#: ../../Zotlabs/Module/Connections.php:263 +#: ../../Zotlabs/Module/Connections.php:271 #: ../../Zotlabs/Module/Admin/Profs.php:155 #: ../../Zotlabs/Module/Admin/Accounts.php:173 #: ../../Zotlabs/Module/Admin/Channels.php:149 #: ../../Zotlabs/Module/Editlayout.php:137 -#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177 -#: ../../Zotlabs/Module/Photos.php:1179 ../../Zotlabs/Module/Blocks.php:162 -#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Module/Webpages.php:242 +#: ../../Zotlabs/Module/Editwebpage.php:170 +#: ../../Zotlabs/Module/Connedit.php:641 ../../Zotlabs/Module/Connedit.php:861 +#: ../../Zotlabs/Module/Group.php:177 ../../Zotlabs/Module/Blocks.php:162 +#: ../../Zotlabs/Module/Webpages.php:246 #: ../../Zotlabs/Module/Settings/Oauth.php:150 -#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Lib/Apps.php:342 +#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Lib/Apps.php:347 #: ../../Zotlabs/Lib/ThreadItem.php:126 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:860 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149 -#: ../../include/conversation.php:676 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:864 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1153 +#: ../../include/conversation.php:656 msgid "Delete" msgstr "" @@ -332,20 +337,22 @@ msgstr "" msgid "Drop files here to immediately upload" msgstr "" -#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Profperm.php:28 -#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:114 -#: ../../Zotlabs/Module/Like.php:283 ../../Zotlabs/Module/Dreport.php:10 -#: ../../Zotlabs/Module/Dreport.php:68 ../../Zotlabs/Module/Subthread.php:62 +#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Like.php:283 +#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Dreport.php:10 +#: ../../Zotlabs/Module/Dreport.php:68 +#: ../../Zotlabs/Module/Import_items.php:114 +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62 #: ../../extend/addon/addon/frphotos/frphotos.php:81 #: ../../extend/addon/addon/redfiles/redfiles.php:109 #: ../../extend/addon/addon/redphotos/redphotos.php:119 -#: ../../include/items.php:399 +#: ../../include/items.php:327 msgid "Permission denied" msgstr "" #: ../../Zotlabs/Web/WebServer.php:128 ../../Zotlabs/Web/Router.php:67 #: ../../Zotlabs/Module/Achievements.php:34 -#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Authtest.php:16 +#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Photos.php:73 +#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Authtest.php:16 #: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Editblock.php:67 #: ../../Zotlabs/Module/Page.php:35 ../../Zotlabs/Module/Page.php:91 #: ../../Zotlabs/Module/Connections.php:33 @@ -356,67 +363,63 @@ msgstr "" #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:104 -#: ../../Zotlabs/Module/Editwebpage.php:126 ../../Zotlabs/Module/Manage.php:10 -#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Appman.php:75 -#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Filestorage.php:23 +#: ../../Zotlabs/Module/Editwebpage.php:126 ../../Zotlabs/Module/Like.php:181 +#: ../../Zotlabs/Module/Network.php:15 ../../Zotlabs/Module/Menu.php:78 +#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Connedit.php:403 +#: ../../Zotlabs/Module/Filestorage.php:23 #: ../../Zotlabs/Module/Filestorage.php:78 #: ../../Zotlabs/Module/Filestorage.php:93 -#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Item.php:216 -#: ../../Zotlabs/Module/Item.php:224 ../../Zotlabs/Module/Item.php:1074 -#: ../../Zotlabs/Module/Profiles.php:197 ../../Zotlabs/Module/Profiles.php:595 +#: ../../Zotlabs/Module/Filestorage.php:120 #: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Group.php:13 #: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76 -#: ../../Zotlabs/Module/Channel.php:107 ../../Zotlabs/Module/Channel.php:237 -#: ../../Zotlabs/Module/Channel.php:277 ../../Zotlabs/Module/Locs.php:87 -#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Mitem.php:115 -#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mood.php:116 -#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Photos.php:73 -#: ../../Zotlabs/Module/Setup.php:218 ../../Zotlabs/Module/Network.php:15 -#: ../../Zotlabs/Module/New_channel.php:77 -#: ../../Zotlabs/Module/New_channel.php:104 ../../Zotlabs/Module/Mail.php:135 +#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Mitem.php:115 +#: ../../Zotlabs/Module/Appman.php:76 ../../Zotlabs/Module/Mood.php:116 +#: ../../Zotlabs/Module/Profiles.php:197 ../../Zotlabs/Module/Profiles.php:607 +#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Invite.php:17 +#: ../../Zotlabs/Module/Invite.php:94 ../../Zotlabs/Module/New_channel.php:77 +#: ../../Zotlabs/Module/New_channel.php:104 ../../Zotlabs/Module/Setup.php:212 #: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Module/Poke.php:137 -#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94 #: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 #: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 #: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Rate.php:113 #: ../../Zotlabs/Module/Profile_photo.php:273 #: ../../Zotlabs/Module/Profile_photo.php:286 -#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Events.php:267 -#: ../../Zotlabs/Module/Regmod.php:21 ../../Zotlabs/Module/Pdledit.php:29 -#: ../../Zotlabs/Module/Connedit.php:395 +#: ../../Zotlabs/Module/Events.php:271 ../../Zotlabs/Module/Common.php:39 +#: ../../Zotlabs/Module/Channel.php:107 ../../Zotlabs/Module/Channel.php:237 +#: ../../Zotlabs/Module/Channel.php:277 ../../Zotlabs/Module/Regmod.php:21 +#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Message.php:18 #: ../../Zotlabs/Module/Service_limits.php:11 #: ../../Zotlabs/Module/Webpages.php:116 -#: ../../Zotlabs/Module/Sharedwithme.php:11 -#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30 -#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294 -#: ../../Zotlabs/Module/Thing.php:335 +#: ../../Zotlabs/Module/Sharedwithme.php:11 ../../Zotlabs/Module/Wiki.php:189 +#: ../../Zotlabs/Module/Wiki.php:286 ../../Zotlabs/Module/Sources.php:74 +#: ../../Zotlabs/Module/Suggest.php:30 ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Thing.php:335 +#: ../../Zotlabs/Module/Mail.php:164 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Chat.php:100 -#: ../../Zotlabs/Module/Chat.php:105 ../../Zotlabs/Lib/Chatroom.php:137 +#: ../../Zotlabs/Module/Chat.php:105 ../../Zotlabs/Module/Item.php:219 +#: ../../Zotlabs/Module/Item.php:229 ../../Zotlabs/Module/Item.php:1061 +#: ../../Zotlabs/Lib/Chatroom.php:137 #: ../../extend/addon/addon/friendica/dfrn_confirm.php:55 #: ../../extend/addon/addon/keepout/keepout.php:36 #: ../../extend/addon/addon/pumpio/pumpio.php:40 #: ../../extend/addon/addon/openid/Mod_Id.php:53 #: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:58 -#: ../../include/photos.php:27 ../../include/attach.php:142 -#: ../../include/attach.php:189 ../../include/attach.php:253 -#: ../../include/attach.php:267 ../../include/attach.php:274 -#: ../../include/attach.php:341 ../../include/attach.php:355 -#: ../../include/attach.php:362 ../../include/attach.php:439 -#: ../../include/attach.php:906 ../../include/attach.php:977 -#: ../../include/attach.php:1135 ../../include/items.php:3490 +#: ../../include/attach.php:142 ../../include/attach.php:189 +#: ../../include/attach.php:253 ../../include/attach.php:267 +#: ../../include/attach.php:274 ../../include/attach.php:341 +#: ../../include/attach.php:355 ../../include/attach.php:362 +#: ../../include/attach.php:439 ../../include/attach.php:906 +#: ../../include/attach.php:977 ../../include/attach.php:1135 +#: ../../include/photos.php:27 ../../include/items.php:3422 msgid "Permission denied." msgstr "" -#: ../../Zotlabs/Web/Router.php:148 ../../include/help.php:62 -msgid "Not Found" -msgstr "" - -#: ../../Zotlabs/Web/Router.php:151 ../../Zotlabs/Module/Display.php:120 +#: ../../Zotlabs/Web/Router.php:157 ../../Zotlabs/Module/Display.php:120 #: ../../Zotlabs/Module/Page.php:94 ../../Zotlabs/Module/Block.php:79 -#: ../../include/help.php:65 +#: ../../include/help.php:66 msgid "Page not found." msgstr "" @@ -426,7 +429,7 @@ msgid "" "logout and retry." msgstr "" -#: ../../Zotlabs/Zot/Auth.php:246 +#: ../../Zotlabs/Zot/Auth.php:250 #: ../../extend/addon/addon/openid/Mod_Openid.php:76 #: ../../extend/addon/addon/openid/Mod_Openid.php:183 #, php-format @@ -448,12 +451,20 @@ msgstr "" msgid "Some blurb about what to do when you're new here" msgstr "" -#: ../../Zotlabs/Module/Chatsvc.php:117 -msgid "Away" +#: ../../Zotlabs/Module/Display.php:17 ../../Zotlabs/Module/Photos.php:509 +#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Ratings.php:83 +#: ../../Zotlabs/Module/Directory.php:64 +#: ../../Zotlabs/Module/Viewconnections.php:23 +#: ../../extend/addon/addon/friendica/dfrn_request.php:794 +msgid "Public access denied." msgstr "" -#: ../../Zotlabs/Module/Chatsvc.php:122 -msgid "Online" +#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Admin.php:60 +#: ../../Zotlabs/Module/Admin/Plugins.php:254 +#: ../../Zotlabs/Module/Admin/Themes.php:69 +#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Thing.php:89 +#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3343 +msgid "Item not found." msgstr "" #: ../../Zotlabs/Module/Register.php:49 @@ -500,7 +511,7 @@ msgid "" "Please try again tomorrow." msgstr "" -#: ../../Zotlabs/Module/Register.php:221 +#: ../../Zotlabs/Module/Register.php:221 ../../Zotlabs/Module/Siteinfo.php:27 msgid "Terms of Service" msgstr "" @@ -579,7 +590,7 @@ msgid "yes" msgstr "" #: ../../Zotlabs/Module/Register.php:253 -#: ../../Zotlabs/Module/Admin/Site.php:259 +#: ../../Zotlabs/Module/Admin/Site.php:261 msgid "Registration" msgstr "" @@ -587,8 +598,8 @@ msgstr "" msgid "Membership on this site is by invitation only." msgstr "" -#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:152 -#: ../../boot.php:1697 +#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:150 +#: ../../boot.php:1702 msgid "Register" msgstr "" @@ -603,121 +614,215 @@ msgstr "" msgid "Fetching URL returns error: %1$s" msgstr "" -#: ../../Zotlabs/Module/Display.php:17 ../../Zotlabs/Module/Search.php:17 -#: ../../Zotlabs/Module/Directory.php:64 ../../Zotlabs/Module/Ratings.php:83 -#: ../../Zotlabs/Module/Photos.php:509 -#: ../../Zotlabs/Module/Viewconnections.php:23 -#: ../../extend/addon/addon/friendica/dfrn_request.php:794 -msgid "Public access denied." -msgstr "" - -#: ../../Zotlabs/Module/Display.php:40 -#: ../../Zotlabs/Module/Admin/Plugins.php:254 -#: ../../Zotlabs/Module/Admin/Themes.php:69 -#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Admin.php:60 -#: ../../Zotlabs/Module/Thing.php:89 ../../Zotlabs/Module/Viewsrc.php:24 -#: ../../include/items.php:3411 -msgid "Item not found." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:33 -#, php-format -msgid "Your service plan only allows %d channels." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:71 ../../Zotlabs/Module/Import_items.php:42 -msgid "Nothing to import." +#: ../../Zotlabs/Module/Photos.php:82 +msgid "Page owner information could not be retrieved." msgstr "" -#: ../../Zotlabs/Module/Import.php:83 ../../Zotlabs/Module/Import.php:98 -#: ../../Zotlabs/Module/Import_items.php:66 -msgid "Unable to download data from old server" +#: ../../Zotlabs/Module/Photos.php:97 ../../Zotlabs/Module/Photos.php:734 +#: ../../Zotlabs/Module/Profile_photo.php:115 +#: ../../Zotlabs/Module/Profile_photo.php:219 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:225 +#: ../../include/photo/photo_driver.php:728 +msgid "Profile Photos" msgstr "" -#: ../../Zotlabs/Module/Import.php:105 -#: ../../Zotlabs/Module/Import_items.php:72 -msgid "Imported file is empty." +#: ../../Zotlabs/Module/Photos.php:103 ../../Zotlabs/Module/Photos.php:129 +msgid "Album not found." msgstr "" -#: ../../Zotlabs/Module/Import.php:127 -#: ../../Zotlabs/Module/Import_items.php:88 -#, php-format -msgid "Warning: Database versions differ by %1$d updates." +#: ../../Zotlabs/Module/Photos.php:112 +msgid "Delete Album" msgstr "" -#: ../../Zotlabs/Module/Import.php:157 ../../include/import.php:100 -msgid "Cloned channel not found. Import failed." +#: ../../Zotlabs/Module/Photos.php:133 +msgid "" +"Multiple storage folders exist with this album name, but within different " +"directories. Please remove the desired folder or folders using the Files " +"manager" msgstr "" -#: ../../Zotlabs/Module/Import.php:167 -msgid "No channel. Import failed." +#: ../../Zotlabs/Module/Photos.php:190 ../../Zotlabs/Module/Photos.php:1059 +msgid "Delete Photo" msgstr "" -#: ../../Zotlabs/Module/Import.php:503 -#: ../../include/Import/import_diaspora.php:142 -msgid "Import completed." +#: ../../Zotlabs/Module/Photos.php:520 +msgid "No photos selected" msgstr "" -#: ../../Zotlabs/Module/Import.php:525 -msgid "You must be logged in to use this feature." +#: ../../Zotlabs/Module/Photos.php:569 +msgid "Access to this item is restricted." msgstr "" -#: ../../Zotlabs/Module/Import.php:530 -msgid "Import Channel" +#: ../../Zotlabs/Module/Photos.php:608 +#, php-format +msgid "%1$.2f MB of %2$.2f MB photo storage used." msgstr "" -#: ../../Zotlabs/Module/Import.php:531 -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." +#: ../../Zotlabs/Module/Photos.php:611 +#, php-format +msgid "%1$.2f MB photo storage used." msgstr "" -#: ../../Zotlabs/Module/Import.php:532 -#: ../../Zotlabs/Module/Import_items.php:121 -msgid "File to Upload" +#: ../../Zotlabs/Module/Photos.php:647 +msgid "Upload Photos" msgstr "" -#: ../../Zotlabs/Module/Import.php:533 -msgid "Or provide the old server/hub details" +#: ../../Zotlabs/Module/Photos.php:651 +msgid "Enter an album name" msgstr "" -#: ../../Zotlabs/Module/Import.php:534 -msgid "Your old identity address (xyz@example.com)" +#: ../../Zotlabs/Module/Photos.php:652 +msgid "or select an existing album (doubleclick)" msgstr "" -#: ../../Zotlabs/Module/Import.php:535 -msgid "Your old login email address" +#: ../../Zotlabs/Module/Photos.php:653 +msgid "Create a status post for this upload" msgstr "" -#: ../../Zotlabs/Module/Import.php:536 -msgid "Your old login password" +#: ../../Zotlabs/Module/Photos.php:653 ../../Zotlabs/Module/Admin/Site.php:218 +#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157 +#: ../../Zotlabs/Module/Connedit.php:417 ../../Zotlabs/Module/Connedit.php:730 +#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Mitem.php:162 +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 +#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Profiles.php:653 +#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Events.php:470 +#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Removeme.php:63 +#: ../../Zotlabs/Module/Wiki.php:159 +#: ../../Zotlabs/Module/Settings/Channel.php:289 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +#: ../../extend/addon/addon/libertree/libertree.php:69 +#: ../../extend/addon/addon/libertree/libertree.php:81 +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../extend/addon/addon/nofed/nofed.php:72 +#: ../../extend/addon/addon/nofed/nofed.php:76 +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +#: ../../extend/addon/addon/planets/planets.php:153 +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../extend/addon/addon/rtof/rtof.php:81 +#: ../../extend/addon/addon/rtof/rtof.php:85 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../extend/addon/addon/twitter/twitter.php:246 +#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../extend/addon/addon/visage/visage.php:166 +#: ../../extend/addon/addon/wppost/wppost.php:82 +#: ../../extend/addon/addon/wppost/wppost.php:105 +#: ../../extend/addon/addon/wppost/wppost.php:109 +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../extend/addon/addon/cdav/cdav.php:234 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../view/theme/redbasic/php/config.php:111 +#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1724 +msgid "No" msgstr "" -#: ../../Zotlabs/Module/Import.php:537 -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." +#: ../../Zotlabs/Module/Photos.php:653 ../../Zotlabs/Module/Admin/Site.php:220 +#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157 +#: ../../Zotlabs/Module/Connedit.php:417 +#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Mitem.php:162 +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 +#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Profiles.php:653 +#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Events.php:470 +#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Removeme.php:63 +#: ../../Zotlabs/Module/Wiki.php:159 +#: ../../Zotlabs/Module/Settings/Channel.php:289 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +#: ../../extend/addon/addon/libertree/libertree.php:69 +#: ../../extend/addon/addon/libertree/libertree.php:81 +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../extend/addon/addon/nofed/nofed.php:72 +#: ../../extend/addon/addon/nofed/nofed.php:76 +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +#: ../../extend/addon/addon/planets/planets.php:153 +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../extend/addon/addon/rtof/rtof.php:81 +#: ../../extend/addon/addon/rtof/rtof.php:85 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../extend/addon/addon/twitter/twitter.php:246 +#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../extend/addon/addon/visage/visage.php:166 +#: ../../extend/addon/addon/wppost/wppost.php:82 +#: ../../extend/addon/addon/wppost/wppost.php:105 +#: ../../extend/addon/addon/wppost/wppost.php:109 +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../extend/addon/addon/cdav/cdav.php:234 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../view/theme/redbasic/php/config.php:111 +#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1724 +msgid "Yes" msgstr "" -#: ../../Zotlabs/Module/Import.php:538 -msgid "Make this hub my primary location" +#: ../../Zotlabs/Module/Photos.php:654 +msgid "Caption (optional):" msgstr "" -#: ../../Zotlabs/Module/Import.php:539 -msgid "" -"Import existing posts if possible (experimental - limited by available memory" +#: ../../Zotlabs/Module/Photos.php:655 +msgid "Description (optional):" msgstr "" -#: ../../Zotlabs/Module/Import.php:540 -msgid "" -"This process may take several minutes to complete. Please submit the form " -"only once and leave this page open until finished." +#: ../../Zotlabs/Module/Photos.php:658 ../../Zotlabs/Module/Photos.php:1047 +#: ../../Zotlabs/Module/Filestorage.php:152 ../../Zotlabs/Module/Thing.php:313 +#: ../../Zotlabs/Module/Thing.php:363 ../../Zotlabs/Module/Chat.php:234 +#: ../../include/acl_selectors.php:208 +msgid "Permissions" msgstr "" -#: ../../Zotlabs/Module/Import.php:543 ../../Zotlabs/Module/Connect.php:98 +#: ../../Zotlabs/Module/Photos.php:668 ../../Zotlabs/Module/Photos.php:1058 +#: ../../Zotlabs/Module/Photos.php:1098 ../../Zotlabs/Module/Photos.php:1216 +#: ../../Zotlabs/Module/Connect.php:98 #: ../../Zotlabs/Module/Admin/Features.php:66 #: ../../Zotlabs/Module/Admin/Logs.php:84 #: ../../Zotlabs/Module/Admin/Plugins.php:429 @@ -727,31 +832,30 @@ msgstr "" #: ../../Zotlabs/Module/Admin/Account_edit.php:74 #: ../../Zotlabs/Module/Admin/Accounts.php:166 #: ../../Zotlabs/Module/Admin/Channels.php:147 -#: ../../Zotlabs/Module/Admin/Site.php:258 ../../Zotlabs/Module/Appman.php:126 -#: ../../Zotlabs/Module/Filestorage.php:165 -#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Group.php:85 -#: ../../Zotlabs/Module/Import_items.php:122 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Mood.php:139 -#: ../../Zotlabs/Module/Photos.php:668 ../../Zotlabs/Module/Photos.php:1058 -#: ../../Zotlabs/Module/Photos.php:1098 ../../Zotlabs/Module/Photos.php:1216 -#: ../../Zotlabs/Module/Setup.php:315 ../../Zotlabs/Module/Setup.php:363 -#: ../../Zotlabs/Module/Mail.php:384 ../../Zotlabs/Module/Poke.php:186 -#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Pconfig.php:107 -#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Events.php:484 -#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Connedit.php:780 +#: ../../Zotlabs/Module/Admin/Site.php:260 ../../Zotlabs/Module/Locs.php:121 +#: ../../Zotlabs/Module/Connedit.php:824 +#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Cal.php:342 +#: ../../Zotlabs/Module/Group.php:85 ../../Zotlabs/Module/Import_items.php:122 +#: ../../Zotlabs/Module/Import.php:543 ../../Zotlabs/Module/Mitem.php:243 +#: ../../Zotlabs/Module/Appman.php:127 ../../Zotlabs/Module/Mood.php:139 +#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Invite.php:149 +#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Poke.php:186 ../../Zotlabs/Module/Pconfig.php:107 +#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Events.php:493 +#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Wiki.php:148 #: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149 #: ../../Zotlabs/Module/Settings/Features.php:47 #: ../../Zotlabs/Module/Settings/Oauth.php:87 -#: ../../Zotlabs/Module/Settings/Tokens.php:167 #: ../../Zotlabs/Module/Settings/Account.php:118 -#: ../../Zotlabs/Module/Settings/Channel.php:452 +#: ../../Zotlabs/Module/Settings/Channel.php:455 #: ../../Zotlabs/Module/Settings/Display.php:196 +#: ../../Zotlabs/Module/Settings/Tokens.php:167 #: ../../Zotlabs/Module/Thing.php:320 ../../Zotlabs/Module/Thing.php:370 -#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196 +#: ../../Zotlabs/Module/Mail.php:413 ../../Zotlabs/Module/Chat.php:196 #: ../../Zotlabs/Module/Chat.php:241 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Lib/ThreadItem.php:729 +#: ../../Zotlabs/Lib/ThreadItem.php:731 #: ../../extend/addon/addon/chords/Mod_Chords.php:60 -#: ../../extend/addon/addon/diaspora/diaspora.php:703 +#: ../../extend/addon/addon/diaspora/diaspora.php:710 #: ../../extend/addon/addon/dwpost/dwpost.php:89 #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 #: ../../extend/addon/addon/friendica/friendica.php:128 @@ -786,13 +890,13 @@ msgstr "" #: ../../extend/addon/addon/statusnet/statusnet.php:380 #: ../../extend/addon/addon/statusnet/statusnet.php:432 #: ../../extend/addon/addon/statusnet/statusnet.php:899 -#: ../../extend/addon/addon/superblock/superblock.php:67 +#: ../../extend/addon/addon/superblock/superblock.php:118 #: ../../extend/addon/addon/twitter/twitter.php:217 #: ../../extend/addon/addon/twitter/twitter.php:259 #: ../../extend/addon/addon/visage/visage.php:170 #: ../../extend/addon/addon/wppost/wppost.php:113 #: ../../extend/addon/addon/xmpp/xmpp.php:69 -#: ../../extend/addon/addon/cdav/cdav.php:239 +#: ../../extend/addon/addon/cdav/cdav.php:246 #: ../../extend/addon/addon/likebanner/likebanner.php:57 #: ../../extend/addon/addon/mailtest/mailtest.php:100 #: ../../include/js_strings.php:22 ../../include/widgets.php:796 @@ -800,6 +904,319 @@ msgstr "" msgid "Submit" msgstr "" +#: ../../Zotlabs/Module/Photos.php:686 +msgid "Album name could not be decoded" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:734 +msgid "Contact Photos" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:757 +msgid "Show Newest First" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:759 +msgid "Show Oldest First" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:783 ../../Zotlabs/Module/Photos.php:1337 +#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1678 +msgid "View Photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:814 +#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1695 +msgid "Edit Album" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:861 +msgid "Permission denied. Access to this item may be restricted." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:863 +msgid "Photo not available" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:921 +msgid "Use as profile photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:922 +msgid "Use as cover photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:929 +msgid "Private Photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:940 ../../Zotlabs/Module/Cal.php:336 +#: ../../Zotlabs/Module/Cal.php:343 ../../Zotlabs/Module/Events.php:689 +#: ../../Zotlabs/Module/Events.php:698 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:846 +msgid "Previous" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:944 +msgid "View Full Size" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:949 ../../Zotlabs/Module/Cal.php:337 +#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Setup.php:264 +#: ../../Zotlabs/Module/Events.php:690 ../../Zotlabs/Module/Events.php:699 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847 +msgid "Next" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:989 +#: ../../Zotlabs/Module/Admin/Plugins.php:445 +#: ../../Zotlabs/Module/Tagrm.php:137 +#: ../../extend/addon/addon/superblock/superblock.php:114 +msgid "Remove" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1033 +msgid "Edit photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1035 +msgid "Rotate CW (right)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1036 +msgid "Rotate CCW (left)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1039 +msgid "Move photo to album" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1040 +msgid "Enter a new album name" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1041 +msgid "or select an existing one (doubleclick)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1044 +msgid "Caption" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1046 +msgid "Add a Tag" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1054 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1057 +msgid "Flag as adult in album view" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:268 +msgid "I like this (toggle)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1077 ../../Zotlabs/Lib/ThreadItem.php:269 +msgid "I don't like this (toggle)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1078 ../../Zotlabs/Module/Blocks.php:161 +#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Webpages.php:245 +#: ../../extend/addon/addon/cdav/include/widgets.php:123 +#: ../../include/conversation.php:1378 +msgid "Share" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1079 ../../Zotlabs/Lib/ThreadItem.php:411 +#: ../../include/conversation.php:738 +msgid "Please wait" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1213 +#: ../../Zotlabs/Lib/ThreadItem.php:728 +msgid "This is you" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Module/Photos.php:1215 +#: ../../Zotlabs/Lib/ThreadItem.php:730 ../../include/js_strings.php:6 +msgid "Comment" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Module/Events.php:478 +#: ../../Zotlabs/Module/Webpages.php:251 ../../Zotlabs/Lib/ThreadItem.php:740 +#: ../../include/page_widgets.php:43 ../../include/conversation.php:1347 +msgid "Preview" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:577 +msgctxt "title" +msgid "Likes" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:577 +msgctxt "title" +msgid "Dislikes" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 +msgctxt "title" +msgid "Agree" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 +msgctxt "title" +msgid "Disagree" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 +msgctxt "title" +msgid "Abstain" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 +msgctxt "title" +msgid "Attending" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 +msgctxt "title" +msgid "Not attending" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 +msgctxt "title" +msgid "Might attend" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1132 ../../Zotlabs/Module/Photos.php:1144 +#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Lib/ThreadItem.php:198 +#: ../../include/conversation.php:1928 +msgid "View all" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1136 ../../Zotlabs/Lib/ThreadItem.php:190 +#: ../../include/taxonomy.php:403 ../../include/channel.php:1190 +#: ../../include/conversation.php:1952 +msgctxt "noun" +msgid "Like" +msgid_plural "Likes" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Photos.php:1141 ../../Zotlabs/Lib/ThreadItem.php:195 +#: ../../include/conversation.php:1955 +msgctxt "noun" +msgid "Dislike" +msgid_plural "Dislikes" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Photos.php:1241 +msgid "Photo Tools" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1250 +msgid "In This Photo:" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1255 +msgid "Map" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:400 +msgctxt "noun" +msgid "Likes" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1264 ../../Zotlabs/Lib/ThreadItem.php:401 +msgctxt "noun" +msgid "Dislikes" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:406 +#: ../../include/acl_selectors.php:210 +msgid "Close" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1343 +msgid "View Album" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1354 ../../Zotlabs/Module/Photos.php:1367 +#: ../../Zotlabs/Module/Photos.php:1368 +msgid "Recent Photos" +msgstr "" + +#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editblock.php:79 +#: ../../Zotlabs/Module/Editblock.php:95 +#: ../../Zotlabs/Module/Editlayout.php:79 +#: ../../Zotlabs/Module/Editwebpage.php:80 +msgid "Item not found" +msgstr "" + +#: ../../Zotlabs/Module/Editpost.php:35 +msgid "Item is not editable" +msgstr "" + +#: ../../Zotlabs/Module/Editpost.php:108 ../../Zotlabs/Module/Rpost.php:138 +msgid "Edit post" +msgstr "" + +#: ../../Zotlabs/Module/Acl.php:313 +msgid "network" +msgstr "" + +#: ../../Zotlabs/Module/Acl.php:323 +msgid "RSS" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1827 +msgid "About" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:81 ../../Zotlabs/Module/Group.php:197 +msgid "Members" +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:93 +msgid "$Projectname Documentation" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:94 +msgid "Contents" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:53 +msgid "Bookmark added" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:75 +msgid "My Bookmarks" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:86 +msgid "My Connections Bookmarks" +msgstr "" + #: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109 msgid "Continue" msgstr "" @@ -843,93 +1260,112 @@ msgstr "" msgid "Restricted or Premium Channel" msgstr "" -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:306 -#: ../../Zotlabs/Lib/Apps.php:230 ../../include/acl_selectors.php:203 -#: ../../include/nav.php:170 ../../include/text.php:993 -#: ../../include/text.php:1005 ../../include/widgets.php:315 -msgid "Search" +#: ../../Zotlabs/Module/Admin.php:94 +msgid "# Accounts" msgstr "" -#: ../../Zotlabs/Module/Search.php:223 -#, php-format -msgid "Items tagged with: %s" +#: ../../Zotlabs/Module/Admin.php:95 +msgid "# blocked accounts" msgstr "" -#: ../../Zotlabs/Module/Search.php:225 -#, php-format -msgid "Search results for: %s" +#: ../../Zotlabs/Module/Admin.php:96 +msgid "# expired accounts" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:53 -msgid "Bookmark added" +#: ../../Zotlabs/Module/Admin.php:97 +msgid "# expiring accounts" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:75 -msgid "My Bookmarks" +#: ../../Zotlabs/Module/Admin.php:108 +msgid "# Channels" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:86 -msgid "My Connections Bookmarks" +#: ../../Zotlabs/Module/Admin.php:109 +msgid "# primary" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 -#: ../../Zotlabs/Module/Editlayout.php:79 -#: ../../Zotlabs/Module/Editwebpage.php:80 -#: ../../Zotlabs/Module/Editpost.php:24 -msgid "Item not found" +#: ../../Zotlabs/Module/Admin.php:110 +msgid "# clones" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 -#: ../../Zotlabs/Module/Blocks.php:155 -msgid "Block Name" +#: ../../Zotlabs/Module/Admin.php:116 +msgid "Message queues" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:111 -#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:258 -#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Module/Chat.php:207 -#: ../../include/conversation.php:1165 -msgid "Insert web link" +#: ../../Zotlabs/Module/Admin.php:133 +msgid "Your software should be updated" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1276 -msgid "Title (optional)" +#: ../../Zotlabs/Module/Admin.php:137 ../../Zotlabs/Module/Admin/Logs.php:82 +#: ../../Zotlabs/Module/Admin/Plugins.php:336 +#: ../../Zotlabs/Module/Admin/Plugins.php:427 +#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../Zotlabs/Module/Admin/Themes.php:120 +#: ../../Zotlabs/Module/Admin/Themes.php:154 +#: ../../Zotlabs/Module/Admin/Accounts.php:164 +#: ../../Zotlabs/Module/Admin/Channels.php:145 +#: ../../Zotlabs/Module/Admin/Site.php:258 +msgid "Administration" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:133 -msgid "Edit Block" +#: ../../Zotlabs/Module/Admin.php:138 +msgid "Summary" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." +#: ../../Zotlabs/Module/Admin.php:141 +msgid "Registered accounts" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Profile Visibility Editor" +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Pending registrations" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1282 -msgid "Profile" +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Registered channels" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:119 -msgid "Click on a contact to add or remove." +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Active plugins" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:128 -msgid "Visible To" +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Version" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:144 -#: ../../Zotlabs/Module/Connections.php:145 -msgid "All Connections" +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Repository version (master)" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (dev)" +msgstr "" + +#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 +#: ../../Zotlabs/Module/Blocks.php:155 +msgid "Block Name" +msgstr "" + +#: ../../Zotlabs/Module/Editblock.php:111 +#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:287 +#: ../../Zotlabs/Module/Mail.php:412 ../../Zotlabs/Module/Chat.php:207 +#: ../../include/conversation.php:1295 +msgid "Insert web link" +msgstr "" + +#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1406 +msgid "Title (optional)" +msgstr "" + +#: ../../Zotlabs/Module/Editblock.php:133 +msgid "Edit Block" msgstr "" #: ../../Zotlabs/Module/Page.php:40 ../../Zotlabs/Module/Block.php:31 msgid "Invalid item." msgstr "" -#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Chanview.php:96 -#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Cal.php:62 +#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Cal.php:62 +#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Chanview.php:96 #: ../../Zotlabs/Module/Wall_upload.php:31 msgid "Channel not found." msgstr "" @@ -954,52 +1390,64 @@ msgstr "" #: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin/Profs.php:74 #: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32 -#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:994 -#: ../../include/text.php:1006 ../../include/widgets.php:201 +#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:1000 +#: ../../include/text.php:1012 ../../include/widgets.php:201 msgid "Save" msgstr "" -#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 -msgid "This site is not a directory server" +#: ../../Zotlabs/Module/Ping.php:254 +msgid "sent you a private message" msgstr "" -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" +#: ../../Zotlabs/Module/Ping.php:302 +msgid "added your channel" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:312 +msgid "g A l F d" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:330 +msgid "[today]" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:339 +msgid "posted an event" msgstr "" #: ../../Zotlabs/Module/Connections.php:56 #: ../../Zotlabs/Module/Connections.php:161 -#: ../../Zotlabs/Module/Connections.php:242 +#: ../../Zotlabs/Module/Connections.php:250 msgid "Blocked" msgstr "" #: ../../Zotlabs/Module/Connections.php:61 #: ../../Zotlabs/Module/Connections.php:168 -#: ../../Zotlabs/Module/Connections.php:241 +#: ../../Zotlabs/Module/Connections.php:249 msgid "Ignored" msgstr "" #: ../../Zotlabs/Module/Connections.php:66 #: ../../Zotlabs/Module/Connections.php:182 -#: ../../Zotlabs/Module/Connections.php:240 +#: ../../Zotlabs/Module/Connections.php:248 msgid "Hidden" msgstr "" #: ../../Zotlabs/Module/Connections.php:71 #: ../../Zotlabs/Module/Connections.php:175 -#: ../../Zotlabs/Module/Connections.php:239 +#: ../../Zotlabs/Module/Connections.php:247 msgid "Archived" msgstr "" #: ../../Zotlabs/Module/Connections.php:76 #: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116 -#: ../../include/conversation.php:1594 +#: ../../include/conversation.php:1724 msgid "New" msgstr "" #: ../../Zotlabs/Module/Connections.php:92 #: ../../Zotlabs/Module/Connections.php:107 -#: ../../Zotlabs/Module/Connedit.php:630 ../../include/widgets.php:533 +#: ../../Zotlabs/Module/Connedit.php:673 ../../include/widgets.php:533 msgid "All" msgstr "" @@ -1011,6 +1459,11 @@ msgstr "" msgid "Show pending (new) connections" msgstr "" +#: ../../Zotlabs/Module/Connections.php:145 +#: ../../Zotlabs/Module/Profperm.php:144 +msgid "All Connections" +msgstr "" + #: ../../Zotlabs/Module/Connections.php:148 msgid "Show all connections" msgstr "" @@ -1031,77 +1484,88 @@ msgstr "" msgid "Only show hidden connections" msgstr "" -#: ../../Zotlabs/Module/Connections.php:238 +#: ../../Zotlabs/Module/Connections.php:246 msgid "Pending approval" msgstr "" -#: ../../Zotlabs/Module/Connections.php:254 +#: ../../Zotlabs/Module/Connections.php:262 #, php-format msgid "%1$s [%2$s]" msgstr "" -#: ../../Zotlabs/Module/Connections.php:255 +#: ../../Zotlabs/Module/Connections.php:263 msgid "Edit connection" msgstr "" -#: ../../Zotlabs/Module/Connections.php:256 +#: ../../Zotlabs/Module/Connections.php:264 msgid "Delete connection" msgstr "" -#: ../../Zotlabs/Module/Connections.php:265 +#: ../../Zotlabs/Module/Connections.php:273 msgid "Channel address" msgstr "" -#: ../../Zotlabs/Module/Connections.php:267 +#: ../../Zotlabs/Module/Connections.php:275 msgid "Network" msgstr "" -#: ../../Zotlabs/Module/Connections.php:270 +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Call" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:280 msgid "Status" msgstr "" -#: ../../Zotlabs/Module/Connections.php:272 +#: ../../Zotlabs/Module/Connections.php:282 msgid "Connected" msgstr "" -#: ../../Zotlabs/Module/Connections.php:274 +#: ../../Zotlabs/Module/Connections.php:284 msgid "Approve connection" msgstr "" -#: ../../Zotlabs/Module/Connections.php:275 +#: ../../Zotlabs/Module/Connections.php:285 #: ../../Zotlabs/Module/Admin/Accounts.php:171 msgid "Approve" msgstr "" -#: ../../Zotlabs/Module/Connections.php:276 +#: ../../Zotlabs/Module/Connections.php:286 msgid "Ignore connection" msgstr "" -#: ../../Zotlabs/Module/Connections.php:277 -#: ../../Zotlabs/Module/Connedit.php:584 +#: ../../Zotlabs/Module/Connections.php:287 +#: ../../Zotlabs/Module/Connedit.php:617 msgid "Ignore" msgstr "" -#: ../../Zotlabs/Module/Connections.php:278 +#: ../../Zotlabs/Module/Connections.php:288 msgid "Recent activity" msgstr "" -#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:209 -#: ../../include/nav.php:191 ../../include/text.php:923 +#: ../../Zotlabs/Module/Connections.php:312 ../../Zotlabs/Lib/Apps.php:211 +#: ../../include/nav.php:189 ../../include/text.php:929 msgid "Connections" msgstr "" -#: ../../Zotlabs/Module/Connections.php:307 +#: ../../Zotlabs/Module/Connections.php:316 ../../Zotlabs/Module/Search.php:44 +#: ../../Zotlabs/Lib/Apps.php:232 ../../include/acl_selectors.php:203 +#: ../../include/nav.php:168 ../../include/text.php:999 +#: ../../include/text.php:1011 ../../include/widgets.php:315 +msgid "Search" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:317 msgid "Search your connections" msgstr "" -#: ../../Zotlabs/Module/Connections.php:308 +#: ../../Zotlabs/Module/Connections.php:318 msgid "Connections search" msgstr "" -#: ../../Zotlabs/Module/Connections.php:309 -#: ../../Zotlabs/Module/Directory.php:391 -#: ../../Zotlabs/Module/Directory.php:396 ../../include/contact_widgets.php:23 +#: ../../Zotlabs/Module/Connections.php:319 +#: ../../Zotlabs/Module/Directory.php:392 +#: ../../Zotlabs/Module/Directory.php:397 ../../include/contact_widgets.php:23 msgid "Find" msgstr "" @@ -1135,30 +1599,30 @@ msgstr "" msgid "Unable to process image." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4325 +#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4253 msgid "female" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4326 +#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4254 #, php-format msgid "%1$s updated her %2$s" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4327 +#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4255 msgid "male" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4328 +#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4256 #, php-format msgid "%1$s updated his %2$s" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4330 +#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4258 #, php-format msgid "%1$s updated their %2$s" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1731 +#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1677 msgid "cover photo" msgstr "" @@ -1239,20 +1703,8 @@ msgstr "" msgid "Log settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Plugins.php:336 -#: ../../Zotlabs/Module/Admin/Plugins.php:427 -#: ../../Zotlabs/Module/Admin/Security.php:86 -#: ../../Zotlabs/Module/Admin/Themes.php:120 -#: ../../Zotlabs/Module/Admin/Themes.php:154 -#: ../../Zotlabs/Module/Admin/Accounts.php:164 -#: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:256 ../../Zotlabs/Module/Admin.php:137 -msgid "Administration" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1586 -#: ../../include/widgets.php:1596 +#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1588 +#: ../../include/widgets.php:1598 msgid "Logs" msgstr "" @@ -1299,7 +1751,7 @@ msgid "Enable" msgstr "" #: ../../Zotlabs/Module/Admin/Plugins.php:337 -#: ../../Zotlabs/Module/Admin/Plugins.php:428 ../../include/widgets.php:1564 +#: ../../Zotlabs/Module/Admin/Plugins.php:428 ../../include/widgets.php:1566 msgid "Plugins" msgstr "" @@ -1309,8 +1761,8 @@ msgid "Toggle" msgstr "" #: ../../Zotlabs/Module/Admin/Plugins.php:339 -#: ../../Zotlabs/Module/Admin/Themes.php:123 ../../Zotlabs/Lib/Apps.php:216 -#: ../../include/nav.php:213 ../../include/widgets.php:680 +#: ../../Zotlabs/Module/Admin/Themes.php:123 ../../Zotlabs/Lib/Apps.php:218 +#: ../../include/nav.php:211 ../../include/widgets.php:680 msgid "Settings" msgstr "" @@ -1373,21 +1825,22 @@ msgstr "" msgid "Install new repo" msgstr "" -#: ../../Zotlabs/Module/Admin/Plugins.php:413 ../../Zotlabs/Lib/Apps.php:334 +#: ../../Zotlabs/Module/Admin/Plugins.php:413 ../../Zotlabs/Lib/Apps.php:339 msgid "Install" msgstr "" #: ../../Zotlabs/Module/Admin/Plugins.php:414 -#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 -#: ../../Zotlabs/Module/Wiki.php:200 ../../Zotlabs/Module/Wiki.php:240 +#: ../../Zotlabs/Module/Connedit.php:862 ../../Zotlabs/Module/Fbrowser.php:66 +#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Wiki.php:238 +#: ../../Zotlabs/Module/Wiki.php:261 #: ../../Zotlabs/Module/Settings/Oauth.php:88 #: ../../Zotlabs/Module/Settings/Oauth.php:114 #: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 #: ../../extend/addon/addon/friendica/dfrn_request.php:879 #: ../../extend/addon/addon/js_upload/js_upload.php:46 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:862 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150 -#: ../../include/conversation.php:1264 ../../include/conversation.php:1313 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:866 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154 +#: ../../include/conversation.php:1394 ../../include/conversation.php:1443 msgid "Cancel" msgstr "" @@ -1404,9 +1857,10 @@ msgid "Install a New Plugin Repository" msgstr "" #: ../../Zotlabs/Module/Admin/Plugins.php:443 +#: ../../Zotlabs/Module/Connedit.php:860 #: ../../Zotlabs/Module/Settings/Oauth.php:42 -#: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:334 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1148 +#: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:339 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152 msgid "Update" msgstr "" @@ -1414,11 +1868,6 @@ msgstr "" msgid "Switch branch" msgstr "" -#: ../../Zotlabs/Module/Admin/Plugins.php:445 -#: ../../Zotlabs/Module/Photos.php:989 ../../Zotlabs/Module/Tagrm.php:137 -msgid "Remove" -msgstr "" - #: ../../Zotlabs/Module/Admin/Profs.php:69 msgid "New Profile Field" msgstr "" @@ -1466,7 +1915,7 @@ msgstr "" msgid "Edit Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1567 +#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1569 msgid "Profile Fields" msgstr "" @@ -1546,7 +1995,7 @@ msgid "" "embedded content from that site is explicitly blocked." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1562 +#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1564 msgid "Security" msgstr "" @@ -1646,7 +2095,7 @@ msgid "Screenshot" msgstr "" #: ../../Zotlabs/Module/Admin/Themes.php:121 -#: ../../Zotlabs/Module/Admin/Themes.php:155 ../../include/widgets.php:1565 +#: ../../Zotlabs/Module/Admin/Themes.php:155 ../../include/widgets.php:1567 msgid "Themes" msgstr "" @@ -1729,7 +2178,7 @@ msgid "Account '%s' unblocked" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:165 -#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1560 +#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1562 msgid "Accounts" msgstr "" @@ -1748,9 +2197,10 @@ msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:169 #: ../../Zotlabs/Module/Admin/Accounts.php:181 +#: ../../Zotlabs/Module/Connedit.php:848 #: ../../extend/addon/addon/redred/redred.php:107 #: ../../extend/addon/addon/rtof/rtof.php:93 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140 #: ../../extend/addon/addon/openid/MysqlProvider.php:56 #: ../../extend/addon/addon/openid/MysqlProvider.php:57 #: ../../include/network.php:2237 @@ -1766,12 +2216,12 @@ msgid "Deny" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Connedit.php:576 +#: ../../Zotlabs/Module/Connedit.php:609 msgid "Block" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:175 -#: ../../Zotlabs/Module/Connedit.php:576 +#: ../../Zotlabs/Module/Connedit.php:609 msgid "Unblock" msgstr "" @@ -1861,7 +2311,7 @@ msgstr "" msgid "Channel '%s' code disallowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1561 +#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1563 msgid "Channels" msgstr "" @@ -1882,7 +2332,7 @@ msgid "Disallow Code" msgstr "" #: ../../Zotlabs/Module/Admin/Channels.php:154 -#: ../../include/conversation.php:1672 +#: ../../include/conversation.php:1815 msgid "Channel" msgstr "" @@ -1891,8 +2341,9 @@ msgid "UID" msgstr "" #: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:464 ../../Zotlabs/Module/Locs.php:118 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139 +#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Connedit.php:851 +#: ../../Zotlabs/Module/Profiles.php:474 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143 msgid "Address" msgstr "" @@ -1948,496 +2399,384 @@ msgstr "" msgid "Attempt to execute this update step automatically" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:131 +#: ../../Zotlabs/Module/Admin/Site.php:133 msgid "Site settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:157 ../../include/text.php:2959 +#: ../../Zotlabs/Module/Admin/Site.php:159 ../../include/text.php:2931 msgid "Default" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:167 +#: ../../Zotlabs/Module/Admin/Site.php:169 #: ../../Zotlabs/Module/Settings/Display.php:143 msgid "mobile" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:169 +#: ../../Zotlabs/Module/Admin/Site.php:171 msgid "experimental" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:171 +#: ../../Zotlabs/Module/Admin/Site.php:173 msgid "unsupported" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:216 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Api.php:97 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 -#: ../../Zotlabs/Module/Connedit.php:408 ../../Zotlabs/Module/Connedit.php:687 -#: ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Settings/Channel.php:289 -#: ../../Zotlabs/Module/Settings/Display.php:103 -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#: ../../extend/addon/addon/ijpost/ijpost.php:73 -#: ../../extend/addon/addon/ijpost/ijpost.php:85 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -#: ../../extend/addon/addon/libertree/libertree.php:69 -#: ../../extend/addon/addon/libertree/libertree.php:81 -#: ../../extend/addon/addon/ljpost/ljpost.php:70 -#: ../../extend/addon/addon/ljpost/ljpost.php:82 -#: ../../extend/addon/addon/nofed/nofed.php:72 -#: ../../extend/addon/addon/nofed/nofed.php:76 -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -#: ../../extend/addon/addon/planets/planets.php:153 -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -#: ../../extend/addon/addon/redred/redred.php:95 -#: ../../extend/addon/addon/redred/redred.php:99 -#: ../../extend/addon/addon/rtof/rtof.php:81 -#: ../../extend/addon/addon/rtof/rtof.php:85 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -#: ../../extend/addon/addon/statusnet/statusnet.php:389 -#: ../../extend/addon/addon/statusnet/statusnet.php:411 -#: ../../extend/addon/addon/statusnet/statusnet.php:415 -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:242 -#: ../../extend/addon/addon/twitter/twitter.php:246 -#: ../../extend/addon/addon/twitter/twitter.php:255 -#: ../../extend/addon/addon/visage/visage.php:166 -#: ../../extend/addon/addon/wppost/wppost.php:82 -#: ../../extend/addon/addon/wppost/wppost.php:105 -#: ../../extend/addon/addon/wppost/wppost.php:109 -#: ../../extend/addon/addon/xmpp/xmpp.php:53 -#: ../../extend/addon/addon/cdav/cdav.php:227 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -#: ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1719 -msgid "No" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Site.php:217 +#: ../../Zotlabs/Module/Admin/Site.php:219 msgid "Yes - with approval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:218 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Api.php:96 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 -#: ../../Zotlabs/Module/Connedit.php:408 ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Settings/Channel.php:289 -#: ../../Zotlabs/Module/Settings/Display.php:103 -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#: ../../extend/addon/addon/ijpost/ijpost.php:73 -#: ../../extend/addon/addon/ijpost/ijpost.php:85 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -#: ../../extend/addon/addon/libertree/libertree.php:69 -#: ../../extend/addon/addon/libertree/libertree.php:81 -#: ../../extend/addon/addon/ljpost/ljpost.php:70 -#: ../../extend/addon/addon/ljpost/ljpost.php:82 -#: ../../extend/addon/addon/nofed/nofed.php:72 -#: ../../extend/addon/addon/nofed/nofed.php:76 -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -#: ../../extend/addon/addon/planets/planets.php:153 -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -#: ../../extend/addon/addon/redred/redred.php:95 -#: ../../extend/addon/addon/redred/redred.php:99 -#: ../../extend/addon/addon/rtof/rtof.php:81 -#: ../../extend/addon/addon/rtof/rtof.php:85 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -#: ../../extend/addon/addon/statusnet/statusnet.php:389 -#: ../../extend/addon/addon/statusnet/statusnet.php:411 -#: ../../extend/addon/addon/statusnet/statusnet.php:415 -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:242 -#: ../../extend/addon/addon/twitter/twitter.php:246 -#: ../../extend/addon/addon/twitter/twitter.php:255 -#: ../../extend/addon/addon/visage/visage.php:166 -#: ../../extend/addon/addon/wppost/wppost.php:82 -#: ../../extend/addon/addon/wppost/wppost.php:105 -#: ../../extend/addon/addon/wppost/wppost.php:109 -#: ../../extend/addon/addon/xmpp/xmpp.php:53 -#: ../../extend/addon/addon/cdav/cdav.php:227 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -#: ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1719 -msgid "Yes" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Site.php:223 +#: ../../Zotlabs/Module/Admin/Site.php:225 msgid "My site is not a public server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:224 +#: ../../Zotlabs/Module/Admin/Site.php:226 msgid "My site has paid access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:225 +#: ../../Zotlabs/Module/Admin/Site.php:227 msgid "My site has free access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:226 +#: ../../Zotlabs/Module/Admin/Site.php:228 msgid "My site offers free accounts with optional paid upgrades" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:237 ../../Zotlabs/Module/Setup.php:334 +#: ../../Zotlabs/Module/Admin/Site.php:239 ../../Zotlabs/Module/Setup.php:328 msgid "Basic/Minimal Social Networking" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:238 ../../Zotlabs/Module/Setup.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:240 ../../Zotlabs/Module/Setup.php:329 msgid "Standard Configuration (default)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:239 ../../Zotlabs/Module/Setup.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:241 ../../Zotlabs/Module/Setup.php:330 msgid "Professional" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:243 ../../Zotlabs/Lib/Techlevels.php:10 +#: ../../Zotlabs/Module/Admin/Site.php:245 ../../Zotlabs/Lib/Techlevels.php:10 msgid "Beginner/Basic" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:244 ../../Zotlabs/Lib/Techlevels.php:11 +#: ../../Zotlabs/Module/Admin/Site.php:246 ../../Zotlabs/Lib/Techlevels.php:11 msgid "Novice - not skilled but willing to learn" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:245 ../../Zotlabs/Lib/Techlevels.php:12 +#: ../../Zotlabs/Module/Admin/Site.php:247 ../../Zotlabs/Lib/Techlevels.php:12 msgid "Intermediate - somewhat comfortable" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:246 ../../Zotlabs/Lib/Techlevels.php:13 +#: ../../Zotlabs/Module/Admin/Site.php:248 ../../Zotlabs/Lib/Techlevels.php:13 msgid "Advanced - very comfortable" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:247 ../../Zotlabs/Lib/Techlevels.php:14 +#: ../../Zotlabs/Module/Admin/Site.php:249 ../../Zotlabs/Lib/Techlevels.php:14 msgid "Expert - I can write computer code" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:248 ../../Zotlabs/Lib/Techlevels.php:15 +#: ../../Zotlabs/Module/Admin/Site.php:250 ../../Zotlabs/Lib/Techlevels.php:15 msgid "Wizard - I probably know more than you do" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:257 ../../include/widgets.php:1559 +#: ../../Zotlabs/Module/Admin/Site.php:259 ../../include/widgets.php:1561 msgid "Site" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:260 +#: ../../Zotlabs/Module/Admin/Site.php:262 msgid "File upload" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:261 +#: ../../Zotlabs/Module/Admin/Site.php:263 msgid "Policies" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:262 +#: ../../Zotlabs/Module/Admin/Site.php:264 #: ../../include/contact_widgets.php:16 msgid "Advanced" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:266 +#: ../../Zotlabs/Module/Admin/Site.php:268 #: ../../extend/addon/addon/statusnet/statusnet.php:890 msgid "Site name" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:268 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Admin/Site.php:270 ../../Zotlabs/Module/Setup.php:351 msgid "Server Configuration/Role" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:270 +#: ../../Zotlabs/Module/Admin/Site.php:272 msgid "Site default technical skill level" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:270 +#: ../../Zotlabs/Module/Admin/Site.php:272 msgid "Used to provide a member experience matched to technical comfort level" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:272 +#: ../../Zotlabs/Module/Admin/Site.php:274 msgid "Lock the technical skill level setting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:272 +#: ../../Zotlabs/Module/Admin/Site.php:274 msgid "Members can set their own technical comfort level by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:274 +#: ../../Zotlabs/Module/Admin/Site.php:276 msgid "Banner/Logo" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:275 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "Administrator Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:275 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:276 +#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Siteinfo.php:23 +msgid "Site Information" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Site.php:278 +msgid "" +"Publicly visible description of this site. Displayed on siteinfo page. " +"BBCode can be used here" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Site.php:279 msgid "System language" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:280 msgid "System theme" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:280 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "Mobile system theme" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "Theme for mobile devices" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "Allow Feeds as Connections" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "(Heavy system resource usage)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:281 +#: ../../Zotlabs/Module/Admin/Site.php:284 msgid "Maximum image size" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:281 +#: ../../Zotlabs/Module/Admin/Site.php:284 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:282 +#: ../../Zotlabs/Module/Admin/Site.php:285 msgid "Does this site allow new member registration?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:283 +#: ../../Zotlabs/Module/Admin/Site.php:286 msgid "Invitation only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:283 +#: ../../Zotlabs/Module/Admin/Site.php:286 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:284 +#: ../../Zotlabs/Module/Admin/Site.php:287 msgid "Which best describes the types of account offered by this hub?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Register text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Will be displayed prominently on the registration page." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "Site homepage to show visitors (default: login box)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "" "example: 'public' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "Preserve site homepage URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "Accounts abandoned after x days" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "Allowed friend domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "Verify Email Addresses" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "Force publish" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "Import Public Streams" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "Login on Homepage" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Enable context help" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "" "Display contextual help for the current page when the help button is pressed." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Directory Server URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Default directory server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "Proxy user" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:302 msgid "Proxy URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Network timeout" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "Delivery interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:304 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 "" -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "Deliveries per process" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust " "if necessary to tune system performance. Recommend: 1-5." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Poll interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Maximum Load Average" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Expiration period in days for imported (grid/network) content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "0 for no expiration of imported content" msgstr "" -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." +#: ../../Zotlabs/Module/Search.php:223 +#, php-format +msgid "Items tagged with: %s" msgstr "" -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" +#: ../../Zotlabs/Module/Search.php:225 +#, php-format +msgid "Search results for: %s" msgstr "" #: ../../Zotlabs/Module/Editlayout.php:127 @@ -2462,58 +2801,145 @@ msgstr "" msgid "Edit Webpage" msgstr "" -#: ../../Zotlabs/Module/Follow.php:31 -msgid "Channel added." +#: ../../Zotlabs/Module/Like.php:19 +msgid "Like/Dislike" msgstr "" -#: ../../Zotlabs/Module/Manage.php:136 -#: ../../Zotlabs/Module/New_channel.php:121 -#, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." +#: ../../Zotlabs/Module/Like.php:24 +msgid "This action is restricted to members." msgstr "" -#: ../../Zotlabs/Module/Manage.php:143 -msgid "Create a new channel" +#: ../../Zotlabs/Module/Like.php:25 +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/Manage.php:143 ../../Zotlabs/Module/Profiles.php:772 -#: ../../Zotlabs/Module/Chat.php:255 -msgid "Create New" +#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 +#: ../../Zotlabs/Module/Like.php:169 +msgid "Invalid request." msgstr "" -#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:214 -#: ../../include/nav.php:211 -msgid "Channel Manager" +#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 +msgid "channel" msgstr "" -#: ../../Zotlabs/Module/Manage.php:165 -msgid "Current Channel" +#: ../../Zotlabs/Module/Like.php:146 +msgid "thing" msgstr "" -#: ../../Zotlabs/Module/Manage.php:167 -msgid "Switch to one of your channels by selecting it." +#: ../../Zotlabs/Module/Like.php:192 +msgid "Channel unavailable." msgstr "" -#: ../../Zotlabs/Module/Manage.php:168 -msgid "Default Channel" +#: ../../Zotlabs/Module/Like.php:240 +msgid "Previous action reversed." msgstr "" -#: ../../Zotlabs/Module/Manage.php:169 -msgid "Make Default" +#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 +#: ../../Zotlabs/Module/Tagger.php:47 +#: ../../extend/addon/addon/diaspora/inbound.php:1794 +#: ../../extend/addon/addon/redphotos/redphotohelper.php:74 +#: ../../include/text.php:1953 ../../include/conversation.php:120 +msgid "photo" msgstr "" -#: ../../Zotlabs/Module/Manage.php:172 +#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 +#: ../../extend/addon/addon/diaspora/inbound.php:1794 +#: ../../include/text.php:1959 ../../include/conversation.php:148 +msgid "status" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Events.php:260 +#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:1000 +#: ../../include/text.php:1956 ../../include/conversation.php:123 +msgid "event" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:419 +#: ../../extend/addon/addon/diaspora/inbound.php:1823 +#: ../../include/conversation.php:164 #, php-format -msgid "%d new messages" +msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Manage.php:173 +#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 #, php-format -msgid "%d new introductions" +msgid "%1$s doesn't like %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Delegated Channel" +#: ../../Zotlabs/Module/Like.php:423 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:425 +#, php-format +msgid "%1$s doesn't agree with %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:427 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:429 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:431 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:433 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:538 +msgid "Action completed." +msgstr "" + +#: ../../Zotlabs/Module/Like.php:539 +msgid "Thank you." +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/Network.php:96 +msgid "No such group" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:136 +msgid "No such channel" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:141 +msgid "forum" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:153 +msgid "Search Results For:" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:221 +msgid "Privacy group is empty" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:230 +msgid "Privacy group: " +msgstr "" + +#: ../../Zotlabs/Module/Network.php:256 +msgid "Invalid connection." msgstr "" #: ../../Zotlabs/Module/Menu.php:49 @@ -2552,7 +2978,7 @@ msgstr "" msgid "Submit and proceed" msgstr "" -#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2312 +#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2284 msgid "Menus" msgstr "" @@ -2561,13 +2987,13 @@ msgid "Drop" msgstr "" #: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Blocks.php:157 -#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Webpages.php:251 +#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Webpages.php:255 #: ../../include/page_widgets.php:47 msgid "Created" msgstr "" #: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Blocks.php:158 -#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:252 +#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:256 #: ../../include/page_widgets.php:48 msgid "Edited" msgstr "" @@ -2629,100 +3055,109 @@ msgstr "" msgid "Not found." msgstr "" -#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53 -msgid "App installed." +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." msgstr "" -#: ../../Zotlabs/Module/Appman.php:46 -msgid "Malformed app." +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." msgstr "" -#: ../../Zotlabs/Module/Appman.php:104 -msgid "Embed code" +#: ../../Zotlabs/Module/Locs.php:66 +msgid "" +"Please select another location to become primary before removing the primary " +"location." msgstr "" -#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107 -msgid "Edit App" +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" msgstr "" -#: ../../Zotlabs/Module/Appman.php:110 -msgid "Create App" +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." msgstr "" -#: ../../Zotlabs/Module/Appman.php:115 -msgid "Name of app" +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" msgstr "" -#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116 -#: ../../Zotlabs/Module/Profiles.php:703 ../../Zotlabs/Module/Profiles.php:707 -#: ../../Zotlabs/Module/Events.php:453 ../../Zotlabs/Module/Events.php:458 -#: ../../include/datetime.php:259 -msgid "Required" +#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Pubsites.php:51 +#: ../../Zotlabs/Module/Profiles.php:481 ../../Zotlabs/Module/Profiles.php:704 +#: ../../Zotlabs/Module/Events.php:475 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:839 +#: ../../include/js_strings.php:25 +msgid "Location" msgstr "" -#: ../../Zotlabs/Module/Appman.php:116 -msgid "Location (URL) of app" +#: ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" msgstr "" -#: ../../Zotlabs/Module/Appman.php:117 ../../Zotlabs/Module/Events.php:466 -#: ../../Zotlabs/Module/Rbmark.php:101 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:834 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:133 -msgid "Description" +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" msgstr "" -#: ../../Zotlabs/Module/Appman.php:118 -msgid "Photo icon URL" +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." msgstr "" -#: ../../Zotlabs/Module/Appman.php:118 -msgid "80 x 80 pixels - optional" +#: ../../Zotlabs/Module/Locs.php:124 +msgid "" +"When possible, drop a location by logging into that website/hub and removing " +"your channel." msgstr "" -#: ../../Zotlabs/Module/Appman.php:119 -msgid "Categories (optional, comma separated list)" +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." msgstr "" -#: ../../Zotlabs/Module/Appman.php:120 -msgid "Version ID" +#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1385 +msgid "Public Hubs" msgstr "" -#: ../../Zotlabs/Module/Appman.php:121 -msgid "Price of app" +#: ../../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/Appman.php:122 -msgid "Location (URL) to purchase app" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" msgstr "" -#: ../../Zotlabs/Module/Rpost.php:138 ../../Zotlabs/Module/Editpost.php:107 -msgid "Edit post" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" msgstr "" -#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 -msgid "Authorize application connection" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" msgstr "" -#: ../../Zotlabs/Module/Api.php:73 -msgid "Return to your app and insert this Security Code:" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" msgstr "" -#: ../../Zotlabs/Module/Api.php:83 -msgid "Please login to continue." +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" msgstr "" -#: ../../Zotlabs/Module/Api.php:95 -msgid "" -"Do you want to authorize this application to access your posts and contacts, " -"and/or create new posts for you?" +#: ../../Zotlabs/Module/Pubsites.php:35 ../../Zotlabs/Module/Ratings.php:97 +#: ../../include/conversation.php:941 ../../include/conversation.php:1099 +msgid "Ratings" msgstr "" -#: ../../Zotlabs/Module/Help.php:23 -msgid "Documentation Search" +#: ../../Zotlabs/Module/Pubsites.php:48 +msgid "Rate" msgstr "" -#: ../../Zotlabs/Module/Help.php:51 -msgid "$Projectname Documentation" +#: ../../Zotlabs/Module/Pubsites.php:59 ../../Zotlabs/Module/Blocks.php:166 +#: ../../Zotlabs/Module/Layouts.php:197 ../../Zotlabs/Module/Events.php:694 +#: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Wiki.php:146 +#: ../../include/page_widgets.php:42 +msgid "View" msgstr "" #: ../../Zotlabs/Module/Ffsapi.php:12 @@ -2733,517 +3168,518 @@ msgstr "" msgid "Activate the Firefox $Projectname provider" msgstr "" -#: ../../Zotlabs/Module/Apps.php:46 ../../include/nav.php:168 -#: ../../include/widgets.php:102 -msgid "Apps" -msgstr "" - -#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82 -#: ../../Zotlabs/Module/Siteinfo.php:48 -msgid "$Projectname" -msgstr "" - -#: ../../Zotlabs/Module/Home.php:92 -#, php-format -msgid "Welcome to %s" +#: ../../Zotlabs/Module/Connedit.php:82 +msgid "Could not access contact record." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:87 -msgid "Permission Denied." +#: ../../Zotlabs/Module/Connedit.php:112 +msgid "Could not locate selected profile." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." +#: ../../Zotlabs/Module/Connedit.php:264 +msgid "Connection updated." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:146 -msgid "Edit file permissions" +#: ../../Zotlabs/Module/Connedit.php:266 +msgid "Failed to update connection record." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:152 -#: ../../Zotlabs/Module/Photos.php:658 ../../Zotlabs/Module/Photos.php:1047 -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:363 -#: ../../Zotlabs/Module/Chat.php:234 ../../include/acl_selectors.php:208 -msgid "Permissions" +#: ../../Zotlabs/Module/Connedit.php:316 +msgid "is now connected to" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:159 -msgid "Set/edit permissions" +#: ../../Zotlabs/Module/Connedit.php:449 +msgid "Could not access address book record." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:160 -msgid "Include all files and sub folders" +#: ../../Zotlabs/Module/Connedit.php:469 +msgid "Refresh failed - channel is currently unavailable." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:161 -msgid "Return to file list" +#: ../../Zotlabs/Module/Connedit.php:484 ../../Zotlabs/Module/Connedit.php:493 +#: ../../Zotlabs/Module/Connedit.php:502 ../../Zotlabs/Module/Connedit.php:511 +#: ../../Zotlabs/Module/Connedit.php:524 +msgid "Unable to set address book parameters." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:163 -msgid "Copy/paste this code to attach file to a post" +#: ../../Zotlabs/Module/Connedit.php:548 +msgid "Connection has been removed." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:164 -msgid "Copy/paste this URL to link file from a web page" +#: ../../Zotlabs/Module/Connedit.php:588 ../../Zotlabs/Lib/Apps.php:223 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 +#: ../../include/nav.php:89 ../../include/conversation.php:936 +#: ../../include/conversation.php:1049 +msgid "View Profile" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:166 -msgid "Share this file" +#: ../../Zotlabs/Module/Connedit.php:591 +#, php-format +msgid "View %s's profile" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:167 -msgid "Show URL to this file" +#: ../../Zotlabs/Module/Connedit.php:595 +msgid "Refresh Permissions" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:168 -msgid "Notify your contacts about this file" +#: ../../Zotlabs/Module/Connedit.php:598 +msgid "Fetch updated permissions" msgstr "" -#: ../../Zotlabs/Module/Item.php:182 -msgid "Unable to locate original post." +#: ../../Zotlabs/Module/Connedit.php:602 +msgid "Recent Activity" msgstr "" -#: ../../Zotlabs/Module/Item.php:435 -msgid "Empty post discarded." +#: ../../Zotlabs/Module/Connedit.php:605 +msgid "View recent posts and comments" msgstr "" -#: ../../Zotlabs/Module/Item.php:475 -msgid "Executable content type not permitted to this channel." +#: ../../Zotlabs/Module/Connedit.php:612 +msgid "Block (or Unblock) all communications with this connection" msgstr "" -#: ../../Zotlabs/Module/Item.php:855 -msgid "Duplicate post suppressed." +#: ../../Zotlabs/Module/Connedit.php:613 +msgid "This connection is blocked!" msgstr "" -#: ../../Zotlabs/Module/Item.php:992 -msgid "System error. Post not saved." +#: ../../Zotlabs/Module/Connedit.php:617 +msgid "Unignore" msgstr "" -#: ../../Zotlabs/Module/Item.php:1113 -msgid "Unable to obtain post information from database." +#: ../../Zotlabs/Module/Connedit.php:620 +msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "" -#: ../../Zotlabs/Module/Item.php:1120 -#, php-format -msgid "You have reached your limit of %1$.0f top level posts." +#: ../../Zotlabs/Module/Connedit.php:621 +msgid "This connection is ignored!" msgstr "" -#: ../../Zotlabs/Module/Item.php:1127 -#, php-format -msgid "You have reached your limit of %1$.0f webpages." +#: ../../Zotlabs/Module/Connedit.php:625 +msgid "Unarchive" msgstr "" -#: ../../Zotlabs/Module/Chanview.php:134 -msgid "toggle full screen mode" +#: ../../Zotlabs/Module/Connedit.php:625 +msgid "Archive" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:183 -#: ../../Zotlabs/Module/Profiles.php:240 ../../Zotlabs/Module/Profiles.php:619 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62 -msgid "Profile not found." +#: ../../Zotlabs/Module/Connedit.php:628 +msgid "" +"Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." +#: ../../Zotlabs/Module/Connedit.php:629 +msgid "This connection is archived!" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104 -msgid "Profile-" +#: ../../Zotlabs/Module/Connedit.php:633 +msgid "Unhide" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 -msgid "New profile created." +#: ../../Zotlabs/Module/Connedit.php:633 +msgid "Hide" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:110 -msgid "Profile unavailable to clone." +#: ../../Zotlabs/Module/Connedit.php:636 +msgid "Hide or Unhide this connection from your other connections" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:145 -msgid "Profile unavailable to export." +#: ../../Zotlabs/Module/Connedit.php:637 +msgid "This connection is hidden!" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:250 -msgid "Profile Name is required." +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Delete this connection" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:421 -msgid "Marital Status" +#: ../../Zotlabs/Module/Connedit.php:669 ../../include/widgets.php:529 +msgid "Me" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:425 -msgid "Romantic Partner" +#: ../../Zotlabs/Module/Connedit.php:670 ../../include/widgets.php:530 +msgid "Family" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:429 ../../Zotlabs/Module/Profiles.php:730 -msgid "Likes" +#: ../../Zotlabs/Module/Connedit.php:671 +#: ../../Zotlabs/Module/Settings/Channel.php:61 +#: ../../Zotlabs/Module/Settings/Channel.php:65 +#: ../../Zotlabs/Module/Settings/Channel.php:66 +#: ../../Zotlabs/Module/Settings/Channel.php:69 +#: ../../Zotlabs/Module/Settings/Channel.php:80 +#: ../../include/selectors.php:123 ../../include/channel.php:402 +#: ../../include/channel.php:403 ../../include/channel.php:410 +#: ../../include/widgets.php:531 +msgid "Friends" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:731 -msgid "Dislikes" +#: ../../Zotlabs/Module/Connedit.php:672 ../../include/widgets.php:532 +msgid "Acquaintances" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:738 -msgid "Work/Employment" +#: ../../Zotlabs/Module/Connedit.php:730 +msgid "Approve this connection" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:440 -msgid "Religion" +#: ../../Zotlabs/Module/Connedit.php:730 +msgid "Accept connection to allow communication" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:444 -msgid "Political Views" +#: ../../Zotlabs/Module/Connedit.php:735 +msgid "Set Affinity" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:448 -#: ../../extend/addon/addon/openid/MysqlProvider.php:74 -msgid "Gender" +#: ../../Zotlabs/Module/Connedit.php:738 +msgid "Set Profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:452 -msgid "Sexual Preference" +#: ../../Zotlabs/Module/Connedit.php:741 +msgid "Set Affinity & Profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:456 -msgid "Homepage" +#: ../../Zotlabs/Module/Connedit.php:790 +msgid "none" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:460 -msgid "Interests" +#: ../../Zotlabs/Module/Connedit.php:793 ../../include/widgets.php:656 +msgid "Connection Default Permissions" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:692 -#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Events.php:468 -#: ../../Zotlabs/Module/Pubsites.php:51 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:835 -#: ../../include/js_strings.php:25 -msgid "Location" +#: ../../Zotlabs/Module/Connedit.php:793 ../../include/items.php:3909 +#, php-format +msgid "Connection: %s" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:554 -msgid "Profile updated." +#: ../../Zotlabs/Module/Connedit.php:794 +msgid "Apply these permissions automatically" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:638 -msgid "Hide your connections list from viewers of this profile" +#: ../../Zotlabs/Module/Connedit.php:794 +msgid "Connection requests will be approved without your interaction" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:680 -msgid "Edit Profile Details" +#: ../../Zotlabs/Module/Connedit.php:798 +msgid "This connection's primary address is" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:682 -msgid "View this profile" +#: ../../Zotlabs/Module/Connedit.php:799 +msgid "Available locations:" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:683 ../../Zotlabs/Module/Profiles.php:765 -#: ../../include/channel.php:983 -msgid "Edit visibility" +#: ../../Zotlabs/Module/Connedit.php:803 +msgid "" +"The permissions indicated on this page will be applied to all new " +"connections." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:684 -msgid "Profile Tools" +#: ../../Zotlabs/Module/Connedit.php:804 +msgid "Connection Tools" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:685 -msgid "Change cover photo" +#: ../../Zotlabs/Module/Connedit.php:806 +msgid "Slide to adjust your degree of friendship" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:686 ../../include/channel.php:954 -msgid "Change profile photo" +#: ../../Zotlabs/Module/Connedit.php:807 ../../Zotlabs/Module/Rate.php:155 +#: ../../include/js_strings.php:20 +msgid "Rating" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:687 -msgid "Create a new profile using these settings" +#: ../../Zotlabs/Module/Connedit.php:808 +msgid "Slide to adjust your rating" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:688 -msgid "Clone this profile" +#: ../../Zotlabs/Module/Connedit.php:809 ../../Zotlabs/Module/Connedit.php:814 +msgid "Optionally explain your rating" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:689 -msgid "Delete this profile" +#: ../../Zotlabs/Module/Connedit.php:811 +msgid "Custom Filter" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:690 -msgid "Add profile things" +#: ../../Zotlabs/Module/Connedit.php:812 +msgid "Only import posts with this text" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:691 ../../include/widgets.php:105 -#: ../../include/conversation.php:1585 -msgid "Personal" +#: ../../Zotlabs/Module/Connedit.php:812 ../../Zotlabs/Module/Connedit.php:813 +msgid "" +"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " +"all posts" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:693 -msgid "Relation" +#: ../../Zotlabs/Module/Connedit.php:813 +msgid "Do not import posts with this text" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:694 ../../include/datetime.php:55 -msgid "Miscellaneous" +#: ../../Zotlabs/Module/Connedit.php:815 +msgid "This information is public!" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:696 -msgid "Import profile from file" +#: ../../Zotlabs/Module/Connedit.php:820 +msgid "Connection Pending Approval" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:697 -msgid "Export profile to file" +#: ../../Zotlabs/Module/Connedit.php:823 +#: ../../Zotlabs/Module/Settings/Tokens.php:163 +msgid "inherited" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:698 -msgid "Your gender" +#: ../../Zotlabs/Module/Connedit.php:825 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:699 -msgid "Marital status" +#: ../../Zotlabs/Module/Connedit.php:827 +#: ../../Zotlabs/Module/Settings/Tokens.php:160 +msgid "Their Settings" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:700 -msgid "Sexual preference" +#: ../../Zotlabs/Module/Connedit.php:828 +#: ../../Zotlabs/Module/Settings/Tokens.php:161 +msgid "My Settings" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:703 -msgid "Profile name" +#: ../../Zotlabs/Module/Connedit.php:830 +#: ../../Zotlabs/Module/Settings/Tokens.php:165 +msgid "Individual Permissions" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:705 -msgid "This is your default profile." +#: ../../Zotlabs/Module/Connedit.php:831 +#: ../../Zotlabs/Module/Settings/Tokens.php:166 +msgid "" +"Some permissions may be inherited from your channel's <a href=\"settings" +"\"><strong>privacy settings</strong></a>, which have higher priority than " +"individual settings. You can <strong>not</strong> change those settings here." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:707 -msgid "Your full name" +#: ../../Zotlabs/Module/Connedit.php:832 +msgid "" +"Some permissions may be inherited from your channel's <a href=\"settings" +"\"><strong>privacy settings</strong></a>, which have higher priority than " +"individual settings. You can change those settings here but they wont have " +"any impact unless the inherited setting changes." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:708 -msgid "Title/Description" +#: ../../Zotlabs/Module/Connedit.php:833 +msgid "Last update:" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:711 -msgid "Street address" +#: ../../Zotlabs/Module/Connedit.php:842 +msgid "Details" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:712 -msgid "Locality/City" +#: ../../Zotlabs/Module/Connedit.php:845 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137 +msgid "Organisation" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:713 -msgid "Region/State" +#: ../../Zotlabs/Module/Connedit.php:846 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138 +#: ../../include/page_widgets.php:46 +msgid "Title" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:714 -msgid "Postal/Zip code" +#: ../../Zotlabs/Module/Connedit.php:847 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139 +msgid "Phone" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:715 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157 -msgid "Country" +#: ../../Zotlabs/Module/Connedit.php:849 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141 +msgid "Instant messenger" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:720 -msgid "Who (if applicable)" +#: ../../Zotlabs/Module/Connedit.php:850 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142 +msgid "Website" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:720 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +#: ../../Zotlabs/Module/Connedit.php:852 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144 +msgid "Note" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:721 -msgid "Since (date)" +#: ../../Zotlabs/Module/Connedit.php:853 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145 +#: ../../extend/addon/addon/cdav/cdav.php:270 +#: ../../include/connections.php:856 +msgid "Mobile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:724 -msgid "Tell us about yourself" +#: ../../Zotlabs/Module/Connedit.php:854 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146 +#: ../../extend/addon/addon/cdav/cdav.php:271 ../../include/nav.php:88 +#: ../../include/connections.php:857 +msgid "Home" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:725 -#: ../../extend/addon/addon/openid/MysqlProvider.php:68 -msgid "Homepage URL" +#: ../../Zotlabs/Module/Connedit.php:855 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147 +#: ../../extend/addon/addon/cdav/cdav.php:274 +#: ../../include/connections.php:860 +msgid "Work" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Hometown" +#: ../../Zotlabs/Module/Connedit.php:857 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:368 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149 +msgid "Add Contact" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Political views" +#: ../../Zotlabs/Module/Connedit.php:858 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150 +msgid "Add Field" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:728 -msgid "Religious views" +#: ../../Zotlabs/Module/Connedit.php:863 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155 +msgid "P.O. Box" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Keywords used in directory listings" +#: ../../Zotlabs/Module/Connedit.php:864 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156 +msgid "Additional" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Example: fishing photography software" +#: ../../Zotlabs/Module/Connedit.php:865 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157 +msgid "Street" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Musical interests" +#: ../../Zotlabs/Module/Connedit.php:866 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1158 +msgid "Locality" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Books, literature" +#: ../../Zotlabs/Module/Connedit.php:867 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1159 +msgid "Region" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:734 -msgid "Television" +#: ../../Zotlabs/Module/Connedit.php:868 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1160 +msgid "ZIP Code" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Film/Dance/Culture/Entertainment" +#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Profiles.php:727 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1161 +msgid "Country" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:736 -msgid "Hobbies/Interests" +#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82 +msgid "$Projectname" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:737 -msgid "Love/Romance" +#: ../../Zotlabs/Module/Home.php:92 +#, php-format +msgid "Welcome to %s" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "School/Education" +#: ../../Zotlabs/Module/Filestorage.php:87 +msgid "Permission Denied." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Contact information and social networks" +#: ../../Zotlabs/Module/Filestorage.php:103 +msgid "File not found." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "My other channels" +#: ../../Zotlabs/Module/Filestorage.php:146 +msgid "Edit file permissions" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:761 ../../include/channel.php:979 -msgid "Profile Image" +#: ../../Zotlabs/Module/Filestorage.php:159 +msgid "Set/edit permissions" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:771 ../../include/channel.php:961 -#: ../../include/nav.php:91 -msgid "Edit Profiles" +#: ../../Zotlabs/Module/Filestorage.php:160 +msgid "Include all files and sub folders" msgstr "" -#: ../../Zotlabs/Module/Acl.php:313 -msgid "network" +#: ../../Zotlabs/Module/Filestorage.php:161 +msgid "Return to file list" msgstr "" -#: ../../Zotlabs/Module/Acl.php:323 -msgid "RSS" +#: ../../Zotlabs/Module/Filestorage.php:163 +msgid "Copy/paste this code to attach file to a post" msgstr "" -#: ../../Zotlabs/Module/Directory.php:245 -#, php-format -msgid "%d rating" -msgid_plural "%d ratings" -msgstr[0] "" -msgstr[1] "" - -#: ../../Zotlabs/Module/Directory.php:256 -msgid "Gender: " +#: ../../Zotlabs/Module/Filestorage.php:164 +msgid "Copy/paste this URL to link file from a web page" msgstr "" -#: ../../Zotlabs/Module/Directory.php:258 -msgid "Status: " +#: ../../Zotlabs/Module/Filestorage.php:166 +msgid "Share this file" msgstr "" -#: ../../Zotlabs/Module/Directory.php:260 -msgid "Homepage: " +#: ../../Zotlabs/Module/Filestorage.php:167 +msgid "Show URL to this file" msgstr "" -#: ../../Zotlabs/Module/Directory.php:309 ../../include/channel.php:1215 -msgid "Age:" +#: ../../Zotlabs/Module/Filestorage.php:168 +msgid "Notify your contacts about this file" msgstr "" -#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1051 -#: ../../include/event.php:52 ../../include/event.php:84 -#: ../../include/bb2diaspora.php:512 -msgid "Location:" +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:224 +#: ../../include/nav.php:95 ../../include/conversation.php:1836 +msgid "Photos" msgstr "" -#: ../../Zotlabs/Module/Directory.php:320 -msgid "Description:" +#: ../../Zotlabs/Module/Match.php:26 +msgid "Profile Match" msgstr "" -#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1231 -msgid "Hometown:" +#: ../../Zotlabs/Module/Match.php:35 +msgid "No keywords to match. Please add keywords to your default profile." msgstr "" -#: ../../Zotlabs/Module/Directory.php:327 ../../include/channel.php:1239 -msgid "About:" +#: ../../Zotlabs/Module/Match.php:67 +msgid "is interested in:" msgstr "" -#: ../../Zotlabs/Module/Directory.php:328 ../../Zotlabs/Module/Suggest.php:56 -#: ../../Zotlabs/Module/Match.php:68 ../../include/channel.php:1036 -#: ../../include/connections.php:78 ../../include/widgets.php:147 -#: ../../include/widgets.php:184 ../../include/conversation.php:971 +#: ../../Zotlabs/Module/Match.php:68 ../../Zotlabs/Module/Directory.php:329 +#: ../../Zotlabs/Module/Suggest.php:56 ../../include/connections.php:78 +#: ../../include/channel.php:1036 ../../include/widgets.php:147 +#: ../../include/widgets.php:184 ../../include/conversation.php:938 +#: ../../include/conversation.php:1069 msgid "Connect" msgstr "" -#: ../../Zotlabs/Module/Directory.php:329 -msgid "Public Forum:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:332 -msgid "Keywords: " -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:335 -msgid "Don't suggest" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:337 -msgid "Common connections:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:386 -msgid "Global Directory" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:386 -msgid "Local Directory" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:392 -msgid "Finding:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:395 ../../Zotlabs/Module/Suggest.php:64 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" +#: ../../Zotlabs/Module/Match.php:74 +msgid "No matches" msgstr "" -#: ../../Zotlabs/Module/Directory.php:397 -msgid "next page" +#: ../../Zotlabs/Module/Cal.php:69 +msgid "Permissions denied." msgstr "" -#: ../../Zotlabs/Module/Directory.php:397 -msgid "previous page" +#: ../../Zotlabs/Module/Cal.php:263 ../../Zotlabs/Module/Events.php:605 +msgid "l, F j" msgstr "" -#: ../../Zotlabs/Module/Directory.php:398 -msgid "Sort options" +#: ../../Zotlabs/Module/Cal.php:312 ../../Zotlabs/Module/Events.php:660 +#: ../../include/text.php:1761 +msgid "Link to Source" msgstr "" -#: ../../Zotlabs/Module/Directory.php:399 -msgid "Alphabetic" +#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Events.php:688 +msgid "Edit Event" msgstr "" -#: ../../Zotlabs/Module/Directory.php:400 -msgid "Reverse Alphabetic" +#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Events.php:688 +msgid "Create Event" msgstr "" -#: ../../Zotlabs/Module/Directory.php:401 -msgid "Newest to Oldest" +#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Events.php:691 +msgid "Export" msgstr "" -#: ../../Zotlabs/Module/Directory.php:402 -msgid "Oldest to Newest" +#: ../../Zotlabs/Module/Cal.php:341 ../../include/text.php:2307 +msgid "Import" msgstr "" -#: ../../Zotlabs/Module/Directory.php:419 -msgid "No entries (some entries may be hidden)." +#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Events.php:700 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:848 +msgid "Today" msgstr "" #: ../../Zotlabs/Module/Group.php:24 @@ -3255,7 +3691,7 @@ msgid "Could not create privacy group." msgstr "" #: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 -#: ../../include/items.php:3944 +#: ../../include/items.php:3876 msgid "Privacy group not found." msgstr "" @@ -3287,10 +3723,6 @@ msgstr "" msgid "Privacy group editor" msgstr "" -#: ../../Zotlabs/Module/Group.php:197 -msgid "Members" -msgstr "" - #: ../../Zotlabs/Module/Group.php:199 msgid "All Connected Channels" msgstr "" @@ -3299,281 +3731,262 @@ msgstr "" msgid "Click on a channel to add or remove." msgstr "" -#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203 -msgid "webpage" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209 -msgid "block" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206 -msgid "layout" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212 -msgid "menu" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:191 -#, php-format -msgid "%s element installed" +#: ../../Zotlabs/Module/Dreport.php:45 +msgid "Invalid message" msgstr "" -#: ../../Zotlabs/Module/Impel.php:194 -#, php-format -msgid "%s element installation failed" +#: ../../Zotlabs/Module/Dreport.php:78 +msgid "no results" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:104 -msgid "Import completed" +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "channel sync processed" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:119 -msgid "Import Items" +#: ../../Zotlabs/Module/Dreport.php:97 +msgid "queued" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:120 -msgid "Use this form to import existing posts and content from an export file." +#: ../../Zotlabs/Module/Dreport.php:101 +msgid "posted" msgstr "" -#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Wiki.php:20 -#: ../../Zotlabs/Module/Chat.php:25 -#: ../../extend/addon/addon/chess/chess.php:400 -msgid "You must be logged in to see this page." +#: ../../Zotlabs/Module/Dreport.php:105 +msgid "accepted for delivery" msgstr "" -#: ../../Zotlabs/Module/Channel.php:44 -msgid "Posts and comments" +#: ../../Zotlabs/Module/Dreport.php:109 +msgid "updated" msgstr "" -#: ../../Zotlabs/Module/Channel.php:45 -msgid "Only posts" +#: ../../Zotlabs/Module/Dreport.php:112 +msgid "update ignored" msgstr "" -#: ../../Zotlabs/Module/Channel.php:104 -msgid "Insufficient permissions. Request redirected to profile page." +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "permission denied" msgstr "" -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "recipient not found" msgstr "" -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." +#: ../../Zotlabs/Module/Dreport.php:122 +msgid "mail recalled" msgstr "" -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary " -"location." +#: ../../Zotlabs/Module/Dreport.php:125 +msgid "duplicate mail received" msgstr "" -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" +#: ../../Zotlabs/Module/Dreport.php:128 +msgid "mail delivered" msgstr "" -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." +#: ../../Zotlabs/Module/Dreport.php:148 +#, php-format +msgid "Delivery report for %1$s" msgstr "" -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" +#: ../../Zotlabs/Module/Dreport.php:151 +msgid "Options" msgstr "" -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" +#: ../../Zotlabs/Module/Dreport.php:152 +msgid "Redeliver" msgstr "" -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" +#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203 +msgid "webpage" msgstr "" -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." +#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209 +msgid "block" msgstr "" -#: ../../Zotlabs/Module/Locs.php:124 -msgid "" -"When possible, drop a location by logging into that website/hub and removing " -"your channel." +#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206 +msgid "layout" msgstr "" -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." +#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212 +msgid "menu" msgstr "" -#: ../../Zotlabs/Module/Admin.php:94 -msgid "# Accounts" +#: ../../Zotlabs/Module/Impel.php:191 +#, php-format +msgid "%s element installed" msgstr "" -#: ../../Zotlabs/Module/Admin.php:95 -msgid "# blocked accounts" +#: ../../Zotlabs/Module/Impel.php:194 +#, php-format +msgid "%s element installation failed" msgstr "" -#: ../../Zotlabs/Module/Admin.php:96 -msgid "# expired accounts" +#: ../../Zotlabs/Module/Import_items.php:42 ../../Zotlabs/Module/Import.php:71 +msgid "Nothing to import." msgstr "" -#: ../../Zotlabs/Module/Admin.php:97 -msgid "# expiring accounts" +#: ../../Zotlabs/Module/Import_items.php:66 ../../Zotlabs/Module/Import.php:83 +#: ../../Zotlabs/Module/Import.php:98 +msgid "Unable to download data from old server" msgstr "" -#: ../../Zotlabs/Module/Admin.php:108 -msgid "# Channels" +#: ../../Zotlabs/Module/Import_items.php:72 +#: ../../Zotlabs/Module/Import.php:105 +msgid "Imported file is empty." msgstr "" -#: ../../Zotlabs/Module/Admin.php:109 -msgid "# primary" +#: ../../Zotlabs/Module/Import_items.php:88 +#: ../../Zotlabs/Module/Import.php:127 +#, php-format +msgid "Warning: Database versions differ by %1$d updates." msgstr "" -#: ../../Zotlabs/Module/Admin.php:110 -msgid "# clones" +#: ../../Zotlabs/Module/Import_items.php:104 +msgid "Import completed" msgstr "" -#: ../../Zotlabs/Module/Admin.php:116 -msgid "Message queues" +#: ../../Zotlabs/Module/Import_items.php:119 +msgid "Import Items" msgstr "" -#: ../../Zotlabs/Module/Admin.php:133 -msgid "Your software should be updated" +#: ../../Zotlabs/Module/Import_items.php:120 +msgid "Use this form to import existing posts and content from an export file." msgstr "" -#: ../../Zotlabs/Module/Admin.php:138 -msgid "Summary" +#: ../../Zotlabs/Module/Import_items.php:121 +#: ../../Zotlabs/Module/Import.php:532 +msgid "File to Upload" msgstr "" -#: ../../Zotlabs/Module/Admin.php:141 -msgid "Registered accounts" +#: ../../Zotlabs/Module/Manage.php:136 +#: ../../Zotlabs/Module/New_channel.php:121 +#, php-format +msgid "You have created %1$.0f of %2$.0f allowed channels." msgstr "" -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Pending registrations" +#: ../../Zotlabs/Module/Manage.php:143 +msgid "Create a new channel" msgstr "" -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Registered channels" +#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Profiles.php:784 +#: ../../Zotlabs/Module/Wiki.php:147 ../../Zotlabs/Module/Chat.php:255 +msgid "Create New" msgstr "" -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Active plugins" +#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:216 +#: ../../include/nav.php:209 +msgid "Channel Manager" msgstr "" -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Version" +#: ../../Zotlabs/Module/Manage.php:165 +msgid "Current Channel" msgstr "" -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Repository version (master)" +#: ../../Zotlabs/Module/Manage.php:167 +msgid "Switch to one of your channels by selecting it." msgstr "" -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (dev)" +#: ../../Zotlabs/Module/Manage.php:168 +msgid "Default Channel" msgstr "" -#: ../../Zotlabs/Module/Like.php:19 -msgid "Like/Dislike" +#: ../../Zotlabs/Module/Manage.php:169 +msgid "Make Default" msgstr "" -#: ../../Zotlabs/Module/Like.php:24 -msgid "This action is restricted to members." +#: ../../Zotlabs/Module/Manage.php:172 +#, php-format +msgid "%d new messages" msgstr "" -#: ../../Zotlabs/Module/Like.php:25 -msgid "" -"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href=" -"\"register\">register as a new $Projectname member</a> to continue." +#: ../../Zotlabs/Module/Manage.php:173 +#, php-format +msgid "%d new introductions" msgstr "" -#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 -#: ../../Zotlabs/Module/Like.php:169 -msgid "Invalid request." +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Delegated Channel" msgstr "" -#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 -msgid "channel" +#: ../../Zotlabs/Module/Import.php:33 +#, php-format +msgid "Your service plan only allows %d channels." msgstr "" -#: ../../Zotlabs/Module/Like.php:146 -msgid "thing" +#: ../../Zotlabs/Module/Import.php:157 ../../include/import.php:100 +msgid "Cloned channel not found. Import failed." msgstr "" -#: ../../Zotlabs/Module/Like.php:192 -msgid "Channel unavailable." +#: ../../Zotlabs/Module/Import.php:167 +msgid "No channel. Import failed." msgstr "" -#: ../../Zotlabs/Module/Like.php:240 -msgid "Previous action reversed." +#: ../../Zotlabs/Module/Import.php:503 +#: ../../include/Import/import_diaspora.php:142 +msgid "Import completed." msgstr "" -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../Zotlabs/Module/Tagger.php:47 -#: ../../extend/addon/addon/diaspora/inbound.php:1792 -#: ../../extend/addon/addon/redphotos/redphotohelper.php:74 -#: ../../include/text.php:1984 ../../include/conversation.php:120 -msgid "photo" +#: ../../Zotlabs/Module/Import.php:525 +msgid "You must be logged in to use this feature." msgstr "" -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../extend/addon/addon/diaspora/inbound.php:1792 -#: ../../include/text.php:1990 ../../include/conversation.php:148 -msgid "status" +#: ../../Zotlabs/Module/Import.php:530 +msgid "Import Channel" msgstr "" -#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Events.php:256 -#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:961 -#: ../../include/text.php:1987 ../../include/conversation.php:123 -msgid "event" +#: ../../Zotlabs/Module/Import.php:531 +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/Like.php:419 -#: ../../extend/addon/addon/diaspora/inbound.php:1821 -#: ../../include/conversation.php:164 -#, php-format -msgid "%1$s likes %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:533 +msgid "Or provide the old server/hub details" msgstr "" -#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:534 +msgid "Your old identity address (xyz@example.com)" msgstr "" -#: ../../Zotlabs/Module/Like.php:423 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:535 +msgid "Your old login email address" msgstr "" -#: ../../Zotlabs/Module/Like.php:425 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:536 +msgid "Your old login password" msgstr "" -#: ../../Zotlabs/Module/Like.php:427 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:537 +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/Like.php:429 -#, php-format -msgid "%1$s is attending %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:538 +msgid "Make this hub my primary location" msgstr "" -#: ../../Zotlabs/Module/Like.php:431 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:539 +msgid "" +"Import existing posts if possible (experimental - limited by available memory" msgstr "" -#: ../../Zotlabs/Module/Like.php:433 -#, php-format -msgid "%1$s may attend %2$s's %3$s" +#: ../../Zotlabs/Module/Import.php:540 +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/Like.php:538 -msgid "Action completed." +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." msgstr "" -#: ../../Zotlabs/Module/Like.php:539 -msgid "Thank you." +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" msgstr "" #: ../../Zotlabs/Module/Magic.php:71 @@ -3597,7 +4010,7 @@ msgid "Menu Item Permissions" msgstr "" #: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231 -#: ../../Zotlabs/Module/Settings/Channel.php:486 +#: ../../Zotlabs/Module/Settings/Channel.php:489 msgid "(click to open/close)" msgstr "" @@ -3697,13 +4110,74 @@ msgstr "" msgid "Link text" msgstr "" -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" +#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53 +msgid "App installed." msgstr "" -#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 -#: ../../include/conversation.php:974 -msgid "Ratings" +#: ../../Zotlabs/Module/Appman.php:46 +msgid "Malformed app." +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:105 +msgid "Embed code" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:111 ../../include/widgets.php:107 +msgid "Edit App" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:111 +msgid "Create App" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:116 +msgid "Name of app" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:116 ../../Zotlabs/Module/Appman.php:117 +#: ../../Zotlabs/Module/Profiles.php:715 ../../Zotlabs/Module/Profiles.php:719 +#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465 +#: ../../include/datetime.php:259 +msgid "Required" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:117 +msgid "Location (URL) of app" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:118 ../../Zotlabs/Module/Events.php:473 +#: ../../Zotlabs/Module/Rbmark.php:101 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:838 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:165 +msgid "Description" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:119 +msgid "Photo icon URL" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:119 +msgid "80 x 80 pixels - optional" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:120 +msgid "Categories (optional, comma separated list)" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:121 +msgid "Version ID" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:122 +msgid "Price of app" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:123 +msgid "Location (URL) to purchase app" +msgstr "" + +#: ../../Zotlabs/Module/Ratings.php:70 +msgid "No ratings" msgstr "" #: ../../Zotlabs/Module/Ratings.php:98 @@ -3728,7 +4202,7 @@ msgctxt "mood" msgid "%1$s is %2$s" msgstr "" -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:227 +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:229 msgid "Mood" msgstr "" @@ -3736,771 +4210,822 @@ msgstr "" msgid "Set your current mood and tell your friends" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:45 -msgid "Invalid message" +#: ../../Zotlabs/Module/Notify.php:57 +#: ../../Zotlabs/Module/Notifications.php:35 +msgid "No more system notifications." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:78 -msgid "no results" +#: ../../Zotlabs/Module/Notify.php:61 +#: ../../Zotlabs/Module/Notifications.php:39 +msgid "System Notifications" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "channel sync processed" +#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:183 +#: ../../Zotlabs/Module/Profiles.php:240 ../../Zotlabs/Module/Profiles.php:631 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62 +msgid "Profile not found." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:97 -msgid "queued" +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:101 -msgid "posted" +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104 +msgid "Profile-" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:105 -msgid "accepted for delivery" +#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 +msgid "New profile created." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:109 -msgid "updated" +#: ../../Zotlabs/Module/Profiles.php:110 +msgid "Profile unavailable to clone." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:112 -msgid "update ignored" +#: ../../Zotlabs/Module/Profiles.php:145 +msgid "Profile unavailable to export." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "permission denied" +#: ../../Zotlabs/Module/Profiles.php:251 +msgid "Profile Name is required." msgstr "" -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "recipient not found" +#: ../../Zotlabs/Module/Profiles.php:431 +msgid "Marital Status" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:122 -msgid "mail recalled" +#: ../../Zotlabs/Module/Profiles.php:435 +msgid "Romantic Partner" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:125 -msgid "duplicate mail received" +#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:742 +msgid "Likes" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:128 -msgid "mail delivered" +#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:743 +msgid "Dislikes" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:148 -#, php-format -msgid "Delivery report for %1$s" +#: ../../Zotlabs/Module/Profiles.php:447 ../../Zotlabs/Module/Profiles.php:750 +msgid "Work/Employment" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:151 -msgid "Options" +#: ../../Zotlabs/Module/Profiles.php:450 +msgid "Religion" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:152 -msgid "Redeliver" +#: ../../Zotlabs/Module/Profiles.php:454 +msgid "Political Views" msgstr "" -#: ../../Zotlabs/Module/Notify.php:57 -#: ../../Zotlabs/Module/Notifications.php:35 -msgid "No more system notifications." +#: ../../Zotlabs/Module/Profiles.php:458 +#: ../../extend/addon/addon/openid/MysqlProvider.php:74 +msgid "Gender" msgstr "" -#: ../../Zotlabs/Module/Notify.php:61 -#: ../../Zotlabs/Module/Notifications.php:39 -msgid "System Notifications" +#: ../../Zotlabs/Module/Profiles.php:462 +msgid "Sexual Preference" msgstr "" -#: ../../Zotlabs/Module/Editpost.php:35 -msgid "Item is not editable" +#: ../../Zotlabs/Module/Profiles.php:466 +msgid "Homepage" msgstr "" -#: ../../Zotlabs/Module/Photos.php:82 -msgid "Page owner information could not be retrieved." +#: ../../Zotlabs/Module/Profiles.php:470 +msgid "Interests" msgstr "" -#: ../../Zotlabs/Module/Photos.php:97 ../../Zotlabs/Module/Photos.php:734 -#: ../../Zotlabs/Module/Profile_photo.php:115 -#: ../../Zotlabs/Module/Profile_photo.php:219 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:225 -#: ../../include/photo/photo_driver.php:728 -msgid "Profile Photos" +#: ../../Zotlabs/Module/Profiles.php:566 +msgid "Profile updated." msgstr "" -#: ../../Zotlabs/Module/Photos.php:103 ../../Zotlabs/Module/Photos.php:129 -msgid "Album not found." +#: ../../Zotlabs/Module/Profiles.php:650 +msgid "Hide your connections list from viewers of this profile" msgstr "" -#: ../../Zotlabs/Module/Photos.php:112 -msgid "Delete Album" +#: ../../Zotlabs/Module/Profiles.php:692 +msgid "Edit Profile Details" msgstr "" -#: ../../Zotlabs/Module/Photos.php:133 -msgid "" -"Multiple storage folders exist with this album name, but within different " -"directories. Please remove the desired folder or folders using the Files " -"manager" +#: ../../Zotlabs/Module/Profiles.php:694 +msgid "View this profile" msgstr "" -#: ../../Zotlabs/Module/Photos.php:190 ../../Zotlabs/Module/Photos.php:1059 -msgid "Delete Photo" +#: ../../Zotlabs/Module/Profiles.php:695 ../../Zotlabs/Module/Profiles.php:777 +#: ../../include/channel.php:983 +msgid "Edit visibility" msgstr "" -#: ../../Zotlabs/Module/Photos.php:520 -msgid "No photos selected" +#: ../../Zotlabs/Module/Profiles.php:696 +msgid "Profile Tools" msgstr "" -#: ../../Zotlabs/Module/Photos.php:569 -msgid "Access to this item is restricted." +#: ../../Zotlabs/Module/Profiles.php:697 +msgid "Change cover photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:608 -#, php-format -msgid "%1$.2f MB of %2$.2f MB photo storage used." +#: ../../Zotlabs/Module/Profiles.php:698 ../../include/channel.php:954 +msgid "Change profile photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:611 -#, php-format -msgid "%1$.2f MB photo storage used." +#: ../../Zotlabs/Module/Profiles.php:699 +msgid "Create a new profile using these settings" msgstr "" -#: ../../Zotlabs/Module/Photos.php:647 -msgid "Upload Photos" +#: ../../Zotlabs/Module/Profiles.php:700 +msgid "Clone this profile" msgstr "" -#: ../../Zotlabs/Module/Photos.php:651 -msgid "Enter an album name" +#: ../../Zotlabs/Module/Profiles.php:701 +msgid "Delete this profile" msgstr "" -#: ../../Zotlabs/Module/Photos.php:652 -msgid "or select an existing album (doubleclick)" +#: ../../Zotlabs/Module/Profiles.php:702 +msgid "Add profile things" msgstr "" -#: ../../Zotlabs/Module/Photos.php:653 -msgid "Create a status post for this upload" +#: ../../Zotlabs/Module/Profiles.php:703 ../../include/widgets.php:105 +#: ../../include/conversation.php:1715 +msgid "Personal" msgstr "" -#: ../../Zotlabs/Module/Photos.php:654 -msgid "Caption (optional):" +#: ../../Zotlabs/Module/Profiles.php:705 +msgid "Relation" msgstr "" -#: ../../Zotlabs/Module/Photos.php:655 -msgid "Description (optional):" +#: ../../Zotlabs/Module/Profiles.php:706 ../../include/datetime.php:55 +msgid "Miscellaneous" msgstr "" -#: ../../Zotlabs/Module/Photos.php:686 -msgid "Album name could not be decoded" +#: ../../Zotlabs/Module/Profiles.php:708 +msgid "Import profile from file" msgstr "" -#: ../../Zotlabs/Module/Photos.php:734 -msgid "Contact Photos" +#: ../../Zotlabs/Module/Profiles.php:709 +msgid "Export profile to file" msgstr "" -#: ../../Zotlabs/Module/Photos.php:757 -msgid "Show Newest First" +#: ../../Zotlabs/Module/Profiles.php:710 +msgid "Your gender" msgstr "" -#: ../../Zotlabs/Module/Photos.php:759 -msgid "Show Oldest First" +#: ../../Zotlabs/Module/Profiles.php:711 +msgid "Marital status" msgstr "" -#: ../../Zotlabs/Module/Photos.php:783 ../../Zotlabs/Module/Photos.php:1337 -#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1676 -msgid "View Photo" +#: ../../Zotlabs/Module/Profiles.php:712 +msgid "Sexual preference" msgstr "" -#: ../../Zotlabs/Module/Photos.php:814 -#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1693 -msgid "Edit Album" +#: ../../Zotlabs/Module/Profiles.php:715 +msgid "Profile name" msgstr "" -#: ../../Zotlabs/Module/Photos.php:861 -msgid "Permission denied. Access to this item may be restricted." +#: ../../Zotlabs/Module/Profiles.php:717 +msgid "This is your default profile." msgstr "" -#: ../../Zotlabs/Module/Photos.php:863 -msgid "Photo not available" +#: ../../Zotlabs/Module/Profiles.php:719 +msgid "Your full name" msgstr "" -#: ../../Zotlabs/Module/Photos.php:921 -msgid "Use as profile photo" +#: ../../Zotlabs/Module/Profiles.php:720 +msgid "Title/Description" msgstr "" -#: ../../Zotlabs/Module/Photos.php:922 -msgid "Use as cover photo" +#: ../../Zotlabs/Module/Profiles.php:723 +msgid "Street address" msgstr "" -#: ../../Zotlabs/Module/Photos.php:929 -msgid "Private Photo" +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "Locality/City" msgstr "" -#: ../../Zotlabs/Module/Photos.php:940 ../../Zotlabs/Module/Events.php:680 -#: ../../Zotlabs/Module/Events.php:689 ../../Zotlabs/Module/Cal.php:332 -#: ../../Zotlabs/Module/Cal.php:339 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:842 -msgid "Previous" +#: ../../Zotlabs/Module/Profiles.php:725 +msgid "Region/State" msgstr "" -#: ../../Zotlabs/Module/Photos.php:944 -msgid "View Full Size" +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Postal/Zip code" msgstr "" -#: ../../Zotlabs/Module/Photos.php:949 ../../Zotlabs/Module/Setup.php:270 -#: ../../Zotlabs/Module/Events.php:681 ../../Zotlabs/Module/Events.php:690 -#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:843 -msgid "Next" +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Who (if applicable)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1033 -msgid "Edit photo" +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1035 -msgid "Rotate CW (right)" +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Since (date)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1036 -msgid "Rotate CCW (left)" +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Tell us about yourself" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1039 -msgid "Move photo to album" +#: ../../Zotlabs/Module/Profiles.php:737 +#: ../../extend/addon/addon/openid/MysqlProvider.php:68 +msgid "Homepage URL" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1040 -msgid "Enter a new album name" +#: ../../Zotlabs/Module/Profiles.php:738 +msgid "Hometown" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1041 -msgid "or select an existing one (doubleclick)" +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "Political views" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1044 -msgid "Caption" +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Religious views" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1046 -msgid "Add a Tag" +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "Keywords used in directory listings" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1054 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "Example: fishing photography software" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1057 -msgid "Flag as adult in album view" +#: ../../Zotlabs/Module/Profiles.php:744 +msgid "Musical interests" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:268 -msgid "I like this (toggle)" +#: ../../Zotlabs/Module/Profiles.php:745 +msgid "Books, literature" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1077 ../../Zotlabs/Lib/ThreadItem.php:269 -msgid "I don't like this (toggle)" +#: ../../Zotlabs/Module/Profiles.php:746 +msgid "Television" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1078 ../../Zotlabs/Module/Blocks.php:161 -#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Webpages.php:241 -#: ../../extend/addon/addon/cdav/include/widgets.php:123 -#: ../../include/conversation.php:1248 -msgid "Share" +#: ../../Zotlabs/Module/Profiles.php:747 +msgid "Film/Dance/Culture/Entertainment" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1079 ../../Zotlabs/Lib/ThreadItem.php:409 -#: ../../include/conversation.php:757 -msgid "Please wait" +#: ../../Zotlabs/Module/Profiles.php:748 +msgid "Hobbies/Interests" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1213 -#: ../../Zotlabs/Lib/ThreadItem.php:726 -msgid "This is you" +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Love/Romance" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Module/Photos.php:1215 -#: ../../Zotlabs/Lib/ThreadItem.php:728 ../../include/js_strings.php:6 -msgid "Comment" +#: ../../Zotlabs/Module/Profiles.php:751 +msgid "School/Education" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Module/Events.php:471 -#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:738 -#: ../../include/page_widgets.php:43 ../../include/conversation.php:1217 -msgid "Preview" +#: ../../Zotlabs/Module/Profiles.php:752 +msgid "Contact information and social networks" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:593 -msgctxt "title" -msgid "Likes" +#: ../../Zotlabs/Module/Profiles.php:753 +msgid "My other channels" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:593 -msgctxt "title" -msgid "Dislikes" +#: ../../Zotlabs/Module/Profiles.php:773 ../../include/channel.php:979 +msgid "Profile Image" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:594 -msgctxt "title" -msgid "Agree" +#: ../../Zotlabs/Module/Profiles.php:783 ../../include/nav.php:91 +#: ../../include/channel.php:961 +msgid "Edit Profiles" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:594 -msgctxt "title" -msgid "Disagree" +#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 +msgid "Authorize application connection" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:594 -msgctxt "title" -msgid "Abstain" +#: ../../Zotlabs/Module/Api.php:73 +msgid "Return to your app and insert this Security Code:" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:595 -msgctxt "title" -msgid "Attending" +#: ../../Zotlabs/Module/Api.php:83 +msgid "Please login to continue." msgstr "" -#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:595 -msgctxt "title" -msgid "Not attending" +#: ../../Zotlabs/Module/Api.php:95 +msgid "" +"Do you want to authorize this application to access your posts and contacts, " +"and/or create new posts for you?" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:595 -msgctxt "title" -msgid "Might attend" +#: ../../Zotlabs/Module/Invite.php:29 +msgid "Total invitation limit exceeded." msgstr "" -#: ../../Zotlabs/Module/Photos.php:1132 ../../Zotlabs/Module/Photos.php:1144 -#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Lib/ThreadItem.php:198 -#: ../../include/conversation.php:1784 -msgid "View all" +#: ../../Zotlabs/Module/Invite.php:53 +#, php-format +msgid "%s : Not a valid email address." msgstr "" -#: ../../Zotlabs/Module/Photos.php:1136 ../../Zotlabs/Lib/ThreadItem.php:190 -#: ../../include/channel.php:1190 ../../include/taxonomy.php:403 -#: ../../include/conversation.php:1808 -msgctxt "noun" -msgid "Like" -msgid_plural "Likes" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Invite.php:67 +msgid "Please join us on $Projectname" +msgstr "" -#: ../../Zotlabs/Module/Photos.php:1141 ../../Zotlabs/Lib/ThreadItem.php:195 -#: ../../include/conversation.php:1811 -msgctxt "noun" -msgid "Dislike" -msgid_plural "Dislikes" +#: ../../Zotlabs/Module/Invite.php:77 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:82 +#, php-format +msgid "%s : Message delivery failed." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:86 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Photos.php:1241 -msgid "Photo Tools" +#: ../../Zotlabs/Module/Invite.php:105 +msgid "You have no more invitations available" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1250 -msgid "In This Photo:" +#: ../../Zotlabs/Module/Invite.php:136 +msgid "Send invitations" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1255 -msgid "Map" +#: ../../Zotlabs/Module/Invite.php:137 +msgid "Enter email addresses, one per line:" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:398 -msgctxt "noun" -msgid "Likes" +#: ../../Zotlabs/Module/Invite.php:138 ../../Zotlabs/Module/Mail.php:284 +msgid "Your message:" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1264 ../../Zotlabs/Lib/ThreadItem.php:399 -msgctxt "noun" -msgid "Dislikes" +#: ../../Zotlabs/Module/Invite.php:139 +msgid "Please join my community on $Projectname." msgstr "" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:404 -#: ../../include/acl_selectors.php:210 -msgid "Close" +#: ../../Zotlabs/Module/Invite.php:141 +msgid "You will need to supply this invitation code:" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1343 -msgid "View Album" +#: ../../Zotlabs/Module/Invite.php:142 +msgid "1. Register at any $Projectname location (they are all inter-connected)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1354 ../../Zotlabs/Module/Photos.php:1367 -#: ../../Zotlabs/Module/Photos.php:1368 -msgid "Recent Photos" +#: ../../Zotlabs/Module/Invite.php:144 +msgid "2. Enter my $Projectname network address into the site searchbar." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:145 +msgid "or visit" +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:147 +msgid "3. Click [Connect]" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:20 +msgid "About this site" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "Site Name" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:25 ../../include/network.php:1962 +msgid "Administrator" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Software and Project information" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "This site is powered by $Projectname" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "" +"Federated and decentralised networking and identity services provided by Zot" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:32 +#, php-format +msgid "Version %s" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:33 +msgid "Project homepage" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Developer homepage" +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:140 +msgid "Create Channel" +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:141 +msgid "" +"A channel is your identity on this network. It can represent a person, a " +"blog, or a forum to name a few. Channels can make connections with other " +"channels to share information with highly detailed permissions." +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:142 +msgid "" +"or <a href=\"import\">import an existing channel</a> from another location." msgstr "" -#: ../../Zotlabs/Module/Setup.php:182 +#: ../../Zotlabs/Module/Setup.php:176 msgid "$Projectname Server - Setup" msgstr "" -#: ../../Zotlabs/Module/Setup.php:186 +#: ../../Zotlabs/Module/Setup.php:180 msgid "Could not connect to database." msgstr "" -#: ../../Zotlabs/Module/Setup.php:190 +#: ../../Zotlabs/Module/Setup.php:184 msgid "" "Could not connect to specified site URL. Possible SSL certificate or DNS " "issue." msgstr "" -#: ../../Zotlabs/Module/Setup.php:197 +#: ../../Zotlabs/Module/Setup.php:191 msgid "Could not create table." msgstr "" -#: ../../Zotlabs/Module/Setup.php:202 +#: ../../Zotlabs/Module/Setup.php:196 msgid "Your site database has been installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:206 +#: ../../Zotlabs/Module/Setup.php:200 msgid "" "You may need to import the file \"install/schema_xxx.sql\" manually using a " "database client." msgstr "" -#: ../../Zotlabs/Module/Setup.php:207 ../../Zotlabs/Module/Setup.php:269 -#: ../../Zotlabs/Module/Setup.php:740 +#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263 +#: ../../Zotlabs/Module/Setup.php:750 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "" -#: ../../Zotlabs/Module/Setup.php:266 +#: ../../Zotlabs/Module/Setup.php:260 msgid "System check" msgstr "" -#: ../../Zotlabs/Module/Setup.php:271 +#: ../../Zotlabs/Module/Setup.php:265 msgid "Check again" msgstr "" -#: ../../Zotlabs/Module/Setup.php:293 +#: ../../Zotlabs/Module/Setup.php:287 msgid "Database connection" msgstr "" -#: ../../Zotlabs/Module/Setup.php:294 +#: ../../Zotlabs/Module/Setup.php:288 msgid "" "In order to install $Projectname we need to know how to connect to your " "database." msgstr "" -#: ../../Zotlabs/Module/Setup.php:295 +#: ../../Zotlabs/Module/Setup.php:289 msgid "" "Please contact your hosting provider or site administrator if you have " "questions about these settings." msgstr "" -#: ../../Zotlabs/Module/Setup.php:296 +#: ../../Zotlabs/Module/Setup.php:290 msgid "" "The database you specify below should already exist. If it does not, please " "create it before continuing." msgstr "" -#: ../../Zotlabs/Module/Setup.php:300 +#: ../../Zotlabs/Module/Setup.php:294 msgid "Database Server Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:300 +#: ../../Zotlabs/Module/Setup.php:294 msgid "Default is 127.0.0.1" msgstr "" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:295 msgid "Database Port" msgstr "" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:295 msgid "Communication port number - use 0 for default" msgstr "" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:296 msgid "Database Login Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:303 +#: ../../Zotlabs/Module/Setup.php:297 msgid "Database Login Password" msgstr "" -#: ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:298 msgid "Database Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:305 +#: ../../Zotlabs/Module/Setup.php:299 msgid "Database Type" msgstr "" -#: ../../Zotlabs/Module/Setup.php:307 ../../Zotlabs/Module/Setup.php:353 +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 msgid "Site administrator email address" msgstr "" -#: ../../Zotlabs/Module/Setup.php:307 ../../Zotlabs/Module/Setup.php:353 +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 msgid "" "Your account email address must match this in order to use the web admin " "panel." msgstr "" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:355 +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 msgid "Website URL" msgstr "" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:355 +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 msgid "Please use SSL (https) URL if available." msgstr "" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:359 +#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:353 msgid "Please select a default timezone for your website" msgstr "" -#: ../../Zotlabs/Module/Setup.php:342 +#: ../../Zotlabs/Module/Setup.php:336 msgid "Site settings" msgstr "" -#: ../../Zotlabs/Module/Setup.php:398 +#: ../../Zotlabs/Module/Setup.php:392 msgid "PHP version 5.5 or greater is required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:399 +#: ../../Zotlabs/Module/Setup.php:393 msgid "PHP version" msgstr "" -#: ../../Zotlabs/Module/Setup.php:414 +#: ../../Zotlabs/Module/Setup.php:409 msgid "Could not find a command line version of PHP in the web server PATH." msgstr "" -#: ../../Zotlabs/Module/Setup.php:415 +#: ../../Zotlabs/Module/Setup.php:410 msgid "" "If you don't have a command line version of PHP installed on server, you " "will not be able to run background polling via cron." msgstr "" -#: ../../Zotlabs/Module/Setup.php:419 +#: ../../Zotlabs/Module/Setup.php:414 msgid "PHP executable path" msgstr "" -#: ../../Zotlabs/Module/Setup.php:419 +#: ../../Zotlabs/Module/Setup.php:414 msgid "" "Enter full path to php executable. You can leave this blank to continue the " "installation." msgstr "" -#: ../../Zotlabs/Module/Setup.php:424 +#: ../../Zotlabs/Module/Setup.php:419 msgid "Command line PHP" msgstr "" -#: ../../Zotlabs/Module/Setup.php:433 +#: ../../Zotlabs/Module/Setup.php:429 +msgid "" +"Unable to check command line PHP, as shell_exec() is disabled. This is " +"required." +msgstr "" + +#: ../../Zotlabs/Module/Setup.php:432 msgid "" "The command line version of PHP on your system does not have " "\"register_argc_argv\" enabled." msgstr "" -#: ../../Zotlabs/Module/Setup.php:434 +#: ../../Zotlabs/Module/Setup.php:433 msgid "This is required for message delivery to work." msgstr "" -#: ../../Zotlabs/Module/Setup.php:437 +#: ../../Zotlabs/Module/Setup.php:436 msgid "PHP register_argc_argv" msgstr "" -#: ../../Zotlabs/Module/Setup.php:455 +#: ../../Zotlabs/Module/Setup.php:454 #, php-format msgid "" "Your max allowed total upload size is set to %s. Maximum size of one file to " "upload is set to %s. You are allowed to upload up to %d files at once." msgstr "" -#: ../../Zotlabs/Module/Setup.php:460 -msgid "You can adjust these settings in the servers php.ini." +#: ../../Zotlabs/Module/Setup.php:459 +msgid "You can adjust these settings in the server php.ini file." msgstr "" -#: ../../Zotlabs/Module/Setup.php:462 +#: ../../Zotlabs/Module/Setup.php:461 msgid "PHP upload limits" msgstr "" -#: ../../Zotlabs/Module/Setup.php:485 +#: ../../Zotlabs/Module/Setup.php:484 msgid "" "Error: the \"openssl_pkey_new\" function on this system is not able to " "generate encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:486 +#: ../../Zotlabs/Module/Setup.php:485 msgid "" "If running under Windows, please see \"http://www.php.net/manual/en/openssl." "installation.php\"." msgstr "" -#: ../../Zotlabs/Module/Setup.php:489 +#: ../../Zotlabs/Module/Setup.php:488 msgid "Generate encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:501 +#: ../../Zotlabs/Module/Setup.php:505 msgid "libCurl PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:502 +#: ../../Zotlabs/Module/Setup.php:506 msgid "GD graphics PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:503 +#: ../../Zotlabs/Module/Setup.php:507 msgid "OpenSSL PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:504 +#: ../../Zotlabs/Module/Setup.php:508 msgid "PDO database PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:505 +#: ../../Zotlabs/Module/Setup.php:509 msgid "mb_string PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:506 +#: ../../Zotlabs/Module/Setup.php:510 msgid "xml PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:510 ../../Zotlabs/Module/Setup.php:512 +#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:516 msgid "Apache mod_rewrite module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:510 +#: ../../Zotlabs/Module/Setup.php:514 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:516 ../../Zotlabs/Module/Setup.php:519 -msgid "proc_open" +#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 +msgid "exec" +msgstr "" + +#: ../../Zotlabs/Module/Setup.php:520 +msgid "" +"Error: exec is required but is either not installed or has been disabled in " +"php.ini" +msgstr "" + +#: ../../Zotlabs/Module/Setup.php:526 ../../Zotlabs/Module/Setup.php:529 +msgid "shell_exec" msgstr "" -#: ../../Zotlabs/Module/Setup.php:516 +#: ../../Zotlabs/Module/Setup.php:526 msgid "" -"Error: proc_open is required but is either not installed or has been " +"Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" msgstr "" -#: ../../Zotlabs/Module/Setup.php:524 +#: ../../Zotlabs/Module/Setup.php:534 msgid "Error: libCURL PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:528 +#: ../../Zotlabs/Module/Setup.php:538 msgid "" "Error: GD graphics PHP module with JPEG support required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:532 +#: ../../Zotlabs/Module/Setup.php:542 msgid "Error: openssl PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:536 +#: ../../Zotlabs/Module/Setup.php:546 msgid "Error: PDO database PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:540 +#: ../../Zotlabs/Module/Setup.php:550 msgid "Error: mb_string PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:544 +#: ../../Zotlabs/Module/Setup.php:554 msgid "Error: xml PHP module required for DAV but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:562 +#: ../../Zotlabs/Module/Setup.php:572 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\" " "in the top folder of your web server and it is unable to do so." msgstr "" -#: ../../Zotlabs/Module/Setup.php:563 +#: ../../Zotlabs/Module/Setup.php:573 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "" -#: ../../Zotlabs/Module/Setup.php:564 +#: ../../Zotlabs/Module/Setup.php:574 msgid "" "At the end of this procedure, we will give you a text to save in a file " "named .htconfig.php in your Red top folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:565 +#: ../../Zotlabs/Module/Setup.php:575 msgid "" "You can alternatively skip this procedure and perform a manual installation. " "Please see the file \"install/INSTALL.txt\" for instructions." msgstr "" -#: ../../Zotlabs/Module/Setup.php:568 +#: ../../Zotlabs/Module/Setup.php:578 msgid ".htconfig.php is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:582 +#: ../../Zotlabs/Module/Setup.php:592 msgid "" -"Red uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." +"This software uses the Smarty3 template engine to render its web views. " +"Smarty3 compiles templates to PHP to speed up rendering." msgstr "" -#: ../../Zotlabs/Module/Setup.php:583 +#: ../../Zotlabs/Module/Setup.php:593 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:584 ../../Zotlabs/Module/Setup.php:605 +#: ../../Zotlabs/Module/Setup.php:594 ../../Zotlabs/Module/Setup.php:615 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has " "write access to this folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:585 +#: ../../Zotlabs/Module/Setup.php:595 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "" -#: ../../Zotlabs/Module/Setup.php:588 +#: ../../Zotlabs/Module/Setup.php:598 #, php-format msgid "%s is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:604 +#: ../../Zotlabs/Module/Setup.php:614 msgid "" "This software uses the store directory to save uploaded files. The web " -"server needs to have write access to the store directory under the Red top " -"level folder" +"server needs to have write access to the store directory under the top level " +"web folder" msgstr "" -#: ../../Zotlabs/Module/Setup.php:608 +#: ../../Zotlabs/Module/Setup.php:618 msgid "store is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:641 +#: ../../Zotlabs/Module/Setup.php:651 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access " "to this site." msgstr "" -#: ../../Zotlabs/Module/Setup.php:642 +#: ../../Zotlabs/Module/Setup.php:652 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "" -#: ../../Zotlabs/Module/Setup.php:643 +#: ../../Zotlabs/Module/Setup.php:653 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "" -#: ../../Zotlabs/Module/Setup.php:644 +#: ../../Zotlabs/Module/Setup.php:654 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "" -#: ../../Zotlabs/Module/Setup.php:645 +#: ../../Zotlabs/Module/Setup.php:655 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "" -#: ../../Zotlabs/Module/Setup.php:646 +#: ../../Zotlabs/Module/Setup.php:656 msgid "" "Providers are available that issue free certificates which are browser-valid." msgstr "" -#: ../../Zotlabs/Module/Setup.php:648 +#: ../../Zotlabs/Module/Setup.php:658 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -4508,204 +5033,48 @@ msgid "" "server communications." msgstr "" -#: ../../Zotlabs/Module/Setup.php:650 +#: ../../Zotlabs/Module/Setup.php:660 msgid "SSL certificate validation" msgstr "" -#: ../../Zotlabs/Module/Setup.php:656 +#: ../../Zotlabs/Module/Setup.php:666 msgid "" "Url rewrite in .htaccess is not working. Check your server configuration." "Test: " msgstr "" -#: ../../Zotlabs/Module/Setup.php:659 +#: ../../Zotlabs/Module/Setup.php:669 msgid "Url rewrite is working" msgstr "" -#: ../../Zotlabs/Module/Setup.php:673 +#: ../../Zotlabs/Module/Setup.php:683 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "" -#: ../../Zotlabs/Module/Setup.php:697 -#: ../../extend/addon/addon/cdav/cdav.php:40 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:352 +#: ../../Zotlabs/Module/Setup.php:707 +#: ../../extend/addon/addon/cdav/cdav.php:41 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:392 msgid "Errors encountered creating database tables." msgstr "" -#: ../../Zotlabs/Module/Setup.php:738 +#: ../../Zotlabs/Module/Setup.php:748 msgid "<h1>What next</h1>" msgstr "" -#: ../../Zotlabs/Module/Setup.php:739 +#: ../../Zotlabs/Module/Setup.php:749 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the poller." msgstr "" -#: ../../Zotlabs/Module/Network.php:96 -msgid "No such group" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:136 -msgid "No such channel" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:141 -msgid "forum" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:153 -msgid "Search Results For:" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:221 -msgid "Privacy group is empty" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:230 -msgid "Privacy group: " -msgstr "" - -#: ../../Zotlabs/Module/Network.php:256 -msgid "Invalid connection." -msgstr "" - -#: ../../Zotlabs/Module/New_channel.php:140 -msgid "Create Channel" -msgstr "" - -#: ../../Zotlabs/Module/New_channel.php:141 -msgid "" -"A channel is your identity on this network. It can represent a person, a " -"blog, or a forum to name a few. Channels can make connections with other " -"channels to share information with highly detailed permissions." -msgstr "" - -#: ../../Zotlabs/Module/New_channel.php:142 -msgid "" -"or <a href=\"import\">import an existing channel</a> from another location." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:38 -msgid "Unable to lookup recipient." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:45 -msgid "Unable to communicate with requested channel." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:52 -msgid "Cannot verify requested channel." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:70 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:149 -msgid "Messages" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:184 -msgid "Message recalled." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:197 -msgid "Conversation removed." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:211 ../../Zotlabs/Module/Mail.php:320 -#: ../../Zotlabs/Module/Chat.php:205 ../../include/conversation.php:1200 -msgid "Please enter a link URL:" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:212 ../../Zotlabs/Module/Mail.php:321 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:240 -msgid "Requested channel is not in this network" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:248 -msgid "Send Private Message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:249 ../../Zotlabs/Module/Mail.php:374 -msgid "To:" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:252 ../../Zotlabs/Module/Mail.php:376 -msgid "Subject:" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:255 ../../Zotlabs/Module/Invite.php:138 -msgid "Your message:" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:257 ../../Zotlabs/Module/Mail.php:382 -#: ../../include/conversation.php:1260 -msgid "Attach file" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:259 -msgid "Send" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:262 ../../Zotlabs/Module/Mail.php:387 -#: ../../include/conversation.php:1305 -msgid "Set expiration date" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:264 ../../Zotlabs/Module/Mail.php:389 -#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Lib/ThreadItem.php:741 -#: ../../include/conversation.php:1310 -msgid "Encrypt text" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:346 -msgid "Delete message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:347 -msgid "Delivery report" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:348 -msgid "Recall message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:350 -msgid "Message has been recalled." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:367 -msgid "Delete Conversation" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:369 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:373 -msgid "Send Reply" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:378 -#, php-format -msgid "Your message for %s (%s):" -msgstr "" - -#: ../../Zotlabs/Module/Notifications.php:40 ../../include/nav.php:196 +#: ../../Zotlabs/Module/Notifications.php:40 ../../include/nav.php:194 msgid "Mark all system notifications seen" msgstr "" -#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:228 -#: ../../include/conversation.php:975 +#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:230 +#: ../../include/conversation.php:942 ../../include/conversation.php:1109 msgid "Poke" msgstr "" @@ -4733,71 +5102,6 @@ msgstr "" msgid "Make this post private" msgstr "" -#: ../../Zotlabs/Module/Invite.php:29 -msgid "Total invitation limit exceeded." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:53 -#, php-format -msgid "%s : Not a valid email address." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:67 -msgid "Please join us on $Projectname" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:77 -msgid "Invitation limit exceeded. Please contact your site administrator." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:82 -#, php-format -msgid "%s : Message delivery failed." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:86 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "" -msgstr[1] "" - -#: ../../Zotlabs/Module/Invite.php:105 -msgid "You have no more invitations available" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:136 -msgid "Send invitations" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:137 -msgid "Enter email addresses, one per line:" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:139 -msgid "Please join my community on $Projectname." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:141 -msgid "You will need to supply this invitation code:" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:142 -msgid "1. Register at any $Projectname location (they are all inter-connected)" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:144 -msgid "2. Enter my $Projectname network address into the site searchbar." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:145 -msgid "or visit" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:147 -msgid "3. Click [Connect]" -msgstr "" - #: ../../Zotlabs/Module/Oexchange.php:27 msgid "Unable to find your hub." msgstr "" @@ -4821,65 +5125,12 @@ msgid "" "to correctly use this feature." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:19 -#, php-format -msgid "Version %s" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Installed plugins/addons/apps:" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:36 -msgid "No installed plugins/addons/apps" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:49 -msgid "" -"This is a hub of $Projectname - a global cooperative network of " -"decentralized privacy enhanced websites." -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:51 -msgid "Tag: " -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:53 -msgid "Last background fetch: " -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:55 -msgid "Current load average: " -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:58 -msgid "Running at web location" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:59 -msgid "" -"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more " -"about $Projectname." -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:60 -msgid "Bug reports and issues: please visit" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:62 -msgid "$projectname issues" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:63 -msgid "" -"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:65 -msgid "Site Administrators" +#: ../../Zotlabs/Module/Apps.php:46 ../../include/nav.php:166 +#: ../../include/widgets.php:102 +msgid "Apps" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2311 +#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2283 msgid "Blocks" msgstr "" @@ -4887,19 +5138,13 @@ msgstr "" msgid "Block Title" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Layouts.php:197 -#: ../../Zotlabs/Module/Events.php:685 ../../Zotlabs/Module/Pubsites.php:59 -#: ../../Zotlabs/Module/Webpages.php:246 ../../include/page_widgets.php:42 -msgid "View" -msgstr "" - -#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2313 +#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2285 msgid "Layouts" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:225 -#: ../../include/help.php:53 ../../include/help.php:58 -#: ../../include/nav.php:164 +#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:227 +#: ../../include/nav.php:162 ../../include/help.php:53 +#: ../../include/help.php:59 msgid "Help" msgstr "" @@ -4915,11 +5160,6 @@ msgstr "" msgid "Download PDL file" msgstr "" -#: ../../Zotlabs/Module/Rate.php:155 ../../Zotlabs/Module/Connedit.php:763 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "" - #: ../../Zotlabs/Module/Rate.php:156 msgid "Website:" msgstr "" @@ -4958,18 +5198,6 @@ msgstr "" msgid "Use" msgstr "" -#: ../../Zotlabs/Module/Common.php:14 -msgid "No channel." -msgstr "" - -#: ../../Zotlabs/Module/Common.php:43 -msgid "Common connections" -msgstr "" - -#: ../../Zotlabs/Module/Common.php:48 -msgid "No connections in common." -msgstr "" - #: ../../Zotlabs/Module/Events.php:25 msgid "Calendar entries imported." msgstr "" @@ -4978,175 +5206,182 @@ msgstr "" msgid "No calendar entries found." msgstr "" -#: ../../Zotlabs/Module/Events.php:106 +#: ../../Zotlabs/Module/Events.php:110 msgid "Event can not end before it has started." msgstr "" -#: ../../Zotlabs/Module/Events.php:108 ../../Zotlabs/Module/Events.php:117 -#: ../../Zotlabs/Module/Events.php:139 +#: ../../Zotlabs/Module/Events.php:112 ../../Zotlabs/Module/Events.php:121 +#: ../../Zotlabs/Module/Events.php:143 msgid "Unable to generate preview." msgstr "" -#: ../../Zotlabs/Module/Events.php:115 +#: ../../Zotlabs/Module/Events.php:119 msgid "Event title and start time are required." msgstr "" -#: ../../Zotlabs/Module/Events.php:137 ../../Zotlabs/Module/Events.php:261 +#: ../../Zotlabs/Module/Events.php:141 ../../Zotlabs/Module/Events.php:265 msgid "Event not found." msgstr "" -#: ../../Zotlabs/Module/Events.php:453 +#: ../../Zotlabs/Module/Events.php:460 msgid "Edit event title" msgstr "" -#: ../../Zotlabs/Module/Events.php:453 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:831 +#: ../../Zotlabs/Module/Events.php:460 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:835 msgid "Event title" msgstr "" -#: ../../Zotlabs/Module/Events.php:455 +#: ../../Zotlabs/Module/Events.php:462 msgid "Categories (comma-separated list)" msgstr "" -#: ../../Zotlabs/Module/Events.php:456 +#: ../../Zotlabs/Module/Events.php:463 msgid "Edit Category" msgstr "" -#: ../../Zotlabs/Module/Events.php:456 +#: ../../Zotlabs/Module/Events.php:463 msgid "Category" msgstr "" -#: ../../Zotlabs/Module/Events.php:459 +#: ../../Zotlabs/Module/Events.php:466 msgid "Edit start date and time" msgstr "" -#: ../../Zotlabs/Module/Events.php:459 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:832 +#: ../../Zotlabs/Module/Events.php:466 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 msgid "Start date and time" msgstr "" -#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:463 +#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:470 msgid "Finish date and time are not known or not relevant" msgstr "" -#: ../../Zotlabs/Module/Events.php:462 +#: ../../Zotlabs/Module/Events.php:469 msgid "Edit finish date and time" msgstr "" -#: ../../Zotlabs/Module/Events.php:462 +#: ../../Zotlabs/Module/Events.php:469 msgid "Finish date and time" msgstr "" -#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Events.php:465 +#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Events.php:472 msgid "Adjust for viewer timezone" msgstr "" -#: ../../Zotlabs/Module/Events.php:464 +#: ../../Zotlabs/Module/Events.php:471 msgid "" "Important for events that happen in a particular place. Not practical for " "global holidays." msgstr "" -#: ../../Zotlabs/Module/Events.php:466 +#: ../../Zotlabs/Module/Events.php:473 msgid "Edit Description" msgstr "" -#: ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Events.php:475 msgid "Edit Location" msgstr "" -#: ../../Zotlabs/Module/Events.php:472 ../../include/conversation.php:1280 +#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1410 msgid "Permission settings" msgstr "" -#: ../../Zotlabs/Module/Events.php:485 -msgid "Advanced Options" +#: ../../Zotlabs/Module/Events.php:489 +msgid "Timezone:" msgstr "" -#: ../../Zotlabs/Module/Events.php:596 ../../Zotlabs/Module/Cal.php:259 -msgid "l, F j" +#: ../../Zotlabs/Module/Events.php:494 +msgid "Advanced Options" msgstr "" -#: ../../Zotlabs/Module/Events.php:624 +#: ../../Zotlabs/Module/Events.php:633 msgid "Edit event" msgstr "" -#: ../../Zotlabs/Module/Events.php:626 +#: ../../Zotlabs/Module/Events.php:635 msgid "Delete event" msgstr "" -#: ../../Zotlabs/Module/Events.php:651 ../../Zotlabs/Module/Cal.php:308 -#: ../../include/text.php:1792 -msgid "Link to Source" +#: ../../Zotlabs/Module/Events.php:669 +msgid "calendar" msgstr "" -#: ../../Zotlabs/Module/Events.php:660 -msgid "calendar" +#: ../../Zotlabs/Module/Events.php:695 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:849 +msgid "Month" msgstr "" -#: ../../Zotlabs/Module/Events.php:679 ../../Zotlabs/Module/Cal.php:331 -msgid "Edit Event" +#: ../../Zotlabs/Module/Events.php:696 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:850 +msgid "Week" msgstr "" -#: ../../Zotlabs/Module/Events.php:679 ../../Zotlabs/Module/Cal.php:331 -msgid "Create Event" +#: ../../Zotlabs/Module/Events.php:697 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:851 +msgid "Day" msgstr "" -#: ../../Zotlabs/Module/Events.php:682 ../../Zotlabs/Module/Cal.php:334 -msgid "Export" +#: ../../Zotlabs/Module/Events.php:731 +msgid "Event removed" msgstr "" -#: ../../Zotlabs/Module/Events.php:686 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:845 -msgid "Month" +#: ../../Zotlabs/Module/Events.php:734 +msgid "Failed to remove event" msgstr "" -#: ../../Zotlabs/Module/Events.php:687 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:846 -msgid "Week" +#: ../../Zotlabs/Module/Common.php:14 +msgid "No channel." msgstr "" -#: ../../Zotlabs/Module/Events.php:688 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847 -msgid "Day" +#: ../../Zotlabs/Module/Common.php:43 +msgid "Common connections" msgstr "" -#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:844 -msgid "Today" +#: ../../Zotlabs/Module/Common.php:48 +msgid "No connections in common." msgstr "" -#: ../../Zotlabs/Module/Events.php:722 -msgid "Event removed" +#: ../../Zotlabs/Module/Chanview.php:134 +msgid "toggle full screen mode" msgstr "" -#: ../../Zotlabs/Module/Events.php:725 -msgid "Failed to remove event" +#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." msgstr "" -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:222 -#: ../../include/nav.php:95 ../../include/conversation.php:1693 -msgid "Photos" +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Profile Visibility Editor" msgstr "" -#: ../../Zotlabs/Module/Ping.php:254 -msgid "sent you a private message" +#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1282 +msgid "Profile" msgstr "" -#: ../../Zotlabs/Module/Ping.php:302 -msgid "added your channel" +#: ../../Zotlabs/Module/Profperm.php:119 +msgid "Click on a contact to add or remove." msgstr "" -#: ../../Zotlabs/Module/Ping.php:312 -msgid "g A l F d" +#: ../../Zotlabs/Module/Profperm.php:128 +msgid "Visible To" msgstr "" -#: ../../Zotlabs/Module/Ping.php:330 -msgid "[today]" +#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Wiki.php:20 +#: ../../Zotlabs/Module/Chat.php:25 +#: ../../extend/addon/addon/chess/chess.php:400 +msgid "You must be logged in to see this page." msgstr "" -#: ../../Zotlabs/Module/Ping.php:339 -msgid "posted an event" +#: ../../Zotlabs/Module/Channel.php:44 +msgid "Posts and comments" +msgstr "" + +#: ../../Zotlabs/Module/Channel.php:45 +msgid "Only posts" +msgstr "" + +#: ../../Zotlabs/Module/Channel.php:104 +msgid "Insufficient permissions. Request redirected to profile page." msgstr "" #: ../../Zotlabs/Module/Lostpass.php:19 @@ -5173,7 +5408,7 @@ msgid "" "Password reset failed." msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1723 +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1728 msgid "Password Reset" msgstr "" @@ -5238,6 +5473,10 @@ msgstr "" msgid "Or enter new bookmark folder name" msgstr "" +#: ../../Zotlabs/Module/Follow.php:31 +msgid "Channel added." +msgstr "" + #: ../../Zotlabs/Module/Rmagic.php:35 msgid "Authentication failed." msgstr "" @@ -5388,330 +5627,118 @@ msgid "" "or restore these in date order (oldest first)." msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1391 -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:48 -msgid "Rate" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:80 -msgid "Could not access contact record." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:104 -msgid "Could not locate selected profile." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:256 -msgid "Connection updated." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:258 -msgid "Failed to update connection record." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:308 -msgid "is now connected to" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:440 -msgid "Could not access address book record." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:460 -msgid "Refresh failed - channel is currently unavailable." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:475 ../../Zotlabs/Module/Connedit.php:484 -#: ../../Zotlabs/Module/Connedit.php:493 ../../Zotlabs/Module/Connedit.php:502 -#: ../../Zotlabs/Module/Connedit.php:515 -msgid "Unable to set address book parameters." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:539 -msgid "Connection has been removed." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:555 ../../Zotlabs/Lib/Apps.php:221 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 -#: ../../include/nav.php:89 ../../include/conversation.php:969 -msgid "View Profile" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:558 +#: ../../Zotlabs/Module/Directory.php:246 #, php-format -msgid "View %s's profile" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:562 -msgid "Refresh Permissions" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:565 -msgid "Fetch updated permissions" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:569 -msgid "Recent Activity" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:572 -msgid "View recent posts and comments" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:579 -msgid "Block (or Unblock) all communications with this connection" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:580 -msgid "This connection is blocked!" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:584 -msgid "Unignore" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:587 -msgid "Ignore (or Unignore) all inbound communications from this connection" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:588 -msgid "This connection is ignored!" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:592 -msgid "Unarchive" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:592 -msgid "Archive" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:595 -msgid "" -"Archive (or Unarchive) this connection - mark channel dead but keep content" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:596 -msgid "This connection is archived!" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:600 -msgid "Unhide" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:600 -msgid "Hide" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:603 -msgid "Hide or Unhide this connection from your other connections" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:604 -msgid "This connection is hidden!" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:611 -msgid "Delete this connection" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:626 ../../include/widgets.php:529 -msgid "Me" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:627 ../../include/widgets.php:530 -msgid "Family" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:628 -#: ../../Zotlabs/Module/Settings/Channel.php:61 -#: ../../Zotlabs/Module/Settings/Channel.php:65 -#: ../../Zotlabs/Module/Settings/Channel.php:66 -#: ../../Zotlabs/Module/Settings/Channel.php:69 -#: ../../Zotlabs/Module/Settings/Channel.php:80 ../../include/channel.php:402 -#: ../../include/channel.php:403 ../../include/channel.php:410 -#: ../../include/selectors.php:123 ../../include/widgets.php:531 -msgid "Friends" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/widgets.php:532 -msgid "Acquaintances" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:687 -msgid "Approve this connection" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:687 -msgid "Accept connection to allow communication" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:692 -msgid "Set Affinity" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:695 -msgid "Set Profile" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:698 -msgid "Set Affinity & Profile" -msgstr "" +msgid "%d rating" +msgid_plural "%d ratings" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Connedit.php:747 -msgid "none" +#: ../../Zotlabs/Module/Directory.php:257 +msgid "Gender: " msgstr "" -#: ../../Zotlabs/Module/Connedit.php:751 ../../include/widgets.php:656 -msgid "Connection Default Permissions" +#: ../../Zotlabs/Module/Directory.php:259 +msgid "Status: " msgstr "" -#: ../../Zotlabs/Module/Connedit.php:751 ../../include/items.php:3977 -#, php-format -msgid "Connection: %s" +#: ../../Zotlabs/Module/Directory.php:261 +msgid "Homepage: " msgstr "" -#: ../../Zotlabs/Module/Connedit.php:752 -msgid "Apply these permissions automatically" +#: ../../Zotlabs/Module/Directory.php:310 ../../include/channel.php:1215 +msgid "Age:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:752 -msgid "Connection requests will be approved without your interaction" +#: ../../Zotlabs/Module/Directory.php:315 ../../include/event.php:52 +#: ../../include/event.php:84 ../../include/bb2diaspora.php:526 +#: ../../include/channel.php:1051 +msgid "Location:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:754 -msgid "This connection's primary address is" +#: ../../Zotlabs/Module/Directory.php:321 +msgid "Description:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:755 -msgid "Available locations:" +#: ../../Zotlabs/Module/Directory.php:326 ../../include/channel.php:1231 +msgid "Hometown:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:759 -msgid "" -"The permissions indicated on this page will be applied to all new " -"connections." +#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1239 +msgid "About:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:760 -msgid "Connection Tools" +#: ../../Zotlabs/Module/Directory.php:330 +msgid "Public Forum:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:762 -msgid "Slide to adjust your degree of friendship" +#: ../../Zotlabs/Module/Directory.php:333 +msgid "Keywords: " msgstr "" -#: ../../Zotlabs/Module/Connedit.php:764 -msgid "Slide to adjust your rating" +#: ../../Zotlabs/Module/Directory.php:336 +msgid "Don't suggest" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:765 ../../Zotlabs/Module/Connedit.php:770 -msgid "Optionally explain your rating" +#: ../../Zotlabs/Module/Directory.php:338 +msgid "Common connections:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:767 -msgid "Custom Filter" +#: ../../Zotlabs/Module/Directory.php:387 +msgid "Global Directory" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:768 -msgid "Only import posts with this text" +#: ../../Zotlabs/Module/Directory.php:387 +msgid "Local Directory" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:768 ../../Zotlabs/Module/Connedit.php:769 -msgid "" -"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " -"all posts" +#: ../../Zotlabs/Module/Directory.php:393 +msgid "Finding:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:769 -msgid "Do not import posts with this text" +#: ../../Zotlabs/Module/Directory.php:396 ../../Zotlabs/Module/Suggest.php:64 +#: ../../include/contact_widgets.php:24 +msgid "Channel Suggestions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:771 -msgid "This information is public!" +#: ../../Zotlabs/Module/Directory.php:398 +msgid "next page" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:776 -msgid "Connection Pending Approval" +#: ../../Zotlabs/Module/Directory.php:398 +msgid "previous page" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:779 -#: ../../Zotlabs/Module/Settings/Tokens.php:163 -msgid "inherited" +#: ../../Zotlabs/Module/Directory.php:399 +msgid "Sort options" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:781 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." +#: ../../Zotlabs/Module/Directory.php:400 +msgid "Alphabetic" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:783 -#: ../../Zotlabs/Module/Settings/Tokens.php:160 -msgid "Their Settings" +#: ../../Zotlabs/Module/Directory.php:401 +msgid "Reverse Alphabetic" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:784 -#: ../../Zotlabs/Module/Settings/Tokens.php:161 -msgid "My Settings" +#: ../../Zotlabs/Module/Directory.php:402 +msgid "Newest to Oldest" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:786 -#: ../../Zotlabs/Module/Settings/Tokens.php:165 -msgid "Individual Permissions" +#: ../../Zotlabs/Module/Directory.php:403 +msgid "Oldest to Newest" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:787 -#: ../../Zotlabs/Module/Settings/Tokens.php:166 -msgid "" -"Some permissions may be inherited from your channel's <a href=\"settings" -"\"><strong>privacy settings</strong></a>, which have higher priority than " -"individual settings. You can <strong>not</strong> change those settings here." +#: ../../Zotlabs/Module/Directory.php:420 +msgid "No entries (some entries may be hidden)." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:788 -msgid "" -"Some permissions may be inherited from your channel's <a href=\"settings" -"\"><strong>privacy settings</strong></a>, which have higher priority than " -"individual settings. You can change those settings here but they wont have " -"any impact unless the inherited setting changes." +#: ../../Zotlabs/Module/Chatsvc.php:131 +msgid "Away" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:789 -msgid "Last update:" +#: ../../Zotlabs/Module/Chatsvc.php:136 +msgid "Online" msgstr "" #: ../../Zotlabs/Module/Service_limits.php:23 @@ -5734,40 +5761,40 @@ msgstr "" msgid "Export selected" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:218 -#: ../../include/nav.php:109 ../../include/conversation.php:1746 +#: ../../Zotlabs/Module/Webpages.php:241 ../../Zotlabs/Lib/Apps.php:220 +#: ../../include/nav.php:109 ../../include/conversation.php:1889 msgid "Webpages" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:248 ../../include/page_widgets.php:44 +#: ../../Zotlabs/Module/Webpages.php:252 ../../include/page_widgets.php:44 msgid "Actions" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:249 ../../include/page_widgets.php:45 +#: ../../Zotlabs/Module/Webpages.php:253 ../../include/page_widgets.php:45 msgid "Page Link" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:250 +#: ../../Zotlabs/Module/Webpages.php:254 msgid "Page Title" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:280 +#: ../../Zotlabs/Module/Webpages.php:284 msgid "Invalid file type." msgstr "" -#: ../../Zotlabs/Module/Webpages.php:292 +#: ../../Zotlabs/Module/Webpages.php:296 msgid "Error opening zip file" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:303 +#: ../../Zotlabs/Module/Webpages.php:307 msgid "Invalid folder path." msgstr "" -#: ../../Zotlabs/Module/Webpages.php:330 +#: ../../Zotlabs/Module/Webpages.php:334 msgid "No webpage elements detected." msgstr "" -#: ../../Zotlabs/Module/Webpages.php:405 +#: ../../Zotlabs/Module/Webpages.php:409 msgid "Import complete." msgstr "" @@ -5796,7 +5823,7 @@ msgid "" msgstr "" #: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:544 +#: ../../Zotlabs/Module/Settings/Channel.php:549 msgid "Remove Channel" msgstr "" @@ -5820,79 +5847,124 @@ msgstr "" msgid "Not found" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:126 ../../Zotlabs/Lib/Apps.php:219 -#: ../../include/features.php:99 ../../include/nav.php:111 -#: ../../include/conversation.php:1756 ../../include/conversation.php:1759 -msgid "Wiki" +#: ../../Zotlabs/Module/Wiki.php:55 +msgid "Invalid channel" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:127 -msgid "Sandbox" +#: ../../Zotlabs/Module/Wiki.php:100 +msgid "Error retrieving wiki" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:129 -msgid "" -"\"# Wiki Sandbox\\n\\nContent you **edit** and **preview** here *will not be " -"saved*.\"" +#: ../../Zotlabs/Module/Wiki.php:107 +msgid "Error creating zip file export folder" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:198 -msgid "Revision Comparison" +#: ../../Zotlabs/Module/Wiki.php:125 +msgid "Error downloading wiki: " msgstr "" -#: ../../Zotlabs/Module/Wiki.php:199 -msgid "Revert" +#: ../../Zotlabs/Module/Wiki.php:139 ../../include/nav.php:111 +#: ../../include/conversation.php:1900 +msgid "Wikis" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:145 +msgid "Download" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:230 -msgid "Enter the name of your new wiki:" +#: ../../Zotlabs/Module/Wiki.php:149 +msgid "Wiki name" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:231 -msgid "Enter the name of the new page:" +#: ../../Zotlabs/Module/Wiki.php:150 +msgid "Content type" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:232 -msgid "Enter the new name:" +#: ../../Zotlabs/Module/Wiki.php:159 +msgid "Create a status post for this wiki" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:238 ../../include/conversation.php:1169 +#: ../../Zotlabs/Module/Wiki.php:178 +msgid "Wiki not found" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:203 +msgid "Rename page" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:207 +msgid "Error retrieving page content" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:236 +msgid "Revision Comparison" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:237 +msgid "Revert" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:246 +msgid "Source" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:254 +msgid "New page name" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:259 ../../include/conversation.php:1299 msgid "Embed image from photo albums" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:239 ../../include/conversation.php:1263 +#: ../../Zotlabs/Module/Wiki.php:260 ../../include/conversation.php:1393 msgid "Embed an image from your albums" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:241 ../../include/conversation.php:1265 -#: ../../include/conversation.php:1312 +#: ../../Zotlabs/Module/Wiki.php:262 ../../include/conversation.php:1395 +#: ../../include/conversation.php:1442 msgid "OK" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:242 ../../include/conversation.php:1205 +#: ../../Zotlabs/Module/Wiki.php:263 ../../include/conversation.php:1335 msgid "Choose images to embed" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:243 ../../include/conversation.php:1206 +#: ../../Zotlabs/Module/Wiki.php:264 ../../include/conversation.php:1336 msgid "Choose an album" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:244 ../../include/conversation.php:1207 -msgid "Choose a different album..." +#: ../../Zotlabs/Module/Wiki.php:265 +msgid "Choose a different album" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:245 ../../include/conversation.php:1208 +#: ../../Zotlabs/Module/Wiki.php:266 ../../include/conversation.php:1338 msgid "Error getting album list" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:246 ../../include/conversation.php:1209 +#: ../../Zotlabs/Module/Wiki.php:267 ../../include/conversation.php:1339 msgid "Error getting photo link" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:247 ../../include/conversation.php:1210 +#: ../../Zotlabs/Module/Wiki.php:268 ../../include/conversation.php:1340 msgid "Error getting album" msgstr "" +#: ../../Zotlabs/Module/Wiki.php:332 +msgid "Error creating wiki. Invalid name." +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:343 +msgid "Wiki created, but error creating Home page." +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:348 +msgid "Error creating wiki" +msgstr "" + +#: ../../Zotlabs/Module/Wiki.php:394 +msgid "New page created" +msgstr "" + #: ../../Zotlabs/Module/Sources.php:37 msgid "Failed to create source. No channel selected." msgstr "" @@ -5909,7 +5981,7 @@ msgstr "" msgid "*" msgstr "" -#: ../../Zotlabs/Module/Sources.php:96 ../../include/features.php:195 +#: ../../Zotlabs/Module/Sources.php:96 ../../include/features.php:204 #: ../../include/widgets.php:672 msgid "Channel Sources" msgstr "" @@ -5995,7 +6067,7 @@ msgstr "" msgid "post" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1992 +#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1961 #: ../../include/conversation.php:150 msgid "comment" msgstr "" @@ -6081,49 +6153,6 @@ msgstr "" msgid "Remove authorization" msgstr "" -#: ../../Zotlabs/Module/Settings/Tokens.php:31 -#, php-format -msgid "This channel is limited to %d tokens" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Tokens.php:37 -msgid "Name and Password are required." -msgstr "" - -#: ../../Zotlabs/Module/Settings/Tokens.php:77 -msgid "Token saved." -msgstr "" - -#: ../../Zotlabs/Module/Settings/Tokens.php:113 -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/Settings/Tokens.php:115 -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/Settings/Tokens.php:150 ../../include/widgets.php:647 -msgid "Guest Access Tokens" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Tokens.php:157 -msgid "Login Name" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Tokens.php:158 -msgid "Login Password" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Tokens.php:159 -msgid "Expires (yyyy-mm-dd)" -msgstr "" - #: ../../Zotlabs/Module/Settings/Account.php:20 msgid "Not valid email." msgstr "" @@ -6189,7 +6218,7 @@ msgid "Used to provide a member experience matched to your comfort level" msgstr "" #: ../../Zotlabs/Module/Settings/Account.php:119 -#: ../../Zotlabs/Module/Settings/Channel.php:459 +#: ../../Zotlabs/Module/Settings/Channel.php:462 msgid "Email Address:" msgstr "" @@ -6252,324 +6281,324 @@ msgstr "" msgid "Your channel address is" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:450 +#: ../../Zotlabs/Module/Settings/Channel.php:407 +msgid "Your files/photos are accessible via WebDAV at" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Channel.php:453 msgid "Channel Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:457 +#: ../../Zotlabs/Module/Settings/Channel.php:460 msgid "Basic Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:458 +#: ../../Zotlabs/Module/Settings/Channel.php:461 #: ../../include/channel.php:1172 msgid "Full Name:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:460 +#: ../../Zotlabs/Module/Settings/Channel.php:463 msgid "Your Timezone:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../Zotlabs/Module/Settings/Channel.php:464 msgid "Default Post Location:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../Zotlabs/Module/Settings/Channel.php:464 msgid "Geographical location to display on your posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:462 +#: ../../Zotlabs/Module/Settings/Channel.php:465 msgid "Use Browser Location:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:464 +#: ../../Zotlabs/Module/Settings/Channel.php:467 msgid "Adult Content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:464 +#: ../../Zotlabs/Module/Settings/Channel.php:467 msgid "" "This channel frequently or regularly publishes adult content. (Please tag " "any adult material and/or nudity with #NSFW)" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:466 +#: ../../Zotlabs/Module/Settings/Channel.php:469 msgid "Security and Privacy Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:469 +#: ../../Zotlabs/Module/Settings/Channel.php:472 msgid "Your permissions are already configured. Click to view/adjust" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:474 msgid "Hide my online presence" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:474 msgid "Prevents displaying in your profile that you are online" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:473 +#: ../../Zotlabs/Module/Settings/Channel.php:476 msgid "Simple Privacy Settings:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:474 +#: ../../Zotlabs/Module/Settings/Channel.php:477 msgid "" "Very Public - <em>extremely permissive (should be used with caution)</em>" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:475 +#: ../../Zotlabs/Module/Settings/Channel.php:478 msgid "" "Typical - <em>default public, privacy when desired (similar to social " "network permissions but with improved privacy)</em>" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:476 +#: ../../Zotlabs/Module/Settings/Channel.php:479 msgid "Private - <em>default private, never open or public</em>" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:477 +#: ../../Zotlabs/Module/Settings/Channel.php:480 msgid "Blocked - <em>default blocked to/from everybody</em>" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:479 +#: ../../Zotlabs/Module/Settings/Channel.php:482 msgid "Allow others to tag your posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:479 +#: ../../Zotlabs/Module/Settings/Channel.php:482 msgid "" "Often used by the community to retro-actively flag inappropriate content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:481 +#: ../../Zotlabs/Module/Settings/Channel.php:484 msgid "Channel Permission Limits" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "Expire other channel content after this many days" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "0 or blank to use the website limit." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 #, php-format msgid "This website expires after %d days." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "This website does not expire imported content." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "The website limit takes precedence if lower than your limit." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:484 +#: ../../Zotlabs/Module/Settings/Channel.php:487 msgid "Maximum Friend Requests/Day:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:484 +#: ../../Zotlabs/Module/Settings/Channel.php:487 msgid "May reduce spam activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:485 +#: ../../Zotlabs/Module/Settings/Channel.php:488 msgid "Default Access Control List (ACL)" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:487 +#: ../../Zotlabs/Module/Settings/Channel.php:490 msgid "Use my default audience setting for the type of object published" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:494 +#: ../../Zotlabs/Module/Settings/Channel.php:497 msgid "Channel permissions category:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Useful to reduce spamming" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:503 +#: ../../Zotlabs/Module/Settings/Channel.php:506 msgid "Notification Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:504 +#: ../../Zotlabs/Module/Settings/Channel.php:507 msgid "By default post a status message when:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:505 +#: ../../Zotlabs/Module/Settings/Channel.php:508 msgid "accepting a friend request" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:506 +#: ../../Zotlabs/Module/Settings/Channel.php:509 msgid "joining a forum/community" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:507 +#: ../../Zotlabs/Module/Settings/Channel.php:510 msgid "making an <em>interesting</em> profile change" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:508 +#: ../../Zotlabs/Module/Settings/Channel.php:511 msgid "Send a notification email when:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:509 +#: ../../Zotlabs/Module/Settings/Channel.php:512 msgid "You receive a connection request" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:510 +#: ../../Zotlabs/Module/Settings/Channel.php:513 msgid "Your connections are confirmed" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:511 +#: ../../Zotlabs/Module/Settings/Channel.php:514 msgid "Someone writes on your profile wall" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:512 +#: ../../Zotlabs/Module/Settings/Channel.php:515 msgid "Someone writes a followup comment" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:513 +#: ../../Zotlabs/Module/Settings/Channel.php:516 msgid "You receive a private message" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:514 +#: ../../Zotlabs/Module/Settings/Channel.php:517 msgid "You receive a friend suggestion" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:515 +#: ../../Zotlabs/Module/Settings/Channel.php:518 msgid "You are tagged in a post" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:516 +#: ../../Zotlabs/Module/Settings/Channel.php:519 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:519 +#: ../../Zotlabs/Module/Settings/Channel.php:521 +msgid "Someone likes your post/comment" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Channel.php:524 msgid "Show visual notifications including:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:521 +#: ../../Zotlabs/Module/Settings/Channel.php:526 msgid "Unseen grid activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:522 +#: ../../Zotlabs/Module/Settings/Channel.php:527 msgid "Unseen channel activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 +#: ../../Zotlabs/Module/Settings/Channel.php:528 msgid "Unseen private messages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 #: ../../Zotlabs/Module/Settings/Channel.php:528 -#: ../../Zotlabs/Module/Settings/Channel.php:529 -#: ../../Zotlabs/Module/Settings/Channel.php:530 +#: ../../Zotlabs/Module/Settings/Channel.php:533 +#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:535 #: ../../extend/addon/addon/jappixmini/jappixmini.php:343 msgid "Recommended" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:529 msgid "Upcoming events" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:525 +#: ../../Zotlabs/Module/Settings/Channel.php:530 msgid "Events today" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:531 msgid "Upcoming birthdays" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:531 msgid "Not available in all themes" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:527 +#: ../../Zotlabs/Module/Settings/Channel.php:532 msgid "System (personal) notifications" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:528 +#: ../../Zotlabs/Module/Settings/Channel.php:533 msgid "System info messages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:529 +#: ../../Zotlabs/Module/Settings/Channel.php:534 msgid "System critical alerts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:530 +#: ../../Zotlabs/Module/Settings/Channel.php:535 msgid "New connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:531 +#: ../../Zotlabs/Module/Settings/Channel.php:536 msgid "System Registrations" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:532 +#: ../../Zotlabs/Module/Settings/Channel.php:537 msgid "" "Also show new wall posts, private messages and connections under Notices" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:539 msgid "Notify me of events this many days in advance" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:539 msgid "Must be greater than 0" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:536 +#: ../../Zotlabs/Module/Settings/Channel.php:541 msgid "Advanced Account/Page Type Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:537 +#: ../../Zotlabs/Module/Settings/Channel.php:542 msgid "Change the behaviour of this account for special situations" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:539 +#: ../../Zotlabs/Module/Settings/Channel.php:544 msgid "Miscellaneous Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:540 +#: ../../Zotlabs/Module/Settings/Channel.php:545 msgid "Default photo upload folder" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:540 -#: ../../Zotlabs/Module/Settings/Channel.php:541 +#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Module/Settings/Channel.php:546 msgid "%Y - current year, %m - current month" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:541 +#: ../../Zotlabs/Module/Settings/Channel.php:546 msgid "Default file upload folder" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:543 +#: ../../Zotlabs/Module/Settings/Channel.php:548 msgid "Personal menu to display in your channel pages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Module/Settings/Channel.php:550 msgid "Remove this channel." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:546 +#: ../../Zotlabs/Module/Settings/Channel.php:551 msgid "Firefox Share $Projectname provider" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:547 +#: ../../Zotlabs/Module/Settings/Channel.php:552 msgid "Start calendar week on monday" msgstr "" -#: ../../Zotlabs/Module/Settings/Featured.php:24 -msgid "No feature settings configured" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Featured.php:31 -msgid "Feature/Addon Settings" -msgstr "" - #: ../../Zotlabs/Module/Settings/Display.php:137 msgid "No special theme for mobile devices" msgstr "" @@ -6683,6 +6712,57 @@ msgstr "" msgid "Grid page max height of content (in pixels)" msgstr "" +#: ../../Zotlabs/Module/Settings/Featured.php:24 +msgid "No feature settings configured" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Featured.php:31 +msgid "Feature/Addon Settings" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:31 +#, php-format +msgid "This channel is limited to %d tokens" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:37 +msgid "Name and Password are required." +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:77 +msgid "Token saved." +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:113 +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/Settings/Tokens.php:115 +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/Settings/Tokens.php:150 ../../include/widgets.php:647 +msgid "Guest Access Tokens" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:157 +msgid "Login Name" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:158 +msgid "Login Password" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Tokens.php:159 +msgid "Expires (yyyy-mm-dd)" +msgstr "" + #: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 msgid "Tag removed" msgstr "" @@ -6752,12 +6832,112 @@ msgstr "" msgid "Add Thing to your Profile" msgstr "" -#: ../../Zotlabs/Module/Cal.php:69 -msgid "Permissions denied." +#: ../../Zotlabs/Module/Mail.php:65 +msgid "Unable to lookup recipient." msgstr "" -#: ../../Zotlabs/Module/Cal.php:337 ../../include/text.php:2335 -msgid "Import" +#: ../../Zotlabs/Module/Mail.php:72 +msgid "Unable to communicate with requested channel." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:79 +msgid "Cannot verify requested channel." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:97 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:178 +msgid "Messages" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:213 +msgid "Message recalled." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:226 +msgid "Conversation removed." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:240 ../../Zotlabs/Module/Mail.php:349 +#: ../../Zotlabs/Module/Chat.php:205 ../../include/conversation.php:1330 +msgid "Please enter a link URL:" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:241 ../../Zotlabs/Module/Mail.php:350 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:269 +msgid "Requested channel is not in this network" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:277 +msgid "Send Private Message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:278 ../../Zotlabs/Module/Mail.php:403 +msgid "To:" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:281 ../../Zotlabs/Module/Mail.php:405 +msgid "Subject:" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:411 +#: ../../include/conversation.php:1390 +msgid "Attach file" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:288 +msgid "Send" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:416 +#: ../../include/conversation.php:1435 +msgid "Set expiration date" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:293 ../../Zotlabs/Module/Mail.php:418 +#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Lib/ThreadItem.php:743 +#: ../../include/conversation.php:1440 +msgid "Encrypt text" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:375 +msgid "Delete message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:376 +msgid "Delivery report" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:377 +msgid "Recall message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:379 +msgid "Message has been recalled." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:396 +msgid "Delete Conversation" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:398 +msgid "" +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:402 +msgid "Send Reply" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:407 +#, php-format +msgid "Your message for %s (%s):" msgstr "" #: ../../Zotlabs/Module/Viewconnections.php:65 @@ -6838,20 +7018,38 @@ msgstr "" msgid "Lookup xchan beginning with (or webbie): " msgstr "" -#: ../../Zotlabs/Module/Match.php:26 -msgid "Profile Match" +#: ../../Zotlabs/Module/Item.php:183 +msgid "Unable to locate original post." msgstr "" -#: ../../Zotlabs/Module/Match.php:35 -msgid "No keywords to match. Please add keywords to your default profile." +#: ../../Zotlabs/Module/Item.php:446 +msgid "Empty post discarded." msgstr "" -#: ../../Zotlabs/Module/Match.php:67 -msgid "is interested in:" +#: ../../Zotlabs/Module/Item.php:488 +msgid "Executable content type not permitted to this channel." msgstr "" -#: ../../Zotlabs/Module/Match.php:74 -msgid "No matches" +#: ../../Zotlabs/Module/Item.php:836 +msgid "Duplicate post suppressed." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:978 +msgid "System error. Post not saved." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1108 +msgid "Unable to obtain post information from database." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1115 +#, php-format +msgid "You have reached your limit of %1$.0f top level posts." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1122 +#, php-format +msgid "You have reached your limit of %1$.0f webpages." msgstr "" #: ../../Zotlabs/Lib/Chatroom.php:27 @@ -6874,565 +7072,590 @@ msgstr "" msgid "Room is full" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:205 -msgid "Site Admin" +#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1914 +msgid "$Projectname Notification" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:206 -msgid "Bug Report" +#: ../../Zotlabs/Lib/Enotify.php:61 ../../extend/addon/addon/diaspora/p.php:46 +#: ../../extend/addon/addon/diaspora/util.php:218 +#: ../../extend/addon/addon/diaspora/util.php:231 +#: ../../include/network.php:1915 +msgid "$projectname" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:207 -msgid "View Bookmarks" +#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1917 +msgid "Thank You," msgstr "" -#: ../../Zotlabs/Lib/Apps.php:208 -msgid "My Chatrooms" +#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1919 +#, php-format +msgid "%s Administrator" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:210 -msgid "Firefox Share" +#: ../../Zotlabs/Lib/Enotify.php:116 +#, php-format +msgid "%s <!item_type!>" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:211 -msgid "Remote Diagnostics" +#: ../../Zotlabs/Lib/Enotify.php:120 +#, php-format +msgid "[$Projectname:Notify] New mail received at %s" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:212 ../../include/features.php:319 -msgid "Suggest Channels" +#: ../../Zotlabs/Lib/Enotify.php:122 +#, php-format +msgid "%1$s, %2$s sent you a new private message at %3$s." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:213 ../../include/nav.php:115 -#: ../../boot.php:1715 -msgid "Login" +#: ../../Zotlabs/Lib/Enotify.php:123 +#, php-format +msgid "%1$s sent you %2$s." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:184 -msgid "Grid" +#: ../../Zotlabs/Lib/Enotify.php:123 +msgid "a private message" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:220 ../../include/nav.php:187 -msgid "Channel Home" +#: ../../Zotlabs/Lib/Enotify.php:124 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:223 ../../include/nav.php:206 -#: ../../include/conversation.php:1710 ../../include/conversation.php:1713 -msgid "Events" +#: ../../Zotlabs/Lib/Enotify.php:183 +#, php-format +msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:172 -msgid "Directory" +#: ../../Zotlabs/Lib/Enotify.php:191 +#, php-format +msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:226 ../../include/nav.php:198 -msgid "Mail" +#: ../../Zotlabs/Lib/Enotify.php:200 +#, php-format +msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:229 ../../include/nav.php:99 -msgid "Chat" +#: ../../Zotlabs/Lib/Enotify.php:211 +#, php-format +msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:231 -msgid "Probe" +#: ../../Zotlabs/Lib/Enotify.php:212 +#, php-format +msgid "%1$s, %2$s commented on an item/conversation you have been following." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:232 -msgid "Suggest" +#: ../../Zotlabs/Lib/Enotify.php:215 ../../Zotlabs/Lib/Enotify.php:292 +#: ../../Zotlabs/Lib/Enotify.php:309 ../../Zotlabs/Lib/Enotify.php:335 +#: ../../Zotlabs/Lib/Enotify.php:353 ../../Zotlabs/Lib/Enotify.php:367 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:233 -msgid "Random Channel" +#: ../../Zotlabs/Lib/Enotify.php:273 +#, php-format +msgid "%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:234 -msgid "Invite" +#: ../../Zotlabs/Lib/Enotify.php:288 +#, php-format +msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:235 ../../include/widgets.php:1563 -msgid "Features" +#: ../../Zotlabs/Lib/Enotify.php:289 +#, php-format +msgid "%1$s, %2$s liked an item/conversation you created." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:236 -#: ../../extend/addon/addon/openid/MysqlProvider.php:69 -msgid "Language" +#: ../../Zotlabs/Lib/Enotify.php:300 +#, php-format +msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:237 -msgid "Post" +#: ../../Zotlabs/Lib/Enotify.php:302 +#, php-format +msgid "%1$s, %2$s posted to your profile wall at %3$s" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:238 -#: ../../extend/addon/addon/openid/MysqlProvider.php:58 -#: ../../extend/addon/addon/openid/MysqlProvider.php:59 -#: ../../extend/addon/addon/openid/MysqlProvider.php:60 -msgid "Profile Photo" +#: ../../Zotlabs/Lib/Enotify.php:304 +#, php-format +msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:339 -msgid "Purchase" +#: ../../Zotlabs/Lib/Enotify.php:328 +#, php-format +msgid "[$Projectname:Notify] %s tagged you" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:683 -msgid "Private Message" +#: ../../Zotlabs/Lib/Enotify.php:329 +#, php-format +msgid "%1$s, %2$s tagged you at %3$s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:675 -msgid "Select" +#: ../../Zotlabs/Lib/Enotify.php:330 +#, php-format +msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:136 -msgid "Save to Folder" +#: ../../Zotlabs/Lib/Enotify.php:342 +#, php-format +msgid "[$Projectname:Notify] %1$s poked you" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:157 -msgid "I will attend" +#: ../../Zotlabs/Lib/Enotify.php:343 +#, php-format +msgid "%1$s, %2$s poked you at %3$s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:157 -msgid "I will not attend" +#: ../../Zotlabs/Lib/Enotify.php:344 +#, php-format +msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:157 -msgid "I might attend" +#: ../../Zotlabs/Lib/Enotify.php:360 +#, php-format +msgid "[$Projectname:Notify] %s tagged your post" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:167 -msgid "I agree" +#: ../../Zotlabs/Lib/Enotify.php:361 +#, php-format +msgid "%1$s, %2$s tagged your post at %3$s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:167 -msgid "I disagree" +#: ../../Zotlabs/Lib/Enotify.php:362 +#, php-format +msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:167 -msgid "I abstain" +#: ../../Zotlabs/Lib/Enotify.php:374 +msgid "[$Projectname:Notify] Introduction received" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:223 -msgid "Add Star" +#: ../../Zotlabs/Lib/Enotify.php:375 +#, php-format +msgid "%1$s, you've received an new connection request from '%2$s' at %3$s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:224 -msgid "Remove Star" +#: ../../Zotlabs/Lib/Enotify.php:376 +#, php-format +msgid "" +"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:225 -msgid "Toggle Star Status" +#: ../../Zotlabs/Lib/Enotify.php:380 ../../Zotlabs/Lib/Enotify.php:399 +#, php-format +msgid "You may visit their profile at %s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:229 -msgid "starred" +#: ../../Zotlabs/Lib/Enotify.php:382 +#, php-format +msgid "Please visit %s to approve or reject the connection request." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:239 ../../include/conversation.php:690 -msgid "Message signature validated" +#: ../../Zotlabs/Lib/Enotify.php:389 +msgid "[$Projectname:Notify] Friend suggestion received" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:240 ../../include/conversation.php:691 -msgid "Message signature incorrect" +#: ../../Zotlabs/Lib/Enotify.php:390 +#, php-format +msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:248 -msgid "Add Tag" +#: ../../Zotlabs/Lib/Enotify.php:391 +#, php-format +msgid "" +"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:268 ../../include/taxonomy.php:316 -msgid "like" +#: ../../Zotlabs/Lib/Enotify.php:397 +msgid "Name:" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:269 ../../include/taxonomy.php:317 -msgid "dislike" +#: ../../Zotlabs/Lib/Enotify.php:398 +msgid "Photo:" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:273 -msgid "Share This" +#: ../../Zotlabs/Lib/Enotify.php:401 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:273 -msgid "share" +#: ../../Zotlabs/Lib/Enotify.php:619 +msgid "[$Projectname:Notify]" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:282 -msgid "Delivery Report" +#: ../../Zotlabs/Lib/Enotify.php:779 +msgid "created a new post" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:300 +#: ../../Zotlabs/Lib/Enotify.php:780 #, php-format -msgid "%d comment" -msgid_plural "%d comments" -msgstr[0] "" -msgstr[1] "" +msgid "commented on %s's post" +msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:329 ../../Zotlabs/Lib/ThreadItem.php:330 +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +#: ../../include/acl_selectors.php:128 +msgid "Visible to your default audience" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +#: ../../include/acl_selectors.php:191 +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 #, php-format -msgid "View %s's profile - %s" +msgid "Any account on %s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:333 -msgid "to" +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:334 -msgid "via" +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 -msgid "Wall-to-Wall" +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:336 -msgid "via Wall-To-Wall:" +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:348 ../../include/conversation.php:736 -#, php-format -msgid "from %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:351 ../../include/conversation.php:739 -#, php-format -msgid "last edited: %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:352 ../../include/conversation.php:740 -#, php-format -msgid "Expires: %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:358 -msgid "Attend" +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:359 -msgid "Attendance Options" +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:360 -msgid "Vote" +#: ../../Zotlabs/Lib/Apps.php:207 +msgid "Site Admin" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:361 -msgid "Voting Options" +#: ../../Zotlabs/Lib/Apps.php:208 +#: ../../extend/addon/addon/buglink/buglink.php:16 +msgid "Report Bug" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:381 -#: ../../extend/addon/addon/bookmarker/bookmarker.php:38 -msgid "Save Bookmarks" +#: ../../Zotlabs/Lib/Apps.php:209 +msgid "View Bookmarks" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:382 -msgid "Add to Calendar" +#: ../../Zotlabs/Lib/Apps.php:210 +msgid "My Chatrooms" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:391 -msgid "Mark all seen" +#: ../../Zotlabs/Lib/Apps.php:212 +msgid "Firefox Share" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:440 ../../include/js_strings.php:7 -#, php-format -msgid "%s show all" +#: ../../Zotlabs/Lib/Apps.php:213 +msgid "Remote Diagnostics" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:730 ../../include/conversation.php:1255 -msgid "Bold" +#: ../../Zotlabs/Lib/Apps.php:214 ../../include/features.php:328 +msgid "Suggest Channels" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:731 ../../include/conversation.php:1256 -msgid "Italic" +#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:115 +#: ../../boot.php:1720 +msgid "Login" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:732 ../../include/conversation.php:1257 -msgid "Underline" +#: ../../Zotlabs/Lib/Apps.php:217 ../../include/nav.php:182 +msgid "Grid" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:733 ../../include/conversation.php:1258 -msgid "Quote" +#: ../../Zotlabs/Lib/Apps.php:221 ../../include/features.php:99 +#: ../../include/conversation.php:1903 +msgid "Wiki" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:734 ../../include/conversation.php:1259 -msgid "Code" +#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:185 +msgid "Channel Home" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:735 -msgid "Image" +#: ../../Zotlabs/Lib/Apps.php:225 ../../include/nav.php:204 +#: ../../include/conversation.php:1853 ../../include/conversation.php:1856 +msgid "Events" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:736 -msgid "Insert Link" +#: ../../Zotlabs/Lib/Apps.php:226 ../../include/nav.php:170 +msgid "Directory" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:737 -msgid "Video" +#: ../../Zotlabs/Lib/Apps.php:228 ../../include/nav.php:196 +msgid "Mail" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1914 -msgid "$Projectname Notification" +#: ../../Zotlabs/Lib/Apps.php:231 ../../include/nav.php:99 +msgid "Chat" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:61 ../../extend/addon/addon/diaspora/p.php:46 -#: ../../extend/addon/addon/diaspora/util.php:218 -#: ../../extend/addon/addon/diaspora/util.php:231 -#: ../../include/network.php:1915 -msgid "$projectname" +#: ../../Zotlabs/Lib/Apps.php:233 +msgid "Probe" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1917 -msgid "Thank You," +#: ../../Zotlabs/Lib/Apps.php:234 +msgid "Suggest" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1919 -#, php-format -msgid "%s Administrator" +#: ../../Zotlabs/Lib/Apps.php:235 +msgid "Random Channel" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:112 -#, php-format -msgid "%s <!item_type!>" +#: ../../Zotlabs/Lib/Apps.php:236 +msgid "Invite" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:116 -#, php-format -msgid "[$Projectname:Notify] New mail received at %s" +#: ../../Zotlabs/Lib/Apps.php:237 ../../include/widgets.php:1565 +msgid "Features" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:118 -#, php-format -msgid "%1$s, %2$s sent you a new private message at %3$s." +#: ../../Zotlabs/Lib/Apps.php:238 +#: ../../extend/addon/addon/openid/MysqlProvider.php:69 +msgid "Language" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:119 -#, php-format -msgid "%1$s sent you %2$s." +#: ../../Zotlabs/Lib/Apps.php:239 +msgid "Post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:119 -msgid "a private message" +#: ../../Zotlabs/Lib/Apps.php:240 +#: ../../extend/addon/addon/openid/MysqlProvider.php:58 +#: ../../extend/addon/addon/openid/MysqlProvider.php:59 +#: ../../extend/addon/addon/openid/MysqlProvider.php:60 +msgid "Profile Photo" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:120 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." +#: ../../Zotlabs/Lib/Apps.php:344 +msgid "Purchase" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:179 -#, php-format -msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" +#: ../../Zotlabs/Lib/Apps.php:348 +msgid "Undelete" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:187 -#, php-format -msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" +#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:663 +msgid "Private Message" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:196 -#, php-format -msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" +#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:655 +msgid "Select" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:207 -#, php-format -msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" +#: ../../Zotlabs/Lib/ThreadItem.php:136 +msgid "Save to Folder" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:208 -#, php-format -msgid "%1$s, %2$s commented on an item/conversation you have been following." +#: ../../Zotlabs/Lib/ThreadItem.php:157 +msgid "I will attend" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:211 ../../Zotlabs/Lib/Enotify.php:226 -#: ../../Zotlabs/Lib/Enotify.php:252 ../../Zotlabs/Lib/Enotify.php:270 -#: ../../Zotlabs/Lib/Enotify.php:284 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." +#: ../../Zotlabs/Lib/ThreadItem.php:157 +msgid "I will not attend" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:217 -#, php-format -msgid "[$Projectname:Notify] %s posted to your profile wall" +#: ../../Zotlabs/Lib/ThreadItem.php:157 +msgid "I might attend" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:219 -#, php-format -msgid "%1$s, %2$s posted to your profile wall at %3$s" +#: ../../Zotlabs/Lib/ThreadItem.php:167 +msgid "I agree" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:221 -#, php-format -msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]" +#: ../../Zotlabs/Lib/ThreadItem.php:167 +msgid "I disagree" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:245 -#, php-format -msgid "[$Projectname:Notify] %s tagged you" +#: ../../Zotlabs/Lib/ThreadItem.php:167 +msgid "I abstain" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:246 -#, php-format -msgid "%1$s, %2$s tagged you at %3$s" +#: ../../Zotlabs/Lib/ThreadItem.php:223 +msgid "Add Star" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:247 -#, php-format -msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]." +#: ../../Zotlabs/Lib/ThreadItem.php:224 +msgid "Remove Star" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:259 -#, php-format -msgid "[$Projectname:Notify] %1$s poked you" +#: ../../Zotlabs/Lib/ThreadItem.php:225 +msgid "Toggle Star Status" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:260 -#, php-format -msgid "%1$s, %2$s poked you at %3$s" +#: ../../Zotlabs/Lib/ThreadItem.php:229 +msgid "starred" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:261 -#, php-format -msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]." +#: ../../Zotlabs/Lib/ThreadItem.php:239 ../../include/conversation.php:670 +msgid "Message signature validated" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:277 -#, php-format -msgid "[$Projectname:Notify] %s tagged your post" +#: ../../Zotlabs/Lib/ThreadItem.php:240 ../../include/conversation.php:671 +msgid "Message signature incorrect" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:278 -#, php-format -msgid "%1$s, %2$s tagged your post at %3$s" +#: ../../Zotlabs/Lib/ThreadItem.php:248 +msgid "Add Tag" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:279 -#, php-format -msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]" +#: ../../Zotlabs/Lib/ThreadItem.php:268 ../../include/taxonomy.php:316 +msgid "like" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:291 -msgid "[$Projectname:Notify] Introduction received" +#: ../../Zotlabs/Lib/ThreadItem.php:269 ../../include/taxonomy.php:317 +msgid "dislike" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:292 -#, php-format -msgid "%1$s, you've received an new connection request from '%2$s' at %3$s" +#: ../../Zotlabs/Lib/ThreadItem.php:273 +msgid "Share This" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:293 -#, php-format -msgid "" -"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s." +#: ../../Zotlabs/Lib/ThreadItem.php:273 +msgid "share" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:297 ../../Zotlabs/Lib/Enotify.php:316 -#, php-format -msgid "You may visit their profile at %s" +#: ../../Zotlabs/Lib/ThreadItem.php:282 +msgid "Delivery Report" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:299 +#: ../../Zotlabs/Lib/ThreadItem.php:300 #, php-format -msgid "Please visit %s to approve or reject the connection request." +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Lib/ThreadItem.php:329 ../../Zotlabs/Lib/ThreadItem.php:330 +#, php-format +msgid "View %s's profile - %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:306 -msgid "[$Projectname:Notify] Friend suggestion received" +#: ../../Zotlabs/Lib/ThreadItem.php:333 +msgid "to" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:307 -#, php-format -msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s" +#: ../../Zotlabs/Lib/ThreadItem.php:334 +msgid "via" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:308 -#, php-format -msgid "" -"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s." +#: ../../Zotlabs/Lib/ThreadItem.php:335 +msgid "Wall-to-Wall" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:314 -msgid "Name:" +#: ../../Zotlabs/Lib/ThreadItem.php:336 +msgid "via Wall-To-Wall:" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:315 -msgid "Photo:" +#: ../../Zotlabs/Lib/ThreadItem.php:350 ../../include/conversation.php:717 +#, php-format +msgid "from %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:318 +#: ../../Zotlabs/Lib/ThreadItem.php:353 ../../include/conversation.php:720 #, php-format -msgid "Please visit %s to approve or reject the suggestion." +msgid "last edited: %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:536 -msgid "[$Projectname:Notify]" +#: ../../Zotlabs/Lib/ThreadItem.php:354 ../../include/conversation.php:721 +#, php-format +msgid "Expires: %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:696 -msgid "created a new post" +#: ../../Zotlabs/Lib/ThreadItem.php:360 +msgid "Attend" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:697 -#, php-format -msgid "commented on %s's post" +#: ../../Zotlabs/Lib/ThreadItem.php:361 +msgid "Attendance Options" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:128 -msgid "Visible to your default audience" +#: ../../Zotlabs/Lib/ThreadItem.php:362 +msgid "Vote" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:191 -msgid "Only me" +#: ../../Zotlabs/Lib/ThreadItem.php:363 +msgid "Voting Options" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" +#: ../../Zotlabs/Lib/ThreadItem.php:383 +#: ../../extend/addon/addon/bookmarker/bookmarker.php:38 +msgid "Save Bookmarks" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" +#: ../../Zotlabs/Lib/ThreadItem.php:384 +msgid "Add to Calendar" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:110 -#, php-format -msgid "Any account on %s" +#: ../../Zotlabs/Lib/ThreadItem.php:393 +msgid "Mark all seen" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" +#: ../../Zotlabs/Lib/ThreadItem.php:442 ../../include/js_strings.php:7 +#, php-format +msgid "%s show all" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" +#: ../../Zotlabs/Lib/ThreadItem.php:732 ../../include/conversation.php:1385 +msgid "Bold" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Anybody authenticated (could include visitors from other networks)" +#: ../../Zotlabs/Lib/ThreadItem.php:733 ../../include/conversation.php:1386 +msgid "Italic" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:114 -msgid "Any connections including those who haven't yet been approved" +#: ../../Zotlabs/Lib/ThreadItem.php:734 ../../include/conversation.php:1387 +msgid "Underline" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:150 -msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." +#: ../../Zotlabs/Lib/ThreadItem.php:735 ../../include/conversation.php:1388 +msgid "Quote" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:151 -msgid "" -"This is your default setting for who can view your default channel profile" +#: ../../Zotlabs/Lib/ThreadItem.php:736 ../../include/conversation.php:1389 +msgid "Code" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "This is your default setting for who can view your connections" +#: ../../Zotlabs/Lib/ThreadItem.php:737 +msgid "Image" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:153 -msgid "" -"This is your default setting for who can view your file storage and photos" +#: ../../Zotlabs/Lib/ThreadItem.php:738 +msgid "Insert Link" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for the audience of your webpages" +#: ../../Zotlabs/Lib/ThreadItem.php:739 +msgid "Video" msgstr "" #: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:24 @@ -7445,10 +7668,6 @@ msgid "" "view" msgstr "" -#: ../../extend/addon/addon/buglink/buglink.php:16 -msgid "Report Bug" -msgstr "" - #: ../../extend/addon/addon/chords/Mod_Chords.php:44 msgid "" "This is a fairly comprehensive and complete guitar chord dictionary which " @@ -7495,27 +7714,27 @@ msgstr "" msgid "Quick Reference" msgstr "" -#: ../../extend/addon/addon/diaspora/diaspora.php:667 +#: ../../extend/addon/addon/diaspora/diaspora.php:671 msgid "Diaspora Protocol Settings updated." msgstr "" -#: ../../extend/addon/addon/diaspora/diaspora.php:685 +#: ../../extend/addon/addon/diaspora/diaspora.php:692 msgid "Enable the Diaspora protocol for this channel" msgstr "" -#: ../../extend/addon/addon/diaspora/diaspora.php:689 +#: ../../extend/addon/addon/diaspora/diaspora.php:696 msgid "Allow any Diaspora member to comment on your public posts" msgstr "" -#: ../../extend/addon/addon/diaspora/diaspora.php:693 +#: ../../extend/addon/addon/diaspora/diaspora.php:700 msgid "Prevent your hashtags from being redirected to other sites" msgstr "" -#: ../../extend/addon/addon/diaspora/diaspora.php:698 +#: ../../extend/addon/addon/diaspora/diaspora.php:705 msgid "Followed hashtags (comma separated, do not include the #)" msgstr "" -#: ../../extend/addon/addon/diaspora/diaspora.php:703 +#: ../../extend/addon/addon/diaspora/diaspora.php:710 msgid "Diaspora Protocol Settings" msgstr "" @@ -8214,11 +8433,6 @@ msgstr "" msgid "Configuration Help" msgstr "" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:368 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145 -msgid "Add Contact" -msgstr "" - #: ../../extend/addon/addon/jappixmini/jappixmini.php:371 msgid "Jappix Mini Settings" msgstr "" @@ -8651,7 +8865,7 @@ msgid "Comma separated list of keywords to hide" msgstr "" #: ../../extend/addon/addon/nsfw/nsfw.php:88 -msgid "Use /expression/ to provide regular expressions" +msgid "Word, /regular-expression/, lang=xx, lang!=xx" msgstr "" #: ../../extend/addon/addon/nsfw/nsfw.php:92 @@ -8705,7 +8919,7 @@ msgid "Page to load after image selection." msgstr "" #: ../../extend/addon/addon/openclipatar/openclipatar.php:57 -#: ../../include/channel.php:965 ../../include/nav.php:93 +#: ../../include/nav.php:93 ../../include/channel.php:965 msgid "Edit Profile" msgstr "" @@ -9313,23 +9527,23 @@ msgstr "" msgid "Application name" msgstr "" -#: ../../extend/addon/addon/superblock/superblock.php:63 -msgid "Comma separated profile URLS to block" +#: ../../extend/addon/addon/superblock/superblock.php:110 +msgid "Currently blocked" msgstr "" -#: ../../extend/addon/addon/superblock/superblock.php:67 -msgid "\"Superblock\" Settings" +#: ../../extend/addon/addon/superblock/superblock.php:112 +msgid "No channels currently blocked" msgstr "" -#: ../../extend/addon/addon/superblock/superblock.php:82 -msgid "SUPERBLOCK Settings saved." +#: ../../extend/addon/addon/superblock/superblock.php:118 +msgid "\"Superblock\" Settings" msgstr "" -#: ../../extend/addon/addon/superblock/superblock.php:248 +#: ../../extend/addon/addon/superblock/superblock.php:322 msgid "Block Completely" msgstr "" -#: ../../extend/addon/addon/superblock/superblock.php:270 +#: ../../extend/addon/addon/superblock/superblock.php:371 msgid "superblock settings updated" msgstr "" @@ -9831,194 +10045,129 @@ msgstr "" msgid "Select an addressbook to import to" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:743 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 msgid "INVALID EVENT DISMISSED!" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 msgid "Summary: " msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 msgid "Date: " msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:747 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:754 msgid "Reason: " msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:751 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 msgid "INVALID CARD DISMISSED!" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 msgid "Name: " msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:769 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:770 msgid "" "You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV " "Settings before you can use it." msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:832 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:833 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 msgid "Example: YYYY-MM-DD HH:mm" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:833 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 msgid "End date and time" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:848 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:852 msgid "List month" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:849 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:853 msgid "List week" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:850 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:854 msgid "List day" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:857 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:861 msgid "More" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:858 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:862 msgid "Less" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:859 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:863 msgid "Select calendar" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:861 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:865 msgid "Delete all" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:863 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:867 msgid "Sorry! Editing of recurrent events is not yet implemented." msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1133 -msgid "Organisation" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1134 -#: ../../include/page_widgets.php:46 -msgid "Title" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1135 -msgid "Phone" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137 -msgid "Instant messenger" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138 -msgid "Website" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140 -msgid "Note" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141 -#: ../../extend/addon/addon/cdav/cdav.php:263 -msgid "Mobile" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142 -#: ../../extend/addon/addon/cdav/cdav.php:264 ../../include/nav.php:88 -#: ../../include/nav.php:149 -msgid "Home" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143 -#: ../../extend/addon/addon/cdav/cdav.php:267 -msgid "Work" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146 -msgid "Add Field" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151 -msgid "P.O. Box" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152 -msgid "Additional" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1153 -msgid "Street" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154 -msgid "Locality" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155 -msgid "Region" -msgstr "" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156 -msgid "ZIP Code" -msgstr "" - -#: ../../extend/addon/addon/cdav/cdav.php:35 +#: ../../extend/addon/addon/cdav/cdav.php:36 msgid "Errors encountered creating database table: " msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:193 +#: ../../extend/addon/addon/cdav/cdav.php:197 msgid "Default Calendar" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:202 +#: ../../extend/addon/addon/cdav/cdav.php:206 msgid "Default Addressbook" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:211 +#: ../../extend/addon/addon/cdav/cdav.php:215 msgid "CalDAV/CardDAV Settings saved." msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:227 +#: ../../extend/addon/addon/cdav/cdav.php:234 msgid "Enable CalDAV/CardDAV Server for this channel" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:230 +#: ../../extend/addon/addon/cdav/cdav.php:237 #, php-format msgid "Your CalDAV resources are located at %s " msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:233 +#: ../../extend/addon/addon/cdav/cdav.php:240 #, php-format msgid "Your CardDAV resources are located at %s " msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:239 +#: ../../extend/addon/addon/cdav/cdav.php:246 msgid "CalDAV/CardDAV Settings" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:265 +#: ../../extend/addon/addon/cdav/cdav.php:272 +#: ../../include/connections.php:858 msgid "Home, Voice" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:266 +#: ../../extend/addon/addon/cdav/cdav.php:273 +#: ../../include/connections.php:859 msgid "Home, Fax" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:268 +#: ../../extend/addon/addon/cdav/cdav.php:275 +#: ../../include/connections.php:861 msgid "Work, Voice" msgstr "" -#: ../../extend/addon/addon/cdav/cdav.php:269 +#: ../../extend/addon/addon/cdav/cdav.php:276 +#: ../../include/connections.php:862 msgid "Work, Fax" msgstr "" @@ -10169,6 +10318,25 @@ msgstr "" msgid "The error message was:" msgstr "" +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44 +#, php-format +msgid "Reconnecting %d connections" +msgstr "" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63 +msgid "Diaspora Reconnect" +msgstr "" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65 +msgid "" +"Use this form to re-establish Diaspora connections which were initially made " +"from a different hub." +msgstr "" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70 +msgid "Reconnect" +msgstr "" + #: ../../extend/addon/addon/mailtest/mailtest.php:19 msgid "Send test email" msgstr "" @@ -10209,95 +10377,98 @@ msgid "" "from Mapbox instead of the default OpenStreetMap tile server." msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:122 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:154 msgid "Rendezvous" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:127 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:159 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 "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:128 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:160 msgid "Welcome to Rendezvous!" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:129 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:161 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 "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:131 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:163 msgid "Let's meet here" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:134 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:166 msgid "New marker" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:135 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:167 msgid "Edit marker" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:136 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:168 msgid "New identity" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:137 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:169 msgid "Delete marker" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:138 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:170 msgid "Delete member" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:139 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:171 msgid "Edit proximity alert" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:140 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:172 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 "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:140 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:172 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:177 msgid "distance" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:150 -msgid "Add new rendezvous" +#: ../../extend/addon/addon/rendezvous/rendezvous.php:173 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:175 +msgid "Marker proximity alert" msgstr "" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:151 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:174 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:176 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." +"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 "" -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44 -#, php-format -msgid "Reconnecting %d connections" +#: ../../extend/addon/addon/rendezvous/rendezvous.php:178 +msgid "Reminder note" msgstr "" -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63 -msgid "Diaspora Reconnect" +#: ../../extend/addon/addon/rendezvous/rendezvous.php:179 +msgid "" +"Enter a note to be displayed when you are within the specified proximity..." msgstr "" -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65 -msgid "" -"Use this form to re-establish Diaspora connections which were initially made " -"from a different hub." +#: ../../extend/addon/addon/rendezvous/rendezvous.php:190 +msgid "Add new rendezvous" msgstr "" -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70 -msgid "Reconnect" +#: ../../extend/addon/addon/rendezvous/rendezvous.php:191 +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 "" #: ../../include/Import/import_diaspora.php:16 @@ -10313,150 +10484,281 @@ msgstr "" msgid "Cannot locate DNS info for database server '%s'" msgstr "" -#: ../../include/channel.php:33 -msgid "Unable to obtain identity information from database" +#: ../../include/language.php:367 ../../include/text.php:1783 +msgid "default" msgstr "" -#: ../../include/channel.php:67 -msgid "Empty name" +#: ../../include/language.php:380 +msgid "Select an alternate language" msgstr "" -#: ../../include/channel.php:70 -msgid "Name too long" +#: ../../include/event.php:22 ../../include/event.php:69 +#: ../../include/bb2diaspora.php:504 +msgid "l F d, Y \\@ g:i A" msgstr "" -#: ../../include/channel.php:181 -msgid "No account identifier" +#: ../../include/event.php:30 ../../include/event.php:73 +#: ../../include/bb2diaspora.php:510 +msgid "Starts:" msgstr "" -#: ../../include/channel.php:193 -msgid "Nickname is required." +#: ../../include/event.php:40 ../../include/event.php:77 +#: ../../include/bb2diaspora.php:518 +msgid "Finishes:" msgstr "" -#: ../../include/channel.php:207 -msgid "Reserved nickname. Please choose another." +#: ../../include/event.php:863 +msgid "This event has been added to your calendar." msgstr "" -#: ../../include/channel.php:212 -msgid "" -"Nickname has unsupported characters or is already being used on this site." +#: ../../include/event.php:1063 +msgid "Not specified" msgstr "" -#: ../../include/channel.php:272 -msgid "Unable to retrieve created identity" +#: ../../include/event.php:1064 +msgid "Needs Action" msgstr "" -#: ../../include/channel.php:341 -msgid "Default Profile" +#: ../../include/event.php:1065 +msgid "Completed" msgstr "" -#: ../../include/channel.php:962 -msgid "Create New Profile" +#: ../../include/event.php:1066 +msgid "In Process" msgstr "" -#: ../../include/channel.php:982 -msgid "Visible to everybody" +#: ../../include/event.php:1067 +msgid "Cancelled" msgstr "" -#: ../../include/channel.php:1055 ../../include/channel.php:1174 -msgid "Gender:" +#: ../../include/account.php:35 +msgid "Not a valid email address" msgstr "" -#: ../../include/channel.php:1057 ../../include/channel.php:1229 -msgid "Homepage:" +#: ../../include/account.php:37 +msgid "Your email domain is not among those allowed on this site" msgstr "" -#: ../../include/channel.php:1058 -msgid "Online Now" +#: ../../include/account.php:43 +msgid "Your email address is already registered at this site." msgstr "" -#: ../../include/channel.php:1179 -msgid "Like this channel" +#: ../../include/account.php:75 +msgid "An invitation is required." msgstr "" -#: ../../include/channel.php:1203 -msgid "j F, Y" +#: ../../include/account.php:79 +msgid "Invitation could not be verified." msgstr "" -#: ../../include/channel.php:1204 -msgid "j F" +#: ../../include/account.php:130 +msgid "Please enter the required information." msgstr "" -#: ../../include/channel.php:1211 -msgid "Birthday:" +#: ../../include/account.php:198 +msgid "Failed to store account information." msgstr "" -#: ../../include/channel.php:1224 +#: ../../include/account.php:263 #, php-format -msgid "for %1$d %2$s" +msgid "Registration confirmation for %s" msgstr "" -#: ../../include/channel.php:1227 -msgid "Sexual Preference:" +#: ../../include/account.php:330 +#, php-format +msgid "Registration request at %s" msgstr "" -#: ../../include/channel.php:1233 -msgid "Tags:" +#: ../../include/account.php:352 +msgid "your registration password" msgstr "" -#: ../../include/channel.php:1235 -msgid "Political Views:" +#: ../../include/account.php:358 ../../include/account.php:420 +#, php-format +msgid "Registration details for %s" msgstr "" -#: ../../include/channel.php:1237 -msgid "Religion:" +#: ../../include/account.php:431 +msgid "Account approved." msgstr "" -#: ../../include/channel.php:1241 -msgid "Hobbies/Interests:" +#: ../../include/account.php:471 +#, php-format +msgid "Registration revoked for %s" msgstr "" -#: ../../include/channel.php:1243 -msgid "Likes:" +#: ../../include/account.php:756 ../../include/account.php:758 +msgid "Click here to upgrade." msgstr "" -#: ../../include/channel.php:1245 -msgid "Dislikes:" +#: ../../include/account.php:764 +msgid "This action exceeds the limits set by your subscription plan." msgstr "" -#: ../../include/channel.php:1247 -msgid "Contact information and Social Networks:" +#: ../../include/account.php:769 +msgid "This action is not available under your subscription plan." msgstr "" -#: ../../include/channel.php:1249 -msgid "My other channels:" +#: ../../include/acl_selectors.php:198 +msgid "Who can see this?" msgstr "" -#: ../../include/channel.php:1251 -msgid "Musical interests:" +#: ../../include/acl_selectors.php:199 +msgid "Custom selection" msgstr "" -#: ../../include/channel.php:1253 -msgid "Books, literature:" +#: ../../include/acl_selectors.php:200 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit " +"the scope of \"Show\"." msgstr "" -#: ../../include/channel.php:1255 -msgid "Television:" +#: ../../include/acl_selectors.php:201 +msgid "Show" msgstr "" -#: ../../include/channel.php:1257 -msgid "Film/dance/culture/entertainment:" +#: ../../include/acl_selectors.php:202 +msgid "Don't show" msgstr "" -#: ../../include/channel.php:1259 -msgid "Love/Romance:" +#: ../../include/acl_selectors.php:235 +#, 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/channel.php:1261 -msgid "Work/employment:" +#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270 +#: ../../include/contact_widgets.php:91 ../../include/widgets.php:46 +#: ../../include/widgets.php:465 +msgid "Categories" msgstr "" -#: ../../include/channel.php:1263 -msgid "School/education:" +#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 +msgid "Tags" msgstr "" -#: ../../include/channel.php:1284 -msgid "Like this thing" +#: ../../include/taxonomy.php:293 +msgid "Keywords" +msgstr "" + +#: ../../include/taxonomy.php:314 +msgid "have" +msgstr "" + +#: ../../include/taxonomy.php:314 +msgid "has" +msgstr "" + +#: ../../include/taxonomy.php:315 +msgid "want" +msgstr "" + +#: ../../include/taxonomy.php:315 +msgid "wants" +msgstr "" + +#: ../../include/taxonomy.php:316 +msgid "likes" +msgstr "" + +#: ../../include/taxonomy.php:317 +msgid "dislikes" +msgstr "" + +#: ../../include/datetime.php:147 +msgid "Birthday" +msgstr "" + +#: ../../include/datetime.php:149 +msgid "Age: " +msgstr "" + +#: ../../include/datetime.php:151 +msgid "YYYY-MM-DD or MM-DD" +msgstr "" + +#: ../../include/datetime.php:286 ../../boot.php:2564 +msgid "never" +msgstr "" + +#: ../../include/datetime.php:292 +msgid "less than a second ago" +msgstr "" + +#: ../../include/datetime.php:310 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" +msgstr "" + +#: ../../include/datetime.php:321 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:324 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:327 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:330 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:333 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:336 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:339 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:576 +#, php-format +msgid "%1$s's birthday" +msgstr "" + +#: ../../include/datetime.php:577 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "" + +#: ../../include/security.php:117 +msgid "guest:" +msgstr "" + +#: ../../include/security.php:535 +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/selectors.php:30 @@ -10699,167 +11001,210 @@ msgstr "" msgid "Ask me" msgstr "" -#: ../../include/acl_selectors.php:198 -msgid "Who can see this?" +#: ../../include/zot.php:667 +msgid "Invalid data packet" msgstr "" -#: ../../include/acl_selectors.php:199 -msgid "Custom selection" +#: ../../include/zot.php:683 +msgid "Unable to verify channel signature" msgstr "" -#: ../../include/acl_selectors.php:200 -msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit " -"the scope of \"Show\"." +#: ../../include/zot.php:2334 +#, php-format +msgid "Unable to verify site signature for %s" msgstr "" -#: ../../include/acl_selectors.php:201 -msgid "Show" +#: ../../include/zot.php:3732 +msgid "invalid target signature" msgstr "" -#: ../../include/acl_selectors.php:202 -msgid "Don't show" +#: ../../include/bookmarks.php:35 +#, php-format +msgid "%1$s's bookmarks" msgstr "" -#: ../../include/acl_selectors.php:235 -#, 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." +#: ../../include/nav.php:85 ../../include/nav.php:118 ../../boot.php:1719 +msgid "Logout" msgstr "" -#: ../../include/event.php:22 ../../include/event.php:69 -#: ../../include/bb2diaspora.php:490 -msgid "l F d, Y \\@ g:i A" +#: ../../include/nav.php:85 ../../include/nav.php:118 +msgid "End this session" msgstr "" -#: ../../include/event.php:30 ../../include/event.php:73 -#: ../../include/bb2diaspora.php:496 -msgid "Starts:" +#: ../../include/nav.php:88 +msgid "Your posts and conversations" msgstr "" -#: ../../include/event.php:40 ../../include/event.php:77 -#: ../../include/bb2diaspora.php:504 -msgid "Finishes:" +#: ../../include/nav.php:89 +msgid "Your profile page" msgstr "" -#: ../../include/event.php:824 -msgid "This event has been added to your calendar." +#: ../../include/nav.php:91 +msgid "Manage/Edit profiles" msgstr "" -#: ../../include/event.php:1024 -msgid "Not specified" +#: ../../include/nav.php:93 +msgid "Edit your profile" msgstr "" -#: ../../include/event.php:1025 -msgid "Needs Action" +#: ../../include/nav.php:95 +msgid "Your photos" msgstr "" -#: ../../include/event.php:1026 -msgid "Completed" +#: ../../include/nav.php:96 +msgid "Your files" msgstr "" -#: ../../include/event.php:1027 -msgid "In Process" +#: ../../include/nav.php:99 +msgid "Your chatrooms" msgstr "" -#: ../../include/event.php:1028 -msgid "Cancelled" +#: ../../include/nav.php:105 ../../include/conversation.php:1879 +msgid "Bookmarks" msgstr "" -#: ../../include/help.php:31 -msgid "Help:" +#: ../../include/nav.php:105 +msgid "Your bookmarks" msgstr "" -#: ../../include/message.php:20 -msgid "No recipient provided." +#: ../../include/nav.php:109 +msgid "Your webpages" msgstr "" -#: ../../include/message.php:25 -msgid "[no subject]" +#: ../../include/nav.php:111 +msgid "Your wikis" msgstr "" -#: ../../include/message.php:45 -msgid "Unable to determine sender." +#: ../../include/nav.php:115 +msgid "Sign in" msgstr "" -#: ../../include/message.php:223 -msgid "Stored post could not be verified." +#: ../../include/nav.php:131 +msgid "Remote authentication" msgstr "" -#: ../../include/photos.php:115 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" +#: ../../include/nav.php:131 +msgid "Click to authenticate to your home hub" msgstr "" -#: ../../include/photos.php:122 -msgid "Image file is empty." +#: ../../include/nav.php:143 +msgid "Get me home" msgstr "" -#: ../../include/photos.php:260 -msgid "Photo storage failed." +#: ../../include/nav.php:145 +msgid "Log me out of this site" msgstr "" -#: ../../include/photos.php:300 -msgid "a new photo" +#: ../../include/nav.php:150 +msgid "Create an account" msgstr "" -#: ../../include/photos.php:304 -#, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" +#: ../../include/nav.php:162 +msgid "Help and documentation" msgstr "" -#: ../../include/photos.php:507 ../../include/conversation.php:1696 -msgid "Photo Albums" +#: ../../include/nav.php:166 +msgid "Applications, utilities, links, games" msgstr "" -#: ../../include/photos.php:511 -msgid "Upload New Photos" +#: ../../include/nav.php:168 +msgid "Search site @name, #tag, ?docs, content" msgstr "" -#: ../../include/network.php:729 -msgid "view full size" +#: ../../include/nav.php:170 +msgid "Channel Directory" msgstr "" -#: ../../include/network.php:1962 -msgid "Administrator" +#: ../../include/nav.php:182 +msgid "Your grid" msgstr "" -#: ../../include/network.php:1978 -msgid "No Subject" +#: ../../include/nav.php:183 +msgid "Mark all grid notifications seen" msgstr "" -#: ../../include/network.php:2234 -msgid "OStatus" +#: ../../include/nav.php:185 +msgid "Channel home" msgstr "" -#: ../../include/network.php:2235 -msgid "GNU-Social" +#: ../../include/nav.php:186 +msgid "Mark all channel notifications seen" msgstr "" -#: ../../include/network.php:2236 -msgid "RSS/Atom" +#: ../../include/nav.php:192 +msgid "Notices" msgstr "" -#: ../../include/network.php:2239 -msgid "Facebook" +#: ../../include/nav.php:192 +msgid "Notifications" msgstr "" -#: ../../include/network.php:2240 -msgid "Zot" +#: ../../include/nav.php:193 +msgid "See all notifications" msgstr "" -#: ../../include/network.php:2241 -msgid "LinkedIn" +#: ../../include/nav.php:196 +msgid "Private mail" msgstr "" -#: ../../include/network.php:2242 -msgid "XMPP/IM" +#: ../../include/nav.php:197 +msgid "See all private messages" msgstr "" -#: ../../include/network.php:2243 -msgid "MySpace" +#: ../../include/nav.php:198 +msgid "Mark all private messages seen" +msgstr "" + +#: ../../include/nav.php:199 ../../include/widgets.php:700 +msgid "Inbox" +msgstr "" + +#: ../../include/nav.php:200 ../../include/widgets.php:705 +msgid "Outbox" +msgstr "" + +#: ../../include/nav.php:201 ../../include/widgets.php:710 +msgid "New Message" +msgstr "" + +#: ../../include/nav.php:204 +msgid "Event Calendar" +msgstr "" + +#: ../../include/nav.php:205 +msgid "See all events" +msgstr "" + +#: ../../include/nav.php:206 +msgid "Mark all events seen" +msgstr "" + +#: ../../include/nav.php:209 +msgid "Manage Your Channels" +msgstr "" + +#: ../../include/nav.php:211 +msgid "Account/Channel Settings" +msgstr "" + +#: ../../include/nav.php:219 ../../include/widgets.php:1595 +msgid "Admin" +msgstr "" + +#: ../../include/nav.php:219 +msgid "Site Setup and Configuration" +msgstr "" + +#: ../../include/nav.php:250 ../../include/conversation.php:836 +msgid "Loading..." +msgstr "" + +#: ../../include/nav.php:255 +msgid "@name, #tag, ?doc, content" +msgstr "" + +#: ../../include/nav.php:256 +msgid "Please wait..." msgstr "" #: ../../include/features.php:58 @@ -10945,421 +11290,251 @@ msgid "" msgstr "" #: ../../include/features.php:162 -msgid "Advanced Directory Search" +msgid "Event Timezone Selection" msgstr "" #: ../../include/features.php:163 -msgid "Allows creation of complex directory search queries" +msgid "Allow event creation in timezones other than your own." msgstr "" #: ../../include/features.php:171 -msgid "Advanced Theme and Layout Settings" +msgid "Advanced Directory Search" msgstr "" #: ../../include/features.php:172 +msgid "Allows creation of complex directory search queries" +msgstr "" + +#: ../../include/features.php:180 +msgid "Advanced Theme and Layout Settings" +msgstr "" + +#: ../../include/features.php:181 msgid "Allows fine tuning of themes and page layouts" msgstr "" -#: ../../include/features.php:182 +#: ../../include/features.php:191 msgid "Post Composition Features" msgstr "" -#: ../../include/features.php:186 +#: ../../include/features.php:195 msgid "Large Photos" msgstr "" -#: ../../include/features.php:187 +#: ../../include/features.php:196 msgid "" "Include large (1024px) photo thumbnails in posts. If not enabled, use small " "(640px) photo thumbnails" msgstr "" -#: ../../include/features.php:196 +#: ../../include/features.php:205 msgid "Automatically import channel content from other channels or feeds" msgstr "" -#: ../../include/features.php:204 +#: ../../include/features.php:213 msgid "Even More Encryption" msgstr "" -#: ../../include/features.php:205 +#: ../../include/features.php:214 msgid "" "Allow optional encryption of content end-to-end with a shared secret key" msgstr "" -#: ../../include/features.php:213 +#: ../../include/features.php:222 msgid "Enable Voting Tools" msgstr "" -#: ../../include/features.php:214 +#: ../../include/features.php:223 msgid "Provide a class of post which others can vote on" msgstr "" -#: ../../include/features.php:222 +#: ../../include/features.php:231 msgid "Disable Comments" msgstr "" -#: ../../include/features.php:223 +#: ../../include/features.php:232 msgid "Provide the option to disable comments for a post" msgstr "" -#: ../../include/features.php:231 +#: ../../include/features.php:240 msgid "Delayed Posting" msgstr "" -#: ../../include/features.php:232 +#: ../../include/features.php:241 msgid "Allow posts to be published at a later date" msgstr "" -#: ../../include/features.php:240 +#: ../../include/features.php:249 msgid "Content Expiration" msgstr "" -#: ../../include/features.php:241 +#: ../../include/features.php:250 msgid "Remove posts/comments and/or private messages at a future time" msgstr "" -#: ../../include/features.php:249 +#: ../../include/features.php:258 msgid "Suppress Duplicate Posts/Comments" msgstr "" -#: ../../include/features.php:250 +#: ../../include/features.php:259 msgid "" "Prevent posts with identical content to be published with less than two " "minutes in between submissions." msgstr "" -#: ../../include/features.php:261 +#: ../../include/features.php:270 msgid "Network and Stream Filtering" msgstr "" -#: ../../include/features.php:265 +#: ../../include/features.php:274 msgid "Search by Date" msgstr "" -#: ../../include/features.php:266 +#: ../../include/features.php:275 msgid "Ability to select posts by date ranges" msgstr "" -#: ../../include/features.php:274 ../../include/group.php:311 +#: ../../include/features.php:283 ../../include/group.php:311 msgid "Privacy Groups" msgstr "" -#: ../../include/features.php:275 +#: ../../include/features.php:284 msgid "Enable management and selection of privacy groups" msgstr "" -#: ../../include/features.php:283 ../../include/widgets.php:283 +#: ../../include/features.php:292 ../../include/widgets.php:283 msgid "Saved Searches" msgstr "" -#: ../../include/features.php:284 +#: ../../include/features.php:293 msgid "Save search terms for re-use" msgstr "" -#: ../../include/features.php:292 +#: ../../include/features.php:301 msgid "Network Personal Tab" msgstr "" -#: ../../include/features.php:293 +#: ../../include/features.php:302 msgid "Enable tab to display only Network posts that you've interacted on" msgstr "" -#: ../../include/features.php:301 +#: ../../include/features.php:310 msgid "Network New Tab" msgstr "" -#: ../../include/features.php:302 +#: ../../include/features.php:311 msgid "Enable tab to display all new Network activity" msgstr "" -#: ../../include/features.php:310 +#: ../../include/features.php:319 msgid "Affinity Tool" msgstr "" -#: ../../include/features.php:311 +#: ../../include/features.php:320 msgid "Filter stream activity by depth of relationships" msgstr "" -#: ../../include/features.php:320 +#: ../../include/features.php:329 msgid "Show friend and connection suggestions" msgstr "" -#: ../../include/features.php:328 +#: ../../include/features.php:337 msgid "Connection Filtering" msgstr "" -#: ../../include/features.php:329 +#: ../../include/features.php:338 msgid "Filter incoming posts from connections based on keywords/content" msgstr "" -#: ../../include/features.php:341 +#: ../../include/features.php:350 msgid "Post/Comment Tools" msgstr "" -#: ../../include/features.php:345 +#: ../../include/features.php:354 msgid "Community Tagging" msgstr "" -#: ../../include/features.php:346 +#: ../../include/features.php:355 msgid "Ability to tag existing posts" msgstr "" -#: ../../include/features.php:354 +#: ../../include/features.php:363 msgid "Post Categories" msgstr "" -#: ../../include/features.php:355 +#: ../../include/features.php:364 msgid "Add categories to your posts" msgstr "" -#: ../../include/features.php:363 +#: ../../include/features.php:372 msgid "Emoji Reactions" msgstr "" -#: ../../include/features.php:364 +#: ../../include/features.php:373 msgid "Add emoji reaction ability to posts" msgstr "" -#: ../../include/features.php:372 ../../include/contact_widgets.php:53 +#: ../../include/features.php:381 ../../include/contact_widgets.php:53 #: ../../include/widgets.php:346 msgid "Saved Folders" msgstr "" -#: ../../include/features.php:373 +#: ../../include/features.php:382 msgid "Ability to file posts under folders" msgstr "" -#: ../../include/features.php:381 +#: ../../include/features.php:390 msgid "Dislike Posts" msgstr "" -#: ../../include/features.php:382 +#: ../../include/features.php:391 msgid "Ability to dislike posts/comments" msgstr "" -#: ../../include/features.php:390 +#: ../../include/features.php:399 msgid "Star Posts" msgstr "" -#: ../../include/features.php:391 +#: ../../include/features.php:400 msgid "Ability to mark special posts with a star indicator" msgstr "" -#: ../../include/features.php:399 +#: ../../include/features.php:408 msgid "Tag Cloud" msgstr "" -#: ../../include/features.php:400 +#: ../../include/features.php:409 msgid "Provide a personal tag cloud on your channel page" msgstr "" -#: ../../include/features.php:412 +#: ../../include/features.php:421 msgid "Premium Channel" msgstr "" -#: ../../include/features.php:413 +#: ../../include/features.php:422 msgid "" "Allows you to set restrictions and terms on those that connect with your " "channel" msgstr "" -#: ../../include/bookmarks.php:35 -#, php-format -msgid "%1$s's bookmarks" -msgstr "" - -#: ../../include/nav.php:85 ../../include/nav.php:118 ../../boot.php:1714 -msgid "Logout" -msgstr "" - -#: ../../include/nav.php:85 ../../include/nav.php:118 -msgid "End this session" -msgstr "" - -#: ../../include/nav.php:88 -msgid "Your posts and conversations" -msgstr "" - -#: ../../include/nav.php:89 -msgid "Your profile page" -msgstr "" - -#: ../../include/nav.php:91 -msgid "Manage/Edit profiles" -msgstr "" - -#: ../../include/nav.php:93 -msgid "Edit your profile" -msgstr "" - -#: ../../include/nav.php:95 -msgid "Your photos" -msgstr "" - -#: ../../include/nav.php:96 -msgid "Your files" -msgstr "" - -#: ../../include/nav.php:99 -msgid "Your chatrooms" -msgstr "" - -#: ../../include/nav.php:105 ../../include/conversation.php:1736 -msgid "Bookmarks" -msgstr "" - -#: ../../include/nav.php:105 -msgid "Your bookmarks" -msgstr "" - -#: ../../include/nav.php:109 -msgid "Your webpages" -msgstr "" - -#: ../../include/nav.php:111 -msgid "Your wiki" -msgstr "" - -#: ../../include/nav.php:115 -msgid "Sign in" -msgstr "" - -#: ../../include/nav.php:132 -#, php-format -msgid "%s - click to logout" -msgstr "" - -#: ../../include/nav.php:135 -msgid "Remote authentication" -msgstr "" - -#: ../../include/nav.php:135 -msgid "Click to authenticate to your home hub" -msgstr "" - -#: ../../include/nav.php:149 -msgid "Home Page" -msgstr "" - -#: ../../include/nav.php:152 -msgid "Create an account" -msgstr "" - -#: ../../include/nav.php:164 -msgid "Help and documentation" -msgstr "" - -#: ../../include/nav.php:168 -msgid "Applications, utilities, links, games" -msgstr "" - -#: ../../include/nav.php:170 -msgid "Search site @name, #tag, ?docs, content" -msgstr "" - -#: ../../include/nav.php:172 -msgid "Channel Directory" -msgstr "" - -#: ../../include/nav.php:184 -msgid "Your grid" -msgstr "" - -#: ../../include/nav.php:185 -msgid "Mark all grid notifications seen" -msgstr "" - -#: ../../include/nav.php:187 -msgid "Channel home" -msgstr "" - -#: ../../include/nav.php:188 -msgid "Mark all channel notifications seen" -msgstr "" - -#: ../../include/nav.php:194 -msgid "Notices" -msgstr "" - -#: ../../include/nav.php:194 -msgid "Notifications" -msgstr "" - -#: ../../include/nav.php:195 -msgid "See all notifications" -msgstr "" - -#: ../../include/nav.php:198 -msgid "Private mail" -msgstr "" - -#: ../../include/nav.php:199 -msgid "See all private messages" -msgstr "" - -#: ../../include/nav.php:200 -msgid "Mark all private messages seen" -msgstr "" - -#: ../../include/nav.php:201 ../../include/widgets.php:700 -msgid "Inbox" -msgstr "" - -#: ../../include/nav.php:202 ../../include/widgets.php:705 -msgid "Outbox" -msgstr "" - -#: ../../include/nav.php:203 ../../include/widgets.php:710 -msgid "New Message" -msgstr "" - -#: ../../include/nav.php:206 -msgid "Event Calendar" -msgstr "" - -#: ../../include/nav.php:207 -msgid "See all events" -msgstr "" - -#: ../../include/nav.php:208 -msgid "Mark all events seen" -msgstr "" - -#: ../../include/nav.php:211 -msgid "Manage Your Channels" -msgstr "" - -#: ../../include/nav.php:213 -msgid "Account/Channel Settings" -msgstr "" - -#: ../../include/nav.php:221 ../../include/widgets.php:1593 -msgid "Admin" -msgstr "" - -#: ../../include/nav.php:221 -msgid "Site Setup and Configuration" -msgstr "" - -#: ../../include/nav.php:252 ../../include/conversation.php:869 -msgid "Loading..." +#: ../../include/page_widgets.php:7 +msgid "New Page" msgstr "" -#: ../../include/nav.php:257 -msgid "@name, #tag, ?doc, content" +#: ../../include/message.php:32 +msgid "Unable to determine sender." msgstr "" -#: ../../include/nav.php:258 -msgid "Please wait..." +#: ../../include/message.php:69 +msgid "No recipient provided." msgstr "" -#: ../../include/page_widgets.php:7 -msgid "New Page" +#: ../../include/message.php:74 +msgid "[no subject]" msgstr "" -#: ../../include/wiki.php:525 ../../include/bbcode.php:632 -msgid "Different viewers will see this text differently" +#: ../../include/message.php:225 +msgid "Stored post could not be verified." msgstr "" #: ../../include/contact_widgets.php:11 @@ -11402,12 +11577,6 @@ msgstr "" msgid "Everything" msgstr "" -#: ../../include/contact_widgets.php:91 ../../include/taxonomy.php:188 -#: ../../include/taxonomy.php:270 ../../include/widgets.php:46 -#: ../../include/widgets.php:465 -msgid "Categories" -msgstr "" - #: ../../include/contact_widgets.php:122 #, php-format msgid "%d connection in common" @@ -11419,17 +11588,12 @@ msgstr[1] "" msgid "show more" msgstr "" -#: ../../include/connections.php:95 -msgid "New window" -msgstr "" - -#: ../../include/connections.php:96 -msgid "Open the selected location in a different window or browser tab" +#: ../../include/bb2diaspora.php:409 +msgid "Attachments:" msgstr "" -#: ../../include/connections.php:214 -#, php-format -msgid "User '%s' deleted" +#: ../../include/bb2diaspora.php:506 +msgid "$Projectname event notification:" msgstr "" #: ../../include/js_strings.php:5 @@ -11572,19 +11736,19 @@ msgstr "" msgid "timeago.numbers" msgstr "" -#: ../../include/js_strings.php:45 ../../include/text.php:1314 +#: ../../include/js_strings.php:45 ../../include/text.php:1320 msgid "January" msgstr "" -#: ../../include/js_strings.php:46 ../../include/text.php:1314 +#: ../../include/js_strings.php:46 ../../include/text.php:1320 msgid "February" msgstr "" -#: ../../include/js_strings.php:47 ../../include/text.php:1314 +#: ../../include/js_strings.php:47 ../../include/text.php:1320 msgid "March" msgstr "" -#: ../../include/js_strings.php:48 ../../include/text.php:1314 +#: ../../include/js_strings.php:48 ../../include/text.php:1320 msgid "April" msgstr "" @@ -11593,31 +11757,31 @@ msgctxt "long" msgid "May" msgstr "" -#: ../../include/js_strings.php:50 ../../include/text.php:1314 +#: ../../include/js_strings.php:50 ../../include/text.php:1320 msgid "June" msgstr "" -#: ../../include/js_strings.php:51 ../../include/text.php:1314 +#: ../../include/js_strings.php:51 ../../include/text.php:1320 msgid "July" msgstr "" -#: ../../include/js_strings.php:52 ../../include/text.php:1314 +#: ../../include/js_strings.php:52 ../../include/text.php:1320 msgid "August" msgstr "" -#: ../../include/js_strings.php:53 ../../include/text.php:1314 +#: ../../include/js_strings.php:53 ../../include/text.php:1320 msgid "September" msgstr "" -#: ../../include/js_strings.php:54 ../../include/text.php:1314 +#: ../../include/js_strings.php:54 ../../include/text.php:1320 msgid "October" msgstr "" -#: ../../include/js_strings.php:55 ../../include/text.php:1314 +#: ../../include/js_strings.php:55 ../../include/text.php:1320 msgid "November" msgstr "" -#: ../../include/js_strings.php:56 ../../include/text.php:1314 +#: ../../include/js_strings.php:56 ../../include/text.php:1320 msgid "December" msgstr "" @@ -11670,31 +11834,31 @@ msgstr "" msgid "Dec" msgstr "" -#: ../../include/js_strings.php:69 ../../include/text.php:1310 +#: ../../include/js_strings.php:69 ../../include/text.php:1316 msgid "Sunday" msgstr "" -#: ../../include/js_strings.php:70 ../../include/text.php:1310 +#: ../../include/js_strings.php:70 ../../include/text.php:1316 msgid "Monday" msgstr "" -#: ../../include/js_strings.php:71 ../../include/text.php:1310 +#: ../../include/js_strings.php:71 ../../include/text.php:1316 msgid "Tuesday" msgstr "" -#: ../../include/js_strings.php:72 ../../include/text.php:1310 +#: ../../include/js_strings.php:72 ../../include/text.php:1316 msgid "Wednesday" msgstr "" -#: ../../include/js_strings.php:73 ../../include/text.php:1310 +#: ../../include/js_strings.php:73 ../../include/text.php:1316 msgid "Thursday" msgstr "" -#: ../../include/js_strings.php:74 ../../include/text.php:1310 +#: ../../include/js_strings.php:74 ../../include/text.php:1316 msgid "Friday" msgstr "" -#: ../../include/js_strings.php:75 ../../include/text.php:1310 +#: ../../include/js_strings.php:75 ../../include/text.php:1316 msgid "Saturday" msgstr "" @@ -11751,48 +11915,243 @@ msgctxt "calendar" msgid "All day" msgstr "" -#: ../../include/follow.php:27 -msgid "Channel is blocked on this site." +#: ../../include/dir_fns.php:141 +msgid "Directory Options" msgstr "" -#: ../../include/follow.php:32 -msgid "Channel location missing." +#: ../../include/dir_fns.php:143 +msgid "Safe Mode" msgstr "" -#: ../../include/follow.php:80 -msgid "Response from remote channel was incomplete." +#: ../../include/dir_fns.php:144 +msgid "Public Forums Only" msgstr "" -#: ../../include/follow.php:97 -msgid "Channel was deleted and no longer exists." +#: ../../include/dir_fns.php:145 +msgid "This Website Only" msgstr "" -#: ../../include/follow.php:147 ../../include/follow.php:183 -msgid "Protocol disabled." +#: ../../include/bbcode.php:134 ../../include/bbcode.php:1003 +#: ../../include/bbcode.php:1006 ../../include/bbcode.php:1011 +#: ../../include/bbcode.php:1014 ../../include/bbcode.php:1017 +#: ../../include/bbcode.php:1020 ../../include/bbcode.php:1025 +#: ../../include/bbcode.php:1028 ../../include/bbcode.php:1033 +#: ../../include/bbcode.php:1036 ../../include/bbcode.php:1039 +#: ../../include/bbcode.php:1042 +msgid "Image/photo" msgstr "" -#: ../../include/follow.php:171 -msgid "Channel discovery failed." +#: ../../include/bbcode.php:173 ../../include/bbcode.php:1053 +msgid "Encrypted content" msgstr "" -#: ../../include/follow.php:210 -msgid "Cannot connect to yourself." +#: ../../include/bbcode.php:189 +#, php-format +msgid "Install %s element: " msgstr "" -#: ../../include/dir_fns.php:141 -msgid "Directory Options" +#: ../../include/bbcode.php:193 +#, php-format +msgid "" +"This post contains an installable %s element, however you lack permissions " +"to install it on this site." msgstr "" -#: ../../include/dir_fns.php:143 -msgid "Safe Mode" +#: ../../include/bbcode.php:272 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" msgstr "" -#: ../../include/dir_fns.php:144 -msgid "Public Forums Only" +#: ../../include/bbcode.php:349 ../../include/bbcode.php:357 +msgid "Click to open/close" msgstr "" -#: ../../include/dir_fns.php:145 -msgid "This Website Only" +#: ../../include/bbcode.php:357 +msgid "spoiler" +msgstr "" + +#: ../../include/bbcode.php:576 ../../include/bbcode.php:719 +#: ../../include/wiki.php:572 +msgid "Different viewers will see this text differently" +msgstr "" + +#: ../../include/bbcode.php:991 +msgid "$1 wrote:" +msgstr "" + +#: ../../include/connections.php:95 +msgid "New window" +msgstr "" + +#: ../../include/connections.php:96 +msgid "Open the selected location in a different window or browser tab" +msgstr "" + +#: ../../include/connections.php:214 +#, php-format +msgid "User '%s' deleted" +msgstr "" + +#: ../../include/oembed.php:307 +msgid " by " +msgstr "" + +#: ../../include/oembed.php:308 +msgid " on " +msgstr "" + +#: ../../include/oembed.php:337 +msgid "Embedded content" +msgstr "" + +#: ../../include/oembed.php:346 +msgid "Embedding disabled" +msgstr "" + +#: ../../include/channel.php:33 +msgid "Unable to obtain identity information from database" +msgstr "" + +#: ../../include/channel.php:67 +msgid "Empty name" +msgstr "" + +#: ../../include/channel.php:70 +msgid "Name too long" +msgstr "" + +#: ../../include/channel.php:181 +msgid "No account identifier" +msgstr "" + +#: ../../include/channel.php:193 +msgid "Nickname is required." +msgstr "" + +#: ../../include/channel.php:207 +msgid "Reserved nickname. Please choose another." +msgstr "" + +#: ../../include/channel.php:212 +msgid "" +"Nickname has unsupported characters or is already being used on this site." +msgstr "" + +#: ../../include/channel.php:272 +msgid "Unable to retrieve created identity" +msgstr "" + +#: ../../include/channel.php:341 +msgid "Default Profile" +msgstr "" + +#: ../../include/channel.php:962 +msgid "Create New Profile" +msgstr "" + +#: ../../include/channel.php:982 +msgid "Visible to everybody" +msgstr "" + +#: ../../include/channel.php:1055 ../../include/channel.php:1174 +msgid "Gender:" +msgstr "" + +#: ../../include/channel.php:1057 ../../include/channel.php:1229 +msgid "Homepage:" +msgstr "" + +#: ../../include/channel.php:1058 +msgid "Online Now" +msgstr "" + +#: ../../include/channel.php:1179 +msgid "Like this channel" +msgstr "" + +#: ../../include/channel.php:1203 +msgid "j F, Y" +msgstr "" + +#: ../../include/channel.php:1204 +msgid "j F" +msgstr "" + +#: ../../include/channel.php:1211 +msgid "Birthday:" +msgstr "" + +#: ../../include/channel.php:1224 +#, php-format +msgid "for %1$d %2$s" +msgstr "" + +#: ../../include/channel.php:1227 +msgid "Sexual Preference:" +msgstr "" + +#: ../../include/channel.php:1233 +msgid "Tags:" +msgstr "" + +#: ../../include/channel.php:1235 +msgid "Political Views:" +msgstr "" + +#: ../../include/channel.php:1237 +msgid "Religion:" +msgstr "" + +#: ../../include/channel.php:1241 +msgid "Hobbies/Interests:" +msgstr "" + +#: ../../include/channel.php:1243 +msgid "Likes:" +msgstr "" + +#: ../../include/channel.php:1245 +msgid "Dislikes:" +msgstr "" + +#: ../../include/channel.php:1247 +msgid "Contact information and Social Networks:" +msgstr "" + +#: ../../include/channel.php:1249 +msgid "My other channels:" +msgstr "" + +#: ../../include/channel.php:1251 +msgid "Musical interests:" +msgstr "" + +#: ../../include/channel.php:1253 +msgid "Books, literature:" +msgstr "" + +#: ../../include/channel.php:1255 +msgid "Television:" +msgstr "" + +#: ../../include/channel.php:1257 +msgid "Film/dance/culture/entertainment:" +msgstr "" + +#: ../../include/channel.php:1259 +msgid "Love/Romance:" +msgstr "" + +#: ../../include/channel.php:1261 +msgid "Work/employment:" +msgstr "" + +#: ../../include/channel.php:1263 +msgid "School/education:" +msgstr "" + +#: ../../include/channel.php:1284 +msgid "Like this thing" msgstr "" #: ../../include/attach.php:248 ../../include/attach.php:336 @@ -11857,405 +12216,414 @@ msgstr "" msgid "Empty path" msgstr "" -#: ../../include/items.php:909 ../../include/items.php:954 -msgid "(Unknown)" +#: ../../include/auth.php:148 +msgid "Logged out." msgstr "" -#: ../../include/items.php:1152 -msgid "Visible to anybody on the internet." +#: ../../include/auth.php:275 +msgid "Failed authentication" msgstr "" -#: ../../include/items.php:1154 -msgid "Visible to you only." +#: ../../include/activities.php:41 +msgid " and " msgstr "" -#: ../../include/items.php:1156 -msgid "Visible to anybody in this network." +#: ../../include/activities.php:49 +msgid "public profile" msgstr "" -#: ../../include/items.php:1158 -msgid "Visible to anybody authenticated." +#: ../../include/activities.php:58 +#, php-format +msgid "%1$s changed %2$s to “%3$s”" msgstr "" -#: ../../include/items.php:1160 +#: ../../include/activities.php:59 #, php-format -msgid "Visible to anybody on %s." +msgid "Visit %1$s's %2$s" msgstr "" -#: ../../include/items.php:1162 -msgid "Visible to all connections." +#: ../../include/activities.php:62 +#, php-format +msgid "%1$s has an updated %2$s, changing %3$s." msgstr "" -#: ../../include/items.php:1164 -msgid "Visible to approved connections." +#: ../../include/help.php:31 +msgid "Help:" msgstr "" -#: ../../include/items.php:1166 -msgid "Visible to specific connections." +#: ../../include/help.php:63 +msgid "Not Found" msgstr "" -#: ../../include/items.php:3960 -msgid "Privacy group is empty." +#: ../../include/follow.php:27 +msgid "Channel is blocked on this site." msgstr "" -#: ../../include/items.php:3967 -#, php-format -msgid "Privacy group: %s" +#: ../../include/follow.php:32 +msgid "Channel location missing." msgstr "" -#: ../../include/items.php:3979 -msgid "Connection not found." +#: ../../include/follow.php:80 +msgid "Response from remote channel was incomplete." msgstr "" -#: ../../include/items.php:4332 -msgid "profile photo" +#: ../../include/follow.php:97 +msgid "Channel was deleted and no longer exists." msgstr "" -#: ../../include/items.php:4528 -#, php-format -msgid "[Edited %s]" +#: ../../include/follow.php:147 ../../include/follow.php:183 +msgid "Protocol disabled." msgstr "" -#: ../../include/items.php:4528 -msgctxt "edit_activity" -msgid "Post" +#: ../../include/follow.php:171 +msgid "Channel discovery failed." msgstr "" -#: ../../include/items.php:4528 -msgctxt "edit_activity" -msgid "Comment" +#: ../../include/follow.php:210 +msgid "Cannot connect to yourself." msgstr "" -#: ../../include/zot.php:705 -msgid "Invalid data packet" +#: ../../include/network.php:729 +msgid "view full size" msgstr "" -#: ../../include/zot.php:721 -msgid "Unable to verify channel signature" +#: ../../include/network.php:1978 +msgid "No Subject" msgstr "" -#: ../../include/zot.php:2336 -#, php-format -msgid "Unable to verify site signature for %s" +#: ../../include/network.php:2234 +msgid "OStatus" msgstr "" -#: ../../include/zot.php:3721 -msgid "invalid target signature" +#: ../../include/network.php:2235 +msgid "GNU-Social" msgstr "" -#: ../../include/auth.php:148 -msgid "Logged out." +#: ../../include/network.php:2236 +msgid "RSS/Atom" msgstr "" -#: ../../include/auth.php:275 -msgid "Failed authentication" +#: ../../include/network.php:2239 +msgid "Facebook" msgstr "" -#: ../../include/activities.php:41 -msgid " and " +#: ../../include/network.php:2240 +msgid "Zot" msgstr "" -#: ../../include/activities.php:49 -msgid "public profile" +#: ../../include/network.php:2241 +msgid "LinkedIn" msgstr "" -#: ../../include/activities.php:58 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" +#: ../../include/network.php:2242 +msgid "XMPP/IM" msgstr "" -#: ../../include/activities.php:59 +#: ../../include/network.php:2243 +msgid "MySpace" +msgstr "" + +#: ../../include/photos.php:115 #, php-format -msgid "Visit %1$s's %2$s" +msgid "Image exceeds website size limit of %lu bytes" msgstr "" -#: ../../include/activities.php:62 +#: ../../include/photos.php:122 +msgid "Image file is empty." +msgstr "" + +#: ../../include/photos.php:260 +msgid "Photo storage failed." +msgstr "" + +#: ../../include/photos.php:300 +msgid "a new photo" +msgstr "" + +#: ../../include/photos.php:304 #, php-format -msgid "%1$s has an updated %2$s, changing %3$s." +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" +msgstr "" + +#: ../../include/photos.php:507 ../../include/conversation.php:1839 +msgid "Photo Albums" +msgstr "" + +#: ../../include/photos.php:511 +msgid "Upload New Photos" msgstr "" -#: ../../include/text.php:459 +#: ../../include/text.php:460 msgid "prev" msgstr "" -#: ../../include/text.php:461 +#: ../../include/text.php:462 msgid "first" msgstr "" -#: ../../include/text.php:490 +#: ../../include/text.php:491 msgid "last" msgstr "" -#: ../../include/text.php:493 +#: ../../include/text.php:494 msgid "next" msgstr "" -#: ../../include/text.php:504 +#: ../../include/text.php:505 msgid "older" msgstr "" -#: ../../include/text.php:506 +#: ../../include/text.php:507 msgid "newer" msgstr "" -#: ../../include/text.php:911 +#: ../../include/text.php:917 msgid "No connections" msgstr "" -#: ../../include/text.php:936 +#: ../../include/text.php:942 #, php-format msgid "View all %s connections" msgstr "" -#: ../../include/text.php:1081 ../../include/text.php:1086 +#: ../../include/text.php:1087 ../../include/text.php:1092 msgid "poke" msgstr "" -#: ../../include/text.php:1081 ../../include/text.php:1086 +#: ../../include/text.php:1087 ../../include/text.php:1092 #: ../../include/conversation.php:243 msgid "poked" msgstr "" -#: ../../include/text.php:1087 +#: ../../include/text.php:1093 msgid "ping" msgstr "" -#: ../../include/text.php:1087 +#: ../../include/text.php:1093 msgid "pinged" msgstr "" -#: ../../include/text.php:1088 +#: ../../include/text.php:1094 msgid "prod" msgstr "" -#: ../../include/text.php:1088 +#: ../../include/text.php:1094 msgid "prodded" msgstr "" -#: ../../include/text.php:1089 +#: ../../include/text.php:1095 msgid "slap" msgstr "" -#: ../../include/text.php:1089 +#: ../../include/text.php:1095 msgid "slapped" msgstr "" -#: ../../include/text.php:1090 +#: ../../include/text.php:1096 msgid "finger" msgstr "" -#: ../../include/text.php:1090 +#: ../../include/text.php:1096 msgid "fingered" msgstr "" -#: ../../include/text.php:1091 +#: ../../include/text.php:1097 msgid "rebuff" msgstr "" -#: ../../include/text.php:1091 +#: ../../include/text.php:1097 msgid "rebuffed" msgstr "" -#: ../../include/text.php:1103 +#: ../../include/text.php:1109 msgid "happy" msgstr "" -#: ../../include/text.php:1104 +#: ../../include/text.php:1110 msgid "sad" msgstr "" -#: ../../include/text.php:1105 +#: ../../include/text.php:1111 msgid "mellow" msgstr "" -#: ../../include/text.php:1106 +#: ../../include/text.php:1112 msgid "tired" msgstr "" -#: ../../include/text.php:1107 +#: ../../include/text.php:1113 msgid "perky" msgstr "" -#: ../../include/text.php:1108 +#: ../../include/text.php:1114 msgid "angry" msgstr "" -#: ../../include/text.php:1109 +#: ../../include/text.php:1115 msgid "stupefied" msgstr "" -#: ../../include/text.php:1110 +#: ../../include/text.php:1116 msgid "puzzled" msgstr "" -#: ../../include/text.php:1111 +#: ../../include/text.php:1117 msgid "interested" msgstr "" -#: ../../include/text.php:1112 +#: ../../include/text.php:1118 msgid "bitter" msgstr "" -#: ../../include/text.php:1113 +#: ../../include/text.php:1119 msgid "cheerful" msgstr "" -#: ../../include/text.php:1114 +#: ../../include/text.php:1120 msgid "alive" msgstr "" -#: ../../include/text.php:1115 +#: ../../include/text.php:1121 msgid "annoyed" msgstr "" -#: ../../include/text.php:1116 +#: ../../include/text.php:1122 msgid "anxious" msgstr "" -#: ../../include/text.php:1117 +#: ../../include/text.php:1123 msgid "cranky" msgstr "" -#: ../../include/text.php:1118 +#: ../../include/text.php:1124 msgid "disturbed" msgstr "" -#: ../../include/text.php:1119 +#: ../../include/text.php:1125 msgid "frustrated" msgstr "" -#: ../../include/text.php:1120 +#: ../../include/text.php:1126 msgid "depressed" msgstr "" -#: ../../include/text.php:1121 +#: ../../include/text.php:1127 msgid "motivated" msgstr "" -#: ../../include/text.php:1122 +#: ../../include/text.php:1128 msgid "relaxed" msgstr "" -#: ../../include/text.php:1123 +#: ../../include/text.php:1129 msgid "surprised" msgstr "" -#: ../../include/text.php:1314 +#: ../../include/text.php:1320 msgid "May" msgstr "" -#: ../../include/text.php:1391 ../../include/text.php:1395 +#: ../../include/text.php:1397 ../../include/text.php:1401 msgid "Unknown Attachment" msgstr "" -#: ../../include/text.php:1397 +#: ../../include/text.php:1403 msgid "unknown" msgstr "" -#: ../../include/text.php:1433 +#: ../../include/text.php:1439 msgid "remove category" msgstr "" -#: ../../include/text.php:1510 +#: ../../include/text.php:1516 msgid "remove from file" msgstr "" -#: ../../include/text.php:1814 ../../include/language.php:367 -msgid "default" -msgstr "" - -#: ../../include/text.php:1822 +#: ../../include/text.php:1791 msgid "Page layout" msgstr "" -#: ../../include/text.php:1822 +#: ../../include/text.php:1791 msgid "You can create your own with the layouts tool" msgstr "" -#: ../../include/text.php:1864 +#: ../../include/text.php:1833 msgid "Page content type" msgstr "" -#: ../../include/text.php:1997 +#: ../../include/text.php:1966 msgid "activity" msgstr "" -#: ../../include/text.php:2308 +#: ../../include/text.php:2280 msgid "Design Tools" msgstr "" -#: ../../include/text.php:2314 +#: ../../include/text.php:2286 msgid "Pages" msgstr "" -#: ../../include/text.php:2336 +#: ../../include/text.php:2308 msgid "Import website..." msgstr "" -#: ../../include/text.php:2337 +#: ../../include/text.php:2309 msgid "Select folder to import" msgstr "" -#: ../../include/text.php:2338 +#: ../../include/text.php:2310 msgid "Import from a zipped folder:" msgstr "" -#: ../../include/text.php:2339 +#: ../../include/text.php:2311 msgid "Import from cloud files:" msgstr "" -#: ../../include/text.php:2340 +#: ../../include/text.php:2312 msgid "/cloud/channel/path/to/folder" msgstr "" -#: ../../include/text.php:2341 +#: ../../include/text.php:2313 msgid "Enter path to website files" msgstr "" -#: ../../include/text.php:2342 +#: ../../include/text.php:2314 msgid "Select folder" msgstr "" -#: ../../include/text.php:2343 +#: ../../include/text.php:2315 msgid "Export website..." msgstr "" -#: ../../include/text.php:2344 +#: ../../include/text.php:2316 msgid "Export to a zip file" msgstr "" -#: ../../include/text.php:2345 +#: ../../include/text.php:2317 msgid "website.zip" msgstr "" -#: ../../include/text.php:2346 +#: ../../include/text.php:2318 msgid "Enter a name for the zip file." msgstr "" -#: ../../include/text.php:2347 +#: ../../include/text.php:2319 msgid "Export to cloud files" msgstr "" -#: ../../include/text.php:2348 +#: ../../include/text.php:2320 msgid "/path/to/export/folder" msgstr "" -#: ../../include/text.php:2349 +#: ../../include/text.php:2321 msgid "Enter a path to a cloud files destination." msgstr "" -#: ../../include/text.php:2350 +#: ../../include/text.php:2322 msgid "Specify folder" msgstr "" -#: ../../include/bb2diaspora.php:401 -msgid "Attachments:" -msgstr "" - -#: ../../include/bb2diaspora.php:492 -msgid "$Projectname event notification:" -msgstr "" - #: ../../include/group.php:26 msgid "" "A deleted group with this name was revived. Existing item permissions " @@ -12287,64 +12655,6 @@ msgstr "" msgid "add" msgstr "" -#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 -msgid "Tags" -msgstr "" - -#: ../../include/taxonomy.php:293 -msgid "Keywords" -msgstr "" - -#: ../../include/taxonomy.php:314 -msgid "have" -msgstr "" - -#: ../../include/taxonomy.php:314 -msgid "has" -msgstr "" - -#: ../../include/taxonomy.php:315 -msgid "want" -msgstr "" - -#: ../../include/taxonomy.php:315 -msgid "wants" -msgstr "" - -#: ../../include/taxonomy.php:316 -msgid "likes" -msgstr "" - -#: ../../include/taxonomy.php:317 -msgid "dislikes" -msgstr "" - -#: ../../include/oembed.php:312 -msgid " by " -msgstr "" - -#: ../../include/oembed.php:313 -msgid " on " -msgstr "" - -#: ../../include/oembed.php:342 -msgid "Embedded content" -msgstr "" - -#: ../../include/oembed.php:351 -msgid "Embedding disabled" -msgstr "" - -#: ../../include/security.php:117 -msgid "guest:" -msgstr "" - -#: ../../include/security.php:535 -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/widgets.php:103 msgid "System" msgstr "" @@ -12470,8 +12780,8 @@ msgstr "" msgid "Import Calendar" msgstr "" -#: ../../include/widgets.php:883 ../../include/conversation.php:1723 -#: ../../include/conversation.php:1726 +#: ../../include/widgets.php:883 ../../include/conversation.php:1866 +#: ../../include/conversation.php:1869 msgid "Chatrooms" msgstr "" @@ -12483,70 +12793,208 @@ msgstr "" msgid "Chat Members" msgstr "" -#: ../../include/widgets.php:916 +#: ../../include/widgets.php:906 msgid "Wiki List" msgstr "" -#: ../../include/widgets.php:954 +#: ../../include/widgets.php:944 msgid "Wiki Pages" msgstr "" -#: ../../include/widgets.php:989 +#: ../../include/widgets.php:949 +msgid "Add new page" +msgstr "" + +#: ../../include/widgets.php:950 +msgid "Page name" +msgstr "" + +#: ../../include/widgets.php:983 msgid "Bookmarked Chatrooms" msgstr "" -#: ../../include/widgets.php:1020 +#: ../../include/widgets.php:1014 msgid "Suggested Chatrooms" msgstr "" -#: ../../include/widgets.php:1165 ../../include/widgets.php:1277 +#: ../../include/widgets.php:1159 ../../include/widgets.php:1271 msgid "photo/image" msgstr "" -#: ../../include/widgets.php:1220 +#: ../../include/widgets.php:1214 msgid "Click to show more" msgstr "" -#: ../../include/widgets.php:1371 +#: ../../include/widgets.php:1365 msgid "Rating Tools" msgstr "" -#: ../../include/widgets.php:1375 ../../include/widgets.php:1377 +#: ../../include/widgets.php:1369 ../../include/widgets.php:1371 msgid "Rate Me" msgstr "" -#: ../../include/widgets.php:1380 +#: ../../include/widgets.php:1374 msgid "View Ratings" msgstr "" -#: ../../include/widgets.php:1464 +#: ../../include/widgets.php:1467 msgid "Forums" msgstr "" -#: ../../include/widgets.php:1493 +#: ../../include/widgets.php:1496 msgid "Tasks" msgstr "" -#: ../../include/widgets.php:1504 -msgid "Documentation" -msgstr "" - -#: ../../include/widgets.php:1560 ../../include/widgets.php:1598 +#: ../../include/widgets.php:1562 ../../include/widgets.php:1600 msgid "Member registrations waiting for confirmation" msgstr "" -#: ../../include/widgets.php:1566 +#: ../../include/widgets.php:1568 msgid "Inspect queue" msgstr "" -#: ../../include/widgets.php:1568 +#: ../../include/widgets.php:1570 msgid "DB updates" msgstr "" -#: ../../include/widgets.php:1594 +#: ../../include/widgets.php:1596 msgid "Plugin Features" msgstr "" +#: ../../include/permissions.php:35 +msgid "Can view my normal stream and posts" +msgstr "" + +#: ../../include/permissions.php:39 +msgid "Can view my webpages" +msgstr "" + +#: ../../include/permissions.php:43 +msgid "Can post on my channel page (\"wall\")" +msgstr "" + +#: ../../include/permissions.php:46 +msgid "Can like/dislike stuff" +msgstr "" + +#: ../../include/permissions.php:46 +msgid "Profiles and things other than posts/comments" +msgstr "" + +#: ../../include/permissions.php:48 +msgid "Can forward to all my channel contacts via post @mentions" +msgstr "" + +#: ../../include/permissions.php:48 +msgid "Advanced - useful for creating group forum channels" +msgstr "" + +#: ../../include/permissions.php:49 +msgid "Can chat with me (when available)" +msgstr "" + +#: ../../include/permissions.php:50 +msgid "Can write to my file storage and photos" +msgstr "" + +#: ../../include/permissions.php:51 +msgid "Can edit my webpages" +msgstr "" + +#: ../../include/permissions.php:53 +msgid "Somewhat advanced - very useful in open communities" +msgstr "" + +#: ../../include/permissions.php:55 +msgid "Can administer my channel resources" +msgstr "" + +#: ../../include/permissions.php:55 +msgid "Extremely advanced. Leave this alone unless you know what you are doing" +msgstr "" + +#: ../../include/import.php:30 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "" + +#: ../../include/import.php:90 +msgid "Channel clone failed. Import failed." +msgstr "" + +#: ../../include/import.php:1354 +msgid "Unable to import element \"" +msgstr "" + +#: ../../include/items.php:837 ../../include/items.php:882 +msgid "(Unknown)" +msgstr "" + +#: ../../include/items.php:1080 +msgid "Visible to anybody on the internet." +msgstr "" + +#: ../../include/items.php:1082 +msgid "Visible to you only." +msgstr "" + +#: ../../include/items.php:1084 +msgid "Visible to anybody in this network." +msgstr "" + +#: ../../include/items.php:1086 +msgid "Visible to anybody authenticated." +msgstr "" + +#: ../../include/items.php:1088 +#, php-format +msgid "Visible to anybody on %s." +msgstr "" + +#: ../../include/items.php:1090 +msgid "Visible to all connections." +msgstr "" + +#: ../../include/items.php:1092 +msgid "Visible to approved connections." +msgstr "" + +#: ../../include/items.php:1094 +msgid "Visible to specific connections." +msgstr "" + +#: ../../include/items.php:3892 +msgid "Privacy group is empty." +msgstr "" + +#: ../../include/items.php:3899 +#, php-format +msgid "Privacy group: %s" +msgstr "" + +#: ../../include/items.php:3911 +msgid "Connection not found." +msgstr "" + +#: ../../include/items.php:4260 +msgid "profile photo" +msgstr "" + +#: ../../include/items.php:4456 +#, php-format +msgid "[Edited %s]" +msgstr "" + +#: ../../include/items.php:4456 +msgctxt "edit_activity" +msgid "Post" +msgstr "" + +#: ../../include/items.php:4456 +msgctxt "edit_activity" +msgid "Comment" +msgstr "" + #: ../../include/conversation.php:204 #, php-format msgid "%1$s is now connected with %2$s" @@ -12557,533 +13005,272 @@ msgstr "" msgid "%1$s poked %2$s" msgstr "" -#: ../../include/conversation.php:710 +#: ../../include/conversation.php:690 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: ../../include/conversation.php:729 +#: ../../include/conversation.php:710 msgid "Categories:" msgstr "" -#: ../../include/conversation.php:730 +#: ../../include/conversation.php:711 msgid "Filed under:" msgstr "" -#: ../../include/conversation.php:755 +#: ../../include/conversation.php:736 msgid "View in context" msgstr "" -#: ../../include/conversation.php:865 +#: ../../include/conversation.php:832 msgid "remove" msgstr "" -#: ../../include/conversation.php:870 +#: ../../include/conversation.php:837 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:963 +#: ../../include/conversation.php:930 ../../include/conversation.php:972 msgid "View Source" msgstr "" -#: ../../include/conversation.php:964 +#: ../../include/conversation.php:931 ../../include/conversation.php:982 msgid "Follow Thread" msgstr "" -#: ../../include/conversation.php:965 +#: ../../include/conversation.php:932 ../../include/conversation.php:991 msgid "Unfollow Thread" msgstr "" -#: ../../include/conversation.php:970 +#: ../../include/conversation.php:937 ../../include/conversation.php:1059 msgid "Activity/Posts" msgstr "" -#: ../../include/conversation.php:972 +#: ../../include/conversation.php:939 ../../include/conversation.php:1079 msgid "Edit Connection" msgstr "" -#: ../../include/conversation.php:973 +#: ../../include/conversation.php:940 ../../include/conversation.php:1089 msgid "Message" msgstr "" -#: ../../include/conversation.php:1093 +#: ../../include/conversation.php:1223 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:1093 +#: ../../include/conversation.php:1223 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:1097 +#: ../../include/conversation.php:1227 #, 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:1099 +#: ../../include/conversation.php:1229 #, 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:1105 +#: ../../include/conversation.php:1235 msgid "and" msgstr "" -#: ../../include/conversation.php:1108 +#: ../../include/conversation.php:1238 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1109 +#: ../../include/conversation.php:1239 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:1109 +#: ../../include/conversation.php:1239 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1152 +#: ../../include/conversation.php:1282 msgid "Set your location" msgstr "" -#: ../../include/conversation.php:1153 +#: ../../include/conversation.php:1283 msgid "Clear browser location" msgstr "" -#: ../../include/conversation.php:1201 +#: ../../include/conversation.php:1331 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1202 +#: ../../include/conversation.php:1332 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1211 +#: ../../include/conversation.php:1337 +msgid "Choose a different album..." +msgstr "" + +#: ../../include/conversation.php:1341 msgid "Comments enabled" msgstr "" -#: ../../include/conversation.php:1212 +#: ../../include/conversation.php:1342 msgid "Comments disabled" msgstr "" -#: ../../include/conversation.php:1250 +#: ../../include/conversation.php:1380 msgid "Page link name" msgstr "" -#: ../../include/conversation.php:1253 +#: ../../include/conversation.php:1383 msgid "Post as" msgstr "" -#: ../../include/conversation.php:1267 +#: ../../include/conversation.php:1397 msgid "Toggle voting" msgstr "" -#: ../../include/conversation.php:1270 +#: ../../include/conversation.php:1400 msgid "Disable comments" msgstr "" -#: ../../include/conversation.php:1271 +#: ../../include/conversation.php:1401 msgid "Toggle comments" msgstr "" -#: ../../include/conversation.php:1279 +#: ../../include/conversation.php:1409 msgid "Categories (optional, comma-separated list)" msgstr "" -#: ../../include/conversation.php:1302 +#: ../../include/conversation.php:1432 msgid "Other networks and post services" msgstr "" -#: ../../include/conversation.php:1308 +#: ../../include/conversation.php:1438 msgid "Set publish date" msgstr "" -#: ../../include/conversation.php:1562 +#: ../../include/conversation.php:1692 msgid "Discover" msgstr "" -#: ../../include/conversation.php:1565 +#: ../../include/conversation.php:1695 msgid "Imported public streams" msgstr "" -#: ../../include/conversation.php:1570 +#: ../../include/conversation.php:1700 msgid "Commented Order" msgstr "" -#: ../../include/conversation.php:1573 +#: ../../include/conversation.php:1703 msgid "Sort by Comment Date" msgstr "" -#: ../../include/conversation.php:1577 +#: ../../include/conversation.php:1707 msgid "Posted Order" msgstr "" -#: ../../include/conversation.php:1580 +#: ../../include/conversation.php:1710 msgid "Sort by Post Date" msgstr "" -#: ../../include/conversation.php:1588 +#: ../../include/conversation.php:1718 msgid "Posts that mention or involve you" msgstr "" -#: ../../include/conversation.php:1597 +#: ../../include/conversation.php:1727 msgid "Activity Stream - by date" msgstr "" -#: ../../include/conversation.php:1603 +#: ../../include/conversation.php:1733 msgid "Starred" msgstr "" -#: ../../include/conversation.php:1606 +#: ../../include/conversation.php:1736 msgid "Favourite Posts" msgstr "" -#: ../../include/conversation.php:1613 +#: ../../include/conversation.php:1743 msgid "Spam" msgstr "" -#: ../../include/conversation.php:1616 +#: ../../include/conversation.php:1746 msgid "Posts flagged as SPAM" msgstr "" -#: ../../include/conversation.php:1675 +#: ../../include/conversation.php:1818 msgid "Status Messages and Posts" msgstr "" -#: ../../include/conversation.php:1684 -msgid "About" -msgstr "" - -#: ../../include/conversation.php:1687 +#: ../../include/conversation.php:1830 msgid "Profile Details" msgstr "" -#: ../../include/conversation.php:1703 +#: ../../include/conversation.php:1846 msgid "Files and Storage" msgstr "" -#: ../../include/conversation.php:1739 +#: ../../include/conversation.php:1882 msgid "Saved Bookmarks" msgstr "" -#: ../../include/conversation.php:1749 -msgid "Manage Webpages" +#: ../../include/conversation.php:1892 +msgid "View Webpages" msgstr "" -#: ../../include/conversation.php:1814 +#: ../../include/conversation.php:1958 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1817 +#: ../../include/conversation.php:1961 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1820 +#: ../../include/conversation.php:1964 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1823 +#: ../../include/conversation.php:1967 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1826 +#: ../../include/conversation.php:1970 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1829 +#: ../../include/conversation.php:1973 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" msgstr[0] "" msgstr[1] "" -#: ../../include/permissions.php:35 -msgid "Can view my normal stream and posts" -msgstr "" - -#: ../../include/permissions.php:39 -msgid "Can view my webpages" -msgstr "" - -#: ../../include/permissions.php:43 -msgid "Can post on my channel page (\"wall\")" -msgstr "" - -#: ../../include/permissions.php:46 -msgid "Can like/dislike stuff" -msgstr "" - -#: ../../include/permissions.php:46 -msgid "Profiles and things other than posts/comments" -msgstr "" - -#: ../../include/permissions.php:48 -msgid "Can forward to all my channel contacts via post @mentions" -msgstr "" - -#: ../../include/permissions.php:48 -msgid "Advanced - useful for creating group forum channels" -msgstr "" - -#: ../../include/permissions.php:49 -msgid "Can chat with me (when available)" -msgstr "" - -#: ../../include/permissions.php:50 -msgid "Can write to my file storage and photos" -msgstr "" - -#: ../../include/permissions.php:51 -msgid "Can edit my webpages" -msgstr "" - -#: ../../include/permissions.php:53 -msgid "Somewhat advanced - very useful in open communities" -msgstr "" - -#: ../../include/permissions.php:55 -msgid "Can administer my channel resources" -msgstr "" - -#: ../../include/permissions.php:55 -msgid "Extremely advanced. Leave this alone unless you know what you are doing" -msgstr "" - -#: ../../include/account.php:35 -msgid "Not a valid email address" -msgstr "" - -#: ../../include/account.php:37 -msgid "Your email domain is not among those allowed on this site" -msgstr "" - -#: ../../include/account.php:43 -msgid "Your email address is already registered at this site." -msgstr "" - -#: ../../include/account.php:75 -msgid "An invitation is required." -msgstr "" - -#: ../../include/account.php:79 -msgid "Invitation could not be verified." -msgstr "" - -#: ../../include/account.php:130 -msgid "Please enter the required information." -msgstr "" - -#: ../../include/account.php:198 -msgid "Failed to store account information." -msgstr "" - -#: ../../include/account.php:263 -#, php-format -msgid "Registration confirmation for %s" -msgstr "" - -#: ../../include/account.php:330 -#, php-format -msgid "Registration request at %s" -msgstr "" - -#: ../../include/account.php:352 -msgid "your registration password" -msgstr "" - -#: ../../include/account.php:358 ../../include/account.php:420 -#, php-format -msgid "Registration details for %s" -msgstr "" - -#: ../../include/account.php:431 -msgid "Account approved." -msgstr "" - -#: ../../include/account.php:471 -#, php-format -msgid "Registration revoked for %s" -msgstr "" - -#: ../../include/account.php:756 ../../include/account.php:758 -msgid "Click here to upgrade." -msgstr "" - -#: ../../include/account.php:764 -msgid "This action exceeds the limits set by your subscription plan." -msgstr "" - -#: ../../include/account.php:769 -msgid "This action is not available under your subscription plan." -msgstr "" - -#: ../../include/datetime.php:147 -msgid "Birthday" -msgstr "" - -#: ../../include/datetime.php:149 -msgid "Age: " -msgstr "" - -#: ../../include/datetime.php:151 -msgid "YYYY-MM-DD or MM-DD" -msgstr "" - -#: ../../include/datetime.php:286 ../../boot.php:2554 -msgid "never" -msgstr "" - -#: ../../include/datetime.php:292 -msgid "less than a second ago" -msgstr "" - -#: ../../include/datetime.php:310 -#, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" -msgstr "" - -#: ../../include/datetime.php:321 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:324 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:327 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:330 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:333 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:336 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:339 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/datetime.php:576 -#, php-format -msgid "%1$s's birthday" -msgstr "" - -#: ../../include/datetime.php:577 -#, php-format -msgid "Happy Birthday %1$s" -msgstr "" - -#: ../../include/language.php:380 -msgid "Select an alternate language" -msgstr "" - -#: ../../include/import.php:30 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." -msgstr "" - -#: ../../include/import.php:90 -msgid "Channel clone failed. Import failed." -msgstr "" - -#: ../../include/import.php:1354 -msgid "Unable to import element \"" -msgstr "" - -#: ../../include/bbcode.php:134 ../../include/bbcode.php:901 -#: ../../include/bbcode.php:904 ../../include/bbcode.php:909 -#: ../../include/bbcode.php:912 ../../include/bbcode.php:915 -#: ../../include/bbcode.php:918 ../../include/bbcode.php:923 -#: ../../include/bbcode.php:926 ../../include/bbcode.php:931 -#: ../../include/bbcode.php:934 ../../include/bbcode.php:937 -#: ../../include/bbcode.php:940 -msgid "Image/photo" -msgstr "" - -#: ../../include/bbcode.php:173 ../../include/bbcode.php:951 -msgid "Encrypted content" -msgstr "" - -#: ../../include/bbcode.php:189 -#, php-format -msgid "Install %s element: " -msgstr "" - -#: ../../include/bbcode.php:193 -#, php-format -msgid "" -"This post contains an installable %s element, however you lack permissions " -"to install it on this site." -msgstr "" - -#: ../../include/bbcode.php:272 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" -msgstr "" - -#: ../../include/bbcode.php:349 ../../include/bbcode.php:357 -msgid "Click to open/close" -msgstr "" - -#: ../../include/bbcode.php:357 -msgid "spoiler" -msgstr "" - -#: ../../include/bbcode.php:889 -msgid "$1 wrote:" +#: ../../util/nconfig.php:34 +msgid "Source channel not found." msgstr "" #: ../../view/theme/redbasic/php/config.php:9 @@ -13218,66 +13405,66 @@ msgstr "" msgid "Set size of followup author photos" msgstr "" -#: ../../boot.php:1171 +#: ../../boot.php:1176 #, php-format msgctxt "opensearch" msgid "Search %1$s (%2$s)" msgstr "" -#: ../../boot.php:1171 +#: ../../boot.php:1176 msgctxt "opensearch" msgid "$Projectname" msgstr "" -#: ../../boot.php:1489 +#: ../../boot.php:1494 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../boot.php:1492 +#: ../../boot.php:1497 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../boot.php:1696 +#: ../../boot.php:1701 msgid "" "Create an account to access services and applications within the Hubzilla" msgstr "" -#: ../../boot.php:1717 +#: ../../boot.php:1722 msgid "Login/Email" msgstr "" -#: ../../boot.php:1718 +#: ../../boot.php:1723 msgid "Password" msgstr "" -#: ../../boot.php:1719 +#: ../../boot.php:1724 msgid "Remember me" msgstr "" -#: ../../boot.php:1722 +#: ../../boot.php:1727 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:2291 +#: ../../boot.php:2288 msgid "toggle mobile" msgstr "" -#: ../../boot.php:2446 +#: ../../boot.php:2443 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2449 +#: ../../boot.php:2446 #, php-format msgid "[hubzilla] Website SSL error for %s" msgstr "" -#: ../../boot.php:2553 +#: ../../boot.php:2563 msgid "Cron/Scheduled tasks not running." msgstr "" -#: ../../boot.php:2557 +#: ../../boot.php:2567 #, php-format msgid "[hubzilla] Cron tasks not running on %s" msgstr "" @@ -33,6 +33,6 @@ echo "enter your message to be posted as $USER @ $HUB, then hit Ctrl-D to send." MSG=$(cat) -curl -ssl -u${USER}:${PASS} --data-urlencode "status=${MSG}" https://${HUB}/api/statuses/update +curl -ssl -u${USER}:${PASS} --data-urlencode "body=${MSG}" https://${HUB}/api/z/1.0/item/update diff --git a/util/nconfig.php b/util/nconfig.php new file mode 100644 index 000000000..a7cf350d0 --- /dev/null +++ b/util/nconfig.php @@ -0,0 +1,53 @@ +#!/usr/bin/env php +<?php + +/** +* switch off channel email notifications utility +* This is a preliminary solution using the existing functions from include/channel.php. +* More options would be nice. +**/ + +if(! file_exists('include/cli_startup.php')) { + echo 'Run from the top level $Projectname web directory, as util/nconfig <args>' . PHP_EOL; + exit(1); +} + +require_once('include/cli_startup.php'); +require_once('include/channel.php'); + +cli_startup(); + + + if($argc != 2) { + echo 'Usage: util/nconfig channel_id|channel_address off' . PHP_EOL; + exit(1); + } + + if(ctype_digit($argv[1])) { + $c = channelx_by_n($argv[1]); + } + else { + $c = channelx_by_nick($argv[1]); + } + + if(! $c) { + echo t('Source channel not found.'); + exit(1); + } + + switch ($argv[2]) { + case 'off': + $result = notifications_off($c['channel_id']); + break; + default: + echo 'Only on or off in lower cases are allowed' . PHP_EOL; + exit(1); + } + + if($result['success'] == false) { + echo $result['message']; + exit(1); + } + + exit(0); + diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css index b68517e25..cea911440 100644 --- a/view/css/bootstrap-red.css +++ b/view/css/bootstrap-red.css @@ -60,8 +60,7 @@ aside .nav-pills > li > a, padding: 6px 10px; } -.wall-item-tools .dropdown-menu, -.section-title-wrapper .dropdown-menu { +.wall-item-tools .dropdown-menu { min-width: auto; } diff --git a/view/css/conversation.css b/view/css/conversation.css index 0b6674b15..aec457302 100644 --- a/view/css/conversation.css +++ b/view/css/conversation.css @@ -336,6 +336,19 @@ a.wall-item-name-link { /* bb-code */ +/* prevent [toc] bbcode links to scroll the titles behind the navbar */ +.section-content-wrapper h1, +.section-content-wrapper h2, +.section-content-wrapper h3, +.section-content-wrapper h4 { + padding-top: 60px; + margin-top: -40px; +} + +.toc { + margin-top: 1em; +} + code { font-family: Courier, monospace; font-size: 1em; diff --git a/view/css/default.css b/view/css/default.css index db0628cb3..a51461201 100644 --- a/view/css/default.css +++ b/view/css/default.css @@ -11,16 +11,18 @@ main { table-layout: fixed; position: relative; width: 100%; - height: 100%; + height: 100vh; } aside { + position: relative; display: table-cell; vertical-align: top; padding: 71px 7px 0px 7px; } section { + position: relative; width: 100%; display: table-cell; vertical-align: top; diff --git a/view/css/mod_connections.css b/view/css/mod_connections.css index a33430e48..00e6e2a70 100644 --- a/view/css/mod_connections.css +++ b/view/css/mod_connections.css @@ -33,3 +33,7 @@ .contact-info-label { font-weight: bold; } + +.connphone { + color: green; +}
\ No newline at end of file diff --git a/view/css/mod_connedit.css b/view/css/mod_connedit.css index 87eff66d4..f1784721e 100644 --- a/view/css/mod_connedit.css +++ b/view/css/mod_connedit.css @@ -16,3 +16,112 @@ #perms-tool-table td { vertical-align: top; } + + +.vcard-header { + cursor: pointer; + padding: 7px 10px; + margin-bottom: 3px; +} + +.vcard-header:hover, +.vcard-header.active { + background-color: rgb(238,238,238); + cursor: pointer; +} + +.vcard-header.active:hover { + cursor: initial; +} + +.vcard-add-field { + margin-top: 8px; + display: none; +} + +.vcard-cancel { + margin: 6px 10px; + height: 32px; + line-height: 32px; + color: #777; + font-size: 16px; + + cursor: pointer; + display: none; + float: right; +} + +.vcard-info { + display: none; +} + +.vcard-nophoto { + display: inline-block; + width: 32px; + height: 32px; + border-radius: 4px; + border: 1px solid #ccc; + text-align: center; + font-size: 20px; + color: #fff; + background-color: #ddd; +} + +.vcard-photo { + width: 32px; + height: 32px; + border-radius: 4px; + border: 1px solid #ccc; + text-align: center; +} + +.vcard-fn-preview, +input.vcard-fn { + font-size: 16px !important; + margin-left: 5px; +} + +.vcard-email-preview, +.vcard-tel-preview { + color: #999; +} + + +.vcard-fn, +#create_form, +#more_block { + display: none; +} + +input.vcard-fn, +.vcard-fn-create input, +.vcard-org input, +.vcard-title input, +.vcard-tel input, +.vcard-email input, +.vcard-impp input, +.vcard-url input, +.vcard-adr input, +.vcard-note input { + padding: 0px; + margin-left: 5px; + border-width: 0px 0px 1px 0px; + border-radius: 0px; + background-color: transparent; + min-width: 160px; +} + +#template-form-vcard-org, +#template-form-vcard-title, +#template-form-vcard-tel, +#template-form-vcard-email, +#template-form-vcard-impp, +#template-form-vcard-url, +#template-form-vcard-adr, +#template-form-vcard-note { + display: none; +} + +.connphone { + color: green; +}
\ No newline at end of file diff --git a/view/css/mod_help.css b/view/css/mod_help.css new file mode 100644 index 000000000..f59a40894 --- /dev/null +++ b/view/css/mod_help.css @@ -0,0 +1,29 @@ +.doco-list-group-item > a { + font-weight: bold; +} + +.sub-menu { + margin: 3px 0px 10px 10px; +} + +#doco-content h3 { + border-bottom: #ccc 3px solid; + padding-bottom: 0.3em; +} + +#doco-content h4 { + text-decoration: underline; +} + +#doco-content h5 { + text-decoration: underline; +} + +#region_1 .widget ul ul { + list-style-type: none; +} + +.toc-content li, + #doco-top-toc li { + padding: 3px 0px; +} diff --git a/view/css/mod_profile.css b/view/css/mod_profile.css index 35016d10b..6591f8a57 100644 --- a/view/css/mod_profile.css +++ b/view/css/mod_profile.css @@ -5,3 +5,111 @@ .profile-thing-img { margin: 7px 0px; } + +.vcard-header { + cursor: pointer; + padding: 7px 10px; + margin-bottom: 3px; +} + +.vcard-header:hover, +.vcard-header.active { + background-color: rgb(238,238,238); + cursor: pointer; +} + +.vcard-header.active:hover { + cursor: initial; +} + +.vcard-add-field { + margin-top: 8px; + display: none; +} + +.vcard-cancel { + margin: 6px 10px; + height: 32px; + line-height: 32px; + color: #777; + font-size: 16px; + + cursor: pointer; + display: none; + float: right; +} + +.vcard-info { + display: none; +} + +.vcard-nophoto { + display: inline-block; + width: 32px; + height: 32px; + border-radius: 4px; + border: 1px solid #ccc; + text-align: center; + font-size: 20px; + color: #fff; + background-color: #ddd; +} + +.vcard-photo { + width: 32px; + height: 32px; + border-radius: 4px; + border: 1px solid #ccc; + text-align: center; +} + +.vcard-fn-preview, +input.vcard-fn { + font-size: 16px !important; + margin-left: 5px; +} + +.vcard-email-preview, +.vcard-tel-preview { + color: #999; +} + + +.vcard-fn, +#create_form, +#more_block { + display: none; +} + +input.vcard-fn, +.vcard-fn-create input, +.vcard-org input, +.vcard-title input, +.vcard-tel input, +.vcard-email input, +.vcard-impp input, +.vcard-url input, +.vcard-adr input, +.vcard-note input { + padding: 0px; + margin-left: 5px; + border-width: 0px 0px 1px 0px; + border-radius: 0px; + background-color: transparent; + min-width: 160px; +} + +#template-form-vcard-org, +#template-form-vcard-title, +#template-form-vcard-tel, +#template-form-vcard-email, +#template-form-vcard-impp, +#template-form-vcard-url, +#template-form-vcard-adr, +#template-form-vcard-note { + display: none; +} + +.connphone { + color: green; +} diff --git a/view/css/mod_profiles.css b/view/css/mod_profiles.css index 4d83e6419..bd2a449ed 100644 --- a/view/css/mod_profiles.css +++ b/view/css/mod_profiles.css @@ -29,3 +29,110 @@ height: 48px; margin: 10px 0px; } +.vcard-header { + cursor: pointer; + padding: 7px 10px; + margin-bottom: 3px; +} + +.vcard-header:hover, +.vcard-header.active { + background-color: rgb(238,238,238); + cursor: pointer; +} + +.vcard-header.active:hover { + cursor: initial; +} + +.vcard-add-field { + margin-top: 8px; + display: none; +} + +.vcard-cancel { + margin: 6px 10px; + height: 32px; + line-height: 32px; + color: #777; + font-size: 16px; + + cursor: pointer; + display: none; + float: right; +} + +.vcard-info { + display: none; +} + +.vcard-nophoto { + display: inline-block; + width: 32px; + height: 32px; + border-radius: 4px; + border: 1px solid #ccc; + text-align: center; + font-size: 20px; + color: #fff; + background-color: #ddd; +} + +.vcard-photo { + width: 32px; + height: 32px; + border-radius: 4px; + border: 1px solid #ccc; + text-align: center; +} + +.vcard-fn-preview, +input.vcard-fn { + font-size: 16px !important; + margin-left: 5px; +} + +.vcard-email-preview, +.vcard-tel-preview { + color: #999; +} + + +.vcard-fn, +#create_form, +#more_block { + display: none; +} + +input.vcard-fn, +.vcard-fn-create input, +.vcard-org input, +.vcard-title input, +.vcard-tel input, +.vcard-email input, +.vcard-impp input, +.vcard-url input, +.vcard-adr input, +.vcard-note input { + padding: 0px; + margin-left: 5px; + border-width: 0px 0px 1px 0px; + border-radius: 0px; + background-color: transparent; + min-width: 160px; +} + +#template-form-vcard-org, +#template-form-vcard-title, +#template-form-vcard-tel, +#template-form-vcard-email, +#template-form-vcard-impp, +#template-form-vcard-url, +#template-form-vcard-adr, +#template-form-vcard-note { + display: none; +} + +.connphone { + color: green; +}
\ No newline at end of file diff --git a/view/css/mod_wiki.css b/view/css/mod_wiki.css new file mode 100644 index 000000000..49eb89ecc --- /dev/null +++ b/view/css/mod_wiki.css @@ -0,0 +1,54 @@ +#ace-editor { + position: relative; + width: 100%; + height: 500px; + border: 1px solid #ccc; + border-top: 0px; +} + +#editor { + width: 100%; + height: 500px; + border: 1px solid #ccc; + border-top: 0px; + display: inherit; +} + +#id_commitMsg_wrapper { + margin-top: 3px; +} + +.fade.in { + -webkit-transition: opacity 0.5s 0.5s ease; + -moz-transition: opacity 0.5s 0.5s ease; + -o-transition: opacity 0.5s 0.5s ease; + transition: opacity 0.5s 0.5s ease; +} + +#new-wiki-form-wrapper { + display: none; +} + +#wikis-index { + width: 100%; +} + +#wikis-index th:nth-child(1), +#wikis-index td:nth-child(1){ + padding: 7px 3px 7px 10px; +} + +#wikis-index th:nth-child(4), +#wikis-index td:nth-child(4){ + padding: 7px 10px 7px 7px; +} + +#wikis-index th:nth-child(5), +#wikis-index td:nth-child(5){ + padding: 7px 10px 7px 7px; +} + +.wikis-index-tool { + padding: 7px 10px; +} + diff --git a/view/css/widgets.css b/view/css/widgets.css index 10c66c213..9b97d8bf7 100644 --- a/view/css/widgets.css +++ b/view/css/widgets.css @@ -18,6 +18,41 @@ word-wrap: break-word; } +.widget-nav-pills-icons { + opacity: 0; + padding: 6px 10px; + float: right; + position: relative; + z-index:1; +} + + +.widget-nav-pills-checkbox { + padding: 6px 10px; + float: right; + position: relative; + z-index:1; + cursor: pointer; +} + +i.widget-nav-pills-icons, +i.widget-nav-pills-checkbox { + margin-top: 2px; +} + +.widget-nav-pills-icons:hover + a { + background-color: #eee; +} + +.widget-nav-pills-checkbox:hover + a { + background-color: #eee; +} + +li:hover .widget-nav-pills-icons { + opacity: 1; +} + + /* suggest */ .suggest-widget-more { @@ -29,8 +64,9 @@ #note-text { padding: 5px; width: 100%; - resize: vertical; - height: 250px; + resize: none; + min-height: 250px; + overflow: hidden; } /* saved searches */ diff --git a/view/de/hmessages.po b/view/de/hmessages.po index ac4f69f53..fbdb33166 100644 --- a/view/de/hmessages.po +++ b/view/de/hmessages.po @@ -10,6 +10,7 @@ # Einer von Vielen <tom@jfellow.net>, 2013 # Ettore Atalan <atalanttore@googlemail.com>, 2015-2016 # Frank Dieckmann <frank@lumina-verte.org>, 2013 +# Harald Klimach <harald@klimachs.de>, 2016 # JooBee <d13@raclan.de>, 2014 # Kai <kai@proppower.de>, 2015 # Oliver <post@toktan.org>, 2015-2016 @@ -24,8 +25,8 @@ msgid "" msgstr "" "Project-Id-Version: Redmatrix\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-11 00:05-0800\n" -"PO-Revision-Date: 2016-11-14 12:03+0000\n" +"POT-Creation-Date: 2016-12-09 00:05-0800\n" +"PO-Revision-Date: 2016-12-10 12:27+0000\n" "Last-Translator: Phellmes <forum@suschka.de>\n" "Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n" "MIME-Version: 1.0\n" @@ -34,154 +35,155 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../../Zotlabs/Access/PermissionRoles.php:182 +#: ../../Zotlabs/Access/PermissionRoles.php:227 #: ../../include/permissions.php:945 msgid "Social Networking" msgstr "Soziales Netzwerk" -#: ../../Zotlabs/Access/PermissionRoles.php:183 +#: ../../Zotlabs/Access/PermissionRoles.php:228 #: ../../include/permissions.php:945 msgid "Social - Mostly Public" msgstr "Soziales Netzwerk - Weitgehend öffentlich" -#: ../../Zotlabs/Access/PermissionRoles.php:184 +#: ../../Zotlabs/Access/PermissionRoles.php:229 #: ../../include/permissions.php:945 msgid "Social - Restricted" msgstr "Soziales Netzwerk - Beschränkt" -#: ../../Zotlabs/Access/PermissionRoles.php:185 +#: ../../Zotlabs/Access/PermissionRoles.php:230 #: ../../include/permissions.php:945 msgid "Social - Private" msgstr "Soziales Netzwerk - Privat" -#: ../../Zotlabs/Access/PermissionRoles.php:188 +#: ../../Zotlabs/Access/PermissionRoles.php:233 #: ../../include/permissions.php:946 msgid "Community Forum" msgstr "Forum" -#: ../../Zotlabs/Access/PermissionRoles.php:189 +#: ../../Zotlabs/Access/PermissionRoles.php:234 #: ../../include/permissions.php:946 msgid "Forum - Mostly Public" msgstr "Forum - Weitgehend öffentlich" -#: ../../Zotlabs/Access/PermissionRoles.php:190 +#: ../../Zotlabs/Access/PermissionRoles.php:235 #: ../../include/permissions.php:946 msgid "Forum - Restricted" msgstr "Forum - Beschränkt" -#: ../../Zotlabs/Access/PermissionRoles.php:191 +#: ../../Zotlabs/Access/PermissionRoles.php:236 #: ../../include/permissions.php:946 msgid "Forum - Private" msgstr "Forum - Privat" -#: ../../Zotlabs/Access/PermissionRoles.php:194 +#: ../../Zotlabs/Access/PermissionRoles.php:239 #: ../../include/permissions.php:947 msgid "Feed Republish" msgstr "Teilen von Feeds" -#: ../../Zotlabs/Access/PermissionRoles.php:195 +#: ../../Zotlabs/Access/PermissionRoles.php:240 #: ../../include/permissions.php:947 msgid "Feed - Mostly Public" msgstr "Feeds - Weitgehend öffentlich" -#: ../../Zotlabs/Access/PermissionRoles.php:196 +#: ../../Zotlabs/Access/PermissionRoles.php:241 #: ../../include/permissions.php:947 msgid "Feed - Restricted" msgstr "Feeds - Beschränkt" -#: ../../Zotlabs/Access/PermissionRoles.php:199 +#: ../../Zotlabs/Access/PermissionRoles.php:244 #: ../../include/permissions.php:948 msgid "Special Purpose" msgstr "Für besondere Zwecke" -#: ../../Zotlabs/Access/PermissionRoles.php:200 +#: ../../Zotlabs/Access/PermissionRoles.php:245 #: ../../include/permissions.php:948 msgid "Special - Celebrity/Soapbox" msgstr "Speziell - Mitteilungs-Kanal (keine Kommentare)" -#: ../../Zotlabs/Access/PermissionRoles.php:201 +#: ../../Zotlabs/Access/PermissionRoles.php:246 #: ../../include/permissions.php:948 msgid "Special - Group Repository" msgstr "Speziell - Gruppenarchiv" -#: ../../Zotlabs/Access/PermissionRoles.php:204 +#: ../../Zotlabs/Access/PermissionRoles.php:249 #: ../../Zotlabs/Module/Register.php:213 #: ../../Zotlabs/Module/New_channel.php:132 -#: ../../Zotlabs/Module/Settings/Channel.php:442 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144 -#: ../../extend/addon/addon/cdav/cdav.php:270 -#: ../../extend/addon/addon/cdav/cdav.php:277 ../../include/selectors.php:49 -#: ../../include/selectors.php:66 ../../include/selectors.php:104 -#: ../../include/selectors.php:140 ../../include/permissions.php:949 +#: ../../Zotlabs/Module/Settings/Channel.php:445 +#: ../../extend/addon/addon/cdav/cdav.php:277 +#: ../../extend/addon/addon/cdav/cdav.php:284 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1148 +#: ../../include/selectors.php:49 ../../include/selectors.php:66 +#: ../../include/selectors.php:104 ../../include/selectors.php:140 +#: ../../include/permissions.php:949 msgid "Other" msgstr "Andere" -#: ../../Zotlabs/Access/PermissionRoles.php:205 +#: ../../Zotlabs/Access/PermissionRoles.php:250 #: ../../include/permissions.php:949 msgid "Custom/Expert Mode" msgstr "Benutzerdefiniert/Expertenmodus" -#: ../../Zotlabs/Access/Permissions.php:30 +#: ../../Zotlabs/Access/Permissions.php:46 msgid "Can view my channel stream and posts" msgstr "Kann meinen Kanal-Stream und meine Beiträge sehen" -#: ../../Zotlabs/Access/Permissions.php:31 ../../include/permissions.php:42 +#: ../../Zotlabs/Access/Permissions.php:47 ../../include/permissions.php:42 msgid "Can send me their channel stream and posts" msgstr "Kann mir die Beiträge aus seinem/ihrem Kanal schicken" -#: ../../Zotlabs/Access/Permissions.php:32 ../../include/permissions.php:36 +#: ../../Zotlabs/Access/Permissions.php:48 ../../include/permissions.php:36 msgid "Can view my default channel profile" msgstr "Kann mein Standardprofil sehen" -#: ../../Zotlabs/Access/Permissions.php:33 ../../include/permissions.php:37 +#: ../../Zotlabs/Access/Permissions.php:49 ../../include/permissions.php:37 msgid "Can view my connections" msgstr "Kann meine Verbindungen sehen" -#: ../../Zotlabs/Access/Permissions.php:34 ../../include/permissions.php:38 +#: ../../Zotlabs/Access/Permissions.php:50 ../../include/permissions.php:38 msgid "Can view my file storage and photos" msgstr "Kann meine Datei- und Bilderordner sehen" -#: ../../Zotlabs/Access/Permissions.php:35 +#: ../../Zotlabs/Access/Permissions.php:51 msgid "Can upload/modify my file storage and photos" msgstr "Kann in meine Datei- und Bilderordner hochladen/ändern" -#: ../../Zotlabs/Access/Permissions.php:36 +#: ../../Zotlabs/Access/Permissions.php:52 msgid "Can view my channel webpages" msgstr "Kann die Webseiten meines Kanals sehen" -#: ../../Zotlabs/Access/Permissions.php:37 +#: ../../Zotlabs/Access/Permissions.php:53 msgid "Can create/edit my channel webpages" msgstr "Kann Webseiten in meinem Kanal erstellen/ändern" -#: ../../Zotlabs/Access/Permissions.php:38 +#: ../../Zotlabs/Access/Permissions.php:54 msgid "Can post on my channel (wall) page" msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen" -#: ../../Zotlabs/Access/Permissions.php:39 ../../include/permissions.php:44 +#: ../../Zotlabs/Access/Permissions.php:55 ../../include/permissions.php:44 msgid "Can comment on or like my posts" msgstr "Darf meine Beiträge kommentieren und mögen/nicht mögen" -#: ../../Zotlabs/Access/Permissions.php:40 ../../include/permissions.php:45 +#: ../../Zotlabs/Access/Permissions.php:56 ../../include/permissions.php:45 msgid "Can send me private mail messages" msgstr "Kann mir private Nachrichten schicken" -#: ../../Zotlabs/Access/Permissions.php:41 +#: ../../Zotlabs/Access/Permissions.php:57 msgid "Can like/dislike profiles and profile things" msgstr "Kann Profile und Profilsachen mögen/nicht mögen" -#: ../../Zotlabs/Access/Permissions.php:42 +#: ../../Zotlabs/Access/Permissions.php:58 msgid "Can forward to all my channel connections via @+ mentions in posts" msgstr "Kann an alle meine Verbindungen via @-Erwähnungen Nachrichten weiterleiten" -#: ../../Zotlabs/Access/Permissions.php:43 +#: ../../Zotlabs/Access/Permissions.php:59 msgid "Can chat with me" msgstr "Kann mit mir chatten" -#: ../../Zotlabs/Access/Permissions.php:44 ../../include/permissions.php:53 +#: ../../Zotlabs/Access/Permissions.php:60 ../../include/permissions.php:53 msgid "Can source my public posts in derived channels" msgstr "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden" -#: ../../Zotlabs/Access/Permissions.php:45 +#: ../../Zotlabs/Access/Permissions.php:61 msgid "Can administer my channel" msgstr "Kann meinen Kanal administrieren" @@ -189,7 +191,7 @@ msgstr "Kann meinen Kanal administrieren" msgid "parent" msgstr "Übergeordnetes Verzeichnis" -#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2723 +#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2682 msgid "Collection" msgstr "Sammlung" @@ -217,16 +219,16 @@ msgstr "Postausgang für überwachte Kalender" #: ../../Zotlabs/Module/Photos.php:1249 #: ../../Zotlabs/Module/Embedphotos.php:145 ../../Zotlabs/Lib/Apps.php:490 #: ../../Zotlabs/Lib/Apps.php:565 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 #: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 -#: ../../include/widgets.php:1682 ../../include/conversation.php:1047 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 +#: ../../include/widgets.php:1754 ../../include/conversation.php:1047 msgid "Unknown" msgstr "Unbekannt" #: ../../Zotlabs/Storage/Browser.php:224 ../../Zotlabs/Module/Fbrowser.php:85 #: ../../Zotlabs/Lib/Apps.php:217 ../../include/nav.php:96 -#: ../../include/conversation.php:1700 +#: ../../include/conversation.php:1699 msgid "Files" msgstr "Dateien" @@ -244,7 +246,8 @@ msgstr "Geteilt" #: ../../Zotlabs/Module/Webpages.php:239 #: ../../extend/addon/addon/cdav/include/widgets.php:127 #: ../../extend/addon/addon/cdav/include/widgets.php:164 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151 +#: ../../include/widgets.php:969 msgid "Create" msgstr "Erstelle" @@ -255,27 +258,27 @@ msgstr "Erstelle" #: ../../Zotlabs/Module/Embedphotos.php:157 #: ../../extend/addon/addon/cdav/include/widgets.php:132 #: ../../extend/addon/addon/cdav/include/widgets.php:168 -#: ../../include/widgets.php:1695 +#: ../../include/widgets.php:1767 msgid "Upload" msgstr "Hochladen" #: ../../Zotlabs/Storage/Browser.php:233 #: ../../Zotlabs/Module/Admin/Channels.php:159 -#: ../../Zotlabs/Module/Sharedwithme.php:99 +#: ../../Zotlabs/Module/Sharedwithme.php:99 ../../Zotlabs/Module/Wiki.php:151 #: ../../Zotlabs/Module/Settings/Oauth.php:89 #: ../../Zotlabs/Module/Settings/Oauth.php:115 #: ../../Zotlabs/Module/Chat.php:250 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1132 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136 #: ../../extend/addon/addon/rendezvous/rendezvous.php:132 msgid "Name" msgstr "Name" -#: ../../Zotlabs/Storage/Browser.php:234 +#: ../../Zotlabs/Storage/Browser.php:234 ../../Zotlabs/Module/Wiki.php:152 msgid "Type" msgstr "Typ" #: ../../Zotlabs/Storage/Browser.php:235 -#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1397 +#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1390 msgid "Size" msgstr "Größe" @@ -285,14 +288,15 @@ msgid "Last Modified" msgstr "Zuletzt geändert" #: ../../Zotlabs/Storage/Browser.php:238 -#: ../../Zotlabs/Module/Editblock.php:109 #: ../../Zotlabs/Module/Connections.php:290 #: ../../Zotlabs/Module/Connections.php:310 #: ../../Zotlabs/Module/Admin/Profs.php:154 #: ../../Zotlabs/Module/Editlayout.php:114 #: ../../Zotlabs/Module/Editwebpage.php:145 ../../Zotlabs/Module/Menu.php:112 -#: ../../Zotlabs/Module/Editpost.php:84 ../../Zotlabs/Module/Blocks.php:160 -#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:240 +#: ../../Zotlabs/Module/Editblock.php:109 ../../Zotlabs/Module/Editpost.php:84 +#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:192 +#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Wiki.php:144 +#: ../../Zotlabs/Module/Wiki.php:252 #: ../../Zotlabs/Module/Settings/Oauth.php:149 #: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Lib/Apps.php:341 #: ../../Zotlabs/Lib/ThreadItem.php:106 @@ -300,25 +304,25 @@ msgstr "Zuletzt geändert" #: ../../extend/addon/addon/cdav/include/widgets.php:161 #: ../../include/channel.php:961 ../../include/channel.php:965 #: ../../include/page_widgets.php:9 ../../include/page_widgets.php:39 -#: ../../include/menu.php:113 +#: ../../include/menu.php:113 ../../include/widgets.php:965 msgid "Edit" msgstr "Bearbeiten" -#: ../../Zotlabs/Storage/Browser.php:239 -#: ../../Zotlabs/Module/Editblock.php:134 +#: ../../Zotlabs/Storage/Browser.php:239 ../../Zotlabs/Module/Connedit.php:635 #: ../../Zotlabs/Module/Connections.php:263 #: ../../Zotlabs/Module/Admin/Profs.php:155 #: ../../Zotlabs/Module/Admin/Accounts.php:173 #: ../../Zotlabs/Module/Admin/Channels.php:149 #: ../../Zotlabs/Module/Editlayout.php:137 -#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177 +#: ../../Zotlabs/Module/Editwebpage.php:170 +#: ../../Zotlabs/Module/Editblock.php:134 ../../Zotlabs/Module/Group.php:177 #: ../../Zotlabs/Module/Photos.php:1179 ../../Zotlabs/Module/Blocks.php:162 -#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Module/Webpages.php:242 +#: ../../Zotlabs/Module/Webpages.php:242 #: ../../Zotlabs/Module/Settings/Oauth.php:150 #: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Lib/Apps.php:342 #: ../../Zotlabs/Lib/ThreadItem.php:126 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:860 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:864 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1153 #: ../../include/conversation.php:676 msgid "Delete" msgstr "Löschen" @@ -349,22 +353,12 @@ msgstr "Datei hochladen" msgid "Drop files here to immediately upload" msgstr "Dateien zum sofortigen Hochladen hier fallen lassen" -#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Profperm.php:28 -#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:114 -#: ../../Zotlabs/Module/Like.php:283 ../../Zotlabs/Module/Dreport.php:10 -#: ../../Zotlabs/Module/Dreport.php:68 ../../Zotlabs/Module/Subthread.php:62 -#: ../../extend/addon/addon/frphotos/frphotos.php:81 -#: ../../extend/addon/addon/redfiles/redfiles.php:109 -#: ../../extend/addon/addon/redphotos/redphotos.php:119 -#: ../../include/items.php:399 -msgid "Permission denied" -msgstr "Keine Berechtigung" - -#: ../../Zotlabs/Web/WebServer.php:128 ../../Zotlabs/Web/Router.php:67 +#: ../../Zotlabs/Web/Router.php:67 ../../Zotlabs/Web/WebServer.php:128 #: ../../Zotlabs/Module/Achievements.php:34 -#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Authtest.php:16 -#: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Editblock.php:67 -#: ../../Zotlabs/Module/Page.php:35 ../../Zotlabs/Module/Page.php:91 +#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Connedit.php:397 +#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Bookmarks.php:61 +#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Page.php:35 +#: ../../Zotlabs/Module/Page.php:91 ../../Zotlabs/Module/Manage.php:10 #: ../../Zotlabs/Module/Connections.php:33 #: ../../Zotlabs/Module/Cover_photo.php:277 #: ../../Zotlabs/Module/Cover_photo.php:290 @@ -373,77 +367,90 @@ msgstr "Keine Berechtigung" #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:104 -#: ../../Zotlabs/Module/Editwebpage.php:126 ../../Zotlabs/Module/Manage.php:10 +#: ../../Zotlabs/Module/Editwebpage.php:126 +#: ../../Zotlabs/Module/Channel.php:107 ../../Zotlabs/Module/Channel.php:237 +#: ../../Zotlabs/Module/Channel.php:277 ../../Zotlabs/Module/Network.php:15 #: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Appman.php:75 -#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Filestorage.php:23 +#: ../../Zotlabs/Module/Filestorage.php:23 #: ../../Zotlabs/Module/Filestorage.php:78 #: ../../Zotlabs/Module/Filestorage.php:93 -#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Item.php:216 -#: ../../Zotlabs/Module/Item.php:224 ../../Zotlabs/Module/Item.php:1074 -#: ../../Zotlabs/Module/Profiles.php:197 ../../Zotlabs/Module/Profiles.php:595 -#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Group.php:13 +#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Item.php:220 +#: ../../Zotlabs/Module/Item.php:230 ../../Zotlabs/Module/Item.php:1098 +#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Mail.php:135 #: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76 -#: ../../Zotlabs/Module/Channel.php:107 ../../Zotlabs/Module/Channel.php:237 -#: ../../Zotlabs/Module/Channel.php:277 ../../Zotlabs/Module/Locs.php:87 -#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Mitem.php:115 -#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mood.php:116 -#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Photos.php:73 -#: ../../Zotlabs/Module/Setup.php:218 ../../Zotlabs/Module/Network.php:15 +#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94 +#: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Group.php:13 +#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Message.php:18 +#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Photos.php:73 +#: ../../Zotlabs/Module/Setup.php:212 ../../Zotlabs/Module/Editpost.php:17 #: ../../Zotlabs/Module/New_channel.php:77 -#: ../../Zotlabs/Module/New_channel.php:104 ../../Zotlabs/Module/Mail.php:135 +#: ../../Zotlabs/Module/New_channel.php:104 #: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Module/Poke.php:137 -#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94 +#: ../../Zotlabs/Module/Profiles.php:197 ../../Zotlabs/Module/Profiles.php:595 #: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 #: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 #: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Rate.php:113 +#: ../../Zotlabs/Module/Like.php:181 #: ../../Zotlabs/Module/Profile_photo.php:273 #: ../../Zotlabs/Module/Profile_photo.php:286 -#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Events.php:267 +#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Api.php:24 #: ../../Zotlabs/Module/Regmod.php:21 ../../Zotlabs/Module/Pdledit.php:29 -#: ../../Zotlabs/Module/Connedit.php:395 #: ../../Zotlabs/Module/Service_limits.php:11 #: ../../Zotlabs/Module/Webpages.php:116 -#: ../../Zotlabs/Module/Sharedwithme.php:11 -#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30 -#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294 -#: ../../Zotlabs/Module/Thing.php:335 +#: ../../Zotlabs/Module/Sharedwithme.php:11 ../../Zotlabs/Module/Wiki.php:189 +#: ../../Zotlabs/Module/Wiki.php:302 ../../Zotlabs/Module/Sources.php:74 +#: ../../Zotlabs/Module/Suggest.php:30 ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Thing.php:335 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Chat.php:100 -#: ../../Zotlabs/Module/Chat.php:105 ../../Zotlabs/Lib/Chatroom.php:137 +#: ../../Zotlabs/Module/Chat.php:105 ../../Zotlabs/Module/Events.php:267 +#: ../../Zotlabs/Lib/Chatroom.php:137 #: ../../extend/addon/addon/friendica/dfrn_confirm.php:55 #: ../../extend/addon/addon/keepout/keepout.php:36 #: ../../extend/addon/addon/pumpio/pumpio.php:40 #: ../../extend/addon/addon/openid/Mod_Id.php:53 #: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:58 -#: ../../include/photos.php:27 ../../include/attach.php:142 +#: ../../include/items.php:3422 ../../include/attach.php:142 #: ../../include/attach.php:189 ../../include/attach.php:253 #: ../../include/attach.php:267 ../../include/attach.php:274 #: ../../include/attach.php:341 ../../include/attach.php:355 #: ../../include/attach.php:362 ../../include/attach.php:439 #: ../../include/attach.php:906 ../../include/attach.php:977 -#: ../../include/attach.php:1135 ../../include/items.php:3490 +#: ../../include/attach.php:1135 ../../include/photos.php:27 msgid "Permission denied." msgstr "Berechtigung verweigert." -#: ../../Zotlabs/Web/Router.php:148 ../../include/help.php:62 +#: ../../Zotlabs/Web/Router.php:148 ../../include/help.php:63 msgid "Not Found" msgstr "Nicht gefunden" -#: ../../Zotlabs/Web/Router.php:151 ../../Zotlabs/Module/Display.php:120 -#: ../../Zotlabs/Module/Page.php:94 ../../Zotlabs/Module/Block.php:79 -#: ../../include/help.php:65 +#: ../../Zotlabs/Web/Router.php:151 ../../Zotlabs/Module/Page.php:94 +#: ../../Zotlabs/Module/Display.php:120 ../../Zotlabs/Module/Block.php:79 +#: ../../include/help.php:66 msgid "Page not found." msgstr "Seite nicht gefunden." +#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Dreport.php:10 +#: ../../Zotlabs/Module/Dreport.php:68 +#: ../../Zotlabs/Module/Import_items.php:114 ../../Zotlabs/Module/Group.php:72 +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Like.php:283 +#: ../../Zotlabs/Module/Subthread.php:62 +#: ../../extend/addon/addon/frphotos/frphotos.php:81 +#: ../../extend/addon/addon/redfiles/redfiles.php:109 +#: ../../extend/addon/addon/redphotos/redphotos.php:119 +#: ../../include/items.php:327 +msgid "Permission denied" +msgstr "Keine Berechtigung" + #: ../../Zotlabs/Zot/Auth.php:138 msgid "" "Remote authentication blocked. You are logged into this site locally. Please" " logout and retry." msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut." -#: ../../Zotlabs/Zot/Auth.php:246 +#: ../../Zotlabs/Zot/Auth.php:250 #: ../../extend/addon/addon/openid/Mod_Openid.php:76 #: ../../extend/addon/addon/openid/Mod_Openid.php:183 #, php-format @@ -451,10 +458,10 @@ msgid "Welcome %s. Remote authentication successful." msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich." #: ../../Zotlabs/Module/Achievements.php:15 -#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31 -#: ../../Zotlabs/Module/Editlayout.php:31 +#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editlayout.php:31 #: ../../Zotlabs/Module/Editwebpage.php:32 -#: ../../Zotlabs/Module/Filestorage.php:59 ../../Zotlabs/Module/Hcard.php:12 +#: ../../Zotlabs/Module/Filestorage.php:59 +#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Hcard.php:12 #: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Blocks.php:33 #: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Webpages.php:33 #: ../../include/channel.php:862 @@ -518,7 +525,7 @@ msgid "" "Please try again tomorrow." msgstr "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal." -#: ../../Zotlabs/Module/Register.php:221 +#: ../../Zotlabs/Module/Register.php:221 ../../Zotlabs/Module/Siteinfo.php:27 msgid "Terms of Service" msgstr "Nutzungsbedingungen" @@ -595,7 +602,7 @@ msgid "yes" msgstr "ja" #: ../../Zotlabs/Module/Register.php:253 -#: ../../Zotlabs/Module/Admin/Site.php:259 +#: ../../Zotlabs/Module/Admin/Site.php:261 msgid "Registration" msgstr "Registrierung" @@ -603,8 +610,8 @@ msgstr "Registrierung" msgid "Membership on this site is by invitation only." msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich." -#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:152 -#: ../../boot.php:1697 +#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:150 +#: ../../boot.php:1701 msgid "Register" msgstr "Registrieren" @@ -612,129 +619,436 @@ msgstr "Registrieren" msgid "" "This site may require email verification after submitting this form. If you " "are returned to a login page, please check your email for instructions." -msgstr "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Ansenden des Formulars. Wenn Du auf eine Login-Seite zurückgeleitet wirst, prüfe bitte auf neue Mail mit entsprechenden Hinweisen." +msgstr "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Absenden des Formulars. Wenn Du auf eine Login-Seite zurückgeleitet wirst, prüfe bitte Deinen Posteingang auf neue Mails mit entsprechenden Hinweisen." #: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:32 #, php-format msgid "Fetching URL returns error: %1$s" msgstr "Abrufen der URL gab einen Fehler zurück: %1$s" -#: ../../Zotlabs/Module/Display.php:17 ../../Zotlabs/Module/Search.php:17 -#: ../../Zotlabs/Module/Directory.php:64 ../../Zotlabs/Module/Ratings.php:83 -#: ../../Zotlabs/Module/Photos.php:509 -#: ../../Zotlabs/Module/Viewconnections.php:23 -#: ../../extend/addon/addon/friendica/dfrn_request.php:794 -msgid "Public access denied." -msgstr "Öffentlichen Zugriff verweigert." +#: ../../Zotlabs/Module/Match.php:26 +msgid "Profile Match" +msgstr "Profil-Übereinstimmungen" -#: ../../Zotlabs/Module/Display.php:40 -#: ../../Zotlabs/Module/Admin/Plugins.php:254 -#: ../../Zotlabs/Module/Admin/Themes.php:69 -#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Admin.php:60 -#: ../../Zotlabs/Module/Thing.php:89 ../../Zotlabs/Module/Viewsrc.php:24 -#: ../../include/items.php:3411 -msgid "Item not found." -msgstr "Element nicht gefunden." +#: ../../Zotlabs/Module/Match.php:35 +msgid "No keywords to match. Please add keywords to your default profile." +msgstr "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu." -#: ../../Zotlabs/Module/Import.php:33 -#, php-format -msgid "Your service plan only allows %d channels." -msgstr "Dein Vertrag erlaubt nur %d Kanäle." +#: ../../Zotlabs/Module/Match.php:67 +msgid "is interested in:" +msgstr "interessiert sich für:" -#: ../../Zotlabs/Module/Import.php:71 ../../Zotlabs/Module/Import_items.php:42 -msgid "Nothing to import." -msgstr "Nichts zu importieren." +#: ../../Zotlabs/Module/Match.php:68 ../../Zotlabs/Module/Directory.php:328 +#: ../../Zotlabs/Module/Suggest.php:56 ../../include/channel.php:1036 +#: ../../include/connections.php:78 ../../include/widgets.php:147 +#: ../../include/widgets.php:184 ../../include/conversation.php:971 +msgid "Connect" +msgstr "Verbinden" -#: ../../Zotlabs/Module/Import.php:83 ../../Zotlabs/Module/Import.php:98 -#: ../../Zotlabs/Module/Import_items.php:66 -msgid "Unable to download data from old server" -msgstr "Daten können vom alten Server nicht heruntergeladen werden" +#: ../../Zotlabs/Module/Match.php:74 +msgid "No matches" +msgstr "Keine Übereinstimmungen" -#: ../../Zotlabs/Module/Import.php:105 -#: ../../Zotlabs/Module/Import_items.php:72 -msgid "Imported file is empty." -msgstr "Die importierte Datei ist leer." +#: ../../Zotlabs/Module/Connedit.php:82 +msgid "Could not access contact record." +msgstr "Konnte nicht auf den Kontakteintrag zugreifen." -#: ../../Zotlabs/Module/Import.php:127 -#: ../../Zotlabs/Module/Import_items.php:88 +#: ../../Zotlabs/Module/Connedit.php:106 +msgid "Could not locate selected profile." +msgstr "Gewähltes Profil nicht gefunden." + +#: ../../Zotlabs/Module/Connedit.php:258 +msgid "Connection updated." +msgstr "Verbindung aktualisiert." + +#: ../../Zotlabs/Module/Connedit.php:260 +msgid "Failed to update connection record." +msgstr "Konnte den Verbindungseintrag nicht aktualisieren." + +#: ../../Zotlabs/Module/Connedit.php:310 +msgid "is now connected to" +msgstr "ist jetzt verbunden mit" + +#: ../../Zotlabs/Module/Connedit.php:411 ../../Zotlabs/Module/Connedit.php:716 +#: ../../Zotlabs/Module/Admin/Site.php:218 ../../Zotlabs/Module/Menu.php:100 +#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Mitem.php:162 +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 +#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 +#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Api.php:97 +#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Wiki.php:159 +#: ../../Zotlabs/Module/Settings/Channel.php:289 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +#: ../../extend/addon/addon/libertree/libertree.php:69 +#: ../../extend/addon/addon/libertree/libertree.php:81 +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../extend/addon/addon/nofed/nofed.php:72 +#: ../../extend/addon/addon/nofed/nofed.php:76 +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +#: ../../extend/addon/addon/planets/planets.php:153 +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../extend/addon/addon/rtof/rtof.php:81 +#: ../../extend/addon/addon/rtof/rtof.php:85 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../extend/addon/addon/twitter/twitter.php:246 +#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../extend/addon/addon/visage/visage.php:166 +#: ../../extend/addon/addon/wppost/wppost.php:82 +#: ../../extend/addon/addon/wppost/wppost.php:105 +#: ../../extend/addon/addon/wppost/wppost.php:109 +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../extend/addon/addon/cdav/cdav.php:234 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../include/widgets.php:978 ../../view/theme/redbasic/php/config.php:111 +#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1723 +msgid "No" +msgstr "Nein" + +#: ../../Zotlabs/Module/Connedit.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:220 ../../Zotlabs/Module/Menu.php:100 +#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Mitem.php:162 +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 +#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 +#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Api.php:96 +#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Wiki.php:159 +#: ../../Zotlabs/Module/Settings/Channel.php:289 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +#: ../../extend/addon/addon/libertree/libertree.php:69 +#: ../../extend/addon/addon/libertree/libertree.php:81 +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../extend/addon/addon/nofed/nofed.php:72 +#: ../../extend/addon/addon/nofed/nofed.php:76 +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +#: ../../extend/addon/addon/planets/planets.php:153 +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../extend/addon/addon/rtof/rtof.php:81 +#: ../../extend/addon/addon/rtof/rtof.php:85 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../extend/addon/addon/twitter/twitter.php:246 +#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../extend/addon/addon/visage/visage.php:166 +#: ../../extend/addon/addon/wppost/wppost.php:82 +#: ../../extend/addon/addon/wppost/wppost.php:105 +#: ../../extend/addon/addon/wppost/wppost.php:109 +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../extend/addon/addon/cdav/cdav.php:234 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../include/widgets.php:978 ../../view/theme/redbasic/php/config.php:111 +#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1723 +msgid "Yes" +msgstr "Ja" + +#: ../../Zotlabs/Module/Connedit.php:443 +msgid "Could not access address book record." +msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen." + +#: ../../Zotlabs/Module/Connedit.php:463 +msgid "Refresh failed - channel is currently unavailable." +msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar." + +#: ../../Zotlabs/Module/Connedit.php:478 ../../Zotlabs/Module/Connedit.php:487 +#: ../../Zotlabs/Module/Connedit.php:496 ../../Zotlabs/Module/Connedit.php:505 +#: ../../Zotlabs/Module/Connedit.php:518 +msgid "Unable to set address book parameters." +msgstr "Konnte die Adressbuch-Parameter nicht setzen." + +#: ../../Zotlabs/Module/Connedit.php:542 +msgid "Connection has been removed." +msgstr "Verbindung wurde gelöscht." + +#: ../../Zotlabs/Module/Connedit.php:582 ../../Zotlabs/Lib/Apps.php:221 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 +#: ../../include/nav.php:89 ../../include/conversation.php:969 +msgid "View Profile" +msgstr "Profil ansehen" + +#: ../../Zotlabs/Module/Connedit.php:585 #, php-format -msgid "Warning: Database versions differ by %1$d updates." -msgstr "Achtung: Datenbankversionen unterscheiden sich um %1$d Aktualisierungen." +msgid "View %s's profile" +msgstr "%ss Profil ansehen" -#: ../../Zotlabs/Module/Import.php:157 ../../include/import.php:100 -msgid "Cloned channel not found. Import failed." -msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen." +#: ../../Zotlabs/Module/Connedit.php:589 +msgid "Refresh Permissions" +msgstr "Zugriffsrechte neu laden" -#: ../../Zotlabs/Module/Import.php:167 -msgid "No channel. Import failed." -msgstr "Kein Kanal. Import fehlgeschlagen." +#: ../../Zotlabs/Module/Connedit.php:592 +msgid "Fetch updated permissions" +msgstr "Aktualisierte Zugriffsrechte abfragen" -#: ../../Zotlabs/Module/Import.php:503 -#: ../../include/Import/import_diaspora.php:142 -msgid "Import completed." -msgstr "Import abgeschlossen." +#: ../../Zotlabs/Module/Connedit.php:596 +msgid "Recent Activity" +msgstr "Kürzliche Aktivitäten" -#: ../../Zotlabs/Module/Import.php:525 -msgid "You must be logged in to use this feature." -msgstr "Du musst angemeldet sein um diese Funktion zu nutzen." +#: ../../Zotlabs/Module/Connedit.php:599 +msgid "View recent posts and comments" +msgstr "Betrachte die neuesten Beiträge und Kommentare" -#: ../../Zotlabs/Module/Import.php:530 -msgid "Import Channel" -msgstr "Kanal importieren" +#: ../../Zotlabs/Module/Connedit.php:603 +#: ../../Zotlabs/Module/Admin/Accounts.php:175 +msgid "Unblock" +msgstr "Freigeben" -#: ../../Zotlabs/Module/Import.php:531 -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 "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren." +#: ../../Zotlabs/Module/Connedit.php:603 +#: ../../Zotlabs/Module/Admin/Accounts.php:174 +msgid "Block" +msgstr "Blockieren" -#: ../../Zotlabs/Module/Import.php:532 -#: ../../Zotlabs/Module/Import_items.php:121 -msgid "File to Upload" -msgstr "Hochzuladende Datei:" +#: ../../Zotlabs/Module/Connedit.php:606 +msgid "Block (or Unblock) all communications with this connection" +msgstr "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen" -#: ../../Zotlabs/Module/Import.php:533 -msgid "Or provide the old server/hub details" -msgstr "Oder gib die Details Deines bisherigen $Projectname-Hubs ein" +#: ../../Zotlabs/Module/Connedit.php:607 +msgid "This connection is blocked!" +msgstr "Die Verbindung ist geblockt!" -#: ../../Zotlabs/Module/Import.php:534 -msgid "Your old identity address (xyz@example.com)" -msgstr "Bisherige Kanal-Adresse (xyz@example.com)" +#: ../../Zotlabs/Module/Connedit.php:611 +msgid "Unignore" +msgstr "Nicht ignorieren" -#: ../../Zotlabs/Module/Import.php:535 -msgid "Your old login email address" -msgstr "Deine alte Login-E-Mail-Adresse" +#: ../../Zotlabs/Module/Connedit.php:611 +#: ../../Zotlabs/Module/Connections.php:277 +msgid "Ignore" +msgstr "Ignorieren" -#: ../../Zotlabs/Module/Import.php:536 -msgid "Your old login password" -msgstr "Dein altes Passwort" +#: ../../Zotlabs/Module/Connedit.php:614 +msgid "Ignore (or Unignore) all inbound communications from this connection" +msgstr "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen" -#: ../../Zotlabs/Module/Import.php:537 +#: ../../Zotlabs/Module/Connedit.php:615 +msgid "This connection is ignored!" +msgstr "Die Verbindung wird ignoriert!" + +#: ../../Zotlabs/Module/Connedit.php:619 +msgid "Unarchive" +msgstr "Aus Archiv zurückholen" + +#: ../../Zotlabs/Module/Connedit.php:619 +msgid "Archive" +msgstr "Archivieren" + +#: ../../Zotlabs/Module/Connedit.php:622 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 "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige $Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein." +"Archive (or Unarchive) this connection - mark channel dead but keep content" +msgstr "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)" -#: ../../Zotlabs/Module/Import.php:538 -msgid "Make this hub my primary location" -msgstr "Dieser $Pojectname-Hub ist mein primärer Hub." +#: ../../Zotlabs/Module/Connedit.php:623 +msgid "This connection is archived!" +msgstr "Die Verbindung ist archiviert!" -#: ../../Zotlabs/Module/Import.php:539 +#: ../../Zotlabs/Module/Connedit.php:627 +msgid "Unhide" +msgstr "Wieder sichtbar machen" + +#: ../../Zotlabs/Module/Connedit.php:627 +msgid "Hide" +msgstr "Verstecken" + +#: ../../Zotlabs/Module/Connedit.php:630 +msgid "Hide or Unhide this connection from your other connections" +msgstr "Diese Verbindung vor anderen Verbindungen verstecken/zeigen" + +#: ../../Zotlabs/Module/Connedit.php:631 +msgid "This connection is hidden!" +msgstr "Die Verbindung ist versteckt!" + +#: ../../Zotlabs/Module/Connedit.php:638 +msgid "Delete this connection" +msgstr "Verbindung löschen" + +#: ../../Zotlabs/Module/Connedit.php:655 ../../include/widgets.php:529 +msgid "Me" +msgstr "Ich" + +#: ../../Zotlabs/Module/Connedit.php:656 ../../include/widgets.php:530 +msgid "Family" +msgstr "Familie" + +#: ../../Zotlabs/Module/Connedit.php:657 +#: ../../Zotlabs/Module/Settings/Channel.php:61 +#: ../../Zotlabs/Module/Settings/Channel.php:65 +#: ../../Zotlabs/Module/Settings/Channel.php:66 +#: ../../Zotlabs/Module/Settings/Channel.php:69 +#: ../../Zotlabs/Module/Settings/Channel.php:80 +#: ../../include/selectors.php:123 ../../include/channel.php:402 +#: ../../include/channel.php:403 ../../include/channel.php:410 +#: ../../include/widgets.php:531 +msgid "Friends" +msgstr "Freunde" + +#: ../../Zotlabs/Module/Connedit.php:658 ../../include/widgets.php:532 +msgid "Acquaintances" +msgstr "Bekannte" + +#: ../../Zotlabs/Module/Connedit.php:659 +#: ../../Zotlabs/Module/Connections.php:92 +#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:533 +msgid "All" +msgstr "Alle" + +#: ../../Zotlabs/Module/Connedit.php:716 +msgid "Approve this connection" +msgstr "Verbindung genehmigen" + +#: ../../Zotlabs/Module/Connedit.php:716 +msgid "Accept connection to allow communication" +msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen" + +#: ../../Zotlabs/Module/Connedit.php:721 +msgid "Set Affinity" +msgstr "Beziehung festlegen" + +#: ../../Zotlabs/Module/Connedit.php:724 +msgid "Set Profile" +msgstr "Profil festlegen" + +#: ../../Zotlabs/Module/Connedit.php:727 +msgid "Set Affinity & Profile" +msgstr "Beziehung und Profile festlegen" + +#: ../../Zotlabs/Module/Connedit.php:776 +msgid "none" +msgstr "Keine" + +#: ../../Zotlabs/Module/Connedit.php:780 ../../include/widgets.php:656 +msgid "Connection Default Permissions" +msgstr "Standardzugriffsrechte für neue Verbindungen:" + +#: ../../Zotlabs/Module/Connedit.php:780 ../../include/items.php:3909 +#, php-format +msgid "Connection: %s" +msgstr "Verbindung: %s" + +#: ../../Zotlabs/Module/Connedit.php:781 +msgid "Apply these permissions automatically" +msgstr "Diese Berechtigungen automatisch anwenden" + +#: ../../Zotlabs/Module/Connedit.php:781 +msgid "Connection requests will be approved without your interaction" +msgstr "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist." + +#: ../../Zotlabs/Module/Connedit.php:784 +msgid "This connection's primary address is" +msgstr "Die Hauptadresse der Verbindung ist" + +#: ../../Zotlabs/Module/Connedit.php:785 +msgid "Available locations:" +msgstr "Verfügbare Klone:" + +#: ../../Zotlabs/Module/Connedit.php:789 msgid "" -"Import existing posts if possible (experimental - limited by available " -"memory" -msgstr "Importiere bestehende Beiträge falls möglich (experimentell - begrenzt durch zur Verfügung stehenden Speicher" +"The permissions indicated on this page will be applied to all new " +"connections." +msgstr "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet." -#: ../../Zotlabs/Module/Import.php:540 +#: ../../Zotlabs/Module/Connedit.php:790 +msgid "Connection Tools" +msgstr "Verbindungswerkzeuge" + +#: ../../Zotlabs/Module/Connedit.php:792 +msgid "Slide to adjust your degree of friendship" +msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen" + +#: ../../Zotlabs/Module/Connedit.php:793 ../../Zotlabs/Module/Rate.php:155 +#: ../../include/js_strings.php:20 +msgid "Rating" +msgstr "Bewertung" + +#: ../../Zotlabs/Module/Connedit.php:794 +msgid "Slide to adjust your rating" +msgstr "Verschieben, um Deine Bewertung einzustellen" + +#: ../../Zotlabs/Module/Connedit.php:795 ../../Zotlabs/Module/Connedit.php:800 +msgid "Optionally explain your rating" +msgstr "Optional kannst Du Deine Bewertung begründen" + +#: ../../Zotlabs/Module/Connedit.php:797 +msgid "Custom Filter" +msgstr "Benutzerdefinierter Filter" + +#: ../../Zotlabs/Module/Connedit.php:798 +msgid "Only import posts with this text" +msgstr "Nur Beiträge mit diesem Text importieren" + +#: ../../Zotlabs/Module/Connedit.php:798 ../../Zotlabs/Module/Connedit.php:799 msgid "" -"This process may take several minutes to complete. Please submit the form " -"only once and leave this page open until finished." -msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen." +"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " +"all posts" +msgstr "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren." + +#: ../../Zotlabs/Module/Connedit.php:799 +msgid "Do not import posts with this text" +msgstr "Beiträge mit diesem Text nicht importieren" + +#: ../../Zotlabs/Module/Connedit.php:801 +msgid "This information is public!" +msgstr "Diese Information ist öffentlich!" -#: ../../Zotlabs/Module/Import.php:543 ../../Zotlabs/Module/Connect.php:98 +#: ../../Zotlabs/Module/Connedit.php:806 +msgid "Connection Pending Approval" +msgstr "Verbindung wartet auf Bestätigung" + +#: ../../Zotlabs/Module/Connedit.php:809 +#: ../../Zotlabs/Module/Settings/Tokens.php:163 +msgid "inherited" +msgstr "geerbt" + +#: ../../Zotlabs/Module/Connedit.php:810 ../../Zotlabs/Module/Locs.php:121 +#: ../../Zotlabs/Module/Connect.php:98 #: ../../Zotlabs/Module/Admin/Features.php:66 #: ../../Zotlabs/Module/Admin/Logs.php:84 #: ../../Zotlabs/Module/Admin/Plugins.php:429 @@ -744,31 +1058,31 @@ msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur #: ../../Zotlabs/Module/Admin/Account_edit.php:74 #: ../../Zotlabs/Module/Admin/Accounts.php:166 #: ../../Zotlabs/Module/Admin/Channels.php:147 -#: ../../Zotlabs/Module/Admin/Site.php:258 ../../Zotlabs/Module/Appman.php:126 -#: ../../Zotlabs/Module/Filestorage.php:165 -#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Group.php:85 -#: ../../Zotlabs/Module/Import_items.php:122 ../../Zotlabs/Module/Locs.php:121 +#: ../../Zotlabs/Module/Admin/Site.php:260 ../../Zotlabs/Module/Appman.php:126 +#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Mail.php:384 +#: ../../Zotlabs/Module/Import_items.php:122 +#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Group.php:85 #: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Mood.php:139 #: ../../Zotlabs/Module/Photos.php:668 ../../Zotlabs/Module/Photos.php:1058 #: ../../Zotlabs/Module/Photos.php:1098 ../../Zotlabs/Module/Photos.php:1216 -#: ../../Zotlabs/Module/Setup.php:315 ../../Zotlabs/Module/Setup.php:363 -#: ../../Zotlabs/Module/Mail.php:384 ../../Zotlabs/Module/Poke.php:186 -#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Pconfig.php:107 -#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Events.php:484 -#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Connedit.php:780 -#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149 +#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Poke.php:186 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Rate.php:166 +#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Cal.php:342 +#: ../../Zotlabs/Module/Wiki.php:148 ../../Zotlabs/Module/Sources.php:114 +#: ../../Zotlabs/Module/Sources.php:149 #: ../../Zotlabs/Module/Settings/Features.php:47 #: ../../Zotlabs/Module/Settings/Oauth.php:87 #: ../../Zotlabs/Module/Settings/Tokens.php:167 #: ../../Zotlabs/Module/Settings/Account.php:118 -#: ../../Zotlabs/Module/Settings/Channel.php:452 +#: ../../Zotlabs/Module/Settings/Channel.php:455 #: ../../Zotlabs/Module/Settings/Display.php:196 #: ../../Zotlabs/Module/Thing.php:320 ../../Zotlabs/Module/Thing.php:370 -#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196 +#: ../../Zotlabs/Module/Import.php:543 ../../Zotlabs/Module/Chat.php:196 #: ../../Zotlabs/Module/Chat.php:241 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Lib/ThreadItem.php:729 +#: ../../Zotlabs/Module/Events.php:484 ../../Zotlabs/Lib/ThreadItem.php:729 #: ../../extend/addon/addon/chords/Mod_Chords.php:60 -#: ../../extend/addon/addon/diaspora/diaspora.php:703 +#: ../../extend/addon/addon/diaspora/diaspora.php:710 #: ../../extend/addon/addon/dwpost/dwpost.php:89 #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 #: ../../extend/addon/addon/friendica/friendica.php:128 @@ -803,13 +1117,13 @@ msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur #: ../../extend/addon/addon/statusnet/statusnet.php:380 #: ../../extend/addon/addon/statusnet/statusnet.php:432 #: ../../extend/addon/addon/statusnet/statusnet.php:899 -#: ../../extend/addon/addon/superblock/superblock.php:67 +#: ../../extend/addon/addon/superblock/superblock.php:114 #: ../../extend/addon/addon/twitter/twitter.php:217 #: ../../extend/addon/addon/twitter/twitter.php:259 #: ../../extend/addon/addon/visage/visage.php:170 #: ../../extend/addon/addon/wppost/wppost.php:113 #: ../../extend/addon/addon/xmpp/xmpp.php:69 -#: ../../extend/addon/addon/cdav/cdav.php:239 +#: ../../extend/addon/addon/cdav/cdav.php:246 #: ../../extend/addon/addon/likebanner/likebanner.php:57 #: ../../extend/addon/addon/mailtest/mailtest.php:100 #: ../../include/js_strings.php:22 ../../include/widgets.php:796 @@ -817,6 +1131,201 @@ msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur msgid "Submit" msgstr "Absenden" +#: ../../Zotlabs/Module/Connedit.php:811 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird." + +#: ../../Zotlabs/Module/Connedit.php:813 +#: ../../Zotlabs/Module/Settings/Tokens.php:160 +msgid "Their Settings" +msgstr "Deren Einstellungen" + +#: ../../Zotlabs/Module/Connedit.php:814 +#: ../../Zotlabs/Module/Settings/Tokens.php:161 +msgid "My Settings" +msgstr "Meine Einstellungen" + +#: ../../Zotlabs/Module/Connedit.php:816 +#: ../../Zotlabs/Module/Settings/Tokens.php:165 +msgid "Individual Permissions" +msgstr "Individuelle Zugriffsrechte" + +#: ../../Zotlabs/Module/Connedit.php:817 +#: ../../Zotlabs/Module/Settings/Tokens.php:166 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can <strong>not</strong> change those" +" settings here." +msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden." + +#: ../../Zotlabs/Module/Connedit.php:818 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can change those settings here but " +"they wont have any impact unless the inherited setting changes." +msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen." + +#: ../../Zotlabs/Module/Connedit.php:819 +msgid "Last update:" +msgstr "Letzte Aktualisierung:" + +#: ../../Zotlabs/Module/Dreport.php:45 +msgid "Invalid message" +msgstr "Ungültige Beitrags-ID (mid)" + +#: ../../Zotlabs/Module/Dreport.php:78 +msgid "no results" +msgstr "keine Ergebnisse" + +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "channel sync processed" +msgstr "Kanal-Sync verarbeitet" + +#: ../../Zotlabs/Module/Dreport.php:97 +msgid "queued" +msgstr "zur Warteschlange hinzugefügt" + +#: ../../Zotlabs/Module/Dreport.php:101 +msgid "posted" +msgstr "zugestellt" + +#: ../../Zotlabs/Module/Dreport.php:105 +msgid "accepted for delivery" +msgstr "für Zustellung akzeptiert" + +#: ../../Zotlabs/Module/Dreport.php:109 +msgid "updated" +msgstr "aktualisiert" + +#: ../../Zotlabs/Module/Dreport.php:112 +msgid "update ignored" +msgstr "Aktualisierung ignoriert" + +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "permission denied" +msgstr "Zugriff verweigert" + +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "recipient not found" +msgstr "Empfänger nicht gefunden." + +#: ../../Zotlabs/Module/Dreport.php:122 +msgid "mail recalled" +msgstr "Mail widerrufen" + +#: ../../Zotlabs/Module/Dreport.php:125 +msgid "duplicate mail received" +msgstr "Doppelte Mail erhalten" + +#: ../../Zotlabs/Module/Dreport.php:128 +msgid "mail delivered" +msgstr "Mail zugestellt" + +#: ../../Zotlabs/Module/Dreport.php:148 +#, php-format +msgid "Delivery report for %1$s" +msgstr "Zustellungsbericht für %1$s" + +#: ../../Zotlabs/Module/Dreport.php:151 +msgid "Options" +msgstr "Optionen" + +#: ../../Zotlabs/Module/Dreport.php:152 +msgid "Redeliver" +msgstr "Erneut zustellen" + +#: ../../Zotlabs/Module/Bookmarks.php:53 +msgid "Bookmark added" +msgstr "Lesezeichen hinzugefügt" + +#: ../../Zotlabs/Module/Bookmarks.php:75 +msgid "My Bookmarks" +msgstr "Meine Lesezeichen" + +#: ../../Zotlabs/Module/Bookmarks.php:86 +msgid "My Connections Bookmarks" +msgstr "Lesezeichen meiner Kontakte" + +#: ../../Zotlabs/Module/Acl.php:313 +msgid "network" +msgstr "Netzwerk" + +#: ../../Zotlabs/Module/Acl.php:323 +msgid "RSS" +msgstr "RSS" + +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." +msgstr "Klon nicht gefunden." + +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." +msgstr "Nachschlagen des Kanal-Ortes fehlgeschlagen" + +#: ../../Zotlabs/Module/Locs.php:66 +msgid "" +"Please select another location to become primary before removing the primary" +" location." +msgstr "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst." + +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" +msgstr "Synchronisiere Klone" + +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." +msgstr "Keine Klon-Adressen gefunden." + +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" +msgstr "Klon-Adressen verwalten" + +#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Pubsites.php:51 +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:692 +#: ../../Zotlabs/Module/Events.php:468 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:839 +#: ../../include/js_strings.php:25 +msgid "Location" +msgstr "Ort" + +#: ../../Zotlabs/Module/Locs.php:118 +#: ../../Zotlabs/Module/Admin/Channels.php:160 +#: ../../Zotlabs/Module/Profiles.php:464 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143 +msgid "Address" +msgstr "Adresse" + +#: ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" +msgstr "Primär" + +#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113 +msgid "Drop" +msgstr "Löschen" + +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" +msgstr "Jetzt synchronisieren" + +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." +msgstr "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!" + +#: ../../Zotlabs/Module/Locs.php:124 +msgid "" +"When possible, drop a location by logging into that website/hub and removing" +" your channel." +msgstr "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst." + +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." +msgstr "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt." + #: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109 msgid "Continue" msgstr "Fortfahren" @@ -860,87 +1369,6 @@ msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)" msgid "Restricted or Premium Channel" msgstr "Eingeschränkter oder Premium-Kanal" -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:306 -#: ../../Zotlabs/Lib/Apps.php:230 ../../include/acl_selectors.php:203 -#: ../../include/nav.php:170 ../../include/text.php:993 -#: ../../include/text.php:1005 ../../include/widgets.php:315 -msgid "Search" -msgstr "Suche" - -#: ../../Zotlabs/Module/Search.php:223 -#, php-format -msgid "Items tagged with: %s" -msgstr "Beiträge mit Schlagwort: %s" - -#: ../../Zotlabs/Module/Search.php:225 -#, php-format -msgid "Search results for: %s" -msgstr "Suchergebnisse für: %s" - -#: ../../Zotlabs/Module/Bookmarks.php:53 -msgid "Bookmark added" -msgstr "Lesezeichen hinzugefügt" - -#: ../../Zotlabs/Module/Bookmarks.php:75 -msgid "My Bookmarks" -msgstr "Meine Lesezeichen" - -#: ../../Zotlabs/Module/Bookmarks.php:86 -msgid "My Connections Bookmarks" -msgstr "Lesezeichen meiner Kontakte" - -#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 -#: ../../Zotlabs/Module/Editlayout.php:79 -#: ../../Zotlabs/Module/Editwebpage.php:80 -#: ../../Zotlabs/Module/Editpost.php:24 -msgid "Item not found" -msgstr "Element nicht gefunden" - -#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 -#: ../../Zotlabs/Module/Blocks.php:155 -msgid "Block Name" -msgstr "Block-Name" - -#: ../../Zotlabs/Module/Editblock.php:111 -#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:258 -#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Module/Chat.php:207 -#: ../../include/conversation.php:1165 -msgid "Insert web link" -msgstr "Link einfügen" - -#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1276 -msgid "Title (optional)" -msgstr "Titel (optional)" - -#: ../../Zotlabs/Module/Editblock.php:133 -msgid "Edit Block" -msgstr "Block bearbeiten" - -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." -msgstr "Ungültiger Profil-Identifikator" - -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Profile Visibility Editor" -msgstr "Profil-Sichtbarkeits-Editor" - -#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1282 -msgid "Profile" -msgstr "Profil" - -#: ../../Zotlabs/Module/Profperm.php:119 -msgid "Click on a contact to add or remove." -msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen." - -#: ../../Zotlabs/Module/Profperm.php:128 -msgid "Visible To" -msgstr "Sichtbar für" - -#: ../../Zotlabs/Module/Profperm.php:144 -#: ../../Zotlabs/Module/Connections.php:145 -msgid "All Connections" -msgstr "Alle Verbindungen" - #: ../../Zotlabs/Module/Page.php:40 ../../Zotlabs/Module/Block.php:31 msgid "Invalid item." msgstr "Ungültiges Element." @@ -971,18 +1399,60 @@ msgstr "– auswählen –" #: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin/Profs.php:74 #: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32 -#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:994 -#: ../../include/text.php:1006 ../../include/widgets.php:201 +#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:987 +#: ../../include/text.php:999 ../../include/widgets.php:201 msgid "Save" msgstr "Speichern" -#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 -msgid "This site is not a directory server" -msgstr "Diese Webseite ist kein Verzeichnisserver" +#: ../../Zotlabs/Module/Manage.php:136 +#: ../../Zotlabs/Module/New_channel.php:121 +#, php-format +msgid "You have created %1$.0f of %2$.0f allowed channels." +msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet." -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" -msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken" +#: ../../Zotlabs/Module/Manage.php:143 +msgid "Create a new channel" +msgstr "Neuen Kanal anlegen" + +#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Profiles.php:772 +#: ../../Zotlabs/Module/Wiki.php:147 ../../Zotlabs/Module/Chat.php:255 +msgid "Create New" +msgstr "Neu anlegen" + +#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:214 +#: ../../include/nav.php:209 +msgid "Channel Manager" +msgstr "Kanal-Manager" + +#: ../../Zotlabs/Module/Manage.php:165 +msgid "Current Channel" +msgstr "Aktueller Kanal" + +#: ../../Zotlabs/Module/Manage.php:167 +msgid "Switch to one of your channels by selecting it." +msgstr "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst." + +#: ../../Zotlabs/Module/Manage.php:168 +msgid "Default Channel" +msgstr "Standard Kanal" + +#: ../../Zotlabs/Module/Manage.php:169 +msgid "Make Default" +msgstr "Zum Standard machen" + +#: ../../Zotlabs/Module/Manage.php:172 +#, php-format +msgid "%d new messages" +msgstr "%d neue Nachrichten" + +#: ../../Zotlabs/Module/Manage.php:173 +#, php-format +msgid "%d new introductions" +msgstr "%d neue Vorstellungen" + +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Delegated Channel" +msgstr "Delegierte Kanäle" #: ../../Zotlabs/Module/Connections.php:56 #: ../../Zotlabs/Module/Connections.php:161 @@ -1014,12 +1484,6 @@ msgstr "Archiviert" msgid "New" msgstr "Neu" -#: ../../Zotlabs/Module/Connections.php:92 -#: ../../Zotlabs/Module/Connections.php:107 -#: ../../Zotlabs/Module/Connedit.php:630 ../../include/widgets.php:533 -msgid "All" -msgstr "Alle" - #: ../../Zotlabs/Module/Connections.php:138 msgid "New Connections" msgstr "Neue Verbindungen" @@ -1028,6 +1492,11 @@ msgstr "Neue Verbindungen" msgid "Show pending (new) connections" msgstr "Ausstehende (neue) Verbindungsanfragen anzeigen" +#: ../../Zotlabs/Module/Connections.php:145 +#: ../../Zotlabs/Module/Profperm.php:144 +msgid "All Connections" +msgstr "Alle Verbindungen" + #: ../../Zotlabs/Module/Connections.php:148 msgid "Show all connections" msgstr "Alle Verbindungen anzeigen" @@ -1094,20 +1563,22 @@ msgstr "Genehmigen" msgid "Ignore connection" msgstr "Verbindung ignorieren" -#: ../../Zotlabs/Module/Connections.php:277 -#: ../../Zotlabs/Module/Connedit.php:584 -msgid "Ignore" -msgstr "Ignorieren" - #: ../../Zotlabs/Module/Connections.php:278 msgid "Recent activity" msgstr "Kürzliche Aktivitäten" #: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:209 -#: ../../include/nav.php:191 ../../include/text.php:923 +#: ../../include/nav.php:189 ../../include/text.php:916 msgid "Connections" msgstr "Verbindungen" +#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44 +#: ../../Zotlabs/Lib/Apps.php:230 ../../include/nav.php:168 +#: ../../include/text.php:986 ../../include/text.php:998 +#: ../../include/widgets.php:315 ../../include/acl_selectors.php:203 +msgid "Search" +msgstr "Suche" + #: ../../Zotlabs/Module/Connections.php:307 msgid "Search your connections" msgstr "Verbindungen durchsuchen" @@ -1152,30 +1623,30 @@ msgstr "Hochladen des Bilds fehlgeschlagen." msgid "Unable to process image." msgstr "Kann Bild nicht verarbeiten." -#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4325 +#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4253 msgid "female" msgstr "weiblich" -#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4326 +#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4254 #, php-format msgid "%1$s updated her %2$s" msgstr "%1$s hat ihr %2$s aktualisiert" -#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4327 +#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4255 msgid "male" msgstr "männlich" -#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4328 +#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4256 #, php-format msgid "%1$s updated his %2$s" msgstr "%1$s hat sein %2$s aktualisiert" -#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4330 +#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4258 #, php-format msgid "%1$s updated their %2$s" msgstr "%1$s hat sein/ihr %2$s aktualisiert" -#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1731 +#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1677 msgid "cover photo" msgstr "Cover Foto" @@ -1264,12 +1735,12 @@ msgstr "Protokoll-Einstellungen aktualisiert." #: ../../Zotlabs/Module/Admin/Themes.php:154 #: ../../Zotlabs/Module/Admin/Accounts.php:164 #: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:256 ../../Zotlabs/Module/Admin.php:137 +#: ../../Zotlabs/Module/Admin/Site.php:258 ../../Zotlabs/Module/Admin.php:137 msgid "Administration" msgstr "Administration" -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1586 -#: ../../include/widgets.php:1596 +#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1658 +#: ../../include/widgets.php:1668 msgid "Logs" msgstr "Protokolle" @@ -1295,6 +1766,14 @@ msgstr "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverz msgid "Log level" msgstr "Protokollstufe" +#: ../../Zotlabs/Module/Admin/Plugins.php:254 +#: ../../Zotlabs/Module/Admin/Themes.php:69 +#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Display.php:40 +#: ../../Zotlabs/Module/Admin.php:60 ../../Zotlabs/Module/Thing.php:89 +#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3343 +msgid "Item not found." +msgstr "Element nicht gefunden." + #: ../../Zotlabs/Module/Admin/Plugins.php:284 #, php-format msgid "Plugin %s disabled." @@ -1316,7 +1795,7 @@ msgid "Enable" msgstr "Aktivieren" #: ../../Zotlabs/Module/Admin/Plugins.php:337 -#: ../../Zotlabs/Module/Admin/Plugins.php:428 ../../include/widgets.php:1564 +#: ../../Zotlabs/Module/Admin/Plugins.php:428 ../../include/widgets.php:1636 msgid "Plugins" msgstr "Plug-Ins" @@ -1327,7 +1806,7 @@ msgstr "Umschalten" #: ../../Zotlabs/Module/Admin/Plugins.php:339 #: ../../Zotlabs/Module/Admin/Themes.php:123 ../../Zotlabs/Lib/Apps.php:216 -#: ../../include/nav.php:213 ../../include/widgets.php:680 +#: ../../include/nav.php:211 ../../include/widgets.php:680 msgid "Settings" msgstr "Einstellungen" @@ -1396,14 +1875,14 @@ msgstr "Installieren" #: ../../Zotlabs/Module/Admin/Plugins.php:414 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 -#: ../../Zotlabs/Module/Wiki.php:200 ../../Zotlabs/Module/Wiki.php:240 +#: ../../Zotlabs/Module/Wiki.php:242 ../../Zotlabs/Module/Wiki.php:277 #: ../../Zotlabs/Module/Settings/Oauth.php:88 #: ../../Zotlabs/Module/Settings/Oauth.php:114 #: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 #: ../../extend/addon/addon/friendica/dfrn_request.php:879 #: ../../extend/addon/addon/js_upload/js_upload.php:46 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:862 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:866 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154 #: ../../include/conversation.php:1264 ../../include/conversation.php:1313 msgid "Cancel" msgstr "Abbrechen" @@ -1423,7 +1902,7 @@ msgstr "Ein neues Plugin-Repository installieren" #: ../../Zotlabs/Module/Admin/Plugins.php:443 #: ../../Zotlabs/Module/Settings/Oauth.php:42 #: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:334 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1148 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152 msgid "Update" msgstr "Aktualisieren" @@ -1433,6 +1912,7 @@ msgstr "Zweig/Branch wechseln" #: ../../Zotlabs/Module/Admin/Plugins.php:445 #: ../../Zotlabs/Module/Photos.php:989 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../extend/addon/addon/superblock/superblock.php:110 msgid "Remove" msgstr "Entfernen" @@ -1483,7 +1963,7 @@ msgstr "Feld-Definition nicht gefunden" msgid "Edit Profile Field" msgstr "Profilfeld bearbeiten" -#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1567 +#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1639 msgid "Profile Fields" msgstr "Profil Felder" @@ -1563,7 +2043,7 @@ msgid "" "embedded content from that site is explicitly blocked." msgstr "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert." -#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1562 +#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1634 msgid "Security" msgstr "Sicherheit" @@ -1664,7 +2144,7 @@ msgid "Screenshot" msgstr "Bildschirmfoto" #: ../../Zotlabs/Module/Admin/Themes.php:121 -#: ../../Zotlabs/Module/Admin/Themes.php:155 ../../include/widgets.php:1565 +#: ../../Zotlabs/Module/Admin/Themes.php:155 ../../include/widgets.php:1637 msgid "Themes" msgstr "Themes" @@ -1747,7 +2227,7 @@ msgid "Account '%s' unblocked" msgstr "Konto '%s' freigegeben" #: ../../Zotlabs/Module/Admin/Accounts.php:165 -#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1560 +#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1632 msgid "Accounts" msgstr "Konten" @@ -1768,7 +2248,7 @@ msgstr "Antragsdatum" #: ../../Zotlabs/Module/Admin/Accounts.php:181 #: ../../extend/addon/addon/redred/redred.php:107 #: ../../extend/addon/addon/rtof/rtof.php:93 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140 #: ../../extend/addon/addon/openid/MysqlProvider.php:56 #: ../../extend/addon/addon/openid/MysqlProvider.php:57 #: ../../include/network.php:2237 @@ -1783,16 +2263,6 @@ msgstr "Keine Registrierungen." msgid "Deny" msgstr "Verweigern" -#: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Connedit.php:576 -msgid "Block" -msgstr "Blockieren" - -#: ../../Zotlabs/Module/Admin/Accounts.php:175 -#: ../../Zotlabs/Module/Connedit.php:576 -msgid "Unblock" -msgstr "Freigeben" - #: ../../Zotlabs/Module/Admin/Accounts.php:180 msgid "ID" msgstr "ID" @@ -1879,7 +2349,7 @@ msgstr "Code für Kanal '%s' freigegeben" msgid "Channel '%s' code disallowed" msgstr "Code für Kanal '%s' gesperrt" -#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1561 +#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1633 msgid "Channels" msgstr "Kanäle" @@ -1900,7 +2370,7 @@ msgid "Disallow Code" msgstr "Code sperren" #: ../../Zotlabs/Module/Admin/Channels.php:154 -#: ../../include/conversation.php:1672 +#: ../../include/conversation.php:1671 msgid "Channel" msgstr "Kanal" @@ -1908,12 +2378,6 @@ msgstr "Kanal" msgid "UID" msgstr "UID" -#: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:464 ../../Zotlabs/Module/Locs.php:118 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139 -msgid "Address" -msgstr "Adresse" - #: ../../Zotlabs/Module/Admin/Channels.php:162 msgid "" "Selected channels will be deleted!\\n\\nEverything that was posted in these " @@ -1966,498 +2430,432 @@ msgstr "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)" msgid "Attempt to execute this update step automatically" msgstr "Versuche, diesen Updateschritt automatisch auszuführen" -#: ../../Zotlabs/Module/Admin/Site.php:131 +#: ../../Zotlabs/Module/Admin/Site.php:133 msgid "Site settings updated." msgstr "Site-Einstellungen aktualisiert." -#: ../../Zotlabs/Module/Admin/Site.php:157 ../../include/text.php:2959 +#: ../../Zotlabs/Module/Admin/Site.php:159 ../../include/text.php:2918 msgid "Default" msgstr "Standard" -#: ../../Zotlabs/Module/Admin/Site.php:167 +#: ../../Zotlabs/Module/Admin/Site.php:169 #: ../../Zotlabs/Module/Settings/Display.php:143 msgid "mobile" msgstr "mobil" -#: ../../Zotlabs/Module/Admin/Site.php:169 +#: ../../Zotlabs/Module/Admin/Site.php:171 msgid "experimental" msgstr "experimentell" -#: ../../Zotlabs/Module/Admin/Site.php:171 +#: ../../Zotlabs/Module/Admin/Site.php:173 msgid "unsupported" msgstr "nicht unterstützt" -#: ../../Zotlabs/Module/Admin/Site.php:216 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Api.php:97 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 -#: ../../Zotlabs/Module/Connedit.php:408 ../../Zotlabs/Module/Connedit.php:687 -#: ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Settings/Channel.php:289 -#: ../../Zotlabs/Module/Settings/Display.php:103 -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#: ../../extend/addon/addon/ijpost/ijpost.php:73 -#: ../../extend/addon/addon/ijpost/ijpost.php:85 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -#: ../../extend/addon/addon/libertree/libertree.php:69 -#: ../../extend/addon/addon/libertree/libertree.php:81 -#: ../../extend/addon/addon/ljpost/ljpost.php:70 -#: ../../extend/addon/addon/ljpost/ljpost.php:82 -#: ../../extend/addon/addon/nofed/nofed.php:72 -#: ../../extend/addon/addon/nofed/nofed.php:76 -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -#: ../../extend/addon/addon/planets/planets.php:153 -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -#: ../../extend/addon/addon/redred/redred.php:95 -#: ../../extend/addon/addon/redred/redred.php:99 -#: ../../extend/addon/addon/rtof/rtof.php:81 -#: ../../extend/addon/addon/rtof/rtof.php:85 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -#: ../../extend/addon/addon/statusnet/statusnet.php:389 -#: ../../extend/addon/addon/statusnet/statusnet.php:411 -#: ../../extend/addon/addon/statusnet/statusnet.php:415 -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:242 -#: ../../extend/addon/addon/twitter/twitter.php:246 -#: ../../extend/addon/addon/twitter/twitter.php:255 -#: ../../extend/addon/addon/visage/visage.php:166 -#: ../../extend/addon/addon/wppost/wppost.php:82 -#: ../../extend/addon/addon/wppost/wppost.php:105 -#: ../../extend/addon/addon/wppost/wppost.php:109 -#: ../../extend/addon/addon/xmpp/xmpp.php:53 -#: ../../extend/addon/addon/cdav/cdav.php:227 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -#: ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1719 -msgid "No" -msgstr "Nein" - -#: ../../Zotlabs/Module/Admin/Site.php:217 +#: ../../Zotlabs/Module/Admin/Site.php:219 msgid "Yes - with approval" msgstr "Ja - mit Zustimmung" -#: ../../Zotlabs/Module/Admin/Site.php:218 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Api.php:96 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 -#: ../../Zotlabs/Module/Connedit.php:408 ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Settings/Channel.php:289 -#: ../../Zotlabs/Module/Settings/Display.php:103 -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#: ../../extend/addon/addon/ijpost/ijpost.php:73 -#: ../../extend/addon/addon/ijpost/ijpost.php:85 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -#: ../../extend/addon/addon/libertree/libertree.php:69 -#: ../../extend/addon/addon/libertree/libertree.php:81 -#: ../../extend/addon/addon/ljpost/ljpost.php:70 -#: ../../extend/addon/addon/ljpost/ljpost.php:82 -#: ../../extend/addon/addon/nofed/nofed.php:72 -#: ../../extend/addon/addon/nofed/nofed.php:76 -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -#: ../../extend/addon/addon/planets/planets.php:153 -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -#: ../../extend/addon/addon/redred/redred.php:95 -#: ../../extend/addon/addon/redred/redred.php:99 -#: ../../extend/addon/addon/rtof/rtof.php:81 -#: ../../extend/addon/addon/rtof/rtof.php:85 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -#: ../../extend/addon/addon/statusnet/statusnet.php:389 -#: ../../extend/addon/addon/statusnet/statusnet.php:411 -#: ../../extend/addon/addon/statusnet/statusnet.php:415 -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:242 -#: ../../extend/addon/addon/twitter/twitter.php:246 -#: ../../extend/addon/addon/twitter/twitter.php:255 -#: ../../extend/addon/addon/visage/visage.php:166 -#: ../../extend/addon/addon/wppost/wppost.php:82 -#: ../../extend/addon/addon/wppost/wppost.php:105 -#: ../../extend/addon/addon/wppost/wppost.php:109 -#: ../../extend/addon/addon/xmpp/xmpp.php:53 -#: ../../extend/addon/addon/cdav/cdav.php:227 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -#: ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1719 -msgid "Yes" -msgstr "Ja" - -#: ../../Zotlabs/Module/Admin/Site.php:223 +#: ../../Zotlabs/Module/Admin/Site.php:225 msgid "My site is not a public server" msgstr "Mein Server ist kein öffentlicher Server" -#: ../../Zotlabs/Module/Admin/Site.php:224 +#: ../../Zotlabs/Module/Admin/Site.php:226 msgid "My site has paid access only" msgstr "Meine Seite hat nur bezahlten Zugriff" -#: ../../Zotlabs/Module/Admin/Site.php:225 +#: ../../Zotlabs/Module/Admin/Site.php:227 msgid "My site has free access only" msgstr "Meine Seite hat nur freien Zugriff" -#: ../../Zotlabs/Module/Admin/Site.php:226 +#: ../../Zotlabs/Module/Admin/Site.php:228 msgid "My site offers free accounts with optional paid upgrades" msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades" -#: ../../Zotlabs/Module/Admin/Site.php:237 ../../Zotlabs/Module/Setup.php:334 +#: ../../Zotlabs/Module/Admin/Site.php:239 ../../Zotlabs/Module/Setup.php:328 msgid "Basic/Minimal Social Networking" msgstr "Einfaches/minimales soziales Netzwerken" -#: ../../Zotlabs/Module/Admin/Site.php:238 ../../Zotlabs/Module/Setup.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:240 ../../Zotlabs/Module/Setup.php:329 msgid "Standard Configuration (default)" msgstr "Standardkonfiguration (Standard)" -#: ../../Zotlabs/Module/Admin/Site.php:239 ../../Zotlabs/Module/Setup.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:241 ../../Zotlabs/Module/Setup.php:330 msgid "Professional" msgstr "Professionell" -#: ../../Zotlabs/Module/Admin/Site.php:243 ../../Zotlabs/Lib/Techlevels.php:10 +#: ../../Zotlabs/Module/Admin/Site.php:245 ../../Zotlabs/Lib/Techlevels.php:10 msgid "Beginner/Basic" msgstr "Anfänger/Basis" -#: ../../Zotlabs/Module/Admin/Site.php:244 ../../Zotlabs/Lib/Techlevels.php:11 +#: ../../Zotlabs/Module/Admin/Site.php:246 ../../Zotlabs/Lib/Techlevels.php:11 msgid "Novice - not skilled but willing to learn" msgstr "Anfänger - unerfahren, aber bereit zu lernen" -#: ../../Zotlabs/Module/Admin/Site.php:245 ../../Zotlabs/Lib/Techlevels.php:12 +#: ../../Zotlabs/Module/Admin/Site.php:247 ../../Zotlabs/Lib/Techlevels.php:12 msgid "Intermediate - somewhat comfortable" msgstr "Fortgeschritten - relativ komfortabel" -#: ../../Zotlabs/Module/Admin/Site.php:246 ../../Zotlabs/Lib/Techlevels.php:13 +#: ../../Zotlabs/Module/Admin/Site.php:248 ../../Zotlabs/Lib/Techlevels.php:13 msgid "Advanced - very comfortable" msgstr "Fortgeschritten - sehr komfortabel" -#: ../../Zotlabs/Module/Admin/Site.php:247 ../../Zotlabs/Lib/Techlevels.php:14 +#: ../../Zotlabs/Module/Admin/Site.php:249 ../../Zotlabs/Lib/Techlevels.php:14 msgid "Expert - I can write computer code" msgstr "Experte - Ich kann Computercode schreiben" -#: ../../Zotlabs/Module/Admin/Site.php:248 ../../Zotlabs/Lib/Techlevels.php:15 +#: ../../Zotlabs/Module/Admin/Site.php:250 ../../Zotlabs/Lib/Techlevels.php:15 msgid "Wizard - I probably know more than you do" msgstr "Zauberer - ich kann wahrscheinlich mehr als Du" -#: ../../Zotlabs/Module/Admin/Site.php:257 ../../include/widgets.php:1559 +#: ../../Zotlabs/Module/Admin/Site.php:259 ../../include/widgets.php:1631 msgid "Site" msgstr "Seite" -#: ../../Zotlabs/Module/Admin/Site.php:260 +#: ../../Zotlabs/Module/Admin/Site.php:262 msgid "File upload" msgstr "Dateiupload" -#: ../../Zotlabs/Module/Admin/Site.php:261 +#: ../../Zotlabs/Module/Admin/Site.php:263 msgid "Policies" msgstr "Richtlinien" -#: ../../Zotlabs/Module/Admin/Site.php:262 +#: ../../Zotlabs/Module/Admin/Site.php:264 #: ../../include/contact_widgets.php:16 msgid "Advanced" msgstr "Fortgeschritten" -#: ../../Zotlabs/Module/Admin/Site.php:266 +#: ../../Zotlabs/Module/Admin/Site.php:268 #: ../../extend/addon/addon/statusnet/statusnet.php:890 msgid "Site name" msgstr "Seitenname" -#: ../../Zotlabs/Module/Admin/Site.php:268 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Admin/Site.php:270 ../../Zotlabs/Module/Setup.php:351 msgid "Server Configuration/Role" msgstr "Serverkonfiguration/Rolle" -#: ../../Zotlabs/Module/Admin/Site.php:270 +#: ../../Zotlabs/Module/Admin/Site.php:272 msgid "Site default technical skill level" msgstr "Standard-Qualifikationsstufe der Website" -#: ../../Zotlabs/Module/Admin/Site.php:270 +#: ../../Zotlabs/Module/Admin/Site.php:272 msgid "Used to provide a member experience matched to technical comfort level" msgstr "Dies wird verwendet, um eine Benutzererfahrung passend zur technischen Qualifikationsstufe zu bieten." -#: ../../Zotlabs/Module/Admin/Site.php:272 +#: ../../Zotlabs/Module/Admin/Site.php:274 msgid "Lock the technical skill level setting" msgstr "Sperre die technische Qualifikationsstufe" -#: ../../Zotlabs/Module/Admin/Site.php:272 +#: ../../Zotlabs/Module/Admin/Site.php:274 msgid "Members can set their own technical comfort level by default" msgstr "Benutzer können standardmäßig ihre eigene technische Qualifikationsstufe einstellen" -#: ../../Zotlabs/Module/Admin/Site.php:274 +#: ../../Zotlabs/Module/Admin/Site.php:276 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../Zotlabs/Module/Admin/Site.php:275 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "Administrator Information" msgstr "Administrator-Informationen" -#: ../../Zotlabs/Module/Admin/Site.php:275 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden." -#: ../../Zotlabs/Module/Admin/Site.php:276 +#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Siteinfo.php:23 +msgid "Site Information" +msgstr "Seiteninformationen" + +#: ../../Zotlabs/Module/Admin/Site.php:278 +msgid "" +"Publicly visible description of this site. Displayed on siteinfo page. " +"BBCode can be used here" +msgstr "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden." + +#: ../../Zotlabs/Module/Admin/Site.php:279 msgid "System language" msgstr "System-Sprache" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:280 msgid "System theme" msgstr "System-Theme" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:280 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>" -#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "Mobile system theme" msgstr "Mobile System-Theme:" -#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "Theme for mobile devices" msgstr "Theme für mobile Geräte" -#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "Allow Feeds as Connections" msgstr "Feeds als Verbindungen erlauben" -#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "(Heavy system resource usage)" msgstr "(führt zu hoher Systemlast)" -#: ../../Zotlabs/Module/Admin/Site.php:281 +#: ../../Zotlabs/Module/Admin/Site.php:284 msgid "Maximum image size" msgstr "Maximale Bildgröße" -#: ../../Zotlabs/Module/Admin/Site.php:281 +#: ../../Zotlabs/Module/Admin/Site.php:284 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)." -#: ../../Zotlabs/Module/Admin/Site.php:282 +#: ../../Zotlabs/Module/Admin/Site.php:285 msgid "Does this site allow new member registration?" msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?" -#: ../../Zotlabs/Module/Admin/Site.php:283 +#: ../../Zotlabs/Module/Admin/Site.php:286 msgid "Invitation only" msgstr "Nur mit Einladung" -#: ../../Zotlabs/Module/Admin/Site.php:283 +#: ../../Zotlabs/Module/Admin/Site.php:286 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden." -#: ../../Zotlabs/Module/Admin/Site.php:284 +#: ../../Zotlabs/Module/Admin/Site.php:287 msgid "Which best describes the types of account offered by this hub?" msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Register text" msgstr "Registrierungstext" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Will be displayed prominently on the registration page." msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt." -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "Site homepage to show visitors (default: login box)" msgstr "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)" -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "" "example: 'public' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen." -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "Preserve site homepage URL" msgstr "Homepage-URL schützen" -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten." -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "Accounts abandoned after x days" msgstr "Konten gelten nach X Tagen als unbenutzt" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit." -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "Allowed friend domains" msgstr "Erlaubte Domains für Kontakte" -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "Verify Email Addresses" msgstr "E-Mail-Adressen überprüfen" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)." -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "Force publish" msgstr "Veröffentlichung erzwingen" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen." -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "Import Public Streams" msgstr "Öffentliche Beiträge importieren" -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert." -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "Login on Homepage" msgstr "Log-in auf der Startseite" -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden." -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Enable context help" msgstr "Kontext-Hilfe aktivieren" -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "" "Display contextual help for the current page when the help button is " "pressed." msgstr "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird." -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Directory Server URL" msgstr "Verzeichnisserver-URL" -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Default directory server" msgstr "Standard-Verzeichnisserver" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "Proxy user" msgstr "Proxy Benutzer" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:302 msgid "Proxy URL" msgstr "Proxy URL" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Network timeout" msgstr "Netzwerk-Timeout" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)." -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "Delivery interval" msgstr "Auslieferung Intervall" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:304 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 "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server." -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "Deliveries per process" msgstr "Zustellungen pro Prozess" -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust" " if necessary to tune system performance. Recommend: 1-5." msgstr "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5." -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Poll interval" msgstr "Abfrageintervall" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet." -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Maximum Load Average" msgstr "Maximales Load Average" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Expiration period in days for imported (grid/network) content" msgstr "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "0 for no expiration of imported content" msgstr "0 = keine Löschung importierter Inhalte" -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." -msgstr "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar." +#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1454 +msgid "Public Hubs" +msgstr "Öffentliche Hubs" -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" -msgstr "Sichtbar für:" +#: ../../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 "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im $Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen." + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" +msgstr "Hub-URL" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" +msgstr "Zugriffstyp" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" +msgstr "Registrierungsrichtlinien" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" +msgstr "Statistiken" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" +msgstr "Software" + +#: ../../Zotlabs/Module/Pubsites.php:35 ../../Zotlabs/Module/Ratings.php:97 +#: ../../include/conversation.php:974 +msgid "Ratings" +msgstr "Bewertungen" + +#: ../../Zotlabs/Module/Pubsites.php:48 +msgid "Rate" +msgstr "Bewerten" + +#: ../../Zotlabs/Module/Pubsites.php:59 ../../Zotlabs/Module/Blocks.php:166 +#: ../../Zotlabs/Module/Layouts.php:197 ../../Zotlabs/Module/Webpages.php:246 +#: ../../Zotlabs/Module/Wiki.php:146 ../../Zotlabs/Module/Events.php:685 +#: ../../include/page_widgets.php:42 ../../include/widgets.php:967 +msgid "View" +msgstr "Ansicht" + +#: ../../Zotlabs/Module/Editlayout.php:79 +#: ../../Zotlabs/Module/Editwebpage.php:80 +#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 +#: ../../Zotlabs/Module/Editpost.php:24 +msgid "Item not found" +msgstr "Element nicht gefunden" #: ../../Zotlabs/Module/Editlayout.php:127 #: ../../Zotlabs/Module/Layouts.php:128 ../../Zotlabs/Module/Layouts.php:188 @@ -2477,63 +2875,66 @@ msgstr "Layout bearbeiten" msgid "Page link" msgstr "Seiten-Link" +#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:258 +#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Module/Editblock.php:111 +#: ../../Zotlabs/Module/Chat.php:207 ../../include/conversation.php:1165 +msgid "Insert web link" +msgstr "Link einfügen" + #: ../../Zotlabs/Module/Editwebpage.php:169 msgid "Edit Webpage" msgstr "Webseite bearbeiten" -#: ../../Zotlabs/Module/Follow.php:31 -msgid "Channel added." -msgstr "Kanal hinzugefügt." +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:222 +#: ../../include/nav.php:95 ../../include/conversation.php:1692 +msgid "Photos" +msgstr "Fotos" -#: ../../Zotlabs/Module/Manage.php:136 -#: ../../Zotlabs/Module/New_channel.php:121 -#, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." -msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet." +#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Wiki.php:20 +#: ../../Zotlabs/Module/Chat.php:25 +#: ../../extend/addon/addon/chess/chess.php:400 +msgid "You must be logged in to see this page." +msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können." -#: ../../Zotlabs/Module/Manage.php:143 -msgid "Create a new channel" -msgstr "Neuen Kanal anlegen" +#: ../../Zotlabs/Module/Channel.php:44 +msgid "Posts and comments" +msgstr "Beiträge und Kommentare" -#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Profiles.php:772 -#: ../../Zotlabs/Module/Chat.php:255 -msgid "Create New" -msgstr "Neu anlegen" +#: ../../Zotlabs/Module/Channel.php:45 +msgid "Only posts" +msgstr "Nur Beiträge" -#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:214 -#: ../../include/nav.php:211 -msgid "Channel Manager" -msgstr "Kanal-Manager" +#: ../../Zotlabs/Module/Channel.php:104 +msgid "Insufficient permissions. Request redirected to profile page." +msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet." -#: ../../Zotlabs/Module/Manage.php:165 -msgid "Current Channel" -msgstr "Aktueller Kanal" +#: ../../Zotlabs/Module/Network.php:96 +msgid "No such group" +msgstr "Gruppe nicht gefunden" -#: ../../Zotlabs/Module/Manage.php:167 -msgid "Switch to one of your channels by selecting it." -msgstr "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst." +#: ../../Zotlabs/Module/Network.php:136 +msgid "No such channel" +msgstr "Kanal nicht gefunden" -#: ../../Zotlabs/Module/Manage.php:168 -msgid "Default Channel" -msgstr "Standard Kanal" +#: ../../Zotlabs/Module/Network.php:141 +msgid "forum" +msgstr "Forum" -#: ../../Zotlabs/Module/Manage.php:169 -msgid "Make Default" -msgstr "Zum Standard machen" +#: ../../Zotlabs/Module/Network.php:153 +msgid "Search Results For:" +msgstr "Suchergebnisse für:" -#: ../../Zotlabs/Module/Manage.php:172 -#, php-format -msgid "%d new messages" -msgstr "%d neue Nachrichten" +#: ../../Zotlabs/Module/Network.php:221 +msgid "Privacy group is empty" +msgstr "Gruppe ist leer" -#: ../../Zotlabs/Module/Manage.php:173 -#, php-format -msgid "%d new introductions" -msgstr "%d neue Vorstellungen" +#: ../../Zotlabs/Module/Network.php:230 +msgid "Privacy group: " +msgstr "Gruppe:" -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Delegated Channel" -msgstr "Delegierte Kanäle" +#: ../../Zotlabs/Module/Network.php:256 +msgid "Invalid connection." +msgstr "Ungültige Verbindung." #: ../../Zotlabs/Module/Menu.php:49 msgid "Unable to update menu." @@ -2571,14 +2972,10 @@ msgstr "Im Menü können gespeicherte Lesezeichen abgelegt werden" msgid "Submit and proceed" msgstr "Absenden und fortfahren" -#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2312 +#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2271 msgid "Menus" msgstr "Menüs" -#: ../../Zotlabs/Module/Menu.php:113 ../../Zotlabs/Module/Locs.php:120 -msgid "Drop" -msgstr "Löschen" - #: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Blocks.php:157 #: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Webpages.php:251 #: ../../include/page_widgets.php:47 @@ -2683,9 +3080,9 @@ msgstr "Benötigt" msgid "Location (URL) of app" msgstr "Ort (URL) der App" -#: ../../Zotlabs/Module/Appman.php:117 ../../Zotlabs/Module/Events.php:466 -#: ../../Zotlabs/Module/Rbmark.php:101 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:834 +#: ../../Zotlabs/Module/Appman.php:117 ../../Zotlabs/Module/Rbmark.php:101 +#: ../../Zotlabs/Module/Events.php:466 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:838 #: ../../extend/addon/addon/rendezvous/rendezvous.php:133 msgid "Description" msgstr "Beschreibung" @@ -2718,29 +3115,11 @@ msgstr "Ort (URL), um die App zu kaufen" msgid "Edit post" msgstr "Bearbeite Beitrag" -#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 -msgid "Authorize application connection" -msgstr "Zugriff für die Anwendung autorisieren" - -#: ../../Zotlabs/Module/Api.php:73 -msgid "Return to your app and insert this Security Code:" -msgstr "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:" - -#: ../../Zotlabs/Module/Api.php:83 -msgid "Please login to continue." -msgstr "Zum Weitermachen, bitte einloggen." - -#: ../../Zotlabs/Module/Api.php:95 -msgid "" -"Do you want to authorize this application to access your posts and contacts," -" and/or create new posts for you?" -msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?" - #: ../../Zotlabs/Module/Help.php:23 msgid "Documentation Search" msgstr "Suche in der Dokumentation" -#: ../../Zotlabs/Module/Help.php:51 +#: ../../Zotlabs/Module/Help.php:82 msgid "$Projectname Documentation" msgstr "$Projectname-Dokumentation" @@ -2752,13 +3131,12 @@ msgstr "Inhalte von Firefox nach $Projectname teilen" msgid "Activate the Firefox $Projectname provider" msgstr "Aktiviert den $Projectname-Provider für firefox" -#: ../../Zotlabs/Module/Apps.php:46 ../../include/nav.php:168 +#: ../../Zotlabs/Module/Apps.php:46 ../../include/nav.php:166 #: ../../include/widgets.php:102 msgid "Apps" msgstr "Apps" #: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82 -#: ../../Zotlabs/Module/Siteinfo.php:48 msgid "$Projectname" msgstr "$Projectname" @@ -2818,339 +3196,13 @@ msgstr "URL zu dieser Datei anzeigen" msgid "Notify your contacts about this file" msgstr "Meine Kontakte über diese Datei benachrichtigen" -#: ../../Zotlabs/Module/Item.php:182 -msgid "Unable to locate original post." -msgstr "Originalbeitrag nicht gefunden." - -#: ../../Zotlabs/Module/Item.php:435 -msgid "Empty post discarded." -msgstr "Leeren Beitrag verworfen." - -#: ../../Zotlabs/Module/Item.php:475 -msgid "Executable content type not permitted to this channel." -msgstr "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben." - -#: ../../Zotlabs/Module/Item.php:855 -msgid "Duplicate post suppressed." -msgstr "Doppelter Beitrag unterdrückt." - -#: ../../Zotlabs/Module/Item.php:992 -msgid "System error. Post not saved." -msgstr "Systemfehler. Beitrag nicht gespeichert." - -#: ../../Zotlabs/Module/Item.php:1113 -msgid "Unable to obtain post information from database." -msgstr "Beitragsinformationen können nicht aus der Datenbank abgerufen werden." - -#: ../../Zotlabs/Module/Item.php:1120 -#, php-format -msgid "You have reached your limit of %1$.0f top level posts." -msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht." - -#: ../../Zotlabs/Module/Item.php:1127 -#, php-format -msgid "You have reached your limit of %1$.0f webpages." -msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht." - -#: ../../Zotlabs/Module/Chanview.php:134 -msgid "toggle full screen mode" -msgstr "auf Vollbildmodus umschalten" - -#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:183 -#: ../../Zotlabs/Module/Profiles.php:240 ../../Zotlabs/Module/Profiles.php:619 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62 -msgid "Profile not found." -msgstr "Profil nicht gefunden." - -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." -msgstr "Profil gelöscht." - -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104 -msgid "Profile-" -msgstr "Profil-" - -#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 -msgid "New profile created." -msgstr "Neues Profil erstellt." - -#: ../../Zotlabs/Module/Profiles.php:110 -msgid "Profile unavailable to clone." -msgstr "Profil kann nicht geklont werden." - -#: ../../Zotlabs/Module/Profiles.php:145 -msgid "Profile unavailable to export." -msgstr "Dieses Profil kann nicht exportiert werden." - -#: ../../Zotlabs/Module/Profiles.php:250 -msgid "Profile Name is required." -msgstr "Profil-Name erforderlich." - -#: ../../Zotlabs/Module/Profiles.php:421 -msgid "Marital Status" -msgstr "Familienstand" - -#: ../../Zotlabs/Module/Profiles.php:425 -msgid "Romantic Partner" -msgstr "Romantische Partner" - -#: ../../Zotlabs/Module/Profiles.php:429 ../../Zotlabs/Module/Profiles.php:730 -msgid "Likes" -msgstr "Gefällt" - -#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:731 -msgid "Dislikes" -msgstr "Gefällt nicht" - -#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:738 -msgid "Work/Employment" -msgstr "Arbeit/Anstellung" - -#: ../../Zotlabs/Module/Profiles.php:440 -msgid "Religion" -msgstr "Religion" - -#: ../../Zotlabs/Module/Profiles.php:444 -msgid "Political Views" -msgstr "Politische Ansichten" - -#: ../../Zotlabs/Module/Profiles.php:448 -#: ../../extend/addon/addon/openid/MysqlProvider.php:74 -msgid "Gender" -msgstr "Geschlecht" - -#: ../../Zotlabs/Module/Profiles.php:452 -msgid "Sexual Preference" -msgstr "Sexuelle Orientierung" - -#: ../../Zotlabs/Module/Profiles.php:456 -msgid "Homepage" -msgstr "Webseite" - -#: ../../Zotlabs/Module/Profiles.php:460 -msgid "Interests" -msgstr "Hobbys/Interessen" - -#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:692 -#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Events.php:468 -#: ../../Zotlabs/Module/Pubsites.php:51 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:835 -#: ../../include/js_strings.php:25 -msgid "Location" -msgstr "Ort" - -#: ../../Zotlabs/Module/Profiles.php:554 -msgid "Profile updated." -msgstr "Profil aktualisiert." - -#: ../../Zotlabs/Module/Profiles.php:638 -msgid "Hide your connections list from viewers of this profile" -msgstr "Deine Verbindungen vor Betrachtern dieses Profils verbergen" - -#: ../../Zotlabs/Module/Profiles.php:680 -msgid "Edit Profile Details" -msgstr "Bearbeite Profil-Details" - -#: ../../Zotlabs/Module/Profiles.php:682 -msgid "View this profile" -msgstr "Dieses Profil ansehen" - -#: ../../Zotlabs/Module/Profiles.php:683 ../../Zotlabs/Module/Profiles.php:765 -#: ../../include/channel.php:983 -msgid "Edit visibility" -msgstr "Sichtbarkeit bearbeiten" - -#: ../../Zotlabs/Module/Profiles.php:684 -msgid "Profile Tools" -msgstr "Profilwerkzeuge" - -#: ../../Zotlabs/Module/Profiles.php:685 -msgid "Change cover photo" -msgstr "Titelbild ändern" - -#: ../../Zotlabs/Module/Profiles.php:686 ../../include/channel.php:954 -msgid "Change profile photo" -msgstr "Profilfoto ändern" - -#: ../../Zotlabs/Module/Profiles.php:687 -msgid "Create a new profile using these settings" -msgstr "Neues Profil anlegen und diese Einstellungen übernehmen" - -#: ../../Zotlabs/Module/Profiles.php:688 -msgid "Clone this profile" -msgstr "Dieses Profil klonen" - -#: ../../Zotlabs/Module/Profiles.php:689 -msgid "Delete this profile" -msgstr "Dieses Profil löschen" - -#: ../../Zotlabs/Module/Profiles.php:690 -msgid "Add profile things" -msgstr "Sachen zum Profil hinzufügen" - -#: ../../Zotlabs/Module/Profiles.php:691 ../../include/widgets.php:105 -#: ../../include/conversation.php:1585 -msgid "Personal" -msgstr "Persönlich" - -#: ../../Zotlabs/Module/Profiles.php:693 -msgid "Relation" -msgstr "Beziehung" - -#: ../../Zotlabs/Module/Profiles.php:694 ../../include/datetime.php:55 -msgid "Miscellaneous" -msgstr "Verschiedenes" - -#: ../../Zotlabs/Module/Profiles.php:696 -msgid "Import profile from file" -msgstr "Profil aus einer Datei importieren" - -#: ../../Zotlabs/Module/Profiles.php:697 -msgid "Export profile to file" -msgstr "Profil in eine Datei exportieren" - -#: ../../Zotlabs/Module/Profiles.php:698 -msgid "Your gender" -msgstr "Dein Geschlecht" - -#: ../../Zotlabs/Module/Profiles.php:699 -msgid "Marital status" -msgstr "Familienstand" - -#: ../../Zotlabs/Module/Profiles.php:700 -msgid "Sexual preference" -msgstr "Sexuelle Orientierung" - -#: ../../Zotlabs/Module/Profiles.php:703 -msgid "Profile name" -msgstr "Profilname" - -#: ../../Zotlabs/Module/Profiles.php:705 -msgid "This is your default profile." -msgstr "Das ist Dein Standardprofil." - -#: ../../Zotlabs/Module/Profiles.php:707 -msgid "Your full name" -msgstr "Dein voller Name" - -#: ../../Zotlabs/Module/Profiles.php:708 -msgid "Title/Description" -msgstr "Titel/Beschreibung" - -#: ../../Zotlabs/Module/Profiles.php:711 -msgid "Street address" -msgstr "Straße und Hausnummer" - -#: ../../Zotlabs/Module/Profiles.php:712 -msgid "Locality/City" -msgstr "Wohnort" - -#: ../../Zotlabs/Module/Profiles.php:713 -msgid "Region/State" -msgstr "Region/Bundesstaat" - -#: ../../Zotlabs/Module/Profiles.php:714 -msgid "Postal/Zip code" -msgstr "Postleitzahl" - -#: ../../Zotlabs/Module/Profiles.php:715 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157 -msgid "Country" -msgstr "Land" - -#: ../../Zotlabs/Module/Profiles.php:720 -msgid "Who (if applicable)" -msgstr "Wer (falls anwendbar)" - -#: ../../Zotlabs/Module/Profiles.php:720 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" -msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com" - -#: ../../Zotlabs/Module/Profiles.php:721 -msgid "Since (date)" -msgstr "Seit (Datum)" - -#: ../../Zotlabs/Module/Profiles.php:724 -msgid "Tell us about yourself" -msgstr "Erzähle uns ein wenig von Dir" - -#: ../../Zotlabs/Module/Profiles.php:725 -#: ../../extend/addon/addon/openid/MysqlProvider.php:68 -msgid "Homepage URL" -msgstr "Homepage-URL" - -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Hometown" -msgstr "Heimatort" - -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Political views" -msgstr "Politische Ansichten" - -#: ../../Zotlabs/Module/Profiles.php:728 -msgid "Religious views" -msgstr "Religiöse Ansichten" - -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Keywords used in directory listings" -msgstr "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden" - -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Example: fishing photography software" -msgstr "Beispiel: Angeln Fotografie Software" - -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Musical interests" -msgstr "Musikalische Interessen" - -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Books, literature" -msgstr "Bücher, Literatur" - -#: ../../Zotlabs/Module/Profiles.php:734 -msgid "Television" -msgstr "Fernsehen" - -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Film/Dance/Culture/Entertainment" -msgstr "Film/Tanz/Kultur/Unterhaltung" - -#: ../../Zotlabs/Module/Profiles.php:736 -msgid "Hobbies/Interests" -msgstr "Hobbys/Interessen" - -#: ../../Zotlabs/Module/Profiles.php:737 -msgid "Love/Romance" -msgstr "Liebe/Romantik" - -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "School/Education" -msgstr "Schule/Ausbildung" - -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Contact information and social networks" -msgstr "Kontaktinformation und soziale Netzwerke" - -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "My other channels" -msgstr "Meine anderen Kanäle" - -#: ../../Zotlabs/Module/Profiles.php:761 ../../include/channel.php:979 -msgid "Profile Image" -msgstr "Profilfoto:" - -#: ../../Zotlabs/Module/Profiles.php:771 ../../include/channel.php:961 -#: ../../include/nav.php:91 -msgid "Edit Profiles" -msgstr "Profile bearbeiten" - -#: ../../Zotlabs/Module/Acl.php:313 -msgid "network" -msgstr "Netzwerk" - -#: ../../Zotlabs/Module/Acl.php:323 -msgid "RSS" -msgstr "RSS" +#: ../../Zotlabs/Module/Directory.php:64 ../../Zotlabs/Module/Display.php:17 +#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Photos.php:509 +#: ../../Zotlabs/Module/Search.php:17 +#: ../../Zotlabs/Module/Viewconnections.php:23 +#: ../../extend/addon/addon/friendica/dfrn_request.php:794 +msgid "Public access denied." +msgstr "Öffentlichen Zugriff verweigert." #: ../../Zotlabs/Module/Directory.php:245 #, php-format @@ -3177,7 +3229,7 @@ msgstr "Alter:" #: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1051 #: ../../include/event.php:52 ../../include/event.php:84 -#: ../../include/bb2diaspora.php:512 +#: ../../include/bb2diaspora.php:520 msgid "Location:" msgstr "Ort:" @@ -3193,13 +3245,6 @@ msgstr "Heimatstadt:" msgid "About:" msgstr "Über:" -#: ../../Zotlabs/Module/Directory.php:328 ../../Zotlabs/Module/Suggest.php:56 -#: ../../Zotlabs/Module/Match.php:68 ../../include/channel.php:1036 -#: ../../include/connections.php:78 ../../include/widgets.php:147 -#: ../../include/widgets.php:184 ../../include/conversation.php:971 -msgid "Connect" -msgstr "Verbinden" - #: ../../Zotlabs/Module/Directory.php:329 msgid "Public Forum:" msgstr "Öffentliches Forum:" @@ -3265,58 +3310,159 @@ msgstr "Älteste zuerst" msgid "No entries (some entries may be hidden)." msgstr "Keine Einträge gefunden (einige könnten versteckt sein)." -#: ../../Zotlabs/Module/Group.php:24 -msgid "Privacy group created." -msgstr "Gruppe wurde erstellt." +#: ../../Zotlabs/Module/Item.php:184 +msgid "Unable to locate original post." +msgstr "Originalbeitrag nicht gefunden." -#: ../../Zotlabs/Module/Group.php:30 -msgid "Could not create privacy group." -msgstr "Gruppe konnte nicht erstellt werden." +#: ../../Zotlabs/Module/Item.php:447 +msgid "Empty post discarded." +msgstr "Leeren Beitrag verworfen." -#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 -#: ../../include/items.php:3944 -msgid "Privacy group not found." -msgstr "Gruppe nicht gefunden." +#: ../../Zotlabs/Module/Item.php:489 +msgid "Executable content type not permitted to this channel." +msgstr "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben." -#: ../../Zotlabs/Module/Group.php:58 -msgid "Privacy group updated." -msgstr "Gruppe wurde aktualisiert." +#: ../../Zotlabs/Module/Item.php:871 +msgid "Duplicate post suppressed." +msgstr "Doppelter Beitrag unterdrückt." -#: ../../Zotlabs/Module/Group.php:90 -msgid "Create a group of channels." -msgstr "Erstelle eine Gruppe für Kanäle." +#: ../../Zotlabs/Module/Item.php:1013 +msgid "System error. Post not saved." +msgstr "Systemfehler. Beitrag nicht gespeichert." -#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184 -msgid "Privacy group name: " -msgstr "Gruppenname:" +#: ../../Zotlabs/Module/Item.php:1137 +msgid "Unable to obtain post information from database." +msgstr "Beitragsinformationen können nicht aus der Datenbank abgerufen werden." -#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187 -msgid "Members are visible to other channels" -msgstr "Mitglieder sind sichtbar für andere Kanäle" +#: ../../Zotlabs/Module/Item.php:1144 +#, php-format +msgid "You have reached your limit of %1$.0f top level posts." +msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht." -#: ../../Zotlabs/Module/Group.php:111 -msgid "Privacy group removed." -msgstr "Gruppe wurde entfernt." +#: ../../Zotlabs/Module/Item.php:1151 +#, php-format +msgid "You have reached your limit of %1$.0f webpages." +msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht." -#: ../../Zotlabs/Module/Group.php:113 -msgid "Unable to remove privacy group." -msgstr "Gruppe konnte nicht entfernt werden." +#: ../../Zotlabs/Module/Chanview.php:134 +msgid "toggle full screen mode" +msgstr "auf Vollbildmodus umschalten" -#: ../../Zotlabs/Module/Group.php:183 -msgid "Privacy group editor" -msgstr "Gruppeneditor" +#: ../../Zotlabs/Module/Follow.php:31 +msgid "Channel added." +msgstr "Kanal hinzugefügt." -#: ../../Zotlabs/Module/Group.php:197 -msgid "Members" -msgstr "Mitglieder" +#: ../../Zotlabs/Module/Mail.php:38 +msgid "Unable to lookup recipient." +msgstr "Konnte den Empfänger nicht finden." -#: ../../Zotlabs/Module/Group.php:199 -msgid "All Connected Channels" -msgstr "Alle verbundenen Kanäle" +#: ../../Zotlabs/Module/Mail.php:45 +msgid "Unable to communicate with requested channel." +msgstr "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen." -#: ../../Zotlabs/Module/Group.php:231 -msgid "Click on a channel to add or remove." -msgstr "Wähle einen Kanal zum hinzufügen oder entfernen aus." +#: ../../Zotlabs/Module/Mail.php:52 +msgid "Cannot verify requested channel." +msgstr "Verifizierung des angeforderten Kanals fehlgeschlagen." + +#: ../../Zotlabs/Module/Mail.php:70 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen." + +#: ../../Zotlabs/Module/Mail.php:149 +msgid "Messages" +msgstr "Nachrichten" + +#: ../../Zotlabs/Module/Mail.php:184 +msgid "Message recalled." +msgstr "Nachricht widerrufen." + +#: ../../Zotlabs/Module/Mail.php:197 +msgid "Conversation removed." +msgstr "Unterhaltung gelöscht." + +#: ../../Zotlabs/Module/Mail.php:211 ../../Zotlabs/Module/Mail.php:320 +#: ../../Zotlabs/Module/Chat.php:205 ../../include/conversation.php:1200 +msgid "Please enter a link URL:" +msgstr "Gib eine URL ein:" + +#: ../../Zotlabs/Module/Mail.php:212 ../../Zotlabs/Module/Mail.php:321 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "Verfällt YYYY-MM-DD HH;MM" + +#: ../../Zotlabs/Module/Mail.php:240 +msgid "Requested channel is not in this network" +msgstr "Angeforderter Kanal ist nicht in diesem Netzwerk." + +#: ../../Zotlabs/Module/Mail.php:248 +msgid "Send Private Message" +msgstr "Private Nachricht senden" + +#: ../../Zotlabs/Module/Mail.php:249 ../../Zotlabs/Module/Mail.php:374 +msgid "To:" +msgstr "An:" + +#: ../../Zotlabs/Module/Mail.php:252 ../../Zotlabs/Module/Mail.php:376 +msgid "Subject:" +msgstr "Betreff:" + +#: ../../Zotlabs/Module/Mail.php:255 ../../Zotlabs/Module/Invite.php:138 +msgid "Your message:" +msgstr "Deine Nachricht:" + +#: ../../Zotlabs/Module/Mail.php:257 ../../Zotlabs/Module/Mail.php:382 +#: ../../include/conversation.php:1260 +msgid "Attach file" +msgstr "Datei anhängen" + +#: ../../Zotlabs/Module/Mail.php:259 +msgid "Send" +msgstr "Absenden" + +#: ../../Zotlabs/Module/Mail.php:262 ../../Zotlabs/Module/Mail.php:387 +#: ../../include/conversation.php:1305 +msgid "Set expiration date" +msgstr "Verfallsdatum" + +#: ../../Zotlabs/Module/Mail.php:264 ../../Zotlabs/Module/Mail.php:389 +#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Lib/ThreadItem.php:741 +#: ../../include/conversation.php:1310 +msgid "Encrypt text" +msgstr "Text verschlüsseln" + +#: ../../Zotlabs/Module/Mail.php:346 +msgid "Delete message" +msgstr "Nachricht löschen" + +#: ../../Zotlabs/Module/Mail.php:347 +msgid "Delivery report" +msgstr "Zustellungsbericht" + +#: ../../Zotlabs/Module/Mail.php:348 +msgid "Recall message" +msgstr "Nachricht widerrufen" + +#: ../../Zotlabs/Module/Mail.php:350 +msgid "Message has been recalled." +msgstr "Die Nachricht wurde widerrufen." + +#: ../../Zotlabs/Module/Mail.php:367 +msgid "Delete Conversation" +msgstr "Unterhaltung löschen" + +#: ../../Zotlabs/Module/Mail.php:369 +msgid "" +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." +msgstr "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten." + +#: ../../Zotlabs/Module/Mail.php:373 +msgid "Send Reply" +msgstr "Antwort senden" + +#: ../../Zotlabs/Module/Mail.php:378 +#, php-format +msgid "Your message for %s (%s):" +msgstr "Deine Nachricht für %s (%s):" #: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203 msgid "webpage" @@ -3344,6 +3490,26 @@ msgstr "Element für %s installiert" msgid "%s element installation failed" msgstr "Installation des Elements %s fehlgeschlagen" +#: ../../Zotlabs/Module/Import_items.php:42 ../../Zotlabs/Module/Import.php:71 +msgid "Nothing to import." +msgstr "Nichts zu importieren." + +#: ../../Zotlabs/Module/Import_items.php:66 ../../Zotlabs/Module/Import.php:83 +#: ../../Zotlabs/Module/Import.php:98 +msgid "Unable to download data from old server" +msgstr "Daten können vom alten Server nicht heruntergeladen werden" + +#: ../../Zotlabs/Module/Import_items.php:72 +#: ../../Zotlabs/Module/Import.php:105 +msgid "Imported file is empty." +msgstr "Die importierte Datei ist leer." + +#: ../../Zotlabs/Module/Import_items.php:88 +#: ../../Zotlabs/Module/Import.php:127 +#, php-format +msgid "Warning: Database versions differ by %1$d updates." +msgstr "Achtung: Datenbankversionen unterscheiden sich um %1$d Aktualisierungen." + #: ../../Zotlabs/Module/Import_items.php:104 msgid "Import completed" msgstr "Import abgeschlossen" @@ -3357,244 +3523,162 @@ msgid "" "Use this form to import existing posts and content from an export file." msgstr "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren." -#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Wiki.php:20 -#: ../../Zotlabs/Module/Chat.php:25 -#: ../../extend/addon/addon/chess/chess.php:400 -msgid "You must be logged in to see this page." -msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können." - -#: ../../Zotlabs/Module/Channel.php:44 -msgid "Posts and comments" -msgstr "Beiträge und Kommentare" +#: ../../Zotlabs/Module/Import_items.php:121 +#: ../../Zotlabs/Module/Import.php:532 +msgid "File to Upload" +msgstr "Hochzuladende Datei:" -#: ../../Zotlabs/Module/Channel.php:45 -msgid "Only posts" -msgstr "Nur Beiträge" +#: ../../Zotlabs/Module/Invite.php:29 +msgid "Total invitation limit exceeded." +msgstr "Einladungslimit überschritten." -#: ../../Zotlabs/Module/Channel.php:104 -msgid "Insufficient permissions. Request redirected to profile page." -msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet." +#: ../../Zotlabs/Module/Invite.php:53 +#, php-format +msgid "%s : Not a valid email address." +msgstr "%s : Keine gültige Email Adresse." -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." -msgstr "Klon nicht gefunden." +#: ../../Zotlabs/Module/Invite.php:67 +msgid "Please join us on $Projectname" +msgstr "Schließe Dich uns auf $Projectname an!" -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." -msgstr "Nachschlagen des Kanal-Ortes fehlgeschlagen" +#: ../../Zotlabs/Module/Invite.php:77 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines $Projectname-Servers." -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary" -" location." -msgstr "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst." +#: ../../Zotlabs/Module/Invite.php:82 +#, php-format +msgid "%s : Message delivery failed." +msgstr "%s : Nachricht konnte nicht zugestellt werden." -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" -msgstr "Synchronisiere Klone" +#: ../../Zotlabs/Module/Invite.php:86 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "%d Nachricht gesendet." +msgstr[1] "%d Nachrichten gesendet." -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." -msgstr "Keine Klon-Adressen gefunden." +#: ../../Zotlabs/Module/Invite.php:105 +msgid "You have no more invitations available" +msgstr "Du hast keine weiteren verfügbare Einladungen" -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" -msgstr "Klon-Adressen verwalten" +#: ../../Zotlabs/Module/Invite.php:136 +msgid "Send invitations" +msgstr "Einladungen senden" -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" -msgstr "Primär" +#: ../../Zotlabs/Module/Invite.php:137 +msgid "Enter email addresses, one per line:" +msgstr "Email-Adressen eintragen, eine pro Zeile:" -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" -msgstr "Jetzt synchronisieren" +#: ../../Zotlabs/Module/Invite.php:139 +msgid "Please join my community on $Projectname." +msgstr "Schließe Dich uns auf $Projectname an!" -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." -msgstr "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!" +#: ../../Zotlabs/Module/Invite.php:141 +msgid "You will need to supply this invitation code:" +msgstr "Bitte verwende bei der Registrierung den folgenden Einladungscode:" -#: ../../Zotlabs/Module/Locs.php:124 +#: ../../Zotlabs/Module/Invite.php:142 msgid "" -"When possible, drop a location by logging into that website/hub and removing" -" your channel." -msgstr "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst." - -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." -msgstr "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt." - -#: ../../Zotlabs/Module/Admin.php:94 -msgid "# Accounts" -msgstr "Anzahl der Konten" - -#: ../../Zotlabs/Module/Admin.php:95 -msgid "# blocked accounts" -msgstr "Anzahl der blockierten Konten" - -#: ../../Zotlabs/Module/Admin.php:96 -msgid "# expired accounts" -msgstr "Anzahl der abgelaufenen Konten" - -#: ../../Zotlabs/Module/Admin.php:97 -msgid "# expiring accounts" -msgstr "Anzahl der ablaufenden Konten" - -#: ../../Zotlabs/Module/Admin.php:108 -msgid "# Channels" -msgstr "Anzahl der Kanäle" - -#: ../../Zotlabs/Module/Admin.php:109 -msgid "# primary" -msgstr "Anzahl der primären Kanäle" - -#: ../../Zotlabs/Module/Admin.php:110 -msgid "# clones" -msgstr "Anzahl der Klone" - -#: ../../Zotlabs/Module/Admin.php:116 -msgid "Message queues" -msgstr "Nachrichten-Warteschlangen" - -#: ../../Zotlabs/Module/Admin.php:133 -msgid "Your software should be updated" -msgstr "Die installierte Software sollte aktualisiert werden" - -#: ../../Zotlabs/Module/Admin.php:138 -msgid "Summary" -msgstr "Zusammenfassung" - -#: ../../Zotlabs/Module/Admin.php:141 -msgid "Registered accounts" -msgstr "Registrierte Konten" - -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Pending registrations" -msgstr "Ausstehende Registrierungen" - -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Registered channels" -msgstr "Registrierte Kanäle" - -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Active plugins" -msgstr "Aktive Plug-Ins" +"1. Register at any $Projectname location (they are all inter-connected)" +msgstr "1. Registriere Dich auf einem beliebigen $Projectname-Hub (sie sind alle miteinander verbunden)" -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Version" -msgstr "Version" +#: ../../Zotlabs/Module/Invite.php:144 +msgid "2. Enter my $Projectname network address into the site searchbar." +msgstr "2. Gib meine $Projectname-Adresse im Suchfeld ein." -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Repository version (master)" -msgstr "Repository-Version (master)" +#: ../../Zotlabs/Module/Invite.php:145 +msgid "or visit" +msgstr "oder besuche" -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (dev)" -msgstr "Repository-Version (dev)" +#: ../../Zotlabs/Module/Invite.php:147 +msgid "3. Click [Connect]" +msgstr "3. Klicke auf [Verbinden]" -#: ../../Zotlabs/Module/Like.php:19 -msgid "Like/Dislike" -msgstr "Mögen/Nicht mögen" +#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 +#: ../../Zotlabs/Module/Blocks.php:155 +msgid "Block Name" +msgstr "Block-Name" -#: ../../Zotlabs/Module/Like.php:24 -msgid "This action is restricted to members." -msgstr "Diese Aktion kann nur von Mitgliedern ausgeführt werden." +#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1276 +msgid "Title (optional)" +msgstr "Titel (optional)" -#: ../../Zotlabs/Module/Like.php:25 -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 "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner $Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues $Projectname-Mitglied</a>." +#: ../../Zotlabs/Module/Editblock.php:133 +msgid "Edit Block" +msgstr "Block bearbeiten" -#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 -#: ../../Zotlabs/Module/Like.php:169 -msgid "Invalid request." -msgstr "Ungültige Anfrage." +#: ../../Zotlabs/Module/Group.php:24 +msgid "Privacy group created." +msgstr "Gruppe wurde erstellt." -#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 -msgid "channel" -msgstr "Kanal" +#: ../../Zotlabs/Module/Group.php:30 +msgid "Could not create privacy group." +msgstr "Gruppe konnte nicht erstellt werden." -#: ../../Zotlabs/Module/Like.php:146 -msgid "thing" -msgstr "Sache" +#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 +#: ../../include/items.php:3876 +msgid "Privacy group not found." +msgstr "Gruppe nicht gefunden." -#: ../../Zotlabs/Module/Like.php:192 -msgid "Channel unavailable." -msgstr "Kanal nicht vorhanden." +#: ../../Zotlabs/Module/Group.php:58 +msgid "Privacy group updated." +msgstr "Gruppe wurde aktualisiert." -#: ../../Zotlabs/Module/Like.php:240 -msgid "Previous action reversed." -msgstr "Die vorherige Aktion wurde rückgängig gemacht." +#: ../../Zotlabs/Module/Group.php:90 +msgid "Create a group of channels." +msgstr "Erstelle eine Gruppe für Kanäle." -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../Zotlabs/Module/Tagger.php:47 -#: ../../extend/addon/addon/diaspora/inbound.php:1792 -#: ../../extend/addon/addon/redphotos/redphotohelper.php:74 -#: ../../include/text.php:1984 ../../include/conversation.php:120 -msgid "photo" -msgstr "Foto" +#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184 +msgid "Privacy group name: " +msgstr "Gruppenname:" -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../extend/addon/addon/diaspora/inbound.php:1792 -#: ../../include/text.php:1990 ../../include/conversation.php:148 -msgid "status" -msgstr "Status" +#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187 +msgid "Members are visible to other channels" +msgstr "Mitglieder sind sichtbar für andere Kanäle" -#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Events.php:256 -#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:961 -#: ../../include/text.php:1987 ../../include/conversation.php:123 -msgid "event" -msgstr "Termin" +#: ../../Zotlabs/Module/Group.php:111 +msgid "Privacy group removed." +msgstr "Gruppe wurde entfernt." -#: ../../Zotlabs/Module/Like.php:419 -#: ../../extend/addon/addon/diaspora/inbound.php:1821 -#: ../../include/conversation.php:164 -#, php-format -msgid "%1$s likes %2$s's %3$s" -msgstr "%1$s gefällt %2$ss %3$s" +#: ../../Zotlabs/Module/Group.php:113 +msgid "Unable to remove privacy group." +msgstr "Gruppe konnte nicht entfernt werden." -#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "%1$s gefällt %2$ss %3$s nicht" +#: ../../Zotlabs/Module/Group.php:183 +msgid "Privacy group editor" +msgstr "Gruppeneditor" -#: ../../Zotlabs/Module/Like.php:423 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "%1$s stimmt %2$ss %3$s zu" +#: ../../Zotlabs/Module/Group.php:197 +msgid "Members" +msgstr "Mitglieder" -#: ../../Zotlabs/Module/Like.php:425 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "%1$s lehnt %2$ss %3$s ab" +#: ../../Zotlabs/Module/Group.php:199 +msgid "All Connected Channels" +msgstr "Alle verbundenen Kanäle" -#: ../../Zotlabs/Module/Like.php:427 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "%1$s enthält sich zu %2$ss %3$s" +#: ../../Zotlabs/Module/Group.php:231 +msgid "Click on a channel to add or remove." +msgstr "Wähle einen Kanal zum hinzufügen oder entfernen aus." -#: ../../Zotlabs/Module/Like.php:429 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "%1$s nimmt an %2$ss %3$s teil" +#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." +msgstr "Ungültiger Profil-Identifikator" -#: ../../Zotlabs/Module/Like.php:431 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "%1$s nimmt an %2$ss %3$s nicht teil" +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Profile Visibility Editor" +msgstr "Profil-Sichtbarkeits-Editor" -#: ../../Zotlabs/Module/Like.php:433 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "%1$s nimmt vielleicht an %2$ss %3$s teil" +#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1282 +msgid "Profile" +msgstr "Profil" -#: ../../Zotlabs/Module/Like.php:538 -msgid "Action completed." -msgstr "Aktion durchgeführt." +#: ../../Zotlabs/Module/Profperm.php:119 +msgid "Click on a contact to add or remove." +msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen." -#: ../../Zotlabs/Module/Like.php:539 -msgid "Thank you." -msgstr "Vielen Dank." +#: ../../Zotlabs/Module/Profperm.php:128 +msgid "Visible To" +msgstr "Sichtbar für" #: ../../Zotlabs/Module/Magic.php:71 msgid "Hub not found." @@ -3617,7 +3701,7 @@ msgid "Menu Item Permissions" msgstr "Zugriffsrechte des Menü-Elements" #: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231 -#: ../../Zotlabs/Module/Settings/Channel.php:486 +#: ../../Zotlabs/Module/Settings/Channel.php:489 msgid "(click to open/close)" msgstr "(zum öffnen/schließen anklicken)" @@ -3721,11 +3805,6 @@ msgstr "Link Text" msgid "No ratings" msgstr "Keine Bewertungen" -#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 -#: ../../include/conversation.php:974 -msgid "Ratings" -msgstr "Bewertungen" - #: ../../Zotlabs/Module/Ratings.php:98 msgid "Rating: " msgstr "Bewertung: " @@ -3756,71 +3835,6 @@ msgstr "Laune" msgid "Set your current mood and tell your friends" msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden" -#: ../../Zotlabs/Module/Dreport.php:45 -msgid "Invalid message" -msgstr "Ungültige Beitrags-ID (mid)" - -#: ../../Zotlabs/Module/Dreport.php:78 -msgid "no results" -msgstr "keine Ergebnisse" - -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "channel sync processed" -msgstr "Kanal-Sync verarbeitet" - -#: ../../Zotlabs/Module/Dreport.php:97 -msgid "queued" -msgstr "zur Warteschlange hinzugefügt" - -#: ../../Zotlabs/Module/Dreport.php:101 -msgid "posted" -msgstr "zugestellt" - -#: ../../Zotlabs/Module/Dreport.php:105 -msgid "accepted for delivery" -msgstr "für Zustellung akzeptiert" - -#: ../../Zotlabs/Module/Dreport.php:109 -msgid "updated" -msgstr "aktualisiert" - -#: ../../Zotlabs/Module/Dreport.php:112 -msgid "update ignored" -msgstr "Aktualisierung ignoriert" - -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "permission denied" -msgstr "Zugriff verweigert" - -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "recipient not found" -msgstr "Empfänger nicht gefunden." - -#: ../../Zotlabs/Module/Dreport.php:122 -msgid "mail recalled" -msgstr "Mail widerrufen" - -#: ../../Zotlabs/Module/Dreport.php:125 -msgid "duplicate mail received" -msgstr "Doppelte Mail erhalten" - -#: ../../Zotlabs/Module/Dreport.php:128 -msgid "mail delivered" -msgstr "Mail zugestellt" - -#: ../../Zotlabs/Module/Dreport.php:148 -#, php-format -msgid "Delivery report for %1$s" -msgstr "Zustellungsbericht für %1$s" - -#: ../../Zotlabs/Module/Dreport.php:151 -msgid "Options" -msgstr "Optionen" - -#: ../../Zotlabs/Module/Dreport.php:152 -msgid "Redeliver" -msgstr "Erneut zustellen" - #: ../../Zotlabs/Module/Notify.php:57 #: ../../Zotlabs/Module/Notifications.php:35 msgid "No more system notifications." @@ -3831,10 +3845,6 @@ msgstr "Keine System-Benachrichtigungen mehr." msgid "System Notifications" msgstr "System-Benachrichtigungen" -#: ../../Zotlabs/Module/Editpost.php:35 -msgid "Item is not editable" -msgstr "Element kann nicht bearbeitet werden." - #: ../../Zotlabs/Module/Photos.php:82 msgid "Page owner information could not be retrieved." msgstr "Informationen über den Besitzer der Seite konnten nicht gefunden werden." @@ -3925,12 +3935,12 @@ msgid "Show Oldest First" msgstr "Älteste zuerst anzeigen" #: ../../Zotlabs/Module/Photos.php:783 ../../Zotlabs/Module/Photos.php:1337 -#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1676 +#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1748 msgid "View Photo" msgstr "Foto ansehen" #: ../../Zotlabs/Module/Photos.php:814 -#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1693 +#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1765 msgid "Edit Album" msgstr "Album bearbeiten" @@ -3954,10 +3964,10 @@ msgstr "Als Titelbild verwenden" msgid "Private Photo" msgstr "Privates Foto" -#: ../../Zotlabs/Module/Photos.php:940 ../../Zotlabs/Module/Events.php:680 -#: ../../Zotlabs/Module/Events.php:689 ../../Zotlabs/Module/Cal.php:332 -#: ../../Zotlabs/Module/Cal.php:339 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:842 +#: ../../Zotlabs/Module/Photos.php:940 ../../Zotlabs/Module/Cal.php:336 +#: ../../Zotlabs/Module/Cal.php:343 ../../Zotlabs/Module/Events.php:680 +#: ../../Zotlabs/Module/Events.php:689 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:846 msgid "Previous" msgstr "Voriges" @@ -3965,10 +3975,10 @@ msgstr "Voriges" msgid "View Full Size" msgstr "In voller Größe anzeigen" -#: ../../Zotlabs/Module/Photos.php:949 ../../Zotlabs/Module/Setup.php:270 +#: ../../Zotlabs/Module/Photos.php:949 ../../Zotlabs/Module/Setup.php:264 +#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Cal.php:344 #: ../../Zotlabs/Module/Events.php:681 ../../Zotlabs/Module/Events.php:690 -#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:843 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847 msgid "Next" msgstr "Nächste" @@ -4042,8 +4052,8 @@ msgstr "Das bist Du" msgid "Comment" msgstr "Kommentar" -#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Module/Events.php:471 -#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/ThreadItem.php:738 +#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Module/Webpages.php:247 +#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Lib/ThreadItem.php:738 #: ../../include/page_widgets.php:43 ../../include/conversation.php:1217 msgid "Preview" msgstr "Vorschau" @@ -4090,13 +4100,13 @@ msgstr "Vielleicht" #: ../../Zotlabs/Module/Photos.php:1132 ../../Zotlabs/Module/Photos.php:1144 #: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Lib/ThreadItem.php:198 -#: ../../include/conversation.php:1784 +#: ../../include/conversation.php:1783 msgid "View all" msgstr "Alles anzeigen" #: ../../Zotlabs/Module/Photos.php:1136 ../../Zotlabs/Lib/ThreadItem.php:190 #: ../../include/channel.php:1190 ../../include/taxonomy.php:403 -#: ../../include/conversation.php:1808 +#: ../../include/conversation.php:1807 msgctxt "noun" msgid "Like" msgid_plural "Likes" @@ -4104,7 +4114,7 @@ msgstr[0] "Gefällt mir" msgstr[1] "Gefällt mir" #: ../../Zotlabs/Module/Photos.php:1141 ../../Zotlabs/Lib/ThreadItem.php:195 -#: ../../include/conversation.php:1811 +#: ../../include/conversation.php:1810 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" @@ -4147,381 +4157,397 @@ msgstr "Album ansehen" msgid "Recent Photos" msgstr "Neueste Fotos" -#: ../../Zotlabs/Module/Setup.php:182 +#: ../../Zotlabs/Module/Setup.php:176 msgid "$Projectname Server - Setup" msgstr "$Projectname Server-Einrichtung" -#: ../../Zotlabs/Module/Setup.php:186 +#: ../../Zotlabs/Module/Setup.php:180 msgid "Could not connect to database." msgstr "Kann nicht mit der Datenbank verbinden." -#: ../../Zotlabs/Module/Setup.php:190 +#: ../../Zotlabs/Module/Setup.php:184 msgid "" "Could not connect to specified site URL. Possible SSL certificate or DNS " "issue." msgstr "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS." -#: ../../Zotlabs/Module/Setup.php:197 +#: ../../Zotlabs/Module/Setup.php:191 msgid "Could not create table." msgstr "Konnte Tabelle nicht erstellen." -#: ../../Zotlabs/Module/Setup.php:202 +#: ../../Zotlabs/Module/Setup.php:196 msgid "Your site database has been installed." msgstr "Die Datenbank Deines Hubs wurde installiert." -#: ../../Zotlabs/Module/Setup.php:206 +#: ../../Zotlabs/Module/Setup.php:200 msgid "" "You may need to import the file \"install/schema_xxx.sql\" manually using a " "database client." msgstr "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren." -#: ../../Zotlabs/Module/Setup.php:207 ../../Zotlabs/Module/Setup.php:269 -#: ../../Zotlabs/Module/Setup.php:740 +#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263 +#: ../../Zotlabs/Module/Setup.php:745 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "Lies die Datei \"install/INSTALL.txt\"." -#: ../../Zotlabs/Module/Setup.php:266 +#: ../../Zotlabs/Module/Setup.php:260 msgid "System check" msgstr "Systemprüfung" -#: ../../Zotlabs/Module/Setup.php:271 +#: ../../Zotlabs/Module/Setup.php:265 msgid "Check again" msgstr "Nochmal prüfen" -#: ../../Zotlabs/Module/Setup.php:293 +#: ../../Zotlabs/Module/Setup.php:287 msgid "Database connection" msgstr "Datenbankverbindung" -#: ../../Zotlabs/Module/Setup.php:294 +#: ../../Zotlabs/Module/Setup.php:288 msgid "" "In order to install $Projectname we need to know how to connect to your " "database." msgstr "Um $Projectname zu installieren, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können." -#: ../../Zotlabs/Module/Setup.php:295 +#: ../../Zotlabs/Module/Setup.php:289 msgid "" "Please contact your hosting provider or site administrator if you have " "questions about these settings." msgstr "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast." -#: ../../Zotlabs/Module/Setup.php:296 +#: ../../Zotlabs/Module/Setup.php:290 msgid "" "The database you specify below should already exist. If it does not, please " "create it before continuing." msgstr "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst." -#: ../../Zotlabs/Module/Setup.php:300 +#: ../../Zotlabs/Module/Setup.php:294 msgid "Database Server Name" msgstr "Datenbankservername" -#: ../../Zotlabs/Module/Setup.php:300 +#: ../../Zotlabs/Module/Setup.php:294 msgid "Default is 127.0.0.1" msgstr "Standard ist 127.0.0.1" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:295 msgid "Database Port" msgstr "Datenbankport" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:295 msgid "Communication port number - use 0 for default" msgstr "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:296 msgid "Database Login Name" msgstr "Datenbank-Benutzername" -#: ../../Zotlabs/Module/Setup.php:303 +#: ../../Zotlabs/Module/Setup.php:297 msgid "Database Login Password" msgstr "Datenbank-Passwort" -#: ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:298 msgid "Database Name" msgstr "Datenbankname" -#: ../../Zotlabs/Module/Setup.php:305 +#: ../../Zotlabs/Module/Setup.php:299 msgid "Database Type" msgstr "Datenbanktyp" -#: ../../Zotlabs/Module/Setup.php:307 ../../Zotlabs/Module/Setup.php:353 +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 msgid "Site administrator email address" msgstr "E-Mail Adresse des Seiten-Administrators" -#: ../../Zotlabs/Module/Setup.php:307 ../../Zotlabs/Module/Setup.php:353 +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 msgid "" "Your account email address must match this in order to use the web admin " "panel." msgstr "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst." -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:355 +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 msgid "Website URL" msgstr "Webseiten-URL" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:355 +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 msgid "Please use SSL (https) URL if available." msgstr "Nutze wenn möglich eine SSL-URL (https)." -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:359 +#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:353 msgid "Please select a default timezone for your website" msgstr "Standard-Zeitzone für Deinen Server" -#: ../../Zotlabs/Module/Setup.php:342 +#: ../../Zotlabs/Module/Setup.php:336 msgid "Site settings" msgstr "Seiteneinstellungen" -#: ../../Zotlabs/Module/Setup.php:398 +#: ../../Zotlabs/Module/Setup.php:392 msgid "PHP version 5.5 or greater is required." msgstr "PHP-Version 5.5 oder höher ist erforderlich." -#: ../../Zotlabs/Module/Setup.php:399 +#: ../../Zotlabs/Module/Setup.php:393 msgid "PHP version" msgstr "PHP-Version" -#: ../../Zotlabs/Module/Setup.php:414 +#: ../../Zotlabs/Module/Setup.php:409 msgid "Could not find a command line version of PHP in the web server PATH." msgstr "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden." -#: ../../Zotlabs/Module/Setup.php:415 +#: ../../Zotlabs/Module/Setup.php:410 msgid "" "If you don't have a command line version of PHP installed on server, you " "will not be able to run background polling via cron." msgstr "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen." -#: ../../Zotlabs/Module/Setup.php:419 +#: ../../Zotlabs/Module/Setup.php:414 msgid "PHP executable path" msgstr "PHP-Pfad zu ausführbarer Datei" -#: ../../Zotlabs/Module/Setup.php:419 +#: ../../Zotlabs/Module/Setup.php:414 msgid "" "Enter full path to php executable. You can leave this blank to continue the " "installation." msgstr "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren." -#: ../../Zotlabs/Module/Setup.php:424 +#: ../../Zotlabs/Module/Setup.php:419 msgid "Command line PHP" msgstr "PHP-Befehlszeile" -#: ../../Zotlabs/Module/Setup.php:433 +#: ../../Zotlabs/Module/Setup.php:429 +msgid "" +"Unable to check command line PHP, as shell_exec() is disabled. This is " +"required." +msgstr "Prüfung auf Kommandozeilen-PHP fehlgeschlagen, da shell_exec() deaktiviert ist. Dies wird aber benötigt." + +#: ../../Zotlabs/Module/Setup.php:432 msgid "" "The command line version of PHP on your system does not have " "\"register_argc_argv\" enabled." msgstr "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert." -#: ../../Zotlabs/Module/Setup.php:434 +#: ../../Zotlabs/Module/Setup.php:433 msgid "This is required for message delivery to work." msgstr "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert." -#: ../../Zotlabs/Module/Setup.php:437 +#: ../../Zotlabs/Module/Setup.php:436 msgid "PHP register_argc_argv" msgstr "PHP register_argc_argv" -#: ../../Zotlabs/Module/Setup.php:455 +#: ../../Zotlabs/Module/Setup.php:454 #, php-format msgid "" "Your max allowed total upload size is set to %s. Maximum size of one file to" " upload is set to %s. You are allowed to upload up to %d files at once." msgstr "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden." -#: ../../Zotlabs/Module/Setup.php:460 -msgid "You can adjust these settings in the servers php.ini." -msgstr "Du kannst diese Einstellungen in der php.ini des Servers ändern." +#: ../../Zotlabs/Module/Setup.php:459 +msgid "You can adjust these settings in the server php.ini file." +msgstr "Du kannst diese Einstellungen in der php.ini - Datei des Servers anpassen." -#: ../../Zotlabs/Module/Setup.php:462 +#: ../../Zotlabs/Module/Setup.php:461 msgid "PHP upload limits" msgstr "PHP-Hochladebeschränkungen" -#: ../../Zotlabs/Module/Setup.php:485 +#: ../../Zotlabs/Module/Setup.php:484 msgid "" "Error: the \"openssl_pkey_new\" function on this system is not able to " "generate encryption keys" msgstr "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen." -#: ../../Zotlabs/Module/Setup.php:486 +#: ../../Zotlabs/Module/Setup.php:485 msgid "" "If running under Windows, please see " "\"http://www.php.net/manual/en/openssl.installation.php\"." msgstr "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung." -#: ../../Zotlabs/Module/Setup.php:489 +#: ../../Zotlabs/Module/Setup.php:488 msgid "Generate encryption keys" msgstr "Verschlüsselungsschlüssel erzeugen" -#: ../../Zotlabs/Module/Setup.php:501 +#: ../../Zotlabs/Module/Setup.php:500 msgid "libCurl PHP module" msgstr "libCurl-PHP-Modul" -#: ../../Zotlabs/Module/Setup.php:502 +#: ../../Zotlabs/Module/Setup.php:501 msgid "GD graphics PHP module" msgstr "GD-Grafik-PHP-Modul" -#: ../../Zotlabs/Module/Setup.php:503 +#: ../../Zotlabs/Module/Setup.php:502 msgid "OpenSSL PHP module" msgstr "OpenSSL-PHP-Modul" -#: ../../Zotlabs/Module/Setup.php:504 +#: ../../Zotlabs/Module/Setup.php:503 msgid "PDO database PHP module" msgstr "PDO-Datenbank-PHP-Modul" -#: ../../Zotlabs/Module/Setup.php:505 +#: ../../Zotlabs/Module/Setup.php:504 msgid "mb_string PHP module" msgstr "mb_string-PHP-Modul" -#: ../../Zotlabs/Module/Setup.php:506 +#: ../../Zotlabs/Module/Setup.php:505 msgid "xml PHP module" msgstr "xml-PHP-Modul" -#: ../../Zotlabs/Module/Setup.php:510 ../../Zotlabs/Module/Setup.php:512 +#: ../../Zotlabs/Module/Setup.php:509 ../../Zotlabs/Module/Setup.php:511 msgid "Apache mod_rewrite module" msgstr "Apache-mod_rewrite-Modul" -#: ../../Zotlabs/Module/Setup.php:510 +#: ../../Zotlabs/Module/Setup.php:509 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:516 ../../Zotlabs/Module/Setup.php:519 -msgid "proc_open" -msgstr "proc_open" +#: ../../Zotlabs/Module/Setup.php:515 ../../Zotlabs/Module/Setup.php:518 +msgid "exec" +msgstr "exec" -#: ../../Zotlabs/Module/Setup.php:516 +#: ../../Zotlabs/Module/Setup.php:515 msgid "" -"Error: proc_open is required but is either not installed or has been " +"Error: exec is required but is either not installed or has been disabled in " +"php.ini" +msgstr "Fehler: exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert" + +#: ../../Zotlabs/Module/Setup.php:521 ../../Zotlabs/Module/Setup.php:524 +msgid "shell_exec" +msgstr "shell_exec" + +#: ../../Zotlabs/Module/Setup.php:521 +msgid "" +"Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" -msgstr "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert" +msgstr "Fehler: shell_exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert" -#: ../../Zotlabs/Module/Setup.php:524 +#: ../../Zotlabs/Module/Setup.php:529 msgid "Error: libCURL PHP module required but not installed." msgstr "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:528 +#: ../../Zotlabs/Module/Setup.php:533 msgid "" "Error: GD graphics PHP module with JPEG support required but not installed." msgstr "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:532 +#: ../../Zotlabs/Module/Setup.php:537 msgid "Error: openssl PHP module required but not installed." msgstr "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:536 +#: ../../Zotlabs/Module/Setup.php:541 msgid "Error: PDO database PHP module required but not installed." msgstr "Fehler: PDO-Datenbank-PHP-Modul ist erforderlich, aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:540 +#: ../../Zotlabs/Module/Setup.php:545 msgid "Error: mb_string PHP module required but not installed." msgstr "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:544 +#: ../../Zotlabs/Module/Setup.php:549 msgid "Error: xml PHP module required for DAV but not installed." msgstr "Fehler: Das xml-PHP-Modul wird für DAV benötigt, ist aber nicht installiert." -#: ../../Zotlabs/Module/Setup.php:562 +#: ../../Zotlabs/Module/Setup.php:567 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\"" " in the top folder of your web server and it is unable to do so." msgstr "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht." -#: ../../Zotlabs/Module/Setup.php:563 +#: ../../Zotlabs/Module/Setup.php:568 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst." -#: ../../Zotlabs/Module/Setup.php:564 +#: ../../Zotlabs/Module/Setup.php:569 msgid "" "At the end of this procedure, we will give you a text to save in a file " "named .htconfig.php in your Red top folder." msgstr "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst." -#: ../../Zotlabs/Module/Setup.php:565 +#: ../../Zotlabs/Module/Setup.php:570 msgid "" "You can alternatively skip this procedure and perform a manual installation." " Please see the file \"install/INSTALL.txt\" for instructions." msgstr "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt." -#: ../../Zotlabs/Module/Setup.php:568 +#: ../../Zotlabs/Module/Setup.php:573 msgid ".htconfig.php is writable" msgstr ".htconfig.php ist beschreibbar" -#: ../../Zotlabs/Module/Setup.php:582 +#: ../../Zotlabs/Module/Setup.php:587 msgid "" -"Red uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." -msgstr "$Projectname verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen." +"This software uses the Smarty3 template engine to render its web views. " +"Smarty3 compiles templates to PHP to speed up rendering." +msgstr "Diese Software verwendet die Smarty3 Template Engine, um Vorlagen für die Webdarstellung zu verarbeiten. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen." -#: ../../Zotlabs/Module/Setup.php:583 +#: ../../Zotlabs/Module/Setup.php:588 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses." -#: ../../Zotlabs/Module/Setup.php:584 ../../Zotlabs/Module/Setup.php:605 +#: ../../Zotlabs/Module/Setup.php:589 ../../Zotlabs/Module/Setup.php:610 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has" " write access to this folder." msgstr "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat." -#: ../../Zotlabs/Module/Setup.php:585 +#: ../../Zotlabs/Module/Setup.php:590 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält." -#: ../../Zotlabs/Module/Setup.php:588 +#: ../../Zotlabs/Module/Setup.php:593 #, php-format msgid "%s is writable" msgstr "%s ist beschreibbar" -#: ../../Zotlabs/Module/Setup.php:604 +#: ../../Zotlabs/Module/Setup.php:609 msgid "" "This software uses the store directory to save uploaded files. The web " -"server needs to have write access to the store directory under the Red top " -"level folder" -msgstr "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Web-Server benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Hubzilla-Stammverzeichnisses" +"server needs to have write access to the store directory under the top level" +" web folder" +msgstr "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Web-Stammverzeichnisses." -#: ../../Zotlabs/Module/Setup.php:608 +#: ../../Zotlabs/Module/Setup.php:613 msgid "store is writable" msgstr "store ist schreibbar" -#: ../../Zotlabs/Module/Setup.php:641 +#: ../../Zotlabs/Module/Setup.php:646 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access" " to this site." msgstr "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server." -#: ../../Zotlabs/Module/Setup.php:642 +#: ../../Zotlabs/Module/Setup.php:647 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich." -#: ../../Zotlabs/Module/Setup.php:643 +#: ../../Zotlabs/Module/Setup.php:648 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können." -#: ../../Zotlabs/Module/Setup.php:644 +#: ../../Zotlabs/Module/Setup.php:649 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer $Projectname-Hubs (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird)." -#: ../../Zotlabs/Module/Setup.php:645 +#: ../../Zotlabs/Module/Setup.php:650 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen." -#: ../../Zotlabs/Module/Setup.php:646 +#: ../../Zotlabs/Module/Setup.php:651 msgid "" "Providers are available that issue free certificates which are browser-" "valid." msgstr "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind." -#: ../../Zotlabs/Module/Setup.php:648 +#: ../../Zotlabs/Module/Setup.php:653 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -4529,70 +4555,50 @@ msgid "" "server communications." msgstr "Wenn Du sicher bist, dass das Zertifikat gültig und von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, prüfe auf ggf. noch zu installierende Zwischenzertifikate (intermediate). Diese werden nicht unbedingt von Browsern benötigt, aber sehr wohl für die Kommunikation zwischen Servern." -#: ../../Zotlabs/Module/Setup.php:650 +#: ../../Zotlabs/Module/Setup.php:655 msgid "SSL certificate validation" msgstr "SSL Zertifikatverifizierung" -#: ../../Zotlabs/Module/Setup.php:656 +#: ../../Zotlabs/Module/Setup.php:661 msgid "" "Url rewrite in .htaccess is not working. Check your server " "configuration.Test: " msgstr "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:" -#: ../../Zotlabs/Module/Setup.php:659 +#: ../../Zotlabs/Module/Setup.php:664 msgid "Url rewrite is working" msgstr "Url rewrite funktioniert" -#: ../../Zotlabs/Module/Setup.php:673 +#: ../../Zotlabs/Module/Setup.php:678 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen." -#: ../../Zotlabs/Module/Setup.php:697 -#: ../../extend/addon/addon/cdav/cdav.php:40 +#: ../../Zotlabs/Module/Setup.php:702 +#: ../../extend/addon/addon/cdav/cdav.php:41 #: ../../extend/addon/addon/rendezvous/rendezvous.php:352 msgid "Errors encountered creating database tables." msgstr "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten." -#: ../../Zotlabs/Module/Setup.php:738 +#: ../../Zotlabs/Module/Setup.php:743 msgid "<h1>What next</h1>" msgstr "<h1>Was als Nächstes</h1>" -#: ../../Zotlabs/Module/Setup.php:739 +#: ../../Zotlabs/Module/Setup.php:744 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the " "poller." msgstr "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten." -#: ../../Zotlabs/Module/Network.php:96 -msgid "No such group" -msgstr "Gruppe nicht gefunden" - -#: ../../Zotlabs/Module/Network.php:136 -msgid "No such channel" -msgstr "Kanal nicht gefunden" - -#: ../../Zotlabs/Module/Network.php:141 -msgid "forum" -msgstr "Forum" - -#: ../../Zotlabs/Module/Network.php:153 -msgid "Search Results For:" -msgstr "Suchergebnisse für:" - -#: ../../Zotlabs/Module/Network.php:221 -msgid "Privacy group is empty" -msgstr "Gruppe ist leer" - -#: ../../Zotlabs/Module/Network.php:230 -msgid "Privacy group: " -msgstr "Gruppe:" +#: ../../Zotlabs/Module/Editpost.php:35 +msgid "Item is not editable" +msgstr "Element kann nicht bearbeitet werden." -#: ../../Zotlabs/Module/Network.php:256 -msgid "Invalid connection." -msgstr "Ungültige Verbindung." +#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25 +msgid "This site is not a directory server" +msgstr "Diese Webseite ist kein Verzeichnisserver" #: ../../Zotlabs/Module/New_channel.php:140 msgid "Create Channel" @@ -4610,216 +4616,318 @@ msgid "" "or <a href=\"import\">import an existing channel</a> from another location." msgstr "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server." -#: ../../Zotlabs/Module/Mail.php:38 -msgid "Unable to lookup recipient." -msgstr "Konnte den Empfänger nicht finden." +#: ../../Zotlabs/Module/Notifications.php:40 ../../include/nav.php:194 +msgid "Mark all system notifications seen" +msgstr "Markiere alle System-Benachrichtigungen als gesehen" -#: ../../Zotlabs/Module/Mail.php:45 -msgid "Unable to communicate with requested channel." -msgstr "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen." +#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:228 +#: ../../include/conversation.php:975 +msgid "Poke" +msgstr "Anstupsen" -#: ../../Zotlabs/Module/Mail.php:52 -msgid "Cannot verify requested channel." -msgstr "Verifizierung des angeforderten Kanals fehlgeschlagen." +#: ../../Zotlabs/Module/Poke.php:169 +msgid "Poke somebody" +msgstr "Jemanden anstupsen" -#: ../../Zotlabs/Module/Mail.php:70 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen." +#: ../../Zotlabs/Module/Poke.php:172 +msgid "Poke/Prod" +msgstr "Anstupsen/Knuffen" -#: ../../Zotlabs/Module/Mail.php:149 -msgid "Messages" -msgstr "Nachrichten" +#: ../../Zotlabs/Module/Poke.php:173 +msgid "Poke, prod or do other things to somebody" +msgstr "Jemanden anstupsen, knuffen oder sonstiges" -#: ../../Zotlabs/Module/Mail.php:184 -msgid "Message recalled." -msgstr "Nachricht widerrufen." +#: ../../Zotlabs/Module/Poke.php:180 +msgid "Recipient" +msgstr "Empfänger" -#: ../../Zotlabs/Module/Mail.php:197 -msgid "Conversation removed." -msgstr "Unterhaltung gelöscht." +#: ../../Zotlabs/Module/Poke.php:181 +msgid "Choose what you wish to do to recipient" +msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst" -#: ../../Zotlabs/Module/Mail.php:211 ../../Zotlabs/Module/Mail.php:320 -#: ../../Zotlabs/Module/Chat.php:205 ../../include/conversation.php:1200 -msgid "Please enter a link URL:" -msgstr "Gib eine URL ein:" +#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185 +msgid "Make this post private" +msgstr "Diesen Beitrag privat machen" -#: ../../Zotlabs/Module/Mail.php:212 ../../Zotlabs/Module/Mail.php:321 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "Verfällt YYYY-MM-DD HH;MM" +#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:183 +#: ../../Zotlabs/Module/Profiles.php:240 ../../Zotlabs/Module/Profiles.php:619 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62 +msgid "Profile not found." +msgstr "Profil nicht gefunden." -#: ../../Zotlabs/Module/Mail.php:240 -msgid "Requested channel is not in this network" -msgstr "Angeforderter Kanal ist nicht in diesem Netzwerk." +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." +msgstr "Profil gelöscht." -#: ../../Zotlabs/Module/Mail.php:248 -msgid "Send Private Message" -msgstr "Private Nachricht senden" +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104 +msgid "Profile-" +msgstr "Profil-" -#: ../../Zotlabs/Module/Mail.php:249 ../../Zotlabs/Module/Mail.php:374 -msgid "To:" -msgstr "An:" +#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 +msgid "New profile created." +msgstr "Neues Profil erstellt." -#: ../../Zotlabs/Module/Mail.php:252 ../../Zotlabs/Module/Mail.php:376 -msgid "Subject:" -msgstr "Betreff:" +#: ../../Zotlabs/Module/Profiles.php:110 +msgid "Profile unavailable to clone." +msgstr "Profil kann nicht geklont werden." -#: ../../Zotlabs/Module/Mail.php:255 ../../Zotlabs/Module/Invite.php:138 -msgid "Your message:" -msgstr "Deine Nachricht:" +#: ../../Zotlabs/Module/Profiles.php:145 +msgid "Profile unavailable to export." +msgstr "Dieses Profil kann nicht exportiert werden." -#: ../../Zotlabs/Module/Mail.php:257 ../../Zotlabs/Module/Mail.php:382 -#: ../../include/conversation.php:1260 -msgid "Attach file" -msgstr "Datei anhängen" +#: ../../Zotlabs/Module/Profiles.php:250 +msgid "Profile Name is required." +msgstr "Profil-Name erforderlich." -#: ../../Zotlabs/Module/Mail.php:259 -msgid "Send" -msgstr "Absenden" +#: ../../Zotlabs/Module/Profiles.php:421 +msgid "Marital Status" +msgstr "Familienstand" -#: ../../Zotlabs/Module/Mail.php:262 ../../Zotlabs/Module/Mail.php:387 -#: ../../include/conversation.php:1305 -msgid "Set expiration date" -msgstr "Verfallsdatum" +#: ../../Zotlabs/Module/Profiles.php:425 +msgid "Romantic Partner" +msgstr "Romantische Partner" -#: ../../Zotlabs/Module/Mail.php:264 ../../Zotlabs/Module/Mail.php:389 -#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Lib/ThreadItem.php:741 -#: ../../include/conversation.php:1310 -msgid "Encrypt text" -msgstr "Text verschlüsseln" +#: ../../Zotlabs/Module/Profiles.php:429 ../../Zotlabs/Module/Profiles.php:730 +msgid "Likes" +msgstr "Gefällt" -#: ../../Zotlabs/Module/Mail.php:346 -msgid "Delete message" -msgstr "Nachricht löschen" +#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:731 +msgid "Dislikes" +msgstr "Gefällt nicht" -#: ../../Zotlabs/Module/Mail.php:347 -msgid "Delivery report" -msgstr "Zustellungsbericht" +#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:738 +msgid "Work/Employment" +msgstr "Arbeit/Anstellung" -#: ../../Zotlabs/Module/Mail.php:348 -msgid "Recall message" -msgstr "Nachricht widerrufen" +#: ../../Zotlabs/Module/Profiles.php:440 +msgid "Religion" +msgstr "Religion" -#: ../../Zotlabs/Module/Mail.php:350 -msgid "Message has been recalled." -msgstr "Die Nachricht wurde widerrufen." +#: ../../Zotlabs/Module/Profiles.php:444 +msgid "Political Views" +msgstr "Politische Ansichten" -#: ../../Zotlabs/Module/Mail.php:367 -msgid "Delete Conversation" -msgstr "Unterhaltung löschen" +#: ../../Zotlabs/Module/Profiles.php:448 +#: ../../extend/addon/addon/openid/MysqlProvider.php:74 +msgid "Gender" +msgstr "Geschlecht" -#: ../../Zotlabs/Module/Mail.php:369 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." -msgstr "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten." +#: ../../Zotlabs/Module/Profiles.php:452 +msgid "Sexual Preference" +msgstr "Sexuelle Orientierung" -#: ../../Zotlabs/Module/Mail.php:373 -msgid "Send Reply" -msgstr "Antwort senden" +#: ../../Zotlabs/Module/Profiles.php:456 +msgid "Homepage" +msgstr "Webseite" -#: ../../Zotlabs/Module/Mail.php:378 -#, php-format -msgid "Your message for %s (%s):" -msgstr "Deine Nachricht für %s (%s):" +#: ../../Zotlabs/Module/Profiles.php:460 +msgid "Interests" +msgstr "Hobbys/Interessen" -#: ../../Zotlabs/Module/Notifications.php:40 ../../include/nav.php:196 -msgid "Mark all system notifications seen" -msgstr "Markiere alle System-Benachrichtigungen als gesehen" +#: ../../Zotlabs/Module/Profiles.php:554 +msgid "Profile updated." +msgstr "Profil aktualisiert." -#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:228 -#: ../../include/conversation.php:975 -msgid "Poke" -msgstr "Anstupsen" +#: ../../Zotlabs/Module/Profiles.php:638 +msgid "Hide your connections list from viewers of this profile" +msgstr "Deine Verbindungen vor Betrachtern dieses Profils verbergen" -#: ../../Zotlabs/Module/Poke.php:169 -msgid "Poke somebody" -msgstr "Jemanden anstupsen" +#: ../../Zotlabs/Module/Profiles.php:680 +msgid "Edit Profile Details" +msgstr "Bearbeite Profil-Details" -#: ../../Zotlabs/Module/Poke.php:172 -msgid "Poke/Prod" -msgstr "Anstupsen/Knuffen" +#: ../../Zotlabs/Module/Profiles.php:682 +msgid "View this profile" +msgstr "Dieses Profil ansehen" -#: ../../Zotlabs/Module/Poke.php:173 -msgid "Poke, prod or do other things to somebody" -msgstr "Jemanden anstupsen, knuffen oder sonstiges" +#: ../../Zotlabs/Module/Profiles.php:683 ../../Zotlabs/Module/Profiles.php:765 +#: ../../include/channel.php:983 +msgid "Edit visibility" +msgstr "Sichtbarkeit bearbeiten" -#: ../../Zotlabs/Module/Poke.php:180 -msgid "Recipient" -msgstr "Empfänger" +#: ../../Zotlabs/Module/Profiles.php:684 +msgid "Profile Tools" +msgstr "Profilwerkzeuge" -#: ../../Zotlabs/Module/Poke.php:181 -msgid "Choose what you wish to do to recipient" -msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst" +#: ../../Zotlabs/Module/Profiles.php:685 +msgid "Change cover photo" +msgstr "Titelbild ändern" -#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185 -msgid "Make this post private" -msgstr "Diesen Beitrag privat machen" +#: ../../Zotlabs/Module/Profiles.php:686 ../../include/channel.php:954 +msgid "Change profile photo" +msgstr "Profilfoto ändern" -#: ../../Zotlabs/Module/Invite.php:29 -msgid "Total invitation limit exceeded." -msgstr "Einladungslimit überschritten." +#: ../../Zotlabs/Module/Profiles.php:687 +msgid "Create a new profile using these settings" +msgstr "Neues Profil anlegen und diese Einstellungen übernehmen" -#: ../../Zotlabs/Module/Invite.php:53 -#, php-format -msgid "%s : Not a valid email address." -msgstr "%s : Keine gültige Email Adresse." +#: ../../Zotlabs/Module/Profiles.php:688 +msgid "Clone this profile" +msgstr "Dieses Profil klonen" -#: ../../Zotlabs/Module/Invite.php:67 -msgid "Please join us on $Projectname" -msgstr "Schließe Dich uns auf $Projectname an!" +#: ../../Zotlabs/Module/Profiles.php:689 +msgid "Delete this profile" +msgstr "Dieses Profil löschen" -#: ../../Zotlabs/Module/Invite.php:77 -msgid "Invitation limit exceeded. Please contact your site administrator." -msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines $Projectname-Servers." +#: ../../Zotlabs/Module/Profiles.php:690 +msgid "Add profile things" +msgstr "Sachen zum Profil hinzufügen" -#: ../../Zotlabs/Module/Invite.php:82 -#, php-format -msgid "%s : Message delivery failed." -msgstr "%s : Nachricht konnte nicht zugestellt werden." +#: ../../Zotlabs/Module/Profiles.php:691 ../../include/widgets.php:105 +#: ../../include/conversation.php:1585 +msgid "Personal" +msgstr "Persönlich" -#: ../../Zotlabs/Module/Invite.php:86 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "%d Nachricht gesendet." -msgstr[1] "%d Nachrichten gesendet." +#: ../../Zotlabs/Module/Profiles.php:693 +msgid "Relation" +msgstr "Beziehung" -#: ../../Zotlabs/Module/Invite.php:105 -msgid "You have no more invitations available" -msgstr "Du hast keine weiteren verfügbare Einladungen" +#: ../../Zotlabs/Module/Profiles.php:694 ../../include/datetime.php:55 +msgid "Miscellaneous" +msgstr "Verschiedenes" -#: ../../Zotlabs/Module/Invite.php:136 -msgid "Send invitations" -msgstr "Einladungen senden" +#: ../../Zotlabs/Module/Profiles.php:696 +msgid "Import profile from file" +msgstr "Profil aus einer Datei importieren" -#: ../../Zotlabs/Module/Invite.php:137 -msgid "Enter email addresses, one per line:" -msgstr "Email-Adressen eintragen, eine pro Zeile:" +#: ../../Zotlabs/Module/Profiles.php:697 +msgid "Export profile to file" +msgstr "Profil in eine Datei exportieren" -#: ../../Zotlabs/Module/Invite.php:139 -msgid "Please join my community on $Projectname." -msgstr "Schließe Dich uns auf $Projectname an!" +#: ../../Zotlabs/Module/Profiles.php:698 +msgid "Your gender" +msgstr "Dein Geschlecht" -#: ../../Zotlabs/Module/Invite.php:141 -msgid "You will need to supply this invitation code:" -msgstr "Bitte verwende bei der Registrierung den folgenden Einladungscode:" +#: ../../Zotlabs/Module/Profiles.php:699 +msgid "Marital status" +msgstr "Familienstand" -#: ../../Zotlabs/Module/Invite.php:142 -msgid "" -"1. Register at any $Projectname location (they are all inter-connected)" -msgstr "1. Registriere Dich auf einem beliebigen $Projectname-Hub (sie sind alle miteinander verbunden)" +#: ../../Zotlabs/Module/Profiles.php:700 +msgid "Sexual preference" +msgstr "Sexuelle Orientierung" -#: ../../Zotlabs/Module/Invite.php:144 -msgid "2. Enter my $Projectname network address into the site searchbar." -msgstr "2. Gib meine $Projectname-Adresse im Suchfeld ein." +#: ../../Zotlabs/Module/Profiles.php:703 +msgid "Profile name" +msgstr "Profilname" -#: ../../Zotlabs/Module/Invite.php:145 -msgid "or visit" -msgstr "oder besuche" +#: ../../Zotlabs/Module/Profiles.php:705 +msgid "This is your default profile." +msgstr "Das ist Dein Standardprofil." -#: ../../Zotlabs/Module/Invite.php:147 -msgid "3. Click [Connect]" -msgstr "3. Klicke auf [Verbinden]" +#: ../../Zotlabs/Module/Profiles.php:707 +msgid "Your full name" +msgstr "Dein voller Name" + +#: ../../Zotlabs/Module/Profiles.php:708 +msgid "Title/Description" +msgstr "Titel/Beschreibung" + +#: ../../Zotlabs/Module/Profiles.php:711 +msgid "Street address" +msgstr "Straße und Hausnummer" + +#: ../../Zotlabs/Module/Profiles.php:712 +msgid "Locality/City" +msgstr "Wohnort" + +#: ../../Zotlabs/Module/Profiles.php:713 +msgid "Region/State" +msgstr "Region/Bundesstaat" + +#: ../../Zotlabs/Module/Profiles.php:714 +msgid "Postal/Zip code" +msgstr "Postleitzahl" + +#: ../../Zotlabs/Module/Profiles.php:715 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1161 +msgid "Country" +msgstr "Land" + +#: ../../Zotlabs/Module/Profiles.php:720 +msgid "Who (if applicable)" +msgstr "Wer (falls anwendbar)" + +#: ../../Zotlabs/Module/Profiles.php:720 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com" + +#: ../../Zotlabs/Module/Profiles.php:721 +msgid "Since (date)" +msgstr "Seit (Datum)" + +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "Tell us about yourself" +msgstr "Erzähle uns ein wenig von Dir" + +#: ../../Zotlabs/Module/Profiles.php:725 +#: ../../extend/addon/addon/openid/MysqlProvider.php:68 +msgid "Homepage URL" +msgstr "Homepage-URL" + +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Hometown" +msgstr "Heimatort" + +#: ../../Zotlabs/Module/Profiles.php:727 +msgid "Political views" +msgstr "Politische Ansichten" + +#: ../../Zotlabs/Module/Profiles.php:728 +msgid "Religious views" +msgstr "Religiöse Ansichten" + +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Keywords used in directory listings" +msgstr "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden" + +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Example: fishing photography software" +msgstr "Beispiel: Angeln Fotografie Software" + +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Musical interests" +msgstr "Musikalische Interessen" + +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Books, literature" +msgstr "Bücher, Literatur" + +#: ../../Zotlabs/Module/Profiles.php:734 +msgid "Television" +msgstr "Fernsehen" + +#: ../../Zotlabs/Module/Profiles.php:735 +msgid "Film/Dance/Culture/Entertainment" +msgstr "Film/Tanz/Kultur/Unterhaltung" + +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Hobbies/Interests" +msgstr "Hobbys/Interessen" + +#: ../../Zotlabs/Module/Profiles.php:737 +msgid "Love/Romance" +msgstr "Liebe/Romantik" + +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "School/Education" +msgstr "Schule/Ausbildung" + +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Contact information and social networks" +msgstr "Kontaktinformation und soziale Netzwerke" + +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "My other channels" +msgstr "Meine anderen Kanäle" + +#: ../../Zotlabs/Module/Profiles.php:761 ../../include/channel.php:979 +msgid "Profile Image" +msgstr "Profilfoto:" + +#: ../../Zotlabs/Module/Profiles.php:771 ../../include/channel.php:961 +#: ../../include/nav.php:91 +msgid "Edit Profiles" +msgstr "Profile bearbeiten" #: ../../Zotlabs/Module/Oexchange.php:27 msgid "Unable to find your hub." @@ -4844,66 +4952,7 @@ msgid "" " to correctly use this feature." msgstr "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird." -#: ../../Zotlabs/Module/Siteinfo.php:19 -#, php-format -msgid "Version %s" -msgstr "Version %s" - -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Installed plugins/addons/apps:" -msgstr "Installierte Plugins/Addons/Apps" - -#: ../../Zotlabs/Module/Siteinfo.php:36 -msgid "No installed plugins/addons/apps" -msgstr "Keine installierten Plugins/Addons/Apps" - -#: ../../Zotlabs/Module/Siteinfo.php:49 -msgid "" -"This is a hub of $Projectname - a global cooperative network of " -"decentralized privacy enhanced websites." -msgstr "Dieser Hub ist Teil von $Projectname – ein globales, kooperatives Netzwerk aus dezentralen Websites, die Rücksicht auf Deine Privatsphäre nehmen." - -#: ../../Zotlabs/Module/Siteinfo.php:51 -msgid "Tag: " -msgstr "Schlagwort: " - -#: ../../Zotlabs/Module/Siteinfo.php:53 -msgid "Last background fetch: " -msgstr "Letzter Hintergrundabruf:" - -#: ../../Zotlabs/Module/Siteinfo.php:55 -msgid "Current load average: " -msgstr "Aktuelles Load Average:" - -#: ../../Zotlabs/Module/Siteinfo.php:58 -msgid "Running at web location" -msgstr "Erreichbar unter der Web-Adresse" - -#: ../../Zotlabs/Module/Siteinfo.php:59 -msgid "" -"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more " -"about $Projectname." -msgstr "Bitte besuchen Sie <a href=\"http://hubzilla.org\">hubzilla.org</a>, um mehr über $Projectname zu erfahren." - -#: ../../Zotlabs/Module/Siteinfo.php:60 -msgid "Bug reports and issues: please visit" -msgstr "Probleme oder Fehler gefunden? Bitte besuche" - -#: ../../Zotlabs/Module/Siteinfo.php:62 -msgid "$projectname issues" -msgstr "$projectname-Bugtracker" - -#: ../../Zotlabs/Module/Siteinfo.php:63 -msgid "" -"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot " -"com" -msgstr "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com" - -#: ../../Zotlabs/Module/Siteinfo.php:65 -msgid "Site Administrators" -msgstr "Administratoren" - -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2311 +#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2270 msgid "Blocks" msgstr "Blöcke" @@ -4911,19 +4960,13 @@ msgstr "Blöcke" msgid "Block Title" msgstr "Titel des Blocks" -#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Layouts.php:197 -#: ../../Zotlabs/Module/Events.php:685 ../../Zotlabs/Module/Pubsites.php:59 -#: ../../Zotlabs/Module/Webpages.php:246 ../../include/page_widgets.php:42 -msgid "View" -msgstr "Ansicht" - -#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2313 +#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2272 msgid "Layouts" msgstr "Layouts" #: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:225 -#: ../../include/help.php:53 ../../include/help.php:58 -#: ../../include/nav.php:164 +#: ../../include/nav.php:162 ../../include/help.php:53 +#: ../../include/help.php:59 msgid "Help" msgstr "Hilfe" @@ -4939,11 +4982,6 @@ msgstr "Layout-Beschreibung" msgid "Download PDL file" msgstr "PDL-Datei herunterladen" -#: ../../Zotlabs/Module/Rate.php:155 ../../Zotlabs/Module/Connedit.php:763 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "Bewertung" - #: ../../Zotlabs/Module/Rate.php:156 msgid "Website:" msgstr "Webseite:" @@ -4961,6 +4999,111 @@ msgstr "Bewertung (öffentlich sichtbar)" msgid "Optionally explain your rating (this information is public)" msgstr "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)" +#: ../../Zotlabs/Module/Like.php:19 +msgid "Like/Dislike" +msgstr "Mögen/Nicht mögen" + +#: ../../Zotlabs/Module/Like.php:24 +msgid "This action is restricted to members." +msgstr "Diese Aktion kann nur von Mitgliedern ausgeführt werden." + +#: ../../Zotlabs/Module/Like.php:25 +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 "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner $Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues $Projectname-Mitglied</a>." + +#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 +#: ../../Zotlabs/Module/Like.php:169 +msgid "Invalid request." +msgstr "Ungültige Anfrage." + +#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 +msgid "channel" +msgstr "Kanal" + +#: ../../Zotlabs/Module/Like.php:146 +msgid "thing" +msgstr "Sache" + +#: ../../Zotlabs/Module/Like.php:192 +msgid "Channel unavailable." +msgstr "Kanal nicht vorhanden." + +#: ../../Zotlabs/Module/Like.php:240 +msgid "Previous action reversed." +msgstr "Die vorherige Aktion wurde rückgängig gemacht." + +#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 +#: ../../Zotlabs/Module/Tagger.php:47 +#: ../../extend/addon/addon/diaspora/inbound.php:1792 +#: ../../extend/addon/addon/redphotos/redphotohelper.php:74 +#: ../../include/text.php:1940 ../../include/conversation.php:120 +msgid "photo" +msgstr "Foto" + +#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 +#: ../../extend/addon/addon/diaspora/inbound.php:1792 +#: ../../include/text.php:1946 ../../include/conversation.php:148 +msgid "status" +msgstr "Status" + +#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Tagger.php:51 +#: ../../Zotlabs/Module/Events.php:256 ../../include/text.php:1943 +#: ../../include/event.php:961 ../../include/conversation.php:123 +msgid "event" +msgstr "Termin" + +#: ../../Zotlabs/Module/Like.php:419 +#: ../../extend/addon/addon/diaspora/inbound.php:1821 +#: ../../include/conversation.php:164 +#, php-format +msgid "%1$s likes %2$s's %3$s" +msgstr "%1$s gefällt %2$ss %3$s" + +#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "%1$s gefällt %2$ss %3$s nicht" + +#: ../../Zotlabs/Module/Like.php:423 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" +msgstr "%1$s stimmt %2$ss %3$s zu" + +#: ../../Zotlabs/Module/Like.php:425 +#, php-format +msgid "%1$s doesn't agree with %2$s's %3$s" +msgstr "%1$s lehnt %2$ss %3$s ab" + +#: ../../Zotlabs/Module/Like.php:427 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" +msgstr "%1$s enthält sich zu %2$ss %3$s" + +#: ../../Zotlabs/Module/Like.php:429 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "%1$s nimmt an %2$ss %3$s teil" + +#: ../../Zotlabs/Module/Like.php:431 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "%1$s nimmt an %2$ss %3$s nicht teil" + +#: ../../Zotlabs/Module/Like.php:433 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "%1$s nimmt vielleicht an %2$ss %3$s teil" + +#: ../../Zotlabs/Module/Like.php:538 +msgid "Action completed." +msgstr "Aktion durchgeführt." + +#: ../../Zotlabs/Module/Like.php:539 +msgid "Thank you." +msgstr "Vielen Dank." + #: ../../Zotlabs/Module/Profile_photo.php:186 #: ../../extend/addon/addon/openclipatar/openclipatar.php:293 msgid "" @@ -4982,6 +5125,16 @@ msgstr "Lade neues Profilfoto hoch" msgid "Use" msgstr "Verwenden" +#: ../../Zotlabs/Module/Search.php:223 +#, php-format +msgid "Items tagged with: %s" +msgstr "Beiträge mit Schlagwort: %s" + +#: ../../Zotlabs/Module/Search.php:225 +#, php-format +msgid "Search results for: %s" +msgstr "Suchergebnisse für: %s" + #: ../../Zotlabs/Module/Common.php:14 msgid "No channel." msgstr "Kein Kanal." @@ -4994,164 +5147,23 @@ msgstr "Gemeinsame Verbindungen" msgid "No connections in common." msgstr "Keine gemeinsamen Verbindungen." -#: ../../Zotlabs/Module/Events.php:25 -msgid "Calendar entries imported." -msgstr "Kalendereinträge wurden importiert." - -#: ../../Zotlabs/Module/Events.php:27 -msgid "No calendar entries found." -msgstr "Keine Kalendereinträge gefunden." - -#: ../../Zotlabs/Module/Events.php:106 -msgid "Event can not end before it has started." -msgstr "Termin-Ende liegt vor dem Beginn." - -#: ../../Zotlabs/Module/Events.php:108 ../../Zotlabs/Module/Events.php:117 -#: ../../Zotlabs/Module/Events.php:139 -msgid "Unable to generate preview." -msgstr "Vorschau konnte nicht erzeugt werden." - -#: ../../Zotlabs/Module/Events.php:115 -msgid "Event title and start time are required." -msgstr "Titel und Startzeit des Termins sind erforderlich." - -#: ../../Zotlabs/Module/Events.php:137 ../../Zotlabs/Module/Events.php:261 -msgid "Event not found." -msgstr "Termin nicht gefunden." - -#: ../../Zotlabs/Module/Events.php:453 -msgid "Edit event title" -msgstr "Termintitel bearbeiten" - -#: ../../Zotlabs/Module/Events.php:453 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:831 -msgid "Event title" -msgstr "Termintitel" - -#: ../../Zotlabs/Module/Events.php:455 -msgid "Categories (comma-separated list)" -msgstr "Kategorien (Kommagetrennte Liste)" - -#: ../../Zotlabs/Module/Events.php:456 -msgid "Edit Category" -msgstr "Kategorie bearbeiten" - -#: ../../Zotlabs/Module/Events.php:456 -msgid "Category" -msgstr "Kategorie" - -#: ../../Zotlabs/Module/Events.php:459 -msgid "Edit start date and time" -msgstr "Startdatum und -zeit bearbeiten" - -#: ../../Zotlabs/Module/Events.php:459 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:832 -msgid "Start date and time" -msgstr "Startdatum und -zeit" - -#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:463 -msgid "Finish date and time are not known or not relevant" -msgstr "Enddatum und -zeit sind unbekannt oder irrelevant" - -#: ../../Zotlabs/Module/Events.php:462 -msgid "Edit finish date and time" -msgstr "Enddatum und -zeit bearbeiten" +#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 +msgid "Authorize application connection" +msgstr "Zugriff für die Anwendung autorisieren" -#: ../../Zotlabs/Module/Events.php:462 -msgid "Finish date and time" -msgstr "Enddatum und -zeit" +#: ../../Zotlabs/Module/Api.php:73 +msgid "Return to your app and insert this Security Code:" +msgstr "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:" -#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Events.php:465 -msgid "Adjust for viewer timezone" -msgstr "An die Zeitzone des Betrachters anpassen" +#: ../../Zotlabs/Module/Api.php:83 +msgid "Please login to continue." +msgstr "Zum Weitermachen, bitte einloggen." -#: ../../Zotlabs/Module/Events.php:464 +#: ../../Zotlabs/Module/Api.php:95 msgid "" -"Important for events that happen in a particular place. Not practical for " -"global holidays." -msgstr "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien." - -#: ../../Zotlabs/Module/Events.php:466 -msgid "Edit Description" -msgstr "Beschreibung bearbeiten" - -#: ../../Zotlabs/Module/Events.php:468 -msgid "Edit Location" -msgstr "Ort bearbeiten" - -#: ../../Zotlabs/Module/Events.php:472 ../../include/conversation.php:1280 -msgid "Permission settings" -msgstr "Berechtigungs-Einstellungen" - -#: ../../Zotlabs/Module/Events.php:485 -msgid "Advanced Options" -msgstr "Weitere Optionen" - -#: ../../Zotlabs/Module/Events.php:596 ../../Zotlabs/Module/Cal.php:259 -msgid "l, F j" -msgstr "l, j. F" - -#: ../../Zotlabs/Module/Events.php:624 -msgid "Edit event" -msgstr "Termin bearbeiten" - -#: ../../Zotlabs/Module/Events.php:626 -msgid "Delete event" -msgstr "Termin löschen" - -#: ../../Zotlabs/Module/Events.php:651 ../../Zotlabs/Module/Cal.php:308 -#: ../../include/text.php:1792 -msgid "Link to Source" -msgstr "Link zur Quelle" - -#: ../../Zotlabs/Module/Events.php:660 -msgid "calendar" -msgstr "Kalender" - -#: ../../Zotlabs/Module/Events.php:679 ../../Zotlabs/Module/Cal.php:331 -msgid "Edit Event" -msgstr "Termin bearbeiten" - -#: ../../Zotlabs/Module/Events.php:679 ../../Zotlabs/Module/Cal.php:331 -msgid "Create Event" -msgstr "Termin anlegen" - -#: ../../Zotlabs/Module/Events.php:682 ../../Zotlabs/Module/Cal.php:334 -msgid "Export" -msgstr "Exportieren" - -#: ../../Zotlabs/Module/Events.php:686 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:845 -msgid "Month" -msgstr "Monat" - -#: ../../Zotlabs/Module/Events.php:687 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:846 -msgid "Week" -msgstr "Woche" - -#: ../../Zotlabs/Module/Events.php:688 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847 -msgid "Day" -msgstr "Tag" - -#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:341 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:844 -msgid "Today" -msgstr "Heute" - -#: ../../Zotlabs/Module/Events.php:722 -msgid "Event removed" -msgstr "Termin gelöscht" - -#: ../../Zotlabs/Module/Events.php:725 -msgid "Failed to remove event" -msgstr "Termin konnte nicht gelöscht werden" - -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:222 -#: ../../include/nav.php:95 ../../include/conversation.php:1693 -msgid "Photos" -msgstr "Fotos" +"Do you want to authorize this application to access your posts and contacts," +" and/or create new posts for you?" +msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?" #: ../../Zotlabs/Module/Ping.php:254 msgid "sent you a private message" @@ -5173,6 +5185,44 @@ msgstr "[Heute]" msgid "posted an event" msgstr "hat einen Termin veröffentlicht" +#: ../../Zotlabs/Module/Siteinfo.php:20 +msgid "About this site" +msgstr "Über diese Seite" + +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "Site Name" +msgstr "Seitenname" + +#: ../../Zotlabs/Module/Siteinfo.php:25 ../../include/network.php:1962 +msgid "Administrator" +msgstr "Administrator" + +#: ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Software and Project information" +msgstr "Software und Projektinformationen" + +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "This site is powered by $Projectname" +msgstr "Diese Website wird bereitgestellt durch $Projectname" + +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "" +"Federated and decentralised networking and identity services provided by Zot" +msgstr "Verbundene, dezentrale Netzwerk- und Identitätsdienste, ermöglicht mittels Zot" + +#: ../../Zotlabs/Module/Siteinfo.php:32 +#, php-format +msgid "Version %s" +msgstr "Version %s" + +#: ../../Zotlabs/Module/Siteinfo.php:33 +msgid "Project homepage" +msgstr "Projekt-Website" + +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Developer homepage" +msgstr "Entwickler-Website" + #: ../../Zotlabs/Module/Lostpass.php:19 msgid "No valid account found." msgstr "Kein gültiges Konto gefunden." @@ -5197,7 +5247,7 @@ msgid "" "Password reset failed." msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen." -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1723 +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1727 msgid "Password Reset" msgstr "Zurücksetzen des Kennworts" @@ -5262,6 +5312,10 @@ msgstr "URL des Lesezeichens" msgid "Or enter new bookmark folder name" msgstr "Oder gib einen neuen Namen für den Lesezeichenordner ein" +#: ../../Zotlabs/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" +msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken" + #: ../../Zotlabs/Module/Rmagic.php:35 msgid "Authentication failed." msgstr "Authentifizierung fehlgeschlagen." @@ -5412,332 +5466,115 @@ msgid "" " please import or restore these in date order (oldest first)." msgstr "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1$s\">%2$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst." -#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1391 -msgid "Public Hubs" -msgstr "Öffentliche Hubs" - -#: ../../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 "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im $Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen." - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Hub URL" -msgstr "Hub-URL" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" -msgstr "Zugriffstyp" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" -msgstr "Registrierungsrichtlinien" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" -msgstr "Statistiken" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" -msgstr "Software" - -#: ../../Zotlabs/Module/Pubsites.php:48 -msgid "Rate" -msgstr "Bewerten" - -#: ../../Zotlabs/Module/Connedit.php:80 -msgid "Could not access contact record." -msgstr "Konnte nicht auf den Kontakteintrag zugreifen." - -#: ../../Zotlabs/Module/Connedit.php:104 -msgid "Could not locate selected profile." -msgstr "Gewähltes Profil nicht gefunden." - -#: ../../Zotlabs/Module/Connedit.php:256 -msgid "Connection updated." -msgstr "Verbindung aktualisiert." - -#: ../../Zotlabs/Module/Connedit.php:258 -msgid "Failed to update connection record." -msgstr "Konnte den Verbindungseintrag nicht aktualisieren." - -#: ../../Zotlabs/Module/Connedit.php:308 -msgid "is now connected to" -msgstr "ist jetzt verbunden mit" - -#: ../../Zotlabs/Module/Connedit.php:440 -msgid "Could not access address book record." -msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen." - -#: ../../Zotlabs/Module/Connedit.php:460 -msgid "Refresh failed - channel is currently unavailable." -msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar." - -#: ../../Zotlabs/Module/Connedit.php:475 ../../Zotlabs/Module/Connedit.php:484 -#: ../../Zotlabs/Module/Connedit.php:493 ../../Zotlabs/Module/Connedit.php:502 -#: ../../Zotlabs/Module/Connedit.php:515 -msgid "Unable to set address book parameters." -msgstr "Konnte die Adressbuch-Parameter nicht setzen." - -#: ../../Zotlabs/Module/Connedit.php:539 -msgid "Connection has been removed." -msgstr "Verbindung wurde gelöscht." - -#: ../../Zotlabs/Module/Connedit.php:555 ../../Zotlabs/Lib/Apps.php:221 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 -#: ../../include/nav.php:89 ../../include/conversation.php:969 -msgid "View Profile" -msgstr "Profil ansehen" - -#: ../../Zotlabs/Module/Connedit.php:558 -#, php-format -msgid "View %s's profile" -msgstr "%ss Profil ansehen" - -#: ../../Zotlabs/Module/Connedit.php:562 -msgid "Refresh Permissions" -msgstr "Zugriffsrechte neu laden" - -#: ../../Zotlabs/Module/Connedit.php:565 -msgid "Fetch updated permissions" -msgstr "Aktualisierte Zugriffsrechte abfragen" - -#: ../../Zotlabs/Module/Connedit.php:569 -msgid "Recent Activity" -msgstr "Kürzliche Aktivitäten" - -#: ../../Zotlabs/Module/Connedit.php:572 -msgid "View recent posts and comments" -msgstr "Betrachte die neuesten Beiträge und Kommentare" - -#: ../../Zotlabs/Module/Connedit.php:579 -msgid "Block (or Unblock) all communications with this connection" -msgstr "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen" - -#: ../../Zotlabs/Module/Connedit.php:580 -msgid "This connection is blocked!" -msgstr "Die Verbindung ist geblockt!" - -#: ../../Zotlabs/Module/Connedit.php:584 -msgid "Unignore" -msgstr "Nicht ignorieren" - -#: ../../Zotlabs/Module/Connedit.php:587 -msgid "Ignore (or Unignore) all inbound communications from this connection" -msgstr "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen" - -#: ../../Zotlabs/Module/Connedit.php:588 -msgid "This connection is ignored!" -msgstr "Die Verbindung wird ignoriert!" - -#: ../../Zotlabs/Module/Connedit.php:592 -msgid "Unarchive" -msgstr "Aus Archiv zurückholen" - -#: ../../Zotlabs/Module/Connedit.php:592 -msgid "Archive" -msgstr "Archivieren" - -#: ../../Zotlabs/Module/Connedit.php:595 -msgid "" -"Archive (or Unarchive) this connection - mark channel dead but keep content" -msgstr "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)" - -#: ../../Zotlabs/Module/Connedit.php:596 -msgid "This connection is archived!" -msgstr "Die Verbindung ist archiviert!" - -#: ../../Zotlabs/Module/Connedit.php:600 -msgid "Unhide" -msgstr "Wieder sichtbar machen" - -#: ../../Zotlabs/Module/Connedit.php:600 -msgid "Hide" -msgstr "Verstecken" - -#: ../../Zotlabs/Module/Connedit.php:603 -msgid "Hide or Unhide this connection from your other connections" -msgstr "Diese Verbindung vor anderen Verbindungen verstecken/zeigen" - -#: ../../Zotlabs/Module/Connedit.php:604 -msgid "This connection is hidden!" -msgstr "Die Verbindung ist versteckt!" - -#: ../../Zotlabs/Module/Connedit.php:611 -msgid "Delete this connection" -msgstr "Verbindung löschen" - -#: ../../Zotlabs/Module/Connedit.php:626 ../../include/widgets.php:529 -msgid "Me" -msgstr "Ich" - -#: ../../Zotlabs/Module/Connedit.php:627 ../../include/widgets.php:530 -msgid "Family" -msgstr "Familie" - -#: ../../Zotlabs/Module/Connedit.php:628 -#: ../../Zotlabs/Module/Settings/Channel.php:61 -#: ../../Zotlabs/Module/Settings/Channel.php:65 -#: ../../Zotlabs/Module/Settings/Channel.php:66 -#: ../../Zotlabs/Module/Settings/Channel.php:69 -#: ../../Zotlabs/Module/Settings/Channel.php:80 ../../include/channel.php:402 -#: ../../include/channel.php:403 ../../include/channel.php:410 -#: ../../include/selectors.php:123 ../../include/widgets.php:531 -msgid "Friends" -msgstr "Freunde" - -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/widgets.php:532 -msgid "Acquaintances" -msgstr "Bekannte" - -#: ../../Zotlabs/Module/Connedit.php:687 -msgid "Approve this connection" -msgstr "Verbindung genehmigen" - -#: ../../Zotlabs/Module/Connedit.php:687 -msgid "Accept connection to allow communication" -msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen" - -#: ../../Zotlabs/Module/Connedit.php:692 -msgid "Set Affinity" -msgstr "Beziehung festlegen" - -#: ../../Zotlabs/Module/Connedit.php:695 -msgid "Set Profile" -msgstr "Profil festlegen" - -#: ../../Zotlabs/Module/Connedit.php:698 -msgid "Set Affinity & Profile" -msgstr "Beziehung und Profile festlegen" +#: ../../Zotlabs/Module/Cal.php:69 +msgid "Permissions denied." +msgstr "Berechtigung verweigert." -#: ../../Zotlabs/Module/Connedit.php:747 -msgid "none" -msgstr "Keine" +#: ../../Zotlabs/Module/Cal.php:263 ../../Zotlabs/Module/Events.php:596 +msgid "l, F j" +msgstr "l, j. F" -#: ../../Zotlabs/Module/Connedit.php:751 ../../include/widgets.php:656 -msgid "Connection Default Permissions" -msgstr "Standardzugriffsrechte für neue Verbindungen:" +#: ../../Zotlabs/Module/Cal.php:312 ../../Zotlabs/Module/Events.php:651 +#: ../../include/text.php:1748 +msgid "Link to Source" +msgstr "Link zur Quelle" -#: ../../Zotlabs/Module/Connedit.php:751 ../../include/items.php:3977 -#, php-format -msgid "Connection: %s" -msgstr "Verbindung: %s" +#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Events.php:679 +msgid "Edit Event" +msgstr "Termin bearbeiten" -#: ../../Zotlabs/Module/Connedit.php:752 -msgid "Apply these permissions automatically" -msgstr "Diese Berechtigungen automatisch anwenden" +#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Events.php:679 +msgid "Create Event" +msgstr "Termin anlegen" -#: ../../Zotlabs/Module/Connedit.php:752 -msgid "Connection requests will be approved without your interaction" -msgstr "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist." +#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Events.php:682 +msgid "Export" +msgstr "Exportieren" -#: ../../Zotlabs/Module/Connedit.php:754 -msgid "This connection's primary address is" -msgstr "Die Hauptadresse der Verbindung ist" +#: ../../Zotlabs/Module/Cal.php:341 ../../include/text.php:2294 +msgid "Import" +msgstr "Import" -#: ../../Zotlabs/Module/Connedit.php:755 -msgid "Available locations:" -msgstr "Verfügbare Klone:" +#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Events.php:691 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:848 +msgid "Today" +msgstr "Heute" -#: ../../Zotlabs/Module/Connedit.php:759 -msgid "" -"The permissions indicated on this page will be applied to all new " -"connections." -msgstr "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet." +#: ../../Zotlabs/Module/Admin.php:94 +msgid "# Accounts" +msgstr "Anzahl der Konten" -#: ../../Zotlabs/Module/Connedit.php:760 -msgid "Connection Tools" -msgstr "Verbindungswerkzeuge" +#: ../../Zotlabs/Module/Admin.php:95 +msgid "# blocked accounts" +msgstr "Anzahl der blockierten Konten" -#: ../../Zotlabs/Module/Connedit.php:762 -msgid "Slide to adjust your degree of friendship" -msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen" +#: ../../Zotlabs/Module/Admin.php:96 +msgid "# expired accounts" +msgstr "Anzahl der abgelaufenen Konten" -#: ../../Zotlabs/Module/Connedit.php:764 -msgid "Slide to adjust your rating" -msgstr "Verschieben, um Deine Bewertung einzustellen" +#: ../../Zotlabs/Module/Admin.php:97 +msgid "# expiring accounts" +msgstr "Anzahl der ablaufenden Konten" -#: ../../Zotlabs/Module/Connedit.php:765 ../../Zotlabs/Module/Connedit.php:770 -msgid "Optionally explain your rating" -msgstr "Optional kannst Du Deine Bewertung begründen" +#: ../../Zotlabs/Module/Admin.php:108 +msgid "# Channels" +msgstr "Anzahl der Kanäle" -#: ../../Zotlabs/Module/Connedit.php:767 -msgid "Custom Filter" -msgstr "Benutzerdefinierter Filter" +#: ../../Zotlabs/Module/Admin.php:109 +msgid "# primary" +msgstr "Anzahl der primären Kanäle" -#: ../../Zotlabs/Module/Connedit.php:768 -msgid "Only import posts with this text" -msgstr "Nur Beiträge mit diesem Text importieren" +#: ../../Zotlabs/Module/Admin.php:110 +msgid "# clones" +msgstr "Anzahl der Klone" -#: ../../Zotlabs/Module/Connedit.php:768 ../../Zotlabs/Module/Connedit.php:769 -msgid "" -"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " -"all posts" -msgstr "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren." +#: ../../Zotlabs/Module/Admin.php:116 +msgid "Message queues" +msgstr "Nachrichten-Warteschlangen" -#: ../../Zotlabs/Module/Connedit.php:769 -msgid "Do not import posts with this text" -msgstr "Beiträge mit diesem Text nicht importieren" +#: ../../Zotlabs/Module/Admin.php:133 +msgid "Your software should be updated" +msgstr "Die installierte Software sollte aktualisiert werden" -#: ../../Zotlabs/Module/Connedit.php:771 -msgid "This information is public!" -msgstr "Diese Information ist öffentlich!" +#: ../../Zotlabs/Module/Admin.php:138 +msgid "Summary" +msgstr "Zusammenfassung" -#: ../../Zotlabs/Module/Connedit.php:776 -msgid "Connection Pending Approval" -msgstr "Verbindung wartet auf Bestätigung" +#: ../../Zotlabs/Module/Admin.php:141 +msgid "Registered accounts" +msgstr "Registrierte Konten" -#: ../../Zotlabs/Module/Connedit.php:779 -#: ../../Zotlabs/Module/Settings/Tokens.php:163 -msgid "inherited" -msgstr "geerbt" +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Pending registrations" +msgstr "Ausstehende Registrierungen" -#: ../../Zotlabs/Module/Connedit.php:781 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." -msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird." +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Registered channels" +msgstr "Registrierte Kanäle" -#: ../../Zotlabs/Module/Connedit.php:783 -#: ../../Zotlabs/Module/Settings/Tokens.php:160 -msgid "Their Settings" -msgstr "Deren Einstellungen" +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Active plugins" +msgstr "Aktive Plug-Ins" -#: ../../Zotlabs/Module/Connedit.php:784 -#: ../../Zotlabs/Module/Settings/Tokens.php:161 -msgid "My Settings" -msgstr "Meine Einstellungen" +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Version" +msgstr "Version" -#: ../../Zotlabs/Module/Connedit.php:786 -#: ../../Zotlabs/Module/Settings/Tokens.php:165 -msgid "Individual Permissions" -msgstr "Individuelle Zugriffsrechte" +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Repository version (master)" +msgstr "Repository-Version (master)" -#: ../../Zotlabs/Module/Connedit.php:787 -#: ../../Zotlabs/Module/Settings/Tokens.php:166 -msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can <strong>not</strong> change those" -" settings here." -msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden." +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (dev)" +msgstr "Repository-Version (dev)" -#: ../../Zotlabs/Module/Connedit.php:788 -msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can change those settings here but " -"they wont have any impact unless the inherited setting changes." -msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen." +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." +msgstr "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar." -#: ../../Zotlabs/Module/Connedit.php:789 -msgid "Last update:" -msgstr "Letzte Aktualisierung:" +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" +msgstr "Sichtbar für:" #: ../../Zotlabs/Module/Service_limits.php:23 msgid "No service class restrictions found." @@ -5760,7 +5597,7 @@ msgid "Export selected" msgstr "Exportieren ausgewählt" #: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:218 -#: ../../include/nav.php:109 ../../include/conversation.php:1746 +#: ../../include/nav.php:109 ../../include/conversation.php:1745 msgid "Webpages" msgstr "Webseiten" @@ -5821,7 +5658,7 @@ msgid "" msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk" #: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:544 +#: ../../Zotlabs/Module/Settings/Channel.php:547 msgid "Remove Channel" msgstr "Kanal löschen" @@ -5845,79 +5682,128 @@ msgstr "Diese Datei löschen" msgid "Not found" msgstr "Nicht gefunden" -#: ../../Zotlabs/Module/Wiki.php:126 ../../Zotlabs/Lib/Apps.php:219 -#: ../../include/features.php:99 ../../include/nav.php:111 -#: ../../include/conversation.php:1756 ../../include/conversation.php:1759 -msgid "Wiki" -msgstr "Wiki" +#: ../../Zotlabs/Module/Wiki.php:55 +msgid "Invalid channel" +msgstr "Ungültiger Kanal" -#: ../../Zotlabs/Module/Wiki.php:127 -msgid "Sandbox" -msgstr "Sandbox" +#: ../../Zotlabs/Module/Wiki.php:100 +msgid "Error retrieving wiki" +msgstr "Fehler beim Abrufen des Wiki" -#: ../../Zotlabs/Module/Wiki.php:129 -msgid "" -"\"# Wiki Sandbox\\n\\nContent you **edit** and **preview** here *will not be" -" saved*.\"" -msgstr "\"# Wiki Sandkasten\\n\\nInhalte, die Du hier **veränderst** und **als Vorschau anzeigst**, *werden nicht gespeichert*.\"" +#: ../../Zotlabs/Module/Wiki.php:107 +msgid "Error creating zip file export folder" +msgstr "Fehler bei der Erzeugung des Zip-Datei Export-Verzeichnisses " -#: ../../Zotlabs/Module/Wiki.php:198 +#: ../../Zotlabs/Module/Wiki.php:125 +msgid "Error downloading wiki: " +msgstr "Fehler beim Herunterladen des Wiki:" + +#: ../../Zotlabs/Module/Wiki.php:139 ../../include/nav.php:111 +#: ../../include/conversation.php:1755 +msgid "Wikis" +msgstr "Wikis" + +#: ../../Zotlabs/Module/Wiki.php:145 ../../include/widgets.php:966 +msgid "Download" +msgstr "Herunterladen" + +#: ../../Zotlabs/Module/Wiki.php:149 ../../include/widgets.php:970 +msgid "Wiki name" +msgstr "Name des Wiki" + +#: ../../Zotlabs/Module/Wiki.php:150 +msgid "Content type" +msgstr "Inhaltstyp" + +#: ../../Zotlabs/Module/Wiki.php:159 +msgid "Create a status post for this wiki" +msgstr "Erzeuge einen Statusbeitrag für dieses Wiki" + +#: ../../Zotlabs/Module/Wiki.php:178 +msgid "Wiki not found" +msgstr "Wiki nicht gefunden" + +#: ../../Zotlabs/Module/Wiki.php:203 +msgid "Rename page" +msgstr "Seite umbenennen" + +#: ../../Zotlabs/Module/Wiki.php:207 +msgid "Error retrieving page content" +msgstr "Fehler beim Abrufen des Seiteninhalts" + +#: ../../Zotlabs/Module/Wiki.php:240 msgid "Revision Comparison" msgstr "Revisionsvergleich" -#: ../../Zotlabs/Module/Wiki.php:199 +#: ../../Zotlabs/Module/Wiki.php:241 msgid "Revert" msgstr "Rückgängig machen" -#: ../../Zotlabs/Module/Wiki.php:230 -msgid "Enter the name of your new wiki:" -msgstr "Gib einen Namen für Dein neues Wiki ein:" +#: ../../Zotlabs/Module/Wiki.php:250 +msgid "Choose an available wiki from the list on the left." +msgstr "Wähle ein vorhandenes Wiki aus der Liste auf der linken Seite aus." -#: ../../Zotlabs/Module/Wiki.php:231 -msgid "Enter the name of the new page:" -msgstr "Geben Sie den Namen der neuen Seite ein:" +#: ../../Zotlabs/Module/Wiki.php:252 +msgid "Source" +msgstr "Quelle" -#: ../../Zotlabs/Module/Wiki.php:232 -msgid "Enter the new name:" -msgstr "Geben Sie den neuen Namen ein:" +#: ../../Zotlabs/Module/Wiki.php:269 +msgid "New page name" +msgstr "Neuer Seitenname" -#: ../../Zotlabs/Module/Wiki.php:238 ../../include/conversation.php:1169 +#: ../../Zotlabs/Module/Wiki.php:275 ../../include/conversation.php:1169 msgid "Embed image from photo albums" msgstr "Bild aus Fotoalben einbetten" -#: ../../Zotlabs/Module/Wiki.php:239 ../../include/conversation.php:1263 +#: ../../Zotlabs/Module/Wiki.php:276 ../../include/conversation.php:1263 msgid "Embed an image from your albums" msgstr "Betten Sie ein Bild aus Ihren Alben ein" -#: ../../Zotlabs/Module/Wiki.php:241 ../../include/conversation.php:1265 +#: ../../Zotlabs/Module/Wiki.php:278 ../../include/conversation.php:1265 #: ../../include/conversation.php:1312 msgid "OK" msgstr "Ok" -#: ../../Zotlabs/Module/Wiki.php:242 ../../include/conversation.php:1205 +#: ../../Zotlabs/Module/Wiki.php:279 ../../include/conversation.php:1205 msgid "Choose images to embed" msgstr "Wählen Sie Bilder zum Einbetten aus" -#: ../../Zotlabs/Module/Wiki.php:243 ../../include/conversation.php:1206 +#: ../../Zotlabs/Module/Wiki.php:280 ../../include/conversation.php:1206 msgid "Choose an album" msgstr "Wählen Sie ein Album aus" -#: ../../Zotlabs/Module/Wiki.php:244 ../../include/conversation.php:1207 +#: ../../Zotlabs/Module/Wiki.php:281 ../../include/conversation.php:1207 msgid "Choose a different album..." msgstr "Wählen Sie ein anderes Album aus..." -#: ../../Zotlabs/Module/Wiki.php:245 ../../include/conversation.php:1208 +#: ../../Zotlabs/Module/Wiki.php:282 ../../include/conversation.php:1208 msgid "Error getting album list" msgstr "Fehler beim Holen der Albenliste" -#: ../../Zotlabs/Module/Wiki.php:246 ../../include/conversation.php:1209 +#: ../../Zotlabs/Module/Wiki.php:283 ../../include/conversation.php:1209 msgid "Error getting photo link" msgstr "Fehler beim Holen des Fotolinks" -#: ../../Zotlabs/Module/Wiki.php:247 ../../include/conversation.php:1210 +#: ../../Zotlabs/Module/Wiki.php:284 ../../include/conversation.php:1210 msgid "Error getting album" msgstr "Fehler beim Holen des Albums" +#: ../../Zotlabs/Module/Wiki.php:348 +msgid "Error creating wiki. Invalid name." +msgstr "Fehler beim Erstellen des Wiki. Ungültiger Name." + +#: ../../Zotlabs/Module/Wiki.php:359 +msgid "Wiki created, but error creating Home page." +msgstr "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite" + +#: ../../Zotlabs/Module/Wiki.php:364 +msgid "Error creating wiki" +msgstr "Fehler beim Erstellen des Wiki" + +#: ../../Zotlabs/Module/Wiki.php:410 +msgid "New page created" +msgstr "Neue Seite erstellt" + #: ../../Zotlabs/Module/Sources.php:37 msgid "Failed to create source. No channel selected." msgstr "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt." @@ -6020,7 +5906,7 @@ msgstr "Ignorieren/Verstecken" msgid "post" msgstr "Beitrag" -#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1992 +#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948 #: ../../include/conversation.php:150 msgid "comment" msgstr "Kommentar" @@ -6215,7 +6101,7 @@ msgid "Used to provide a member experience matched to your comfort level" msgstr "Dies wird verwendet, um Dir eine Benutzererfahrung passend zu Deiner technischen Qualifikationsstufe zu bieten." #: ../../Zotlabs/Module/Settings/Account.php:119 -#: ../../Zotlabs/Module/Settings/Channel.php:459 +#: ../../Zotlabs/Module/Settings/Channel.php:462 msgid "Email Address:" msgstr "Email Adresse:" @@ -6278,324 +6164,320 @@ msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen? msgid "Your channel address is" msgstr "Deine Kanal-Adresse lautet" -#: ../../Zotlabs/Module/Settings/Channel.php:450 +#: ../../Zotlabs/Module/Settings/Channel.php:407 +msgid "Your files/photos are accessible via WebDAV at" +msgstr "Deine Dateien/Fotos sind via WebDAV verfügbar auf" + +#: ../../Zotlabs/Module/Settings/Channel.php:453 msgid "Channel Settings" msgstr "Kanal-Einstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:457 +#: ../../Zotlabs/Module/Settings/Channel.php:460 msgid "Basic Settings" msgstr "Grundeinstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:458 +#: ../../Zotlabs/Module/Settings/Channel.php:461 #: ../../include/channel.php:1172 msgid "Full Name:" msgstr "Voller Name:" -#: ../../Zotlabs/Module/Settings/Channel.php:460 +#: ../../Zotlabs/Module/Settings/Channel.php:463 msgid "Your Timezone:" msgstr "Ihre Zeitzone:" -#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../Zotlabs/Module/Settings/Channel.php:464 msgid "Default Post Location:" msgstr "Standardstandort:" -#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../Zotlabs/Module/Settings/Channel.php:464 msgid "Geographical location to display on your posts" msgstr "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll" -#: ../../Zotlabs/Module/Settings/Channel.php:462 +#: ../../Zotlabs/Module/Settings/Channel.php:465 msgid "Use Browser Location:" msgstr "Standort des Browsers verwenden:" -#: ../../Zotlabs/Module/Settings/Channel.php:464 +#: ../../Zotlabs/Module/Settings/Channel.php:467 msgid "Adult Content" msgstr "Nicht jugendfreie Inhalte" -#: ../../Zotlabs/Module/Settings/Channel.php:464 +#: ../../Zotlabs/Module/Settings/Channel.php:467 msgid "" "This channel frequently or regularly publishes adult content. (Please tag " "any adult material and/or nudity with #NSFW)" msgstr "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)" -#: ../../Zotlabs/Module/Settings/Channel.php:466 +#: ../../Zotlabs/Module/Settings/Channel.php:469 msgid "Security and Privacy Settings" msgstr "Sicherheits- und Datenschutz-Einstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:469 +#: ../../Zotlabs/Module/Settings/Channel.php:472 msgid "Your permissions are already configured. Click to view/adjust" msgstr "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern" -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:474 msgid "Hide my online presence" msgstr "Meine Online-Präsenz verbergen" -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:474 msgid "Prevents displaying in your profile that you are online" msgstr "Verhindert die Anzeige Deines Online-Status in deinem Profil" -#: ../../Zotlabs/Module/Settings/Channel.php:473 +#: ../../Zotlabs/Module/Settings/Channel.php:476 msgid "Simple Privacy Settings:" msgstr "Einfache Privatsphäre-Einstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:474 +#: ../../Zotlabs/Module/Settings/Channel.php:477 msgid "" "Very Public - <em>extremely permissive (should be used with caution)</em>" msgstr "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:475 +#: ../../Zotlabs/Module/Settings/Channel.php:478 msgid "" "Typical - <em>default public, privacy when desired (similar to social " "network permissions but with improved privacy)</em>" msgstr "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:476 +#: ../../Zotlabs/Module/Settings/Channel.php:479 msgid "Private - <em>default private, never open or public</em>" msgstr "Privat – <em>Standard privat, nie offen oder öffentlich</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:477 +#: ../../Zotlabs/Module/Settings/Channel.php:480 msgid "Blocked - <em>default blocked to/from everybody</em>" msgstr "Blockiert – <em>Alle standardmäßig blockiert</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:479 +#: ../../Zotlabs/Module/Settings/Channel.php:482 msgid "Allow others to tag your posts" msgstr "Erlaube anderen, Deine Beiträge zu verschlagworten" -#: ../../Zotlabs/Module/Settings/Channel.php:479 +#: ../../Zotlabs/Module/Settings/Channel.php:482 msgid "" "Often used by the community to retro-actively flag inappropriate content" msgstr "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren" -#: ../../Zotlabs/Module/Settings/Channel.php:481 +#: ../../Zotlabs/Module/Settings/Channel.php:484 msgid "Channel Permission Limits" msgstr "Kanal-Berechtigungslimits" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "Expire other channel content after this many days" msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "0 or blank to use the website limit." msgstr "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden." -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 #, php-format msgid "This website expires after %d days." msgstr "Diese Webseite läuft nach %d Tagen ab." -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "This website does not expire imported content." msgstr "Diese Webseite lässt importierte Inhalte nicht verfallen." -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "The website limit takes precedence if lower than your limit." msgstr "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist." -#: ../../Zotlabs/Module/Settings/Channel.php:484 +#: ../../Zotlabs/Module/Settings/Channel.php:487 msgid "Maximum Friend Requests/Day:" msgstr "Maximale Kontaktanfragen pro Tag:" -#: ../../Zotlabs/Module/Settings/Channel.php:484 +#: ../../Zotlabs/Module/Settings/Channel.php:487 msgid "May reduce spam activity" msgstr "Kann die Spam-Aktivität verringern" -#: ../../Zotlabs/Module/Settings/Channel.php:485 +#: ../../Zotlabs/Module/Settings/Channel.php:488 msgid "Default Access Control List (ACL)" msgstr "Standard-Zugriffsberechtigungsliste (ACL)" -#: ../../Zotlabs/Module/Settings/Channel.php:487 +#: ../../Zotlabs/Module/Settings/Channel.php:490 msgid "Use my default audience setting for the type of object published" msgstr "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps" -#: ../../Zotlabs/Module/Settings/Channel.php:494 +#: ../../Zotlabs/Module/Settings/Channel.php:497 msgid "Channel permissions category:" msgstr "Zugriffsrechte-Kategorie des Kanals:" -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Maximum private messages per day from unknown people:" msgstr "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:" -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Useful to reduce spamming" msgstr "Nützlich, um Spam zu verringern" -#: ../../Zotlabs/Module/Settings/Channel.php:503 +#: ../../Zotlabs/Module/Settings/Channel.php:506 msgid "Notification Settings" msgstr "Benachrichtigungs-Einstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:504 +#: ../../Zotlabs/Module/Settings/Channel.php:507 msgid "By default post a status message when:" msgstr "Sende standardmäßig Status-Nachrichten, wenn:" -#: ../../Zotlabs/Module/Settings/Channel.php:505 +#: ../../Zotlabs/Module/Settings/Channel.php:508 msgid "accepting a friend request" msgstr "Du eine Verbindungsanfrage annimmst" -#: ../../Zotlabs/Module/Settings/Channel.php:506 +#: ../../Zotlabs/Module/Settings/Channel.php:509 msgid "joining a forum/community" msgstr "Du einem Forum beitrittst" -#: ../../Zotlabs/Module/Settings/Channel.php:507 +#: ../../Zotlabs/Module/Settings/Channel.php:510 msgid "making an <em>interesting</em> profile change" msgstr "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst" -#: ../../Zotlabs/Module/Settings/Channel.php:508 +#: ../../Zotlabs/Module/Settings/Channel.php:511 msgid "Send a notification email when:" msgstr "Eine E-Mail-Benachrichtigung senden, wenn:" -#: ../../Zotlabs/Module/Settings/Channel.php:509 +#: ../../Zotlabs/Module/Settings/Channel.php:512 msgid "You receive a connection request" msgstr "Du eine Verbindungsanfrage erhältst" -#: ../../Zotlabs/Module/Settings/Channel.php:510 +#: ../../Zotlabs/Module/Settings/Channel.php:513 msgid "Your connections are confirmed" msgstr "Eine Verbindung bestätigt wurde" -#: ../../Zotlabs/Module/Settings/Channel.php:511 +#: ../../Zotlabs/Module/Settings/Channel.php:514 msgid "Someone writes on your profile wall" msgstr "Jemand auf Deine Pinnwand schreibt" -#: ../../Zotlabs/Module/Settings/Channel.php:512 +#: ../../Zotlabs/Module/Settings/Channel.php:515 msgid "Someone writes a followup comment" msgstr "Jemand einen Beitrag kommentiert" -#: ../../Zotlabs/Module/Settings/Channel.php:513 +#: ../../Zotlabs/Module/Settings/Channel.php:516 msgid "You receive a private message" msgstr "Du eine private Nachricht erhältst" -#: ../../Zotlabs/Module/Settings/Channel.php:514 +#: ../../Zotlabs/Module/Settings/Channel.php:517 msgid "You receive a friend suggestion" msgstr "Du einen Kontaktvorschlag erhältst" -#: ../../Zotlabs/Module/Settings/Channel.php:515 +#: ../../Zotlabs/Module/Settings/Channel.php:518 msgid "You are tagged in a post" msgstr "Du in einem Beitrag erwähnt wurdest" -#: ../../Zotlabs/Module/Settings/Channel.php:516 +#: ../../Zotlabs/Module/Settings/Channel.php:519 msgid "You are poked/prodded/etc. in a post" msgstr "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest" -#: ../../Zotlabs/Module/Settings/Channel.php:519 +#: ../../Zotlabs/Module/Settings/Channel.php:522 msgid "Show visual notifications including:" msgstr "Visuelle Benachrichtigungen anzeigen für:" -#: ../../Zotlabs/Module/Settings/Channel.php:521 +#: ../../Zotlabs/Module/Settings/Channel.php:524 msgid "Unseen grid activity" msgstr "Ungesehene Netzwerk-Aktivität" -#: ../../Zotlabs/Module/Settings/Channel.php:522 +#: ../../Zotlabs/Module/Settings/Channel.php:525 msgid "Unseen channel activity" msgstr "Ungesehene Kanal-Aktivität" -#: ../../Zotlabs/Module/Settings/Channel.php:523 +#: ../../Zotlabs/Module/Settings/Channel.php:526 msgid "Unseen private messages" msgstr "Ungelesene persönliche Nachrichten" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -#: ../../Zotlabs/Module/Settings/Channel.php:528 -#: ../../Zotlabs/Module/Settings/Channel.php:529 -#: ../../Zotlabs/Module/Settings/Channel.php:530 +#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:531 +#: ../../Zotlabs/Module/Settings/Channel.php:532 +#: ../../Zotlabs/Module/Settings/Channel.php:533 #: ../../extend/addon/addon/jappixmini/jappixmini.php:343 msgid "Recommended" msgstr "Empfohlen" -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:527 msgid "Upcoming events" msgstr "Baldige Termine" -#: ../../Zotlabs/Module/Settings/Channel.php:525 +#: ../../Zotlabs/Module/Settings/Channel.php:528 msgid "Events today" msgstr "Heutige Termine" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:529 msgid "Upcoming birthdays" msgstr "Baldige Geburtstage" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:529 msgid "Not available in all themes" msgstr "Nicht in allen Themes verfügbar" -#: ../../Zotlabs/Module/Settings/Channel.php:527 +#: ../../Zotlabs/Module/Settings/Channel.php:530 msgid "System (personal) notifications" msgstr "System – (persönliche) Benachrichtigungen" -#: ../../Zotlabs/Module/Settings/Channel.php:528 +#: ../../Zotlabs/Module/Settings/Channel.php:531 msgid "System info messages" msgstr "System – Info-Nachrichten" -#: ../../Zotlabs/Module/Settings/Channel.php:529 +#: ../../Zotlabs/Module/Settings/Channel.php:532 msgid "System critical alerts" msgstr "System – kritische Warnungen" -#: ../../Zotlabs/Module/Settings/Channel.php:530 +#: ../../Zotlabs/Module/Settings/Channel.php:533 msgid "New connections" msgstr "Neue Verbindungen" -#: ../../Zotlabs/Module/Settings/Channel.php:531 +#: ../../Zotlabs/Module/Settings/Channel.php:534 msgid "System Registrations" msgstr "System – Registrierungen" -#: ../../Zotlabs/Module/Settings/Channel.php:532 +#: ../../Zotlabs/Module/Settings/Channel.php:535 msgid "" "Also show new wall posts, private messages and connections under Notices" msgstr "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen" -#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:537 msgid "Notify me of events this many days in advance" msgstr "Benachrichtige mich zu Terminen so viele Tage im Voraus" -#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:537 msgid "Must be greater than 0" msgstr "Muss größer als 0 sein" -#: ../../Zotlabs/Module/Settings/Channel.php:536 +#: ../../Zotlabs/Module/Settings/Channel.php:539 msgid "Advanced Account/Page Type Settings" msgstr "Erweiterte Account- und Seitenart-Einstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:537 +#: ../../Zotlabs/Module/Settings/Channel.php:540 msgid "Change the behaviour of this account for special situations" msgstr "Ändere das Verhalten dieses Accounts unter speziellen Umständen" -#: ../../Zotlabs/Module/Settings/Channel.php:539 +#: ../../Zotlabs/Module/Settings/Channel.php:542 msgid "Miscellaneous Settings" msgstr "Sonstige Einstellungen" -#: ../../Zotlabs/Module/Settings/Channel.php:540 +#: ../../Zotlabs/Module/Settings/Channel.php:543 msgid "Default photo upload folder" msgstr "Voreingestellter Ordner für hochgeladene Fotos" -#: ../../Zotlabs/Module/Settings/Channel.php:540 -#: ../../Zotlabs/Module/Settings/Channel.php:541 +#: ../../Zotlabs/Module/Settings/Channel.php:543 +#: ../../Zotlabs/Module/Settings/Channel.php:544 msgid "%Y - current year, %m - current month" msgstr "%Y - aktuelles Jahr, %m - aktueller Monat" -#: ../../Zotlabs/Module/Settings/Channel.php:541 +#: ../../Zotlabs/Module/Settings/Channel.php:544 msgid "Default file upload folder" msgstr "Voreingestellter Ordner für hochgeladene Dateien" -#: ../../Zotlabs/Module/Settings/Channel.php:543 +#: ../../Zotlabs/Module/Settings/Channel.php:546 msgid "Personal menu to display in your channel pages" msgstr "Eigenes Menü zur Anzeige auf den Seiten deines Kanals" -#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Module/Settings/Channel.php:548 msgid "Remove this channel." msgstr "Diesen Kanal löschen" -#: ../../Zotlabs/Module/Settings/Channel.php:546 +#: ../../Zotlabs/Module/Settings/Channel.php:549 msgid "Firefox Share $Projectname provider" msgstr "$Projectname-Provider für Firefox Share" -#: ../../Zotlabs/Module/Settings/Channel.php:547 +#: ../../Zotlabs/Module/Settings/Channel.php:550 msgid "Start calendar week on monday" msgstr "Montag als erster Tag der Kalenderwoche" -#: ../../Zotlabs/Module/Settings/Featured.php:24 -msgid "No feature settings configured" -msgstr "Keine Funktions-Einstellungen konfiguriert" - -#: ../../Zotlabs/Module/Settings/Featured.php:31 -msgid "Feature/Addon Settings" -msgstr "Funktions-/Addon-Einstellungen" - #: ../../Zotlabs/Module/Settings/Display.php:137 msgid "No special theme for mobile devices" msgstr "Keine spezielle Theme für mobile Geräte" @@ -6709,6 +6591,14 @@ msgstr "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick verg msgid "Grid page max height of content (in pixels)" msgstr "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite" +#: ../../Zotlabs/Module/Settings/Featured.php:24 +msgid "No feature settings configured" +msgstr "Keine Funktions-Einstellungen konfiguriert" + +#: ../../Zotlabs/Module/Settings/Featured.php:31 +msgid "Feature/Addon Settings" +msgstr "Funktions-/Addon-Einstellungen" + #: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 msgid "Tag removed" msgstr "Schlagwort entfernt" @@ -6778,13 +6668,78 @@ msgstr "URL eines Fotos der Sache (optional)" msgid "Add Thing to your Profile" msgstr "Die Sache Deinem Profil hinzufügen" -#: ../../Zotlabs/Module/Cal.php:69 -msgid "Permissions denied." -msgstr "Berechtigung verweigert." +#: ../../Zotlabs/Module/Import.php:33 +#, php-format +msgid "Your service plan only allows %d channels." +msgstr "Dein Vertrag erlaubt nur %d Kanäle." -#: ../../Zotlabs/Module/Cal.php:337 ../../include/text.php:2335 -msgid "Import" -msgstr "Import" +#: ../../Zotlabs/Module/Import.php:157 ../../include/import.php:100 +msgid "Cloned channel not found. Import failed." +msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen." + +#: ../../Zotlabs/Module/Import.php:167 +msgid "No channel. Import failed." +msgstr "Kein Kanal. Import fehlgeschlagen." + +#: ../../Zotlabs/Module/Import.php:503 +#: ../../include/Import/import_diaspora.php:142 +msgid "Import completed." +msgstr "Import abgeschlossen." + +#: ../../Zotlabs/Module/Import.php:525 +msgid "You must be logged in to use this feature." +msgstr "Du musst angemeldet sein um diese Funktion zu nutzen." + +#: ../../Zotlabs/Module/Import.php:530 +msgid "Import Channel" +msgstr "Kanal importieren" + +#: ../../Zotlabs/Module/Import.php:531 +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 "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren." + +#: ../../Zotlabs/Module/Import.php:533 +msgid "Or provide the old server/hub details" +msgstr "Oder gib die Details Deines bisherigen $Projectname-Hubs ein" + +#: ../../Zotlabs/Module/Import.php:534 +msgid "Your old identity address (xyz@example.com)" +msgstr "Bisherige Kanal-Adresse (xyz@example.com)" + +#: ../../Zotlabs/Module/Import.php:535 +msgid "Your old login email address" +msgstr "Deine alte Login-E-Mail-Adresse" + +#: ../../Zotlabs/Module/Import.php:536 +msgid "Your old login password" +msgstr "Dein altes Passwort" + +#: ../../Zotlabs/Module/Import.php:537 +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 "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige $Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein." + +#: ../../Zotlabs/Module/Import.php:538 +msgid "Make this hub my primary location" +msgstr "Dieser $Pojectname-Hub ist mein primärer Hub." + +#: ../../Zotlabs/Module/Import.php:539 +msgid "" +"Import existing posts if possible (experimental - limited by available " +"memory" +msgstr "Importiere bestehende Beiträge falls möglich (experimentell - begrenzt durch zur Verfügung stehenden Speicher" + +#: ../../Zotlabs/Module/Import.php:540 +msgid "" +"This process may take several minutes to complete. Please submit the form " +"only once and leave this page open until finished." +msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen." #: ../../Zotlabs/Module/Viewconnections.php:65 msgid "No connections." @@ -6864,21 +6819,133 @@ msgstr "Xchan-Suche" msgid "Lookup xchan beginning with (or webbie): " msgstr "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:" -#: ../../Zotlabs/Module/Match.php:26 -msgid "Profile Match" -msgstr "Profil-Übereinstimmungen" +#: ../../Zotlabs/Module/Events.php:25 +msgid "Calendar entries imported." +msgstr "Kalendereinträge wurden importiert." -#: ../../Zotlabs/Module/Match.php:35 -msgid "No keywords to match. Please add keywords to your default profile." -msgstr "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu." +#: ../../Zotlabs/Module/Events.php:27 +msgid "No calendar entries found." +msgstr "Keine Kalendereinträge gefunden." -#: ../../Zotlabs/Module/Match.php:67 -msgid "is interested in:" -msgstr "interessiert sich für:" +#: ../../Zotlabs/Module/Events.php:106 +msgid "Event can not end before it has started." +msgstr "Termin-Ende liegt vor dem Beginn." -#: ../../Zotlabs/Module/Match.php:74 -msgid "No matches" -msgstr "Keine Übereinstimmungen" +#: ../../Zotlabs/Module/Events.php:108 ../../Zotlabs/Module/Events.php:117 +#: ../../Zotlabs/Module/Events.php:139 +msgid "Unable to generate preview." +msgstr "Vorschau konnte nicht erzeugt werden." + +#: ../../Zotlabs/Module/Events.php:115 +msgid "Event title and start time are required." +msgstr "Titel und Startzeit des Termins sind erforderlich." + +#: ../../Zotlabs/Module/Events.php:137 ../../Zotlabs/Module/Events.php:261 +msgid "Event not found." +msgstr "Termin nicht gefunden." + +#: ../../Zotlabs/Module/Events.php:453 +msgid "Edit event title" +msgstr "Termintitel bearbeiten" + +#: ../../Zotlabs/Module/Events.php:453 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:835 +msgid "Event title" +msgstr "Termintitel" + +#: ../../Zotlabs/Module/Events.php:455 +msgid "Categories (comma-separated list)" +msgstr "Kategorien (Kommagetrennte Liste)" + +#: ../../Zotlabs/Module/Events.php:456 +msgid "Edit Category" +msgstr "Kategorie bearbeiten" + +#: ../../Zotlabs/Module/Events.php:456 +msgid "Category" +msgstr "Kategorie" + +#: ../../Zotlabs/Module/Events.php:459 +msgid "Edit start date and time" +msgstr "Startdatum und -zeit bearbeiten" + +#: ../../Zotlabs/Module/Events.php:459 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 +msgid "Start date and time" +msgstr "Startdatum und -zeit" + +#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:463 +msgid "Finish date and time are not known or not relevant" +msgstr "Enddatum und -zeit sind unbekannt oder irrelevant" + +#: ../../Zotlabs/Module/Events.php:462 +msgid "Edit finish date and time" +msgstr "Enddatum und -zeit bearbeiten" + +#: ../../Zotlabs/Module/Events.php:462 +msgid "Finish date and time" +msgstr "Enddatum und -zeit" + +#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Events.php:465 +msgid "Adjust for viewer timezone" +msgstr "An die Zeitzone des Betrachters anpassen" + +#: ../../Zotlabs/Module/Events.php:464 +msgid "" +"Important for events that happen in a particular place. Not practical for " +"global holidays." +msgstr "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien." + +#: ../../Zotlabs/Module/Events.php:466 +msgid "Edit Description" +msgstr "Beschreibung bearbeiten" + +#: ../../Zotlabs/Module/Events.php:468 +msgid "Edit Location" +msgstr "Ort bearbeiten" + +#: ../../Zotlabs/Module/Events.php:472 ../../include/conversation.php:1280 +msgid "Permission settings" +msgstr "Berechtigungs-Einstellungen" + +#: ../../Zotlabs/Module/Events.php:485 +msgid "Advanced Options" +msgstr "Weitere Optionen" + +#: ../../Zotlabs/Module/Events.php:624 +msgid "Edit event" +msgstr "Termin bearbeiten" + +#: ../../Zotlabs/Module/Events.php:626 +msgid "Delete event" +msgstr "Termin löschen" + +#: ../../Zotlabs/Module/Events.php:660 +msgid "calendar" +msgstr "Kalender" + +#: ../../Zotlabs/Module/Events.php:686 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:849 +msgid "Month" +msgstr "Monat" + +#: ../../Zotlabs/Module/Events.php:687 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:850 +msgid "Week" +msgstr "Woche" + +#: ../../Zotlabs/Module/Events.php:688 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:851 +msgid "Day" +msgstr "Tag" + +#: ../../Zotlabs/Module/Events.php:722 +msgid "Event removed" +msgstr "Termin gelöscht" + +#: ../../Zotlabs/Module/Events.php:725 +msgid "Failed to remove event" +msgstr "Termin konnte nicht gelöscht werden" #: ../../Zotlabs/Lib/Chatroom.php:27 msgid "Missing room name" @@ -6905,8 +6972,9 @@ msgid "Site Admin" msgstr "Hub-Administration" #: ../../Zotlabs/Lib/Apps.php:206 -msgid "Bug Report" -msgstr "Fehler-Rückmeldung" +#: ../../extend/addon/addon/buglink/buglink.php:16 +msgid "Report Bug" +msgstr "Fehler melden" #: ../../Zotlabs/Lib/Apps.php:207 msgid "View Bookmarks" @@ -6929,28 +6997,33 @@ msgid "Suggest Channels" msgstr "Kanäle vorschlagen" #: ../../Zotlabs/Lib/Apps.php:213 ../../include/nav.php:115 -#: ../../boot.php:1715 +#: ../../boot.php:1719 msgid "Login" msgstr "Anmelden" -#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:184 +#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:182 msgid "Grid" msgstr "Grid" -#: ../../Zotlabs/Lib/Apps.php:220 ../../include/nav.php:187 +#: ../../Zotlabs/Lib/Apps.php:219 ../../include/features.php:99 +#: ../../include/conversation.php:1758 +msgid "Wiki" +msgstr "Wiki" + +#: ../../Zotlabs/Lib/Apps.php:220 ../../include/nav.php:185 msgid "Channel Home" msgstr "Mein Kanal" -#: ../../Zotlabs/Lib/Apps.php:223 ../../include/nav.php:206 -#: ../../include/conversation.php:1710 ../../include/conversation.php:1713 +#: ../../Zotlabs/Lib/Apps.php:223 ../../include/nav.php:204 +#: ../../include/conversation.php:1709 ../../include/conversation.php:1712 msgid "Events" msgstr "Termine" -#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:172 +#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:170 msgid "Directory" msgstr "Verzeichnis" -#: ../../Zotlabs/Lib/Apps.php:226 ../../include/nav.php:198 +#: ../../Zotlabs/Lib/Apps.php:226 ../../include/nav.php:196 msgid "Mail" msgstr "Mail" @@ -6974,7 +7047,7 @@ msgstr "Zufälliger Kanal" msgid "Invite" msgstr "Einladen" -#: ../../Zotlabs/Lib/Apps.php:235 ../../include/widgets.php:1563 +#: ../../Zotlabs/Lib/Apps.php:235 ../../include/widgets.php:1635 msgid "Features" msgstr "Funktionen" @@ -6998,6 +7071,69 @@ msgstr "Profilfoto" msgid "Purchase" msgstr "Kaufen" +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +#: ../../include/acl_selectors.php:128 +msgid "Visible to your default audience" +msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen" + +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +#: ../../include/acl_selectors.php:191 +msgid "Only me" +msgstr "Nur ich" + +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" +msgstr "Öffentlich" + +#: ../../Zotlabs/Lib/PermissionDescription.php:109 +msgid "Anybody in the $Projectname network" +msgstr "Jeder innerhalb des $Projectname Netzwerks" + +#: ../../Zotlabs/Lib/PermissionDescription.php:110 +#, php-format +msgid "Any account on %s" +msgstr "Jedes Nutzerkonto auf %s" + +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" +msgstr "Alle meine Verbindungen" + +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" +msgstr "Nur Verbindungen, denen ich es explizit erlaube" + +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" +msgstr "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)" + +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" +msgstr "Alle Verbindungen einschließlich der noch nicht bestätigten" + +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." +msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)." + +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" +msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils." + +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" +msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen." + +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" +msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos." + +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" +msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten." + #: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:683 msgid "Private Message" msgstr "Private Nachricht" @@ -7211,257 +7347,194 @@ msgstr "Danke." msgid "%s Administrator" msgstr "der Administrator von %s" -#: ../../Zotlabs/Lib/Enotify.php:112 +#: ../../Zotlabs/Lib/Enotify.php:116 #, php-format msgid "%s <!item_type!>" msgstr "%s <!item_type!>" -#: ../../Zotlabs/Lib/Enotify.php:116 +#: ../../Zotlabs/Lib/Enotify.php:120 #, php-format msgid "[$Projectname:Notify] New mail received at %s" msgstr "[$Projectname:Benachrichtigung] Neue Mail empfangen auf %s" -#: ../../Zotlabs/Lib/Enotify.php:118 +#: ../../Zotlabs/Lib/Enotify.php:122 #, php-format msgid "%1$s, %2$s sent you a new private message at %3$s." msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet." -#: ../../Zotlabs/Lib/Enotify.php:119 +#: ../../Zotlabs/Lib/Enotify.php:123 #, php-format msgid "%1$s sent you %2$s." msgstr "%1$s hat Dir %2$s geschickt." -#: ../../Zotlabs/Lib/Enotify.php:119 +#: ../../Zotlabs/Lib/Enotify.php:123 msgid "a private message" msgstr "eine private Nachricht" -#: ../../Zotlabs/Lib/Enotify.php:120 +#: ../../Zotlabs/Lib/Enotify.php:124 #, php-format msgid "Please visit %s to view and/or reply to your private messages." msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten." -#: ../../Zotlabs/Lib/Enotify.php:179 +#: ../../Zotlabs/Lib/Enotify.php:183 #, php-format msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" msgstr "%1$s, %2$s hat [zrl=%3$s]einen %4$s[/zrl] kommentiert" -#: ../../Zotlabs/Lib/Enotify.php:187 +#: ../../Zotlabs/Lib/Enotify.php:191 #, php-format msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "%1$s, %2$s hat [zrl=%3$s]%4$ss %5$s[/zrl] kommentiert" -#: ../../Zotlabs/Lib/Enotify.php:196 +#: ../../Zotlabs/Lib/Enotify.php:200 #, php-format msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen %4$s[/zrl] kommentiert" -#: ../../Zotlabs/Lib/Enotify.php:207 +#: ../../Zotlabs/Lib/Enotify.php:211 #, php-format msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s" -#: ../../Zotlabs/Lib/Enotify.php:208 +#: ../../Zotlabs/Lib/Enotify.php:212 #, php-format msgid "%1$s, %2$s commented on an item/conversation you have been following." msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst." -#: ../../Zotlabs/Lib/Enotify.php:211 ../../Zotlabs/Lib/Enotify.php:226 -#: ../../Zotlabs/Lib/Enotify.php:252 ../../Zotlabs/Lib/Enotify.php:270 -#: ../../Zotlabs/Lib/Enotify.php:284 +#: ../../Zotlabs/Lib/Enotify.php:215 ../../Zotlabs/Lib/Enotify.php:230 +#: ../../Zotlabs/Lib/Enotify.php:256 ../../Zotlabs/Lib/Enotify.php:274 +#: ../../Zotlabs/Lib/Enotify.php:288 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren." -#: ../../Zotlabs/Lib/Enotify.php:217 +#: ../../Zotlabs/Lib/Enotify.php:221 #, php-format msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "[$Projectname:Benachrichtigung] %s schrieb auf Deine Pinnwand" -#: ../../Zotlabs/Lib/Enotify.php:219 +#: ../../Zotlabs/Lib/Enotify.php:223 #, php-format msgid "%1$s, %2$s posted to your profile wall at %3$s" msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben" -#: ../../Zotlabs/Lib/Enotify.php:221 +#: ../../Zotlabs/Lib/Enotify.php:225 #, php-format msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]" msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben" -#: ../../Zotlabs/Lib/Enotify.php:245 +#: ../../Zotlabs/Lib/Enotify.php:249 #, php-format msgid "[$Projectname:Notify] %s tagged you" msgstr "[$Projectname:Benachrichtigung] %s hat Dich erwähnt" -#: ../../Zotlabs/Lib/Enotify.php:246 +#: ../../Zotlabs/Lib/Enotify.php:250 #, php-format msgid "%1$s, %2$s tagged you at %3$s" msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt" -#: ../../Zotlabs/Lib/Enotify.php:247 +#: ../../Zotlabs/Lib/Enotify.php:251 #, php-format msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]." msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:259 +#: ../../Zotlabs/Lib/Enotify.php:263 #, php-format msgid "[$Projectname:Notify] %1$s poked you" msgstr "[$Projectname:Benachrichtigung] %1$s hat Dich angestupst" -#: ../../Zotlabs/Lib/Enotify.php:260 +#: ../../Zotlabs/Lib/Enotify.php:264 #, php-format msgid "%1$s, %2$s poked you at %3$s" msgstr "%1$s, %2$s hat Dich auf %3$s angestupst" -#: ../../Zotlabs/Lib/Enotify.php:261 +#: ../../Zotlabs/Lib/Enotify.php:265 #, php-format msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]." msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:277 +#: ../../Zotlabs/Lib/Enotify.php:281 #, php-format msgid "[$Projectname:Notify] %s tagged your post" msgstr "[$Projectname:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet" -#: ../../Zotlabs/Lib/Enotify.php:278 +#: ../../Zotlabs/Lib/Enotify.php:282 #, php-format msgid "%1$s, %2$s tagged your post at %3$s" msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet" -#: ../../Zotlabs/Lib/Enotify.php:279 +#: ../../Zotlabs/Lib/Enotify.php:283 #, php-format msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]" msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet" -#: ../../Zotlabs/Lib/Enotify.php:291 +#: ../../Zotlabs/Lib/Enotify.php:295 msgid "[$Projectname:Notify] Introduction received" msgstr "[$Projectname:Benachrichtigung] Verbindungsanfrage erhalten" -#: ../../Zotlabs/Lib/Enotify.php:292 +#: ../../Zotlabs/Lib/Enotify.php:296 #, php-format msgid "%1$s, you've received an new connection request from '%2$s' at %3$s" msgstr "%1$s, Du hast eine neue Verbindungsanfrage von '%2$s' auf %3$s erhalten" -#: ../../Zotlabs/Lib/Enotify.php:293 +#: ../../Zotlabs/Lib/Enotify.php:297 #, php-format msgid "" "%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s." msgstr "%1$s, Du hast [zrl=%2$s]eine neue Verbindungsanfrage[/zrl] von %3$s erhalten." -#: ../../Zotlabs/Lib/Enotify.php:297 ../../Zotlabs/Lib/Enotify.php:316 +#: ../../Zotlabs/Lib/Enotify.php:301 ../../Zotlabs/Lib/Enotify.php:320 #, php-format msgid "You may visit their profile at %s" msgstr "Du kannst Dir das Profil unter %s ansehen" -#: ../../Zotlabs/Lib/Enotify.php:299 +#: ../../Zotlabs/Lib/Enotify.php:303 #, php-format msgid "Please visit %s to approve or reject the connection request." msgstr "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen." -#: ../../Zotlabs/Lib/Enotify.php:306 +#: ../../Zotlabs/Lib/Enotify.php:310 msgid "[$Projectname:Notify] Friend suggestion received" msgstr "[$Projectname:Benachrichtigung] Freundschaftsvorschlag erhalten" -#: ../../Zotlabs/Lib/Enotify.php:307 +#: ../../Zotlabs/Lib/Enotify.php:311 #, php-format msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s" msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten" -#: ../../Zotlabs/Lib/Enotify.php:308 +#: ../../Zotlabs/Lib/Enotify.php:312 #, php-format msgid "" "%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from " "%4$s." msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten." -#: ../../Zotlabs/Lib/Enotify.php:314 +#: ../../Zotlabs/Lib/Enotify.php:318 msgid "Name:" msgstr "Name:" -#: ../../Zotlabs/Lib/Enotify.php:315 +#: ../../Zotlabs/Lib/Enotify.php:319 msgid "Photo:" msgstr "Foto:" -#: ../../Zotlabs/Lib/Enotify.php:318 +#: ../../Zotlabs/Lib/Enotify.php:322 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen." -#: ../../Zotlabs/Lib/Enotify.php:536 +#: ../../Zotlabs/Lib/Enotify.php:540 msgid "[$Projectname:Notify]" msgstr "[$Projectname:Benachrichtigung]" -#: ../../Zotlabs/Lib/Enotify.php:696 +#: ../../Zotlabs/Lib/Enotify.php:700 msgid "created a new post" msgstr "Neuer Beitrag wurde erzeugt" -#: ../../Zotlabs/Lib/Enotify.php:697 +#: ../../Zotlabs/Lib/Enotify.php:701 #, php-format msgid "commented on %s's post" msgstr "hat %s's Beitrag kommentiert" -#: ../../Zotlabs/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:128 -msgid "Visible to your default audience" -msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen" - -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:191 -msgid "Only me" -msgstr "Nur ich" - -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" -msgstr "Öffentlich" - -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" -msgstr "Jeder innerhalb des $Projectname Netzwerks" - -#: ../../Zotlabs/Lib/PermissionDescription.php:110 -#, php-format -msgid "Any account on %s" -msgstr "Jedes Nutzerkonto auf %s" - -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" -msgstr "Alle meine Verbindungen" - -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" -msgstr "Nur Verbindungen, denen ich es explizit erlaube" - -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Anybody authenticated (could include visitors from other networks)" -msgstr "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)" - -#: ../../Zotlabs/Lib/PermissionDescription.php:114 -msgid "Any connections including those who haven't yet been approved" -msgstr "Alle Verbindungen einschließlich der noch nicht bestätigten" - -#: ../../Zotlabs/Lib/PermissionDescription.php:150 -msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." -msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)." - -#: ../../Zotlabs/Lib/PermissionDescription.php:151 -msgid "" -"This is your default setting for who can view your default channel profile" -msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils." - -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "This is your default setting for who can view your connections" -msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen." - -#: ../../Zotlabs/Lib/PermissionDescription.php:153 -msgid "" -"This is your default setting for who can view your file storage and photos" -msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos." - -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for the audience of your webpages" -msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten." - #: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:24 msgid "Flag Adult Photos" msgstr "Nicht jugendfreie Fotos markieren" @@ -7472,10 +7545,6 @@ msgid "" "view" msgstr "Stellt eine Option zum Verstecken von Fotos mit unangemessenen Inhalten in der Standard-Albumansicht bereit" -#: ../../extend/addon/addon/buglink/buglink.php:16 -msgid "Report Bug" -msgstr "Fehler melden" - #: ../../extend/addon/addon/chords/Mod_Chords.php:44 msgid "" "This is a fairly comprehensive and complete guitar chord dictionary which " @@ -7496,53 +7565,53 @@ msgstr "" msgid "" "Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " "E7b13b11 ..." -msgstr "" +msgstr "Einige gültige Beispiele: A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." #: ../../extend/addon/addon/chords/Mod_Chords.php:51 msgid "Guitar Chords" -msgstr "" +msgstr "Gitarrenakkorde" #: ../../extend/addon/addon/chords/Mod_Chords.php:52 msgid "The complete online chord dictionary" -msgstr "" +msgstr "Das komplette online Akkord-Verzeichnis" #: ../../extend/addon/addon/chords/Mod_Chords.php:57 msgid "Tuning" -msgstr "" +msgstr "Stimmen" #: ../../extend/addon/addon/chords/Mod_Chords.php:58 msgid "Chord name: example: Em7" -msgstr "" +msgstr "Beispiel Akkord Name: Em7" #: ../../extend/addon/addon/chords/Mod_Chords.php:59 msgid "Show for left handed stringing" -msgstr "" +msgstr "Linkshänder-Besaitung anzeigen" #: ../../extend/addon/addon/chords/chords.php:33 msgid "Quick Reference" msgstr "Schnellreferenz" -#: ../../extend/addon/addon/diaspora/diaspora.php:667 +#: ../../extend/addon/addon/diaspora/diaspora.php:671 msgid "Diaspora Protocol Settings updated." msgstr "Diaspora-Protokolleinstellungen aktualisiert." -#: ../../extend/addon/addon/diaspora/diaspora.php:685 +#: ../../extend/addon/addon/diaspora/diaspora.php:692 msgid "Enable the Diaspora protocol for this channel" msgstr "Diaspora-Protokoll für diesen Kanal aktivieren" -#: ../../extend/addon/addon/diaspora/diaspora.php:689 +#: ../../extend/addon/addon/diaspora/diaspora.php:696 msgid "Allow any Diaspora member to comment on your public posts" msgstr "Jedem Diaspora-Mitglied erlauben, Deine öffentlichen Beiträge zu kommentieren" -#: ../../extend/addon/addon/diaspora/diaspora.php:693 +#: ../../extend/addon/addon/diaspora/diaspora.php:700 msgid "Prevent your hashtags from being redirected to other sites" -msgstr "" +msgstr "Verhindern, dass Deine hashtags zu anderen Seiten umgeleitet werden" -#: ../../extend/addon/addon/diaspora/diaspora.php:698 +#: ../../extend/addon/addon/diaspora/diaspora.php:705 msgid "Followed hashtags (comma separated, do not include the #)" -msgstr "" +msgstr "Verfolgte Hashtags (Komma separierte Liste, ohne die #)" -#: ../../extend/addon/addon/diaspora/diaspora.php:703 +#: ../../extend/addon/addon/diaspora/diaspora.php:710 msgid "Diaspora Protocol Settings" msgstr "Diaspora-Protokolleinstellungen" @@ -7615,39 +7684,39 @@ msgstr "Projektersteller und Technischer Leiter" #: ../../extend/addon/addon/donate/donate.php:23 msgid "Admin, developer, directorymin, support bloke" -msgstr "" +msgstr "Administrator, Entwickler, Verzeichnis Betreibender, Supportleistende" #: ../../extend/addon/addon/donate/donate.php:50 msgid "" "And the hundreds of other people and organisations who helped make the " "Hubzilla possible." -msgstr "" +msgstr "Und die hunderte anderen Menschen und Organisationen, die geholfen haben Hubzilla möglich zu machen." #: ../../extend/addon/addon/donate/donate.php:53 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 "" +msgstr "Die Redmatrix/Hubzilla Projekte werden hauptsächlich von Freiwilligen bereitgestellt, die ihre Zeit und Expertise zur Verfügung stellen - und oft aus eigener Tasche für die Dienste zahlen, die sie mit anderen teilen." #: ../../extend/addon/addon/donate/donate.php:54 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 "" +msgstr "Es gibt keine Finanzierung durch Firmen, keine Werbung und wir verkaufen Deine persönlichen Daten nicht. (Wir kontrollieren Deine persönlichen Daten nicht - <strong>das machst Du</strong>.)" #: ../../extend/addon/addon/donate/donate.php:55 msgid "" "Help support our ground-breaking work in decentralisation, web identity, and" " privacy." -msgstr "" +msgstr "Hilf uns bei unserer wegweisenden Arbeit im Bereich der Dezantralisation, von Web-Identitäten und Privatsphäre." #: ../../extend/addon/addon/donate/donate.php:57 msgid "" "Your donations keep servers and services running and also helps us to " "provide innovative new features and continued development." -msgstr "" +msgstr "Die Spenden werden dafür verwendet Server und Dienste am laufen zu halten und helfen desweiteren innovative Neuerungen zu schaffen und die Entwicklung voran zu treiben." #: ../../extend/addon/addon/donate/donate.php:60 msgid "Donate" @@ -7657,7 +7726,7 @@ msgstr "Spenden" msgid "" "Choose a project, developer, or public hub to support with a one-time " "donation" -msgstr "" +msgstr "Wähle ein Projekt, einen Entwickler oder einen öffentlichen Hub den du mit einer einmaligen Spende unterstützen willst." #: ../../extend/addon/addon/donate/donate.php:63 msgid "Donate Now" @@ -7667,13 +7736,13 @@ msgstr "Jetzt spenden" msgid "" "<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project " "only)" -msgstr "" +msgstr "<strong><em>Oder</em></strong> werde ein Unterstützer des Projekts (ausschließlich Hubzilla)" #: ../../extend/addon/addon/donate/donate.php:65 msgid "" "Please indicate if you would like your first name or full name (or nothing) " "to appear in our sponsor listing" -msgstr "" +msgstr "Bitte teile uns mit ob dein kompletter Name oder dein Vorname (oder gar nichts) auf unserer Sponsoren-Seite veröffentlicht werden soll." #: ../../extend/addon/addon/donate/donate.php:66 msgid "Sponsor" @@ -7685,11 +7754,11 @@ msgstr "Besonderer Dank an: " #: ../../extend/addon/addon/dwpost/dwpost.php:42 msgid "Post to Dreamwidth" -msgstr "" +msgstr "Bei Dreamwidth veröffentlichen" #: ../../extend/addon/addon/dwpost/dwpost.php:73 msgid "Enable Dreamwidth Post Plugin" -msgstr "" +msgstr "Aktiviere das Dreamwidth-Plugin" #: ../../extend/addon/addon/dwpost/dwpost.php:77 msgid "Dreamwidth username" @@ -7701,7 +7770,7 @@ msgstr "Dreamwidth-Passwort" #: ../../extend/addon/addon/dwpost/dwpost.php:85 msgid "Post to Dreamwidth by default" -msgstr "" +msgstr "Standardmäßig auf auf Dreamwidth posten" #: ../../extend/addon/addon/dwpost/dwpost.php:89 msgid "Dreamwidth Post Settings" @@ -7709,35 +7778,35 @@ msgstr "Dreamwidth-Beitragseinstellungen" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:45 msgid "Flattr this!" -msgstr "" +msgstr "Flattr this!" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:83 msgid "Flattr widget settings updated." -msgstr "" +msgstr "Flattr Widget Einstellungen aktualisiert" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:100 msgid "Flattr user" -msgstr "" +msgstr "Flattr Nutzer" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:104 msgid "URL of the Thing to flattr" -msgstr "" +msgstr "URL des Dings zum flattrn" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:104 msgid "If empty channel URL is used" -msgstr "" +msgstr "Falls leer wird die Channel URL verwendet" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:108 msgid "Title of the Thing to flattr" -msgstr "" +msgstr "Titel des Dings zum flattrn" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:108 msgid "If empty \"channel name on The Hubzilla\" will be used" -msgstr "" +msgstr "Falls leer wird \"Kanalname auf The Hubzilla\" verwendet" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 msgid "Static or dynamic flattr button" -msgstr "" +msgstr "Statischer oder dynamischer Flattr Button" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 msgid "static" @@ -7749,7 +7818,7 @@ msgstr "dynamisch" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 msgid "Alignment of the widget" -msgstr "" +msgstr "Ausrichtung des Widgets" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 msgid "left" @@ -7761,11 +7830,11 @@ msgstr "rechts" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 msgid "Enable Flattr widget" -msgstr "" +msgstr "Flattr Widget verwenden" #: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 msgid "Flattr Widget Settings" -msgstr "" +msgstr "Flattr Widget Einstellungen" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:118 msgid "Contact not found." @@ -7775,16 +7844,16 @@ msgstr "Kontakt nicht gefunden." msgid "" "This may occasionally happen if contact was requested by both persons and it" " has already been approved." -msgstr "" +msgstr "Dies kann unter Umständen passieren, wenn der Kontakt von beiden Seiten aus angefragt wurde und er bereits akzeptiert wurde.." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:238 msgid "Response from remote site was not understood." -msgstr "" +msgstr "Antwort des entfernten Seite war unverständlich." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:247 #: ../../extend/addon/addon/friendica/dfrn_confirm.php:252 msgid "Unexpected response from remote site: " -msgstr "" +msgstr "Unerwartete Antwort der entfernten Seite" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:261 msgid "Confirmation completed successfully." @@ -7794,24 +7863,24 @@ msgstr "Bestätigung erfolgreich abgeschlossen." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:277 #: ../../extend/addon/addon/friendica/dfrn_confirm.php:284 msgid "Remote site reported: " -msgstr "" +msgstr "Meldung der entfernten Seite" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:275 msgid "Temporary failure. Please wait and try again." -msgstr "" +msgstr "Vorübergehende Störung. Bitte warte einen Moment und versuche es später erneut." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:282 msgid "Introduction failed or was revoked." -msgstr "" +msgstr "Vorstellung fehlgeschlagen oder wurde zurück gezogen." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:428 msgid "Unable to set contact photo." -msgstr "" +msgstr "Konnte das Kontakt-Photo nicht setzen." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:485 #, php-format msgid "%1$s is now friends with %2$s" -msgstr "" +msgstr "%1$s ist nun mit %2$s befreundet" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:570 #, php-format @@ -7820,26 +7889,26 @@ msgstr "Kein Benutzereintrag für '%s' gefunden" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:580 msgid "Our site encryption key is apparently messed up." -msgstr "" +msgstr "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend kaputt." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:591 msgid "Empty site URL was provided or URL could not be decrypted by us." -msgstr "" +msgstr "Eine leere Seiten URL wurde angegeben, oder die URL konnte von uns nicht entziffert werden." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:612 msgid "Contact record was not found for you on our site." -msgstr "" +msgstr "Für dich wurden keinerlei Kontaktdaten auf unserer Seite gefunden." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:626 #, php-format msgid "Site public key not available in contact record for URL %s." -msgstr "" +msgstr "Der öffentliche Schlüssel dieser Seite ist für die Kontaktdaten mit der URL %s nocht verfügbar." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:646 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." -msgstr "" +msgstr "Die ID, die Durch Dein System angegeben wurde ist ein Duplikat auf unserem. Es sollte funktionieren, wenn Du es noch einmal versuchst." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:657 msgid "Unable to set your contact credentials on our system." @@ -7847,12 +7916,12 @@ msgstr "" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:724 msgid "Unable to update your contact profile details on our system" -msgstr "" +msgstr "Konnte die Details deines Profils auf unserem System nicht aktualisieren." #: ../../extend/addon/addon/friendica/dfrn_confirm.php:751 #: ../../extend/addon/addon/friendica/dfrn_request.php:749 msgid "[Name Withheld]" -msgstr "" +msgstr "[Name zurück gehalten]" #: ../../extend/addon/addon/friendica/dfrn_confirm.php:796 #, php-format @@ -7867,7 +7936,7 @@ msgstr "%1$s heißt %2$s willkommen" #: ../../extend/addon/addon/friendica/dfrn_request.php:102 msgid "This introduction has already been accepted." -msgstr "" +msgstr "Die Vorstellung wurde bereits akzeptiert." #: ../../extend/addon/addon/friendica/dfrn_request.php:123 #: ../../extend/addon/addon/friendica/dfrn_request.php:528 @@ -7907,15 +7976,15 @@ msgstr "Profil nicht verfügbar." #: ../../extend/addon/addon/friendica/dfrn_request.php:277 #, php-format msgid "%s has received too many connection requests today." -msgstr "" +msgstr "%s hat heute bereits zu viele Kontaktanfragen erhalten." #: ../../extend/addon/addon/friendica/dfrn_request.php:278 msgid "Spam protection measures have been invoked." -msgstr "" +msgstr "Maßnahmen zum Spam-Schutz wurden aktiviert." #: ../../extend/addon/addon/friendica/dfrn_request.php:279 msgid "Friends are advised to please try again in 24 hours." -msgstr "" +msgstr "Freunde sollten es bitte in 24 Stunden erneut versuchen." #: ../../extend/addon/addon/friendica/dfrn_request.php:341 msgid "Invalid locator" @@ -7927,7 +7996,7 @@ msgstr "Ungültige E-Mail-Adresse." #: ../../extend/addon/addon/friendica/dfrn_request.php:377 msgid "This account has not been configured for email. Request failed." -msgstr "" +msgstr "Dieser Account wurde nicht für E-Mail konfiguriert. Anfrage gescheitert." #: ../../extend/addon/addon/friendica/dfrn_request.php:473 msgid "Unable to resolve your name at the provided location." @@ -7935,12 +8004,12 @@ msgstr "" #: ../../extend/addon/addon/friendica/dfrn_request.php:486 msgid "You have already introduced yourself here." -msgstr "" +msgstr "Du hast dich hier bereits vorgestellt." #: ../../extend/addon/addon/friendica/dfrn_request.php:490 #, php-format msgid "Apparently you are already friends with %s." -msgstr "" +msgstr "Anscheinend bist du bereits mit %s in Kontakt." #: ../../extend/addon/addon/friendica/dfrn_request.php:511 msgid "Invalid profile URL." @@ -7952,15 +8021,15 @@ msgstr "Nicht erlaubte Profil-URL." #: ../../extend/addon/addon/friendica/dfrn_request.php:587 msgid "Failed to update contact record." -msgstr "" +msgstr "Konnte den Verbindungseintrag nicht aktualisieren." #: ../../extend/addon/addon/friendica/dfrn_request.php:608 msgid "Your introduction has been sent." -msgstr "" +msgstr "Deine Vorstellung wurde gesendet." #: ../../extend/addon/addon/friendica/dfrn_request.php:662 msgid "Please login to confirm introduction." -msgstr "" +msgstr "Bitte melde dich an um die Vorstellung zu bestätigen." #: ../../extend/addon/addon/friendica/dfrn_request.php:676 msgid "" @@ -7980,18 +8049,18 @@ msgstr "Diesen Kontakt verbergen" #: ../../extend/addon/addon/friendica/dfrn_request.php:705 #, php-format msgid "Welcome home %s." -msgstr "" +msgstr "Willkommen daheim %s" #: ../../extend/addon/addon/friendica/dfrn_request.php:706 #, php-format msgid "Please confirm your introduction/connection request to %s." -msgstr "" +msgstr "Bitte bestätige deine Vorstellung/Kontaktanfrage bei %s." #: ../../extend/addon/addon/friendica/dfrn_request.php:836 msgid "" "Please enter your 'Identity Address' from one of the following supported " "communications networks:" -msgstr "" +msgstr "Bitte gib deine \"Identitäts Adresse\" von einem der folgenden unterstützten Kommunikations Netzwerke an." #: ../../extend/addon/addon/friendica/dfrn_request.php:857 #, php-format @@ -8009,7 +8078,7 @@ msgstr "Freundschafts-/Verbindungsanfrage" msgid "" "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " "testuser@identi.ca" -msgstr "" +msgstr "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" #: ../../extend/addon/addon/friendica/dfrn_request.php:864 msgid "Please answer the following:" @@ -8022,7 +8091,7 @@ msgstr "Kennt %s Sie?" #: ../../extend/addon/addon/friendica/dfrn_request.php:869 msgid "Add a personal note:" -msgstr "" +msgstr "Eine persönliche Nachricht hinterlassen:" #: ../../extend/addon/addon/friendica/dfrn_request.php:871 #: ../../include/network.php:2232 ../../include/network.php:2233 @@ -8031,7 +8100,7 @@ msgstr "Friendica" #: ../../extend/addon/addon/friendica/dfrn_request.php:872 msgid "StatusNet/Federated Social Web" -msgstr "" +msgstr "StatusNet/Föderierte Soziale Netzwerke" #: ../../extend/addon/addon/friendica/dfrn_request.php:873 #: ../../include/network.php:2238 @@ -8043,7 +8112,7 @@ msgstr "Diaspora" msgid "" " - please do not use this form. Instead, enter %s into your Diaspora search" " bar." -msgstr "" +msgstr "- bitte verwende nicht dieses Formular sondern gib %s in die Suchleiste deiner Diaspora Seite ein." #: ../../extend/addon/addon/friendica/dfrn_request.php:875 msgid "Your Identity Address:" @@ -8056,16 +8125,16 @@ msgstr "Anfrage absenden" #: ../../extend/addon/addon/friendica/friendica.php:113 #: ../../extend/addon/addon/gnusoc/gnusoc.php:114 msgid "GNU-Social Protocol Settings updated." -msgstr "" +msgstr "GNU Social Protokoll Einstellungen aktualisiert" #: ../../extend/addon/addon/friendica/friendica.php:124 msgid "Enable the (experimental) GNU-Social protocol for this channel" -msgstr "" +msgstr "GNU Social Protokoll (experimentell) für diesen Kanal aktualisieren" #: ../../extend/addon/addon/friendica/friendica.php:128 #: ../../extend/addon/addon/gnusoc/gnusoc.php:129 msgid "GNU-Social Protocol Settings" -msgstr "" +msgstr "GNU Social Protokoll Einstellungen" #: ../../extend/addon/addon/friendica/friendica.php:185 #: ../../extend/addon/addon/gnusoc/gnusoc.php:319 @@ -8084,11 +8153,11 @@ msgstr "Friendica-Fotoalbumimport" #: ../../extend/addon/addon/frphotos/frphotos.php:92 msgid "This will import all your Friendica photo albums to this Red channel." -msgstr "" +msgstr "Hiermit werden all deine Fotoalben von Friendica in diesen Hubzilla Kanal importiert." #: ../../extend/addon/addon/frphotos/frphotos.php:93 msgid "Friendica Server base URL" -msgstr "" +msgstr "BasisURL des Friendica Servers" #: ../../extend/addon/addon/frphotos/frphotos.php:94 msgid "Friendica Login Username" @@ -8100,11 +8169,11 @@ msgstr "Friendica-Anmeldepasswort" #: ../../extend/addon/addon/gnusoc/gnusoc.php:125 msgid "Enable the GNU-Social protocol for this channel" -msgstr "" +msgstr "GNU Social Protokoll für diesen Kanal aktualisieren" #: ../../extend/addon/addon/hubwall/hubwall.php:19 msgid "Send email to all members" -msgstr "" +msgstr "E-Mail an alle Mitglieder senden" #: ../../extend/addon/addon/hubwall/hubwall.php:33 #, php-format @@ -8119,32 +8188,32 @@ msgstr "Keine Empfänger gefunden." #: ../../extend/addon/addon/hubwall/hubwall.php:73 #, php-format msgid "%1$d of %2$d messages sent." -msgstr "" +msgstr "%1$d von %2$d Nachrichten gesendet." #: ../../extend/addon/addon/hubwall/hubwall.php:81 msgid "Send email to all hub members." -msgstr "" +msgstr "Eine E-Mail an alle Mitglieder dieses Hubs senden." #: ../../extend/addon/addon/hubwall/hubwall.php:92 #: ../../extend/addon/addon/mailtest/mailtest.php:96 msgid "Message subject" -msgstr "" +msgstr "Betreff der Nachricht" #: ../../extend/addon/addon/hubwall/hubwall.php:93 msgid "Sender Email address" -msgstr "" +msgstr "E-Mail Adresse des Absenders" #: ../../extend/addon/addon/hubwall/hubwall.php:94 msgid "Test mode (only send to hub administrator)" -msgstr "" +msgstr "Test Modus (nur an Hub Administratoren senden)" #: ../../extend/addon/addon/ijpost/ijpost.php:42 msgid "Post to Insanejournal" -msgstr "" +msgstr "Bei InsaneJournal veröffentlichen" #: ../../extend/addon/addon/ijpost/ijpost.php:73 msgid "Enable InsaneJournal Post Plugin" -msgstr "" +msgstr "Aktiviere das InsaneJournal Plugin" #: ../../extend/addon/addon/ijpost/ijpost.php:77 msgid "InsaneJournal username" @@ -8156,7 +8225,7 @@ msgstr "InsaneJournal-Passwort" #: ../../extend/addon/addon/ijpost/ijpost.php:85 msgid "Post to InsaneJournal by default" -msgstr "" +msgstr "Standardmäßig bei InsaneJournal veröffentlichen" #: ../../extend/addon/addon/ijpost/ijpost.php:89 msgid "InsaneJournal Post Settings" @@ -8199,11 +8268,11 @@ msgstr "Status:" #: ../../extend/addon/addon/jappixmini/jappixmini.php:309 msgid "Activate addon" -msgstr "" +msgstr "Addon aktiviren" #: ../../extend/addon/addon/jappixmini/jappixmini.php:313 msgid "Hide Jappixmini Chat-Widget from the webinterface" -msgstr "" +msgstr "Jappix Mini Chat-Widget von der Weboberfläche verbergen" #: ../../extend/addon/addon/jappixmini/jappixmini.php:318 msgid "Jabber username" @@ -8215,7 +8284,7 @@ msgstr "Jabber-Server" #: ../../extend/addon/addon/jappixmini/jappixmini.php:330 msgid "Jabber BOSH host URL" -msgstr "" +msgstr "Jabber BOSH Host URL" #: ../../extend/addon/addon/jappixmini/jappixmini.php:337 msgid "Jabber password" @@ -8237,20 +8306,20 @@ msgstr "" #: ../../extend/addon/addon/jappixmini/jappixmini.php:359 msgid "Purge internal list of jabber addresses of contacts" -msgstr "" +msgstr "Interne Liste der Jabber Adressen von Kontakten löschen" #: ../../extend/addon/addon/jappixmini/jappixmini.php:364 msgid "Configuration Help" msgstr "Konfigurationshilfe" #: ../../extend/addon/addon/jappixmini/jappixmini.php:368 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149 msgid "Add Contact" msgstr "Kontakt hinzufügen" #: ../../extend/addon/addon/jappixmini/jappixmini.php:371 msgid "Jappix Mini Settings" -msgstr "" +msgstr "Jappix Mini Einstellungen" #: ../../extend/addon/addon/js_upload/js_upload.php:44 msgid "Upload a file" @@ -8290,27 +8359,27 @@ msgstr "Ein Konto wurde für Sie erstellt." #: ../../extend/addon/addon/ldapauth/ldapauth.php:68 msgid "Authentication successful but rejected: account creation is disabled." -msgstr "" +msgstr "Authentifizierung war erfolgreich wurde aber abgewiesen! Das Anlegen von Accounts wurde deaktiviert." #: ../../extend/addon/addon/libertree/libertree.php:38 msgid "Post to Libertree" -msgstr "" +msgstr "Bei Libertree veröffentlichen" #: ../../extend/addon/addon/libertree/libertree.php:69 msgid "Enable Libertree Post Plugin" -msgstr "" +msgstr "Aktivire das Libertree-Plugin" #: ../../extend/addon/addon/libertree/libertree.php:73 msgid "Libertree API token" -msgstr "" +msgstr "Libertree API Token" #: ../../extend/addon/addon/libertree/libertree.php:77 msgid "Libertree site URL" -msgstr "" +msgstr "URL der Libertree Seite" #: ../../extend/addon/addon/libertree/libertree.php:81 msgid "Post to Libertree by default" -msgstr "" +msgstr "Standardmäßig bei Libertree veröffentlichen" #: ../../extend/addon/addon/libertree/libertree.php:85 msgid "Libertree Post Settings" @@ -8322,11 +8391,11 @@ msgstr "Libertree-Einstellungen gespeichert." #: ../../extend/addon/addon/ljpost/ljpost.php:42 msgid "Post to LiveJournal" -msgstr "" +msgstr "Bei LiveJurnal veröffentlichen" #: ../../extend/addon/addon/ljpost/ljpost.php:70 msgid "Enable LiveJournal Post Plugin" -msgstr "" +msgstr "Aktiviere das LiveJurnal Plugin" #: ../../extend/addon/addon/ljpost/ljpost.php:74 msgid "LiveJournal username" @@ -8338,7 +8407,7 @@ msgstr "LiveJournal-Passwort" #: ../../extend/addon/addon/ljpost/ljpost.php:82 msgid "Post to LiveJournal by default" -msgstr "" +msgstr "Standardmäßig bei LiveJurnal veröffentlichen" #: ../../extend/addon/addon/ljpost/ljpost.php:86 msgid "LiveJournal Post Settings" @@ -8422,7 +8491,7 @@ msgstr "mürrisch" #: ../../extend/addon/addon/moremoods/moremoods.php:29 msgid "high" -msgstr "" +msgstr "hoch" #: ../../extend/addon/addon/moremoods/moremoods.php:30 msgid "semi-conscious" @@ -8486,11 +8555,11 @@ msgstr "gebumst" #: ../../extend/addon/addon/morepokes/morepokes.php:21 msgid "patent" -msgstr "" +msgstr "Patent" #: ../../extend/addon/addon/morepokes/morepokes.php:21 msgid "patented" -msgstr "" +msgstr "patentiert" #: ../../extend/addon/addon/morepokes/morepokes.php:22 msgid "hug" @@ -8627,7 +8696,7 @@ msgstr "Einstellungen speichern" #: ../../extend/addon/addon/msgfooter/msgfooter.php:47 msgid "text to include in all outgoing posts from this site" -msgstr "" +msgstr "Test der in alle Beiträge angefügt werden soll, die von dieser Seite ausgehen" #: ../../extend/addon/addon/nofed/nofed.php:42 msgid "Federate" @@ -8635,7 +8704,7 @@ msgstr "" #: ../../extend/addon/addon/nofed/nofed.php:56 msgid "nofed Settings saved." -msgstr "" +msgstr "nofed Einstellungen gespeichert" #: ../../extend/addon/addon/nofed/nofed.php:72 msgid "Allow Federation Toggle" @@ -8685,7 +8754,7 @@ msgstr "" #: ../../extend/addon/addon/nsfw/nsfw.php:92 msgid "Not Safe For Work Settings" -msgstr "" +msgstr "Not Safe For Work Einstellungen" #: ../../extend/addon/addon/nsfw/nsfw.php:92 msgid "General Purpose Content Filter" @@ -8697,7 +8766,7 @@ msgstr "NSFW-Einstellungen gespeichert." #: ../../extend/addon/addon/nsfw/nsfw.php:207 msgid "Possible adult content" -msgstr "" +msgstr "Möglicherweise nicht jugendfreie Inhalte" #: ../../extend/addon/addon/nsfw/nsfw.php:211 #, php-format @@ -8744,7 +8813,7 @@ msgstr "Profilliste" #: ../../extend/addon/addon/openclipatar/openclipatar.php:60 msgid "Order of Preferred" -msgstr "" +msgstr "Bevorzugte Reihenfolge" #: ../../extend/addon/addon/openclipatar/openclipatar.php:60 msgid "Sort order of preferred clipart ids." @@ -8773,7 +8842,7 @@ msgstr "Meist heruntergeladene zuerst" #: ../../extend/addon/addon/openclipatar/openclipatar.php:69 msgid "Most liked first" -msgstr "" +msgstr "Beliebteste zuerst" #: ../../extend/addon/addon/openclipatar/openclipatar.php:71 msgid "Preferred IDs Message" @@ -8906,19 +8975,19 @@ msgstr "Diese Funktion erfordert Piwik >= 2.2.0" #: ../../extend/addon/addon/planets/planets.php:121 msgid "Planets Settings updated." -msgstr "" +msgstr "Planeten Einstellungen aktualisiert" #: ../../extend/addon/addon/planets/planets.php:153 msgid "Enable Planets Plugin" -msgstr "" +msgstr "Aktiviere Planeten Plugin" #: ../../extend/addon/addon/planets/planets.php:157 msgid "Planets Settings" -msgstr "" +msgstr "Planeten Einstellungen" #: ../../extend/addon/addon/pumpio/pumpio.php:148 msgid "You are now authenticated to pumpio." -msgstr "" +msgstr "Du bist nun bei pumpio authenzifiziert." #: ../../extend/addon/addon/pumpio/pumpio.php:149 msgid "return to the featured settings page" @@ -8926,7 +8995,7 @@ msgstr "" #: ../../extend/addon/addon/pumpio/pumpio.php:163 msgid "Post to Pump.io" -msgstr "" +msgstr "Bei pumpio veröffentlichen" #: ../../extend/addon/addon/pumpio/pumpio.php:198 msgid "Pump.io servername" @@ -8946,27 +9015,27 @@ msgstr "Ohne dem Servernamen" #: ../../extend/addon/addon/pumpio/pumpio.php:213 msgid "You are not authenticated to pumpio" -msgstr "" +msgstr "Du bist nicht bei pumpio authentifiziert." #: ../../extend/addon/addon/pumpio/pumpio.php:215 msgid "(Re-)Authenticate your pump.io connection" -msgstr "" +msgstr "Deine pumpio Verbindung (erneut) authentifizieren" #: ../../extend/addon/addon/pumpio/pumpio.php:219 msgid "Enable pump.io Post Plugin" -msgstr "" +msgstr "Aktiviere das pumpio-Plugin" #: ../../extend/addon/addon/pumpio/pumpio.php:223 msgid "Post to pump.io by default" -msgstr "" +msgstr "Standardmäßig bei pumpio veröffentlichen" #: ../../extend/addon/addon/pumpio/pumpio.php:227 msgid "Should posts be public" -msgstr "" +msgstr "Sollen die Beiträge öffentlich sein" #: ../../extend/addon/addon/pumpio/pumpio.php:231 msgid "Mirror all public posts" -msgstr "" +msgstr "Öffentliche Beiträge spiegeln" #: ../../extend/addon/addon/pumpio/pumpio.php:237 msgid "Pump.io Post Settings" @@ -8990,15 +9059,15 @@ msgstr "" #: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 msgid "Enable Rainbowtag" -msgstr "" +msgstr "Rainbowtag aktivieren" #: ../../extend/addon/addon/rainbowtag/rainbowtag.php:85 msgid "Rainbowtag Settings" -msgstr "" +msgstr "Rainbowtag-Einstellungen" #: ../../extend/addon/addon/rainbowtag/rainbowtag.php:101 msgid "Rainbowtag Settings saved." -msgstr "" +msgstr "Rainbowtag-Einstellungen gespeichert." #: ../../extend/addon/addon/randpost/randpost.php:97 msgid "You're welcome." @@ -9022,12 +9091,12 @@ msgstr "" #: ../../extend/addon/addon/redfiles/redfiles.php:120 msgid "This will import all your Redmatrix cloud files to this channel." -msgstr "" +msgstr "Hiermit werden alle deine Daten aus der Redmatrix Cloud in diesen Kanal importiert." #: ../../extend/addon/addon/redfiles/redfiles.php:121 #: ../../extend/addon/addon/redphotos/redphotos.php:131 msgid "Redmatrix Server base URL" -msgstr "" +msgstr "Basis-URL des Redmatrix Servers" #: ../../extend/addon/addon/redfiles/redfiles.php:122 #: ../../extend/addon/addon/redphotos/redphotos.php:132 @@ -9053,7 +9122,7 @@ msgstr "Redmatrix-Fotoalbumimport" #: ../../extend/addon/addon/redphotos/redphotos.php:130 msgid "This will import all your Redmatrix photo albums to this channel." -msgstr "" +msgstr "Hiermit werden all deine Fotoalben von Redmatrix in diesen Kanal importiert." #: ../../extend/addon/addon/redphotos/redphotos.php:134 msgid "Import just this album" @@ -9061,15 +9130,15 @@ msgstr "Nur dieses Album importieren" #: ../../extend/addon/addon/redphotos/redphotos.php:134 msgid "Leave blank to import all albums" -msgstr "" +msgstr "Leer lassen um alle Alben zu importieren" #: ../../extend/addon/addon/redphotos/redphotos.php:135 msgid "Maximum count to import" -msgstr "" +msgstr "Maximal zu importierende Anzahl" #: ../../extend/addon/addon/redphotos/redphotos.php:135 msgid "0 or blank to import all available" -msgstr "" +msgstr "0 oder leer lassen um alles zu importieren" #: ../../extend/addon/addon/redred/redred.php:45 msgid "Post to Red" @@ -9089,7 +9158,7 @@ msgstr "redred-Einstellungen gespeichert." #: ../../extend/addon/addon/redred/redred.php:95 msgid "Allow posting to another Hubzilla Channel" -msgstr "" +msgstr "Erlaube die Veröffentlichung in anderen Hubzilla Kanälen" #: ../../extend/addon/addon/redred/redred.php:99 msgid "Send public postings to Hubzilla channel by default" @@ -9123,7 +9192,7 @@ msgstr "" #: ../../extend/addon/addon/rtof/rtof.php:45 msgid "Post to Friendica" -msgstr "" +msgstr "Bei Friendica veröffentlichen" #: ../../extend/addon/addon/rtof/rtof.php:62 msgid "rtof Settings saved." @@ -9131,11 +9200,11 @@ msgstr "rtof-Einstellungen gespeichert." #: ../../extend/addon/addon/rtof/rtof.php:81 msgid "Allow posting to Friendica" -msgstr "" +msgstr "Erlaube die Veröffentlichung bei Friendica" #: ../../extend/addon/addon/rtof/rtof.php:85 msgid "Send public postings to Friendica by default" -msgstr "" +msgstr "Standardmäßig öffentliche Beiträge bei Friendica veröffentlichen" #: ../../extend/addon/addon/rtof/rtof.php:89 msgid "Friendica API Path" @@ -9189,14 +9258,14 @@ msgstr "Smileyknopf-Einstellungen" #: ../../extend/addon/addon/startpage/startpage.php:109 msgid "Page to load after login" -msgstr "" +msgstr "Seite, die nach dem Login geladen werden soll" #: ../../extend/addon/addon/startpage/startpage.php:109 msgid "" "Examples: "apps", "network?f=&gid=37" (privacy " "collection), "channel" or "notifications/system" (leave " "blank for default network page (grid)." -msgstr "" +msgstr "Beispiele: "apps", "network?f=&gid=37" (Gruppen-gefilterte Beiträge), "channel" oder "notifications/system" (freilassen für die Standard-Netzwerkseite (grid)." #: ../../extend/addon/addon/startpage/startpage.php:113 msgid "Startpage Settings" @@ -9204,25 +9273,25 @@ msgstr "Startseiteneinstellungen" #: ../../extend/addon/addon/statusnet/statusnet.php:143 msgid "Post to GNU social" -msgstr "" +msgstr "Bei GNU social veröffentlichen" #: ../../extend/addon/addon/statusnet/statusnet.php:195 msgid "" "Please contact your site administrator.<br />The provided API URL is not " "valid." -msgstr "" +msgstr "Bitte kontaktiere den Administrator deines Hubs.<br />Die angegebene API URL ist nicht korrekt." #: ../../extend/addon/addon/statusnet/statusnet.php:232 msgid "We could not contact the GNU social API with the Path you entered." -msgstr "" +msgstr "Mit dem angegebenen Pfad war es uns nicht möglich, die GNU social API zu erreichen." #: ../../extend/addon/addon/statusnet/statusnet.php:266 msgid "GNU social settings updated." -msgstr "" +msgstr "GNU social Einstellungen aktualisiert." #: ../../extend/addon/addon/statusnet/statusnet.php:310 msgid "Globally Available GNU social OAuthKeys" -msgstr "" +msgstr "Global verfügbare GNU social OAuthKeys" #: ../../extend/addon/addon/statusnet/statusnet.php:312 msgid "" @@ -9246,23 +9315,23 @@ msgstr "" #: ../../extend/addon/addon/statusnet/statusnet.php:333 msgid "OAuth Consumer Key" -msgstr "" +msgstr "OAuth Consumer Key" #: ../../extend/addon/addon/statusnet/statusnet.php:337 msgid "OAuth Consumer Secret" -msgstr "" +msgstr "OAuth Consumer Secret" #: ../../extend/addon/addon/statusnet/statusnet.php:341 msgid "Base API Path" -msgstr "" +msgstr "Basis Pfad der API" #: ../../extend/addon/addon/statusnet/statusnet.php:341 msgid "Remember the trailing /" -msgstr "" +msgstr "Denke an das abschließende /" #: ../../extend/addon/addon/statusnet/statusnet.php:345 msgid "GNU social application name" -msgstr "" +msgstr "GNU social Anwendungsname" #: ../../extend/addon/addon/statusnet/statusnet.php:368 msgid "" @@ -9274,23 +9343,23 @@ msgstr "" #: ../../extend/addon/addon/statusnet/statusnet.php:370 msgid "Log in with GNU social" -msgstr "" +msgstr "Mit GNU social anmelden" #: ../../extend/addon/addon/statusnet/statusnet.php:373 msgid "Copy the security code from GNU social here" -msgstr "" +msgstr "Kopiere den Sicherheitscode von GNU social hier her" #: ../../extend/addon/addon/statusnet/statusnet.php:383 msgid "Cancel Connection Process" -msgstr "" +msgstr "Verbindungsprozes abbrechen" #: ../../extend/addon/addon/statusnet/statusnet.php:385 msgid "Current GNU social API is" -msgstr "" +msgstr "Aktuelle GNU social API ist" #: ../../extend/addon/addon/statusnet/statusnet.php:389 msgid "Cancel GNU social Connection" -msgstr "" +msgstr "GNU social Verbindung trennen" #: ../../extend/addon/addon/statusnet/statusnet.php:401 #: ../../extend/addon/addon/twitter/twitter.php:232 @@ -9307,32 +9376,32 @@ msgstr "" #: ../../extend/addon/addon/statusnet/statusnet.php:411 msgid "Allow posting to GNU social" -msgstr "" +msgstr "Erlaube die Veröffentlichung bei GNU social" #: ../../extend/addon/addon/statusnet/statusnet.php:411 msgid "" "If enabled your public postings can be posted to the associated GNU-social " "account" -msgstr "" +msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen GNU social Account veröffentlicht werden." #: ../../extend/addon/addon/statusnet/statusnet.php:415 msgid "Post to GNU social by default" -msgstr "" +msgstr "Standardmäßig bei GNU social veröffentlichen" #: ../../extend/addon/addon/statusnet/statusnet.php:415 msgid "" "If enabled your public postings will be posted to the associated GNU-social " "account by default" -msgstr "" +msgstr "Wenn aktiv werden all deine öffentlichen Beiträge standardmäßig bei dem verbundenen GNU social Account veröffentlicht." #: ../../extend/addon/addon/statusnet/statusnet.php:424 #: ../../extend/addon/addon/twitter/twitter.php:255 msgid "Clear OAuth configuration" -msgstr "" +msgstr "OAuth Konfiguration löschen" #: ../../extend/addon/addon/statusnet/statusnet.php:432 msgid "GNU social Post Settings" -msgstr "" +msgstr "GNU social Einstellungen" #: ../../extend/addon/addon/statusnet/statusnet.php:891 msgid "API URL" @@ -9342,34 +9411,34 @@ msgstr "API-URL" msgid "Application name" msgstr "Anwendungsname" -#: ../../extend/addon/addon/superblock/superblock.php:63 -msgid "Comma separated profile URLS to block" -msgstr "" +#: ../../extend/addon/addon/superblock/superblock.php:106 +msgid "Currently blocked" +msgstr "Derzeit blockiert" + +#: ../../extend/addon/addon/superblock/superblock.php:108 +msgid "No channels currently blocked" +msgstr "Momentan sind keine Kanäle blockiert" -#: ../../extend/addon/addon/superblock/superblock.php:67 +#: ../../extend/addon/addon/superblock/superblock.php:114 msgid "\"Superblock\" Settings" msgstr "\"Superblock\"-Einstellungen" -#: ../../extend/addon/addon/superblock/superblock.php:82 -msgid "SUPERBLOCK Settings saved." -msgstr "SUPERBLOCK-Einstellungen gespeichert." - -#: ../../extend/addon/addon/superblock/superblock.php:248 +#: ../../extend/addon/addon/superblock/superblock.php:279 msgid "Block Completely" msgstr "Vollständig blockieren" -#: ../../extend/addon/addon/superblock/superblock.php:270 +#: ../../extend/addon/addon/superblock/superblock.php:326 msgid "superblock settings updated" -msgstr "" +msgstr "Superblock Einstellungen aktualisiert" #: ../../extend/addon/addon/testdrive/testdrive.php:104 #, php-format msgid "Your account on %s will expire in a few days." -msgstr "" +msgstr "Dein Account auf %s wird in ein paar Tagen ablaufen." #: ../../extend/addon/addon/testdrive/testdrive.php:105 msgid "Your $Productname test account is about to expire." -msgstr "" +msgstr "Dein $Productname Test-Account wird bald auslaufen." #: ../../extend/addon/addon/tictac/tictac.php:21 msgid "Three Dimensional Tic-Tac-Toe" @@ -9385,33 +9454,33 @@ msgstr "Neues Spiel" #: ../../extend/addon/addon/tictac/tictac.php:60 msgid "New game with handicap" -msgstr "" +msgstr "Neues Handicaü-Spiel" #: ../../extend/addon/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 "" +msgstr "3D Tic-Tac-Toe funktioniert wie das ursprüngliche Spiel, nur dass es auf mehreren Ebenen gleichzeitig gespielt wird." #: ../../extend/addon/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 "" +msgstr "In diesem Fall sind es drei Ebenen. Du gewinnst, wenn es dir gelingt drei in einer Reihe auf einer beliebigen Ebene oder diagonal über die verschiedenen Ebenen hinweg zu erreichen." #: ../../extend/addon/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 "" +msgstr "Bei einem Handicap-Spiel wird die Position im Zentrum der mittleren Ebene gesperrt, da der Spieler der dieses Feld für sich beansprucht meist einen unfairen Vorteil hat." #: ../../extend/addon/addon/tictac/tictac.php:183 msgid "You go first..." -msgstr "" +msgstr "Du darfst anfangen..." #: ../../extend/addon/addon/tictac/tictac.php:188 msgid "I'm going first this time..." -msgstr "" +msgstr "Diesmal werde ich anfangen..." #: ../../extend/addon/addon/tictac/tictac.php:194 msgid "You won!" @@ -9428,19 +9497,19 @@ msgstr "Ich habe gewonnen!" #: ../../extend/addon/addon/tour/tour.php:75 msgid "Edit your profile and change settings." -msgstr "" +msgstr "Bearbeite dein Profil und ändere die Einstellungen." #: ../../extend/addon/addon/tour/tour.php:76 msgid "Click here to see activity from your connections." -msgstr "" +msgstr "Klicke hier, um die Aktivitäten Deiner Verbindungen zu sehen." #: ../../extend/addon/addon/tour/tour.php:77 msgid "Click here to see your channel home." -msgstr "" +msgstr "Klicke hier, um Deine Kanal-Hauptseite zu sehen." #: ../../extend/addon/addon/tour/tour.php:78 msgid "You can access your private messages from here." -msgstr "" +msgstr "Hierüber kannst Du auf Deine privaten Nachrichten zugreifen." #: ../../extend/addon/addon/tour/tour.php:79 msgid "Create new events here." @@ -9450,7 +9519,7 @@ msgstr "Neue Termine hier erstellen" msgid "" "You can accept new connections and change permissions for existing ones " "here. You can also e.g. create groups of contacts." -msgstr "" +msgstr "Du kannst hier neue Verbindungen akzeptieren sowie die Einstellungen bereits vorhandener Vebindungen bearbeiten. Außerdem kannst Du Verbindungen in Gruppen zusammenfassen." #: ../../extend/addon/addon/tour/tour.php:81 msgid "System notifications will arrive here" @@ -9462,7 +9531,7 @@ msgstr "Nach Inhalt von Benutzern suchen" #: ../../extend/addon/addon/tour/tour.php:83 msgid "Browse for new contacts" -msgstr "" +msgstr "Schaue nach möglichen neuen Verbindungen." #: ../../extend/addon/addon/tour/tour.php:84 msgid "Launch installed apps" @@ -9470,110 +9539,110 @@ msgstr "Installierte Apps starten" #: ../../extend/addon/addon/tour/tour.php:85 msgid "Looking for help? Click here." -msgstr "" +msgstr "Du benötigst Hilfe? Klicke hier." #: ../../extend/addon/addon/tour/tour.php:86 msgid "" "New events have occurred in your network. Click here to see what has " "happened!" -msgstr "" +msgstr "In Deinem Netzwerk gibt es neue Ereignisse. Klicke hier, um zu sehen, was passiert ist!" #: ../../extend/addon/addon/tour/tour.php:87 msgid "You have received a new private message. Click here to see from who!" -msgstr "" +msgstr "Du hast eine neue private Nachricht erhalten. Klicke hier, um zu sehen, von wem!" #: ../../extend/addon/addon/tour/tour.php:88 msgid "There are events this week. Click here too see which!" -msgstr "" +msgstr "Es gibt neue Termine diese Woche. Klicke hier, um zu sehen, welche!" #: ../../extend/addon/addon/tour/tour.php:89 msgid "You have received a new introduction. Click here to see who!" -msgstr "" +msgstr "Du hast eine neue Verbindungsanfrage erhalten. Klicke hier, um zu sehen, wer es ist!" #: ../../extend/addon/addon/tour/tour.php:90 msgid "" "There is a new system notification. Click here to see what has happened!" -msgstr "" +msgstr "Es gibt eine neue Systembenachrichtigung. Klicke hier, um zu sehen, was passiert ist!" #: ../../extend/addon/addon/tour/tour.php:93 msgid "Click here to share text, images, videos and sound." -msgstr "" +msgstr "Klicke hier, um Texte, Bilder, Videos und Klänge zu teilen." #: ../../extend/addon/addon/tour/tour.php:94 msgid "You can write an optional title for your update (good for long posts)." -msgstr "" +msgstr "Du kannst Deinem Beitrag einen optionalen Titel geben (gut für lange Beiträge)." #: ../../extend/addon/addon/tour/tour.php:95 msgid "Entering some categories here makes it easier to find your post later." -msgstr "" +msgstr "Ein paar Kategorien hier einzugeben, macht es leichter, Deinen Beitrag später wiederzufinden." #: ../../extend/addon/addon/tour/tour.php:96 msgid "Share photos, links, location, etc." -msgstr "" +msgstr "Teile Photos, Links, Standort, usw." #: ../../extend/addon/addon/tour/tour.php:97 msgid "" "Only want to share content for a while? Make it expire at a certain date." -msgstr "" +msgstr "Du möchtest diesen Inhalt nur für eine Weile teilen? Dann lass ihn zu einem bestimmten Datum ablaufen." #: ../../extend/addon/addon/tour/tour.php:98 msgid "You can password protect content." -msgstr "" +msgstr "Du kannst Inhalte mit einem Passwort schützen." #: ../../extend/addon/addon/tour/tour.php:99 msgid "Choose who you share with." -msgstr "" +msgstr "Wähle aus, mit wem Du teilen möchtest." #: ../../extend/addon/addon/tour/tour.php:101 msgid "Click here when you are done." -msgstr "" +msgstr "Klicke hier, wenn Du fertig bist." #: ../../extend/addon/addon/tour/tour.php:104 msgid "Adjust from which channels posts should be displayed." -msgstr "" +msgstr "Lege fest, von welchen Kanälen Beiträge angezeigt werden sollen." #: ../../extend/addon/addon/tour/tour.php:105 msgid "Only show posts from channels in the specified privacy group." -msgstr "" +msgstr "Zeige nur Beträge von Kanälen, die in einer bestimmten Gruppe sind." #: ../../extend/addon/addon/tour/tour.php:109 msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)." -msgstr "" +msgstr "Finde Beiträge, die bestimmte Tags enthalten (Stichworte, die mit dem \"#\"-Symbol beginnen)." #: ../../extend/addon/addon/tour/tour.php:110 msgid "Easily find posts in given category." -msgstr "" +msgstr "Finde Beiträge in bestimmten Kategorien." #: ../../extend/addon/addon/tour/tour.php:111 msgid "Easily find posts by date." -msgstr "" +msgstr "Finde Beiträge anhand des Datums." #: ../../extend/addon/addon/tour/tour.php:112 msgid "" "Suggested users who have volounteered to be shown as suggestions, and who we" " think you might find interesting." -msgstr "" +msgstr "Vorgeschlagene Kanäle, die in ihren Einstellungen zugestimmt haben, als Vorschläge angezeigt zu werden, und die Du eventuell interessant finden könntest." #: ../../extend/addon/addon/tour/tour.php:113 msgid "Here you see channels you have connected to." -msgstr "" +msgstr "Hier siehst du die Kanäle, mit denen Du verbunden bist." #: ../../extend/addon/addon/tour/tour.php:114 msgid "Save your search so you can repeat it at a later date." -msgstr "" +msgstr "Speichere Deine Suche, so dass Du sie später leicht erneut durchführen kannst." #: ../../extend/addon/addon/tour/tour.php:117 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 "" +msgstr "Wenn Du dieses Symbol siehst, kannst Du weitgehend sicher sein, dass der Ansender dem angegebenen entspricht. Nicht immer ist es möglich, den Absender zu verifizieren, daher fehlt das Symbol mitunter. Das ist aber in der Regel kein Grund zur Sorge." #: ../../extend/addon/addon/tour/tour.php:118 msgid "" "Danger! It seems someone tried to forge a message! This message is not " "necessarily from who it says it is from!" -msgstr "" +msgstr "Vorsicht! Es kann sein, dass jemand versucht, eine Nachricht zu fälschen! Diese Nachricht muss nicht unbedingt vom angegebenen Absender stammen!" #: ../../extend/addon/addon/tour/tour.php:125 msgid "" @@ -9581,11 +9650,11 @@ msgid "" "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 "" +msgstr "Willkommen zu Hubzilla! Möchtest Du eine Tour der Benutzeroberfläche angezeigt bekommen?</p><p>Du kannst zu jeder Zeit pausieren und fortsetzen, wo Du aufgehört hast, indem Du die Seite neu lädtst, oder zu einer anderen Seite springst.</p><p>Du kannst auc durch das Drücken der Enter-Taste weitergehen." #: ../../extend/addon/addon/twitter/twitter.php:99 msgid "Post to Twitter" -msgstr "" +msgstr "Bei Twitter veröffentlichen" #: ../../extend/addon/addon/twitter/twitter.php:154 msgid "Twitter settings updated." @@ -9612,7 +9681,7 @@ msgstr "Mit Twitter anmelden" #: ../../extend/addon/addon/twitter/twitter.php:210 msgid "Copy the PIN from Twitter here" -msgstr "" +msgstr "PIN von Twitter hier her kopieren" #: ../../extend/addon/addon/twitter/twitter.php:237 msgid "" @@ -9624,23 +9693,23 @@ msgstr "" #: ../../extend/addon/addon/twitter/twitter.php:242 msgid "Allow posting to Twitter" -msgstr "" +msgstr "Erlaube die Veröffentlichung bei Twitter" #: ../../extend/addon/addon/twitter/twitter.php:242 msgid "" "If enabled your public postings can be posted to the associated Twitter " "account" -msgstr "" +msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden." #: ../../extend/addon/addon/twitter/twitter.php:246 msgid "Send public postings to Twitter by default" -msgstr "" +msgstr "Standardmäßig öffentliche Beiträge bei Twitter veröffentlichen" #: ../../extend/addon/addon/twitter/twitter.php:246 msgid "" "If enabled your public postings will be posted to the associated Twitter " "account by default" -msgstr "" +msgstr "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden." #: ../../extend/addon/addon/twitter/twitter.php:264 msgid "Twitter Post Settings" @@ -9669,16 +9738,16 @@ msgstr "PHP post_max_size (muss größer sein als upload_max_filesize):" #: ../../extend/addon/addon/visage/visage.php:93 msgid "Recent Channel/Profile Viewers" -msgstr "" +msgstr "Kürzliche Kanal/Profil Besucher" #: ../../extend/addon/addon/visage/visage.php:98 msgid "This plugin/addon has not been configured." -msgstr "" +msgstr "Dieses Plugin/Addon wurde noch nicht konfiguriert." #: ../../extend/addon/addon/visage/visage.php:99 #, php-format msgid "Please visit the Visage settings on %s" -msgstr "" +msgstr "Bitte rufe die Visage Einstellungen auf %s auf" #: ../../extend/addon/addon/visage/visage.php:99 msgid "your feature settings page" @@ -9690,7 +9759,7 @@ msgstr "Keine Einträge." #: ../../extend/addon/addon/visage/visage.php:166 msgid "Enable Visage Visitor Logging" -msgstr "" +msgstr "Aktiviere das Visage-Besucher Logging" #: ../../extend/addon/addon/visage/visage.php:170 msgid "Visage Settings" @@ -9702,11 +9771,11 @@ msgstr "Wer mag mich?" #: ../../extend/addon/addon/wppost/wppost.php:45 msgid "Post to WordPress" -msgstr "" +msgstr "Auf WordPress posten" #: ../../extend/addon/addon/wppost/wppost.php:82 msgid "Enable WordPress Post Plugin" -msgstr "" +msgstr "Aktiviere das WordPress-Plugin" #: ../../extend/addon/addon/wppost/wppost.php:86 msgid "WordPress username" @@ -9722,23 +9791,23 @@ msgstr "WordPress-API-URL" #: ../../extend/addon/addon/wppost/wppost.php:95 msgid "Typically https://your-blog.tld/xmlrpc.php" -msgstr "" +msgstr "Normalerweise https://your-blog.tld/xmlrpc.php" #: ../../extend/addon/addon/wppost/wppost.php:98 msgid "WordPress blogid" -msgstr "" +msgstr "WordPress blogid" #: ../../extend/addon/addon/wppost/wppost.php:99 msgid "For multi-user sites such as wordpress.com, otherwise leave blank" -msgstr "" +msgstr "Nötig für Mehrbenutzer Seiten wie wordpress.com, andernfalls frei lassen" #: ../../extend/addon/addon/wppost/wppost.php:105 msgid "Post to WordPress by default" -msgstr "" +msgstr "Standardmäßig auf auf WordPress posten" #: ../../extend/addon/addon/wppost/wppost.php:109 msgid "Forward comments (requires hubzilla_wp plugin)" -msgstr "" +msgstr "Kommentare weiterleiten (benötigt hubzilla_wp Plugin)" #: ../../extend/addon/addon/wppost/wppost.php:113 msgid "WordPress Post Settings" @@ -9762,7 +9831,7 @@ msgstr "Individuelle Anmeldedaten" #: ../../extend/addon/addon/xmpp/xmpp.php:64 msgid "Jabber BOSH server" -msgstr "" +msgstr "Jabber BOSH Server" #: ../../extend/addon/addon/xmpp/xmpp.php:69 msgid "XMPP Settings" @@ -9770,7 +9839,7 @@ msgstr "XMPP-Einstellungen" #: ../../extend/addon/addon/xmpp/xmpp.php:92 msgid "Jabber BOSH host" -msgstr "" +msgstr "Jabber BOSH Host" #: ../../extend/addon/addon/xmpp/xmpp.php:93 msgid "Use central userbase" @@ -9829,7 +9898,7 @@ msgstr "Kalender importieren" #: ../../extend/addon/addon/cdav/include/widgets.php:131 msgid "Select a calendar to import to" -msgstr "" +msgstr "Kalender zum Hineinimportieren auswählen" #: ../../extend/addon/addon/cdav/include/widgets.php:158 msgid "Addressbooks" @@ -9857,199 +9926,198 @@ msgstr "Adressbuch importieren" #: ../../extend/addon/addon/cdav/include/widgets.php:167 msgid "Select an addressbook to import to" +msgstr "Adressbuch zum Hineinimportieren auswählen" + +#: ../../extend/addon/addon/cdav/cdav.php:36 +msgid "Errors encountered creating database table: " msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:743 +#: ../../extend/addon/addon/cdav/cdav.php:197 +msgid "Default Calendar" +msgstr "Standardkalender" + +#: ../../extend/addon/addon/cdav/cdav.php:206 +msgid "Default Addressbook" +msgstr "Standardadressbuch" + +#: ../../extend/addon/addon/cdav/cdav.php:215 +msgid "CalDAV/CardDAV Settings saved." +msgstr "CalDAV/CardDAV-Einstellungen gespeichert." + +#: ../../extend/addon/addon/cdav/cdav.php:234 +msgid "Enable CalDAV/CardDAV Server for this channel" +msgstr "Aktiviere den CalDAV/CardDAV Server für diesen Kanal" + +#: ../../extend/addon/addon/cdav/cdav.php:237 +#, php-format +msgid "Your CalDAV resources are located at %s " +msgstr "Deine CalDAV Resourcen sind unter %s verfügbar" + +#: ../../extend/addon/addon/cdav/cdav.php:240 +#, php-format +msgid "Your CardDAV resources are located at %s " +msgstr "Deine CardDAV Ressourcen sind unter %s verfügbar" + +#: ../../extend/addon/addon/cdav/cdav.php:246 +msgid "CalDAV/CardDAV Settings" +msgstr "CalDAV/CardDAV-Einstellungen" + +#: ../../extend/addon/addon/cdav/cdav.php:270 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145 +msgid "Mobile" +msgstr "Mobil" + +#: ../../extend/addon/addon/cdav/cdav.php:271 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146 ../../include/nav.php:88 +msgid "Home" +msgstr "Home" + +#: ../../extend/addon/addon/cdav/cdav.php:272 +msgid "Home, Voice" +msgstr "Zuhause, Sprache" + +#: ../../extend/addon/addon/cdav/cdav.php:273 +msgid "Home, Fax" +msgstr "Zuhause, Fax" + +#: ../../extend/addon/addon/cdav/cdav.php:274 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147 +msgid "Work" +msgstr "Arbeit" + +#: ../../extend/addon/addon/cdav/cdav.php:275 +msgid "Work, Voice" +msgstr "Arbeit, Sprache" + +#: ../../extend/addon/addon/cdav/cdav.php:276 +msgid "Work, Fax" +msgstr "Arbeit, Fax" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 msgid "INVALID EVENT DISMISSED!" msgstr "UNGÜLTIGEN TERMIN ABGELEHNT!" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 msgid "Summary: " msgstr "Zusammenfassung:" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 msgid "Date: " msgstr "Datum:" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:747 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:754 msgid "Reason: " msgstr "Grund:" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:751 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 msgid "INVALID CARD DISMISSED!" msgstr "UNGÜLTIGE KARTE ABGELEHNT!" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 msgid "Name: " msgstr "Name: " -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:769 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:770 msgid "" "You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV " "Settings before you can use it." msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:832 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:833 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 msgid "Example: YYYY-MM-DD HH:mm" msgstr "Beispiel: JJJJ-MM-TT HH:mm" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:833 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 msgid "End date and time" msgstr "Enddatum und -zeit" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:848 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:852 msgid "List month" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:849 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:853 msgid "List week" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:850 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:854 msgid "List day" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:857 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:861 msgid "More" msgstr "Mehr" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:858 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:862 msgid "Less" msgstr "Weniger" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:859 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:863 msgid "Select calendar" msgstr "Kalender auswählen" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:861 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:865 msgid "Delete all" msgstr "Alles löschen" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:863 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:867 msgid "Sorry! Editing of recurrent events is not yet implemented." -msgstr "" +msgstr "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen ist leider noch nicht implementiert." -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1133 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137 msgid "Organisation" msgstr "Organisation" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1134 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138 #: ../../include/page_widgets.php:46 msgid "Title" msgstr "Titel" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1135 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139 msgid "Phone" msgstr "Telefon" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141 msgid "Instant messenger" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142 msgid "Website" msgstr "Webseite" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144 msgid "Note" msgstr "Hinweis" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141 -#: ../../extend/addon/addon/cdav/cdav.php:263 -msgid "Mobile" -msgstr "Mobil" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142 -#: ../../extend/addon/addon/cdav/cdav.php:264 ../../include/nav.php:88 -#: ../../include/nav.php:149 -msgid "Home" -msgstr "Home" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143 -#: ../../extend/addon/addon/cdav/cdav.php:267 -msgid "Work" -msgstr "Arbeit" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150 msgid "Add Field" msgstr "Feld hinzufügen" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155 msgid "P.O. Box" msgstr "" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156 msgid "Additional" msgstr "Zusätzlich" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1153 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157 msgid "Street" msgstr "Straße" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1158 msgid "Locality" msgstr "Ortschaft" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1159 msgid "Region" msgstr "Region" -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1160 msgid "ZIP Code" msgstr "Postleitzahl" -#: ../../extend/addon/addon/cdav/cdav.php:35 -msgid "Errors encountered creating database table: " -msgstr "" - -#: ../../extend/addon/addon/cdav/cdav.php:193 -msgid "Default Calendar" -msgstr "Standardkalender" - -#: ../../extend/addon/addon/cdav/cdav.php:202 -msgid "Default Addressbook" -msgstr "Standardadressbuch" - -#: ../../extend/addon/addon/cdav/cdav.php:211 -msgid "CalDAV/CardDAV Settings saved." -msgstr "CalDAV/CardDAV-Einstellungen gespeichert." - -#: ../../extend/addon/addon/cdav/cdav.php:227 -msgid "Enable CalDAV/CardDAV Server for this channel" -msgstr "" - -#: ../../extend/addon/addon/cdav/cdav.php:230 -#, php-format -msgid "Your CalDAV resources are located at %s " -msgstr "" - -#: ../../extend/addon/addon/cdav/cdav.php:233 -#, php-format -msgid "Your CardDAV resources are located at %s " -msgstr "" - -#: ../../extend/addon/addon/cdav/cdav.php:239 -msgid "CalDAV/CardDAV Settings" -msgstr "CalDAV/CardDAV-Einstellungen" - -#: ../../extend/addon/addon/cdav/cdav.php:265 -msgid "Home, Voice" -msgstr "Zuhause, Sprache" - -#: ../../extend/addon/addon/cdav/cdav.php:266 -msgid "Home, Fax" -msgstr "Zuhause, Fax" - -#: ../../extend/addon/addon/cdav/cdav.php:268 -msgid "Work, Voice" -msgstr "Arbeit, Sprache" - -#: ../../extend/addon/addon/cdav/cdav.php:269 -msgid "Work, Fax" -msgstr "Arbeit, Fax" - #: ../../extend/addon/addon/chess/chess.php:276 #: ../../extend/addon/addon/chess/chess.php:430 msgid "Invalid game." @@ -10062,11 +10130,11 @@ msgstr "Sie sind kein Spieler in diesem Spiel." #: ../../extend/addon/addon/chess/chess.php:315 msgid "You must be a local channel to create a game." -msgstr "" +msgstr "Um ein Spiel zu eröffnen, musst du ein lokaler Kanal sein" #: ../../extend/addon/addon/chess/chess.php:333 msgid "You must select one opponent that is not yourself." -msgstr "" +msgstr "Du musst einen Gegner wählen, der nicht du selbst ist" #: ../../extend/addon/addon/chess/chess.php:336 msgid "Creating new game..." @@ -10086,7 +10154,7 @@ msgstr "Angeforderte Kanal nicht verfügbar." #: ../../extend/addon/addon/chess/chess.php:392 msgid "You must select a local channel /chess/channelname" -msgstr "" +msgstr "Du musst einen lokalen Kanal/Schach(Kanalnamen aufwählen" #: ../../extend/addon/addon/chess/chess.php:920 msgid "Enable notifications" @@ -10094,7 +10162,7 @@ msgstr "Benachrichtigungen aktivieren" #: ../../extend/addon/addon/likebanner/likebanner.php:51 msgid "Your Webbie:" -msgstr "" +msgstr "Dein Webbie" #: ../../extend/addon/addon/likebanner/likebanner.php:54 msgid "Fontsize (px):" @@ -10106,11 +10174,11 @@ msgstr "Link:" #: ../../extend/addon/addon/likebanner/likebanner.php:70 msgid "Like us on Hubzilla" -msgstr "" +msgstr "Like us on Hubzilla" #: ../../extend/addon/addon/likebanner/likebanner.php:72 msgid "Embed:" -msgstr "" +msgstr "Einbetten" #: ../../extend/addon/addon/openid/Mod_Id.php:85 #: ../../include/selectors.php:49 ../../include/selectors.php:66 @@ -10191,12 +10259,31 @@ msgstr "Geburtsdatum" msgid "" "We encountered a problem while logging in with the OpenID you provided. " "Please check the correct spelling of the ID." -msgstr "" +msgstr "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal." #: ../../extend/addon/addon/openid/openid.php:49 msgid "The error message was:" msgstr "Die Fehlermeldung war:" +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44 +#, php-format +msgid "Reconnecting %d connections" +msgstr "Erneuere %d Verbindungen" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63 +msgid "Diaspora Reconnect" +msgstr "" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65 +msgid "" +"Use this form to re-establish Diaspora connections which were initially made" +" from a different hub." +msgstr "" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70 +msgid "Reconnect" +msgstr "Erneut verbinden" + #: ../../extend/addon/addon/mailtest/mailtest.php:19 msgid "Send test email" msgstr "Test-E-Mail senden" @@ -10207,11 +10294,11 @@ msgstr "Mail gesendet." #: ../../extend/addon/addon/mailtest/mailtest.php:68 msgid "Sending of mail failed." -msgstr "" +msgstr "Senden der E-Mail fehlgeschlagen." #: ../../extend/addon/addon/mailtest/mailtest.php:77 msgid "Mail Test" -msgstr "" +msgstr "Mail Test" #: ../../extend/addon/addon/rendezvous/rendezvous.php:57 msgid "Errors encountered deleting database table " @@ -10307,26 +10394,7 @@ msgid "" "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 "" - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44 -#, php-format -msgid "Reconnecting %d connections" -msgstr "" - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63 -msgid "Diaspora Reconnect" -msgstr "" - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65 -msgid "" -"Use this form to re-establish Diaspora connections which were initially made" -" from a different hub." -msgstr "" - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70 -msgid "Reconnect" -msgstr "" +msgstr "Erstelle ein neues Rendezvous und teile den Zugriffslink mit allen, die Du in die Gruppe einladen möchtest. Die, die den Link öffnen, werden Mitglieder des Rendezvous. Sie können die Standorte der anderen Mitglieder sehen, Marker zur Karte hinzufügen oder ihre eigenen Standorte mit der Gruppe teilen." #: ../../include/Import/import_diaspora.php:16 msgid "No username found in import file." @@ -10341,151 +10409,174 @@ msgstr "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Im msgid "Cannot locate DNS info for database server '%s'" msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden" -#: ../../include/channel.php:33 -msgid "Unable to obtain identity information from database" -msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen" - -#: ../../include/channel.php:67 -msgid "Empty name" -msgstr "Namensfeld leer" +#: ../../include/datetime.php:147 +msgid "Birthday" +msgstr "Geburtstag" -#: ../../include/channel.php:70 -msgid "Name too long" -msgstr "Name ist zu lang" +#: ../../include/datetime.php:149 +msgid "Age: " +msgstr "Alter:" -#: ../../include/channel.php:181 -msgid "No account identifier" -msgstr "Keine Account-Kennung" +#: ../../include/datetime.php:151 +msgid "YYYY-MM-DD or MM-DD" +msgstr "JJJJ-MM-TT oder MM-TT" -#: ../../include/channel.php:193 -msgid "Nickname is required." -msgstr "Spitzname ist erforderlich." +#: ../../include/datetime.php:286 ../../boot.php:2563 +msgid "never" +msgstr "Nie" -#: ../../include/channel.php:207 -msgid "Reserved nickname. Please choose another." -msgstr "Reservierter Kurzname. Bitte wähle einen anderen." +#: ../../include/datetime.php:292 +msgid "less than a second ago" +msgstr "Vor weniger als einer Sekunde" -#: ../../include/channel.php:212 -msgid "" -"Nickname has unsupported characters or is already being used on this site." -msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt." +#: ../../include/datetime.php:310 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" +msgstr "vor %1$d %2$s" -#: ../../include/channel.php:272 -msgid "Unable to retrieve created identity" -msgstr "Kann die erstellte Identität nicht empfangen" +#: ../../include/datetime.php:321 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "Jahr" +msgstr[1] "Jahre" -#: ../../include/channel.php:341 -msgid "Default Profile" -msgstr "Standard-Profil" +#: ../../include/datetime.php:324 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "Monat" +msgstr[1] "Monate" -#: ../../include/channel.php:962 -msgid "Create New Profile" -msgstr "Neues Profil erstellen" +#: ../../include/datetime.php:327 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "Woche" +msgstr[1] "Wochen" -#: ../../include/channel.php:982 -msgid "Visible to everybody" -msgstr "Für jeden sichtbar" +#: ../../include/datetime.php:330 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "Tag" +msgstr[1] "Tage" -#: ../../include/channel.php:1055 ../../include/channel.php:1174 -msgid "Gender:" -msgstr "Geschlecht:" +#: ../../include/datetime.php:333 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "Stunde" +msgstr[1] "Stunden" -#: ../../include/channel.php:1057 ../../include/channel.php:1229 -msgid "Homepage:" -msgstr "Homepage:" +#: ../../include/datetime.php:336 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "Minute" +msgstr[1] "Minuten" -#: ../../include/channel.php:1058 -msgid "Online Now" -msgstr "gerade online" +#: ../../include/datetime.php:339 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "Sekunde" +msgstr[1] "Sekunden" -#: ../../include/channel.php:1179 -msgid "Like this channel" -msgstr "Dieser Kanal gefällt mir" +#: ../../include/datetime.php:576 +#, php-format +msgid "%1$s's birthday" +msgstr "%1$ss Geburtstag" -#: ../../include/channel.php:1203 -msgid "j F, Y" -msgstr "j. F Y" +#: ../../include/datetime.php:577 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "Alles Gute zum Geburtstag, %1$s" -#: ../../include/channel.php:1204 -msgid "j F" -msgstr "j. F" +#: ../../include/account.php:35 +msgid "Not a valid email address" +msgstr "Ungültige E-Mail-Adresse" -#: ../../include/channel.php:1211 -msgid "Birthday:" -msgstr "Geburtstag:" +#: ../../include/account.php:37 +msgid "Your email domain is not among those allowed on this site" +msgstr "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt" -#: ../../include/channel.php:1224 -#, php-format -msgid "for %1$d %2$s" -msgstr "seit %1$d %2$s" +#: ../../include/account.php:43 +msgid "Your email address is already registered at this site." +msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert." -#: ../../include/channel.php:1227 -msgid "Sexual Preference:" -msgstr "Sexuelle Orientierung:" +#: ../../include/account.php:75 +msgid "An invitation is required." +msgstr "Eine Einladung wird benötigt." -#: ../../include/channel.php:1233 -msgid "Tags:" -msgstr "Schlagworte:" +#: ../../include/account.php:79 +msgid "Invitation could not be verified." +msgstr "Die Einladung konnte nicht bestätigt werden." -#: ../../include/channel.php:1235 -msgid "Political Views:" -msgstr "Politische Ansichten:" +#: ../../include/account.php:130 +msgid "Please enter the required information." +msgstr "Bitte gib die benötigten Informationen ein." -#: ../../include/channel.php:1237 -msgid "Religion:" -msgstr "Religion:" +#: ../../include/account.php:198 +msgid "Failed to store account information." +msgstr "Speichern der Nutzerkontodaten fehlgeschlagen." -#: ../../include/channel.php:1241 -msgid "Hobbies/Interests:" -msgstr "Hobbys/Interessen:" +#: ../../include/account.php:263 +#, php-format +msgid "Registration confirmation for %s" +msgstr "Registrierungsbestätigung für %s" -#: ../../include/channel.php:1243 -msgid "Likes:" -msgstr "Gefällt:" +#: ../../include/account.php:330 +#, php-format +msgid "Registration request at %s" +msgstr "Registrierungsanfrage auf %s" -#: ../../include/channel.php:1245 -msgid "Dislikes:" -msgstr "Gefällt nicht:" +#: ../../include/account.php:352 +msgid "your registration password" +msgstr "Dein Registrierungspasswort" -#: ../../include/channel.php:1247 -msgid "Contact information and Social Networks:" -msgstr "Kontaktinformation und soziale Netzwerke:" +#: ../../include/account.php:358 ../../include/account.php:420 +#, php-format +msgid "Registration details for %s" +msgstr "Registrierungsdetails für %s" -#: ../../include/channel.php:1249 -msgid "My other channels:" -msgstr "Meine anderen Kanäle:" +#: ../../include/account.php:431 +msgid "Account approved." +msgstr "Nutzerkonto bestätigt." -#: ../../include/channel.php:1251 -msgid "Musical interests:" -msgstr "Musikalische Interessen:" +#: ../../include/account.php:471 +#, php-format +msgid "Registration revoked for %s" +msgstr "Registrierung für %s wurde widerrufen" -#: ../../include/channel.php:1253 -msgid "Books, literature:" -msgstr "Bücher, Literatur:" +#: ../../include/account.php:756 ../../include/account.php:758 +msgid "Click here to upgrade." +msgstr "Klicke hier, um das Upgrade durchzuführen." -#: ../../include/channel.php:1255 -msgid "Television:" -msgstr "Fernsehen:" +#: ../../include/account.php:764 +msgid "This action exceeds the limits set by your subscription plan." +msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements." -#: ../../include/channel.php:1257 -msgid "Film/dance/culture/entertainment:" -msgstr "Film/Tanz/Kultur/Unterhaltung:" +#: ../../include/account.php:769 +msgid "This action is not available under your subscription plan." +msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar." -#: ../../include/channel.php:1259 -msgid "Love/Romance:" -msgstr "Liebe/Romantik:" +#: ../../include/message.php:20 +msgid "No recipient provided." +msgstr "Kein Empfänger angegeben" -#: ../../include/channel.php:1261 -msgid "Work/employment:" -msgstr "Arbeit/Anstellung:" +#: ../../include/message.php:25 +msgid "[no subject]" +msgstr "[no subject]" -#: ../../include/channel.php:1263 -msgid "School/education:" -msgstr "Schule/Ausbildung:" +#: ../../include/message.php:45 +msgid "Unable to determine sender." +msgstr "Kann Absender nicht bestimmen." -#: ../../include/channel.php:1284 -msgid "Like this thing" -msgstr "Gefällt mir" +#: ../../include/message.php:223 +msgid "Stored post could not be verified." +msgstr "Gespeicherter Beitrag konnten nicht überprüft werden." #: ../../include/selectors.php:30 msgid "Frequently" @@ -10727,168 +10818,364 @@ msgstr "Interessiert mich nicht" msgid "Ask me" msgstr "Frag mich mal" -#: ../../include/acl_selectors.php:198 -msgid "Who can see this?" -msgstr "Wer kann das sehen?" +#: ../../include/channel.php:33 +msgid "Unable to obtain identity information from database" +msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen" -#: ../../include/acl_selectors.php:199 -msgid "Custom selection" -msgstr "Benutzerdefinierte Auswahl" +#: ../../include/channel.php:67 +msgid "Empty name" +msgstr "Namensfeld leer" -#: ../../include/acl_selectors.php:200 +#: ../../include/channel.php:70 +msgid "Name too long" +msgstr "Name ist zu lang" + +#: ../../include/channel.php:181 +msgid "No account identifier" +msgstr "Keine Account-Kennung" + +#: ../../include/channel.php:193 +msgid "Nickname is required." +msgstr "Spitzname ist erforderlich." + +#: ../../include/channel.php:207 +msgid "Reserved nickname. Please choose another." +msgstr "Reservierter Kurzname. Bitte wähle einen anderen." + +#: ../../include/channel.php:212 msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" -" the scope of \"Show\"." -msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen." +"Nickname has unsupported characters or is already being used on this site." +msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt." -#: ../../include/acl_selectors.php:201 -msgid "Show" -msgstr "Anzeigen" +#: ../../include/channel.php:272 +msgid "Unable to retrieve created identity" +msgstr "Kann die erstellte Identität nicht empfangen" -#: ../../include/acl_selectors.php:202 -msgid "Don't show" -msgstr "Nicht anzeigen" +#: ../../include/channel.php:341 +msgid "Default Profile" +msgstr "Standard-Profil" -#: ../../include/acl_selectors.php:235 +#: ../../include/channel.php:962 +msgid "Create New Profile" +msgstr "Neues Profil erstellen" + +#: ../../include/channel.php:982 +msgid "Visible to everybody" +msgstr "Für jeden sichtbar" + +#: ../../include/channel.php:1055 ../../include/channel.php:1174 +msgid "Gender:" +msgstr "Geschlecht:" + +#: ../../include/channel.php:1057 ../../include/channel.php:1229 +msgid "Homepage:" +msgstr "Homepage:" + +#: ../../include/channel.php:1058 +msgid "Online Now" +msgstr "gerade online" + +#: ../../include/channel.php:1179 +msgid "Like this channel" +msgstr "Dieser Kanal gefällt mir" + +#: ../../include/channel.php:1203 +msgid "j F, Y" +msgstr "j. F Y" + +#: ../../include/channel.php:1204 +msgid "j F" +msgstr "j. F" + +#: ../../include/channel.php:1211 +msgid "Birthday:" +msgstr "Geburtstag:" + +#: ../../include/channel.php:1224 #, 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 "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann." +msgid "for %1$d %2$s" +msgstr "seit %1$d %2$s" -#: ../../include/event.php:22 ../../include/event.php:69 -#: ../../include/bb2diaspora.php:490 -msgid "l F d, Y \\@ g:i A" -msgstr "l, d. F Y, H:i" +#: ../../include/channel.php:1227 +msgid "Sexual Preference:" +msgstr "Sexuelle Orientierung:" -#: ../../include/event.php:30 ../../include/event.php:73 -#: ../../include/bb2diaspora.php:496 -msgid "Starts:" -msgstr "Beginnt:" +#: ../../include/channel.php:1233 +msgid "Tags:" +msgstr "Schlagworte:" -#: ../../include/event.php:40 ../../include/event.php:77 -#: ../../include/bb2diaspora.php:504 -msgid "Finishes:" -msgstr "Endet:" +#: ../../include/channel.php:1235 +msgid "Political Views:" +msgstr "Politische Ansichten:" -#: ../../include/event.php:824 -msgid "This event has been added to your calendar." -msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt" +#: ../../include/channel.php:1237 +msgid "Religion:" +msgstr "Religion:" -#: ../../include/event.php:1024 -msgid "Not specified" -msgstr "Keine Angabe" +#: ../../include/channel.php:1241 +msgid "Hobbies/Interests:" +msgstr "Hobbys/Interessen:" -#: ../../include/event.php:1025 -msgid "Needs Action" -msgstr "Aktion erforderlich" +#: ../../include/channel.php:1243 +msgid "Likes:" +msgstr "Gefällt:" -#: ../../include/event.php:1026 -msgid "Completed" -msgstr "Abgeschlossen" +#: ../../include/channel.php:1245 +msgid "Dislikes:" +msgstr "Gefällt nicht:" -#: ../../include/event.php:1027 -msgid "In Process" -msgstr "In Bearbeitung" +#: ../../include/channel.php:1247 +msgid "Contact information and Social Networks:" +msgstr "Kontaktinformation und soziale Netzwerke:" -#: ../../include/event.php:1028 -msgid "Cancelled" -msgstr "gestrichen" +#: ../../include/channel.php:1249 +msgid "My other channels:" +msgstr "Meine anderen Kanäle:" -#: ../../include/help.php:31 -msgid "Help:" -msgstr "Hilfe:" +#: ../../include/channel.php:1251 +msgid "Musical interests:" +msgstr "Musikalische Interessen:" -#: ../../include/message.php:20 -msgid "No recipient provided." -msgstr "Kein Empfänger angegeben" +#: ../../include/channel.php:1253 +msgid "Books, literature:" +msgstr "Bücher, Literatur:" -#: ../../include/message.php:25 -msgid "[no subject]" -msgstr "[no subject]" +#: ../../include/channel.php:1255 +msgid "Television:" +msgstr "Fernsehen:" -#: ../../include/message.php:45 -msgid "Unable to determine sender." -msgstr "Kann Absender nicht bestimmen." +#: ../../include/channel.php:1257 +msgid "Film/dance/culture/entertainment:" +msgstr "Film/Tanz/Kultur/Unterhaltung:" -#: ../../include/message.php:223 -msgid "Stored post could not be verified." -msgstr "Gespeicherter Beitrag konnten nicht überprüft werden." +#: ../../include/channel.php:1259 +msgid "Love/Romance:" +msgstr "Liebe/Romantik:" -#: ../../include/photos.php:115 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" -msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes" +#: ../../include/channel.php:1261 +msgid "Work/employment:" +msgstr "Arbeit/Anstellung:" -#: ../../include/photos.php:122 -msgid "Image file is empty." -msgstr "Bilddatei ist leer." +#: ../../include/channel.php:1263 +msgid "School/education:" +msgstr "Schule/Ausbildung:" -#: ../../include/photos.php:260 -msgid "Photo storage failed." -msgstr "Fotospeicherung fehlgeschlagen." +#: ../../include/channel.php:1284 +msgid "Like this thing" +msgstr "Gefällt mir" -#: ../../include/photos.php:300 -msgid "a new photo" -msgstr "ein neues Foto" +#: ../../include/connections.php:95 +msgid "New window" +msgstr "Neues Fenster" -#: ../../include/photos.php:304 +#: ../../include/connections.php:96 +msgid "Open the selected location in a different window or browser tab" +msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab" + +#: ../../include/connections.php:214 #, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" -msgstr "%1$s hat %2$s auf %3$s veröffentlicht" +msgid "User '%s' deleted" +msgstr "Benutzer '%s' gelöscht" -#: ../../include/photos.php:507 ../../include/conversation.php:1696 -msgid "Photo Albums" -msgstr "Fotoalben" +#: ../../include/dir_fns.php:141 +msgid "Directory Options" +msgstr "Verzeichnisoptionen" -#: ../../include/photos.php:511 -msgid "Upload New Photos" -msgstr "Neue Fotos hochladen" +#: ../../include/dir_fns.php:143 +msgid "Safe Mode" +msgstr "Sicherer Modus" -#: ../../include/network.php:729 -msgid "view full size" -msgstr "In Vollbildansicht anschauen" +#: ../../include/dir_fns.php:144 +msgid "Public Forums Only" +msgstr "Nur öffentliche Foren" -#: ../../include/network.php:1962 -msgid "Administrator" -msgstr "Administrator" +#: ../../include/dir_fns.php:145 +msgid "This Website Only" +msgstr "Nur dieser Hub" -#: ../../include/network.php:1978 -msgid "No Subject" -msgstr "Kein Betreff" +#: ../../include/nav.php:85 ../../include/nav.php:118 ../../boot.php:1718 +msgid "Logout" +msgstr "Abmelden" -#: ../../include/network.php:2234 -msgid "OStatus" -msgstr "OStatus" +#: ../../include/nav.php:85 ../../include/nav.php:118 +msgid "End this session" +msgstr "Beende diese Sitzung" -#: ../../include/network.php:2235 -msgid "GNU-Social" -msgstr "GNU-Social" +#: ../../include/nav.php:88 +msgid "Your posts and conversations" +msgstr "Deine Beiträge und Unterhaltungen" -#: ../../include/network.php:2236 -msgid "RSS/Atom" -msgstr "RSS/Atom" +#: ../../include/nav.php:89 +msgid "Your profile page" +msgstr "Deine Profilseite" -#: ../../include/network.php:2239 -msgid "Facebook" -msgstr "Facebook" +#: ../../include/nav.php:91 +msgid "Manage/Edit profiles" +msgstr "Profile verwalten" -#: ../../include/network.php:2240 -msgid "Zot" -msgstr "Zot!" +#: ../../include/nav.php:93 +msgid "Edit your profile" +msgstr "Profil bearbeiten" -#: ../../include/network.php:2241 -msgid "LinkedIn" -msgstr "LinkedIn" +#: ../../include/nav.php:95 +msgid "Your photos" +msgstr "Deine Bilder" -#: ../../include/network.php:2242 -msgid "XMPP/IM" -msgstr "XMPP/IM" +#: ../../include/nav.php:96 +msgid "Your files" +msgstr "Deine Dateien" -#: ../../include/network.php:2243 -msgid "MySpace" -msgstr "MySpace" +#: ../../include/nav.php:99 +msgid "Your chatrooms" +msgstr "Deine Chaträume" + +#: ../../include/nav.php:105 ../../include/conversation.php:1735 +msgid "Bookmarks" +msgstr "Lesezeichen" + +#: ../../include/nav.php:105 +msgid "Your bookmarks" +msgstr "Deine Lesezeichen" + +#: ../../include/nav.php:109 +msgid "Your webpages" +msgstr "Deine Webseiten" + +#: ../../include/nav.php:111 +msgid "Your wikis" +msgstr "Ihre Wikis" + +#: ../../include/nav.php:115 +msgid "Sign in" +msgstr "Anmelden" + +#: ../../include/nav.php:131 +msgid "Remote authentication" +msgstr "Über Konto auf anderem Server einloggen" + +#: ../../include/nav.php:131 +msgid "Click to authenticate to your home hub" +msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren" + +#: ../../include/nav.php:143 +msgid "Get me home" +msgstr "Bringe mich nach Hause (eigener Kanal)" + +#: ../../include/nav.php:145 +msgid "Log me out of this site" +msgstr "Logge mich von dieser Seite aus" + +#: ../../include/nav.php:150 +msgid "Create an account" +msgstr "Erzeuge ein Konto" + +#: ../../include/nav.php:162 +msgid "Help and documentation" +msgstr "Hilfe und Dokumentation" + +#: ../../include/nav.php:166 +msgid "Applications, utilities, links, games" +msgstr "Anwendungen (Apps), Zubehör, Links, Spiele" + +#: ../../include/nav.php:168 +msgid "Search site @name, #tag, ?docs, content" +msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt" + +#: ../../include/nav.php:170 +msgid "Channel Directory" +msgstr "Kanal-Verzeichnis" + +#: ../../include/nav.php:182 +msgid "Your grid" +msgstr "Dein Grid" + +#: ../../include/nav.php:183 +msgid "Mark all grid notifications seen" +msgstr "Alle Grid-Benachrichtigungen als angesehen markieren" + +#: ../../include/nav.php:185 +msgid "Channel home" +msgstr "Mein Kanal" + +#: ../../include/nav.php:186 +msgid "Mark all channel notifications seen" +msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen" + +#: ../../include/nav.php:192 +msgid "Notices" +msgstr "Benachrichtigungen" + +#: ../../include/nav.php:192 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: ../../include/nav.php:193 +msgid "See all notifications" +msgstr "Alle Benachrichtigungen ansehen" + +#: ../../include/nav.php:196 +msgid "Private mail" +msgstr "Persönliche Mail" + +#: ../../include/nav.php:197 +msgid "See all private messages" +msgstr "Alle persönlichen Nachrichten ansehen" + +#: ../../include/nav.php:198 +msgid "Mark all private messages seen" +msgstr "Markiere alle persönlichen Nachrichten als gesehen" + +#: ../../include/nav.php:199 ../../include/widgets.php:700 +msgid "Inbox" +msgstr "Eingang" + +#: ../../include/nav.php:200 ../../include/widgets.php:705 +msgid "Outbox" +msgstr "Ausgang" + +#: ../../include/nav.php:201 ../../include/widgets.php:710 +msgid "New Message" +msgstr "Neue Nachricht" + +#: ../../include/nav.php:204 +msgid "Event Calendar" +msgstr "Terminkalender" + +#: ../../include/nav.php:205 +msgid "See all events" +msgstr "Alle Termine ansehen" + +#: ../../include/nav.php:206 +msgid "Mark all events seen" +msgstr "Markiere alle Termine als gesehen" + +#: ../../include/nav.php:209 +msgid "Manage Your Channels" +msgstr "Verwalte Deine Kanäle" + +#: ../../include/nav.php:211 +msgid "Account/Channel Settings" +msgstr "Konto-/Kanal-Einstellungen" + +#: ../../include/nav.php:219 ../../include/widgets.php:1665 +msgid "Admin" +msgstr "Administration" + +#: ../../include/nav.php:219 +msgid "Site Setup and Configuration" +msgstr "Seiten-Einrichtung und -Konfiguration" + +#: ../../include/nav.php:250 ../../include/conversation.php:869 +msgid "Loading..." +msgstr "Lädt ..." + +#: ../../include/nav.php:255 +msgid "@name, #tag, ?doc, content" +msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt" + +#: ../../include/nav.php:256 +msgid "Please wait..." +msgstr "Bitte warten..." #: ../../include/features.php:58 msgid "General Features" @@ -11192,204 +11479,370 @@ msgid "" "channel" msgstr "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen" -#: ../../include/bookmarks.php:35 +#: ../../include/text.php:460 +msgid "prev" +msgstr "vorherige" + +#: ../../include/text.php:462 +msgid "first" +msgstr "erste" + +#: ../../include/text.php:491 +msgid "last" +msgstr "letzte" + +#: ../../include/text.php:494 +msgid "next" +msgstr "nächste" + +#: ../../include/text.php:505 +msgid "older" +msgstr "älter" + +#: ../../include/text.php:507 +msgid "newer" +msgstr "neuer" + +#: ../../include/text.php:904 +msgid "No connections" +msgstr "Keine Verbindungen" + +#: ../../include/text.php:929 #, php-format -msgid "%1$s's bookmarks" -msgstr "%1$ss Lesezeichen" +msgid "View all %s connections" +msgstr "Alle Verbindungen von %s anzeigen" -#: ../../include/nav.php:85 ../../include/nav.php:118 ../../boot.php:1714 -msgid "Logout" -msgstr "Abmelden" +#: ../../include/text.php:1074 ../../include/text.php:1079 +msgid "poke" +msgstr "anstupsen" -#: ../../include/nav.php:85 ../../include/nav.php:118 -msgid "End this session" -msgstr "Beende diese Sitzung" +#: ../../include/text.php:1074 ../../include/text.php:1079 +#: ../../include/conversation.php:243 +msgid "poked" +msgstr "stupste" -#: ../../include/nav.php:88 -msgid "Your posts and conversations" -msgstr "Deine Beiträge und Unterhaltungen" +#: ../../include/text.php:1080 +msgid "ping" +msgstr "anpingen" -#: ../../include/nav.php:89 -msgid "Your profile page" -msgstr "Deine Profilseite" +#: ../../include/text.php:1080 +msgid "pinged" +msgstr "pingte" -#: ../../include/nav.php:91 -msgid "Manage/Edit profiles" -msgstr "Profile verwalten" +#: ../../include/text.php:1081 +msgid "prod" +msgstr "knuffen" -#: ../../include/nav.php:93 -msgid "Edit your profile" -msgstr "Profil bearbeiten" +#: ../../include/text.php:1081 +msgid "prodded" +msgstr "knuffte" -#: ../../include/nav.php:95 -msgid "Your photos" -msgstr "Deine Bilder" +#: ../../include/text.php:1082 +msgid "slap" +msgstr "ohrfeigen" -#: ../../include/nav.php:96 -msgid "Your files" -msgstr "Deine Dateien" +#: ../../include/text.php:1082 +msgid "slapped" +msgstr "ohrfeigte" -#: ../../include/nav.php:99 -msgid "Your chatrooms" -msgstr "Deine Chaträume" +#: ../../include/text.php:1083 +msgid "finger" +msgstr "befummeln" -#: ../../include/nav.php:105 ../../include/conversation.php:1736 -msgid "Bookmarks" -msgstr "Lesezeichen" +#: ../../include/text.php:1083 +msgid "fingered" +msgstr "befummelte" -#: ../../include/nav.php:105 -msgid "Your bookmarks" -msgstr "Deine Lesezeichen" +#: ../../include/text.php:1084 +msgid "rebuff" +msgstr "eine Abfuhr erteilen" -#: ../../include/nav.php:109 -msgid "Your webpages" -msgstr "Deine Webseiten" +#: ../../include/text.php:1084 +msgid "rebuffed" +msgstr "zurückgewiesen" -#: ../../include/nav.php:111 -msgid "Your wiki" -msgstr "Dein Wiki" +#: ../../include/text.php:1096 +msgid "happy" +msgstr "glücklich" -#: ../../include/nav.php:115 -msgid "Sign in" -msgstr "Anmelden" +#: ../../include/text.php:1097 +msgid "sad" +msgstr "traurig" -#: ../../include/nav.php:132 -#, php-format -msgid "%s - click to logout" -msgstr "%s - Klick zum Abmelden" +#: ../../include/text.php:1098 +msgid "mellow" +msgstr "sanft" -#: ../../include/nav.php:135 -msgid "Remote authentication" -msgstr "Über Konto auf anderem Server einloggen" +#: ../../include/text.php:1099 +msgid "tired" +msgstr "müde" -#: ../../include/nav.php:135 -msgid "Click to authenticate to your home hub" -msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren" +#: ../../include/text.php:1100 +msgid "perky" +msgstr "frech" -#: ../../include/nav.php:149 -msgid "Home Page" -msgstr "Homepage" +#: ../../include/text.php:1101 +msgid "angry" +msgstr "sauer" -#: ../../include/nav.php:152 -msgid "Create an account" -msgstr "Erzeuge ein Konto" +#: ../../include/text.php:1102 +msgid "stupefied" +msgstr "verblüfft" -#: ../../include/nav.php:164 -msgid "Help and documentation" -msgstr "Hilfe und Dokumentation" +#: ../../include/text.php:1103 +msgid "puzzled" +msgstr "verwirrt" -#: ../../include/nav.php:168 -msgid "Applications, utilities, links, games" -msgstr "Anwendungen (Apps), Zubehör, Links, Spiele" +#: ../../include/text.php:1104 +msgid "interested" +msgstr "interessiert" -#: ../../include/nav.php:170 -msgid "Search site @name, #tag, ?docs, content" -msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt" +#: ../../include/text.php:1105 +msgid "bitter" +msgstr "verbittert" -#: ../../include/nav.php:172 -msgid "Channel Directory" -msgstr "Kanal-Verzeichnis" +#: ../../include/text.php:1106 +msgid "cheerful" +msgstr "fröhlich" -#: ../../include/nav.php:184 -msgid "Your grid" -msgstr "Dein Grid" +#: ../../include/text.php:1107 +msgid "alive" +msgstr "lebendig" -#: ../../include/nav.php:185 -msgid "Mark all grid notifications seen" -msgstr "Alle Grid-Benachrichtigungen als angesehen markieren" +#: ../../include/text.php:1108 +msgid "annoyed" +msgstr "verärgert" -#: ../../include/nav.php:187 -msgid "Channel home" -msgstr "Mein Kanal" +#: ../../include/text.php:1109 +msgid "anxious" +msgstr "unruhig" -#: ../../include/nav.php:188 -msgid "Mark all channel notifications seen" -msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen" +#: ../../include/text.php:1110 +msgid "cranky" +msgstr "schrullig" -#: ../../include/nav.php:194 -msgid "Notices" -msgstr "Benachrichtigungen" +#: ../../include/text.php:1111 +msgid "disturbed" +msgstr "verstört" -#: ../../include/nav.php:194 -msgid "Notifications" -msgstr "Benachrichtigungen" +#: ../../include/text.php:1112 +msgid "frustrated" +msgstr "frustriert" -#: ../../include/nav.php:195 -msgid "See all notifications" -msgstr "Alle Benachrichtigungen ansehen" +#: ../../include/text.php:1113 +msgid "depressed" +msgstr "deprimiert" -#: ../../include/nav.php:198 -msgid "Private mail" -msgstr "Persönliche Mail" +#: ../../include/text.php:1114 +msgid "motivated" +msgstr "motiviert" -#: ../../include/nav.php:199 -msgid "See all private messages" -msgstr "Alle persönlichen Nachrichten ansehen" +#: ../../include/text.php:1115 +msgid "relaxed" +msgstr "entspannt" -#: ../../include/nav.php:200 -msgid "Mark all private messages seen" -msgstr "Markiere alle persönlichen Nachrichten als gesehen" +#: ../../include/text.php:1116 +msgid "surprised" +msgstr "überrascht" -#: ../../include/nav.php:201 ../../include/widgets.php:700 -msgid "Inbox" -msgstr "Eingang" +#: ../../include/text.php:1303 ../../include/js_strings.php:70 +msgid "Monday" +msgstr "Montag" -#: ../../include/nav.php:202 ../../include/widgets.php:705 -msgid "Outbox" -msgstr "Ausgang" +#: ../../include/text.php:1303 ../../include/js_strings.php:71 +msgid "Tuesday" +msgstr "Dienstag" -#: ../../include/nav.php:203 ../../include/widgets.php:710 -msgid "New Message" -msgstr "Neue Nachricht" +#: ../../include/text.php:1303 ../../include/js_strings.php:72 +msgid "Wednesday" +msgstr "Mittwoch" -#: ../../include/nav.php:206 -msgid "Event Calendar" -msgstr "Terminkalender" +#: ../../include/text.php:1303 ../../include/js_strings.php:73 +msgid "Thursday" +msgstr "Donnerstag" -#: ../../include/nav.php:207 -msgid "See all events" -msgstr "Alle Termine ansehen" +#: ../../include/text.php:1303 ../../include/js_strings.php:74 +msgid "Friday" +msgstr "Freitag" -#: ../../include/nav.php:208 -msgid "Mark all events seen" -msgstr "Markiere alle Termine als gesehen" +#: ../../include/text.php:1303 ../../include/js_strings.php:75 +msgid "Saturday" +msgstr "Samstag" -#: ../../include/nav.php:211 -msgid "Manage Your Channels" -msgstr "Verwalte Deine Kanäle" +#: ../../include/text.php:1303 ../../include/js_strings.php:69 +msgid "Sunday" +msgstr "Sonntag" -#: ../../include/nav.php:213 -msgid "Account/Channel Settings" -msgstr "Konto-/Kanal-Einstellungen" +#: ../../include/text.php:1307 ../../include/js_strings.php:45 +msgid "January" +msgstr "Januar" -#: ../../include/nav.php:221 ../../include/widgets.php:1593 -msgid "Admin" -msgstr "Administration" +#: ../../include/text.php:1307 ../../include/js_strings.php:46 +msgid "February" +msgstr "Februar" -#: ../../include/nav.php:221 -msgid "Site Setup and Configuration" -msgstr "Seiten-Einrichtung und -Konfiguration" +#: ../../include/text.php:1307 ../../include/js_strings.php:47 +msgid "March" +msgstr "März" -#: ../../include/nav.php:252 ../../include/conversation.php:869 -msgid "Loading..." -msgstr "Lädt ..." +#: ../../include/text.php:1307 ../../include/js_strings.php:48 +msgid "April" +msgstr "April" -#: ../../include/nav.php:257 -msgid "@name, #tag, ?doc, content" -msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt" +#: ../../include/text.php:1307 +msgid "May" +msgstr "Mai" -#: ../../include/nav.php:258 -msgid "Please wait..." -msgstr "Bitte warten..." +#: ../../include/text.php:1307 ../../include/js_strings.php:50 +msgid "June" +msgstr "Juni" -#: ../../include/page_widgets.php:7 -msgid "New Page" -msgstr "Neue Seite" +#: ../../include/text.php:1307 ../../include/js_strings.php:51 +msgid "July" +msgstr "Juli" + +#: ../../include/text.php:1307 ../../include/js_strings.php:52 +msgid "August" +msgstr "August" -#: ../../include/wiki.php:525 ../../include/bbcode.php:632 +#: ../../include/text.php:1307 ../../include/js_strings.php:53 +msgid "September" +msgstr "September" + +#: ../../include/text.php:1307 ../../include/js_strings.php:54 +msgid "October" +msgstr "Oktober" + +#: ../../include/text.php:1307 ../../include/js_strings.php:55 +msgid "November" +msgstr "November" + +#: ../../include/text.php:1307 ../../include/js_strings.php:56 +msgid "December" +msgstr "Dezember" + +#: ../../include/text.php:1384 ../../include/text.php:1388 +msgid "Unknown Attachment" +msgstr "Unbekannter Anhang" + +#: ../../include/text.php:1390 +msgid "unknown" +msgstr "unbekannt" + +#: ../../include/text.php:1426 +msgid "remove category" +msgstr "Kategorie entfernen" + +#: ../../include/text.php:1503 +msgid "remove from file" +msgstr "aus der Datei entfernen" + +#: ../../include/text.php:1770 ../../include/language.php:367 +msgid "default" +msgstr "Standard" + +#: ../../include/text.php:1778 +msgid "Page layout" +msgstr "Seiten-Layout" + +#: ../../include/text.php:1778 +msgid "You can create your own with the layouts tool" +msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen" + +#: ../../include/text.php:1820 +msgid "Page content type" +msgstr "Art des Seiteninhalts" + +#: ../../include/text.php:1953 +msgid "activity" +msgstr "Aktivität" + +#: ../../include/text.php:2267 +msgid "Design Tools" +msgstr "Gestaltungswerkzeuge" + +#: ../../include/text.php:2273 +msgid "Pages" +msgstr "Seiten" + +#: ../../include/text.php:2295 +msgid "Import website..." +msgstr "Webseite importieren..." + +#: ../../include/text.php:2296 +msgid "Select folder to import" +msgstr "Ordner zum Importieren auswählen" + +#: ../../include/text.php:2297 +msgid "Import from a zipped folder:" +msgstr "Aus einem gezippten Ordner importieren:" + +#: ../../include/text.php:2298 +msgid "Import from cloud files:" +msgstr "Aus Cloud-Dateien importieren:" + +#: ../../include/text.php:2299 +msgid "/cloud/channel/path/to/folder" +msgstr "/Cloud/Kanal/Pfad/zum/Ordner" + +#: ../../include/text.php:2300 +msgid "Enter path to website files" +msgstr "Pfad zu Webseitendateien eingeben" + +#: ../../include/text.php:2301 +msgid "Select folder" +msgstr "Ordner auswählen" + +#: ../../include/text.php:2302 +msgid "Export website..." +msgstr "Webseite exportieren..." + +#: ../../include/text.php:2303 +msgid "Export to a zip file" +msgstr "In eine ZIP-Datei exportieren" + +#: ../../include/text.php:2304 +msgid "website.zip" +msgstr "website.zip" + +#: ../../include/text.php:2305 +msgid "Enter a name for the zip file." +msgstr "Geben Sie einen für die ZIP-Datei ein." + +#: ../../include/text.php:2306 +msgid "Export to cloud files" +msgstr "In Cloud-Dateien exportieren" + +#: ../../include/text.php:2307 +msgid "/path/to/export/folder" +msgstr "/Pfad/zum/exportierenden/Ordner" + +#: ../../include/text.php:2308 +msgid "Enter a path to a cloud files destination." +msgstr "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein." + +#: ../../include/text.php:2309 +msgid "Specify folder" +msgstr "Ordner angeben" + +#: ../../include/bookmarks.php:35 +#, php-format +msgid "%1$s's bookmarks" +msgstr "%1$ss Lesezeichen" + +#: ../../include/wiki.php:545 ../../include/bbcode.php:552 +#: ../../include/bbcode.php:683 msgid "Different viewers will see this text differently" msgstr "Verschiedene Betrachter werden diesen Text unterschiedlich sehen" +#: ../../include/help.php:31 +msgid "Help:" +msgstr "Hilfe:" + +#: ../../include/page_widgets.php:7 +msgid "New Page" +msgstr "Neue Seite" + #: ../../include/contact_widgets.php:11 #, php-format msgid "%d invitation available" @@ -11447,19 +11900,6 @@ msgstr[1] "%d gemeinsame Verbindungen" msgid "show more" msgstr "mehr zeigen" -#: ../../include/connections.php:95 -msgid "New window" -msgstr "Neues Fenster" - -#: ../../include/connections.php:96 -msgid "Open the selected location in a different window or browser tab" -msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab" - -#: ../../include/connections.php:214 -#, php-format -msgid "User '%s' deleted" -msgstr "Benutzer '%s' gelöscht" - #: ../../include/js_strings.php:5 msgid "Delete this item?" msgstr "Dieses Element löschen?" @@ -11600,55 +12040,11 @@ msgstr " " msgid "timeago.numbers" msgstr "timeago.numbers" -#: ../../include/js_strings.php:45 ../../include/text.php:1314 -msgid "January" -msgstr "Januar" - -#: ../../include/js_strings.php:46 ../../include/text.php:1314 -msgid "February" -msgstr "Februar" - -#: ../../include/js_strings.php:47 ../../include/text.php:1314 -msgid "March" -msgstr "März" - -#: ../../include/js_strings.php:48 ../../include/text.php:1314 -msgid "April" -msgstr "April" - #: ../../include/js_strings.php:49 msgctxt "long" msgid "May" msgstr "Mai" -#: ../../include/js_strings.php:50 ../../include/text.php:1314 -msgid "June" -msgstr "Juni" - -#: ../../include/js_strings.php:51 ../../include/text.php:1314 -msgid "July" -msgstr "Juli" - -#: ../../include/js_strings.php:52 ../../include/text.php:1314 -msgid "August" -msgstr "August" - -#: ../../include/js_strings.php:53 ../../include/text.php:1314 -msgid "September" -msgstr "September" - -#: ../../include/js_strings.php:54 ../../include/text.php:1314 -msgid "October" -msgstr "Oktober" - -#: ../../include/js_strings.php:55 ../../include/text.php:1314 -msgid "November" -msgstr "November" - -#: ../../include/js_strings.php:56 ../../include/text.php:1314 -msgid "December" -msgstr "Dezember" - #: ../../include/js_strings.php:57 msgid "Jan" msgstr "Jan" @@ -11698,34 +12094,6 @@ msgstr "Nov" msgid "Dec" msgstr "Dez" -#: ../../include/js_strings.php:69 ../../include/text.php:1310 -msgid "Sunday" -msgstr "Sonntag" - -#: ../../include/js_strings.php:70 ../../include/text.php:1310 -msgid "Monday" -msgstr "Montag" - -#: ../../include/js_strings.php:71 ../../include/text.php:1310 -msgid "Tuesday" -msgstr "Dienstag" - -#: ../../include/js_strings.php:72 ../../include/text.php:1310 -msgid "Wednesday" -msgstr "Mittwoch" - -#: ../../include/js_strings.php:73 ../../include/text.php:1310 -msgid "Thursday" -msgstr "Donnerstag" - -#: ../../include/js_strings.php:74 ../../include/text.php:1310 -msgid "Friday" -msgstr "Freitag" - -#: ../../include/js_strings.php:75 ../../include/text.php:1310 -msgid "Saturday" -msgstr "Samstag" - #: ../../include/js_strings.php:76 msgid "Sun" msgstr "So" @@ -11779,198 +12147,187 @@ msgctxt "calendar" msgid "All day" msgstr "Ganztägig" -#: ../../include/follow.php:27 -msgid "Channel is blocked on this site." -msgstr "Der Kanal ist auf dieser Seite blockiert " +#: ../../include/network.php:729 +msgid "view full size" +msgstr "In Vollbildansicht anschauen" -#: ../../include/follow.php:32 -msgid "Channel location missing." -msgstr "Adresse des Kanals fehlt." +#: ../../include/network.php:1978 +msgid "No Subject" +msgstr "Kein Betreff" -#: ../../include/follow.php:80 -msgid "Response from remote channel was incomplete." -msgstr "Antwort des entfernten Kanals war unvollständig." +#: ../../include/network.php:2234 +msgid "OStatus" +msgstr "OStatus" -#: ../../include/follow.php:97 -msgid "Channel was deleted and no longer exists." -msgstr "Kanal wurde gelöscht und existiert nicht mehr." +#: ../../include/network.php:2235 +msgid "GNU-Social" +msgstr "GNU-Social" -#: ../../include/follow.php:147 ../../include/follow.php:183 -msgid "Protocol disabled." -msgstr "Protokoll deaktiviert." +#: ../../include/network.php:2236 +msgid "RSS/Atom" +msgstr "RSS/Atom" -#: ../../include/follow.php:171 -msgid "Channel discovery failed." -msgstr "Kanalsuche fehlgeschlagen" +#: ../../include/network.php:2239 +msgid "Facebook" +msgstr "Facebook" -#: ../../include/follow.php:210 -msgid "Cannot connect to yourself." -msgstr "Du kannst Dich nicht mit Dir selbst verbinden." +#: ../../include/network.php:2240 +msgid "Zot" +msgstr "Zot!" -#: ../../include/dir_fns.php:141 -msgid "Directory Options" -msgstr "Verzeichnisoptionen" +#: ../../include/network.php:2241 +msgid "LinkedIn" +msgstr "LinkedIn" -#: ../../include/dir_fns.php:143 -msgid "Safe Mode" -msgstr "Sicherer Modus" +#: ../../include/network.php:2242 +msgid "XMPP/IM" +msgstr "XMPP/IM" -#: ../../include/dir_fns.php:144 -msgid "Public Forums Only" -msgstr "Nur öffentliche Foren" +#: ../../include/network.php:2243 +msgid "MySpace" +msgstr "MySpace" -#: ../../include/dir_fns.php:145 -msgid "This Website Only" -msgstr "Nur dieser Hub" +#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 +msgid "Tags" +msgstr "Schlagwörter" -#: ../../include/attach.php:248 ../../include/attach.php:336 -msgid "Item was not found." -msgstr "Beitrag wurde nicht gefunden." +#: ../../include/taxonomy.php:293 +msgid "Keywords" +msgstr "Schlüsselwörter" -#: ../../include/attach.php:497 -msgid "No source file." -msgstr "Keine Quelldatei." +#: ../../include/taxonomy.php:314 +msgid "have" +msgstr "habe" -#: ../../include/attach.php:519 -msgid "Cannot locate file to replace" -msgstr "Kann Datei zum Ersetzen nicht finden" +#: ../../include/taxonomy.php:314 +msgid "has" +msgstr "hat" -#: ../../include/attach.php:537 -msgid "Cannot locate file to revise/update" -msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden" +#: ../../include/taxonomy.php:315 +msgid "want" +msgstr "will" -#: ../../include/attach.php:668 -#, php-format -msgid "File exceeds size limit of %d" -msgstr "Datei überschreitet das Größen-Limit von %d" +#: ../../include/taxonomy.php:315 +msgid "wants" +msgstr "will" -#: ../../include/attach.php:682 -#, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." -msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht." +#: ../../include/taxonomy.php:316 +msgid "likes" +msgstr "gefällt" -#: ../../include/attach.php:852 -msgid "File upload failed. Possible system limit or action terminated." -msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess." +#: ../../include/taxonomy.php:317 +msgid "dislikes" +msgstr "missfällt" -#: ../../include/attach.php:865 -msgid "Stored file could not be verified. Upload failed." -msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen." +#: ../../include/import.php:30 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen." -#: ../../include/attach.php:920 ../../include/attach.php:936 -msgid "Path not available." -msgstr "Pfad nicht verfügbar." +#: ../../include/import.php:90 +msgid "Channel clone failed. Import failed." +msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen." -#: ../../include/attach.php:982 ../../include/attach.php:1140 -msgid "Empty pathname" -msgstr "Leere Pfadangabe" +#: ../../include/import.php:1354 +msgid "Unable to import element \"" +msgstr "Element konnte nicht importiert werden." -#: ../../include/attach.php:1008 -msgid "duplicate filename or path" -msgstr "doppelter Dateiname oder Pfad" +#: ../../include/security.php:117 +msgid "guest:" +msgstr "Gast:" -#: ../../include/attach.php:1030 -msgid "Path not found." -msgstr "Pfad nicht gefunden." +#: ../../include/security.php:535 +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 "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde." -#: ../../include/attach.php:1094 -msgid "mkdir failed." -msgstr "mkdir fehlgeschlagen." +#: ../../include/zot.php:662 +msgid "Invalid data packet" +msgstr "Ungültiges Datenpaket" -#: ../../include/attach.php:1098 -msgid "database storage failed." -msgstr "Speichern in der Datenbank fehlgeschlagen." +#: ../../include/zot.php:678 +msgid "Unable to verify channel signature" +msgstr "Konnte die Signatur des Kanals nicht verifizieren" -#: ../../include/attach.php:1146 -msgid "Empty path" -msgstr "Leere Pfadangabe" +#: ../../include/zot.php:2320 +#, php-format +msgid "Unable to verify site signature for %s" +msgstr "Kann die Signatur der Seite von %s nicht verifizieren" + +#: ../../include/zot.php:3718 +msgid "invalid target signature" +msgstr "Ungültige Signatur des Ziels" -#: ../../include/items.php:909 ../../include/items.php:954 +#: ../../include/items.php:837 ../../include/items.php:882 msgid "(Unknown)" msgstr "(Unbekannt)" -#: ../../include/items.php:1152 +#: ../../include/items.php:1080 msgid "Visible to anybody on the internet." msgstr "Für jeden im Internet sichtbar." -#: ../../include/items.php:1154 +#: ../../include/items.php:1082 msgid "Visible to you only." msgstr "Nur für Dich sichtbar." -#: ../../include/items.php:1156 +#: ../../include/items.php:1084 msgid "Visible to anybody in this network." msgstr "Für jedes $Projectname-Mitglied sichtbar." -#: ../../include/items.php:1158 +#: ../../include/items.php:1086 msgid "Visible to anybody authenticated." msgstr "Für jeden sichtbar, der angemeldet ist." -#: ../../include/items.php:1160 +#: ../../include/items.php:1088 #, php-format msgid "Visible to anybody on %s." msgstr "Für jeden auf %s sichtbar." -#: ../../include/items.php:1162 +#: ../../include/items.php:1090 msgid "Visible to all connections." msgstr "Für alle Verbindungen sichtbar." -#: ../../include/items.php:1164 +#: ../../include/items.php:1092 msgid "Visible to approved connections." msgstr "Nur für akzeptierte Verbindungen sichtbar." -#: ../../include/items.php:1166 +#: ../../include/items.php:1094 msgid "Visible to specific connections." msgstr "Sichtbar für bestimmte Verbindungen." -#: ../../include/items.php:3960 +#: ../../include/items.php:3892 msgid "Privacy group is empty." msgstr "Gruppe ist leer." -#: ../../include/items.php:3967 +#: ../../include/items.php:3899 #, php-format msgid "Privacy group: %s" msgstr "Gruppe: %s" -#: ../../include/items.php:3979 +#: ../../include/items.php:3911 msgid "Connection not found." msgstr "Die Verbindung wurde nicht gefunden." -#: ../../include/items.php:4332 +#: ../../include/items.php:4260 msgid "profile photo" msgstr "Profilfoto" -#: ../../include/items.php:4528 +#: ../../include/items.php:4456 #, php-format msgid "[Edited %s]" msgstr "[%s wurde bearbeitet]" -#: ../../include/items.php:4528 +#: ../../include/items.php:4456 msgctxt "edit_activity" msgid "Post" msgstr "Beitrag" -#: ../../include/items.php:4528 +#: ../../include/items.php:4456 msgctxt "edit_activity" msgid "Comment" msgstr "Kommentar" -#: ../../include/zot.php:705 -msgid "Invalid data packet" -msgstr "Ungültiges Datenpaket" - -#: ../../include/zot.php:721 -msgid "Unable to verify channel signature" -msgstr "Konnte die Signatur des Kanals nicht verifizieren" - -#: ../../include/zot.php:2336 -#, php-format -msgid "Unable to verify site signature for %s" -msgstr "Kann die Signatur der Seite von %s nicht verifizieren" - -#: ../../include/zot.php:3721 -msgid "invalid target signature" -msgstr "Ungültige Signatur des Ziels" - #: ../../include/auth.php:148 msgid "Logged out." msgstr "Ausgeloggt." @@ -12002,287 +12359,134 @@ msgstr "Besuche %1$s's %2$s" msgid "%1$s has an updated %2$s, changing %3$s." msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert." -#: ../../include/text.php:459 -msgid "prev" -msgstr "vorherige" - -#: ../../include/text.php:461 -msgid "first" -msgstr "erste" - -#: ../../include/text.php:490 -msgid "last" -msgstr "letzte" - -#: ../../include/text.php:493 -msgid "next" -msgstr "nächste" +#: ../../include/attach.php:248 ../../include/attach.php:336 +msgid "Item was not found." +msgstr "Beitrag wurde nicht gefunden." -#: ../../include/text.php:504 -msgid "older" -msgstr "älter" +#: ../../include/attach.php:497 +msgid "No source file." +msgstr "Keine Quelldatei." -#: ../../include/text.php:506 -msgid "newer" -msgstr "neuer" +#: ../../include/attach.php:519 +msgid "Cannot locate file to replace" +msgstr "Kann Datei zum Ersetzen nicht finden" -#: ../../include/text.php:911 -msgid "No connections" -msgstr "Keine Verbindungen" +#: ../../include/attach.php:537 +msgid "Cannot locate file to revise/update" +msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden" -#: ../../include/text.php:936 +#: ../../include/attach.php:668 #, php-format -msgid "View all %s connections" -msgstr "Alle Verbindungen von %s anzeigen" - -#: ../../include/text.php:1081 ../../include/text.php:1086 -msgid "poke" -msgstr "anstupsen" - -#: ../../include/text.php:1081 ../../include/text.php:1086 -#: ../../include/conversation.php:243 -msgid "poked" -msgstr "stupste" - -#: ../../include/text.php:1087 -msgid "ping" -msgstr "anpingen" - -#: ../../include/text.php:1087 -msgid "pinged" -msgstr "pingte" - -#: ../../include/text.php:1088 -msgid "prod" -msgstr "knuffen" - -#: ../../include/text.php:1088 -msgid "prodded" -msgstr "knuffte" - -#: ../../include/text.php:1089 -msgid "slap" -msgstr "ohrfeigen" - -#: ../../include/text.php:1089 -msgid "slapped" -msgstr "ohrfeigte" - -#: ../../include/text.php:1090 -msgid "finger" -msgstr "befummeln" - -#: ../../include/text.php:1090 -msgid "fingered" -msgstr "befummelte" - -#: ../../include/text.php:1091 -msgid "rebuff" -msgstr "eine Abfuhr erteilen" - -#: ../../include/text.php:1091 -msgid "rebuffed" -msgstr "zurückgewiesen" - -#: ../../include/text.php:1103 -msgid "happy" -msgstr "glücklich" - -#: ../../include/text.php:1104 -msgid "sad" -msgstr "traurig" - -#: ../../include/text.php:1105 -msgid "mellow" -msgstr "sanft" - -#: ../../include/text.php:1106 -msgid "tired" -msgstr "müde" - -#: ../../include/text.php:1107 -msgid "perky" -msgstr "frech" - -#: ../../include/text.php:1108 -msgid "angry" -msgstr "sauer" - -#: ../../include/text.php:1109 -msgid "stupefied" -msgstr "verblüfft" - -#: ../../include/text.php:1110 -msgid "puzzled" -msgstr "verwirrt" - -#: ../../include/text.php:1111 -msgid "interested" -msgstr "interessiert" - -#: ../../include/text.php:1112 -msgid "bitter" -msgstr "verbittert" - -#: ../../include/text.php:1113 -msgid "cheerful" -msgstr "fröhlich" - -#: ../../include/text.php:1114 -msgid "alive" -msgstr "lebendig" - -#: ../../include/text.php:1115 -msgid "annoyed" -msgstr "verärgert" - -#: ../../include/text.php:1116 -msgid "anxious" -msgstr "unruhig" - -#: ../../include/text.php:1117 -msgid "cranky" -msgstr "schrullig" - -#: ../../include/text.php:1118 -msgid "disturbed" -msgstr "verstört" - -#: ../../include/text.php:1119 -msgid "frustrated" -msgstr "frustriert" - -#: ../../include/text.php:1120 -msgid "depressed" -msgstr "deprimiert" - -#: ../../include/text.php:1121 -msgid "motivated" -msgstr "motiviert" - -#: ../../include/text.php:1122 -msgid "relaxed" -msgstr "entspannt" - -#: ../../include/text.php:1123 -msgid "surprised" -msgstr "überrascht" - -#: ../../include/text.php:1314 -msgid "May" -msgstr "Mai" - -#: ../../include/text.php:1391 ../../include/text.php:1395 -msgid "Unknown Attachment" -msgstr "Unbekannter Anhang" - -#: ../../include/text.php:1397 -msgid "unknown" -msgstr "unbekannt" +msgid "File exceeds size limit of %d" +msgstr "Datei überschreitet das Größen-Limit von %d" -#: ../../include/text.php:1433 -msgid "remove category" -msgstr "Kategorie entfernen" +#: ../../include/attach.php:682 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht." -#: ../../include/text.php:1510 -msgid "remove from file" -msgstr "aus der Datei entfernen" +#: ../../include/attach.php:852 +msgid "File upload failed. Possible system limit or action terminated." +msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess." -#: ../../include/text.php:1814 ../../include/language.php:367 -msgid "default" -msgstr "Standard" +#: ../../include/attach.php:865 +msgid "Stored file could not be verified. Upload failed." +msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen." -#: ../../include/text.php:1822 -msgid "Page layout" -msgstr "Seiten-Layout" +#: ../../include/attach.php:920 ../../include/attach.php:936 +msgid "Path not available." +msgstr "Pfad nicht verfügbar." -#: ../../include/text.php:1822 -msgid "You can create your own with the layouts tool" -msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen" +#: ../../include/attach.php:982 ../../include/attach.php:1140 +msgid "Empty pathname" +msgstr "Leere Pfadangabe" -#: ../../include/text.php:1864 -msgid "Page content type" -msgstr "Art des Seiteninhalts" +#: ../../include/attach.php:1008 +msgid "duplicate filename or path" +msgstr "doppelter Dateiname oder Pfad" -#: ../../include/text.php:1997 -msgid "activity" -msgstr "Aktivität" +#: ../../include/attach.php:1030 +msgid "Path not found." +msgstr "Pfad nicht gefunden." -#: ../../include/text.php:2308 -msgid "Design Tools" -msgstr "Gestaltungswerkzeuge" +#: ../../include/attach.php:1094 +msgid "mkdir failed." +msgstr "mkdir fehlgeschlagen." -#: ../../include/text.php:2314 -msgid "Pages" -msgstr "Seiten" +#: ../../include/attach.php:1098 +msgid "database storage failed." +msgstr "Speichern in der Datenbank fehlgeschlagen." -#: ../../include/text.php:2336 -msgid "Import website..." -msgstr "Webseite importieren..." +#: ../../include/attach.php:1146 +msgid "Empty path" +msgstr "Leere Pfadangabe" -#: ../../include/text.php:2337 -msgid "Select folder to import" -msgstr "Ordner zum Importieren auswählen" +#: ../../include/event.php:22 ../../include/event.php:69 +#: ../../include/bb2diaspora.php:498 +msgid "l F d, Y \\@ g:i A" +msgstr "l, d. F Y, H:i" -#: ../../include/text.php:2338 -msgid "Import from a zipped folder:" -msgstr "Aus einem gezippten Ordner importieren:" +#: ../../include/event.php:30 ../../include/event.php:73 +#: ../../include/bb2diaspora.php:504 +msgid "Starts:" +msgstr "Beginnt:" -#: ../../include/text.php:2339 -msgid "Import from cloud files:" -msgstr "Aus Cloud-Dateien importieren:" +#: ../../include/event.php:40 ../../include/event.php:77 +#: ../../include/bb2diaspora.php:512 +msgid "Finishes:" +msgstr "Endet:" -#: ../../include/text.php:2340 -msgid "/cloud/channel/path/to/folder" -msgstr "/Cloud/Kanal/Pfad/zum/Ordner" +#: ../../include/event.php:824 +msgid "This event has been added to your calendar." +msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt" -#: ../../include/text.php:2341 -msgid "Enter path to website files" -msgstr "Pfad zu Webseitendateien eingeben" +#: ../../include/event.php:1024 +msgid "Not specified" +msgstr "Keine Angabe" -#: ../../include/text.php:2342 -msgid "Select folder" -msgstr "Ordner auswählen" +#: ../../include/event.php:1025 +msgid "Needs Action" +msgstr "Aktion erforderlich" -#: ../../include/text.php:2343 -msgid "Export website..." -msgstr "Webseite exportieren..." +#: ../../include/event.php:1026 +msgid "Completed" +msgstr "Abgeschlossen" -#: ../../include/text.php:2344 -msgid "Export to a zip file" -msgstr "In eine ZIP-Datei exportieren" +#: ../../include/event.php:1027 +msgid "In Process" +msgstr "In Bearbeitung" -#: ../../include/text.php:2345 -msgid "website.zip" -msgstr "website.zip" +#: ../../include/event.php:1028 +msgid "Cancelled" +msgstr "gestrichen" -#: ../../include/text.php:2346 -msgid "Enter a name for the zip file." -msgstr "Geben Sie einen für die ZIP-Datei ein." +#: ../../include/follow.php:27 +msgid "Channel is blocked on this site." +msgstr "Der Kanal ist auf dieser Seite blockiert " -#: ../../include/text.php:2347 -msgid "Export to cloud files" -msgstr "In Cloud-Dateien exportieren" +#: ../../include/follow.php:32 +msgid "Channel location missing." +msgstr "Adresse des Kanals fehlt." -#: ../../include/text.php:2348 -msgid "/path/to/export/folder" -msgstr "/Pfad/zum/exportierenden/Ordner" +#: ../../include/follow.php:80 +msgid "Response from remote channel was incomplete." +msgstr "Antwort des entfernten Kanals war unvollständig." -#: ../../include/text.php:2349 -msgid "Enter a path to a cloud files destination." -msgstr "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein." +#: ../../include/follow.php:97 +msgid "Channel was deleted and no longer exists." +msgstr "Kanal wurde gelöscht und existiert nicht mehr." -#: ../../include/text.php:2350 -msgid "Specify folder" -msgstr "Ordner angeben" +#: ../../include/follow.php:147 ../../include/follow.php:183 +msgid "Protocol disabled." +msgstr "Protokoll deaktiviert." -#: ../../include/bb2diaspora.php:401 -msgid "Attachments:" -msgstr "Anhänge:" +#: ../../include/follow.php:171 +msgid "Channel discovery failed." +msgstr "Kanalsuche fehlgeschlagen" -#: ../../include/bb2diaspora.php:492 -msgid "$Projectname event notification:" -msgstr "$Projectname-Terminbenachrichtigung:" +#: ../../include/follow.php:210 +msgid "Cannot connect to yourself." +msgstr "Du kannst Dich nicht mit Dir selbst verbinden." #: ../../include/group.php:26 msgid "" @@ -12315,63 +12519,40 @@ msgstr "Kanäle, die in keiner Gruppe sind" msgid "add" msgstr "hinzufügen" -#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 -msgid "Tags" -msgstr "Schlagwörter" - -#: ../../include/taxonomy.php:293 -msgid "Keywords" -msgstr "Schlüsselwörter" - -#: ../../include/taxonomy.php:314 -msgid "have" -msgstr "habe" - -#: ../../include/taxonomy.php:314 -msgid "has" -msgstr "hat" - -#: ../../include/taxonomy.php:315 -msgid "want" -msgstr "will" - -#: ../../include/taxonomy.php:315 -msgid "wants" -msgstr "will" - -#: ../../include/taxonomy.php:316 -msgid "likes" -msgstr "gefällt" +#: ../../include/language.php:380 +msgid "Select an alternate language" +msgstr "Wähle eine alternative Sprache" -#: ../../include/taxonomy.php:317 -msgid "dislikes" -msgstr "missfällt" +#: ../../include/photos.php:115 +#, php-format +msgid "Image exceeds website size limit of %lu bytes" +msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes" -#: ../../include/oembed.php:312 -msgid " by " -msgstr "von" +#: ../../include/photos.php:122 +msgid "Image file is empty." +msgstr "Bilddatei ist leer." -#: ../../include/oembed.php:313 -msgid " on " -msgstr "am" +#: ../../include/photos.php:260 +msgid "Photo storage failed." +msgstr "Fotospeicherung fehlgeschlagen." -#: ../../include/oembed.php:342 -msgid "Embedded content" -msgstr "Eingebetteter Inhalt" +#: ../../include/photos.php:300 +msgid "a new photo" +msgstr "ein neues Foto" -#: ../../include/oembed.php:351 -msgid "Embedding disabled" -msgstr "Einbetten deaktiviert" +#: ../../include/photos.php:304 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" +msgstr "%1$s hat %2$s auf %3$s veröffentlicht" -#: ../../include/security.php:117 -msgid "guest:" -msgstr "Gast:" +#: ../../include/photos.php:507 ../../include/conversation.php:1695 +msgid "Photo Albums" +msgstr "Fotoalben" -#: ../../include/security.php:535 -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 "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde." +#: ../../include/photos.php:511 +msgid "Upload New Photos" +msgstr "Neue Fotos hochladen" #: ../../include/widgets.php:103 msgid "System" @@ -12498,8 +12679,8 @@ msgstr "Kalender exportieren" msgid "Import Calendar" msgstr "Kalender importieren" -#: ../../include/widgets.php:883 ../../include/conversation.php:1723 -#: ../../include/conversation.php:1726 +#: ../../include/widgets.php:883 ../../include/conversation.php:1722 +#: ../../include/conversation.php:1725 msgid "Chatrooms" msgstr "Chaträume" @@ -12511,70 +12692,192 @@ msgstr "Übersicht" msgid "Chat Members" msgstr "Chatmitglieder" -#: ../../include/widgets.php:916 +#: ../../include/widgets.php:960 msgid "Wiki List" msgstr "Wikiliste" -#: ../../include/widgets.php:954 +#: ../../include/widgets.php:968 +msgid "Create new wiki" +msgstr "Neues Wiki erstellen" + +#: ../../include/widgets.php:978 +msgid "Send notification" +msgstr "Benachrichtigung senden" + +#: ../../include/widgets.php:1014 msgid "Wiki Pages" msgstr "Wikiseiten" -#: ../../include/widgets.php:989 +#: ../../include/widgets.php:1019 +msgid "Add new page" +msgstr "Neue Seite hinzufügen" + +#: ../../include/widgets.php:1020 +msgid "Page name" +msgstr "Seitenname" + +#: ../../include/widgets.php:1052 msgid "Bookmarked Chatrooms" msgstr "Gespeicherte Chatrooms" -#: ../../include/widgets.php:1020 +#: ../../include/widgets.php:1083 msgid "Suggested Chatrooms" msgstr "Chatraum-Vorschläge" -#: ../../include/widgets.php:1165 ../../include/widgets.php:1277 +#: ../../include/widgets.php:1228 ../../include/widgets.php:1340 msgid "photo/image" msgstr "Foto/Bild" -#: ../../include/widgets.php:1220 +#: ../../include/widgets.php:1283 msgid "Click to show more" msgstr "Klick, um mehr anzuzeigen" -#: ../../include/widgets.php:1371 +#: ../../include/widgets.php:1434 msgid "Rating Tools" msgstr "Bewertungswerkzeuge" -#: ../../include/widgets.php:1375 ../../include/widgets.php:1377 +#: ../../include/widgets.php:1438 ../../include/widgets.php:1440 msgid "Rate Me" msgstr "Bewerte mich" -#: ../../include/widgets.php:1380 +#: ../../include/widgets.php:1443 msgid "View Ratings" msgstr "Bewertungen ansehen" -#: ../../include/widgets.php:1464 +#: ../../include/widgets.php:1536 msgid "Forums" msgstr "Foren" -#: ../../include/widgets.php:1493 +#: ../../include/widgets.php:1565 msgid "Tasks" msgstr "Aufgaben" -#: ../../include/widgets.php:1504 +#: ../../include/widgets.php:1576 msgid "Documentation" msgstr "Dokumentation" -#: ../../include/widgets.php:1560 ../../include/widgets.php:1598 +#: ../../include/widgets.php:1632 ../../include/widgets.php:1670 msgid "Member registrations waiting for confirmation" msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten" -#: ../../include/widgets.php:1566 +#: ../../include/widgets.php:1638 msgid "Inspect queue" msgstr "Warteschlange kontrollieren" -#: ../../include/widgets.php:1568 +#: ../../include/widgets.php:1640 msgid "DB updates" msgstr "DB-Aktualisierungen" -#: ../../include/widgets.php:1594 +#: ../../include/widgets.php:1666 msgid "Plugin Features" msgstr "Plug-In Funktionen" +#: ../../include/acl_selectors.php:198 +msgid "Who can see this?" +msgstr "Wer kann das sehen?" + +#: ../../include/acl_selectors.php:199 +msgid "Custom selection" +msgstr "Benutzerdefinierte Auswahl" + +#: ../../include/acl_selectors.php:200 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" +" the scope of \"Show\"." +msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen." + +#: ../../include/acl_selectors.php:201 +msgid "Show" +msgstr "Anzeigen" + +#: ../../include/acl_selectors.php:202 +msgid "Don't show" +msgstr "Nicht anzeigen" + +#: ../../include/acl_selectors.php:235 +#, 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 "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann." + +#: ../../include/oembed.php:312 +msgid " by " +msgstr "von" + +#: ../../include/oembed.php:313 +msgid " on " +msgstr "am" + +#: ../../include/oembed.php:342 +msgid "Embedded content" +msgstr "Eingebetteter Inhalt" + +#: ../../include/oembed.php:351 +msgid "Embedding disabled" +msgstr "Einbetten deaktiviert" + +#: ../../include/bb2diaspora.php:403 +msgid "Attachments:" +msgstr "Anhänge:" + +#: ../../include/bb2diaspora.php:500 +msgid "$Projectname event notification:" +msgstr "$Projectname-Terminbenachrichtigung:" + +#: ../../include/permissions.php:35 +msgid "Can view my normal stream and posts" +msgstr "Kann meine normalen Beiträge sehen" + +#: ../../include/permissions.php:39 +msgid "Can view my webpages" +msgstr "Kann meine Webseiten sehen" + +#: ../../include/permissions.php:43 +msgid "Can post on my channel page (\"wall\")" +msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen" + +#: ../../include/permissions.php:46 +msgid "Can like/dislike stuff" +msgstr "Kann andere Elemente mögen/nicht mögen" + +#: ../../include/permissions.php:46 +msgid "Profiles and things other than posts/comments" +msgstr "Profile und alles außer Beiträge und Kommentare" + +#: ../../include/permissions.php:48 +msgid "Can forward to all my channel contacts via post @mentions" +msgstr "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten" + +#: ../../include/permissions.php:48 +msgid "Advanced - useful for creating group forum channels" +msgstr "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen" + +#: ../../include/permissions.php:49 +msgid "Can chat with me (when available)" +msgstr "Kann mit mir chatten (wenn verfügbar)" + +#: ../../include/permissions.php:50 +msgid "Can write to my file storage and photos" +msgstr "Kann in meine Datei- und Bilderordner schreiben" + +#: ../../include/permissions.php:51 +msgid "Can edit my webpages" +msgstr "Kann meine Webseiten bearbeiten" + +#: ../../include/permissions.php:53 +msgid "Somewhat advanced - very useful in open communities" +msgstr "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften" + +#: ../../include/permissions.php:55 +msgid "Can administer my channel resources" +msgstr "Kann meine Kanäle administrieren" + +#: ../../include/permissions.php:55 +msgid "" +"Extremely advanced. Leave this alone unless you know what you are doing" +msgstr "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust" + #: ../../include/conversation.php:204 #, php-format msgid "%1$s is now connected with %2$s" @@ -12783,306 +13086,83 @@ msgstr "Spam" msgid "Posts flagged as SPAM" msgstr "Nachrichten, die als SPAM markiert wurden" -#: ../../include/conversation.php:1675 +#: ../../include/conversation.php:1674 msgid "Status Messages and Posts" msgstr "Statusnachrichten und Beiträge" -#: ../../include/conversation.php:1684 +#: ../../include/conversation.php:1683 msgid "About" msgstr "Über" -#: ../../include/conversation.php:1687 +#: ../../include/conversation.php:1686 msgid "Profile Details" msgstr "Profil-Details" -#: ../../include/conversation.php:1703 +#: ../../include/conversation.php:1702 msgid "Files and Storage" msgstr "Dateien und Speicher" -#: ../../include/conversation.php:1739 +#: ../../include/conversation.php:1738 msgid "Saved Bookmarks" msgstr "Gespeicherte Lesezeichen" -#: ../../include/conversation.php:1749 +#: ../../include/conversation.php:1748 msgid "Manage Webpages" msgstr "Webseiten verwalten" -#: ../../include/conversation.php:1814 +#: ../../include/conversation.php:1813 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "Zusage" msgstr[1] "Zusagen" -#: ../../include/conversation.php:1817 +#: ../../include/conversation.php:1816 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "Absage" msgstr[1] "Absagen" -#: ../../include/conversation.php:1820 +#: ../../include/conversation.php:1819 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] " Unentschlossen" msgstr[1] "Unentschlossene" -#: ../../include/conversation.php:1823 +#: ../../include/conversation.php:1822 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" msgstr[0] "Zustimmung" msgstr[1] "Zustimmungen" -#: ../../include/conversation.php:1826 +#: ../../include/conversation.php:1825 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" msgstr[0] "Ablehnung" msgstr[1] "Ablehnungen" -#: ../../include/conversation.php:1829 +#: ../../include/conversation.php:1828 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" msgstr[0] "Enthaltung" msgstr[1] "Enthaltungen" -#: ../../include/permissions.php:35 -msgid "Can view my normal stream and posts" -msgstr "Kann meine normalen Beiträge sehen" - -#: ../../include/permissions.php:39 -msgid "Can view my webpages" -msgstr "Kann meine Webseiten sehen" - -#: ../../include/permissions.php:43 -msgid "Can post on my channel page (\"wall\")" -msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen" - -#: ../../include/permissions.php:46 -msgid "Can like/dislike stuff" -msgstr "Kann andere Elemente mögen/nicht mögen" - -#: ../../include/permissions.php:46 -msgid "Profiles and things other than posts/comments" -msgstr "Profile und alles außer Beiträge und Kommentare" - -#: ../../include/permissions.php:48 -msgid "Can forward to all my channel contacts via post @mentions" -msgstr "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten" - -#: ../../include/permissions.php:48 -msgid "Advanced - useful for creating group forum channels" -msgstr "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen" - -#: ../../include/permissions.php:49 -msgid "Can chat with me (when available)" -msgstr "Kann mit mir chatten (wenn verfügbar)" - -#: ../../include/permissions.php:50 -msgid "Can write to my file storage and photos" -msgstr "Kann in meine Datei- und Bilderordner schreiben" - -#: ../../include/permissions.php:51 -msgid "Can edit my webpages" -msgstr "Kann meine Webseiten bearbeiten" - -#: ../../include/permissions.php:53 -msgid "Somewhat advanced - very useful in open communities" -msgstr "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften" - -#: ../../include/permissions.php:55 -msgid "Can administer my channel resources" -msgstr "Kann meine Kanäle administrieren" - -#: ../../include/permissions.php:55 -msgid "" -"Extremely advanced. Leave this alone unless you know what you are doing" -msgstr "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust" - -#: ../../include/account.php:35 -msgid "Not a valid email address" -msgstr "Ungültige E-Mail-Adresse" - -#: ../../include/account.php:37 -msgid "Your email domain is not among those allowed on this site" -msgstr "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt" - -#: ../../include/account.php:43 -msgid "Your email address is already registered at this site." -msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert." - -#: ../../include/account.php:75 -msgid "An invitation is required." -msgstr "Eine Einladung wird benötigt." - -#: ../../include/account.php:79 -msgid "Invitation could not be verified." -msgstr "Die Einladung konnte nicht bestätigt werden." - -#: ../../include/account.php:130 -msgid "Please enter the required information." -msgstr "Bitte gib die benötigten Informationen ein." - -#: ../../include/account.php:198 -msgid "Failed to store account information." -msgstr "Speichern der Nutzerkontodaten fehlgeschlagen." - -#: ../../include/account.php:263 -#, php-format -msgid "Registration confirmation for %s" -msgstr "Registrierungsbestätigung für %s" - -#: ../../include/account.php:330 -#, php-format -msgid "Registration request at %s" -msgstr "Registrierungsanfrage auf %s" - -#: ../../include/account.php:352 -msgid "your registration password" -msgstr "Dein Registrierungspasswort" - -#: ../../include/account.php:358 ../../include/account.php:420 -#, php-format -msgid "Registration details for %s" -msgstr "Registrierungsdetails für %s" - -#: ../../include/account.php:431 -msgid "Account approved." -msgstr "Nutzerkonto bestätigt." - -#: ../../include/account.php:471 -#, php-format -msgid "Registration revoked for %s" -msgstr "Registrierung für %s wurde widerrufen" - -#: ../../include/account.php:756 ../../include/account.php:758 -msgid "Click here to upgrade." -msgstr "Klicke hier, um das Upgrade durchzuführen." - -#: ../../include/account.php:764 -msgid "This action exceeds the limits set by your subscription plan." -msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements." - -#: ../../include/account.php:769 -msgid "This action is not available under your subscription plan." -msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar." - -#: ../../include/datetime.php:147 -msgid "Birthday" -msgstr "Geburtstag" - -#: ../../include/datetime.php:149 -msgid "Age: " -msgstr "Alter:" - -#: ../../include/datetime.php:151 -msgid "YYYY-MM-DD or MM-DD" -msgstr "JJJJ-MM-TT oder MM-TT" - -#: ../../include/datetime.php:286 ../../boot.php:2554 -msgid "never" -msgstr "Nie" - -#: ../../include/datetime.php:292 -msgid "less than a second ago" -msgstr "Vor weniger als einer Sekunde" - -#: ../../include/datetime.php:310 -#, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" -msgstr "vor %1$d %2$s" - -#: ../../include/datetime.php:321 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "Jahr" -msgstr[1] "Jahre" - -#: ../../include/datetime.php:324 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "Monat" -msgstr[1] "Monate" - -#: ../../include/datetime.php:327 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "Woche" -msgstr[1] "Wochen" - -#: ../../include/datetime.php:330 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "Tag" -msgstr[1] "Tage" - -#: ../../include/datetime.php:333 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "Stunde" -msgstr[1] "Stunden" - -#: ../../include/datetime.php:336 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "Minute" -msgstr[1] "Minuten" - -#: ../../include/datetime.php:339 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "Sekunde" -msgstr[1] "Sekunden" - -#: ../../include/datetime.php:576 -#, php-format -msgid "%1$s's birthday" -msgstr "%1$ss Geburtstag" - -#: ../../include/datetime.php:577 -#, php-format -msgid "Happy Birthday %1$s" -msgstr "Alles Gute zum Geburtstag, %1$s" - -#: ../../include/language.php:380 -msgid "Select an alternate language" -msgstr "Wähle eine alternative Sprache" - -#: ../../include/import.php:30 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." -msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen." - -#: ../../include/import.php:90 -msgid "Channel clone failed. Import failed." -msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen." - -#: ../../include/import.php:1354 -msgid "Unable to import element \"" -msgstr "Element konnte nicht importiert werden." - -#: ../../include/bbcode.php:134 ../../include/bbcode.php:901 -#: ../../include/bbcode.php:904 ../../include/bbcode.php:909 -#: ../../include/bbcode.php:912 ../../include/bbcode.php:915 -#: ../../include/bbcode.php:918 ../../include/bbcode.php:923 -#: ../../include/bbcode.php:926 ../../include/bbcode.php:931 -#: ../../include/bbcode.php:934 ../../include/bbcode.php:937 -#: ../../include/bbcode.php:940 +#: ../../include/bbcode.php:134 ../../include/bbcode.php:962 +#: ../../include/bbcode.php:965 ../../include/bbcode.php:970 +#: ../../include/bbcode.php:973 ../../include/bbcode.php:976 +#: ../../include/bbcode.php:979 ../../include/bbcode.php:984 +#: ../../include/bbcode.php:987 ../../include/bbcode.php:992 +#: ../../include/bbcode.php:995 ../../include/bbcode.php:998 +#: ../../include/bbcode.php:1001 msgid "Image/photo" msgstr "Bild/Foto" -#: ../../include/bbcode.php:173 ../../include/bbcode.php:951 +#: ../../include/bbcode.php:173 ../../include/bbcode.php:1012 msgid "Encrypted content" msgstr "Verschlüsselter Inhalt" @@ -13111,7 +13191,7 @@ msgstr "Klicke zum Öffnen/Schließen" msgid "spoiler" msgstr "Spoiler" -#: ../../include/bbcode.php:889 +#: ../../include/bbcode.php:950 msgid "$1 wrote:" msgstr "$1 schrieb:" @@ -13247,66 +13327,66 @@ msgstr "Größe der Avatare von Themenstartern" msgid "Set size of followup author photos" msgstr "Größe der Avatare von Kommentatoren" -#: ../../boot.php:1171 +#: ../../boot.php:1175 #, php-format msgctxt "opensearch" msgid "Search %1$s (%2$s)" msgstr "Suche %1$s (%2$s)" -#: ../../boot.php:1171 +#: ../../boot.php:1175 msgctxt "opensearch" msgid "$Projectname" msgstr "$Projectname" -#: ../../boot.php:1489 +#: ../../boot.php:1493 #, php-format msgid "Update %s failed. See error logs." msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen." -#: ../../boot.php:1492 +#: ../../boot.php:1496 #, php-format msgid "Update Error at %s" msgstr "Aktualisierungsfehler auf %s" -#: ../../boot.php:1696 +#: ../../boot.php:1700 msgid "" "Create an account to access services and applications within the Hubzilla" msgstr "Erstelle ein Konto, um Anwendungen und Dienste innerhalb von Hubzilla nutzen zu können." -#: ../../boot.php:1717 +#: ../../boot.php:1721 msgid "Login/Email" msgstr "Anmelden/E-Mail" -#: ../../boot.php:1718 +#: ../../boot.php:1722 msgid "Password" msgstr "Kennwort" -#: ../../boot.php:1719 +#: ../../boot.php:1723 msgid "Remember me" msgstr "Angaben speichern" -#: ../../boot.php:1722 +#: ../../boot.php:1726 msgid "Forgot your password?" msgstr "Passwort vergessen?" -#: ../../boot.php:2291 +#: ../../boot.php:2287 msgid "toggle mobile" msgstr "auf/von mobile Ansicht wechseln" -#: ../../boot.php:2446 +#: ../../boot.php:2442 msgid "Website SSL certificate is not valid. Please correct." msgstr "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben." -#: ../../boot.php:2449 +#: ../../boot.php:2445 #, php-format msgid "[hubzilla] Website SSL error for %s" msgstr "[hubzilla] Website-SSL-Fehler für %s" -#: ../../boot.php:2553 +#: ../../boot.php:2562 msgid "Cron/Scheduled tasks not running." msgstr "Cron-Aufgaben laufen nicht." -#: ../../boot.php:2557 +#: ../../boot.php:2566 #, php-format msgid "[hubzilla] Cron tasks not running on %s" msgstr "[hubzilla] Cron-Aufgaben für %s laufen nicht" diff --git a/view/de/hstrings.php b/view/de/hstrings.php index 8292cc3bd..5d2a987ae 100644 --- a/view/de/hstrings.php +++ b/view/de/hstrings.php @@ -62,10 +62,10 @@ App::$strings["WARNING:"] = "WARNUNG:"; App::$strings["Create new folder"] = "Neuen Ordner anlegen"; App::$strings["Upload file"] = "Datei hochladen"; App::$strings["Drop files here to immediately upload"] = "Dateien zum sofortigen Hochladen hier fallen lassen"; -App::$strings["Permission denied"] = "Keine Berechtigung"; App::$strings["Permission denied."] = "Berechtigung verweigert."; App::$strings["Not Found"] = "Nicht gefunden"; App::$strings["Page not found."] = "Seite nicht gefunden."; +App::$strings["Permission denied"] = "Keine Berechtigung"; App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut."; App::$strings["Welcome %s. Remote authentication successful."] = "Willkommen %s. Entfernte Authentifizierung erfolgreich."; App::$strings["Requested profile is not available."] = "Das angefragte Profil ist nicht verfügbar."; @@ -101,31 +101,120 @@ App::$strings["yes"] = "ja"; App::$strings["Registration"] = "Registrierung"; App::$strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."; App::$strings["Register"] = "Registrieren"; -App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Ansenden des Formulars. Wenn Du auf eine Login-Seite zurückgeleitet wirst, prüfe bitte auf neue Mail mit entsprechenden Hinweisen."; +App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Diese Seite verlangt möglicherweise eine Emailbestätigung nach dem Absenden des Formulars. Wenn Du auf eine Login-Seite zurückgeleitet wirst, prüfe bitte Deinen Posteingang auf neue Mails mit entsprechenden Hinweisen."; App::$strings["Fetching URL returns error: %1\$s"] = "Abrufen der URL gab einen Fehler zurück: %1\$s"; -App::$strings["Public access denied."] = "Öffentlichen Zugriff verweigert."; -App::$strings["Item not found."] = "Element nicht gefunden."; -App::$strings["Your service plan only allows %d channels."] = "Dein Vertrag erlaubt nur %d Kanäle."; -App::$strings["Nothing to import."] = "Nichts zu importieren."; -App::$strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden"; -App::$strings["Imported file is empty."] = "Die importierte Datei ist leer."; -App::$strings["Warning: Database versions differ by %1\$d updates."] = "Achtung: Datenbankversionen unterscheiden sich um %1\$d Aktualisierungen."; -App::$strings["Cloned channel not found. Import failed."] = "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."; -App::$strings["No channel. Import failed."] = "Kein Kanal. Import fehlgeschlagen."; -App::$strings["Import completed."] = "Import abgeschlossen."; -App::$strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen."; -App::$strings["Import Channel"] = "Kanal importieren"; -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."] = "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren."; -App::$strings["File to Upload"] = "Hochzuladende Datei:"; -App::$strings["Or provide the old server/hub details"] = "Oder gib die Details Deines bisherigen \$Projectname-Hubs ein"; -App::$strings["Your old identity address (xyz@example.com)"] = "Bisherige Kanal-Adresse (xyz@example.com)"; -App::$strings["Your old login email address"] = "Deine alte Login-E-Mail-Adresse"; -App::$strings["Your old login password"] = "Dein altes Passwort"; -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."] = "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige \$Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."; -App::$strings["Make this hub my primary location"] = "Dieser $Pojectname-Hub ist mein primärer Hub."; -App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importiere bestehende Beiträge falls möglich (experimentell - begrenzt durch zur Verfügung stehenden Speicher"; -App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen."; +App::$strings["Profile Match"] = "Profil-Übereinstimmungen"; +App::$strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu."; +App::$strings["is interested in:"] = "interessiert sich für:"; +App::$strings["Connect"] = "Verbinden"; +App::$strings["No matches"] = "Keine Übereinstimmungen"; +App::$strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen."; +App::$strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden."; +App::$strings["Connection updated."] = "Verbindung aktualisiert."; +App::$strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren."; +App::$strings["is now connected to"] = "ist jetzt verbunden mit"; +App::$strings["No"] = "Nein"; +App::$strings["Yes"] = "Ja"; +App::$strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen."; +App::$strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar."; +App::$strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen."; +App::$strings["Connection has been removed."] = "Verbindung wurde gelöscht."; +App::$strings["View Profile"] = "Profil ansehen"; +App::$strings["View %s's profile"] = "%ss Profil ansehen"; +App::$strings["Refresh Permissions"] = "Zugriffsrechte neu laden"; +App::$strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abfragen"; +App::$strings["Recent Activity"] = "Kürzliche Aktivitäten"; +App::$strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare"; +App::$strings["Unblock"] = "Freigeben"; +App::$strings["Block"] = "Blockieren"; +App::$strings["Block (or Unblock) all communications with this connection"] = "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen"; +App::$strings["This connection is blocked!"] = "Die Verbindung ist geblockt!"; +App::$strings["Unignore"] = "Nicht ignorieren"; +App::$strings["Ignore"] = "Ignorieren"; +App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen"; +App::$strings["This connection is ignored!"] = "Die Verbindung wird ignoriert!"; +App::$strings["Unarchive"] = "Aus Archiv zurückholen"; +App::$strings["Archive"] = "Archivieren"; +App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)"; +App::$strings["This connection is archived!"] = "Die Verbindung ist archiviert!"; +App::$strings["Unhide"] = "Wieder sichtbar machen"; +App::$strings["Hide"] = "Verstecken"; +App::$strings["Hide or Unhide this connection from your other connections"] = "Diese Verbindung vor anderen Verbindungen verstecken/zeigen"; +App::$strings["This connection is hidden!"] = "Die Verbindung ist versteckt!"; +App::$strings["Delete this connection"] = "Verbindung löschen"; +App::$strings["Me"] = "Ich"; +App::$strings["Family"] = "Familie"; +App::$strings["Friends"] = "Freunde"; +App::$strings["Acquaintances"] = "Bekannte"; +App::$strings["All"] = "Alle"; +App::$strings["Approve this connection"] = "Verbindung genehmigen"; +App::$strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"; +App::$strings["Set Affinity"] = "Beziehung festlegen"; +App::$strings["Set Profile"] = "Profil festlegen"; +App::$strings["Set Affinity & Profile"] = "Beziehung und Profile festlegen"; +App::$strings["none"] = "Keine"; +App::$strings["Connection Default Permissions"] = "Standardzugriffsrechte für neue Verbindungen:"; +App::$strings["Connection: %s"] = "Verbindung: %s"; +App::$strings["Apply these permissions automatically"] = "Diese Berechtigungen automatisch anwenden"; +App::$strings["Connection requests will be approved without your interaction"] = "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist."; +App::$strings["This connection's primary address is"] = "Die Hauptadresse der Verbindung ist"; +App::$strings["Available locations:"] = "Verfügbare Klone:"; +App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet."; +App::$strings["Connection Tools"] = "Verbindungswerkzeuge"; +App::$strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen"; +App::$strings["Rating"] = "Bewertung"; +App::$strings["Slide to adjust your rating"] = "Verschieben, um Deine Bewertung einzustellen"; +App::$strings["Optionally explain your rating"] = "Optional kannst Du Deine Bewertung begründen"; +App::$strings["Custom Filter"] = "Benutzerdefinierter Filter"; +App::$strings["Only import posts with this text"] = "Nur Beiträge mit diesem Text importieren"; +App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren."; +App::$strings["Do not import posts with this text"] = "Beiträge mit diesem Text nicht importieren"; +App::$strings["This information is public!"] = "Diese Information ist öffentlich!"; +App::$strings["Connection Pending Approval"] = "Verbindung wartet auf Bestätigung"; +App::$strings["inherited"] = "geerbt"; App::$strings["Submit"] = "Absenden"; +App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."; +App::$strings["Their Settings"] = "Deren Einstellungen"; +App::$strings["My Settings"] = "Meine Einstellungen"; +App::$strings["Individual Permissions"] = "Individuelle Zugriffsrechte"; +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."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden."; +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."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen."; +App::$strings["Last update:"] = "Letzte Aktualisierung:"; +App::$strings["Invalid message"] = "Ungültige Beitrags-ID (mid)"; +App::$strings["no results"] = "keine Ergebnisse"; +App::$strings["channel sync processed"] = "Kanal-Sync verarbeitet"; +App::$strings["queued"] = "zur Warteschlange hinzugefügt"; +App::$strings["posted"] = "zugestellt"; +App::$strings["accepted for delivery"] = "für Zustellung akzeptiert"; +App::$strings["updated"] = "aktualisiert"; +App::$strings["update ignored"] = "Aktualisierung ignoriert"; +App::$strings["permission denied"] = "Zugriff verweigert"; +App::$strings["recipient not found"] = "Empfänger nicht gefunden."; +App::$strings["mail recalled"] = "Mail widerrufen"; +App::$strings["duplicate mail received"] = "Doppelte Mail erhalten"; +App::$strings["mail delivered"] = "Mail zugestellt"; +App::$strings["Delivery report for %1\$s"] = "Zustellungsbericht für %1\$s"; +App::$strings["Options"] = "Optionen"; +App::$strings["Redeliver"] = "Erneut zustellen"; +App::$strings["Bookmark added"] = "Lesezeichen hinzugefügt"; +App::$strings["My Bookmarks"] = "Meine Lesezeichen"; +App::$strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte"; +App::$strings["network"] = "Netzwerk"; +App::$strings["RSS"] = "RSS"; +App::$strings["Location not found."] = "Klon nicht gefunden."; +App::$strings["Location lookup failed."] = "Nachschlagen des Kanal-Ortes fehlgeschlagen"; +App::$strings["Please select another location to become primary before removing the primary location."] = "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst."; +App::$strings["Syncing locations"] = "Synchronisiere Klone"; +App::$strings["No locations found."] = "Keine Klon-Adressen gefunden."; +App::$strings["Manage Channel Locations"] = "Klon-Adressen verwalten"; +App::$strings["Location"] = "Ort"; +App::$strings["Address"] = "Adresse"; +App::$strings["Primary"] = "Primär"; +App::$strings["Drop"] = "Löschen"; +App::$strings["Sync Now"] = "Jetzt synchronisieren"; +App::$strings["Please wait several minutes between consecutive operations."] = "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!"; +App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst."; +App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt."; App::$strings["Continue"] = "Fortfahren"; App::$strings["Premium Channel Setup"] = "Premium-Kanal-Einrichtung"; App::$strings["Enable premium channel connection restrictions"] = "Einschränkungen für einen Premium-Kanal aktivieren"; @@ -135,39 +224,31 @@ 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."] = "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite."; App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"; App::$strings["Restricted or Premium Channel"] = "Eingeschränkter oder Premium-Kanal"; -App::$strings["Search"] = "Suche"; -App::$strings["Items tagged with: %s"] = "Beiträge mit Schlagwort: %s"; -App::$strings["Search results for: %s"] = "Suchergebnisse für: %s"; -App::$strings["Bookmark added"] = "Lesezeichen hinzugefügt"; -App::$strings["My Bookmarks"] = "Meine Lesezeichen"; -App::$strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte"; -App::$strings["Item not found"] = "Element nicht gefunden"; -App::$strings["Block Name"] = "Block-Name"; -App::$strings["Insert web link"] = "Link einfügen"; -App::$strings["Title (optional)"] = "Titel (optional)"; -App::$strings["Edit Block"] = "Block bearbeiten"; -App::$strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator"; -App::$strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor"; -App::$strings["Profile"] = "Profil"; -App::$strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."; -App::$strings["Visible To"] = "Sichtbar für"; -App::$strings["All Connections"] = "Alle Verbindungen"; App::$strings["Invalid item."] = "Ungültiges Element."; App::$strings["Channel not found."] = "Kanal nicht gefunden."; 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["Save to Folder:"] = "Speichern in Ordner:"; App::$strings["- select -"] = "– auswählen –"; App::$strings["Save"] = "Speichern"; -App::$strings["This site is not a directory server"] = "Diese Webseite ist kein Verzeichnisserver"; -App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken"; +App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."; +App::$strings["Create a new channel"] = "Neuen Kanal anlegen"; +App::$strings["Create New"] = "Neu anlegen"; +App::$strings["Channel Manager"] = "Kanal-Manager"; +App::$strings["Current Channel"] = "Aktueller Kanal"; +App::$strings["Switch to one of your channels by selecting it."] = "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst."; +App::$strings["Default Channel"] = "Standard Kanal"; +App::$strings["Make Default"] = "Zum Standard machen"; +App::$strings["%d new messages"] = "%d neue Nachrichten"; +App::$strings["%d new introductions"] = "%d neue Vorstellungen"; +App::$strings["Delegated Channel"] = "Delegierte Kanäle"; App::$strings["Blocked"] = "Blockiert"; App::$strings["Ignored"] = "Ignoriert"; App::$strings["Hidden"] = "Versteckt"; App::$strings["Archived"] = "Archiviert"; App::$strings["New"] = "Neu"; -App::$strings["All"] = "Alle"; App::$strings["New Connections"] = "Neue Verbindungen"; App::$strings["Show pending (new) connections"] = "Ausstehende (neue) Verbindungsanfragen anzeigen"; +App::$strings["All Connections"] = "Alle Verbindungen"; App::$strings["Show all connections"] = "Alle Verbindungen anzeigen"; App::$strings["Only show blocked connections"] = "Nur blockierte Verbindungen anzeigen"; App::$strings["Only show ignored connections"] = "Nur ignorierte Verbindungen anzeigen"; @@ -184,9 +265,9 @@ App::$strings["Connected"] = "Verbunden"; App::$strings["Approve connection"] = "Verbindung genehmigen"; App::$strings["Approve"] = "Genehmigen"; App::$strings["Ignore connection"] = "Verbindung ignorieren"; -App::$strings["Ignore"] = "Ignorieren"; App::$strings["Recent activity"] = "Kürzliche Aktivitäten"; App::$strings["Connections"] = "Verbindungen"; +App::$strings["Search"] = "Suche"; App::$strings["Search your connections"] = "Verbindungen durchsuchen"; App::$strings["Connections search"] = "Verbindung suchen"; App::$strings["Find"] = "Finde"; @@ -224,6 +305,7 @@ App::$strings["Debugging"] = "Debugging"; App::$strings["Log file"] = "Protokolldatei"; App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis."; App::$strings["Log level"] = "Protokollstufe"; +App::$strings["Item not found."] = "Element nicht gefunden."; App::$strings["Plugin %s disabled."] = "Plug-In %s deaktiviert."; App::$strings["Plugin %s enabled."] = "Plug-In %s aktiviert."; App::$strings["Disable"] = "Deaktivieren"; @@ -334,8 +416,6 @@ App::$strings["Request date"] = "Antragsdatum"; App::$strings["Email"] = "E-Mail"; App::$strings["No registrations."] = "Keine Registrierungen."; App::$strings["Deny"] = "Verweigern"; -App::$strings["Block"] = "Blockieren"; -App::$strings["Unblock"] = "Freigeben"; App::$strings["ID"] = "ID"; App::$strings["All Channels"] = "Alle Kanäle"; App::$strings["Register date"] = "Registrierungs-Datum"; @@ -369,7 +449,6 @@ App::$strings["Allow Code"] = "Code erlauben"; App::$strings["Disallow Code"] = "Code sperren"; App::$strings["Channel"] = "Kanal"; App::$strings["UID"] = "UID"; -App::$strings["Address"] = "Adresse"; 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?"] = "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?"; 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?"] = "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?"; App::$strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert"; @@ -386,9 +465,7 @@ App::$strings["Default"] = "Standard"; App::$strings["mobile"] = "mobil"; App::$strings["experimental"] = "experimentell"; App::$strings["unsupported"] = "nicht unterstützt"; -App::$strings["No"] = "Nein"; App::$strings["Yes - with approval"] = "Ja - mit Zustimmung"; -App::$strings["Yes"] = "Ja"; App::$strings["My site is not a public server"] = "Mein Server ist kein öffentlicher Server"; App::$strings["My site has paid access only"] = "Meine Seite hat nur bezahlten Zugriff"; App::$strings["My site has free access only"] = "Meine Seite hat nur freien Zugriff"; @@ -415,6 +492,8 @@ App::$strings["Members can set their own technical comfort level by default"] = App::$strings["Banner/Logo"] = "Banner/Logo"; App::$strings["Administrator Information"] = "Administrator-Informationen"; App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."; +App::$strings["Site Information"] = "Seiteninformationen"; +App::$strings["Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here"] = "Öffentlich sichtbare Beschreibung dieses Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann hier verwendet werden."; App::$strings["System language"] = "System-Sprache"; App::$strings["System theme"] = "System-Theme"; App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>"; @@ -464,25 +543,35 @@ App::$strings["Maximum Load Average"] = "Maximales Load Average"; App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"; App::$strings["Expiration period in days for imported (grid/network) content"] = "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen"; App::$strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte"; -App::$strings["Remote privacy information not available."] = "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar."; -App::$strings["Visible to:"] = "Sichtbar für:"; +App::$strings["Public Hubs"] = "Öffentliche Hubs"; +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."] = "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im \$Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen."; +App::$strings["Hub URL"] = "Hub-URL"; +App::$strings["Access Type"] = "Zugriffstyp"; +App::$strings["Registration Policy"] = "Registrierungsrichtlinien"; +App::$strings["Stats"] = "Statistiken"; +App::$strings["Software"] = "Software"; +App::$strings["Ratings"] = "Bewertungen"; +App::$strings["Rate"] = "Bewerten"; +App::$strings["View"] = "Ansicht"; +App::$strings["Item not found"] = "Element nicht gefunden"; App::$strings["Layout Name"] = "Layout-Name"; App::$strings["Layout Description (Optional)"] = "Layout-Beschreibung (optional)"; App::$strings["Edit Layout"] = "Layout bearbeiten"; App::$strings["Page link"] = "Seiten-Link"; +App::$strings["Insert web link"] = "Link einfügen"; App::$strings["Edit Webpage"] = "Webseite bearbeiten"; -App::$strings["Channel added."] = "Kanal hinzugefügt."; -App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."; -App::$strings["Create a new channel"] = "Neuen Kanal anlegen"; -App::$strings["Create New"] = "Neu anlegen"; -App::$strings["Channel Manager"] = "Kanal-Manager"; -App::$strings["Current Channel"] = "Aktueller Kanal"; -App::$strings["Switch to one of your channels by selecting it."] = "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst."; -App::$strings["Default Channel"] = "Standard Kanal"; -App::$strings["Make Default"] = "Zum Standard machen"; -App::$strings["%d new messages"] = "%d neue Nachrichten"; -App::$strings["%d new introductions"] = "%d neue Vorstellungen"; -App::$strings["Delegated Channel"] = "Delegierte Kanäle"; +App::$strings["Photos"] = "Fotos"; +App::$strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können."; +App::$strings["Posts and comments"] = "Beiträge und Kommentare"; +App::$strings["Only posts"] = "Nur Beiträge"; +App::$strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."; +App::$strings["No such group"] = "Gruppe nicht gefunden"; +App::$strings["No such channel"] = "Kanal nicht gefunden"; +App::$strings["forum"] = "Forum"; +App::$strings["Search Results For:"] = "Suchergebnisse für:"; +App::$strings["Privacy group is empty"] = "Gruppe ist leer"; +App::$strings["Privacy group: "] = "Gruppe:"; +App::$strings["Invalid connection."] = "Ungültige Verbindung."; App::$strings["Unable to update menu."] = "Kann Menü nicht aktualisieren."; App::$strings["Unable to create menu."] = "Kann Menü nicht erstellen."; App::$strings["Menu Name"] = "Name des Menüs"; @@ -493,7 +582,6 @@ App::$strings["Allow Bookmarks"] = "Lesezeichen erlauben"; App::$strings["Menu may be used to store saved bookmarks"] = "Im Menü können gespeicherte Lesezeichen abgelegt werden"; App::$strings["Submit and proceed"] = "Absenden und fortfahren"; App::$strings["Menus"] = "Menüs"; -App::$strings["Drop"] = "Löschen"; App::$strings["Created"] = "Erstellt"; App::$strings["Edited"] = "Geändert"; App::$strings["Bookmarks allowed"] = "Lesezeichen erlaubt"; @@ -526,10 +614,6 @@ App::$strings["Version ID"] = "Versions-ID"; App::$strings["Price of app"] = "Preis der App"; App::$strings["Location (URL) to purchase app"] = "Ort (URL), um die App zu kaufen"; App::$strings["Edit post"] = "Bearbeite Beitrag"; -App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren"; -App::$strings["Return to your app and insert this Security Code:"] = "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:"; -App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen."; -App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"; App::$strings["Documentation Search"] = "Suche in der Dokumentation"; App::$strings["\$Projectname Documentation"] = "\$Projectname-Dokumentation"; App::$strings["Share content from Firefox to \$Projectname"] = "Inhalte von Firefox nach \$Projectname teilen"; @@ -549,86 +633,7 @@ App::$strings["Copy/paste this URL to link file from a web page"] = "Diese URL v App::$strings["Share this file"] = "Diese Datei freigeben"; App::$strings["Show URL to this file"] = "URL zu dieser Datei anzeigen"; App::$strings["Notify your contacts about this file"] = "Meine Kontakte über diese Datei benachrichtigen"; -App::$strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden."; -App::$strings["Empty post discarded."] = "Leeren Beitrag verworfen."; -App::$strings["Executable content type not permitted to this channel."] = "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben."; -App::$strings["Duplicate post suppressed."] = "Doppelter Beitrag unterdrückt."; -App::$strings["System error. Post not saved."] = "Systemfehler. Beitrag nicht gespeichert."; -App::$strings["Unable to obtain post information from database."] = "Beitragsinformationen können nicht aus der Datenbank abgerufen werden."; -App::$strings["You have reached your limit of %1$.0f top level posts."] = "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."; -App::$strings["You have reached your limit of %1$.0f webpages."] = "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."; -App::$strings["toggle full screen mode"] = "auf Vollbildmodus umschalten"; -App::$strings["Profile not found."] = "Profil nicht gefunden."; -App::$strings["Profile deleted."] = "Profil gelöscht."; -App::$strings["Profile-"] = "Profil-"; -App::$strings["New profile created."] = "Neues Profil erstellt."; -App::$strings["Profile unavailable to clone."] = "Profil kann nicht geklont werden."; -App::$strings["Profile unavailable to export."] = "Dieses Profil kann nicht exportiert werden."; -App::$strings["Profile Name is required."] = "Profil-Name erforderlich."; -App::$strings["Marital Status"] = "Familienstand"; -App::$strings["Romantic Partner"] = "Romantische Partner"; -App::$strings["Likes"] = "Gefällt"; -App::$strings["Dislikes"] = "Gefällt nicht"; -App::$strings["Work/Employment"] = "Arbeit/Anstellung"; -App::$strings["Religion"] = "Religion"; -App::$strings["Political Views"] = "Politische Ansichten"; -App::$strings["Gender"] = "Geschlecht"; -App::$strings["Sexual Preference"] = "Sexuelle Orientierung"; -App::$strings["Homepage"] = "Webseite"; -App::$strings["Interests"] = "Hobbys/Interessen"; -App::$strings["Location"] = "Ort"; -App::$strings["Profile updated."] = "Profil aktualisiert."; -App::$strings["Hide your connections list from viewers of this profile"] = "Deine Verbindungen vor Betrachtern dieses Profils verbergen"; -App::$strings["Edit Profile Details"] = "Bearbeite Profil-Details"; -App::$strings["View this profile"] = "Dieses Profil ansehen"; -App::$strings["Edit visibility"] = "Sichtbarkeit bearbeiten"; -App::$strings["Profile Tools"] = "Profilwerkzeuge"; -App::$strings["Change cover photo"] = "Titelbild ändern"; -App::$strings["Change profile photo"] = "Profilfoto ändern"; -App::$strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen"; -App::$strings["Clone this profile"] = "Dieses Profil klonen"; -App::$strings["Delete this profile"] = "Dieses Profil löschen"; -App::$strings["Add profile things"] = "Sachen zum Profil hinzufügen"; -App::$strings["Personal"] = "Persönlich"; -App::$strings["Relation"] = "Beziehung"; -App::$strings["Miscellaneous"] = "Verschiedenes"; -App::$strings["Import profile from file"] = "Profil aus einer Datei importieren"; -App::$strings["Export profile to file"] = "Profil in eine Datei exportieren"; -App::$strings["Your gender"] = "Dein Geschlecht"; -App::$strings["Marital status"] = "Familienstand"; -App::$strings["Sexual preference"] = "Sexuelle Orientierung"; -App::$strings["Profile name"] = "Profilname"; -App::$strings["This is your default profile."] = "Das ist Dein Standardprofil."; -App::$strings["Your full name"] = "Dein voller Name"; -App::$strings["Title/Description"] = "Titel/Beschreibung"; -App::$strings["Street address"] = "Straße und Hausnummer"; -App::$strings["Locality/City"] = "Wohnort"; -App::$strings["Region/State"] = "Region/Bundesstaat"; -App::$strings["Postal/Zip code"] = "Postleitzahl"; -App::$strings["Country"] = "Land"; -App::$strings["Who (if applicable)"] = "Wer (falls anwendbar)"; -App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com"; -App::$strings["Since (date)"] = "Seit (Datum)"; -App::$strings["Tell us about yourself"] = "Erzähle uns ein wenig von Dir"; -App::$strings["Homepage URL"] = "Homepage-URL"; -App::$strings["Hometown"] = "Heimatort"; -App::$strings["Political views"] = "Politische Ansichten"; -App::$strings["Religious views"] = "Religiöse Ansichten"; -App::$strings["Keywords used in directory listings"] = "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden"; -App::$strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software"; -App::$strings["Musical interests"] = "Musikalische Interessen"; -App::$strings["Books, literature"] = "Bücher, Literatur"; -App::$strings["Television"] = "Fernsehen"; -App::$strings["Film/Dance/Culture/Entertainment"] = "Film/Tanz/Kultur/Unterhaltung"; -App::$strings["Hobbies/Interests"] = "Hobbys/Interessen"; -App::$strings["Love/Romance"] = "Liebe/Romantik"; -App::$strings["School/Education"] = "Schule/Ausbildung"; -App::$strings["Contact information and social networks"] = "Kontaktinformation und soziale Netzwerke"; -App::$strings["My other channels"] = "Meine anderen Kanäle"; -App::$strings["Profile Image"] = "Profilfoto:"; -App::$strings["Edit Profiles"] = "Profile bearbeiten"; -App::$strings["network"] = "Netzwerk"; -App::$strings["RSS"] = "RSS"; +App::$strings["Public access denied."] = "Öffentlichen Zugriff verweigert."; App::$strings["%d rating"] = array( 0 => "%d Bewertung", 1 => "%d Bewertungen", @@ -641,7 +646,6 @@ App::$strings["Location:"] = "Ort:"; App::$strings["Description:"] = "Beschreibung:"; App::$strings["Hometown:"] = "Heimatstadt:"; App::$strings["About:"] = "Über:"; -App::$strings["Connect"] = "Verbinden"; App::$strings["Public Forum:"] = "Öffentliches Forum:"; App::$strings["Keywords: "] = "Schlüsselwörter:"; App::$strings["Don't suggest"] = "Nicht vorschlagen"; @@ -658,6 +662,77 @@ App::$strings["Reverse Alphabetic"] = "Entgegengesetzt alphabetisch"; App::$strings["Newest to Oldest"] = "Neueste zuerst"; App::$strings["Oldest to Newest"] = "Älteste zuerst"; App::$strings["No entries (some entries may be hidden)."] = "Keine Einträge gefunden (einige könnten versteckt sein)."; +App::$strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden."; +App::$strings["Empty post discarded."] = "Leeren Beitrag verworfen."; +App::$strings["Executable content type not permitted to this channel."] = "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben."; +App::$strings["Duplicate post suppressed."] = "Doppelter Beitrag unterdrückt."; +App::$strings["System error. Post not saved."] = "Systemfehler. Beitrag nicht gespeichert."; +App::$strings["Unable to obtain post information from database."] = "Beitragsinformationen können nicht aus der Datenbank abgerufen werden."; +App::$strings["You have reached your limit of %1$.0f top level posts."] = "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."; +App::$strings["You have reached your limit of %1$.0f webpages."] = "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."; +App::$strings["toggle full screen mode"] = "auf Vollbildmodus umschalten"; +App::$strings["Channel added."] = "Kanal hinzugefügt."; +App::$strings["Unable to lookup recipient."] = "Konnte den Empfänger nicht finden."; +App::$strings["Unable to communicate with requested channel."] = "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen."; +App::$strings["Cannot verify requested channel."] = "Verifizierung des angeforderten Kanals fehlgeschlagen."; +App::$strings["Selected channel has private message restrictions. Send failed."] = "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen."; +App::$strings["Messages"] = "Nachrichten"; +App::$strings["Message recalled."] = "Nachricht widerrufen."; +App::$strings["Conversation removed."] = "Unterhaltung gelöscht."; +App::$strings["Please enter a link URL:"] = "Gib eine URL ein:"; +App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM"; +App::$strings["Requested channel is not in this network"] = "Angeforderter Kanal ist nicht in diesem Netzwerk."; +App::$strings["Send Private Message"] = "Private Nachricht senden"; +App::$strings["To:"] = "An:"; +App::$strings["Subject:"] = "Betreff:"; +App::$strings["Your message:"] = "Deine Nachricht:"; +App::$strings["Attach file"] = "Datei anhängen"; +App::$strings["Send"] = "Absenden"; +App::$strings["Set expiration date"] = "Verfallsdatum"; +App::$strings["Encrypt text"] = "Text verschlüsseln"; +App::$strings["Delete message"] = "Nachricht löschen"; +App::$strings["Delivery report"] = "Zustellungsbericht"; +App::$strings["Recall message"] = "Nachricht widerrufen"; +App::$strings["Message has been recalled."] = "Die Nachricht wurde widerrufen."; +App::$strings["Delete Conversation"] = "Unterhaltung löschen"; +App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten."; +App::$strings["Send Reply"] = "Antwort senden"; +App::$strings["Your message for %s (%s):"] = "Deine Nachricht für %s (%s):"; +App::$strings["webpage"] = "Webseite"; +App::$strings["block"] = "Block"; +App::$strings["layout"] = "Layout"; +App::$strings["menu"] = "Menü"; +App::$strings["%s element installed"] = "Element für %s installiert"; +App::$strings["%s element installation failed"] = "Installation des Elements %s fehlgeschlagen"; +App::$strings["Nothing to import."] = "Nichts zu importieren."; +App::$strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden"; +App::$strings["Imported file is empty."] = "Die importierte Datei ist leer."; +App::$strings["Warning: Database versions differ by %1\$d updates."] = "Achtung: Datenbankversionen unterscheiden sich um %1\$d Aktualisierungen."; +App::$strings["Import completed"] = "Import abgeschlossen"; +App::$strings["Import Items"] = "Beiträge importieren"; +App::$strings["Use this form to import existing posts and content from an export file."] = "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren."; +App::$strings["File to Upload"] = "Hochzuladende Datei:"; +App::$strings["Total invitation limit exceeded."] = "Einladungslimit überschritten."; +App::$strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse."; +App::$strings["Please join us on \$Projectname"] = "Schließe Dich uns auf \$Projectname an!"; +App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines \$Projectname-Servers."; +App::$strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden."; +App::$strings["%d message sent."] = array( + 0 => "%d Nachricht gesendet.", + 1 => "%d Nachrichten gesendet.", +); +App::$strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen"; +App::$strings["Send invitations"] = "Einladungen senden"; +App::$strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:"; +App::$strings["Please join my community on \$Projectname."] = "Schließe Dich uns auf \$Projectname an!"; +App::$strings["You will need to supply this invitation code:"] = "Bitte verwende bei der Registrierung den folgenden Einladungscode:"; +App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registriere Dich auf einem beliebigen \$Projectname-Hub (sie sind alle miteinander verbunden)"; +App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Gib meine \$Projectname-Adresse im Suchfeld ein."; +App::$strings["or visit"] = "oder besuche"; +App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]"; +App::$strings["Block Name"] = "Block-Name"; +App::$strings["Title (optional)"] = "Titel (optional)"; +App::$strings["Edit Block"] = "Block bearbeiten"; App::$strings["Privacy group created."] = "Gruppe wurde erstellt."; App::$strings["Could not create privacy group."] = "Gruppe konnte nicht erstellt werden."; App::$strings["Privacy group not found."] = "Gruppe nicht gefunden."; @@ -671,68 +746,11 @@ App::$strings["Privacy group editor"] = "Gruppeneditor"; App::$strings["Members"] = "Mitglieder"; App::$strings["All Connected Channels"] = "Alle verbundenen Kanäle"; App::$strings["Click on a channel to add or remove."] = "Wähle einen Kanal zum hinzufügen oder entfernen aus."; -App::$strings["webpage"] = "Webseite"; -App::$strings["block"] = "Block"; -App::$strings["layout"] = "Layout"; -App::$strings["menu"] = "Menü"; -App::$strings["%s element installed"] = "Element für %s installiert"; -App::$strings["%s element installation failed"] = "Installation des Elements %s fehlgeschlagen"; -App::$strings["Import completed"] = "Import abgeschlossen"; -App::$strings["Import Items"] = "Beiträge importieren"; -App::$strings["Use this form to import existing posts and content from an export file."] = "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren."; -App::$strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können."; -App::$strings["Posts and comments"] = "Beiträge und Kommentare"; -App::$strings["Only posts"] = "Nur Beiträge"; -App::$strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."; -App::$strings["Location not found."] = "Klon nicht gefunden."; -App::$strings["Location lookup failed."] = "Nachschlagen des Kanal-Ortes fehlgeschlagen"; -App::$strings["Please select another location to become primary before removing the primary location."] = "Bitte mache einen anderen Kanal-Ort zum primären Ort, bevor Du den primären Ort löschst."; -App::$strings["Syncing locations"] = "Synchronisiere Klone"; -App::$strings["No locations found."] = "Keine Klon-Adressen gefunden."; -App::$strings["Manage Channel Locations"] = "Klon-Adressen verwalten"; -App::$strings["Primary"] = "Primär"; -App::$strings["Sync Now"] = "Jetzt synchronisieren"; -App::$strings["Please wait several minutes between consecutive operations."] = "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!"; -App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst."; -App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt."; -App::$strings["# Accounts"] = "Anzahl der Konten"; -App::$strings["# blocked accounts"] = "Anzahl der blockierten Konten"; -App::$strings["# expired accounts"] = "Anzahl der abgelaufenen Konten"; -App::$strings["# expiring accounts"] = "Anzahl der ablaufenden Konten"; -App::$strings["# Channels"] = "Anzahl der Kanäle"; -App::$strings["# primary"] = "Anzahl der primären Kanäle"; -App::$strings["# clones"] = "Anzahl der Klone"; -App::$strings["Message queues"] = "Nachrichten-Warteschlangen"; -App::$strings["Your software should be updated"] = "Die installierte Software sollte aktualisiert werden"; -App::$strings["Summary"] = "Zusammenfassung"; -App::$strings["Registered accounts"] = "Registrierte Konten"; -App::$strings["Pending registrations"] = "Ausstehende Registrierungen"; -App::$strings["Registered channels"] = "Registrierte Kanäle"; -App::$strings["Active plugins"] = "Aktive Plug-Ins"; -App::$strings["Version"] = "Version"; -App::$strings["Repository version (master)"] = "Repository-Version (master)"; -App::$strings["Repository version (dev)"] = "Repository-Version (dev)"; -App::$strings["Like/Dislike"] = "Mögen/Nicht mögen"; -App::$strings["This action is restricted to members."] = "Diese Aktion kann nur von Mitgliedern ausgeführt werden."; -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."] = "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner \$Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues \$Projectname-Mitglied</a>."; -App::$strings["Invalid request."] = "Ungültige Anfrage."; -App::$strings["channel"] = "Kanal"; -App::$strings["thing"] = "Sache"; -App::$strings["Channel unavailable."] = "Kanal nicht vorhanden."; -App::$strings["Previous action reversed."] = "Die vorherige Aktion wurde rückgängig gemacht."; -App::$strings["photo"] = "Foto"; -App::$strings["status"] = "Status"; -App::$strings["event"] = "Termin"; -App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s"; -App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s nicht"; -App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s stimmt %2\$ss %3\$s zu"; -App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s lehnt %2\$ss %3\$s ab"; -App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s enthält sich zu %2\$ss %3\$s"; -App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil"; -App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s nicht teil"; -App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt vielleicht an %2\$ss %3\$s teil"; -App::$strings["Action completed."] = "Aktion durchgeführt."; -App::$strings["Thank you."] = "Vielen Dank."; +App::$strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator"; +App::$strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor"; +App::$strings["Profile"] = "Profil"; +App::$strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."; +App::$strings["Visible To"] = "Sichtbar für"; App::$strings["Hub not found."] = "Server nicht gefunden."; App::$strings["Unable to create element."] = "Element konnte nicht erstellt werden."; App::$strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren."; @@ -764,7 +782,6 @@ App::$strings["Menu item could not be deleted."] = "Menü-Bestandteil kann nicht App::$strings["Edit Menu Element"] = "Bearbeite Menü-Bestandteil"; App::$strings["Link text"] = "Link Text"; App::$strings["No ratings"] = "Keine Bewertungen"; -App::$strings["Ratings"] = "Bewertungen"; App::$strings["Rating: "] = "Bewertung: "; App::$strings["Website: "] = "Webseite: "; App::$strings["Description: "] = "Beschreibung: "; @@ -772,25 +789,8 @@ App::$strings["Item not available."] = "Element nicht verfügbar."; App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s ist %2\$s"; App::$strings["Mood"] = "Laune"; App::$strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"; -App::$strings["Invalid message"] = "Ungültige Beitrags-ID (mid)"; -App::$strings["no results"] = "keine Ergebnisse"; -App::$strings["channel sync processed"] = "Kanal-Sync verarbeitet"; -App::$strings["queued"] = "zur Warteschlange hinzugefügt"; -App::$strings["posted"] = "zugestellt"; -App::$strings["accepted for delivery"] = "für Zustellung akzeptiert"; -App::$strings["updated"] = "aktualisiert"; -App::$strings["update ignored"] = "Aktualisierung ignoriert"; -App::$strings["permission denied"] = "Zugriff verweigert"; -App::$strings["recipient not found"] = "Empfänger nicht gefunden."; -App::$strings["mail recalled"] = "Mail widerrufen"; -App::$strings["duplicate mail received"] = "Doppelte Mail erhalten"; -App::$strings["mail delivered"] = "Mail zugestellt"; -App::$strings["Delivery report for %1\$s"] = "Zustellungsbericht für %1\$s"; -App::$strings["Options"] = "Optionen"; -App::$strings["Redeliver"] = "Erneut zustellen"; App::$strings["No more system notifications."] = "Keine System-Benachrichtigungen mehr."; App::$strings["System Notifications"] = "System-Benachrichtigungen"; -App::$strings["Item is not editable"] = "Element kann nicht bearbeitet werden."; App::$strings["Page owner information could not be retrieved."] = "Informationen über den Besitzer der Seite konnten nicht gefunden werden."; App::$strings["Profile Photos"] = "Profilfotos"; App::$strings["Album not found."] = "Album nicht gefunden."; @@ -897,11 +897,12 @@ App::$strings["If you don't have a command line version of PHP installed on serv App::$strings["PHP executable path"] = "PHP-Pfad zu ausführbarer Datei"; App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren."; App::$strings["Command line PHP"] = "PHP-Befehlszeile"; +App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "Prüfung auf Kommandozeilen-PHP fehlgeschlagen, da shell_exec() deaktiviert ist. Dies wird aber benötigt."; App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert."; App::$strings["This is required for message delivery to work."] = "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert."; App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv"; App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden."; -App::$strings["You can adjust these settings in the servers php.ini."] = "Du kannst diese Einstellungen in der php.ini des Servers ändern."; +App::$strings["You can adjust these settings in the server php.ini file."] = "Du kannst diese Einstellungen in der php.ini - Datei des Servers anpassen."; App::$strings["PHP upload limits"] = "PHP-Hochladebeschränkungen"; App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen."; App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung."; @@ -914,8 +915,10 @@ App::$strings["mb_string PHP module"] = "mb_string-PHP-Modul"; App::$strings["xml PHP module"] = "xml-PHP-Modul"; App::$strings["Apache mod_rewrite module"] = "Apache-mod_rewrite-Modul"; App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert."; -App::$strings["proc_open"] = "proc_open"; -App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert"; +App::$strings["exec"] = "exec"; +App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Fehler: exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert"; +App::$strings["shell_exec"] = "shell_exec"; +App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Fehler: shell_exec ist erforderlich, aber entweder nicht installiert oder wurde in der php.ini deaktiviert"; App::$strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert."; App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert."; App::$strings["Error: openssl PHP module required but not installed."] = "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert."; @@ -927,12 +930,12 @@ App::$strings["This is most often a permission setting, as the web server may no App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst."; App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt."; App::$strings[".htconfig.php is writable"] = ".htconfig.php ist beschreibbar"; -App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "\$Projectname verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."; +App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Diese Software verwendet die Smarty3 Template Engine, um Vorlagen für die Webdarstellung zu verarbeiten. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."; App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses."; App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat."; App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält."; App::$strings["%s is writable"] = "%s ist beschreibbar"; -App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Web-Server benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Hubzilla-Stammverzeichnisses"; +App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Diese Software benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Web-Stammverzeichnisses."; App::$strings["store is writable"] = "store ist schreibbar"; App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server."; App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich."; @@ -948,42 +951,11 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr App::$strings["Errors encountered creating database tables."] = "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten."; App::$strings["<h1>What next</h1>"] = "<h1>Was als Nächstes</h1>"; App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten."; -App::$strings["No such group"] = "Gruppe nicht gefunden"; -App::$strings["No such channel"] = "Kanal nicht gefunden"; -App::$strings["forum"] = "Forum"; -App::$strings["Search Results For:"] = "Suchergebnisse für:"; -App::$strings["Privacy group is empty"] = "Gruppe ist leer"; -App::$strings["Privacy group: "] = "Gruppe:"; -App::$strings["Invalid connection."] = "Ungültige Verbindung."; +App::$strings["Item is not editable"] = "Element kann nicht bearbeitet werden."; +App::$strings["This site is not a directory server"] = "Diese Webseite ist kein Verzeichnisserver"; App::$strings["Create Channel"] = "Einen neuen Kanal anlegen"; App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Ein Kanal ist Deine Identität in diesem Netzwerk. Er kann eine Person, ein Blog oder ein Forum repräsentieren, nur um ein paar Beispiele zu nennen. Kanäle können Verbindungen miteinander eingehen, um Informationen zu teilen, jeweils basierend auf sehr detaillierten Berechtigungseinstellungen."; App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server."; -App::$strings["Unable to lookup recipient."] = "Konnte den Empfänger nicht finden."; -App::$strings["Unable to communicate with requested channel."] = "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen."; -App::$strings["Cannot verify requested channel."] = "Verifizierung des angeforderten Kanals fehlgeschlagen."; -App::$strings["Selected channel has private message restrictions. Send failed."] = "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen."; -App::$strings["Messages"] = "Nachrichten"; -App::$strings["Message recalled."] = "Nachricht widerrufen."; -App::$strings["Conversation removed."] = "Unterhaltung gelöscht."; -App::$strings["Please enter a link URL:"] = "Gib eine URL ein:"; -App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM"; -App::$strings["Requested channel is not in this network"] = "Angeforderter Kanal ist nicht in diesem Netzwerk."; -App::$strings["Send Private Message"] = "Private Nachricht senden"; -App::$strings["To:"] = "An:"; -App::$strings["Subject:"] = "Betreff:"; -App::$strings["Your message:"] = "Deine Nachricht:"; -App::$strings["Attach file"] = "Datei anhängen"; -App::$strings["Send"] = "Absenden"; -App::$strings["Set expiration date"] = "Verfallsdatum"; -App::$strings["Encrypt text"] = "Text verschlüsseln"; -App::$strings["Delete message"] = "Nachricht löschen"; -App::$strings["Delivery report"] = "Zustellungsbericht"; -App::$strings["Recall message"] = "Nachricht widerrufen"; -App::$strings["Message has been recalled."] = "Die Nachricht wurde widerrufen."; -App::$strings["Delete Conversation"] = "Unterhaltung löschen"; -App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten."; -App::$strings["Send Reply"] = "Antwort senden"; -App::$strings["Your message for %s (%s):"] = "Deine Nachricht für %s (%s):"; App::$strings["Mark all system notifications seen"] = "Markiere alle System-Benachrichtigungen als gesehen"; App::$strings["Poke"] = "Anstupsen"; App::$strings["Poke somebody"] = "Jemanden anstupsen"; @@ -992,104 +964,138 @@ App::$strings["Poke, prod or do other things to somebody"] = "Jemanden anstupsen App::$strings["Recipient"] = "Empfänger"; App::$strings["Choose what you wish to do to recipient"] = "Wähle, was Du mit dem/r Empfänger/in tun willst"; App::$strings["Make this post private"] = "Diesen Beitrag privat machen"; -App::$strings["Total invitation limit exceeded."] = "Einladungslimit überschritten."; -App::$strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse."; -App::$strings["Please join us on \$Projectname"] = "Schließe Dich uns auf \$Projectname an!"; -App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines \$Projectname-Servers."; -App::$strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden."; -App::$strings["%d message sent."] = array( - 0 => "%d Nachricht gesendet.", - 1 => "%d Nachrichten gesendet.", -); -App::$strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen"; -App::$strings["Send invitations"] = "Einladungen senden"; -App::$strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:"; -App::$strings["Please join my community on \$Projectname."] = "Schließe Dich uns auf \$Projectname an!"; -App::$strings["You will need to supply this invitation code:"] = "Bitte verwende bei der Registrierung den folgenden Einladungscode:"; -App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registriere Dich auf einem beliebigen \$Projectname-Hub (sie sind alle miteinander verbunden)"; -App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Gib meine \$Projectname-Adresse im Suchfeld ein."; -App::$strings["or visit"] = "oder besuche"; -App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]"; +App::$strings["Profile not found."] = "Profil nicht gefunden."; +App::$strings["Profile deleted."] = "Profil gelöscht."; +App::$strings["Profile-"] = "Profil-"; +App::$strings["New profile created."] = "Neues Profil erstellt."; +App::$strings["Profile unavailable to clone."] = "Profil kann nicht geklont werden."; +App::$strings["Profile unavailable to export."] = "Dieses Profil kann nicht exportiert werden."; +App::$strings["Profile Name is required."] = "Profil-Name erforderlich."; +App::$strings["Marital Status"] = "Familienstand"; +App::$strings["Romantic Partner"] = "Romantische Partner"; +App::$strings["Likes"] = "Gefällt"; +App::$strings["Dislikes"] = "Gefällt nicht"; +App::$strings["Work/Employment"] = "Arbeit/Anstellung"; +App::$strings["Religion"] = "Religion"; +App::$strings["Political Views"] = "Politische Ansichten"; +App::$strings["Gender"] = "Geschlecht"; +App::$strings["Sexual Preference"] = "Sexuelle Orientierung"; +App::$strings["Homepage"] = "Webseite"; +App::$strings["Interests"] = "Hobbys/Interessen"; +App::$strings["Profile updated."] = "Profil aktualisiert."; +App::$strings["Hide your connections list from viewers of this profile"] = "Deine Verbindungen vor Betrachtern dieses Profils verbergen"; +App::$strings["Edit Profile Details"] = "Bearbeite Profil-Details"; +App::$strings["View this profile"] = "Dieses Profil ansehen"; +App::$strings["Edit visibility"] = "Sichtbarkeit bearbeiten"; +App::$strings["Profile Tools"] = "Profilwerkzeuge"; +App::$strings["Change cover photo"] = "Titelbild ändern"; +App::$strings["Change profile photo"] = "Profilfoto ändern"; +App::$strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen"; +App::$strings["Clone this profile"] = "Dieses Profil klonen"; +App::$strings["Delete this profile"] = "Dieses Profil löschen"; +App::$strings["Add profile things"] = "Sachen zum Profil hinzufügen"; +App::$strings["Personal"] = "Persönlich"; +App::$strings["Relation"] = "Beziehung"; +App::$strings["Miscellaneous"] = "Verschiedenes"; +App::$strings["Import profile from file"] = "Profil aus einer Datei importieren"; +App::$strings["Export profile to file"] = "Profil in eine Datei exportieren"; +App::$strings["Your gender"] = "Dein Geschlecht"; +App::$strings["Marital status"] = "Familienstand"; +App::$strings["Sexual preference"] = "Sexuelle Orientierung"; +App::$strings["Profile name"] = "Profilname"; +App::$strings["This is your default profile."] = "Das ist Dein Standardprofil."; +App::$strings["Your full name"] = "Dein voller Name"; +App::$strings["Title/Description"] = "Titel/Beschreibung"; +App::$strings["Street address"] = "Straße und Hausnummer"; +App::$strings["Locality/City"] = "Wohnort"; +App::$strings["Region/State"] = "Region/Bundesstaat"; +App::$strings["Postal/Zip code"] = "Postleitzahl"; +App::$strings["Country"] = "Land"; +App::$strings["Who (if applicable)"] = "Wer (falls anwendbar)"; +App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com"; +App::$strings["Since (date)"] = "Seit (Datum)"; +App::$strings["Tell us about yourself"] = "Erzähle uns ein wenig von Dir"; +App::$strings["Homepage URL"] = "Homepage-URL"; +App::$strings["Hometown"] = "Heimatort"; +App::$strings["Political views"] = "Politische Ansichten"; +App::$strings["Religious views"] = "Religiöse Ansichten"; +App::$strings["Keywords used in directory listings"] = "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden"; +App::$strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software"; +App::$strings["Musical interests"] = "Musikalische Interessen"; +App::$strings["Books, literature"] = "Bücher, Literatur"; +App::$strings["Television"] = "Fernsehen"; +App::$strings["Film/Dance/Culture/Entertainment"] = "Film/Tanz/Kultur/Unterhaltung"; +App::$strings["Hobbies/Interests"] = "Hobbys/Interessen"; +App::$strings["Love/Romance"] = "Liebe/Romantik"; +App::$strings["School/Education"] = "Schule/Ausbildung"; +App::$strings["Contact information and social networks"] = "Kontaktinformation und soziale Netzwerke"; +App::$strings["My other channels"] = "Meine anderen Kanäle"; +App::$strings["Profile Image"] = "Profilfoto:"; +App::$strings["Edit Profiles"] = "Profile bearbeiten"; App::$strings["Unable to find your hub."] = "Konnte Deinen Server nicht finden."; App::$strings["Post successful."] = "Veröffentlichung erfolgreich."; App::$strings["This setting requires special processing and editing has been blocked."] = "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert."; App::$strings["Configuration Editor"] = "Konfigurationseditor"; 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."] = "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird."; -App::$strings["Version %s"] = "Version %s"; -App::$strings["Installed plugins/addons/apps:"] = "Installierte Plugins/Addons/Apps"; -App::$strings["No installed plugins/addons/apps"] = "Keine installierten Plugins/Addons/Apps"; -App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Dieser Hub ist Teil von \$Projectname – ein globales, kooperatives Netzwerk aus dezentralen Websites, die Rücksicht auf Deine Privatsphäre nehmen."; -App::$strings["Tag: "] = "Schlagwort: "; -App::$strings["Last background fetch: "] = "Letzter Hintergrundabruf:"; -App::$strings["Current load average: "] = "Aktuelles Load Average:"; -App::$strings["Running at web location"] = "Erreichbar unter der Web-Adresse"; -App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Bitte besuchen Sie <a href=\"http://hubzilla.org\">hubzilla.org</a>, um mehr über \$Projectname zu erfahren."; -App::$strings["Bug reports and issues: please visit"] = "Probleme oder Fehler gefunden? Bitte besuche"; -App::$strings["\$projectname issues"] = "\$projectname-Bugtracker"; -App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com"; -App::$strings["Site Administrators"] = "Administratoren"; App::$strings["Blocks"] = "Blöcke"; App::$strings["Block Title"] = "Titel des Blocks"; -App::$strings["View"] = "Ansicht"; App::$strings["Layouts"] = "Layouts"; App::$strings["Help"] = "Hilfe"; App::$strings["Comanche page description language help"] = "Hilfe zur Comanche-Seitenbeschreibungssprache"; App::$strings["Layout Description"] = "Layout-Beschreibung"; App::$strings["Download PDL file"] = "PDL-Datei herunterladen"; -App::$strings["Rating"] = "Bewertung"; App::$strings["Website:"] = "Webseite:"; App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Kanal [%s] (auf diesem Server noch unbekannt)"; App::$strings["Rating (this information is public)"] = "Bewertung (öffentlich sichtbar)"; App::$strings["Optionally explain your rating (this information is public)"] = "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)"; +App::$strings["Like/Dislike"] = "Mögen/Nicht mögen"; +App::$strings["This action is restricted to members."] = "Diese Aktion kann nur von Mitgliedern ausgeführt werden."; +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."] = "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner \$Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues \$Projectname-Mitglied</a>."; +App::$strings["Invalid request."] = "Ungültige Anfrage."; +App::$strings["channel"] = "Kanal"; +App::$strings["thing"] = "Sache"; +App::$strings["Channel unavailable."] = "Kanal nicht vorhanden."; +App::$strings["Previous action reversed."] = "Die vorherige Aktion wurde rückgängig gemacht."; +App::$strings["photo"] = "Foto"; +App::$strings["status"] = "Status"; +App::$strings["event"] = "Termin"; +App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s"; +App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s nicht"; +App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s stimmt %2\$ss %3\$s zu"; +App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s lehnt %2\$ss %3\$s ab"; +App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s enthält sich zu %2\$ss %3\$s"; +App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil"; +App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s nicht teil"; +App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt vielleicht an %2\$ss %3\$s teil"; +App::$strings["Action completed."] = "Aktion durchgeführt."; +App::$strings["Thank you."] = "Vielen Dank."; App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."; App::$strings["Use Photo for Profile"] = "Foto für Profil verwenden"; App::$strings["Upload Profile Photo"] = "Lade neues Profilfoto hoch"; App::$strings["Use"] = "Verwenden"; +App::$strings["Items tagged with: %s"] = "Beiträge mit Schlagwort: %s"; +App::$strings["Search results for: %s"] = "Suchergebnisse für: %s"; App::$strings["No channel."] = "Kein Kanal."; App::$strings["Common connections"] = "Gemeinsame Verbindungen"; App::$strings["No connections in common."] = "Keine gemeinsamen Verbindungen."; -App::$strings["Calendar entries imported."] = "Kalendereinträge wurden importiert."; -App::$strings["No calendar entries found."] = "Keine Kalendereinträge gefunden."; -App::$strings["Event can not end before it has started."] = "Termin-Ende liegt vor dem Beginn."; -App::$strings["Unable to generate preview."] = "Vorschau konnte nicht erzeugt werden."; -App::$strings["Event title and start time are required."] = "Titel und Startzeit des Termins sind erforderlich."; -App::$strings["Event not found."] = "Termin nicht gefunden."; -App::$strings["Edit event title"] = "Termintitel bearbeiten"; -App::$strings["Event title"] = "Termintitel"; -App::$strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)"; -App::$strings["Edit Category"] = "Kategorie bearbeiten"; -App::$strings["Category"] = "Kategorie"; -App::$strings["Edit start date and time"] = "Startdatum und -zeit bearbeiten"; -App::$strings["Start date and time"] = "Startdatum und -zeit"; -App::$strings["Finish date and time are not known or not relevant"] = "Enddatum und -zeit sind unbekannt oder irrelevant"; -App::$strings["Edit finish date and time"] = "Enddatum und -zeit bearbeiten"; -App::$strings["Finish date and time"] = "Enddatum und -zeit"; -App::$strings["Adjust for viewer timezone"] = "An die Zeitzone des Betrachters anpassen"; -App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien."; -App::$strings["Edit Description"] = "Beschreibung bearbeiten"; -App::$strings["Edit Location"] = "Ort bearbeiten"; -App::$strings["Permission settings"] = "Berechtigungs-Einstellungen"; -App::$strings["Advanced Options"] = "Weitere Optionen"; -App::$strings["l, F j"] = "l, j. F"; -App::$strings["Edit event"] = "Termin bearbeiten"; -App::$strings["Delete event"] = "Termin löschen"; -App::$strings["Link to Source"] = "Link zur Quelle"; -App::$strings["calendar"] = "Kalender"; -App::$strings["Edit Event"] = "Termin bearbeiten"; -App::$strings["Create Event"] = "Termin anlegen"; -App::$strings["Export"] = "Exportieren"; -App::$strings["Month"] = "Monat"; -App::$strings["Week"] = "Woche"; -App::$strings["Day"] = "Tag"; -App::$strings["Today"] = "Heute"; -App::$strings["Event removed"] = "Termin gelöscht"; -App::$strings["Failed to remove event"] = "Termin konnte nicht gelöscht werden"; -App::$strings["Photos"] = "Fotos"; +App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren"; +App::$strings["Return to your app and insert this Security Code:"] = "Gehen Sie zu Ihrer App zurück und tragen Sie diesen Sicherheitscode ein:"; +App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen."; +App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"; App::$strings["sent you a private message"] = "hat Dir eine private Nachricht geschickt"; App::$strings["added your channel"] = "hat deinen Kanal hinzugefügt"; App::$strings["g A l F d"] = "l, d. F, G:i \\U\\h\\r"; App::$strings["[today]"] = "[Heute]"; App::$strings["posted an event"] = "hat einen Termin veröffentlicht"; +App::$strings["About this site"] = "Über diese Seite"; +App::$strings["Site Name"] = "Seitenname"; +App::$strings["Administrator"] = "Administrator"; +App::$strings["Software and Project information"] = "Software und Projektinformationen"; +App::$strings["This site is powered by \$Projectname"] = "Diese Website wird bereitgestellt durch \$Projectname"; +App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Verbundene, dezentrale Netzwerk- und Identitätsdienste, ermöglicht mittels Zot"; +App::$strings["Version %s"] = "Version %s"; +App::$strings["Project homepage"] = "Projekt-Website"; +App::$strings["Developer homepage"] = "Entwickler-Website"; App::$strings["No valid account found."] = "Kein gültiges Konto gefunden."; App::$strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."; App::$strings["Site Member (%s)"] = "Nutzer (%s)"; @@ -1110,6 +1116,7 @@ App::$strings["Select a bookmark folder"] = "Lesezeichenordner wählen"; App::$strings["Save Bookmark"] = "Lesezeichen speichern"; App::$strings["URL of bookmark"] = "URL des Lesezeichens"; App::$strings["Or enter new bookmark folder name"] = "Oder gib einen neuen Namen für den Lesezeichenordner ein"; +App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken"; App::$strings["Authentication failed."] = "Authentifizierung fehlgeschlagen."; App::$strings["Remote Authentication"] = "Entfernte Authentifizierung"; App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Deine Kanal-Adresse (z. B. channel@example.com)"; @@ -1139,78 +1146,33 @@ App::$strings["You may also export your posts and conversations for a particular App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Um alle Beiträge eines bestimmten Jahres, zum Beispiel dieses Jahres, auszuwählen, klicke <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>"] = "Um alle Beiträge eines bestimmten Monats auszuwählen, zum Beispiel vom Januar diesen Jahres, klicke <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)."] = "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1\$s\">%2\$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst."; -App::$strings["Public Hubs"] = "Öffentliche Hubs"; -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."] = "Die hier aufgeführten Hubs sind öffentlich und erlauben die Registrierung im \$Projectname Netzwerk. Alle Hubs dieses Netzwerks sind miteinander verbunden, so dass die Mitgliedschaft auf einem Hub die Verbindung zu beliebigen Seiten und Kanälen auf anderen Hubs ermöglicht. Es könnte sein, dass einige dieser Hubs kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den Seiten der einzelnen Hubs <strong>könnten</strong> jeweils nähere Informationen dazu stehen."; -App::$strings["Hub URL"] = "Hub-URL"; -App::$strings["Access Type"] = "Zugriffstyp"; -App::$strings["Registration Policy"] = "Registrierungsrichtlinien"; -App::$strings["Stats"] = "Statistiken"; -App::$strings["Software"] = "Software"; -App::$strings["Rate"] = "Bewerten"; -App::$strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen."; -App::$strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden."; -App::$strings["Connection updated."] = "Verbindung aktualisiert."; -App::$strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren."; -App::$strings["is now connected to"] = "ist jetzt verbunden mit"; -App::$strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen."; -App::$strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar."; -App::$strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen."; -App::$strings["Connection has been removed."] = "Verbindung wurde gelöscht."; -App::$strings["View Profile"] = "Profil ansehen"; -App::$strings["View %s's profile"] = "%ss Profil ansehen"; -App::$strings["Refresh Permissions"] = "Zugriffsrechte neu laden"; -App::$strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abfragen"; -App::$strings["Recent Activity"] = "Kürzliche Aktivitäten"; -App::$strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare"; -App::$strings["Block (or Unblock) all communications with this connection"] = "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen"; -App::$strings["This connection is blocked!"] = "Die Verbindung ist geblockt!"; -App::$strings["Unignore"] = "Nicht ignorieren"; -App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen"; -App::$strings["This connection is ignored!"] = "Die Verbindung wird ignoriert!"; -App::$strings["Unarchive"] = "Aus Archiv zurückholen"; -App::$strings["Archive"] = "Archivieren"; -App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)"; -App::$strings["This connection is archived!"] = "Die Verbindung ist archiviert!"; -App::$strings["Unhide"] = "Wieder sichtbar machen"; -App::$strings["Hide"] = "Verstecken"; -App::$strings["Hide or Unhide this connection from your other connections"] = "Diese Verbindung vor anderen Verbindungen verstecken/zeigen"; -App::$strings["This connection is hidden!"] = "Die Verbindung ist versteckt!"; -App::$strings["Delete this connection"] = "Verbindung löschen"; -App::$strings["Me"] = "Ich"; -App::$strings["Family"] = "Familie"; -App::$strings["Friends"] = "Freunde"; -App::$strings["Acquaintances"] = "Bekannte"; -App::$strings["Approve this connection"] = "Verbindung genehmigen"; -App::$strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"; -App::$strings["Set Affinity"] = "Beziehung festlegen"; -App::$strings["Set Profile"] = "Profil festlegen"; -App::$strings["Set Affinity & Profile"] = "Beziehung und Profile festlegen"; -App::$strings["none"] = "Keine"; -App::$strings["Connection Default Permissions"] = "Standardzugriffsrechte für neue Verbindungen:"; -App::$strings["Connection: %s"] = "Verbindung: %s"; -App::$strings["Apply these permissions automatically"] = "Diese Berechtigungen automatisch anwenden"; -App::$strings["Connection requests will be approved without your interaction"] = "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist."; -App::$strings["This connection's primary address is"] = "Die Hauptadresse der Verbindung ist"; -App::$strings["Available locations:"] = "Verfügbare Klone:"; -App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet."; -App::$strings["Connection Tools"] = "Verbindungswerkzeuge"; -App::$strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen"; -App::$strings["Slide to adjust your rating"] = "Verschieben, um Deine Bewertung einzustellen"; -App::$strings["Optionally explain your rating"] = "Optional kannst Du Deine Bewertung begründen"; -App::$strings["Custom Filter"] = "Benutzerdefinierter Filter"; -App::$strings["Only import posts with this text"] = "Nur Beiträge mit diesem Text importieren"; -App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren."; -App::$strings["Do not import posts with this text"] = "Beiträge mit diesem Text nicht importieren"; -App::$strings["This information is public!"] = "Diese Information ist öffentlich!"; -App::$strings["Connection Pending Approval"] = "Verbindung wartet auf Bestätigung"; -App::$strings["inherited"] = "geerbt"; -App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."; -App::$strings["Their Settings"] = "Deren Einstellungen"; -App::$strings["My Settings"] = "Meine Einstellungen"; -App::$strings["Individual Permissions"] = "Individuelle Zugriffsrechte"; -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."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden."; -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."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen."; -App::$strings["Last update:"] = "Letzte Aktualisierung:"; +App::$strings["Permissions denied."] = "Berechtigung verweigert."; +App::$strings["l, F j"] = "l, j. F"; +App::$strings["Link to Source"] = "Link zur Quelle"; +App::$strings["Edit Event"] = "Termin bearbeiten"; +App::$strings["Create Event"] = "Termin anlegen"; +App::$strings["Export"] = "Exportieren"; +App::$strings["Import"] = "Import"; +App::$strings["Today"] = "Heute"; +App::$strings["# Accounts"] = "Anzahl der Konten"; +App::$strings["# blocked accounts"] = "Anzahl der blockierten Konten"; +App::$strings["# expired accounts"] = "Anzahl der abgelaufenen Konten"; +App::$strings["# expiring accounts"] = "Anzahl der ablaufenden Konten"; +App::$strings["# Channels"] = "Anzahl der Kanäle"; +App::$strings["# primary"] = "Anzahl der primären Kanäle"; +App::$strings["# clones"] = "Anzahl der Klone"; +App::$strings["Message queues"] = "Nachrichten-Warteschlangen"; +App::$strings["Your software should be updated"] = "Die installierte Software sollte aktualisiert werden"; +App::$strings["Summary"] = "Zusammenfassung"; +App::$strings["Registered accounts"] = "Registrierte Konten"; +App::$strings["Pending registrations"] = "Ausstehende Registrierungen"; +App::$strings["Registered channels"] = "Registrierte Kanäle"; +App::$strings["Active plugins"] = "Aktive Plug-Ins"; +App::$strings["Version"] = "Version"; +App::$strings["Repository version (master)"] = "Repository-Version (master)"; +App::$strings["Repository version (dev)"] = "Repository-Version (dev)"; +App::$strings["Remote privacy information not available."] = "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar."; +App::$strings["Visible to:"] = "Sichtbar für:"; App::$strings["No service class restrictions found."] = "Keine Dienstklassenbeschränkungen gefunden."; App::$strings["Import Webpage Elements"] = "Webseitenelemente importieren"; App::$strings["Import selected"] = "Import ausgewählt"; @@ -1236,14 +1198,23 @@ App::$strings["NEW"] = "NEU"; App::$strings["Remove all files"] = "Alle Dateien löschen"; App::$strings["Remove this file"] = "Diese Datei löschen"; App::$strings["Not found"] = "Nicht gefunden"; -App::$strings["Wiki"] = "Wiki"; -App::$strings["Sandbox"] = "Sandbox"; -App::$strings["\"# Wiki Sandbox\\n\\nContent you **edit** and **preview** here *will not be saved*.\""] = "\"# Wiki Sandkasten\\n\\nInhalte, die Du hier **veränderst** und **als Vorschau anzeigst**, *werden nicht gespeichert*.\""; +App::$strings["Invalid channel"] = "Ungültiger Kanal"; +App::$strings["Error retrieving wiki"] = "Fehler beim Abrufen des Wiki"; +App::$strings["Error creating zip file export folder"] = "Fehler bei der Erzeugung des Zip-Datei Export-Verzeichnisses "; +App::$strings["Error downloading wiki: "] = "Fehler beim Herunterladen des Wiki:"; +App::$strings["Wikis"] = "Wikis"; +App::$strings["Download"] = "Herunterladen"; +App::$strings["Wiki name"] = "Name des Wiki"; +App::$strings["Content type"] = "Inhaltstyp"; +App::$strings["Create a status post for this wiki"] = "Erzeuge einen Statusbeitrag für dieses Wiki"; +App::$strings["Wiki not found"] = "Wiki nicht gefunden"; +App::$strings["Rename page"] = "Seite umbenennen"; +App::$strings["Error retrieving page content"] = "Fehler beim Abrufen des Seiteninhalts"; App::$strings["Revision Comparison"] = "Revisionsvergleich"; App::$strings["Revert"] = "Rückgängig machen"; -App::$strings["Enter the name of your new wiki:"] = "Gib einen Namen für Dein neues Wiki ein:"; -App::$strings["Enter the name of the new page:"] = "Geben Sie den Namen der neuen Seite ein:"; -App::$strings["Enter the new name:"] = "Geben Sie den neuen Namen ein:"; +App::$strings["Choose an available wiki from the list on the left."] = "Wähle ein vorhandenes Wiki aus der Liste auf der linken Seite aus."; +App::$strings["Source"] = "Quelle"; +App::$strings["New page name"] = "Neuer Seitenname"; App::$strings["Embed image from photo albums"] = "Bild aus Fotoalben einbetten"; App::$strings["Embed an image from your albums"] = "Betten Sie ein Bild aus Ihren Alben ein"; App::$strings["OK"] = "Ok"; @@ -1253,6 +1224,10 @@ App::$strings["Choose a different album..."] = "Wählen Sie ein anderes Album au App::$strings["Error getting album list"] = "Fehler beim Holen der Albenliste"; App::$strings["Error getting photo link"] = "Fehler beim Holen des Fotolinks"; App::$strings["Error getting album"] = "Fehler beim Holen des Albums"; +App::$strings["Error creating wiki. Invalid name."] = "Fehler beim Erstellen des Wiki. Ungültiger Name."; +App::$strings["Wiki created, but error creating Home page."] = "Das Wiki wurde erzeugt, aber es gab einen Fehler bei der Erstellung der Startseite"; +App::$strings["Error creating wiki"] = "Fehler beim Erstellen des Wiki"; +App::$strings["New page created"] = "Neue Seite erstellt"; App::$strings["Failed to create source. No channel selected."] = "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt."; App::$strings["Source created."] = "Quelle erstellt."; App::$strings["Source updated."] = "Quelle aktualisiert."; @@ -1333,6 +1308,7 @@ App::$strings["Anybody on the internet"] = "Jeder im Internet"; App::$strings["Publish your default profile in the network directory"] = "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen"; App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"; App::$strings["Your channel address is"] = "Deine Kanal-Adresse lautet"; +App::$strings["Your files/photos are accessible via WebDAV at"] = "Deine Dateien/Fotos sind via WebDAV verfügbar auf"; App::$strings["Channel Settings"] = "Kanal-Einstellungen"; App::$strings["Basic Settings"] = "Grundeinstellungen"; App::$strings["Full Name:"] = "Voller Name:"; @@ -1407,8 +1383,6 @@ App::$strings["Personal menu to display in your channel pages"] = "Eigenes Menü App::$strings["Remove this channel."] = "Diesen Kanal löschen"; App::$strings["Firefox Share \$Projectname provider"] = "\$Projectname-Provider für Firefox Share"; App::$strings["Start calendar week on monday"] = "Montag als erster Tag der Kalenderwoche"; -App::$strings["No feature settings configured"] = "Keine Funktions-Einstellungen konfiguriert"; -App::$strings["Feature/Addon Settings"] = "Funktions-/Addon-Einstellungen"; App::$strings["No special theme for mobile devices"] = "Keine spezielle Theme für mobile Geräte"; App::$strings["%s - (Experimental)"] = "%s – (experimentell)"; App::$strings["Display Settings"] = "Anzeige-Einstellungen"; @@ -1436,6 +1410,8 @@ App::$strings["Use blog/list mode on grid page"] = "Blog-/Listenmodus auf der Ne App::$strings["Channel page max height of content (in pixels)"] = "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)"; App::$strings["click to expand content exceeding this height"] = "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden."; App::$strings["Grid page max height of content (in pixels)"] = "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite"; +App::$strings["No feature settings configured"] = "Keine Funktions-Einstellungen konfiguriert"; +App::$strings["Feature/Addon Settings"] = "Funktions-/Addon-Einstellungen"; App::$strings["Tag removed"] = "Schlagwort entfernt"; App::$strings["Remove Item Tag"] = "Schlagwort entfernen"; App::$strings["Select a tag to remove: "] = "Schlagwort zum Entfernen auswählen:"; @@ -1453,8 +1429,21 @@ App::$strings["Name of thing e.g. something"] = "Name der Sache, z. B. irgendwas App::$strings["URL of thing (optional)"] = "URL der Sache (optional)"; App::$strings["URL for photo of thing (optional)"] = "URL eines Fotos der Sache (optional)"; App::$strings["Add Thing to your Profile"] = "Die Sache Deinem Profil hinzufügen"; -App::$strings["Permissions denied."] = "Berechtigung verweigert."; -App::$strings["Import"] = "Import"; +App::$strings["Your service plan only allows %d channels."] = "Dein Vertrag erlaubt nur %d Kanäle."; +App::$strings["Cloned channel not found. Import failed."] = "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."; +App::$strings["No channel. Import failed."] = "Kein Kanal. Import fehlgeschlagen."; +App::$strings["Import completed."] = "Import abgeschlossen."; +App::$strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen."; +App::$strings["Import Channel"] = "Kanal importieren"; +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."] = "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren."; +App::$strings["Or provide the old server/hub details"] = "Oder gib die Details Deines bisherigen \$Projectname-Hubs ein"; +App::$strings["Your old identity address (xyz@example.com)"] = "Bisherige Kanal-Adresse (xyz@example.com)"; +App::$strings["Your old login email address"] = "Deine alte Login-E-Mail-Adresse"; +App::$strings["Your old login password"] = "Dein altes Passwort"; +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."] = "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige \$Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."; +App::$strings["Make this hub my primary location"] = "Dieser $Pojectname-Hub ist mein primärer Hub."; +App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importiere bestehende Beiträge falls möglich (experimentell - begrenzt durch zur Verfügung stehenden Speicher"; +App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen."; App::$strings["No connections."] = "Keine Verbindungen."; App::$strings["Visit %s's profile [%s]"] = "%ss Profil [%s] besuchen"; App::$strings["View Connections"] = "Verbindungen anzeigen"; @@ -1474,17 +1463,43 @@ App::$strings["Expiration"] = "Verfall"; App::$strings["min"] = "min"; App::$strings["Xchan Lookup"] = "Xchan-Suche"; App::$strings["Lookup xchan beginning with (or webbie): "] = "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:"; -App::$strings["Profile Match"] = "Profil-Übereinstimmungen"; -App::$strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu."; -App::$strings["is interested in:"] = "interessiert sich für:"; -App::$strings["No matches"] = "Keine Übereinstimmungen"; +App::$strings["Calendar entries imported."] = "Kalendereinträge wurden importiert."; +App::$strings["No calendar entries found."] = "Keine Kalendereinträge gefunden."; +App::$strings["Event can not end before it has started."] = "Termin-Ende liegt vor dem Beginn."; +App::$strings["Unable to generate preview."] = "Vorschau konnte nicht erzeugt werden."; +App::$strings["Event title and start time are required."] = "Titel und Startzeit des Termins sind erforderlich."; +App::$strings["Event not found."] = "Termin nicht gefunden."; +App::$strings["Edit event title"] = "Termintitel bearbeiten"; +App::$strings["Event title"] = "Termintitel"; +App::$strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)"; +App::$strings["Edit Category"] = "Kategorie bearbeiten"; +App::$strings["Category"] = "Kategorie"; +App::$strings["Edit start date and time"] = "Startdatum und -zeit bearbeiten"; +App::$strings["Start date and time"] = "Startdatum und -zeit"; +App::$strings["Finish date and time are not known or not relevant"] = "Enddatum und -zeit sind unbekannt oder irrelevant"; +App::$strings["Edit finish date and time"] = "Enddatum und -zeit bearbeiten"; +App::$strings["Finish date and time"] = "Enddatum und -zeit"; +App::$strings["Adjust for viewer timezone"] = "An die Zeitzone des Betrachters anpassen"; +App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien."; +App::$strings["Edit Description"] = "Beschreibung bearbeiten"; +App::$strings["Edit Location"] = "Ort bearbeiten"; +App::$strings["Permission settings"] = "Berechtigungs-Einstellungen"; +App::$strings["Advanced Options"] = "Weitere Optionen"; +App::$strings["Edit event"] = "Termin bearbeiten"; +App::$strings["Delete event"] = "Termin löschen"; +App::$strings["calendar"] = "Kalender"; +App::$strings["Month"] = "Monat"; +App::$strings["Week"] = "Woche"; +App::$strings["Day"] = "Tag"; +App::$strings["Event removed"] = "Termin gelöscht"; +App::$strings["Failed to remove event"] = "Termin konnte nicht gelöscht werden"; App::$strings["Missing room name"] = "Der Chatraum hat keinen Namen"; App::$strings["Duplicate room name"] = "Name des Chatraums bereits vergeben"; App::$strings["Invalid room specifier."] = "Ungültiger Raumbezeichner."; App::$strings["Room not found."] = "Chatraum konnte nicht gefunden werden."; App::$strings["Room is full"] = "Der Chatraum ist voll"; App::$strings["Site Admin"] = "Hub-Administration"; -App::$strings["Bug Report"] = "Fehler-Rückmeldung"; +App::$strings["Report Bug"] = "Fehler melden"; App::$strings["View Bookmarks"] = "Lesezeichen ansehen"; App::$strings["My Chatrooms"] = "Meine Chaträume"; App::$strings["Firefox Share"] = "Teilen-Knopf für Firefox"; @@ -1492,6 +1507,7 @@ App::$strings["Remote Diagnostics"] = "Ferndiagnose"; App::$strings["Suggest Channels"] = "Kanäle vorschlagen"; App::$strings["Login"] = "Anmelden"; App::$strings["Grid"] = "Grid"; +App::$strings["Wiki"] = "Wiki"; App::$strings["Channel Home"] = "Mein Kanal"; App::$strings["Events"] = "Termine"; App::$strings["Directory"] = "Verzeichnis"; @@ -1506,6 +1522,20 @@ App::$strings["Language"] = "Sprache"; App::$strings["Post"] = "Beitrag schreiben"; App::$strings["Profile Photo"] = "Profilfoto"; App::$strings["Purchase"] = "Kaufen"; +App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen"; +App::$strings["Only me"] = "Nur ich"; +App::$strings["Public"] = "Öffentlich"; +App::$strings["Anybody in the \$Projectname network"] = "Jeder innerhalb des \$Projectname Netzwerks"; +App::$strings["Any account on %s"] = "Jedes Nutzerkonto auf %s"; +App::$strings["Any of my connections"] = "Alle meine Verbindungen"; +App::$strings["Only connections I specifically allow"] = "Nur Verbindungen, denen ich es explizit erlaube"; +App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)"; +App::$strings["Any connections including those who haven't yet been approved"] = "Alle Verbindungen einschließlich der noch nicht bestätigten"; +App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)."; +App::$strings["This is your default setting for who can view your default channel profile"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils."; +App::$strings["This is your default setting for who can view your connections"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen."; +App::$strings["This is your default setting for who can view your file storage and photos"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos."; +App::$strings["This is your default setting for the audience of your webpages"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."; App::$strings["Private Message"] = "Private Nachricht"; App::$strings["Select"] = "Auswählen"; App::$strings["Save to Folder"] = "In Ordner speichern"; @@ -1597,37 +1627,22 @@ App::$strings["Please visit %s to approve or reject the suggestion."] = "Bitte b App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Benachrichtigung]"; App::$strings["created a new post"] = "Neuer Beitrag wurde erzeugt"; App::$strings["commented on %s's post"] = "hat %s's Beitrag kommentiert"; -App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen"; -App::$strings["Only me"] = "Nur ich"; -App::$strings["Public"] = "Öffentlich"; -App::$strings["Anybody in the \$Projectname network"] = "Jeder innerhalb des \$Projectname Netzwerks"; -App::$strings["Any account on %s"] = "Jedes Nutzerkonto auf %s"; -App::$strings["Any of my connections"] = "Alle meine Verbindungen"; -App::$strings["Only connections I specifically allow"] = "Nur Verbindungen, denen ich es explizit erlaube"; -App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)"; -App::$strings["Any connections including those who haven't yet been approved"] = "Alle Verbindungen einschließlich der noch nicht bestätigten"; -App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)."; -App::$strings["This is your default setting for who can view your default channel profile"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils."; -App::$strings["This is your default setting for who can view your connections"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen."; -App::$strings["This is your default setting for who can view your file storage and photos"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos."; -App::$strings["This is your default setting for the audience of your webpages"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."; App::$strings["Flag Adult Photos"] = "Nicht jugendfreie Fotos markieren"; App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Stellt eine Option zum Verstecken von Fotos mit unangemessenen Inhalten in der Standard-Albumansicht bereit"; -App::$strings["Report Bug"] = "Fehler melden"; 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."] = ""; 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."] = ""; -App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = ""; -App::$strings["Guitar Chords"] = ""; -App::$strings["The complete online chord dictionary"] = ""; -App::$strings["Tuning"] = ""; -App::$strings["Chord name: example: Em7"] = ""; -App::$strings["Show for left handed stringing"] = ""; +App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Einige gültige Beispiele: A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; +App::$strings["Guitar Chords"] = "Gitarrenakkorde"; +App::$strings["The complete online chord dictionary"] = "Das komplette online Akkord-Verzeichnis"; +App::$strings["Tuning"] = "Stimmen"; +App::$strings["Chord name: example: Em7"] = "Beispiel Akkord Name: Em7"; +App::$strings["Show for left handed stringing"] = "Linkshänder-Besaitung anzeigen"; App::$strings["Quick Reference"] = "Schnellreferenz"; App::$strings["Diaspora Protocol Settings updated."] = "Diaspora-Protokolleinstellungen aktualisiert."; App::$strings["Enable the Diaspora protocol for this channel"] = "Diaspora-Protokoll für diesen Kanal aktivieren"; App::$strings["Allow any Diaspora member to comment on your public posts"] = "Jedem Diaspora-Mitglied erlauben, Deine öffentlichen Beiträge zu kommentieren"; -App::$strings["Prevent your hashtags from being redirected to other sites"] = ""; -App::$strings["Followed hashtags (comma separated, do not include the #)"] = ""; +App::$strings["Prevent your hashtags from being redirected to other sites"] = "Verhindern, dass Deine hashtags zu anderen Seiten umgeleitet werden"; +App::$strings["Followed hashtags (comma separated, do not include the #)"] = "Verfolgte Hashtags (Komma separierte Liste, ohne die #)"; App::$strings["Diaspora Protocol Settings"] = "Diaspora-Protokolleinstellungen"; App::$strings["Hubzilla Directory Stats"] = "Hubzilla-Verzeichnisstatistiken"; App::$strings["Total Hubs"] = "Hubs insgesamt"; @@ -1645,62 +1660,62 @@ App::$strings["Known Tags"] = "Bekannte Schlagwörter"; 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,"] = "Bitte berücksichtige, dass Diaspora und Friendica Statistiken nur solche einschließen, die **diesem Verzeichnis** bekannt sind, nicht alle im Netzwerk bekannten. Das gilt auch für Chaträume."; App::$strings["Project Servers and Resources"] = "Projektserver und -ressourcen"; App::$strings["Project Creator and Tech Lead"] = "Projektersteller und Technischer Leiter"; -App::$strings["Admin, developer, directorymin, support bloke"] = ""; -App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = ""; -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."] = ""; -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>.)"] = ""; -App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = ""; -App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = ""; +App::$strings["Admin, developer, directorymin, support bloke"] = "Administrator, Entwickler, Verzeichnis Betreibender, Supportleistende"; +App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Und die hunderte anderen Menschen und Organisationen, die geholfen haben Hubzilla möglich zu machen."; +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."] = "Die Redmatrix/Hubzilla Projekte werden hauptsächlich von Freiwilligen bereitgestellt, die ihre Zeit und Expertise zur Verfügung stellen - und oft aus eigener Tasche für die Dienste zahlen, die sie mit anderen teilen."; +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>.)"] = "Es gibt keine Finanzierung durch Firmen, keine Werbung und wir verkaufen Deine persönlichen Daten nicht. (Wir kontrollieren Deine persönlichen Daten nicht - <strong>das machst Du</strong>.)"; +App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Hilf uns bei unserer wegweisenden Arbeit im Bereich der Dezantralisation, von Web-Identitäten und Privatsphäre."; +App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Die Spenden werden dafür verwendet Server und Dienste am laufen zu halten und helfen desweiteren innovative Neuerungen zu schaffen und die Entwicklung voran zu treiben."; App::$strings["Donate"] = "Spenden"; -App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = ""; +App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Wähle ein Projekt, einen Entwickler oder einen öffentlichen Hub den du mit einer einmaligen Spende unterstützen willst."; App::$strings["Donate Now"] = "Jetzt spenden"; -App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = ""; -App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = ""; +App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>Oder</em></strong> werde ein Unterstützer des Projekts (ausschließlich Hubzilla)"; +App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Bitte teile uns mit ob dein kompletter Name oder dein Vorname (oder gar nichts) auf unserer Sponsoren-Seite veröffentlicht werden soll."; App::$strings["Sponsor"] = "Sponsor"; App::$strings["Special thanks to: "] = "Besonderer Dank an: "; -App::$strings["Post to Dreamwidth"] = ""; -App::$strings["Enable Dreamwidth Post Plugin"] = ""; +App::$strings["Post to Dreamwidth"] = "Bei Dreamwidth veröffentlichen"; +App::$strings["Enable Dreamwidth Post Plugin"] = "Aktiviere das Dreamwidth-Plugin"; App::$strings["Dreamwidth username"] = "Dreamwidth-Benutzername"; App::$strings["Dreamwidth password"] = "Dreamwidth-Passwort"; -App::$strings["Post to Dreamwidth by default"] = ""; +App::$strings["Post to Dreamwidth by default"] = "Standardmäßig auf auf Dreamwidth posten"; App::$strings["Dreamwidth Post Settings"] = "Dreamwidth-Beitragseinstellungen"; -App::$strings["Flattr this!"] = ""; -App::$strings["Flattr widget settings updated."] = ""; -App::$strings["Flattr user"] = ""; -App::$strings["URL of the Thing to flattr"] = ""; -App::$strings["If empty channel URL is used"] = ""; -App::$strings["Title of the Thing to flattr"] = ""; -App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = ""; -App::$strings["Static or dynamic flattr button"] = ""; +App::$strings["Flattr this!"] = "Flattr this!"; +App::$strings["Flattr widget settings updated."] = "Flattr Widget Einstellungen aktualisiert"; +App::$strings["Flattr user"] = "Flattr Nutzer"; +App::$strings["URL of the Thing to flattr"] = "URL des Dings zum flattrn"; +App::$strings["If empty channel URL is used"] = "Falls leer wird die Channel URL verwendet"; +App::$strings["Title of the Thing to flattr"] = "Titel des Dings zum flattrn"; +App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Falls leer wird \"Kanalname auf The Hubzilla\" verwendet"; +App::$strings["Static or dynamic flattr button"] = "Statischer oder dynamischer Flattr Button"; App::$strings["static"] = "statisch"; App::$strings["dynamic"] = "dynamisch"; -App::$strings["Alignment of the widget"] = ""; +App::$strings["Alignment of the widget"] = "Ausrichtung des Widgets"; App::$strings["left"] = "links"; App::$strings["right"] = "rechts"; -App::$strings["Enable Flattr widget"] = ""; -App::$strings["Flattr Widget Settings"] = ""; +App::$strings["Enable Flattr widget"] = "Flattr Widget verwenden"; +App::$strings["Flattr Widget Settings"] = "Flattr Widget Einstellungen"; App::$strings["Contact not found."] = "Kontakt nicht gefunden."; -App::$strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = ""; -App::$strings["Response from remote site was not understood."] = ""; -App::$strings["Unexpected response from remote site: "] = ""; +App::$strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Dies kann unter Umständen passieren, wenn der Kontakt von beiden Seiten aus angefragt wurde und er bereits akzeptiert wurde.."; +App::$strings["Response from remote site was not understood."] = "Antwort des entfernten Seite war unverständlich."; +App::$strings["Unexpected response from remote site: "] = "Unerwartete Antwort der entfernten Seite"; App::$strings["Confirmation completed successfully."] = "Bestätigung erfolgreich abgeschlossen."; -App::$strings["Remote site reported: "] = ""; -App::$strings["Temporary failure. Please wait and try again."] = ""; -App::$strings["Introduction failed or was revoked."] = ""; -App::$strings["Unable to set contact photo."] = ""; -App::$strings["%1\$s is now friends with %2\$s"] = ""; +App::$strings["Remote site reported: "] = "Meldung der entfernten Seite"; +App::$strings["Temporary failure. Please wait and try again."] = "Vorübergehende Störung. Bitte warte einen Moment und versuche es später erneut."; +App::$strings["Introduction failed or was revoked."] = "Vorstellung fehlgeschlagen oder wurde zurück gezogen."; +App::$strings["Unable to set contact photo."] = "Konnte das Kontakt-Photo nicht setzen."; +App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s ist nun mit %2\$s befreundet"; App::$strings["No user record found for '%s' "] = "Kein Benutzereintrag für '%s' gefunden"; -App::$strings["Our site encryption key is apparently messed up."] = ""; -App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = ""; -App::$strings["Contact record was not found for you on our site."] = ""; -App::$strings["Site public key not available in contact record for URL %s."] = ""; -App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = ""; +App::$strings["Our site encryption key is apparently messed up."] = "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend kaputt."; +App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Eine leere Seiten URL wurde angegeben, oder die URL konnte von uns nicht entziffert werden."; +App::$strings["Contact record was not found for you on our site."] = "Für dich wurden keinerlei Kontaktdaten auf unserer Seite gefunden."; +App::$strings["Site public key not available in contact record for URL %s."] = "Der öffentliche Schlüssel dieser Seite ist für die Kontaktdaten mit der URL %s nocht verfügbar."; +App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "Die ID, die Durch Dein System angegeben wurde ist ein Duplikat auf unserem. Es sollte funktionieren, wenn Du es noch einmal versuchst."; App::$strings["Unable to set your contact credentials on our system."] = ""; -App::$strings["Unable to update your contact profile details on our system"] = ""; -App::$strings["[Name Withheld]"] = ""; +App::$strings["Unable to update your contact profile details on our system"] = "Konnte die Details deines Profils auf unserem System nicht aktualisieren."; +App::$strings["[Name Withheld]"] = "[Name zurück gehalten]"; App::$strings["%1\$s has joined %2\$s"] = "%1\$s ist %2\$s beigetreten"; App::$strings["%1\$s welcomes %2\$s"] = "%1\$s heißt %2\$s willkommen"; -App::$strings["This introduction has already been accepted."] = ""; +App::$strings["This introduction has already been accepted."] = "Die Vorstellung wurde bereits akzeptiert."; App::$strings["Profile location is not valid or does not contain profile information."] = ""; App::$strings["Warning: profile location has no identifiable owner name."] = ""; App::$strings["Warning: profile location has no profile photo."] = ""; @@ -1711,62 +1726,62 @@ App::$strings["%d required parameter was not found at the given location"] = arr App::$strings["Introduction complete."] = "Einführung abgeschlossen."; App::$strings["Unrecoverable protocol error."] = "Nicht behebbarer Protokollfehler."; App::$strings["Profile unavailable."] = "Profil nicht verfügbar."; -App::$strings["%s has received too many connection requests today."] = ""; -App::$strings["Spam protection measures have been invoked."] = ""; -App::$strings["Friends are advised to please try again in 24 hours."] = ""; +App::$strings["%s has received too many connection requests today."] = "%s hat heute bereits zu viele Kontaktanfragen erhalten."; +App::$strings["Spam protection measures have been invoked."] = "Maßnahmen zum Spam-Schutz wurden aktiviert."; +App::$strings["Friends are advised to please try again in 24 hours."] = "Freunde sollten es bitte in 24 Stunden erneut versuchen."; App::$strings["Invalid locator"] = ""; App::$strings["Invalid email address."] = "Ungültige E-Mail-Adresse."; -App::$strings["This account has not been configured for email. Request failed."] = ""; +App::$strings["This account has not been configured for email. Request failed."] = "Dieser Account wurde nicht für E-Mail konfiguriert. Anfrage gescheitert."; App::$strings["Unable to resolve your name at the provided location."] = ""; -App::$strings["You have already introduced yourself here."] = ""; -App::$strings["Apparently you are already friends with %s."] = ""; +App::$strings["You have already introduced yourself here."] = "Du hast dich hier bereits vorgestellt."; +App::$strings["Apparently you are already friends with %s."] = "Anscheinend bist du bereits mit %s in Kontakt."; App::$strings["Invalid profile URL."] = "Ungültige Profil-URL."; App::$strings["Disallowed profile URL."] = "Nicht erlaubte Profil-URL."; -App::$strings["Failed to update contact record."] = ""; -App::$strings["Your introduction has been sent."] = ""; -App::$strings["Please login to confirm introduction."] = ""; +App::$strings["Failed to update contact record."] = "Konnte den Verbindungseintrag nicht aktualisieren."; +App::$strings["Your introduction has been sent."] = "Deine Vorstellung wurde gesendet."; +App::$strings["Please login to confirm introduction."] = "Bitte melde dich an um die Vorstellung zu bestätigen."; App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = ""; App::$strings["Confirm"] = "Bestätigen"; App::$strings["Hide this contact"] = "Diesen Kontakt verbergen"; -App::$strings["Welcome home %s."] = ""; -App::$strings["Please confirm your introduction/connection request to %s."] = ""; -App::$strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = ""; +App::$strings["Welcome home %s."] = "Willkommen daheim %s"; +App::$strings["Please confirm your introduction/connection request to %s."] = "Bitte bestätige deine Vorstellung/Kontaktanfrage bei %s."; +App::$strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Bitte gib deine \"Identitäts Adresse\" von einem der folgenden unterstützten Kommunikations Netzwerke an."; App::$strings["If you are not yet a member of the free social web, <a href=\"%s/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = ""; App::$strings["Friend/Connection Request"] = "Freundschafts-/Verbindungsanfrage"; -App::$strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = ""; +App::$strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"; App::$strings["Please answer the following:"] = "Bitte beantworten Sie folgendes:"; App::$strings["Does %s know you?"] = "Kennt %s Sie?"; -App::$strings["Add a personal note:"] = ""; +App::$strings["Add a personal note:"] = "Eine persönliche Nachricht hinterlassen:"; App::$strings["Friendica"] = "Friendica"; -App::$strings["StatusNet/Federated Social Web"] = ""; +App::$strings["StatusNet/Federated Social Web"] = "StatusNet/Föderierte Soziale Netzwerke"; App::$strings["Diaspora"] = "Diaspora"; -App::$strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = ""; +App::$strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = "- bitte verwende nicht dieses Formular sondern gib %s in die Suchleiste deiner Diaspora Seite ein."; App::$strings["Your Identity Address:"] = "Ihre Identitätsadresse:"; App::$strings["Submit Request"] = "Anfrage absenden"; -App::$strings["GNU-Social Protocol Settings updated."] = ""; -App::$strings["Enable the (experimental) GNU-Social protocol for this channel"] = ""; -App::$strings["GNU-Social Protocol Settings"] = ""; +App::$strings["GNU-Social Protocol Settings updated."] = "GNU Social Protokoll Einstellungen aktualisiert"; +App::$strings["Enable the (experimental) GNU-Social protocol for this channel"] = "GNU Social Protokoll (experimentell) für diesen Kanal aktualisieren"; +App::$strings["GNU-Social Protocol Settings"] = "GNU Social Protokoll Einstellungen"; App::$strings["Follow"] = "Folgen"; App::$strings["%1\$s is now following %2\$s"] = "%1\$s folgt nun %2\$s"; App::$strings["Friendica Photo Album Import"] = "Friendica-Fotoalbumimport"; -App::$strings["This will import all your Friendica photo albums to this Red channel."] = ""; -App::$strings["Friendica Server base URL"] = ""; +App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Hiermit werden all deine Fotoalben von Friendica in diesen Hubzilla Kanal importiert."; +App::$strings["Friendica Server base URL"] = "BasisURL des Friendica Servers"; App::$strings["Friendica Login Username"] = "Friendica-Anmeldebenutzername"; App::$strings["Friendica Login Password"] = "Friendica-Anmeldepasswort"; -App::$strings["Enable the GNU-Social protocol for this channel"] = ""; -App::$strings["Send email to all members"] = ""; +App::$strings["Enable the GNU-Social protocol for this channel"] = "GNU Social Protokoll für diesen Kanal aktualisieren"; +App::$strings["Send email to all members"] = "E-Mail an alle Mitglieder senden"; App::$strings["$1%s Administrator"] = "$1%s Administrator"; App::$strings["No recipients found."] = "Keine Empfänger gefunden."; -App::$strings["%1\$d of %2\$d messages sent."] = ""; -App::$strings["Send email to all hub members."] = ""; -App::$strings["Message subject"] = ""; -App::$strings["Sender Email address"] = ""; -App::$strings["Test mode (only send to hub administrator)"] = ""; -App::$strings["Post to Insanejournal"] = ""; -App::$strings["Enable InsaneJournal Post Plugin"] = ""; +App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d von %2\$d Nachrichten gesendet."; +App::$strings["Send email to all hub members."] = "Eine E-Mail an alle Mitglieder dieses Hubs senden."; +App::$strings["Message subject"] = "Betreff der Nachricht"; +App::$strings["Sender Email address"] = "E-Mail Adresse des Absenders"; +App::$strings["Test mode (only send to hub administrator)"] = "Test Modus (nur an Hub Administratoren senden)"; +App::$strings["Post to Insanejournal"] = "Bei InsaneJournal veröffentlichen"; +App::$strings["Enable InsaneJournal Post Plugin"] = "Aktiviere das InsaneJournal Plugin"; App::$strings["InsaneJournal username"] = "InsaneJournal-Benutzername"; App::$strings["InsaneJournal password"] = "InsaneJournal-Passwort"; -App::$strings["Post to InsaneJournal by default"] = ""; +App::$strings["Post to InsaneJournal by default"] = "Standardmäßig bei InsaneJournal veröffentlichen"; App::$strings["InsaneJournal Post Settings"] = "InsaneJournal-Beitragseinstellungen"; App::$strings["Insane Journal Settings saved."] = "InsaneJournal-Einstellungen gespeichert."; App::$strings["Channels to auto connect"] = ""; @@ -1776,19 +1791,19 @@ App::$strings["IRC Settings"] = "IRC-Einstellungen"; App::$strings["IRC settings saved."] = "IRC-Einstellungen gespeichert."; App::$strings["IRC Chatroom"] = "IRC-Chatraum"; App::$strings["Status:"] = "Status:"; -App::$strings["Activate addon"] = ""; -App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = ""; +App::$strings["Activate addon"] = "Addon aktiviren"; +App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Jappix Mini Chat-Widget von der Weboberfläche verbergen"; App::$strings["Jabber username"] = "Jabber-Benutzername"; App::$strings["Jabber server"] = "Jabber-Server"; -App::$strings["Jabber BOSH host URL"] = ""; +App::$strings["Jabber BOSH host URL"] = "Jabber BOSH Host URL"; App::$strings["Jabber password"] = "Jabber-Passwort"; App::$strings["Encrypt Jabber password with Hubzilla password"] = "Jabber-Passwort mit Hubzilla-Passwort verschlüsseln"; App::$strings["Hubzilla password"] = "Hubzilla-Passwort"; App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = ""; -App::$strings["Purge internal list of jabber addresses of contacts"] = ""; +App::$strings["Purge internal list of jabber addresses of contacts"] = "Interne Liste der Jabber Adressen von Kontakten löschen"; App::$strings["Configuration Help"] = "Konfigurationshilfe"; App::$strings["Add Contact"] = "Kontakt hinzufügen"; -App::$strings["Jappix Mini Settings"] = ""; +App::$strings["Jappix Mini Settings"] = "Jappix Mini Einstellungen"; App::$strings["Upload a file"] = "Datei hochladen"; App::$strings["Drop files here to upload"] = "Dateien zum Hochladen hier fallen lassen"; App::$strings["Failed"] = "Fehlgeschlagen"; @@ -1798,19 +1813,19 @@ App::$strings["Image exceeds size limit of "] = "Bild überschreitet Größenbes App::$strings["File has an invalid extension, it should be one of "] = "Die Datei hat eine ungültige Endung. Erlaubt sind folgende:"; App::$strings["Upload was cancelled, or server error encountered"] = "Das Hochladen wurde abgebrochen oder es ist ein Serverfehler aufgetreten."; App::$strings["An account has been created for you."] = "Ein Konto wurde für Sie erstellt."; -App::$strings["Authentication successful but rejected: account creation is disabled."] = ""; -App::$strings["Post to Libertree"] = ""; -App::$strings["Enable Libertree Post Plugin"] = ""; -App::$strings["Libertree API token"] = ""; -App::$strings["Libertree site URL"] = ""; -App::$strings["Post to Libertree by default"] = ""; +App::$strings["Authentication successful but rejected: account creation is disabled."] = "Authentifizierung war erfolgreich wurde aber abgewiesen! Das Anlegen von Accounts wurde deaktiviert."; +App::$strings["Post to Libertree"] = "Bei Libertree veröffentlichen"; +App::$strings["Enable Libertree Post Plugin"] = "Aktivire das Libertree-Plugin"; +App::$strings["Libertree API token"] = "Libertree API Token"; +App::$strings["Libertree site URL"] = "URL der Libertree Seite"; +App::$strings["Post to Libertree by default"] = "Standardmäßig bei Libertree veröffentlichen"; App::$strings["Libertree Post Settings"] = "Libertree-Beitragseinstellungen"; App::$strings["Libertree Settings saved."] = "Libertree-Einstellungen gespeichert."; -App::$strings["Post to LiveJournal"] = ""; -App::$strings["Enable LiveJournal Post Plugin"] = ""; +App::$strings["Post to LiveJournal"] = "Bei LiveJurnal veröffentlichen"; +App::$strings["Enable LiveJournal Post Plugin"] = "Aktiviere das LiveJurnal Plugin"; App::$strings["LiveJournal username"] = "LiveJournal-Benutzername"; App::$strings["LiveJournal password"] = "LiveJournal-Passwort"; -App::$strings["Post to LiveJournal by default"] = ""; +App::$strings["Post to LiveJournal by default"] = "Standardmäßig bei LiveJurnal veröffentlichen"; App::$strings["LiveJournal Post Settings"] = "LiveJournal-Beitragseinstellungen"; App::$strings["LiveJournal Settings saved."] = "LiveJournal-Einstellungen gespeichert."; App::$strings["Logfile archive directory"] = "Verzeichnis der Logdatei"; @@ -1831,7 +1846,7 @@ App::$strings["crazy"] = "verrückt"; App::$strings["hurt"] = "verletzt"; App::$strings["sleepy"] = "müde"; App::$strings["grumpy"] = "mürrisch"; -App::$strings["high"] = ""; +App::$strings["high"] = "hoch"; App::$strings["semi-conscious"] = "halb bewusstlos"; App::$strings["in love"] = "verliebt"; App::$strings["in lust"] = ""; @@ -1847,8 +1862,8 @@ App::$strings["bitchslap"] = "Ohrfeige"; App::$strings["bitchslapped"] = "geohrfeigt"; App::$strings["shag"] = "bumsen"; App::$strings["shagged"] = "gebumst"; -App::$strings["patent"] = ""; -App::$strings["patented"] = ""; +App::$strings["patent"] = "Patent"; +App::$strings["patented"] = "patentiert"; App::$strings["hug"] = "umarmen"; App::$strings["hugged"] = "umarmt"; App::$strings["murder"] = "ermorden"; @@ -1882,9 +1897,9 @@ App::$strings["bonked"] = ""; App::$strings["declare undying love for"] = ""; App::$strings["declared undying love for"] = ""; App::$strings["Save Settings"] = "Einstellungen speichern"; -App::$strings["text to include in all outgoing posts from this site"] = ""; +App::$strings["text to include in all outgoing posts from this site"] = "Test der in alle Beiträge angefügt werden soll, die von dieser Seite ausgehen"; App::$strings["Federate"] = ""; -App::$strings["nofed Settings saved."] = ""; +App::$strings["nofed Settings saved."] = "nofed Einstellungen gespeichert"; App::$strings["Allow Federation Toggle"] = ""; App::$strings["Federate posts by default"] = ""; App::$strings["NoFed Settings"] = "NoFed-Einstellungen"; @@ -1895,10 +1910,10 @@ App::$strings["This plugin looks in posts for the words/text you specify below, App::$strings["Enable Content filter"] = "Inhaltsfilter aktivieren"; App::$strings["Comma separated list of keywords to hide"] = ""; App::$strings["Use /expression/ to provide regular expressions"] = ""; -App::$strings["Not Safe For Work Settings"] = ""; +App::$strings["Not Safe For Work Settings"] = "Not Safe For Work Einstellungen"; App::$strings["General Purpose Content Filter"] = "Allzweck-Inhaltsfilter"; App::$strings["NSFW Settings saved."] = "NSFW-Einstellungen gespeichert."; -App::$strings["Possible adult content"] = ""; +App::$strings["Possible adult content"] = "Möglicherweise nicht jugendfreie Inhalte"; App::$strings["%s - click to open/close"] = "%s - zum öffnen/schließen anklicken"; App::$strings["System defaults:"] = "Systemstandardeinstellungen:"; App::$strings["Preferred Clipart IDs"] = ""; @@ -1909,14 +1924,14 @@ App::$strings["Return After"] = ""; App::$strings["Page to load after image selection."] = ""; App::$strings["Edit Profile"] = "Profile bearbeiten"; App::$strings["Profile List"] = "Profilliste"; -App::$strings["Order of Preferred"] = ""; +App::$strings["Order of Preferred"] = "Bevorzugte Reihenfolge"; App::$strings["Sort order of preferred clipart ids."] = ""; App::$strings["Newest first"] = "Neueste zuerst"; App::$strings["As entered"] = "Wie eingegeben"; App::$strings["Order of other"] = ""; App::$strings["Sort order of other clipart ids."] = ""; App::$strings["Most downloaded first"] = "Meist heruntergeladene zuerst"; -App::$strings["Most liked first"] = ""; +App::$strings["Most liked first"] = "Beliebteste zuerst"; App::$strings["Preferred IDs Message"] = ""; App::$strings["Message to display above preferred results."] = ""; App::$strings["Uploaded by: "] = "Hochgeladen von: "; @@ -1946,52 +1961,52 @@ App::$strings["Show opt-out cookie link?"] = "Den Opt-out Cookie-Link anzeigen?" App::$strings["Asynchronous tracking"] = "Asynchrones Tracking"; App::$strings["Enable frontend JavaScript error tracking"] = "Ermögliche Frontend-JavaScript-Fehlertracking"; App::$strings["This feature requires Piwik >= 2.2.0"] = "Diese Funktion erfordert Piwik >= 2.2.0"; -App::$strings["Planets Settings updated."] = ""; -App::$strings["Enable Planets Plugin"] = ""; -App::$strings["Planets Settings"] = ""; -App::$strings["You are now authenticated to pumpio."] = ""; +App::$strings["Planets Settings updated."] = "Planeten Einstellungen aktualisiert"; +App::$strings["Enable Planets Plugin"] = "Aktiviere Planeten Plugin"; +App::$strings["Planets Settings"] = "Planeten Einstellungen"; +App::$strings["You are now authenticated to pumpio."] = "Du bist nun bei pumpio authenzifiziert."; App::$strings["return to the featured settings page"] = ""; -App::$strings["Post to Pump.io"] = ""; +App::$strings["Post to Pump.io"] = "Bei pumpio veröffentlichen"; App::$strings["Pump.io servername"] = "Pump.io-Servername"; App::$strings["Without \"http://\" or \"https://\""] = "Ohne \"http://\" oder \"https://\""; App::$strings["Pump.io username"] = "Pump.io-Benutzername"; App::$strings["Without the servername"] = "Ohne dem Servernamen"; -App::$strings["You are not authenticated to pumpio"] = ""; -App::$strings["(Re-)Authenticate your pump.io connection"] = ""; -App::$strings["Enable pump.io Post Plugin"] = ""; -App::$strings["Post to pump.io by default"] = ""; -App::$strings["Should posts be public"] = ""; -App::$strings["Mirror all public posts"] = ""; +App::$strings["You are not authenticated to pumpio"] = "Du bist nicht bei pumpio authentifiziert."; +App::$strings["(Re-)Authenticate your pump.io connection"] = "Deine pumpio Verbindung (erneut) authentifizieren"; +App::$strings["Enable pump.io Post Plugin"] = "Aktiviere das pumpio-Plugin"; +App::$strings["Post to pump.io by default"] = "Standardmäßig bei pumpio veröffentlichen"; +App::$strings["Should posts be public"] = "Sollen die Beiträge öffentlich sein"; +App::$strings["Mirror all public posts"] = "Öffentliche Beiträge spiegeln"; App::$strings["Pump.io Post Settings"] = "Pump.io-Beitragseinstellungen"; App::$strings["PumpIO Settings saved."] = "PumpIO-Einstellungen gespeichert."; App::$strings["QR code"] = "QR-Code"; App::$strings["QR Generator"] = "QR-Generator"; App::$strings["Enter some text"] = ""; -App::$strings["Enable Rainbowtag"] = ""; -App::$strings["Rainbowtag Settings"] = ""; -App::$strings["Rainbowtag Settings saved."] = ""; +App::$strings["Enable Rainbowtag"] = "Rainbowtag aktivieren"; +App::$strings["Rainbowtag Settings"] = "Rainbowtag-Einstellungen"; +App::$strings["Rainbowtag Settings saved."] = "Rainbowtag-Einstellungen gespeichert."; App::$strings["You're welcome."] = "Gern geschehen."; App::$strings["Ah shucks..."] = ""; App::$strings["Don't mention it."] = "Keine Ursache."; App::$strings["<blush>"] = ""; App::$strings["Redmatrix File Storage Import"] = ""; -App::$strings["This will import all your Redmatrix cloud files to this channel."] = ""; -App::$strings["Redmatrix Server base URL"] = ""; +App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Hiermit werden alle deine Daten aus der Redmatrix Cloud in diesen Kanal importiert."; +App::$strings["Redmatrix Server base URL"] = "Basis-URL des Redmatrix Servers"; App::$strings["Redmatrix Login Username"] = "Redmatrix-Anmeldebenutzername"; App::$strings["Redmatrix Login Password"] = "Redmatrix-Anmeldepasswort"; App::$strings["file"] = "Datei"; App::$strings["Photos imported"] = "Fotos importiert"; App::$strings["Redmatrix Photo Album Import"] = "Redmatrix-Fotoalbumimport"; -App::$strings["This will import all your Redmatrix photo albums to this channel."] = ""; +App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Hiermit werden all deine Fotoalben von Redmatrix in diesen Kanal importiert."; App::$strings["Import just this album"] = "Nur dieses Album importieren"; -App::$strings["Leave blank to import all albums"] = ""; -App::$strings["Maximum count to import"] = ""; -App::$strings["0 or blank to import all available"] = ""; +App::$strings["Leave blank to import all albums"] = "Leer lassen um alle Alben zu importieren"; +App::$strings["Maximum count to import"] = "Maximal zu importierende Anzahl"; +App::$strings["0 or blank to import all available"] = "0 oder leer lassen um alles zu importieren"; App::$strings["Post to Red"] = ""; App::$strings["Channel is required."] = "Kanal ist erforderlich."; App::$strings["Invalid channel."] = "Ungültiger Kanal."; App::$strings["redred Settings saved."] = "redred-Einstellungen gespeichert."; -App::$strings["Allow posting to another Hubzilla Channel"] = ""; +App::$strings["Allow posting to another Hubzilla Channel"] = "Erlaube die Veröffentlichung in anderen Hubzilla Kanälen"; App::$strings["Send public postings to Hubzilla channel by default"] = ""; App::$strings["Hubzilla API Path"] = "Hubzilla-API-Pfad"; App::$strings["https://{sitename}/api"] = "https://{sitename}/api"; @@ -1999,10 +2014,10 @@ App::$strings["Hubzilla login name"] = "Hubzilla-Anmeldename"; App::$strings["Hubzilla channel name"] = "Hubzilla-Kanalname"; App::$strings["Nickname"] = "Spitzname"; App::$strings["Hubzilla Crosspost Settings"] = ""; -App::$strings["Post to Friendica"] = ""; +App::$strings["Post to Friendica"] = "Bei Friendica veröffentlichen"; App::$strings["rtof Settings saved."] = "rtof-Einstellungen gespeichert."; -App::$strings["Allow posting to Friendica"] = ""; -App::$strings["Send public postings to Friendica by default"] = ""; +App::$strings["Allow posting to Friendica"] = "Erlaube die Veröffentlichung bei Friendica"; +App::$strings["Send public postings to Friendica by default"] = "Standardmäßig öffentliche Beiträge bei Friendica veröffentlichen"; App::$strings["Friendica API Path"] = "Friendica-API-Pfad"; App::$strings["Friendica login name"] = "Friendica-Anmeldename"; App::$strings["Friendica password"] = "Friendica-Passwort"; @@ -2015,135 +2030,135 @@ App::$strings["Skeleton Settings"] = ""; App::$strings["Deactivate the feature"] = "Diese Funktion abschalten"; App::$strings["Hide the button and show the smilies directly."] = "Verstecke die Schaltfläche und zeige die Smilies direkt an."; App::$strings["Smileybutton Settings"] = "Smileyknopf-Einstellungen"; -App::$strings["Page to load after login"] = ""; -App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = ""; +App::$strings["Page to load after login"] = "Seite, die nach dem Login geladen werden soll"; +App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Beispiele: "apps", "network?f=&gid=37" (Gruppen-gefilterte Beiträge), "channel" oder "notifications/system" (freilassen für die Standard-Netzwerkseite (grid)."; App::$strings["Startpage Settings"] = "Startseiteneinstellungen"; -App::$strings["Post to GNU social"] = ""; -App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = ""; -App::$strings["We could not contact the GNU social API with the Path you entered."] = ""; -App::$strings["GNU social settings updated."] = ""; -App::$strings["Globally Available GNU social OAuthKeys"] = ""; +App::$strings["Post to GNU social"] = "Bei GNU social veröffentlichen"; +App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Bitte kontaktiere den Administrator deines Hubs.<br />Die angegebene API URL ist nicht korrekt."; +App::$strings["We could not contact the GNU social API with the Path you entered."] = "Mit dem angegebenen Pfad war es uns nicht möglich, die GNU social API zu erreichen."; +App::$strings["GNU social settings updated."] = "GNU social Einstellungen aktualisiert."; +App::$strings["Globally Available GNU social OAuthKeys"] = "Global verfügbare GNU social OAuthKeys"; 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)."] = ""; App::$strings["Provide your own OAuth Credentials"] = ""; 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."] = ""; -App::$strings["OAuth Consumer Key"] = ""; -App::$strings["OAuth Consumer Secret"] = ""; -App::$strings["Base API Path"] = ""; -App::$strings["Remember the trailing /"] = ""; -App::$strings["GNU social application name"] = ""; +App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key"; +App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret"; +App::$strings["Base API Path"] = "Basis Pfad der API"; +App::$strings["Remember the trailing /"] = "Denke an das abschließende /"; +App::$strings["GNU social application name"] = "GNU social Anwendungsname"; 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."] = ""; -App::$strings["Log in with GNU social"] = ""; -App::$strings["Copy the security code from GNU social here"] = ""; -App::$strings["Cancel Connection Process"] = ""; -App::$strings["Current GNU social API is"] = ""; -App::$strings["Cancel GNU social Connection"] = ""; +App::$strings["Log in with GNU social"] = "Mit GNU social anmelden"; +App::$strings["Copy the security code from GNU social here"] = "Kopiere den Sicherheitscode von GNU social hier her"; +App::$strings["Cancel Connection Process"] = "Verbindungsprozes abbrechen"; +App::$strings["Current GNU social API is"] = "Aktuelle GNU social API ist"; +App::$strings["Cancel GNU social Connection"] = "GNU social Verbindung trennen"; App::$strings["Currently connected to: "] = "Momentan verbunden mit:"; 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."] = ""; -App::$strings["Allow posting to GNU social"] = ""; -App::$strings["If enabled your public postings can be posted to the associated GNU-social account"] = ""; -App::$strings["Post to GNU social by default"] = ""; -App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = ""; -App::$strings["Clear OAuth configuration"] = ""; -App::$strings["GNU social Post Settings"] = ""; +App::$strings["Allow posting to GNU social"] = "Erlaube die Veröffentlichung bei GNU social"; +App::$strings["If enabled your public postings can be posted to the associated GNU-social account"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen GNU social Account veröffentlicht werden."; +App::$strings["Post to GNU social by default"] = "Standardmäßig bei GNU social veröffentlichen"; +App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Wenn aktiv werden all deine öffentlichen Beiträge standardmäßig bei dem verbundenen GNU social Account veröffentlicht."; +App::$strings["Clear OAuth configuration"] = "OAuth Konfiguration löschen"; +App::$strings["GNU social Post Settings"] = "GNU social Einstellungen"; App::$strings["API URL"] = "API-URL"; App::$strings["Application name"] = "Anwendungsname"; -App::$strings["Comma separated profile URLS to block"] = ""; +App::$strings["Currently blocked"] = "Derzeit blockiert"; +App::$strings["No channels currently blocked"] = "Momentan sind keine Kanäle blockiert"; App::$strings["\"Superblock\" Settings"] = "\"Superblock\"-Einstellungen"; -App::$strings["SUPERBLOCK Settings saved."] = "SUPERBLOCK-Einstellungen gespeichert."; App::$strings["Block Completely"] = "Vollständig blockieren"; -App::$strings["superblock settings updated"] = ""; -App::$strings["Your account on %s will expire in a few days."] = ""; -App::$strings["Your $Productname test account is about to expire."] = ""; +App::$strings["superblock settings updated"] = "Superblock Einstellungen aktualisiert"; +App::$strings["Your account on %s will expire in a few days."] = "Dein Account auf %s wird in ein paar Tagen ablaufen."; +App::$strings["Your $Productname test account is about to expire."] = "Dein $Productname Test-Account wird bald auslaufen."; App::$strings["Three Dimensional Tic-Tac-Toe"] = "Dreidimensionales Tic-Tac-Toe"; App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe"; App::$strings["New game"] = "Neues Spiel"; -App::$strings["New game with handicap"] = ""; -App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = ""; -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."] = ""; -App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = ""; -App::$strings["You go first..."] = ""; -App::$strings["I'm going first this time..."] = ""; +App::$strings["New game with handicap"] = "Neues Handicaü-Spiel"; +App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "3D Tic-Tac-Toe funktioniert wie das ursprüngliche Spiel, nur dass es auf mehreren Ebenen gleichzeitig gespielt wird."; +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."] = "In diesem Fall sind es drei Ebenen. Du gewinnst, wenn es dir gelingt drei in einer Reihe auf einer beliebigen Ebene oder diagonal über die verschiedenen Ebenen hinweg zu erreichen."; +App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Bei einem Handicap-Spiel wird die Position im Zentrum der mittleren Ebene gesperrt, da der Spieler der dieses Feld für sich beansprucht meist einen unfairen Vorteil hat."; +App::$strings["You go first..."] = "Du darfst anfangen..."; +App::$strings["I'm going first this time..."] = "Diesmal werde ich anfangen..."; App::$strings["You won!"] = "Sie haben gewonnen!"; App::$strings["\"Cat\" game!"] = ""; App::$strings["I won!"] = "Ich habe gewonnen!"; -App::$strings["Edit your profile and change settings."] = ""; -App::$strings["Click here to see activity from your connections."] = ""; -App::$strings["Click here to see your channel home."] = ""; -App::$strings["You can access your private messages from here."] = ""; +App::$strings["Edit your profile and change settings."] = "Bearbeite dein Profil und ändere die Einstellungen."; +App::$strings["Click here to see activity from your connections."] = "Klicke hier, um die Aktivitäten Deiner Verbindungen zu sehen."; +App::$strings["Click here to see your channel home."] = "Klicke hier, um Deine Kanal-Hauptseite zu sehen."; +App::$strings["You can access your private messages from here."] = "Hierüber kannst Du auf Deine privaten Nachrichten zugreifen."; App::$strings["Create new events here."] = "Neue Termine hier erstellen"; -App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = ""; +App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Du kannst hier neue Verbindungen akzeptieren sowie die Einstellungen bereits vorhandener Vebindungen bearbeiten. Außerdem kannst Du Verbindungen in Gruppen zusammenfassen."; App::$strings["System notifications will arrive here"] = "Systembenachrichtigungen werden hier eintreffen"; App::$strings["Search for content and users"] = "Nach Inhalt von Benutzern suchen"; -App::$strings["Browse for new contacts"] = ""; +App::$strings["Browse for new contacts"] = "Schaue nach möglichen neuen Verbindungen."; App::$strings["Launch installed apps"] = "Installierte Apps starten"; -App::$strings["Looking for help? Click here."] = ""; -App::$strings["New events have occurred in your network. Click here to see what has happened!"] = ""; -App::$strings["You have received a new private message. Click here to see from who!"] = ""; -App::$strings["There are events this week. Click here too see which!"] = ""; -App::$strings["You have received a new introduction. Click here to see who!"] = ""; -App::$strings["There is a new system notification. Click here to see what has happened!"] = ""; -App::$strings["Click here to share text, images, videos and sound."] = ""; -App::$strings["You can write an optional title for your update (good for long posts)."] = ""; -App::$strings["Entering some categories here makes it easier to find your post later."] = ""; -App::$strings["Share photos, links, location, etc."] = ""; -App::$strings["Only want to share content for a while? Make it expire at a certain date."] = ""; -App::$strings["You can password protect content."] = ""; -App::$strings["Choose who you share with."] = ""; -App::$strings["Click here when you are done."] = ""; -App::$strings["Adjust from which channels posts should be displayed."] = ""; -App::$strings["Only show posts from channels in the specified privacy group."] = ""; -App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = ""; -App::$strings["Easily find posts in given category."] = ""; -App::$strings["Easily find posts by date."] = ""; -App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = ""; -App::$strings["Here you see channels you have connected to."] = ""; -App::$strings["Save your search so you can repeat it at a later date."] = ""; -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."] = ""; -App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = ""; -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"] = ""; -App::$strings["Post to Twitter"] = ""; +App::$strings["Looking for help? Click here."] = "Du benötigst Hilfe? Klicke hier."; +App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "In Deinem Netzwerk gibt es neue Ereignisse. Klicke hier, um zu sehen, was passiert ist!"; +App::$strings["You have received a new private message. Click here to see from who!"] = "Du hast eine neue private Nachricht erhalten. Klicke hier, um zu sehen, von wem!"; +App::$strings["There are events this week. Click here too see which!"] = "Es gibt neue Termine diese Woche. Klicke hier, um zu sehen, welche!"; +App::$strings["You have received a new introduction. Click here to see who!"] = "Du hast eine neue Verbindungsanfrage erhalten. Klicke hier, um zu sehen, wer es ist!"; +App::$strings["There is a new system notification. Click here to see what has happened!"] = "Es gibt eine neue Systembenachrichtigung. Klicke hier, um zu sehen, was passiert ist!"; +App::$strings["Click here to share text, images, videos and sound."] = "Klicke hier, um Texte, Bilder, Videos und Klänge zu teilen."; +App::$strings["You can write an optional title for your update (good for long posts)."] = "Du kannst Deinem Beitrag einen optionalen Titel geben (gut für lange Beiträge)."; +App::$strings["Entering some categories here makes it easier to find your post later."] = "Ein paar Kategorien hier einzugeben, macht es leichter, Deinen Beitrag später wiederzufinden."; +App::$strings["Share photos, links, location, etc."] = "Teile Photos, Links, Standort, usw."; +App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Du möchtest diesen Inhalt nur für eine Weile teilen? Dann lass ihn zu einem bestimmten Datum ablaufen."; +App::$strings["You can password protect content."] = "Du kannst Inhalte mit einem Passwort schützen."; +App::$strings["Choose who you share with."] = "Wähle aus, mit wem Du teilen möchtest."; +App::$strings["Click here when you are done."] = "Klicke hier, wenn Du fertig bist."; +App::$strings["Adjust from which channels posts should be displayed."] = "Lege fest, von welchen Kanälen Beiträge angezeigt werden sollen."; +App::$strings["Only show posts from channels in the specified privacy group."] = "Zeige nur Beträge von Kanälen, die in einer bestimmten Gruppe sind."; +App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Finde Beiträge, die bestimmte Tags enthalten (Stichworte, die mit dem \"#\"-Symbol beginnen)."; +App::$strings["Easily find posts in given category."] = "Finde Beiträge in bestimmten Kategorien."; +App::$strings["Easily find posts by date."] = "Finde Beiträge anhand des Datums."; +App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Vorgeschlagene Kanäle, die in ihren Einstellungen zugestimmt haben, als Vorschläge angezeigt zu werden, und die Du eventuell interessant finden könntest."; +App::$strings["Here you see channels you have connected to."] = "Hier siehst du die Kanäle, mit denen Du verbunden bist."; +App::$strings["Save your search so you can repeat it at a later date."] = "Speichere Deine Suche, so dass Du sie später leicht erneut durchführen kannst."; +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."] = "Wenn Du dieses Symbol siehst, kannst Du weitgehend sicher sein, dass der Ansender dem angegebenen entspricht. Nicht immer ist es möglich, den Absender zu verifizieren, daher fehlt das Symbol mitunter. Das ist aber in der Regel kein Grund zur Sorge."; +App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "Vorsicht! Es kann sein, dass jemand versucht, eine Nachricht zu fälschen! Diese Nachricht muss nicht unbedingt vom angegebenen Absender stammen!"; +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"] = "Willkommen zu Hubzilla! Möchtest Du eine Tour der Benutzeroberfläche angezeigt bekommen?</p><p>Du kannst zu jeder Zeit pausieren und fortsetzen, wo Du aufgehört hast, indem Du die Seite neu lädtst, oder zu einer anderen Seite springst.</p><p>Du kannst auc durch das Drücken der Enter-Taste weitergehen."; +App::$strings["Post to Twitter"] = "Bei Twitter veröffentlichen"; App::$strings["Twitter settings updated."] = "Twitter-Einstellungen aktualisiert."; App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = ""; 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."] = ""; App::$strings["Log in with Twitter"] = "Mit Twitter anmelden"; -App::$strings["Copy the PIN from Twitter here"] = ""; +App::$strings["Copy the PIN from Twitter here"] = "PIN von Twitter hier her kopieren"; 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."] = ""; -App::$strings["Allow posting to Twitter"] = ""; -App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = ""; -App::$strings["Send public postings to Twitter by default"] = ""; -App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = ""; +App::$strings["Allow posting to Twitter"] = "Erlaube die Veröffentlichung bei Twitter"; +App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden."; +App::$strings["Send public postings to Twitter by default"] = "Standardmäßig öffentliche Beiträge bei Twitter veröffentlichen"; +App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Wenn aktiv können deine öffentlichen Beiträge bei dem verbundenen Twitter Account veröffentlicht werden."; App::$strings["Twitter Post Settings"] = "Twitter-Beitragseinstellungen"; App::$strings["Submit Settings"] = "Einstellungen absenden"; App::$strings["Show Upload Limits"] = "Hochladebeschränkungen anzeigen"; App::$strings["Hubzilla configured maximum size: "] = "Die in Hubzilla eingestellte maximale Größe:"; 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 (muss größer sein als upload_max_filesize):"; -App::$strings["Recent Channel/Profile Viewers"] = ""; -App::$strings["This plugin/addon has not been configured."] = ""; -App::$strings["Please visit the Visage settings on %s"] = ""; +App::$strings["Recent Channel/Profile Viewers"] = "Kürzliche Kanal/Profil Besucher"; +App::$strings["This plugin/addon has not been configured."] = "Dieses Plugin/Addon wurde noch nicht konfiguriert."; +App::$strings["Please visit the Visage settings on %s"] = "Bitte rufe die Visage Einstellungen auf %s auf"; App::$strings["your feature settings page"] = ""; App::$strings["No entries."] = "Keine Einträge."; -App::$strings["Enable Visage Visitor Logging"] = ""; +App::$strings["Enable Visage Visitor Logging"] = "Aktiviere das Visage-Besucher Logging"; App::$strings["Visage Settings"] = "Visage-Einstellungen"; App::$strings["Who likes me?"] = "Wer mag mich?"; -App::$strings["Post to WordPress"] = ""; -App::$strings["Enable WordPress Post Plugin"] = ""; +App::$strings["Post to WordPress"] = "Auf WordPress posten"; +App::$strings["Enable WordPress Post Plugin"] = "Aktiviere das WordPress-Plugin"; App::$strings["WordPress username"] = "WordPress-Benutzername"; App::$strings["WordPress password"] = "WordPress-Passwort"; App::$strings["WordPress API URL"] = "WordPress-API-URL"; -App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = ""; -App::$strings["WordPress blogid"] = ""; -App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = ""; -App::$strings["Post to WordPress by default"] = ""; -App::$strings["Forward comments (requires hubzilla_wp plugin)"] = ""; +App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Normalerweise https://your-blog.tld/xmlrpc.php"; +App::$strings["WordPress blogid"] = "WordPress blogid"; +App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Nötig für Mehrbenutzer Seiten wie wordpress.com, andernfalls frei lassen"; +App::$strings["Post to WordPress by default"] = "Standardmäßig auf auf WordPress posten"; +App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Kommentare weiterleiten (benötigt hubzilla_wp Plugin)"; App::$strings["WordPress Post Settings"] = "WordPress-Beitragseinstellungen"; App::$strings["Wordpress Settings saved."] = "Wordpress-Einstellungen gespeichert."; App::$strings["XMPP settings updated."] = "XMPP-Einstellungen aktualisiert."; App::$strings["Enable Chat"] = "Chat aktivieren"; App::$strings["Individual credentials"] = "Individuelle Anmeldedaten"; -App::$strings["Jabber BOSH server"] = ""; +App::$strings["Jabber BOSH server"] = "Jabber BOSH Server"; App::$strings["XMPP Settings"] = "XMPP-Einstellungen"; -App::$strings["Jabber BOSH host"] = ""; +App::$strings["Jabber BOSH host"] = "Jabber BOSH Host"; App::$strings["Use central userbase"] = "Zentrale Benutzerbasis verwenden"; 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."] = ""; App::$strings["Select Channel"] = "Kanal auswählen"; @@ -2157,14 +2172,29 @@ App::$strings["Create new calendar"] = "Neuen Kalender erstellen"; App::$strings["Calendar Name"] = "Kalendername"; App::$strings["Calendar Tools"] = "Kalenderwerkzeuge"; App::$strings["Import calendar"] = "Kalender importieren"; -App::$strings["Select a calendar to import to"] = ""; +App::$strings["Select a calendar to import to"] = "Kalender zum Hineinimportieren auswählen"; App::$strings["Addressbooks"] = "Adressbücher"; App::$strings["Addressbook name"] = "Adressbuchname"; App::$strings["Create new addressbook"] = "Neues Adressbuch erstellen"; App::$strings["Addressbook Name"] = "Adressbuchname"; App::$strings["Addressbook Tools"] = "Adressbuchwerkzeuge"; App::$strings["Import addressbook"] = "Adressbuch importieren"; -App::$strings["Select an addressbook to import to"] = ""; +App::$strings["Select an addressbook to import to"] = "Adressbuch zum Hineinimportieren auswählen"; +App::$strings["Errors encountered creating database table: "] = ""; +App::$strings["Default Calendar"] = "Standardkalender"; +App::$strings["Default Addressbook"] = "Standardadressbuch"; +App::$strings["CalDAV/CardDAV Settings saved."] = "CalDAV/CardDAV-Einstellungen gespeichert."; +App::$strings["Enable CalDAV/CardDAV Server for this channel"] = "Aktiviere den CalDAV/CardDAV Server für diesen Kanal"; +App::$strings["Your CalDAV resources are located at %s "] = "Deine CalDAV Resourcen sind unter %s verfügbar"; +App::$strings["Your CardDAV resources are located at %s "] = "Deine CardDAV Ressourcen sind unter %s verfügbar"; +App::$strings["CalDAV/CardDAV Settings"] = "CalDAV/CardDAV-Einstellungen"; +App::$strings["Mobile"] = "Mobil"; +App::$strings["Home"] = "Home"; +App::$strings["Home, Voice"] = "Zuhause, Sprache"; +App::$strings["Home, Fax"] = "Zuhause, Fax"; +App::$strings["Work"] = "Arbeit"; +App::$strings["Work, Voice"] = "Arbeit, Sprache"; +App::$strings["Work, Fax"] = "Arbeit, Fax"; App::$strings["INVALID EVENT DISMISSED!"] = "UNGÜLTIGEN TERMIN ABGELEHNT!"; App::$strings["Summary: "] = "Zusammenfassung:"; App::$strings["Date: "] = "Datum:"; @@ -2181,16 +2211,13 @@ App::$strings["More"] = "Mehr"; App::$strings["Less"] = "Weniger"; App::$strings["Select calendar"] = "Kalender auswählen"; App::$strings["Delete all"] = "Alles löschen"; -App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = ""; +App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "Entschuldigung, aber das Bearbeiten von wiederkehrenden Veranstaltungen ist leider noch nicht implementiert."; App::$strings["Organisation"] = "Organisation"; App::$strings["Title"] = "Titel"; App::$strings["Phone"] = "Telefon"; App::$strings["Instant messenger"] = ""; App::$strings["Website"] = "Webseite"; App::$strings["Note"] = "Hinweis"; -App::$strings["Mobile"] = "Mobil"; -App::$strings["Home"] = "Home"; -App::$strings["Work"] = "Arbeit"; App::$strings["Add Field"] = "Feld hinzufügen"; App::$strings["P.O. Box"] = ""; App::$strings["Additional"] = "Zusätzlich"; @@ -2198,33 +2225,21 @@ App::$strings["Street"] = "Straße"; App::$strings["Locality"] = "Ortschaft"; App::$strings["Region"] = "Region"; App::$strings["ZIP Code"] = "Postleitzahl"; -App::$strings["Errors encountered creating database table: "] = ""; -App::$strings["Default Calendar"] = "Standardkalender"; -App::$strings["Default Addressbook"] = "Standardadressbuch"; -App::$strings["CalDAV/CardDAV Settings saved."] = "CalDAV/CardDAV-Einstellungen gespeichert."; -App::$strings["Enable CalDAV/CardDAV Server for this channel"] = ""; -App::$strings["Your CalDAV resources are located at %s "] = ""; -App::$strings["Your CardDAV resources are located at %s "] = ""; -App::$strings["CalDAV/CardDAV Settings"] = "CalDAV/CardDAV-Einstellungen"; -App::$strings["Home, Voice"] = "Zuhause, Sprache"; -App::$strings["Home, Fax"] = "Zuhause, Fax"; -App::$strings["Work, Voice"] = "Arbeit, Sprache"; -App::$strings["Work, Fax"] = "Arbeit, Fax"; App::$strings["Invalid game."] = "Ungültiges Spiel."; App::$strings["You are not a player in this game."] = "Sie sind kein Spieler in diesem Spiel."; -App::$strings["You must be a local channel to create a game."] = ""; -App::$strings["You must select one opponent that is not yourself."] = ""; +App::$strings["You must be a local channel to create a game."] = "Um ein Spiel zu eröffnen, musst du ein lokaler Kanal sein"; +App::$strings["You must select one opponent that is not yourself."] = "Du musst einen Gegner wählen, der nicht du selbst ist"; App::$strings["Creating new game..."] = "Neues Spiel wird erstellt..."; App::$strings["You must select white or black."] = "Sie müssen weiß oder schwarz auswählen."; App::$strings["Error creating new game."] = "Fehler beim Erstellen eines neuen Spiels."; App::$strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar."; -App::$strings["You must select a local channel /chess/channelname"] = ""; +App::$strings["You must select a local channel /chess/channelname"] = "Du musst einen lokalen Kanal/Schach(Kanalnamen aufwählen"; App::$strings["Enable notifications"] = "Benachrichtigungen aktivieren"; -App::$strings["Your Webbie:"] = ""; +App::$strings["Your Webbie:"] = "Dein Webbie"; App::$strings["Fontsize (px):"] = "Schriftgröße (px):"; App::$strings["Link:"] = "Link:"; -App::$strings["Like us on Hubzilla"] = ""; -App::$strings["Embed:"] = ""; +App::$strings["Like us on Hubzilla"] = "Like us on Hubzilla"; +App::$strings["Embed:"] = "Einbetten"; App::$strings["Male"] = "Männlich"; App::$strings["Female"] = "Weiblich"; App::$strings["OpenID protocol error. No ID returned."] = "OpenID-Protokollfehler. Keine Kennung zurückgegeben."; @@ -2243,12 +2258,16 @@ App::$strings["Birth Year"] = "Geburtsjahr"; App::$strings["Birth Month"] = "Geburtsmonat"; App::$strings["Birth Day"] = "Geburtstag"; App::$strings["Birthdate"] = "Geburtsdatum"; -App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = ""; +App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal."; App::$strings["The error message was:"] = "Die Fehlermeldung war:"; +App::$strings["Reconnecting %d connections"] = "Erneuere %d Verbindungen"; +App::$strings["Diaspora Reconnect"] = ""; +App::$strings["Use this form to re-establish Diaspora connections which were initially made from a different hub."] = ""; +App::$strings["Reconnect"] = "Erneut verbinden"; App::$strings["Send test email"] = "Test-E-Mail senden"; App::$strings["Mail sent."] = "Mail gesendet."; -App::$strings["Sending of mail failed."] = ""; -App::$strings["Mail Test"] = ""; +App::$strings["Sending of mail failed."] = "Senden der E-Mail fehlgeschlagen."; +App::$strings["Mail Test"] = "Mail Test"; App::$strings["Errors encountered deleting database table "] = "Beim Löschen der Datenbanktabelle sind Fehler aufgetreten."; App::$strings["Drop tables when uninstalling?"] = "Lösche Tabellen beim Deinstallieren?"; App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Wenn ausgewählt, werden die Rendezvous-Tabellen in der Datenbank gelöscht, sobald das Plugin deinstalliert wird."; @@ -2268,50 +2287,66 @@ App::$strings["Edit proximity alert"] = "Annäherungsalarm bearbeiten"; 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):"] = "Ein Annäherungsalarm wird ausgelöst werden, sobald sich dieses Mitglied innerhalb eines bestimmten Radius von Dir aufhält.<br><br>Gib einen Radius in Metern ein (0 zum Abschalten der Funktion):"; App::$strings["distance"] = "Entfernung"; App::$strings["Add new rendezvous"] = "Neues Rendezvous hinzufügen"; -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."] = ""; -App::$strings["Reconnecting %d connections"] = ""; -App::$strings["Diaspora Reconnect"] = ""; -App::$strings["Use this form to re-establish Diaspora connections which were initially made from a different hub."] = ""; -App::$strings["Reconnect"] = ""; +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."] = "Erstelle ein neues Rendezvous und teile den Zugriffslink mit allen, die Du in die Gruppe einladen möchtest. Die, die den Link öffnen, werden Mitglieder des Rendezvous. Sie können die Standorte der anderen Mitglieder sehen, Marker zur Karte hinzufügen oder ihre eigenen Standorte mit der Gruppe teilen."; App::$strings["No username found in import file."] = "Kein Benutzername in der Importdatei gefunden."; App::$strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."; App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"; -App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen"; -App::$strings["Empty name"] = "Namensfeld leer"; -App::$strings["Name too long"] = "Name ist zu lang"; -App::$strings["No account identifier"] = "Keine Account-Kennung"; -App::$strings["Nickname is required."] = "Spitzname ist erforderlich."; -App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen."; -App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."; -App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen"; -App::$strings["Default Profile"] = "Standard-Profil"; -App::$strings["Create New Profile"] = "Neues Profil erstellen"; -App::$strings["Visible to everybody"] = "Für jeden sichtbar"; -App::$strings["Gender:"] = "Geschlecht:"; -App::$strings["Homepage:"] = "Homepage:"; -App::$strings["Online Now"] = "gerade online"; -App::$strings["Like this channel"] = "Dieser Kanal gefällt mir"; -App::$strings["j F, Y"] = "j. F Y"; -App::$strings["j F"] = "j. F"; -App::$strings["Birthday:"] = "Geburtstag:"; -App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s"; -App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:"; -App::$strings["Tags:"] = "Schlagworte:"; -App::$strings["Political Views:"] = "Politische Ansichten:"; -App::$strings["Religion:"] = "Religion:"; -App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:"; -App::$strings["Likes:"] = "Gefällt:"; -App::$strings["Dislikes:"] = "Gefällt nicht:"; -App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:"; -App::$strings["My other channels:"] = "Meine anderen Kanäle:"; -App::$strings["Musical interests:"] = "Musikalische Interessen:"; -App::$strings["Books, literature:"] = "Bücher, Literatur:"; -App::$strings["Television:"] = "Fernsehen:"; -App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:"; -App::$strings["Love/Romance:"] = "Liebe/Romantik:"; -App::$strings["Work/employment:"] = "Arbeit/Anstellung:"; -App::$strings["School/education:"] = "Schule/Ausbildung:"; -App::$strings["Like this thing"] = "Gefällt mir"; +App::$strings["Birthday"] = "Geburtstag"; +App::$strings["Age: "] = "Alter:"; +App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT"; +App::$strings["never"] = "Nie"; +App::$strings["less than a second ago"] = "Vor weniger als einer Sekunde"; +App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s"; +App::$strings["__ctx:relative_date__ year"] = array( + 0 => "Jahr", + 1 => "Jahre", +); +App::$strings["__ctx:relative_date__ month"] = array( + 0 => "Monat", + 1 => "Monate", +); +App::$strings["__ctx:relative_date__ week"] = array( + 0 => "Woche", + 1 => "Wochen", +); +App::$strings["__ctx:relative_date__ day"] = array( + 0 => "Tag", + 1 => "Tage", +); +App::$strings["__ctx:relative_date__ hour"] = array( + 0 => "Stunde", + 1 => "Stunden", +); +App::$strings["__ctx:relative_date__ minute"] = array( + 0 => "Minute", + 1 => "Minuten", +); +App::$strings["__ctx:relative_date__ second"] = array( + 0 => "Sekunde", + 1 => "Sekunden", +); +App::$strings["%1\$s's birthday"] = "%1\$ss Geburtstag"; +App::$strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s"; +App::$strings["Not a valid email address"] = "Ungültige E-Mail-Adresse"; +App::$strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt"; +App::$strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."; +App::$strings["An invitation is required."] = "Eine Einladung wird benötigt."; +App::$strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden."; +App::$strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein."; +App::$strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen."; +App::$strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s"; +App::$strings["Registration request at %s"] = "Registrierungsanfrage auf %s"; +App::$strings["your registration password"] = "Dein Registrierungspasswort"; +App::$strings["Registration details for %s"] = "Registrierungsdetails für %s"; +App::$strings["Account approved."] = "Nutzerkonto bestätigt."; +App::$strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen"; +App::$strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen."; +App::$strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements."; +App::$strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."; +App::$strings["No recipient provided."] = "Kein Empfänger angegeben"; +App::$strings["[no subject]"] = "[no subject]"; +App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen."; +App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden."; App::$strings["Frequently"] = "Häufig"; App::$strings["Hourly"] = "Stündlich"; App::$strings["Twice daily"] = "Zwei Mal am Tag"; @@ -2372,44 +2407,95 @@ App::$strings["Uncertain"] = "Ungewiss"; App::$strings["It's complicated"] = "Es ist kompliziert"; App::$strings["Don't care"] = "Interessiert mich nicht"; App::$strings["Ask me"] = "Frag mich mal"; -App::$strings["Who can see this?"] = "Wer kann das sehen?"; -App::$strings["Custom selection"] = "Benutzerdefinierte Auswahl"; -App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."; -App::$strings["Show"] = "Anzeigen"; -App::$strings["Don't show"] = "Nicht anzeigen"; -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."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."; -App::$strings["l F d, Y \\@ g:i A"] = "l, d. F Y, H:i"; -App::$strings["Starts:"] = "Beginnt:"; -App::$strings["Finishes:"] = "Endet:"; -App::$strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt"; -App::$strings["Not specified"] = "Keine Angabe"; -App::$strings["Needs Action"] = "Aktion erforderlich"; -App::$strings["Completed"] = "Abgeschlossen"; -App::$strings["In Process"] = "In Bearbeitung"; -App::$strings["Cancelled"] = "gestrichen"; -App::$strings["Help:"] = "Hilfe:"; -App::$strings["No recipient provided."] = "Kein Empfänger angegeben"; -App::$strings["[no subject]"] = "[no subject]"; -App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen."; -App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden."; -App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes"; -App::$strings["Image file is empty."] = "Bilddatei ist leer."; -App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen."; -App::$strings["a new photo"] = "ein neues Foto"; -App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht"; -App::$strings["Photo Albums"] = "Fotoalben"; -App::$strings["Upload New Photos"] = "Neue Fotos hochladen"; -App::$strings["view full size"] = "In Vollbildansicht anschauen"; -App::$strings["Administrator"] = "Administrator"; -App::$strings["No Subject"] = "Kein Betreff"; -App::$strings["OStatus"] = "OStatus"; -App::$strings["GNU-Social"] = "GNU-Social"; -App::$strings["RSS/Atom"] = "RSS/Atom"; -App::$strings["Facebook"] = "Facebook"; -App::$strings["Zot"] = "Zot!"; -App::$strings["LinkedIn"] = "LinkedIn"; -App::$strings["XMPP/IM"] = "XMPP/IM"; -App::$strings["MySpace"] = "MySpace"; +App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen"; +App::$strings["Empty name"] = "Namensfeld leer"; +App::$strings["Name too long"] = "Name ist zu lang"; +App::$strings["No account identifier"] = "Keine Account-Kennung"; +App::$strings["Nickname is required."] = "Spitzname ist erforderlich."; +App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen."; +App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."; +App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen"; +App::$strings["Default Profile"] = "Standard-Profil"; +App::$strings["Create New Profile"] = "Neues Profil erstellen"; +App::$strings["Visible to everybody"] = "Für jeden sichtbar"; +App::$strings["Gender:"] = "Geschlecht:"; +App::$strings["Homepage:"] = "Homepage:"; +App::$strings["Online Now"] = "gerade online"; +App::$strings["Like this channel"] = "Dieser Kanal gefällt mir"; +App::$strings["j F, Y"] = "j. F Y"; +App::$strings["j F"] = "j. F"; +App::$strings["Birthday:"] = "Geburtstag:"; +App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s"; +App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:"; +App::$strings["Tags:"] = "Schlagworte:"; +App::$strings["Political Views:"] = "Politische Ansichten:"; +App::$strings["Religion:"] = "Religion:"; +App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:"; +App::$strings["Likes:"] = "Gefällt:"; +App::$strings["Dislikes:"] = "Gefällt nicht:"; +App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:"; +App::$strings["My other channels:"] = "Meine anderen Kanäle:"; +App::$strings["Musical interests:"] = "Musikalische Interessen:"; +App::$strings["Books, literature:"] = "Bücher, Literatur:"; +App::$strings["Television:"] = "Fernsehen:"; +App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:"; +App::$strings["Love/Romance:"] = "Liebe/Romantik:"; +App::$strings["Work/employment:"] = "Arbeit/Anstellung:"; +App::$strings["School/education:"] = "Schule/Ausbildung:"; +App::$strings["Like this thing"] = "Gefällt mir"; +App::$strings["New window"] = "Neues Fenster"; +App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"; +App::$strings["User '%s' deleted"] = "Benutzer '%s' gelöscht"; +App::$strings["Directory Options"] = "Verzeichnisoptionen"; +App::$strings["Safe Mode"] = "Sicherer Modus"; +App::$strings["Public Forums Only"] = "Nur öffentliche Foren"; +App::$strings["This Website Only"] = "Nur dieser Hub"; +App::$strings["Logout"] = "Abmelden"; +App::$strings["End this session"] = "Beende diese Sitzung"; +App::$strings["Your posts and conversations"] = "Deine Beiträge und Unterhaltungen"; +App::$strings["Your profile page"] = "Deine Profilseite"; +App::$strings["Manage/Edit profiles"] = "Profile verwalten"; +App::$strings["Edit your profile"] = "Profil bearbeiten"; +App::$strings["Your photos"] = "Deine Bilder"; +App::$strings["Your files"] = "Deine Dateien"; +App::$strings["Your chatrooms"] = "Deine Chaträume"; +App::$strings["Bookmarks"] = "Lesezeichen"; +App::$strings["Your bookmarks"] = "Deine Lesezeichen"; +App::$strings["Your webpages"] = "Deine Webseiten"; +App::$strings["Your wikis"] = "Ihre Wikis"; +App::$strings["Sign in"] = "Anmelden"; +App::$strings["Remote authentication"] = "Über Konto auf anderem Server einloggen"; +App::$strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"; +App::$strings["Get me home"] = "Bringe mich nach Hause (eigener Kanal)"; +App::$strings["Log me out of this site"] = "Logge mich von dieser Seite aus"; +App::$strings["Create an account"] = "Erzeuge ein Konto"; +App::$strings["Help and documentation"] = "Hilfe und Dokumentation"; +App::$strings["Applications, utilities, links, games"] = "Anwendungen (Apps), Zubehör, Links, Spiele"; +App::$strings["Search site @name, #tag, ?docs, content"] = "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"; +App::$strings["Channel Directory"] = "Kanal-Verzeichnis"; +App::$strings["Your grid"] = "Dein Grid"; +App::$strings["Mark all grid notifications seen"] = "Alle Grid-Benachrichtigungen als angesehen markieren"; +App::$strings["Channel home"] = "Mein Kanal"; +App::$strings["Mark all channel notifications seen"] = "Markiere alle Kanal-Benachrichtigungen als angesehen"; +App::$strings["Notices"] = "Benachrichtigungen"; +App::$strings["Notifications"] = "Benachrichtigungen"; +App::$strings["See all notifications"] = "Alle Benachrichtigungen ansehen"; +App::$strings["Private mail"] = "Persönliche Mail"; +App::$strings["See all private messages"] = "Alle persönlichen Nachrichten ansehen"; +App::$strings["Mark all private messages seen"] = "Markiere alle persönlichen Nachrichten als gesehen"; +App::$strings["Inbox"] = "Eingang"; +App::$strings["Outbox"] = "Ausgang"; +App::$strings["New Message"] = "Neue Nachricht"; +App::$strings["Event Calendar"] = "Terminkalender"; +App::$strings["See all events"] = "Alle Termine ansehen"; +App::$strings["Mark all events seen"] = "Markiere alle Termine als gesehen"; +App::$strings["Manage Your Channels"] = "Verwalte Deine Kanäle"; +App::$strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen"; +App::$strings["Admin"] = "Administration"; +App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration"; +App::$strings["Loading..."] = "Lädt ..."; +App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt"; +App::$strings["Please wait..."] = "Bitte warten..."; App::$strings["General Features"] = "Allgemeine Funktionen"; App::$strings["Multiple Profiles"] = "Mehrfachprofile"; App::$strings["Ability to create multiple profiles"] = "Ermöglicht das Anlegen mehrerer Profile pro Kanal"; @@ -2483,55 +2569,96 @@ App::$strings["Tag Cloud"] = "Schlagwort-Wolke"; App::$strings["Provide a personal tag cloud on your channel page"] = "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite"; App::$strings["Premium Channel"] = "Premium-Kanal"; App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen"; +App::$strings["prev"] = "vorherige"; +App::$strings["first"] = "erste"; +App::$strings["last"] = "letzte"; +App::$strings["next"] = "nächste"; +App::$strings["older"] = "älter"; +App::$strings["newer"] = "neuer"; +App::$strings["No connections"] = "Keine Verbindungen"; +App::$strings["View all %s connections"] = "Alle Verbindungen von %s anzeigen"; +App::$strings["poke"] = "anstupsen"; +App::$strings["poked"] = "stupste"; +App::$strings["ping"] = "anpingen"; +App::$strings["pinged"] = "pingte"; +App::$strings["prod"] = "knuffen"; +App::$strings["prodded"] = "knuffte"; +App::$strings["slap"] = "ohrfeigen"; +App::$strings["slapped"] = "ohrfeigte"; +App::$strings["finger"] = "befummeln"; +App::$strings["fingered"] = "befummelte"; +App::$strings["rebuff"] = "eine Abfuhr erteilen"; +App::$strings["rebuffed"] = "zurückgewiesen"; +App::$strings["happy"] = "glücklich"; +App::$strings["sad"] = "traurig"; +App::$strings["mellow"] = "sanft"; +App::$strings["tired"] = "müde"; +App::$strings["perky"] = "frech"; +App::$strings["angry"] = "sauer"; +App::$strings["stupefied"] = "verblüfft"; +App::$strings["puzzled"] = "verwirrt"; +App::$strings["interested"] = "interessiert"; +App::$strings["bitter"] = "verbittert"; +App::$strings["cheerful"] = "fröhlich"; +App::$strings["alive"] = "lebendig"; +App::$strings["annoyed"] = "verärgert"; +App::$strings["anxious"] = "unruhig"; +App::$strings["cranky"] = "schrullig"; +App::$strings["disturbed"] = "verstört"; +App::$strings["frustrated"] = "frustriert"; +App::$strings["depressed"] = "deprimiert"; +App::$strings["motivated"] = "motiviert"; +App::$strings["relaxed"] = "entspannt"; +App::$strings["surprised"] = "überrascht"; +App::$strings["Monday"] = "Montag"; +App::$strings["Tuesday"] = "Dienstag"; +App::$strings["Wednesday"] = "Mittwoch"; +App::$strings["Thursday"] = "Donnerstag"; +App::$strings["Friday"] = "Freitag"; +App::$strings["Saturday"] = "Samstag"; +App::$strings["Sunday"] = "Sonntag"; +App::$strings["January"] = "Januar"; +App::$strings["February"] = "Februar"; +App::$strings["March"] = "März"; +App::$strings["April"] = "April"; +App::$strings["May"] = "Mai"; +App::$strings["June"] = "Juni"; +App::$strings["July"] = "Juli"; +App::$strings["August"] = "August"; +App::$strings["September"] = "September"; +App::$strings["October"] = "Oktober"; +App::$strings["November"] = "November"; +App::$strings["December"] = "Dezember"; +App::$strings["Unknown Attachment"] = "Unbekannter Anhang"; +App::$strings["unknown"] = "unbekannt"; +App::$strings["remove category"] = "Kategorie entfernen"; +App::$strings["remove from file"] = "aus der Datei entfernen"; +App::$strings["default"] = "Standard"; +App::$strings["Page layout"] = "Seiten-Layout"; +App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"; +App::$strings["Page content type"] = "Art des Seiteninhalts"; +App::$strings["activity"] = "Aktivität"; +App::$strings["Design Tools"] = "Gestaltungswerkzeuge"; +App::$strings["Pages"] = "Seiten"; +App::$strings["Import website..."] = "Webseite importieren..."; +App::$strings["Select folder to import"] = "Ordner zum Importieren auswählen"; +App::$strings["Import from a zipped folder:"] = "Aus einem gezippten Ordner importieren:"; +App::$strings["Import from cloud files:"] = "Aus Cloud-Dateien importieren:"; +App::$strings["/cloud/channel/path/to/folder"] = "/Cloud/Kanal/Pfad/zum/Ordner"; +App::$strings["Enter path to website files"] = "Pfad zu Webseitendateien eingeben"; +App::$strings["Select folder"] = "Ordner auswählen"; +App::$strings["Export website..."] = "Webseite exportieren..."; +App::$strings["Export to a zip file"] = "In eine ZIP-Datei exportieren"; +App::$strings["website.zip"] = "website.zip"; +App::$strings["Enter a name for the zip file."] = "Geben Sie einen für die ZIP-Datei ein."; +App::$strings["Export to cloud files"] = "In Cloud-Dateien exportieren"; +App::$strings["/path/to/export/folder"] = "/Pfad/zum/exportierenden/Ordner"; +App::$strings["Enter a path to a cloud files destination."] = "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein."; +App::$strings["Specify folder"] = "Ordner angeben"; App::$strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen"; -App::$strings["Logout"] = "Abmelden"; -App::$strings["End this session"] = "Beende diese Sitzung"; -App::$strings["Your posts and conversations"] = "Deine Beiträge und Unterhaltungen"; -App::$strings["Your profile page"] = "Deine Profilseite"; -App::$strings["Manage/Edit profiles"] = "Profile verwalten"; -App::$strings["Edit your profile"] = "Profil bearbeiten"; -App::$strings["Your photos"] = "Deine Bilder"; -App::$strings["Your files"] = "Deine Dateien"; -App::$strings["Your chatrooms"] = "Deine Chaträume"; -App::$strings["Bookmarks"] = "Lesezeichen"; -App::$strings["Your bookmarks"] = "Deine Lesezeichen"; -App::$strings["Your webpages"] = "Deine Webseiten"; -App::$strings["Your wiki"] = "Dein Wiki"; -App::$strings["Sign in"] = "Anmelden"; -App::$strings["%s - click to logout"] = "%s - Klick zum Abmelden"; -App::$strings["Remote authentication"] = "Über Konto auf anderem Server einloggen"; -App::$strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"; -App::$strings["Home Page"] = "Homepage"; -App::$strings["Create an account"] = "Erzeuge ein Konto"; -App::$strings["Help and documentation"] = "Hilfe und Dokumentation"; -App::$strings["Applications, utilities, links, games"] = "Anwendungen (Apps), Zubehör, Links, Spiele"; -App::$strings["Search site @name, #tag, ?docs, content"] = "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"; -App::$strings["Channel Directory"] = "Kanal-Verzeichnis"; -App::$strings["Your grid"] = "Dein Grid"; -App::$strings["Mark all grid notifications seen"] = "Alle Grid-Benachrichtigungen als angesehen markieren"; -App::$strings["Channel home"] = "Mein Kanal"; -App::$strings["Mark all channel notifications seen"] = "Markiere alle Kanal-Benachrichtigungen als angesehen"; -App::$strings["Notices"] = "Benachrichtigungen"; -App::$strings["Notifications"] = "Benachrichtigungen"; -App::$strings["See all notifications"] = "Alle Benachrichtigungen ansehen"; -App::$strings["Private mail"] = "Persönliche Mail"; -App::$strings["See all private messages"] = "Alle persönlichen Nachrichten ansehen"; -App::$strings["Mark all private messages seen"] = "Markiere alle persönlichen Nachrichten als gesehen"; -App::$strings["Inbox"] = "Eingang"; -App::$strings["Outbox"] = "Ausgang"; -App::$strings["New Message"] = "Neue Nachricht"; -App::$strings["Event Calendar"] = "Terminkalender"; -App::$strings["See all events"] = "Alle Termine ansehen"; -App::$strings["Mark all events seen"] = "Markiere alle Termine als gesehen"; -App::$strings["Manage Your Channels"] = "Verwalte Deine Kanäle"; -App::$strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen"; -App::$strings["Admin"] = "Administration"; -App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration"; -App::$strings["Loading..."] = "Lädt ..."; -App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt"; -App::$strings["Please wait..."] = "Bitte warten..."; -App::$strings["New Page"] = "Neue Seite"; App::$strings["Different viewers will see this text differently"] = "Verschiedene Betrachter werden diesen Text unterschiedlich sehen"; +App::$strings["Help:"] = "Hilfe:"; +App::$strings["New Page"] = "Neue Seite"; App::$strings["%d invitation available"] = array( 0 => "%d Einladung verfügbar", 1 => "%d Einladungen verfügbar", @@ -2550,9 +2677,6 @@ App::$strings["%d connection in common"] = array( 1 => "%d gemeinsame Verbindungen", ); App::$strings["show more"] = "mehr zeigen"; -App::$strings["New window"] = "Neues Fenster"; -App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"; -App::$strings["User '%s' deleted"] = "Benutzer '%s' gelöscht"; App::$strings["Delete this item?"] = "Dieses Element löschen?"; App::$strings["%s show less"] = "%s weniger anzeigen"; App::$strings["%s expand"] = "%s aufklappen"; @@ -2586,18 +2710,7 @@ App::$strings["about a year"] = "ungefähr ein Jahr"; App::$strings["%d years"] = "%d Jahre"; App::$strings[" "] = " "; App::$strings["timeago.numbers"] = "timeago.numbers"; -App::$strings["January"] = "Januar"; -App::$strings["February"] = "Februar"; -App::$strings["March"] = "März"; -App::$strings["April"] = "April"; App::$strings["__ctx:long__ May"] = "Mai"; -App::$strings["June"] = "Juni"; -App::$strings["July"] = "Juli"; -App::$strings["August"] = "August"; -App::$strings["September"] = "September"; -App::$strings["October"] = "Oktober"; -App::$strings["November"] = "November"; -App::$strings["December"] = "Dezember"; App::$strings["Jan"] = "Jan"; App::$strings["Feb"] = "Feb"; App::$strings["Mar"] = "Mär"; @@ -2610,13 +2723,6 @@ App::$strings["Sep"] = "Sep"; App::$strings["Oct"] = "Okt"; App::$strings["Nov"] = "Nov"; App::$strings["Dec"] = "Dez"; -App::$strings["Sunday"] = "Sonntag"; -App::$strings["Monday"] = "Montag"; -App::$strings["Tuesday"] = "Dienstag"; -App::$strings["Wednesday"] = "Mittwoch"; -App::$strings["Thursday"] = "Donnerstag"; -App::$strings["Friday"] = "Freitag"; -App::$strings["Saturday"] = "Samstag"; App::$strings["Sun"] = "So"; App::$strings["Mon"] = "Mo"; App::$strings["Tue"] = "Di"; @@ -2629,32 +2735,33 @@ App::$strings["__ctx:calendar__ month"] = "Monat"; App::$strings["__ctx:calendar__ week"] = "Woche"; App::$strings["__ctx:calendar__ day"] = "Tag"; App::$strings["__ctx:calendar__ All day"] = "Ganztägig"; -App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert "; -App::$strings["Channel location missing."] = "Adresse des Kanals fehlt."; -App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig."; -App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr."; -App::$strings["Protocol disabled."] = "Protokoll deaktiviert."; -App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen"; -App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden."; -App::$strings["Directory Options"] = "Verzeichnisoptionen"; -App::$strings["Safe Mode"] = "Sicherer Modus"; -App::$strings["Public Forums Only"] = "Nur öffentliche Foren"; -App::$strings["This Website Only"] = "Nur dieser Hub"; -App::$strings["Item was not found."] = "Beitrag wurde nicht gefunden."; -App::$strings["No source file."] = "Keine Quelldatei."; -App::$strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden"; -App::$strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden"; -App::$strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d"; -App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."; -App::$strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."; -App::$strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."; -App::$strings["Path not available."] = "Pfad nicht verfügbar."; -App::$strings["Empty pathname"] = "Leere Pfadangabe"; -App::$strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad"; -App::$strings["Path not found."] = "Pfad nicht gefunden."; -App::$strings["mkdir failed."] = "mkdir fehlgeschlagen."; -App::$strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen."; -App::$strings["Empty path"] = "Leere Pfadangabe"; +App::$strings["view full size"] = "In Vollbildansicht anschauen"; +App::$strings["No Subject"] = "Kein Betreff"; +App::$strings["OStatus"] = "OStatus"; +App::$strings["GNU-Social"] = "GNU-Social"; +App::$strings["RSS/Atom"] = "RSS/Atom"; +App::$strings["Facebook"] = "Facebook"; +App::$strings["Zot"] = "Zot!"; +App::$strings["LinkedIn"] = "LinkedIn"; +App::$strings["XMPP/IM"] = "XMPP/IM"; +App::$strings["MySpace"] = "MySpace"; +App::$strings["Tags"] = "Schlagwörter"; +App::$strings["Keywords"] = "Schlüsselwörter"; +App::$strings["have"] = "habe"; +App::$strings["has"] = "hat"; +App::$strings["want"] = "will"; +App::$strings["wants"] = "will"; +App::$strings["likes"] = "gefällt"; +App::$strings["dislikes"] = "missfällt"; +App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."; +App::$strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."; +App::$strings["Unable to import element \""] = "Element konnte nicht importiert werden."; +App::$strings["guest:"] = "Gast:"; +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."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."; +App::$strings["Invalid data packet"] = "Ungültiges Datenpaket"; +App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren"; +App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren"; +App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels"; App::$strings["(Unknown)"] = "(Unbekannt)"; App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar."; App::$strings["Visible to you only."] = "Nur für Dich sichtbar."; @@ -2671,10 +2778,6 @@ App::$strings["profile photo"] = "Profilfoto"; App::$strings["[Edited %s]"] = "[%s wurde bearbeitet]"; App::$strings["__ctx:edit_activity__ Post"] = "Beitrag"; App::$strings["__ctx:edit_activity__ Comment"] = "Kommentar"; -App::$strings["Invalid data packet"] = "Ungültiges Datenpaket"; -App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren"; -App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren"; -App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels"; App::$strings["Logged out."] = "Ausgeloggt."; App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen"; App::$strings[" and "] = "und"; @@ -2682,76 +2785,37 @@ App::$strings["public profile"] = "öffentliches Profil"; App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s hat %2\$s auf “%3\$s” geändert"; App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s"; App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert."; -App::$strings["prev"] = "vorherige"; -App::$strings["first"] = "erste"; -App::$strings["last"] = "letzte"; -App::$strings["next"] = "nächste"; -App::$strings["older"] = "älter"; -App::$strings["newer"] = "neuer"; -App::$strings["No connections"] = "Keine Verbindungen"; -App::$strings["View all %s connections"] = "Alle Verbindungen von %s anzeigen"; -App::$strings["poke"] = "anstupsen"; -App::$strings["poked"] = "stupste"; -App::$strings["ping"] = "anpingen"; -App::$strings["pinged"] = "pingte"; -App::$strings["prod"] = "knuffen"; -App::$strings["prodded"] = "knuffte"; -App::$strings["slap"] = "ohrfeigen"; -App::$strings["slapped"] = "ohrfeigte"; -App::$strings["finger"] = "befummeln"; -App::$strings["fingered"] = "befummelte"; -App::$strings["rebuff"] = "eine Abfuhr erteilen"; -App::$strings["rebuffed"] = "zurückgewiesen"; -App::$strings["happy"] = "glücklich"; -App::$strings["sad"] = "traurig"; -App::$strings["mellow"] = "sanft"; -App::$strings["tired"] = "müde"; -App::$strings["perky"] = "frech"; -App::$strings["angry"] = "sauer"; -App::$strings["stupefied"] = "verblüfft"; -App::$strings["puzzled"] = "verwirrt"; -App::$strings["interested"] = "interessiert"; -App::$strings["bitter"] = "verbittert"; -App::$strings["cheerful"] = "fröhlich"; -App::$strings["alive"] = "lebendig"; -App::$strings["annoyed"] = "verärgert"; -App::$strings["anxious"] = "unruhig"; -App::$strings["cranky"] = "schrullig"; -App::$strings["disturbed"] = "verstört"; -App::$strings["frustrated"] = "frustriert"; -App::$strings["depressed"] = "deprimiert"; -App::$strings["motivated"] = "motiviert"; -App::$strings["relaxed"] = "entspannt"; -App::$strings["surprised"] = "überrascht"; -App::$strings["May"] = "Mai"; -App::$strings["Unknown Attachment"] = "Unbekannter Anhang"; -App::$strings["unknown"] = "unbekannt"; -App::$strings["remove category"] = "Kategorie entfernen"; -App::$strings["remove from file"] = "aus der Datei entfernen"; -App::$strings["default"] = "Standard"; -App::$strings["Page layout"] = "Seiten-Layout"; -App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"; -App::$strings["Page content type"] = "Art des Seiteninhalts"; -App::$strings["activity"] = "Aktivität"; -App::$strings["Design Tools"] = "Gestaltungswerkzeuge"; -App::$strings["Pages"] = "Seiten"; -App::$strings["Import website..."] = "Webseite importieren..."; -App::$strings["Select folder to import"] = "Ordner zum Importieren auswählen"; -App::$strings["Import from a zipped folder:"] = "Aus einem gezippten Ordner importieren:"; -App::$strings["Import from cloud files:"] = "Aus Cloud-Dateien importieren:"; -App::$strings["/cloud/channel/path/to/folder"] = "/Cloud/Kanal/Pfad/zum/Ordner"; -App::$strings["Enter path to website files"] = "Pfad zu Webseitendateien eingeben"; -App::$strings["Select folder"] = "Ordner auswählen"; -App::$strings["Export website..."] = "Webseite exportieren..."; -App::$strings["Export to a zip file"] = "In eine ZIP-Datei exportieren"; -App::$strings["website.zip"] = "website.zip"; -App::$strings["Enter a name for the zip file."] = "Geben Sie einen für die ZIP-Datei ein."; -App::$strings["Export to cloud files"] = "In Cloud-Dateien exportieren"; -App::$strings["/path/to/export/folder"] = "/Pfad/zum/exportierenden/Ordner"; -App::$strings["Enter a path to a cloud files destination."] = "Gib den Pfad zu einem Datei-Speicherort in der Cloud ein."; -App::$strings["Specify folder"] = "Ordner angeben"; -App::$strings["Attachments:"] = "Anhänge:"; -App::$strings["\$Projectname event notification:"] = "\$Projectname-Terminbenachrichtigung:"; +App::$strings["Item was not found."] = "Beitrag wurde nicht gefunden."; +App::$strings["No source file."] = "Keine Quelldatei."; +App::$strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden"; +App::$strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden"; +App::$strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d"; +App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."; +App::$strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."; +App::$strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."; +App::$strings["Path not available."] = "Pfad nicht verfügbar."; +App::$strings["Empty pathname"] = "Leere Pfadangabe"; +App::$strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad"; +App::$strings["Path not found."] = "Pfad nicht gefunden."; +App::$strings["mkdir failed."] = "mkdir fehlgeschlagen."; +App::$strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen."; +App::$strings["Empty path"] = "Leere Pfadangabe"; +App::$strings["l F d, Y \\@ g:i A"] = "l, d. F Y, H:i"; +App::$strings["Starts:"] = "Beginnt:"; +App::$strings["Finishes:"] = "Endet:"; +App::$strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt"; +App::$strings["Not specified"] = "Keine Angabe"; +App::$strings["Needs Action"] = "Aktion erforderlich"; +App::$strings["Completed"] = "Abgeschlossen"; +App::$strings["In Process"] = "In Bearbeitung"; +App::$strings["Cancelled"] = "gestrichen"; +App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert "; +App::$strings["Channel location missing."] = "Adresse des Kanals fehlt."; +App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig."; +App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr."; +App::$strings["Protocol disabled."] = "Protokoll deaktiviert."; +App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen"; +App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden."; 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."] = "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen."; App::$strings["Add new connections to this privacy group"] = "Neue Verbindung zu dieser Gruppe hinzufügen"; App::$strings["edit"] = "Bearbeiten"; @@ -2759,20 +2823,14 @@ App::$strings["Edit group"] = "Gruppe ändern"; App::$strings["Add privacy group"] = "Gruppe hinzufügen"; App::$strings["Channels not in any privacy group"] = "Kanäle, die in keiner Gruppe sind"; App::$strings["add"] = "hinzufügen"; -App::$strings["Tags"] = "Schlagwörter"; -App::$strings["Keywords"] = "Schlüsselwörter"; -App::$strings["have"] = "habe"; -App::$strings["has"] = "hat"; -App::$strings["want"] = "will"; -App::$strings["wants"] = "will"; -App::$strings["likes"] = "gefällt"; -App::$strings["dislikes"] = "missfällt"; -App::$strings[" by "] = "von"; -App::$strings[" on "] = "am"; -App::$strings["Embedded content"] = "Eingebetteter Inhalt"; -App::$strings["Embedding disabled"] = "Einbetten deaktiviert"; -App::$strings["guest:"] = "Gast:"; -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."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."; +App::$strings["Select an alternate language"] = "Wähle eine alternative Sprache"; +App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes"; +App::$strings["Image file is empty."] = "Bilddatei ist leer."; +App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen."; +App::$strings["a new photo"] = "ein neues Foto"; +App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht"; +App::$strings["Photo Albums"] = "Fotoalben"; +App::$strings["Upload New Photos"] = "Neue Fotos hochladen"; App::$strings["System"] = "System"; App::$strings["New App"] = "Neue App"; App::$strings["Suggestions"] = "Vorschläge"; @@ -2808,7 +2866,11 @@ App::$strings["Chatrooms"] = "Chaträume"; App::$strings["Overview"] = "Übersicht"; App::$strings["Chat Members"] = "Chatmitglieder"; App::$strings["Wiki List"] = "Wikiliste"; +App::$strings["Create new wiki"] = "Neues Wiki erstellen"; +App::$strings["Send notification"] = "Benachrichtigung senden"; App::$strings["Wiki Pages"] = "Wikiseiten"; +App::$strings["Add new page"] = "Neue Seite hinzufügen"; +App::$strings["Page name"] = "Seitenname"; App::$strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms"; App::$strings["Suggested Chatrooms"] = "Chatraum-Vorschläge"; App::$strings["photo/image"] = "Foto/Bild"; @@ -2823,6 +2885,31 @@ App::$strings["Member registrations waiting for confirmation"] = "Nutzer-Anmeldu App::$strings["Inspect queue"] = "Warteschlange kontrollieren"; App::$strings["DB updates"] = "DB-Aktualisierungen"; App::$strings["Plugin Features"] = "Plug-In Funktionen"; +App::$strings["Who can see this?"] = "Wer kann das sehen?"; +App::$strings["Custom selection"] = "Benutzerdefinierte Auswahl"; +App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."; +App::$strings["Show"] = "Anzeigen"; +App::$strings["Don't show"] = "Nicht anzeigen"; +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."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."; +App::$strings[" by "] = "von"; +App::$strings[" on "] = "am"; +App::$strings["Embedded content"] = "Eingebetteter Inhalt"; +App::$strings["Embedding disabled"] = "Einbetten deaktiviert"; +App::$strings["Attachments:"] = "Anhänge:"; +App::$strings["\$Projectname event notification:"] = "\$Projectname-Terminbenachrichtigung:"; +App::$strings["Can view my normal stream and posts"] = "Kann meine normalen Beiträge sehen"; +App::$strings["Can view my webpages"] = "Kann meine Webseiten sehen"; +App::$strings["Can post on my channel page (\"wall\")"] = "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"; +App::$strings["Can like/dislike stuff"] = "Kann andere Elemente mögen/nicht mögen"; +App::$strings["Profiles and things other than posts/comments"] = "Profile und alles außer Beiträge und Kommentare"; +App::$strings["Can forward to all my channel contacts via post @mentions"] = "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten"; +App::$strings["Advanced - useful for creating group forum channels"] = "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen"; +App::$strings["Can chat with me (when available)"] = "Kann mit mir chatten (wenn verfügbar)"; +App::$strings["Can write to my file storage and photos"] = "Kann in meine Datei- und Bilderordner schreiben"; +App::$strings["Can edit my webpages"] = "Kann meine Webseiten bearbeiten"; +App::$strings["Somewhat advanced - very useful in open communities"] = "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften"; +App::$strings["Can administer my channel resources"] = "Kann meine Kanäle administrieren"; +App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust"; App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden"; App::$strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an"; App::$strings["View %s's profile @ %s"] = "%ss Profil auf %s ansehen"; @@ -2910,75 +2997,6 @@ App::$strings["__ctx:noun__ Abstain"] = array( 0 => "Enthaltung", 1 => "Enthaltungen", ); -App::$strings["Can view my normal stream and posts"] = "Kann meine normalen Beiträge sehen"; -App::$strings["Can view my webpages"] = "Kann meine Webseiten sehen"; -App::$strings["Can post on my channel page (\"wall\")"] = "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"; -App::$strings["Can like/dislike stuff"] = "Kann andere Elemente mögen/nicht mögen"; -App::$strings["Profiles and things other than posts/comments"] = "Profile und alles außer Beiträge und Kommentare"; -App::$strings["Can forward to all my channel contacts via post @mentions"] = "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten"; -App::$strings["Advanced - useful for creating group forum channels"] = "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen"; -App::$strings["Can chat with me (when available)"] = "Kann mit mir chatten (wenn verfügbar)"; -App::$strings["Can write to my file storage and photos"] = "Kann in meine Datei- und Bilderordner schreiben"; -App::$strings["Can edit my webpages"] = "Kann meine Webseiten bearbeiten"; -App::$strings["Somewhat advanced - very useful in open communities"] = "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften"; -App::$strings["Can administer my channel resources"] = "Kann meine Kanäle administrieren"; -App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust"; -App::$strings["Not a valid email address"] = "Ungültige E-Mail-Adresse"; -App::$strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt"; -App::$strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."; -App::$strings["An invitation is required."] = "Eine Einladung wird benötigt."; -App::$strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden."; -App::$strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein."; -App::$strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen."; -App::$strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s"; -App::$strings["Registration request at %s"] = "Registrierungsanfrage auf %s"; -App::$strings["your registration password"] = "Dein Registrierungspasswort"; -App::$strings["Registration details for %s"] = "Registrierungsdetails für %s"; -App::$strings["Account approved."] = "Nutzerkonto bestätigt."; -App::$strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen"; -App::$strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen."; -App::$strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements."; -App::$strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."; -App::$strings["Birthday"] = "Geburtstag"; -App::$strings["Age: "] = "Alter:"; -App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT"; -App::$strings["never"] = "Nie"; -App::$strings["less than a second ago"] = "Vor weniger als einer Sekunde"; -App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s"; -App::$strings["__ctx:relative_date__ year"] = array( - 0 => "Jahr", - 1 => "Jahre", -); -App::$strings["__ctx:relative_date__ month"] = array( - 0 => "Monat", - 1 => "Monate", -); -App::$strings["__ctx:relative_date__ week"] = array( - 0 => "Woche", - 1 => "Wochen", -); -App::$strings["__ctx:relative_date__ day"] = array( - 0 => "Tag", - 1 => "Tage", -); -App::$strings["__ctx:relative_date__ hour"] = array( - 0 => "Stunde", - 1 => "Stunden", -); -App::$strings["__ctx:relative_date__ minute"] = array( - 0 => "Minute", - 1 => "Minuten", -); -App::$strings["__ctx:relative_date__ second"] = array( - 0 => "Sekunde", - 1 => "Sekunden", -); -App::$strings["%1\$s's birthday"] = "%1\$ss Geburtstag"; -App::$strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s"; -App::$strings["Select an alternate language"] = "Wähle eine alternative Sprache"; -App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."; -App::$strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."; -App::$strings["Unable to import element \""] = "Element konnte nicht importiert werden."; App::$strings["Image/photo"] = "Bild/Foto"; App::$strings["Encrypted content"] = "Verschlüsselter Inhalt"; App::$strings["Install %s element: "] = "Element %s installieren: "; diff --git a/view/js/acl.js b/view/js/acl.js index c11997c43..4dd60d303 100644 --- a/view/js/acl.js +++ b/view/js/acl.js @@ -276,6 +276,7 @@ ACL.prototype.update_view = function(value) { /* jot acl */ $('#jot-perms-icon, #dialog-perms-icon, #' + that.form_id[0].id + ' .jot-perms-icon').removeClass('fa-lock').addClass('fa-unlock'); + $('#jot-perms-icon').removeClass('jot-lock-warn'); $('#dbtn-jotnets').show(); $('.profile-jot-net input').attr('disabled', false); diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js index aa47a6e19..62fc37420 100644 --- a/view/js/autocomplete.js +++ b/view/js/autocomplete.js @@ -164,6 +164,7 @@ function string2bb(element) { else if(element == 'strike') return 's'; else if(element == 'superscript') return 'sup'; else if(element == 'subscript') return 'sub'; + else if(element == 'highlight') return 'hl'; else return element; } @@ -269,7 +270,7 @@ function string2bb(element) { $.fn.bbco_autocomplete = function(type) { if(type=='bbcode') { - var open_close_elements = ['bold', 'italic', 'underline', 'overline', 'strike', 'superscript', 'subscript', 'quote', 'code', 'open', 'spoiler', 'map', 'nobb', 'list', 'checklist', 'ul', 'ol', 'dl', 'li', 'table', 'tr', 'th', 'td', 'center', 'color', 'font', 'size', 'zrl', 'zmg', 'rpost', 'qr', 'observer', 'embed']; + var open_close_elements = ['bold', 'italic', 'underline', 'overline', 'strike', 'superscript', 'subscript', 'quote', 'code', 'open', 'spoiler', 'map', 'nobb', 'list', 'checklist', 'ul', 'ol', 'dl', 'li', 'table', 'tr', 'th', 'td', 'center', 'color', 'font', 'size', 'zrl', 'zmg', 'rpost', 'qr', 'observer', 'embed', 'highlight']; var open_elements = ['observer.baseurl', 'observer.address', 'observer.photo', 'observer.name', 'observer.webname', 'observer.url', '*', 'hr', ]; var elements = open_close_elements.concat(open_elements); diff --git a/view/js/main.js b/view/js/main.js index 96adf0be3..c67f1c167 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -434,26 +434,36 @@ function contextualHelp() { if(container.hasClass('contextual-help-content-open')) { container.removeClass('contextual-help-content-open'); - $('main').css('top', '') + $('main').css('margin-top', '') } else { container.addClass('contextual-help-content-open'); var mainTop = container.outerHeight(true); - $('main').css('top', mainTop + 'px'); + $('main').css('margin-top', mainTop + 'px'); } } function contextualHelpFocus(target, openSidePanel) { - if (openSidePanel) { - $("main").addClass('region_1-on'); // Open the side panel to highlight element - } - else { - $("main").removeClass('region_1-on'); - } - $('html,body').animate({ scrollTop: $(target).offset().top - $('nav').outerHeight(true) - $('#contextual-help-content').outerHeight(true)}, 'slow'); - for (i = 0; i < 3; i++) { - $(target).fadeTo('slow', 0.1).fadeTo('slow', 1.0); - } + if($(target).length) { + if (openSidePanel) { + $("main").addClass('region_1-on'); // Open the side panel to highlight element + } + else { + $("main").removeClass('region_1-on'); + } + + var css_position = $(target).parent().css('position'); + if (css_position === 'fixed') { + $(target).parent().css('position', 'static'); + } + + $('html,body').animate({ scrollTop: $(target).offset().top - $('nav').outerHeight(true) - $('#contextual-help-content').outerHeight(true)}, 'slow'); + for (i = 0; i < 3; i++) { + $(target).fadeTo('slow', 0.1).fadeTo('slow', 1.0); + } + + $(target).parent().css('position', css_position); + } } function updatePageItems(mode, data) { @@ -664,6 +674,8 @@ function updateConvItems(mode,data) { $('.item_' + bParam_mid.substring(0,32)).addClass('item-highlight'); } + $(document.body).trigger("sticky_kit:recalc"); + } function collapseHeight() { @@ -1144,6 +1156,24 @@ function preview_post() { return true; } +function preview_mail() { + $("#mail-preview").val("1"); + $("#mail-preview-content").show(); + $.post( + "mail", + $("#prvmail-form").serialize(), + function(data) { + if(data.preview) { + $("#mail-preview-content").html(data.preview); + $("#mail-preview-content" + " a").click(function() { return false; }); + } + }, + "json" + ); + $("#mail-preview").val("0"); + return true; +} + function unpause() { // unpause auto reloads if they are currently stopped totStopped = false; @@ -1313,7 +1343,6 @@ $(document).ready(function() { numbers : aStr['t17'], }; - $("#toc").toc(); }); function zFormError(elm,x) { diff --git a/view/js/mod_connedit.js b/view/js/mod_connedit.js index 84fff5ed1..252ed9e7c 100644 --- a/view/js/mod_connedit.js +++ b/view/js/mod_connedit.js @@ -16,6 +16,71 @@ $(document).ready(function() { connectFullShare(); }); + $(document).on('click', '.vcard-header, .vcard-cancel-btn', updateView); + $(document).on('click', '.add-field', doAdd); + $(document).on('click', '.remove-field', doRemove); + + function updateView() { + var id = $(this).data('id'); + var action = $(this).data('action'); + var header = $('#vcard-header-' + id); + var cancel = $('#vcard-cancel-' + id); + var addField = $('#vcard-add-field-' + id); + var info = $('#vcard-info-' + id); + var vcardPreview = $('#vcard-preview-' + id); + var fn = $('#vcard-fn-' + id); + + if(action === 'open') { + $(header).addClass('active'); + $(cancel).show(); + $(addField).show(); + $(info).show(); + $(fn).show(); + $(vcardPreview).hide(); + } + else { + $(header).removeClass('active'); + $(cancel).hide(); + $(addField).hide(); + $(info).hide(); + $(fn).hide(); + $(vcardPreview).show(); + } + } + + function doAdd() { + var what = $(this).data('add'); + var id = $(this).data('id'); + var element = '#template-form-' + what; + var where = '#abook-edit-form'; + + $(element + ' .remove-field').attr('data-id', id) + + if(what === 'vcard-adr') { + var adrCount = $(where + ' .form-' + what).length; + var attrName = 'adr[' + adrCount + '][]'; + $(element + ' input').attr('name', attrName); + } + + if(what === 'vcard-org' || what === 'vcard-title' || what === 'vcard-note') { + $(where + ' .add-' + what).hide() + } + + $(element).clone().removeAttr('id').appendTo(where + ' .form-' + what + '-wrapper'); + } + + function doRemove() { + var what = $(this).data('remove'); + var element = $(this).parents('div.form-' + what); + var where = '#abook_edit_form' + $(this).data('id'); + + if(what === 'vcard-org' || what === 'vcard-title' || what === 'vcard-note') { + $(where + ' .add-' + what).show() + } + + $(element).remove(); + } + }); function connectFullShare() { diff --git a/view/js/mod_mail.js b/view/js/mod_mail.js index 46574a63d..15a45519b 100644 --- a/view/js/mod_mail.js +++ b/view/js/mod_mail.js @@ -4,4 +4,5 @@ $(document).ready(function() { }); $(".autotime").timeago() $('#prvmail-text').bbco_autocomplete('bbcode'); + $("#prvmail-text").editor_autocomplete(baseurl+"/acl"); }); diff --git a/view/js/mod_profiles.js b/view/js/mod_profiles.js index a7754e0c5..acc9f9953 100644 --- a/view/js/mod_profiles.js +++ b/view/js/mod_profiles.js @@ -1,4 +1,70 @@ $(document).ready(function() { $('form').areYouSure(); // Warn user about unsaved settings $('textarea').bbco_autocomplete('bbcode'); + + $(document).on('click', '.vcard-header, .vcard-cancel-btn', updateView); + $(document).on('click', '.add-field', doAdd); + $(document).on('click', '.remove-field', doRemove); + + function updateView() { + var id = $(this).data('id'); + var action = $(this).data('action'); + var header = $('#vcard-header-' + id); + var cancel = $('#vcard-cancel-' + id); + var addField = $('#vcard-add-field-' + id); + var info = $('#vcard-info-' + id); + var vcardPreview = $('#vcard-preview-' + id); + var fn = $('#vcard-fn-' + id); + + if(action === 'open') { + $(header).addClass('active'); + $(cancel).show(); + $(addField).show(); + $(info).show(); + $(fn).show(); + $(vcardPreview).hide(); + } + else { + $(header).removeClass('active'); + $(cancel).hide(); + $(addField).hide(); + $(info).hide(); + $(fn).hide(); + $(vcardPreview).show(); + } + } + + function doAdd() { + var what = $(this).data('add'); + var id = $(this).data('id'); + var element = '#template-form-' + what; + var where = '#abook-edit-form'; + + $(element + ' .remove-field').attr('data-id', id) + + if(what === 'vcard-adr') { + var adrCount = $(where + ' .form-' + what).length; + var attrName = 'adr[' + adrCount + '][]'; + $(element + ' input').attr('name', attrName); + } + + if(what === 'vcard-org' || what === 'vcard-title' || what === 'vcard-note') { + $(where + ' .add-' + what).hide() + } + + $(element).clone().removeAttr('id').appendTo(where + ' .form-' + what + '-wrapper'); + } + + function doRemove() { + var what = $(this).data('remove'); + var element = $(this).parents('div.form-' + what); + var where = '#abook_edit_form' + $(this).data('id'); + + if(what === 'vcard-org' || what === 'vcard-title' || what === 'vcard-note') { + $(where + ' .add-' + what).show() + } + + $(element).remove(); + } + }); diff --git a/view/nl/hmessages.po b/view/nl/hmessages.po index daf713983..55ce3e7b3 100644 --- a/view/nl/hmessages.po +++ b/view/nl/hmessages.po @@ -1,16 +1,17 @@ -# Hubzilla Project -# Copyright (C) 2012-2014 the Hubzilla Project -# This file is distributed under the same license as the Red package. +# hubzilla +# Copyright (C) 2012-2016 hubzilla +# This file is distributed under the same license as the hubzilla package. # # Translators: -# jeroenpraat <jeroenpraat@xs4all.nl>, 2015-2016 +# jeroenpraat <social@jeroenvanrietpaap.nl>, 2015-2016 +# jeroenpraat <social@jeroenvanrietpaap.nl>, 2016 msgid "" msgstr "" "Project-Id-Version: Redmatrix\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-30 00:02-0700\n" -"PO-Revision-Date: 2016-10-05 20:11+0000\n" -"Last-Translator: jeroenpraat <jeroenpraat@xs4all.nl>\n" +"POT-Creation-Date: 2016-12-16 00:04-0800\n" +"PO-Revision-Date: 2016-12-19 15:18+0000\n" +"Last-Translator: jeroenpraat <social@jeroenvanrietpaap.nl>\n" "Language-Team: Dutch (http://www.transifex.com/Friendica/red-matrix/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,274 +19,294 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../../Zotlabs/Access/PermissionRoles.php:182 +#: ../../Zotlabs/Access/PermissionRoles.php:227 #: ../../include/permissions.php:945 msgid "Social Networking" msgstr "Sociaal netwerk" -#: ../../Zotlabs/Access/PermissionRoles.php:183 +#: ../../Zotlabs/Access/PermissionRoles.php:228 #: ../../include/permissions.php:945 msgid "Social - Mostly Public" msgstr "Sociaal - Vrijwel alles openbaar" -#: ../../Zotlabs/Access/PermissionRoles.php:184 +#: ../../Zotlabs/Access/PermissionRoles.php:229 #: ../../include/permissions.php:945 msgid "Social - Restricted" msgstr "Sociaal - Beperkt zichtbaar" -#: ../../Zotlabs/Access/PermissionRoles.php:185 +#: ../../Zotlabs/Access/PermissionRoles.php:230 #: ../../include/permissions.php:945 msgid "Social - Private" msgstr "Sociaal - Verborgen kanaal" -#: ../../Zotlabs/Access/PermissionRoles.php:188 +#: ../../Zotlabs/Access/PermissionRoles.php:233 #: ../../include/permissions.php:946 msgid "Community Forum" msgstr "Groepsforum" -#: ../../Zotlabs/Access/PermissionRoles.php:189 +#: ../../Zotlabs/Access/PermissionRoles.php:234 #: ../../include/permissions.php:946 msgid "Forum - Mostly Public" msgstr "Forum - Vrijwel alles openbaar" -#: ../../Zotlabs/Access/PermissionRoles.php:190 +#: ../../Zotlabs/Access/PermissionRoles.php:235 #: ../../include/permissions.php:946 msgid "Forum - Restricted" msgstr "Forum - Beperkt zichtbaar" -#: ../../Zotlabs/Access/PermissionRoles.php:191 +#: ../../Zotlabs/Access/PermissionRoles.php:236 #: ../../include/permissions.php:946 msgid "Forum - Private" msgstr "Forum - Verborgen kanaal" -#: ../../Zotlabs/Access/PermissionRoles.php:194 +#: ../../Zotlabs/Access/PermissionRoles.php:239 #: ../../include/permissions.php:947 msgid "Feed Republish" msgstr "Feed herpubliceren" -#: ../../Zotlabs/Access/PermissionRoles.php:195 +#: ../../Zotlabs/Access/PermissionRoles.php:240 #: ../../include/permissions.php:947 msgid "Feed - Mostly Public" msgstr "Feed - Vrijwel alles openbaar" -#: ../../Zotlabs/Access/PermissionRoles.php:196 +#: ../../Zotlabs/Access/PermissionRoles.php:241 #: ../../include/permissions.php:947 msgid "Feed - Restricted" msgstr "Feed - Beperkt zichtbaar" -#: ../../Zotlabs/Access/PermissionRoles.php:199 +#: ../../Zotlabs/Access/PermissionRoles.php:244 #: ../../include/permissions.php:948 msgid "Special Purpose" msgstr "Speciaal doel" -#: ../../Zotlabs/Access/PermissionRoles.php:200 +#: ../../Zotlabs/Access/PermissionRoles.php:245 #: ../../include/permissions.php:948 msgid "Special - Celebrity/Soapbox" msgstr "Speciaal - Beroemdheid/alleen volgen" -#: ../../Zotlabs/Access/PermissionRoles.php:201 +#: ../../Zotlabs/Access/PermissionRoles.php:246 #: ../../include/permissions.php:948 msgid "Special - Group Repository" msgstr "Speciaal - Groepsopslag" -#: ../../Zotlabs/Access/PermissionRoles.php:204 -#: ../../Zotlabs/Module/New_channel.php:132 +#: ../../Zotlabs/Access/PermissionRoles.php:249 #: ../../Zotlabs/Module/Register.php:213 -#: ../../Zotlabs/Module/Settings/Channel.php:442 -#: ../../include/permissions.php:949 ../../include/selectors.php:49 -#: ../../include/selectors.php:66 ../../include/selectors.php:104 -#: ../../include/selectors.php:140 +#: ../../Zotlabs/Module/New_channel.php:132 +#: ../../Zotlabs/Module/Settings/Channel.php:445 +#: ../../extend/addon/addon/cdav/cdav.php:277 +#: ../../extend/addon/addon/cdav/cdav.php:284 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1148 +#: ../../include/selectors.php:49 ../../include/selectors.php:66 +#: ../../include/selectors.php:104 ../../include/selectors.php:140 +#: ../../include/permissions.php:949 msgid "Other" msgstr "Anders" -#: ../../Zotlabs/Access/PermissionRoles.php:205 +#: ../../Zotlabs/Access/PermissionRoles.php:250 #: ../../include/permissions.php:949 msgid "Custom/Expert Mode" msgstr "Expertmodus/handmatig aanpassen" -#: ../../Zotlabs/Access/Permissions.php:30 +#: ../../Zotlabs/Access/Permissions.php:46 msgid "Can view my channel stream and posts" msgstr "Kan mijn kanaal en berichten bekijken" -#: ../../Zotlabs/Access/Permissions.php:31 ../../include/permissions.php:42 +#: ../../Zotlabs/Access/Permissions.php:47 ../../include/permissions.php:42 msgid "Can send me their channel stream and posts" msgstr "Kan mij de inhoud van hun kanaal en berichten sturen" -#: ../../Zotlabs/Access/Permissions.php:32 ../../include/permissions.php:36 +#: ../../Zotlabs/Access/Permissions.php:48 ../../include/permissions.php:36 msgid "Can view my default channel profile" msgstr "Kan mijn standaard kanaalprofiel bekijken" -#: ../../Zotlabs/Access/Permissions.php:33 ../../include/permissions.php:37 +#: ../../Zotlabs/Access/Permissions.php:49 ../../include/permissions.php:37 msgid "Can view my connections" msgstr "Kan een lijst met mijn connecties bekijken" -#: ../../Zotlabs/Access/Permissions.php:34 ../../include/permissions.php:38 +#: ../../Zotlabs/Access/Permissions.php:50 ../../include/permissions.php:38 msgid "Can view my file storage and photos" msgstr "Kan mijn foto's en andere bestanden bekijken" -#: ../../Zotlabs/Access/Permissions.php:35 +#: ../../Zotlabs/Access/Permissions.php:51 msgid "Can upload/modify my file storage and photos" msgstr "Kan foto's en andere bestanden aan mijn bestandsopslag toevoegen" -#: ../../Zotlabs/Access/Permissions.php:36 +#: ../../Zotlabs/Access/Permissions.php:52 msgid "Can view my channel webpages" msgstr "Kan de webpagina's van mijn kanaal bekijken" -#: ../../Zotlabs/Access/Permissions.php:37 +#: ../../Zotlabs/Access/Permissions.php:53 msgid "Can create/edit my channel webpages" msgstr "Kan wegpagina's van mijn kanaal aanmaken en bewerken" -#: ../../Zotlabs/Access/Permissions.php:38 +#: ../../Zotlabs/Access/Permissions.php:54 msgid "Can post on my channel (wall) page" msgstr "Kan een bericht in mijn kanaal plaatsen" -#: ../../Zotlabs/Access/Permissions.php:39 ../../include/permissions.php:44 +#: ../../Zotlabs/Access/Permissions.php:55 ../../include/permissions.php:44 msgid "Can comment on or like my posts" msgstr "Kan op mijn berichten reageren of deze (niet) leuk vinden" -#: ../../Zotlabs/Access/Permissions.php:40 ../../include/permissions.php:45 +#: ../../Zotlabs/Access/Permissions.php:56 ../../include/permissions.php:45 msgid "Can send me private mail messages" msgstr "Kan mij privéberichten sturen" -#: ../../Zotlabs/Access/Permissions.php:41 +#: ../../Zotlabs/Access/Permissions.php:57 msgid "Can like/dislike profiles and profile things" msgstr "Kan profielen en profieldingen leuk en niet leuk vinden " -#: ../../Zotlabs/Access/Permissions.php:42 +#: ../../Zotlabs/Access/Permissions.php:58 msgid "Can forward to all my channel connections via @+ mentions in posts" msgstr "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+" -#: ../../Zotlabs/Access/Permissions.php:43 +#: ../../Zotlabs/Access/Permissions.php:59 msgid "Can chat with me" msgstr "Kan met mij chatten" -#: ../../Zotlabs/Access/Permissions.php:44 ../../include/permissions.php:53 +#: ../../Zotlabs/Access/Permissions.php:60 ../../include/permissions.php:53 msgid "Can source my public posts in derived channels" msgstr "Kan mijn openbare berichten als bron voor andere kanalen gebruiken" -#: ../../Zotlabs/Access/Permissions.php:45 +#: ../../Zotlabs/Access/Permissions.php:61 msgid "Can administer my channel" msgstr "Kan mijn kanaal beheren" -#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:238 +#: ../../Zotlabs/Storage/Browser.php:106 ../../Zotlabs/Storage/Browser.php:237 msgid "parent" msgstr "omhoog" -#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2711 +#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2682 msgid "Collection" msgstr "map" -#: ../../Zotlabs/Storage/Browser.php:134 +#: ../../Zotlabs/Storage/Browser.php:133 msgid "Principal" msgstr "principal" -#: ../../Zotlabs/Storage/Browser.php:137 +#: ../../Zotlabs/Storage/Browser.php:136 msgid "Addressbook" msgstr "Adresboek" -#: ../../Zotlabs/Storage/Browser.php:140 +#: ../../Zotlabs/Storage/Browser.php:139 msgid "Calendar" msgstr "Agenda" -#: ../../Zotlabs/Storage/Browser.php:143 +#: ../../Zotlabs/Storage/Browser.php:142 msgid "Schedule Inbox" msgstr "Planning-postvak IN" -#: ../../Zotlabs/Storage/Browser.php:146 +#: ../../Zotlabs/Storage/Browser.php:145 msgid "Schedule Outbox" msgstr "Planning-postvak UIT" -#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:789 +#: ../../Zotlabs/Storage/Browser.php:163 ../../Zotlabs/Module/Photos.php:789 #: ../../Zotlabs/Module/Photos.php:1249 -#: ../../Zotlabs/Module/Embedphotos.php:147 ../../Zotlabs/Lib/Apps.php:490 -#: ../../Zotlabs/Lib/Apps.php:565 ../../include/conversation.php:1031 -#: ../../include/widgets.php:1683 +#: ../../Zotlabs/Module/Embedphotos.php:145 ../../Zotlabs/Lib/Apps.php:526 +#: ../../Zotlabs/Lib/Apps.php:603 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 +#: ../../include/widgets.php:1684 ../../include/conversation.php:1029 msgid "Unknown" msgstr "Onbekend" -#: ../../Zotlabs/Storage/Browser.php:225 ../../Zotlabs/Module/Fbrowser.php:85 -#: ../../Zotlabs/Lib/Apps.php:217 ../../include/nav.php:96 -#: ../../include/conversation.php:1679 +#: ../../Zotlabs/Storage/Browser.php:224 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Lib/Apps.php:219 ../../include/nav.php:96 +#: ../../include/conversation.php:1681 msgid "Files" msgstr "Bestanden" -#: ../../Zotlabs/Storage/Browser.php:226 +#: ../../Zotlabs/Storage/Browser.php:225 msgid "Total" msgstr "Totaal" -#: ../../Zotlabs/Storage/Browser.php:228 +#: ../../Zotlabs/Storage/Browser.php:227 msgid "Shared" msgstr "Gedeeld" -#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:321 +#: ../../Zotlabs/Storage/Browser.php:228 ../../Zotlabs/Storage/Browser.php:321 #: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:147 #: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Layouts.php:184 #: ../../Zotlabs/Module/Webpages.php:239 +#: ../../extend/addon/addon/cdav/include/widgets.php:127 +#: ../../extend/addon/addon/cdav/include/widgets.php:164 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151 msgid "Create" msgstr "Aanmaken" -#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:323 +#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:323 #: ../../Zotlabs/Module/Cover_photo.php:357 #: ../../Zotlabs/Module/Photos.php:816 ../../Zotlabs/Module/Photos.php:1370 -#: ../../Zotlabs/Module/Profile_photo.php:390 -#: ../../Zotlabs/Module/Embedphotos.php:159 ../../include/widgets.php:1696 +#: ../../Zotlabs/Module/Profile_photo.php:410 +#: ../../Zotlabs/Module/Embedphotos.php:157 +#: ../../extend/addon/addon/cdav/include/widgets.php:132 +#: ../../extend/addon/addon/cdav/include/widgets.php:168 +#: ../../include/widgets.php:1697 msgid "Upload" msgstr "Uploaden" -#: ../../Zotlabs/Storage/Browser.php:234 -#: ../../Zotlabs/Module/Admin/Channels.php:163 -#: ../../Zotlabs/Module/Sharedwithme.php:99 ../../Zotlabs/Module/Chat.php:250 +#: ../../Zotlabs/Storage/Browser.php:233 +#: ../../Zotlabs/Module/Admin/Channels.php:159 +#: ../../Zotlabs/Module/Sharedwithme.php:99 ../../Zotlabs/Module/Wiki.php:151 #: ../../Zotlabs/Module/Settings/Oauth.php:89 #: ../../Zotlabs/Module/Settings/Oauth.php:115 +#: ../../Zotlabs/Module/Chat.php:250 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:164 msgid "Name" msgstr "Naam" -#: ../../Zotlabs/Storage/Browser.php:235 +#: ../../Zotlabs/Storage/Browser.php:234 ../../Zotlabs/Module/Wiki.php:152 msgid "Type" msgstr "Type" -#: ../../Zotlabs/Storage/Browser.php:236 -#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1372 +#: ../../Zotlabs/Storage/Browser.php:235 +#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1390 msgid "Size" msgstr "Grootte" -#: ../../Zotlabs/Storage/Browser.php:237 +#: ../../Zotlabs/Storage/Browser.php:236 #: ../../Zotlabs/Module/Sharedwithme.php:102 msgid "Last Modified" msgstr "Laatst gewijzigd" -#: ../../Zotlabs/Storage/Browser.php:239 -#: ../../Zotlabs/Module/Admin/Profs.php:154 +#: ../../Zotlabs/Storage/Browser.php:238 #: ../../Zotlabs/Module/Connections.php:290 #: ../../Zotlabs/Module/Connections.php:310 -#: ../../Zotlabs/Module/Editblock.php:109 +#: ../../Zotlabs/Module/Admin/Profs.php:154 #: ../../Zotlabs/Module/Editlayout.php:114 #: ../../Zotlabs/Module/Editwebpage.php:145 ../../Zotlabs/Module/Menu.php:112 +#: ../../Zotlabs/Module/Editblock.php:109 ../../Zotlabs/Module/Editpost.php:84 #: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:192 -#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Editpost.php:84 -#: ../../Zotlabs/Module/Thing.php:260 +#: ../../Zotlabs/Module/Webpages.php:240 ../../Zotlabs/Module/Wiki.php:144 +#: ../../Zotlabs/Module/Wiki.php:246 #: ../../Zotlabs/Module/Settings/Oauth.php:149 -#: ../../Zotlabs/Lib/ThreadItem.php:106 ../../Zotlabs/Lib/Apps.php:341 -#: ../../include/channel.php:959 ../../include/channel.php:963 +#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Lib/ThreadItem.php:106 +#: ../../Zotlabs/Lib/Apps.php:346 +#: ../../extend/addon/addon/cdav/include/widgets.php:125 +#: ../../extend/addon/addon/cdav/include/widgets.php:161 +#: ../../include/channel.php:961 ../../include/channel.php:965 #: ../../include/page_widgets.php:9 ../../include/page_widgets.php:39 #: ../../include/menu.php:113 msgid "Edit" msgstr "Bewerken" -#: ../../Zotlabs/Storage/Browser.php:240 -#: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Admin/Channels.php:153 -#: ../../Zotlabs/Module/Admin/Profs.php:155 +#: ../../Zotlabs/Storage/Browser.php:239 ../../Zotlabs/Module/Connedit.php:635 #: ../../Zotlabs/Module/Connections.php:263 -#: ../../Zotlabs/Module/Connedit.php:607 -#: ../../Zotlabs/Module/Editblock.php:134 +#: ../../Zotlabs/Module/Admin/Profs.php:155 +#: ../../Zotlabs/Module/Admin/Accounts.php:173 +#: ../../Zotlabs/Module/Admin/Channels.php:149 #: ../../Zotlabs/Module/Editlayout.php:137 -#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177 +#: ../../Zotlabs/Module/Editwebpage.php:170 +#: ../../Zotlabs/Module/Editblock.php:134 ../../Zotlabs/Module/Group.php:177 #: ../../Zotlabs/Module/Photos.php:1179 ../../Zotlabs/Module/Blocks.php:162 -#: ../../Zotlabs/Module/Webpages.php:242 ../../Zotlabs/Module/Thing.php:261 +#: ../../Zotlabs/Module/Webpages.php:242 #: ../../Zotlabs/Module/Settings/Oauth.php:150 -#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../Zotlabs/Lib/Apps.php:342 -#: ../../include/conversation.php:660 +#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Lib/ThreadItem.php:126 +#: ../../Zotlabs/Lib/Apps.php:347 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:864 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1153 +#: ../../include/conversation.php:656 msgid "Delete" msgstr "Verwijderen" @@ -313,84 +334,92 @@ msgstr "Bestand uploaden" #: ../../Zotlabs/Storage/Browser.php:335 msgid "Drop files here to immediately upload" -msgstr "Sleep bestanden hierheen om ze onmiddelijk te uploaden" +msgstr "Sleep bestanden hierheen om ze onmiddellijk te uploaden" -#: ../../Zotlabs/Web/Router.php:65 ../../Zotlabs/Web/WebServer.php:128 +#: ../../Zotlabs/Web/Router.php:67 ../../Zotlabs/Web/WebServer.php:128 #: ../../Zotlabs/Module/Achievements.php:34 -#: ../../Zotlabs/Module/Network.php:15 ../../Zotlabs/Module/Channel.php:104 -#: ../../Zotlabs/Module/Channel.php:229 ../../Zotlabs/Module/Channel.php:270 +#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Connedit.php:397 #: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Bookmarks.php:61 -#: ../../Zotlabs/Module/Page.php:35 ../../Zotlabs/Module/Page.php:91 -#: ../../Zotlabs/Module/Mail.php:121 ../../Zotlabs/Module/Connections.php:33 +#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Page.php:35 +#: ../../Zotlabs/Module/Page.php:91 ../../Zotlabs/Module/Manage.php:10 +#: ../../Zotlabs/Module/Connections.php:33 #: ../../Zotlabs/Module/Cover_photo.php:277 #: ../../Zotlabs/Module/Cover_photo.php:290 -#: ../../Zotlabs/Module/Connedit.php:395 ../../Zotlabs/Module/Editblock.php:67 #: ../../Zotlabs/Module/Editlayout.php:67 #: ../../Zotlabs/Module/Editlayout.php:90 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:104 -#: ../../Zotlabs/Module/Editwebpage.php:126 ../../Zotlabs/Module/Menu.php:78 -#: ../../Zotlabs/Module/Appman.php:75 ../../Zotlabs/Module/Api.php:12 -#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Filestorage.php:23 +#: ../../Zotlabs/Module/Editwebpage.php:126 +#: ../../Zotlabs/Module/Channel.php:107 ../../Zotlabs/Module/Channel.php:237 +#: ../../Zotlabs/Module/Channel.php:277 ../../Zotlabs/Module/Network.php:15 +#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Appman.php:76 +#: ../../Zotlabs/Module/Filestorage.php:23 #: ../../Zotlabs/Module/Filestorage.php:78 #: ../../Zotlabs/Module/Filestorage.php:93 -#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Manage.php:10 -#: ../../Zotlabs/Module/Group.php:13 ../../Zotlabs/Module/Block.php:26 -#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Invite.php:17 -#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87 -#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Like.php:181 -#: ../../Zotlabs/Module/Profiles.php:203 ../../Zotlabs/Module/Profiles.php:601 +#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Item.php:220 +#: ../../Zotlabs/Module/Item.php:230 ../../Zotlabs/Module/Item.php:1064 +#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Mail.php:163 +#: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76 +#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94 +#: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Group.php:13 #: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Message.php:18 -#: ../../Zotlabs/Module/Setup.php:220 ../../Zotlabs/Module/Mood.php:116 -#: ../../Zotlabs/Module/Photos.php:73 ../../Zotlabs/Module/New_channel.php:77 +#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Photos.php:73 +#: ../../Zotlabs/Module/Setup.php:212 ../../Zotlabs/Module/Editpost.php:17 +#: ../../Zotlabs/Module/New_channel.php:77 #: ../../Zotlabs/Module/New_channel.php:104 -#: ../../Zotlabs/Module/Notifications.php:70 ../../Zotlabs/Module/Poke.php:137 +#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Module/Poke.php:137 +#: ../../Zotlabs/Module/Profiles.php:197 ../../Zotlabs/Module/Profiles.php:595 #: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 #: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 -#: ../../Zotlabs/Module/Layouts.php:89 -#: ../../Zotlabs/Module/Profile_photo.php:265 -#: ../../Zotlabs/Module/Profile_photo.php:278 -#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Settings.php:59 -#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21 -#: ../../Zotlabs/Module/Webpages.php:116 ../../Zotlabs/Module/Editpost.php:17 -#: ../../Zotlabs/Module/Events.php:264 +#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Rate.php:113 +#: ../../Zotlabs/Module/Like.php:181 +#: ../../Zotlabs/Module/Profile_photo.php:273 +#: ../../Zotlabs/Module/Profile_photo.php:286 +#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Api.php:24 +#: ../../Zotlabs/Module/Regmod.php:21 ../../Zotlabs/Module/Pdledit.php:29 #: ../../Zotlabs/Module/Service_limits.php:11 -#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294 -#: ../../Zotlabs/Module/Thing.php:335 ../../Zotlabs/Module/Item.php:214 -#: ../../Zotlabs/Module/Item.php:222 ../../Zotlabs/Module/Item.php:1068 -#: ../../Zotlabs/Module/Sharedwithme.php:11 -#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30 +#: ../../Zotlabs/Module/Webpages.php:116 +#: ../../Zotlabs/Module/Sharedwithme.php:11 ../../Zotlabs/Module/Wiki.php:189 +#: ../../Zotlabs/Module/Wiki.php:286 ../../Zotlabs/Module/Sources.php:74 +#: ../../Zotlabs/Module/Suggest.php:30 ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Thing.php:335 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Chat.php:100 -#: ../../Zotlabs/Module/Chat.php:105 ../../Zotlabs/Lib/Chatroom.php:137 -#: ../../include/photos.php:27 ../../include/items.php:3506 -#: ../../include/attach.php:142 ../../include/attach.php:190 -#: ../../include/attach.php:253 ../../include/attach.php:267 -#: ../../include/attach.php:274 ../../include/attach.php:339 -#: ../../include/attach.php:353 ../../include/attach.php:360 -#: ../../include/attach.php:440 ../../include/attach.php:909 -#: ../../include/attach.php:980 ../../include/attach.php:1132 +#: ../../Zotlabs/Module/Chat.php:105 ../../Zotlabs/Module/Events.php:267 +#: ../../Zotlabs/Lib/Chatroom.php:137 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:55 +#: ../../extend/addon/addon/keepout/keepout.php:36 +#: ../../extend/addon/addon/pumpio/pumpio.php:40 +#: ../../extend/addon/addon/openid/Mod_Id.php:53 +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:58 +#: ../../include/items.php:3422 ../../include/attach.php:142 +#: ../../include/attach.php:189 ../../include/attach.php:253 +#: ../../include/attach.php:267 ../../include/attach.php:274 +#: ../../include/attach.php:341 ../../include/attach.php:355 +#: ../../include/attach.php:362 ../../include/attach.php:439 +#: ../../include/attach.php:906 ../../include/attach.php:977 +#: ../../include/attach.php:1135 ../../include/photos.php:27 msgid "Permission denied." msgstr "Toegang geweigerd." -#: ../../Zotlabs/Web/Router.php:146 ../../include/help.php:56 -msgid "Not Found" -msgstr "Niet gevonden" - -#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Page.php:94 -#: ../../Zotlabs/Module/Block.php:79 ../../Zotlabs/Module/Display.php:120 -#: ../../include/help.php:59 +#: ../../Zotlabs/Web/Router.php:157 ../../Zotlabs/Module/Page.php:94 +#: ../../Zotlabs/Module/Display.php:120 ../../Zotlabs/Module/Block.php:79 +#: ../../include/help.php:66 msgid "Page not found." msgstr "Pagina niet gevonden." -#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Group.php:72 -#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:66 -#: ../../Zotlabs/Module/Import_items.php:114 ../../Zotlabs/Module/Like.php:283 -#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62 -#: ../../include/items.php:403 +#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Dreport.php:10 +#: ../../Zotlabs/Module/Dreport.php:68 +#: ../../Zotlabs/Module/Import_items.php:114 ../../Zotlabs/Module/Group.php:72 +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Like.php:283 +#: ../../Zotlabs/Module/Subthread.php:62 +#: ../../extend/addon/addon/frphotos/frphotos.php:81 +#: ../../extend/addon/addon/redfiles/redfiles.php:109 +#: ../../extend/addon/addon/redphotos/redphotos.php:119 +#: ../../include/items.php:327 msgid "Permission denied" msgstr "Toegang geweigerd" @@ -400,19 +429,21 @@ msgid "" " logout and retry." msgstr "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen." -#: ../../Zotlabs/Zot/Auth.php:246 +#: ../../Zotlabs/Zot/Auth.php:250 +#: ../../extend/addon/addon/openid/Mod_Openid.php:76 +#: ../../extend/addon/addon/openid/Mod_Openid.php:183 #, php-format msgid "Welcome %s. Remote authentication successful." msgstr "Welkom %s. Authenticatie op afstand geslaagd." #: ../../Zotlabs/Module/Achievements.php:15 -#: ../../Zotlabs/Module/Editblock.php:31 -#: ../../Zotlabs/Module/Editlayout.php:31 +#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editlayout.php:31 #: ../../Zotlabs/Module/Editwebpage.php:32 -#: ../../Zotlabs/Module/Filestorage.php:59 ../../Zotlabs/Module/Connect.php:17 -#: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Profile.php:20 -#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Layouts.php:31 -#: ../../Zotlabs/Module/Webpages.php:33 ../../include/channel.php:859 +#: ../../Zotlabs/Module/Filestorage.php:59 +#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Hcard.php:12 +#: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Blocks.php:33 +#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Webpages.php:33 +#: ../../include/channel.php:862 msgid "Requested profile is not available." msgstr "Opgevraagd profiel is niet beschikbaar" @@ -428,199 +459,765 @@ msgstr "Afwezig" msgid "Online" msgstr "Online" -#: ../../Zotlabs/Module/Network.php:95 -msgid "No such group" -msgstr "Collectie niet gevonden" +#: ../../Zotlabs/Module/Register.php:49 +msgid "Maximum daily site registrations exceeded. Please try again tomorrow." +msgstr "Maximum toegestane dagelijkse registraties op deze $Projectname-hub bereikt. Probeer het morgen (UTC) nogmaals." -#: ../../Zotlabs/Module/Network.php:135 -msgid "No such channel" -msgstr "Niet zo'n kanaal" +#: ../../Zotlabs/Module/Register.php:55 +msgid "" +"Please indicate acceptance of the Terms of Service. Registration failed." +msgstr "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden." -#: ../../Zotlabs/Module/Network.php:140 -msgid "forum" -msgstr "forum" +#: ../../Zotlabs/Module/Register.php:89 +msgid "Passwords do not match." +msgstr "Wachtwoorden komen niet met elkaar overeen." -#: ../../Zotlabs/Module/Network.php:152 -msgid "Search Results For:" -msgstr "Zoekresultaten voor:" +#: ../../Zotlabs/Module/Register.php:131 +msgid "" +"Registration successful. Please check your email for validation " +"instructions." +msgstr "Registratie geslaagd. Controleer je e-mail voor instructies." -#: ../../Zotlabs/Module/Network.php:218 -msgid "Privacy group is empty" -msgstr "Privacygroep is leeg" +#: ../../Zotlabs/Module/Register.php:137 +msgid "Your registration is pending approval by the site owner." +msgstr "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze $Projectname-hub." -#: ../../Zotlabs/Module/Network.php:227 -msgid "Privacy group: " -msgstr "Privacygroep: " +#: ../../Zotlabs/Module/Register.php:140 +msgid "Your registration can not be processed." +msgstr "Jouw registratie kan niet verwerkt worden." -#: ../../Zotlabs/Module/Network.php:253 -msgid "Invalid connection." -msgstr "Ongeldige connectie." +#: ../../Zotlabs/Module/Register.php:184 +msgid "Registration on this hub is disabled." +msgstr "Registreren van nieuwe accounts is op deze hub uitgeschakeld." + +#: ../../Zotlabs/Module/Register.php:193 +msgid "Registration on this hub is by approval only." +msgstr "Registraties op deze hub moeten eerst worden goedgekeurd." + +#: ../../Zotlabs/Module/Register.php:194 +msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" +msgstr "<a href=\"pubsites\">Registreer op een andere hub</a>." + +#: ../../Zotlabs/Module/Register.php:204 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "Deze $Projectname-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals." + +#: ../../Zotlabs/Module/Register.php:221 ../../Zotlabs/Module/Siteinfo.php:27 +msgid "Terms of Service" +msgstr "Gebruiksvoorwaarden" + +#: ../../Zotlabs/Module/Register.php:227 +#, php-format +msgid "I accept the %s for this website" +msgstr "Ik accepteer de %s van deze $Projectname-hub" + +#: ../../Zotlabs/Module/Register.php:229 +#, php-format +msgid "I am over 13 years of age and accept the %s for this website" +msgstr "Ik ben 13 jaar of ouder en accepteer de %s van deze $Projectname-hub" + +#: ../../Zotlabs/Module/Register.php:233 +msgid "Your email address" +msgstr "Jouw e-mailadres" + +#: ../../Zotlabs/Module/Register.php:234 +msgid "Choose a password" +msgstr "Geef een wachtwoord op" + +#: ../../Zotlabs/Module/Register.php:235 +msgid "Please re-enter your password" +msgstr "Geef het wachtwoord opnieuw op" + +#: ../../Zotlabs/Module/Register.php:236 +msgid "Please enter your invitation code" +msgstr "Vul jouw uitnodigingscode in" + +#: ../../Zotlabs/Module/Register.php:237 +#: ../../Zotlabs/Module/New_channel.php:134 +msgid "Name or caption" +msgstr "Naam" + +#: ../../Zotlabs/Module/Register.php:237 +#: ../../Zotlabs/Module/New_channel.php:134 +msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\"" +msgstr "Voorbeelden: \"Jan Pietersen\", \"Willems weblog\", \"Computerforum\"" + +#: ../../Zotlabs/Module/Register.php:239 +#: ../../Zotlabs/Module/New_channel.php:136 +msgid "Choose a short nickname" +msgstr "Korte bijnaam" + +#: ../../Zotlabs/Module/Register.php:239 +#: ../../Zotlabs/Module/New_channel.php:136 +#, php-format +msgid "" +"Your nickname will be used to create an easy to remember channel address " +"e.g. nickname%s" +msgstr "Deze bijnaam wordt gebruikt om een makkelijk te onthouden kanaaladres van jouw kanaal aan te maken, die je dan met anderen kunt delen. Bijvoorbeeld: bijnaam%s" + +#: ../../Zotlabs/Module/Register.php:240 +#: ../../Zotlabs/Module/New_channel.php:137 +msgid "Channel role and privacy" +msgstr "Kanaaltype en privacy" + +#: ../../Zotlabs/Module/Register.php:240 +#: ../../Zotlabs/Module/New_channel.php:137 +msgid "Select a channel role with your privacy requirements." +msgstr "Kies een kanaaltype met het door jou gewenste privacyniveau." + +#: ../../Zotlabs/Module/Register.php:240 +#: ../../Zotlabs/Module/New_channel.php:137 +msgid "Read more about roles" +msgstr "Lees meer over kanaaltypes" + +#: ../../Zotlabs/Module/Register.php:241 +msgid "no" +msgstr "Nee" + +#: ../../Zotlabs/Module/Register.php:241 +msgid "yes" +msgstr "Ja" + +#: ../../Zotlabs/Module/Register.php:253 +#: ../../Zotlabs/Module/Admin/Site.php:261 +msgid "Registration" +msgstr "Registratie" + +#: ../../Zotlabs/Module/Register.php:258 +msgid "Membership on this site is by invitation only." +msgstr "Registreren op deze $Projectname-hub kan alleen op uitnodiging." + +#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:150 +#: ../../boot.php:1702 +msgid "Register" +msgstr "Registreren" + +#: ../../Zotlabs/Module/Register.php:271 +msgid "" +"This site may require email verification after submitting this form. If you " +"are returned to a login page, please check your email for instructions." +msgstr "Mogelijk moet op deze hub eerst jouw e-mail geverifieerd worden. Wanneer je na het indienen van dit formulier op de inlogpagina terecht komt, dan dien je jouw e-mail te controleren voor instructies. Controleer eventueel ook jouw spamfolder." #: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:32 #, php-format msgid "Fetching URL returns error: %1$s" msgstr "Ophalen URL gaf een foutmelding terug: %1$s" -#: ../../Zotlabs/Module/Acl.php:313 -msgid "network" -msgstr "netwerk" +#: ../../Zotlabs/Module/Match.php:26 +msgid "Profile Match" +msgstr "Profielovereenkomst" -#: ../../Zotlabs/Module/Acl.php:323 -msgid "RSS" -msgstr "RSS" +#: ../../Zotlabs/Module/Match.php:35 +msgid "No keywords to match. Please add keywords to your default profile." +msgstr "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe." -#: ../../Zotlabs/Module/Channel.php:28 ../../Zotlabs/Module/Wiki.php:20 -#: ../../Zotlabs/Module/Chat.php:25 -msgid "You must be logged in to see this page." -msgstr "Je moet zijn ingelogd om deze pagina te kunnen bekijken." +#: ../../Zotlabs/Module/Match.php:67 +msgid "is interested in:" +msgstr "is geïnteresseerd in:" -#: ../../Zotlabs/Module/Channel.php:40 -msgid "Posts and comments" -msgstr "Berichten en reacties" +#: ../../Zotlabs/Module/Match.php:68 ../../Zotlabs/Module/Directory.php:328 +#: ../../Zotlabs/Module/Suggest.php:56 ../../include/channel.php:1036 +#: ../../include/connections.php:78 ../../include/widgets.php:147 +#: ../../include/widgets.php:184 ../../include/conversation.php:937 +msgid "Connect" +msgstr "Verbinden" -#: ../../Zotlabs/Module/Channel.php:41 -msgid "Only posts" -msgstr "Alleen berichten" +#: ../../Zotlabs/Module/Match.php:74 +msgid "No matches" +msgstr "Geen overeenkomsten" -#: ../../Zotlabs/Module/Channel.php:101 -msgid "Insufficient permissions. Request redirected to profile page." -msgstr "Onvoldoende permissies. Doorgestuurd naar profielpagina." +#: ../../Zotlabs/Module/Connedit.php:82 +msgid "Could not access contact record." +msgstr "Kon geen toegang krijgen tot de connectie-gegevens." -#: ../../Zotlabs/Module/Import.php:33 -#, php-format -msgid "Your service plan only allows %d channels." -msgstr "Jouw abonnement staat maar %d kanalen toe." +#: ../../Zotlabs/Module/Connedit.php:106 +msgid "Could not locate selected profile." +msgstr "Kon het gekozen profiel niet vinden." -#: ../../Zotlabs/Module/Import.php:71 ../../Zotlabs/Module/Import_items.php:42 -msgid "Nothing to import." -msgstr "Niets gevonden om te importeren" +#: ../../Zotlabs/Module/Connedit.php:258 +msgid "Connection updated." +msgstr "Connectie bijgewerkt." -#: ../../Zotlabs/Module/Import.php:95 ../../Zotlabs/Module/Import_items.php:66 -msgid "Unable to download data from old server" -msgstr "Niet in staat om gegevens van de oude hub te downloaden" +#: ../../Zotlabs/Module/Connedit.php:260 +msgid "Failed to update connection record." +msgstr "Bijwerken van connectie-gegevens mislukt." -#: ../../Zotlabs/Module/Import.php:101 -#: ../../Zotlabs/Module/Import_items.php:72 -msgid "Imported file is empty." -msgstr "Geïmporteerde bestand is leeg" +#: ../../Zotlabs/Module/Connedit.php:310 +msgid "is now connected to" +msgstr "is nu verbonden met" -#: ../../Zotlabs/Module/Import.php:123 -#: ../../Zotlabs/Module/Import_items.php:88 +#: ../../Zotlabs/Module/Connedit.php:411 ../../Zotlabs/Module/Connedit.php:716 +#: ../../Zotlabs/Module/Admin/Site.php:218 ../../Zotlabs/Module/Menu.php:100 +#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Mitem.php:162 +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 +#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 +#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Api.php:97 +#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Wiki.php:159 +#: ../../Zotlabs/Module/Settings/Channel.php:289 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +#: ../../extend/addon/addon/libertree/libertree.php:69 +#: ../../extend/addon/addon/libertree/libertree.php:81 +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../extend/addon/addon/nofed/nofed.php:72 +#: ../../extend/addon/addon/nofed/nofed.php:76 +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +#: ../../extend/addon/addon/planets/planets.php:153 +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../extend/addon/addon/rtof/rtof.php:81 +#: ../../extend/addon/addon/rtof/rtof.php:85 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../extend/addon/addon/twitter/twitter.php:246 +#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../extend/addon/addon/visage/visage.php:166 +#: ../../extend/addon/addon/wppost/wppost.php:82 +#: ../../extend/addon/addon/wppost/wppost.php:105 +#: ../../extend/addon/addon/wppost/wppost.php:109 +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../extend/addon/addon/cdav/cdav.php:234 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../view/theme/redbasic/php/config.php:111 +#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1724 +msgid "No" +msgstr "Nee" + +#: ../../Zotlabs/Module/Connedit.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:220 ../../Zotlabs/Module/Menu.php:100 +#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../Zotlabs/Module/Mitem.php:162 +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 +#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Photos.php:653 +#: ../../Zotlabs/Module/Profiles.php:641 ../../Zotlabs/Module/Api.php:96 +#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Wiki.php:159 +#: ../../Zotlabs/Module/Settings/Channel.php:289 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +#: ../../extend/addon/addon/libertree/libertree.php:69 +#: ../../extend/addon/addon/libertree/libertree.php:81 +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../extend/addon/addon/nofed/nofed.php:72 +#: ../../extend/addon/addon/nofed/nofed.php:76 +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +#: ../../extend/addon/addon/planets/planets.php:153 +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../extend/addon/addon/rtof/rtof.php:81 +#: ../../extend/addon/addon/rtof/rtof.php:85 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../extend/addon/addon/twitter/twitter.php:246 +#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../extend/addon/addon/visage/visage.php:166 +#: ../../extend/addon/addon/wppost/wppost.php:82 +#: ../../extend/addon/addon/wppost/wppost.php:105 +#: ../../extend/addon/addon/wppost/wppost.php:109 +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../extend/addon/addon/cdav/cdav.php:234 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../view/theme/redbasic/php/config.php:111 +#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1724 +msgid "Yes" +msgstr "Ja" + +#: ../../Zotlabs/Module/Connedit.php:443 +msgid "Could not access address book record." +msgstr "Kon geen toegang krijgen tot de record van de connectie." + +#: ../../Zotlabs/Module/Connedit.php:463 +msgid "Refresh failed - channel is currently unavailable." +msgstr "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar" + +#: ../../Zotlabs/Module/Connedit.php:478 ../../Zotlabs/Module/Connedit.php:487 +#: ../../Zotlabs/Module/Connedit.php:496 ../../Zotlabs/Module/Connedit.php:505 +#: ../../Zotlabs/Module/Connedit.php:518 +msgid "Unable to set address book parameters." +msgstr "Niet in staat om de parameters van connecties in te stellen." + +#: ../../Zotlabs/Module/Connedit.php:542 +msgid "Connection has been removed." +msgstr "Connectie is verwijderd" + +#: ../../Zotlabs/Module/Connedit.php:582 ../../Zotlabs/Lib/Apps.php:223 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 +#: ../../include/nav.php:89 ../../include/conversation.php:935 +msgid "View Profile" +msgstr "Profiel weergeven" + +#: ../../Zotlabs/Module/Connedit.php:585 #, php-format -msgid "Warning: Database versions differ by %1$d updates." -msgstr "Waarschuwing: database-versies lopen %1$d updates achter." +msgid "View %s's profile" +msgstr "Profiel van %s weergeven" -#: ../../Zotlabs/Module/Import.php:153 ../../include/import.php:107 -msgid "Cloned channel not found. Import failed." -msgstr "Gekloond kanaal niet gevonden. Importeren mislukt." +#: ../../Zotlabs/Module/Connedit.php:589 +msgid "Refresh Permissions" +msgstr "Permissies vernieuwen" -#: ../../Zotlabs/Module/Import.php:163 -msgid "No channel. Import failed." -msgstr "Geen kanaal. Importeren mislukt." +#: ../../Zotlabs/Module/Connedit.php:592 +msgid "Fetch updated permissions" +msgstr "Aangepaste permissies ophalen" -#: ../../Zotlabs/Module/Import.php:520 -#: ../../include/Import/import_diaspora.php:142 -msgid "Import completed." -msgstr "Import voltooid." +#: ../../Zotlabs/Module/Connedit.php:596 +msgid "Recent Activity" +msgstr "Recente activiteit/berichten" -#: ../../Zotlabs/Module/Import.php:542 -msgid "You must be logged in to use this feature." -msgstr "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken." +#: ../../Zotlabs/Module/Connedit.php:599 +msgid "View recent posts and comments" +msgstr "Recente berichten en reacties weergeven" -#: ../../Zotlabs/Module/Import.php:547 -msgid "Import Channel" -msgstr "Kanaal importeren" +#: ../../Zotlabs/Module/Connedit.php:603 +#: ../../Zotlabs/Module/Admin/Accounts.php:175 +msgid "Unblock" +msgstr "Deblokkeren" -#: ../../Zotlabs/Module/Import.php:548 -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 "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken." +#: ../../Zotlabs/Module/Connedit.php:603 +#: ../../Zotlabs/Module/Admin/Accounts.php:174 +msgid "Block" +msgstr "Blokkeren" -#: ../../Zotlabs/Module/Import.php:549 -#: ../../Zotlabs/Module/Import_items.php:121 -msgid "File to Upload" -msgstr "Bestand om te uploaden" +#: ../../Zotlabs/Module/Connedit.php:606 +msgid "Block (or Unblock) all communications with this connection" +msgstr "Blokkeer (of deblokkeer) alle communicatie met deze connectie" -#: ../../Zotlabs/Module/Import.php:550 -msgid "Or provide the old server/hub details" -msgstr "Of vul de gegevens van de oude hub in" +#: ../../Zotlabs/Module/Connedit.php:607 +msgid "This connection is blocked!" +msgstr "Deze connectie is geblokkeerd!" -#: ../../Zotlabs/Module/Import.php:551 -msgid "Your old identity address (xyz@example.com)" -msgstr "Jouw oude kanaaladres (xyz@example.com)" +#: ../../Zotlabs/Module/Connedit.php:611 +msgid "Unignore" +msgstr "Niet meer negeren" -#: ../../Zotlabs/Module/Import.php:552 -msgid "Your old login email address" -msgstr "Het e-mailadres van je oude account" +#: ../../Zotlabs/Module/Connedit.php:611 +#: ../../Zotlabs/Module/Connections.php:277 +msgid "Ignore" +msgstr "Negeren" -#: ../../Zotlabs/Module/Import.php:553 -msgid "Your old login password" -msgstr "Wachtwoord van jouw oude account" +#: ../../Zotlabs/Module/Connedit.php:614 +msgid "Ignore (or Unignore) all inbound communications from this connection" +msgstr "Negeer (of negeer niet meer) alle inkomende communicatie van deze connectie" -#: ../../Zotlabs/Module/Import.php:554 +#: ../../Zotlabs/Module/Connedit.php:615 +msgid "This connection is ignored!" +msgstr "Deze connectie wordt genegeerd!" + +#: ../../Zotlabs/Module/Connedit.php:619 +msgid "Unarchive" +msgstr "Niet meer archiveren" + +#: ../../Zotlabs/Module/Connedit.php:619 +msgid "Archive" +msgstr "Archiveren" + +#: ../../Zotlabs/Module/Connedit.php:622 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 "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen." +"Archive (or Unarchive) this connection - mark channel dead but keep content" +msgstr "Archiveer (of dearchiveer) deze connectie - markeer het kanaal als dood, maar bewaar de inhoud" -#: ../../Zotlabs/Module/Import.php:555 -msgid "Make this hub my primary location" -msgstr "Stel deze hub als mijn primaire locatie in" +#: ../../Zotlabs/Module/Connedit.php:623 +msgid "This connection is archived!" +msgstr "Deze connectie is gearchiveerd!" + +#: ../../Zotlabs/Module/Connedit.php:627 +msgid "Unhide" +msgstr "Niet meer verbergen" + +#: ../../Zotlabs/Module/Connedit.php:627 +msgid "Hide" +msgstr "Verbergen" + +#: ../../Zotlabs/Module/Connedit.php:630 +msgid "Hide or Unhide this connection from your other connections" +msgstr "Deze connectie verbergen (of niet meer verbergen) voor jouw andere connecties" + +#: ../../Zotlabs/Module/Connedit.php:631 +msgid "This connection is hidden!" +msgstr "Deze connectie is verborgen!" + +#: ../../Zotlabs/Module/Connedit.php:638 +msgid "Delete this connection" +msgstr "Deze connectie verwijderen" + +#: ../../Zotlabs/Module/Connedit.php:655 ../../include/widgets.php:529 +msgid "Me" +msgstr "Ik" + +#: ../../Zotlabs/Module/Connedit.php:656 ../../include/widgets.php:530 +msgid "Family" +msgstr "Familie" + +#: ../../Zotlabs/Module/Connedit.php:657 +#: ../../Zotlabs/Module/Settings/Channel.php:61 +#: ../../Zotlabs/Module/Settings/Channel.php:65 +#: ../../Zotlabs/Module/Settings/Channel.php:66 +#: ../../Zotlabs/Module/Settings/Channel.php:69 +#: ../../Zotlabs/Module/Settings/Channel.php:80 +#: ../../include/selectors.php:123 ../../include/channel.php:402 +#: ../../include/channel.php:403 ../../include/channel.php:410 +#: ../../include/widgets.php:531 +msgid "Friends" +msgstr "Vrienden" -#: ../../Zotlabs/Module/Import.php:556 +#: ../../Zotlabs/Module/Connedit.php:658 ../../include/widgets.php:532 +msgid "Acquaintances" +msgstr "Kennissen" + +#: ../../Zotlabs/Module/Connedit.php:659 +#: ../../Zotlabs/Module/Connections.php:92 +#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:533 +msgid "All" +msgstr "Alles" + +#: ../../Zotlabs/Module/Connedit.php:716 +msgid "Approve this connection" +msgstr "Deze connectie accepteren" + +#: ../../Zotlabs/Module/Connedit.php:716 +msgid "Accept connection to allow communication" +msgstr "Keur deze connectie goed om communicatie toe te staan" + +#: ../../Zotlabs/Module/Connedit.php:721 +msgid "Set Affinity" +msgstr "Verwantschapsfilter instellen" + +#: ../../Zotlabs/Module/Connedit.php:724 +msgid "Set Profile" +msgstr "Profiel instellen" + +#: ../../Zotlabs/Module/Connedit.php:727 +msgid "Set Affinity & Profile" +msgstr "Verwantschapsfilter en profiel instellen" + +#: ../../Zotlabs/Module/Connedit.php:776 +msgid "none" +msgstr "geen" + +#: ../../Zotlabs/Module/Connedit.php:780 ../../include/widgets.php:656 +msgid "Connection Default Permissions" +msgstr "Standaard permissies voor connecties" + +#: ../../Zotlabs/Module/Connedit.php:780 ../../include/items.php:3909 +#, php-format +msgid "Connection: %s" +msgstr "Connectie: %s" + +#: ../../Zotlabs/Module/Connedit.php:781 +msgid "Apply these permissions automatically" +msgstr "Deze permissies automatisch toepassen" + +#: ../../Zotlabs/Module/Connedit.php:781 +msgid "Connection requests will be approved without your interaction" +msgstr "Connectieverzoeken zullen automatisch worden geaccepteerd" + +#: ../../Zotlabs/Module/Connedit.php:784 +msgid "This connection's primary address is" +msgstr "Het primaire kanaaladres van deze connectie is" + +#: ../../Zotlabs/Module/Connedit.php:785 +msgid "Available locations:" +msgstr "Beschikbare locaties:" + +#: ../../Zotlabs/Module/Connedit.php:789 msgid "" -"Import existing posts if possible (experimental - limited by available " -"memory" -msgstr "Importeer bestaande berichten wanneer mogelijk (experimenteel - afhankelijk van beschikbaar servergeheugen)" +"The permissions indicated on this page will be applied to all new " +"connections." +msgstr "Permissies die op deze pagina staan vermeld worden op alle nieuwe connecties toegepast." -#: ../../Zotlabs/Module/Import.php:557 +#: ../../Zotlabs/Module/Connedit.php:790 +msgid "Connection Tools" +msgstr "Hulpmiddelen" + +#: ../../Zotlabs/Module/Connedit.php:792 +msgid "Slide to adjust your degree of friendship" +msgstr "Schuif om te bepalen hoe goed je iemand kent en/of mag" + +#: ../../Zotlabs/Module/Connedit.php:793 ../../Zotlabs/Module/Rate.php:155 +#: ../../include/js_strings.php:20 +msgid "Rating" +msgstr "Beoordeling" + +#: ../../Zotlabs/Module/Connedit.php:794 +msgid "Slide to adjust your rating" +msgstr "Gebruik de schuif om je beoordeling te geven" + +#: ../../Zotlabs/Module/Connedit.php:795 ../../Zotlabs/Module/Connedit.php:800 +msgid "Optionally explain your rating" +msgstr "Verklaar jouw beoordeling (niet verplicht)" + +#: ../../Zotlabs/Module/Connedit.php:797 +msgid "Custom Filter" +msgstr "Berichtenfilter" + +#: ../../Zotlabs/Module/Connedit.php:798 +msgid "Only import posts with this text" +msgstr "Importeer alleen berichten met deze tekst" + +#: ../../Zotlabs/Module/Connedit.php:798 ../../Zotlabs/Module/Connedit.php:799 msgid "" -"This process may take several minutes to complete. Please submit the form " -"only once and leave this page open until finished." -msgstr "Dit proces kan enkele minuten in beslag nemen. Klik maar één keer op opslaan en verlaat deze pagina niet alvorens het proces is voltooid." +"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " +"all posts" +msgstr "woorden (één per regel), #tags, /regex/ of talen (lang=iso639-1) - laat leeg om alle berichten te importeren" -#: ../../Zotlabs/Module/Import.php:560 -#: ../../Zotlabs/Module/Admin/Accounts.php:167 -#: ../../Zotlabs/Module/Admin/Channels.php:151 +#: ../../Zotlabs/Module/Connedit.php:799 +msgid "Do not import posts with this text" +msgstr "Importeer geen berichten met deze tekst" + +#: ../../Zotlabs/Module/Connedit.php:801 +msgid "This information is public!" +msgstr "Deze informatie is openbaar!" + +#: ../../Zotlabs/Module/Connedit.php:806 +msgid "Connection Pending Approval" +msgstr "Connectie moet nog geaccepteerd worden" + +#: ../../Zotlabs/Module/Connedit.php:809 +#: ../../Zotlabs/Module/Settings/Tokens.php:163 +msgid "inherited" +msgstr "geërfd" + +#: ../../Zotlabs/Module/Connedit.php:810 ../../Zotlabs/Module/Locs.php:121 +#: ../../Zotlabs/Module/Connect.php:98 #: ../../Zotlabs/Module/Admin/Features.php:66 #: ../../Zotlabs/Module/Admin/Logs.php:84 #: ../../Zotlabs/Module/Admin/Plugins.php:429 #: ../../Zotlabs/Module/Admin/Profs.php:157 #: ../../Zotlabs/Module/Admin/Security.php:104 -#: ../../Zotlabs/Module/Admin/Site.php:267 -#: ../../Zotlabs/Module/Admin/Themes.php:156 ../../Zotlabs/Module/Mail.php:370 -#: ../../Zotlabs/Module/Connedit.php:779 ../../Zotlabs/Module/Appman.php:126 -#: ../../Zotlabs/Module/Pdledit.php:74 -#: ../../Zotlabs/Module/Filestorage.php:165 -#: ../../Zotlabs/Module/Connect.php:98 ../../Zotlabs/Module/Group.php:85 +#: ../../Zotlabs/Module/Admin/Themes.php:156 +#: ../../Zotlabs/Module/Admin/Account_edit.php:74 +#: ../../Zotlabs/Module/Admin/Accounts.php:166 +#: ../../Zotlabs/Module/Admin/Channels.php:147 +#: ../../Zotlabs/Module/Admin/Site.php:260 ../../Zotlabs/Module/Appman.php:127 +#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Mail.php:412 #: ../../Zotlabs/Module/Import_items.php:122 -#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Profiles.php:687 -#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Setup.php:317 -#: ../../Zotlabs/Module/Setup.php:365 ../../Zotlabs/Module/Mood.php:139 +#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Group.php:85 +#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Mood.php:139 #: ../../Zotlabs/Module/Photos.php:668 ../../Zotlabs/Module/Photos.php:1058 #: ../../Zotlabs/Module/Photos.php:1098 ../../Zotlabs/Module/Photos.php:1216 -#: ../../Zotlabs/Module/Poke.php:186 ../../Zotlabs/Module/Pconfig.php:107 -#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Events.php:484 -#: ../../Zotlabs/Module/Thing.php:320 ../../Zotlabs/Module/Thing.php:370 -#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149 -#: ../../Zotlabs/Module/Chat.php:196 ../../Zotlabs/Module/Chat.php:241 -#: ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Module/Settings/Account.php:126 -#: ../../Zotlabs/Module/Settings/Channel.php:452 -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Poke.php:186 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Rate.php:166 +#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Cal.php:342 +#: ../../Zotlabs/Module/Wiki.php:148 ../../Zotlabs/Module/Sources.php:114 +#: ../../Zotlabs/Module/Sources.php:149 #: ../../Zotlabs/Module/Settings/Features.php:47 #: ../../Zotlabs/Module/Settings/Oauth.php:87 #: ../../Zotlabs/Module/Settings/Tokens.php:167 -#: ../../Zotlabs/Lib/ThreadItem.php:725 ../../include/js_strings.php:22 -#: ../../include/widgets.php:796 ../../view/theme/redbasic/php/config.php:106 +#: ../../Zotlabs/Module/Settings/Account.php:118 +#: ../../Zotlabs/Module/Settings/Channel.php:455 +#: ../../Zotlabs/Module/Settings/Display.php:196 +#: ../../Zotlabs/Module/Thing.php:320 ../../Zotlabs/Module/Thing.php:370 +#: ../../Zotlabs/Module/Import.php:543 ../../Zotlabs/Module/Chat.php:196 +#: ../../Zotlabs/Module/Chat.php:241 ../../Zotlabs/Module/Xchan.php:15 +#: ../../Zotlabs/Module/Events.php:484 ../../Zotlabs/Lib/ThreadItem.php:729 +#: ../../extend/addon/addon/chords/Mod_Chords.php:60 +#: ../../extend/addon/addon/diaspora/diaspora.php:710 +#: ../../extend/addon/addon/dwpost/dwpost.php:89 +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 +#: ../../extend/addon/addon/friendica/friendica.php:128 +#: ../../extend/addon/addon/frphotos/frphotos.php:96 +#: ../../extend/addon/addon/gnusoc/gnusoc.php:129 +#: ../../extend/addon/addon/hubwall/hubwall.php:95 +#: ../../extend/addon/addon/ijpost/ijpost.php:89 +#: ../../extend/addon/addon/irc/irc.php:53 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:371 +#: ../../extend/addon/addon/libertree/libertree.php:85 +#: ../../extend/addon/addon/ljpost/ljpost.php:86 +#: ../../extend/addon/addon/logrot/logrot.php:35 +#: ../../extend/addon/addon/mailhost/mailhost.php:40 +#: ../../extend/addon/addon/nofed/nofed.php:80 +#: ../../extend/addon/addon/nsabait/nsabait.php:161 +#: ../../extend/addon/addon/nsfw/nsfw.php:92 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:52 +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:168 +#: ../../extend/addon/addon/pageheader/pageheader.php:48 +#: ../../extend/addon/addon/piwik/piwik.php:95 +#: ../../extend/addon/addon/planets/planets.php:157 +#: ../../extend/addon/addon/pumpio/pumpio.php:237 +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:85 +#: ../../extend/addon/addon/redfiles/redfiles.php:124 +#: ../../extend/addon/addon/redphotos/redphotos.php:136 +#: ../../extend/addon/addon/redred/redred.php:119 +#: ../../extend/addon/addon/rtof/rtof.php:101 +#: ../../extend/addon/addon/skeleton/skeleton.php:65 +#: ../../extend/addon/addon/smileybutton/smileybutton.php:281 +#: ../../extend/addon/addon/startpage/startpage.php:113 +#: ../../extend/addon/addon/statusnet/statusnet.php:322 +#: ../../extend/addon/addon/statusnet/statusnet.php:380 +#: ../../extend/addon/addon/statusnet/statusnet.php:432 +#: ../../extend/addon/addon/statusnet/statusnet.php:899 +#: ../../extend/addon/addon/superblock/superblock.php:118 +#: ../../extend/addon/addon/twitter/twitter.php:217 +#: ../../extend/addon/addon/twitter/twitter.php:259 +#: ../../extend/addon/addon/visage/visage.php:170 +#: ../../extend/addon/addon/wppost/wppost.php:113 +#: ../../extend/addon/addon/xmpp/xmpp.php:69 +#: ../../extend/addon/addon/cdav/cdav.php:246 +#: ../../extend/addon/addon/likebanner/likebanner.php:57 +#: ../../extend/addon/addon/mailtest/mailtest.php:100 +#: ../../include/js_strings.php:22 ../../include/widgets.php:796 +#: ../../view/theme/redbasic/php/config.php:106 msgid "Submit" msgstr "Opslaan" +#: ../../Zotlabs/Module/Connedit.php:811 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken." + +#: ../../Zotlabs/Module/Connedit.php:813 +#: ../../Zotlabs/Module/Settings/Tokens.php:160 +msgid "Their Settings" +msgstr "Hun instellingen" + +#: ../../Zotlabs/Module/Connedit.php:814 +#: ../../Zotlabs/Module/Settings/Tokens.php:161 +msgid "My Settings" +msgstr "Mijn instellingen" + +#: ../../Zotlabs/Module/Connedit.php:816 +#: ../../Zotlabs/Module/Settings/Tokens.php:165 +msgid "Individual Permissions" +msgstr "Individuele permissies" + +#: ../../Zotlabs/Module/Connedit.php:817 +#: ../../Zotlabs/Module/Settings/Tokens.php:166 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can <strong>not</strong> change those" +" settings here." +msgstr "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele instellingen. Je kan je deze overgeërfde permissies hier <strong>niet</strong> veranderen." + +#: ../../Zotlabs/Module/Connedit.php:818 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can change those settings here but " +"they wont have any impact unless the inherited setting changes." +msgstr "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele permissies. Je kan de permissies hier veranderen, maar die hebben geen effect, tenzij de overgeërfde permissies worden veranderd. " + +#: ../../Zotlabs/Module/Connedit.php:819 +msgid "Last update:" +msgstr "Laatste wijziging:" + +#: ../../Zotlabs/Module/Dreport.php:45 +msgid "Invalid message" +msgstr "Ongeldig bericht" + +#: ../../Zotlabs/Module/Dreport.php:78 +msgid "no results" +msgstr "geen resultaten" + +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "channel sync processed" +msgstr "kanaalsync verwerkt" + +#: ../../Zotlabs/Module/Dreport.php:97 +msgid "queued" +msgstr "in wachtrij" + +#: ../../Zotlabs/Module/Dreport.php:101 +msgid "posted" +msgstr "verstuurd" + +#: ../../Zotlabs/Module/Dreport.php:105 +msgid "accepted for delivery" +msgstr "geaccepteerd om afgeleverd te worden" + +#: ../../Zotlabs/Module/Dreport.php:109 +msgid "updated" +msgstr "geüpdatet" + +#: ../../Zotlabs/Module/Dreport.php:112 +msgid "update ignored" +msgstr "update genegeerd" + +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "permission denied" +msgstr "toegang geweigerd" + +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "recipient not found" +msgstr "ontvanger niet gevonden" + +#: ../../Zotlabs/Module/Dreport.php:122 +msgid "mail recalled" +msgstr "Privébericht ingetrokken" + +#: ../../Zotlabs/Module/Dreport.php:125 +msgid "duplicate mail received" +msgstr "dubbel privébericht ontvangen" + +#: ../../Zotlabs/Module/Dreport.php:128 +msgid "mail delivered" +msgstr "privébericht afgeleverd" + +#: ../../Zotlabs/Module/Dreport.php:148 +#, php-format +msgid "Delivery report for %1$s" +msgstr "Afleveringsrapport voor %1$s" + +#: ../../Zotlabs/Module/Dreport.php:151 +msgid "Options" +msgstr "Opties" + +#: ../../Zotlabs/Module/Dreport.php:152 +msgid "Redeliver" +msgstr "Opnieuw afleveren" + #: ../../Zotlabs/Module/Bookmarks.php:53 msgid "Bookmark added" msgstr "Bladwijzer toegevoegd" @@ -633,269 +1230,456 @@ msgstr "Mijn bladwijzers" msgid "My Connections Bookmarks" msgstr "Bladwijzers van mijn connecties" -#: ../../Zotlabs/Module/Admin/Accounts.php:36 -#, php-format -msgid "%s account blocked/unblocked" -msgid_plural "%s account blocked/unblocked" -msgstr[0] "%s account geblokkeerd/gedeblokkeerd" -msgstr[1] "%s accounts geblokkeerd/gedeblokkeerd" - -#: ../../Zotlabs/Module/Admin/Accounts.php:43 -#, php-format -msgid "%s account deleted" -msgid_plural "%s accounts deleted" -msgstr[0] "%s account verwijderd" -msgstr[1] "%s accounts verwijderd" +#: ../../Zotlabs/Module/Acl.php:313 +msgid "network" +msgstr "netwerk" -#: ../../Zotlabs/Module/Admin/Accounts.php:79 -msgid "Account not found" -msgstr "Account niet gevonden" +#: ../../Zotlabs/Module/Acl.php:323 +msgid "RSS" +msgstr "RSS" -#: ../../Zotlabs/Module/Admin/Accounts.php:90 -#, php-format -msgid "Account '%s' deleted" -msgstr "Account '%s' verwijderd" +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." +msgstr "Locatie niet gevonden." -#: ../../Zotlabs/Module/Admin/Accounts.php:98 -#, php-format -msgid "Account '%s' blocked" -msgstr "Account '%s' geblokkeerd" +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." +msgstr "Opzoeken locatie mislukt" -#: ../../Zotlabs/Module/Admin/Accounts.php:106 -#, php-format -msgid "Account '%s' unblocked" -msgstr "Account '%s' gedeblokkeerd" +#: ../../Zotlabs/Module/Locs.php:66 +msgid "" +"Please select another location to become primary before removing the primary" +" location." +msgstr "Kies eerst een andere primaire locatie alvorens de huidige primaire locatie te verwijderen." -#: ../../Zotlabs/Module/Admin/Accounts.php:165 -#: ../../Zotlabs/Module/Admin/Channels.php:149 -#: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Plugins.php:336 -#: ../../Zotlabs/Module/Admin/Plugins.php:427 -#: ../../Zotlabs/Module/Admin/Security.php:86 -#: ../../Zotlabs/Module/Admin/Site.php:265 -#: ../../Zotlabs/Module/Admin/Themes.php:120 -#: ../../Zotlabs/Module/Admin/Themes.php:154 -#: ../../Zotlabs/Module/Admin.php:141 -msgid "Administration" -msgstr "Beheer" +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" +msgstr "Locaties synchronizeren" -#: ../../Zotlabs/Module/Admin/Accounts.php:166 -#: ../../Zotlabs/Module/Admin/Accounts.php:179 ../../include/widgets.php:1561 -msgid "Accounts" -msgstr "Accounts" +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." +msgstr "Geen locaties gevonden." -#: ../../Zotlabs/Module/Admin/Accounts.php:168 -#: ../../Zotlabs/Module/Admin/Channels.php:152 -msgid "select all" -msgstr "alles selecteren" +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" +msgstr "Kanaallocaties beheren" -#: ../../Zotlabs/Module/Admin/Accounts.php:169 -msgid "Registrations waiting for confirm" -msgstr "Accounts die op goedkeuring wachten" +#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Pubsites.php:51 +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:692 +#: ../../Zotlabs/Module/Events.php:468 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:839 +#: ../../include/js_strings.php:25 +msgid "Location" +msgstr "Locatie" -#: ../../Zotlabs/Module/Admin/Accounts.php:170 -msgid "Request date" -msgstr "Tijd/datum verzoek" +#: ../../Zotlabs/Module/Locs.php:118 +#: ../../Zotlabs/Module/Admin/Channels.php:160 +#: ../../Zotlabs/Module/Profiles.php:464 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143 +msgid "Address" +msgstr "Adres" -#: ../../Zotlabs/Module/Admin/Accounts.php:170 -#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/network.php:2212 -msgid "Email" -msgstr "E-mail" +#: ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" +msgstr "Primair" -#: ../../Zotlabs/Module/Admin/Accounts.php:171 -msgid "No registrations." -msgstr "Geen verzoeken." +#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113 +msgid "Drop" +msgstr "Verwijderen" -#: ../../Zotlabs/Module/Admin/Accounts.php:172 -#: ../../Zotlabs/Module/Connections.php:275 -msgid "Approve" -msgstr "Goedkeuren" +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" +msgstr "Nu synchroniseren" -#: ../../Zotlabs/Module/Admin/Accounts.php:173 -msgid "Deny" -msgstr "Afkeuren" +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." +msgstr "Wacht enkele minuten tussen opeenvolgende handelingen." -#: ../../Zotlabs/Module/Admin/Accounts.php:175 -#: ../../Zotlabs/Module/Connedit.php:575 -msgid "Block" -msgstr "Blokkeren" +#: ../../Zotlabs/Module/Locs.php:124 +msgid "" +"When possible, drop a location by logging into that website/hub and removing" +" your channel." +msgstr "Wij adviseren, wanneer dit (nog) mogelijk is, de locatie te verwijderen door op de hub van de kloon in te loggen en het kanaal daar te verwijderen." -#: ../../Zotlabs/Module/Admin/Accounts.php:176 -#: ../../Zotlabs/Module/Connedit.php:575 -msgid "Unblock" -msgstr "Deblokkeren" +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." +msgstr "Gebruik dit formulier om de locatie te verwijderen wanneer de hub van de kloon niet meer operationeel is." -#: ../../Zotlabs/Module/Admin/Accounts.php:181 -msgid "ID" -msgstr "ID" +#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109 +msgid "Continue" +msgstr "Ga verder" -#: ../../Zotlabs/Module/Admin/Accounts.php:183 ../../include/group.php:267 -msgid "All Channels" -msgstr "Alle kanalen" +#: ../../Zotlabs/Module/Connect.php:90 +msgid "Premium Channel Setup" +msgstr "Instellen premiumkanaal " -#: ../../Zotlabs/Module/Admin/Accounts.php:184 -msgid "Register date" -msgstr "Geregistreerd" +#: ../../Zotlabs/Module/Connect.php:92 +msgid "Enable premium channel connection restrictions" +msgstr "Restricties voor connecties van premiumkanaal toestaan" -#: ../../Zotlabs/Module/Admin/Accounts.php:185 -msgid "Last login" -msgstr "Laatste keer ingelogd" +#: ../../Zotlabs/Module/Connect.php:93 +msgid "" +"Please enter your restrictions or conditions, such as paypal receipt, usage " +"guidelines, etc." +msgstr "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz." -#: ../../Zotlabs/Module/Admin/Accounts.php:186 -msgid "Expires" -msgstr "Verloopt" +#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115 +msgid "" +"This channel may require additional steps or acknowledgement of the " +"following conditions prior to connecting:" +msgstr "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:" -#: ../../Zotlabs/Module/Admin/Accounts.php:187 -msgid "Service Class" -msgstr "Abonnementen" +#: ../../Zotlabs/Module/Connect.php:96 +msgid "" +"Potential connections will then see the following text before proceeding:" +msgstr "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:" -#: ../../Zotlabs/Module/Admin/Accounts.php:189 +#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118 msgid "" -"Selected accounts will be deleted!\\n\\nEverything these accounts had posted" -" on this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?" +"By continuing, I certify that I have complied with any instructions provided" +" on this page." +msgstr "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina." -#: ../../Zotlabs/Module/Admin/Accounts.php:190 +#: ../../Zotlabs/Module/Connect.php:106 +msgid "(No specific instructions have been provided by the channel owner.)" +msgstr "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) " + +#: ../../Zotlabs/Module/Connect.php:114 +msgid "Restricted or Premium Channel" +msgstr "Beperkt of premiumkanaal" + +#: ../../Zotlabs/Module/Page.php:40 ../../Zotlabs/Module/Block.php:31 +msgid "Invalid item." +msgstr "Ongeldig item." + +#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Chanview.php:96 +#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Cal.php:62 +#: ../../Zotlabs/Module/Wall_upload.php:31 +msgid "Channel not found." +msgstr "Kanaal niet gevonden." + +#: ../../Zotlabs/Module/Page.php:131 msgid "" -"The account {0} will be deleted!\\n\\nEverything this account has posted on " -"this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?" +"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/Admin/Channels.php:30 -#, php-format -msgid "%s channel censored/uncensored" -msgid_plural "%s channels censored/uncensored" -msgstr[0] "%s kanaal gecensureerd/ongecensureerd" -msgstr[1] "%s kanalen gecensureerd/ongecensureerd" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "Save to Folder:" +msgstr "Bewaar in map: " -#: ../../Zotlabs/Module/Admin/Channels.php:39 -#, php-format -msgid "%s channel code allowed/disallowed" -msgid_plural "%s channels code allowed/disallowed" -msgstr[0] "Scripts toegestaan/niet toegestaan voor %s kanaal" -msgstr[1] "Scripts toegestaan/niet toegestaan voor %s kanalen" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "- select -" +msgstr "- kies map -" + +#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin/Profs.php:74 +#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32 +#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:987 +#: ../../include/text.php:999 ../../include/widgets.php:201 +msgid "Save" +msgstr "Opslaan" -#: ../../Zotlabs/Module/Admin/Channels.php:45 +#: ../../Zotlabs/Module/Manage.php:136 +#: ../../Zotlabs/Module/New_channel.php:121 #, php-format -msgid "%s channel deleted" -msgid_plural "%s channels deleted" -msgstr[0] "%s kanaal verwijderd" -msgstr[1] "%s kanalen verwijderd" +msgid "You have created %1$.0f of %2$.0f allowed channels." +msgstr "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt." -#: ../../Zotlabs/Module/Admin/Channels.php:66 -msgid "Channel not found" -msgstr "Kanaal niet gevonden" +#: ../../Zotlabs/Module/Manage.php:143 +msgid "Create a new channel" +msgstr "Nieuw kanaal aanmaken" -#: ../../Zotlabs/Module/Admin/Channels.php:76 -#, php-format -msgid "Channel '%s' deleted" -msgstr "Kanaal '%s' verwijderd" +#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Profiles.php:772 +#: ../../Zotlabs/Module/Wiki.php:147 ../../Zotlabs/Module/Chat.php:255 +msgid "Create New" +msgstr "Nieuwe aanmaken" -#: ../../Zotlabs/Module/Admin/Channels.php:88 -#, php-format -msgid "Channel '%s' censored" -msgstr "Kanaal '%s' gecensureerd" +#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:216 +#: ../../include/nav.php:209 +msgid "Channel Manager" +msgstr "Kanaalbeheer" -#: ../../Zotlabs/Module/Admin/Channels.php:88 -#, php-format -msgid "Channel '%s' uncensored" -msgstr "Kanaal '%s' ongecensureerd" +#: ../../Zotlabs/Module/Manage.php:165 +msgid "Current Channel" +msgstr "Huidig kanaal" -#: ../../Zotlabs/Module/Admin/Channels.php:99 +#: ../../Zotlabs/Module/Manage.php:167 +msgid "Switch to one of your channels by selecting it." +msgstr "Activeer een van jouw andere kanalen door er op te klikken." + +#: ../../Zotlabs/Module/Manage.php:168 +msgid "Default Channel" +msgstr "Standaardkanaal" + +#: ../../Zotlabs/Module/Manage.php:169 +msgid "Make Default" +msgstr "Als standaard instellen" + +#: ../../Zotlabs/Module/Manage.php:172 #, php-format -msgid "Channel '%s' code allowed" -msgstr "Scripts toegestaan voor kanaal '%s'" +msgid "%d new messages" +msgstr "%d nieuwe berichten" -#: ../../Zotlabs/Module/Admin/Channels.php:99 +#: ../../Zotlabs/Module/Manage.php:173 #, php-format -msgid "Channel '%s' code disallowed" -msgstr "Scripts niet toegestaan voor kanaal '%s'" +msgid "%d new introductions" +msgstr "%d nieuwe connectieverzoeken" -#: ../../Zotlabs/Module/Admin/Channels.php:150 ../../include/widgets.php:1562 -msgid "Channels" -msgstr "Kanalen" +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Delegated Channel" +msgstr "Uitbesteed kanaal" -#: ../../Zotlabs/Module/Admin/Channels.php:154 -msgid "Censor" -msgstr "Censureren" +#: ../../Zotlabs/Module/Connections.php:56 +#: ../../Zotlabs/Module/Connections.php:161 +#: ../../Zotlabs/Module/Connections.php:242 +msgid "Blocked" +msgstr "Geblokkeerd" -#: ../../Zotlabs/Module/Admin/Channels.php:155 -msgid "Uncensor" -msgstr "Niet censureren" +#: ../../Zotlabs/Module/Connections.php:61 +#: ../../Zotlabs/Module/Connections.php:168 +#: ../../Zotlabs/Module/Connections.php:241 +msgid "Ignored" +msgstr "Genegeerd" -#: ../../Zotlabs/Module/Admin/Channels.php:156 -msgid "Allow Code" -msgstr "Scripts toestaan" +#: ../../Zotlabs/Module/Connections.php:66 +#: ../../Zotlabs/Module/Connections.php:182 +#: ../../Zotlabs/Module/Connections.php:240 +msgid "Hidden" +msgstr "Verborgen" -#: ../../Zotlabs/Module/Admin/Channels.php:157 -msgid "Disallow Code" -msgstr "Scripts niet toestaan" +#: ../../Zotlabs/Module/Connections.php:71 +#: ../../Zotlabs/Module/Connections.php:175 +#: ../../Zotlabs/Module/Connections.php:239 +msgid "Archived" +msgstr "Gearchiveerd" -#: ../../Zotlabs/Module/Admin/Channels.php:158 -#: ../../include/conversation.php:1651 -msgid "Channel" -msgstr "Kanaal" +#: ../../Zotlabs/Module/Connections.php:76 +#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116 +#: ../../include/conversation.php:1576 +msgid "New" +msgstr "Nieuw" -#: ../../Zotlabs/Module/Admin/Channels.php:162 -msgid "UID" -msgstr "UID" +#: ../../Zotlabs/Module/Connections.php:138 +msgid "New Connections" +msgstr "Nieuwe connecties" -#: ../../Zotlabs/Module/Admin/Channels.php:164 -#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470 -msgid "Address" -msgstr "Kanaaladres" +#: ../../Zotlabs/Module/Connections.php:141 +msgid "Show pending (new) connections" +msgstr "Nog te accepteren (nieuwe) connecties weergeven" -#: ../../Zotlabs/Module/Admin/Channels.php:166 -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 "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?" +#: ../../Zotlabs/Module/Connections.php:145 +#: ../../Zotlabs/Module/Profperm.php:144 +msgid "All Connections" +msgstr "Alle connecties" -#: ../../Zotlabs/Module/Admin/Channels.php:167 -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 "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?" +#: ../../Zotlabs/Module/Connections.php:148 +msgid "Show all connections" +msgstr "Toon alle connecties" -#: ../../Zotlabs/Module/Admin/Dbsync.php:19 -msgid "Update has been marked successful" -msgstr "Update is als succesvol gemarkeerd" +#: ../../Zotlabs/Module/Connections.php:164 +msgid "Only show blocked connections" +msgstr "Toon alleen geblokkeerde connecties" -#: ../../Zotlabs/Module/Admin/Dbsync.php:29 +#: ../../Zotlabs/Module/Connections.php:171 +msgid "Only show ignored connections" +msgstr "Toon alleen genegeerde connecties" + +#: ../../Zotlabs/Module/Connections.php:178 +msgid "Only show archived connections" +msgstr "Toon alleen gearchiveerde connecties" + +#: ../../Zotlabs/Module/Connections.php:185 +msgid "Only show hidden connections" +msgstr "Toon alleen verborgen connecties" + +#: ../../Zotlabs/Module/Connections.php:238 +msgid "Pending approval" +msgstr "Moet nog geaccepteerd worden" + +#: ../../Zotlabs/Module/Connections.php:254 #, php-format -msgid "Executing %s failed. Check system logs." -msgstr "Uitvoeren van %s is mislukt. Controleer systeemlogboek." +msgid "%1$s [%2$s]" +msgstr "%1$s [%2$s]" -#: ../../Zotlabs/Module/Admin/Dbsync.php:32 +#: ../../Zotlabs/Module/Connections.php:255 +msgid "Edit connection" +msgstr "Connectie bewerken" + +#: ../../Zotlabs/Module/Connections.php:256 +msgid "Delete connection" +msgstr "Connectie verwijderen" + +#: ../../Zotlabs/Module/Connections.php:265 +msgid "Channel address" +msgstr "Kanaaladres" + +#: ../../Zotlabs/Module/Connections.php:267 +msgid "Network" +msgstr "Netwerk" + +#: ../../Zotlabs/Module/Connections.php:270 +msgid "Status" +msgstr "Status" + +#: ../../Zotlabs/Module/Connections.php:272 +msgid "Connected" +msgstr "Verbonden" + +#: ../../Zotlabs/Module/Connections.php:274 +msgid "Approve connection" +msgstr "Connectie accepteren" + +#: ../../Zotlabs/Module/Connections.php:275 +#: ../../Zotlabs/Module/Admin/Accounts.php:171 +msgid "Approve" +msgstr "Goedkeuren" + +#: ../../Zotlabs/Module/Connections.php:276 +msgid "Ignore connection" +msgstr "Connectie negeren" + +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Recent activity" +msgstr "Recente activiteit" + +#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:211 +#: ../../include/nav.php:189 ../../include/text.php:916 +msgid "Connections" +msgstr "Connecties" + +#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44 +#: ../../Zotlabs/Lib/Apps.php:232 ../../include/nav.php:168 +#: ../../include/text.php:986 ../../include/text.php:998 +#: ../../include/acl_selectors.php:203 ../../include/widgets.php:315 +msgid "Search" +msgstr "Zoeken" + +#: ../../Zotlabs/Module/Connections.php:307 +msgid "Search your connections" +msgstr "Doorzoek jouw connecties" + +#: ../../Zotlabs/Module/Connections.php:308 +msgid "Connections search" +msgstr "Connecties zoeken" + +#: ../../Zotlabs/Module/Connections.php:309 +#: ../../Zotlabs/Module/Directory.php:391 +#: ../../Zotlabs/Module/Directory.php:396 ../../include/contact_widgets.php:23 +msgid "Find" +msgstr "Vinden" + +#: ../../Zotlabs/Module/Cover_photo.php:58 +#: ../../Zotlabs/Module/Profile_photo.php:61 +msgid "Image uploaded but image cropping failed." +msgstr "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. " + +#: ../../Zotlabs/Module/Cover_photo.php:134 +#: ../../Zotlabs/Module/Cover_photo.php:181 +msgid "Cover Photos" +msgstr "Omslagfoto's" + +#: ../../Zotlabs/Module/Cover_photo.php:154 +#: ../../Zotlabs/Module/Profile_photo.php:135 +msgid "Image resize failed." +msgstr "Afbeelding kon niet van grootte veranderd worden." + +#: ../../Zotlabs/Module/Cover_photo.php:168 +#: ../../Zotlabs/Module/Profile_photo.php:196 ../../include/photos.php:149 +msgid "Unable to process image" +msgstr "Afbeelding kan niet verwerkt worden" + +#: ../../Zotlabs/Module/Cover_photo.php:192 +#: ../../Zotlabs/Module/Profile_photo.php:231 +msgid "Image upload failed." +msgstr "Uploaden afbeelding mislukt" + +#: ../../Zotlabs/Module/Cover_photo.php:210 +#: ../../Zotlabs/Module/Profile_photo.php:250 +msgid "Unable to process image." +msgstr "Niet in staat om afbeelding te verwerken." + +#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4253 +msgid "female" +msgstr "vrouw" + +#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4254 #, php-format -msgid "Update %s was successfully applied." -msgstr "Update %s was geslaagd." +msgid "%1$s updated her %2$s" +msgstr "%1$s heeft haar %2$s bijgewerkt" -#: ../../Zotlabs/Module/Admin/Dbsync.php:36 +#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4255 +msgid "male" +msgstr "man" + +#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4256 #, php-format -msgid "Update %s did not return a status. Unknown if it succeeded." -msgstr "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is." +msgid "%1$s updated his %2$s" +msgstr "%1$s heeft zijn %2$s bijgewerkt" -#: ../../Zotlabs/Module/Admin/Dbsync.php:39 +#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4258 #, php-format -msgid "Update function %s could not be found." -msgstr "Update-functie %s kon niet gevonden worden." +msgid "%1$s updated their %2$s" +msgstr "De %2$s van %1$s is bijgewerkt" -#: ../../Zotlabs/Module/Admin/Dbsync.php:55 -msgid "No failed updates." -msgstr "Geen mislukte updates." +#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1677 +msgid "cover photo" +msgstr "omslagfoto" -#: ../../Zotlabs/Module/Admin/Dbsync.php:59 -msgid "Failed Updates" -msgstr "Mislukte updates" +#: ../../Zotlabs/Module/Cover_photo.php:303 +#: ../../Zotlabs/Module/Cover_photo.php:318 +#: ../../Zotlabs/Module/Profile_photo.php:311 +#: ../../Zotlabs/Module/Profile_photo.php:352 +msgid "Photo not available." +msgstr "Foto niet beschikbaar." -#: ../../Zotlabs/Module/Admin/Dbsync.php:61 -msgid "Mark success (if update was manually applied)" -msgstr "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)" +#: ../../Zotlabs/Module/Cover_photo.php:354 +#: ../../Zotlabs/Module/Profile_photo.php:407 +msgid "Upload File:" +msgstr "Bestand uploaden:" -#: ../../Zotlabs/Module/Admin/Dbsync.php:62 -msgid "Attempt to execute this update step automatically" -msgstr "Poging om deze stap van de update automatisch uit te voeren." +#: ../../Zotlabs/Module/Cover_photo.php:355 +#: ../../Zotlabs/Module/Profile_photo.php:408 +msgid "Select a profile:" +msgstr "Kies een profiel:" + +#: ../../Zotlabs/Module/Cover_photo.php:356 +msgid "Upload Cover Photo" +msgstr "Omslagfoto uploaden" + +#: ../../Zotlabs/Module/Cover_photo.php:361 +#: ../../Zotlabs/Module/Profile_photo.php:416 +#: ../../Zotlabs/Module/Settings/Channel.php:399 +msgid "or" +msgstr "of" + +#: ../../Zotlabs/Module/Cover_photo.php:361 +#: ../../Zotlabs/Module/Profile_photo.php:416 +msgid "skip this step" +msgstr "sla deze stap over" + +#: ../../Zotlabs/Module/Cover_photo.php:361 +#: ../../Zotlabs/Module/Profile_photo.php:416 +msgid "select a photo from your photo albums" +msgstr "Kies een foto uit jouw fotoalbums" + +#: ../../Zotlabs/Module/Cover_photo.php:377 +#: ../../Zotlabs/Module/Profile_photo.php:435 +msgid "Crop Image" +msgstr "Afbeelding bijsnijden" + +#: ../../Zotlabs/Module/Cover_photo.php:378 +#: ../../Zotlabs/Module/Profile_photo.php:436 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven." + +#: ../../Zotlabs/Module/Cover_photo.php:380 +#: ../../Zotlabs/Module/Profile_photo.php:438 +msgid "Done Editing" +msgstr "Klaar met bewerken" #: ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 @@ -922,8 +1706,20 @@ msgstr "Beheer - Extra functies" msgid "Log settings updated." msgstr "Logboek-instellingen bijgewerkt." -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1587 -#: ../../include/widgets.php:1597 +#: ../../Zotlabs/Module/Admin/Logs.php:82 +#: ../../Zotlabs/Module/Admin/Plugins.php:336 +#: ../../Zotlabs/Module/Admin/Plugins.php:427 +#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../Zotlabs/Module/Admin/Themes.php:120 +#: ../../Zotlabs/Module/Admin/Themes.php:154 +#: ../../Zotlabs/Module/Admin/Accounts.php:164 +#: ../../Zotlabs/Module/Admin/Channels.php:145 +#: ../../Zotlabs/Module/Admin/Site.php:258 ../../Zotlabs/Module/Admin.php:137 +msgid "Administration" +msgstr "Beheer" + +#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1588 +#: ../../include/widgets.php:1598 msgid "Logs" msgstr "Logboeken" @@ -952,8 +1748,8 @@ msgstr "Logniveau" #: ../../Zotlabs/Module/Admin/Plugins.php:254 #: ../../Zotlabs/Module/Admin/Themes.php:69 #: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Display.php:40 -#: ../../Zotlabs/Module/Admin.php:62 ../../Zotlabs/Module/Thing.php:89 -#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3427 +#: ../../Zotlabs/Module/Admin.php:60 ../../Zotlabs/Module/Thing.php:89 +#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3343 msgid "Item not found." msgstr "Item niet gevonden." @@ -978,7 +1774,7 @@ msgid "Enable" msgstr "Inschakelen" #: ../../Zotlabs/Module/Admin/Plugins.php:337 -#: ../../Zotlabs/Module/Admin/Plugins.php:428 ../../include/widgets.php:1565 +#: ../../Zotlabs/Module/Admin/Plugins.php:428 ../../include/widgets.php:1566 msgid "Plugins" msgstr "Plugins" @@ -988,8 +1784,8 @@ msgid "Toggle" msgstr "Omschakelen" #: ../../Zotlabs/Module/Admin/Plugins.php:339 -#: ../../Zotlabs/Module/Admin/Themes.php:123 ../../Zotlabs/Lib/Apps.php:216 -#: ../../include/nav.php:213 ../../include/widgets.php:680 +#: ../../Zotlabs/Module/Admin/Themes.php:123 ../../Zotlabs/Lib/Apps.php:218 +#: ../../include/nav.php:211 ../../include/widgets.php:680 msgid "Settings" msgstr "Instellingen" @@ -1052,17 +1848,21 @@ msgstr "Plugin-repository downloaden" msgid "Install new repo" msgstr "Nieuwe repository installeren" -#: ../../Zotlabs/Module/Admin/Plugins.php:413 ../../Zotlabs/Lib/Apps.php:334 +#: ../../Zotlabs/Module/Admin/Plugins.php:413 ../../Zotlabs/Lib/Apps.php:339 msgid "Install" msgstr "Installeren" #: ../../Zotlabs/Module/Admin/Plugins.php:414 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 -#: ../../Zotlabs/Module/Wiki.php:171 ../../Zotlabs/Module/Wiki.php:211 -#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 +#: ../../Zotlabs/Module/Wiki.php:238 ../../Zotlabs/Module/Wiki.php:261 #: ../../Zotlabs/Module/Settings/Oauth.php:88 #: ../../Zotlabs/Module/Settings/Oauth.php:114 -#: ../../include/conversation.php:1248 ../../include/conversation.php:1297 +#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 +#: ../../extend/addon/addon/friendica/dfrn_request.php:879 +#: ../../extend/addon/addon/js_upload/js_upload.php:46 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:866 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154 +#: ../../include/conversation.php:1246 ../../include/conversation.php:1295 msgid "Cancel" msgstr "Annuleren" @@ -1080,7 +1880,8 @@ msgstr "Nieuwe plugin-repository toevoegen" #: ../../Zotlabs/Module/Admin/Plugins.php:443 #: ../../Zotlabs/Module/Settings/Oauth.php:42 -#: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:334 +#: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:339 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152 msgid "Update" msgstr "Bijwerken" @@ -1090,6 +1891,7 @@ msgstr "Branch veranderen" #: ../../Zotlabs/Module/Admin/Plugins.php:445 #: ../../Zotlabs/Module/Photos.php:989 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../extend/addon/addon/superblock/superblock.php:114 msgid "Remove" msgstr "Verwijderen" @@ -1132,14 +1934,6 @@ msgstr "Helptekst" msgid "Additional info (optional)" msgstr "Extra informatie (optioneel)" -#: ../../Zotlabs/Module/Admin/Profs.php:74 -#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Filer.php:53 -#: ../../Zotlabs/Module/Rbmark.php:32 ../../Zotlabs/Module/Rbmark.php:104 -#: ../../include/text.php:972 ../../include/text.php:984 -#: ../../include/widgets.php:201 -msgid "Save" -msgstr "Opslaan" - #: ../../Zotlabs/Module/Admin/Profs.php:83 msgid "Field definition not found" msgstr "Velddefinitie niet gevonden" @@ -1148,7 +1942,7 @@ msgstr "Velddefinitie niet gevonden" msgid "Edit Profile Field" msgstr "Profielveld bewerken" -#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1568 +#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1569 msgid "Profile Fields" msgstr "Profielvelden" @@ -1228,7 +2022,7 @@ msgid "" "embedded content from that site is explicitly blocked." msgstr "Alle andere ingesloten (embedded) inhoud wordt gefilterd, <strong>tenzij</strong> ingesloten (embedded) inhoud van een website expliciet wordt geblokkeerd." -#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1563 +#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1564 msgid "Security" msgstr "Beveiliging" @@ -1316,1162 +2110,732 @@ msgstr "Eén website per regel. Standaard wordt ingesloten (embedded) inhoud gef msgid "Block embedded HTML from these domains" msgstr "Ingesloten (embedded) HTML vanaf deze domeinen blokkeren" -#: ../../Zotlabs/Module/Admin/Site.php:135 +#: ../../Zotlabs/Module/Admin/Themes.php:18 +msgid "Theme settings updated." +msgstr "Thema-instellingen bijgewerkt." + +#: ../../Zotlabs/Module/Admin/Themes.php:58 +msgid "No themes found." +msgstr "Geen thema's gevonden" + +#: ../../Zotlabs/Module/Admin/Themes.php:114 +msgid "Screenshot" +msgstr "Schermafdruk" + +#: ../../Zotlabs/Module/Admin/Themes.php:121 +#: ../../Zotlabs/Module/Admin/Themes.php:155 ../../include/widgets.php:1567 +msgid "Themes" +msgstr "Thema's" + +#: ../../Zotlabs/Module/Admin/Themes.php:160 +msgid "[Experimental]" +msgstr "[Experimenteel]" + +#: ../../Zotlabs/Module/Admin/Themes.php:161 +msgid "[Unsupported]" +msgstr "[Niet ondersteund]" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#, php-format +msgid "Password changed for account %d." +msgstr "Wachtwoord veranderd voor account %d." + +#: ../../Zotlabs/Module/Admin/Account_edit.php:46 +msgid "Account settings updated." +msgstr "Account-instellingen bijgewerkt." + +#: ../../Zotlabs/Module/Admin/Account_edit.php:61 +msgid "Account not found." +msgstr "Account niet gevonden." + +#: ../../Zotlabs/Module/Admin/Account_edit.php:68 +msgid "Account Edit" +msgstr "Account bewerken" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:69 +msgid "New Password" +msgstr "Nieuw wachtwoord" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:70 +msgid "New Password again" +msgstr "Nieuw wachtwoord bevestigen" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:71 +msgid "Technical skill level" +msgstr "Technisch niveau" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:72 +msgid "Account language (for emails)" +msgstr "Taal van account (voor e-mails)" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:73 +msgid "Service class" +msgstr "Abonnement" + +#: ../../Zotlabs/Module/Admin/Accounts.php:36 +#, php-format +msgid "%s account blocked/unblocked" +msgid_plural "%s account blocked/unblocked" +msgstr[0] "%s account geblokkeerd/gedeblokkeerd" +msgstr[1] "%s accounts geblokkeerd/gedeblokkeerd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:43 +#, php-format +msgid "%s account deleted" +msgid_plural "%s accounts deleted" +msgstr[0] "%s account verwijderd" +msgstr[1] "%s accounts verwijderd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:79 +msgid "Account not found" +msgstr "Account niet gevonden" + +#: ../../Zotlabs/Module/Admin/Accounts.php:90 +#, php-format +msgid "Account '%s' deleted" +msgstr "Account '%s' verwijderd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:98 +#, php-format +msgid "Account '%s' blocked" +msgstr "Account '%s' geblokkeerd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:106 +#, php-format +msgid "Account '%s' unblocked" +msgstr "Account '%s' gedeblokkeerd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:165 +#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1562 +msgid "Accounts" +msgstr "Accounts" + +#: ../../Zotlabs/Module/Admin/Accounts.php:167 +#: ../../Zotlabs/Module/Admin/Channels.php:148 +msgid "select all" +msgstr "alles selecteren" + +#: ../../Zotlabs/Module/Admin/Accounts.php:168 +msgid "Registrations waiting for confirm" +msgstr "Accounts die op goedkeuring wachten" + +#: ../../Zotlabs/Module/Admin/Accounts.php:169 +msgid "Request date" +msgstr "Tijd/datum verzoek" + +#: ../../Zotlabs/Module/Admin/Accounts.php:169 +#: ../../Zotlabs/Module/Admin/Accounts.php:181 +#: ../../extend/addon/addon/redred/redred.php:107 +#: ../../extend/addon/addon/rtof/rtof.php:93 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140 +#: ../../extend/addon/addon/openid/MysqlProvider.php:56 +#: ../../extend/addon/addon/openid/MysqlProvider.php:57 +#: ../../include/network.php:2237 +msgid "Email" +msgstr "E-mail" + +#: ../../Zotlabs/Module/Admin/Accounts.php:170 +msgid "No registrations." +msgstr "Geen verzoeken." + +#: ../../Zotlabs/Module/Admin/Accounts.php:172 +msgid "Deny" +msgstr "Afkeuren" + +#: ../../Zotlabs/Module/Admin/Accounts.php:180 +msgid "ID" +msgstr "ID" + +#: ../../Zotlabs/Module/Admin/Accounts.php:182 ../../include/group.php:267 +msgid "All Channels" +msgstr "Alle kanalen" + +#: ../../Zotlabs/Module/Admin/Accounts.php:183 +msgid "Register date" +msgstr "Geregistreerd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:184 +msgid "Last login" +msgstr "Laatste keer ingelogd" + +#: ../../Zotlabs/Module/Admin/Accounts.php:185 +msgid "Expires" +msgstr "Verloopt" + +#: ../../Zotlabs/Module/Admin/Accounts.php:186 +msgid "Service Class" +msgstr "Abonnement" + +#: ../../Zotlabs/Module/Admin/Accounts.php:188 +msgid "" +"Selected accounts will be deleted!\\n\\nEverything these accounts had posted" +" on this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?" + +#: ../../Zotlabs/Module/Admin/Accounts.php:189 +msgid "" +"The account {0} will be deleted!\\n\\nEverything this account has posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?" + +#: ../../Zotlabs/Module/Admin/Channels.php:31 +#, php-format +msgid "%s channel censored/uncensored" +msgid_plural "%s channels censored/uncensored" +msgstr[0] "%s kanaal gecensureerd/ongecensureerd" +msgstr[1] "%s kanalen gecensureerd/ongecensureerd" + +#: ../../Zotlabs/Module/Admin/Channels.php:40 +#, php-format +msgid "%s channel code allowed/disallowed" +msgid_plural "%s channels code allowed/disallowed" +msgstr[0] "Scripts toegestaan/niet toegestaan voor %s kanaal" +msgstr[1] "Scripts toegestaan/niet toegestaan voor %s kanalen" + +#: ../../Zotlabs/Module/Admin/Channels.php:46 +#, php-format +msgid "%s channel deleted" +msgid_plural "%s channels deleted" +msgstr[0] "%s kanaal verwijderd" +msgstr[1] "%s kanalen verwijderd" + +#: ../../Zotlabs/Module/Admin/Channels.php:65 +msgid "Channel not found" +msgstr "Kanaal niet gevonden" + +#: ../../Zotlabs/Module/Admin/Channels.php:75 +#, php-format +msgid "Channel '%s' deleted" +msgstr "Kanaal '%s' verwijderd" + +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' censored" +msgstr "Kanaal '%s' gecensureerd" + +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' uncensored" +msgstr "Kanaal '%s' ongecensureerd" + +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code allowed" +msgstr "Scripts toegestaan voor kanaal '%s'" + +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code disallowed" +msgstr "Scripts niet toegestaan voor kanaal '%s'" + +#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1563 +msgid "Channels" +msgstr "Kanalen" + +#: ../../Zotlabs/Module/Admin/Channels.php:150 +msgid "Censor" +msgstr "Censureren" + +#: ../../Zotlabs/Module/Admin/Channels.php:151 +msgid "Uncensor" +msgstr "Niet censureren" + +#: ../../Zotlabs/Module/Admin/Channels.php:152 +msgid "Allow Code" +msgstr "Scripts toestaan" + +#: ../../Zotlabs/Module/Admin/Channels.php:153 +msgid "Disallow Code" +msgstr "Scripts niet toestaan" + +#: ../../Zotlabs/Module/Admin/Channels.php:154 +#: ../../include/conversation.php:1653 +msgid "Channel" +msgstr "Kanaal" + +#: ../../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 "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?" + +#: ../../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 "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:19 +msgid "Update has been marked successful" +msgstr "Update is als succesvol gemarkeerd" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:29 +#, php-format +msgid "Executing %s failed. Check system logs." +msgstr "Uitvoeren van %s is mislukt. Controleer systeemlogboek." + +#: ../../Zotlabs/Module/Admin/Dbsync.php:32 +#, php-format +msgid "Update %s was successfully applied." +msgstr "Update %s was geslaagd." + +#: ../../Zotlabs/Module/Admin/Dbsync.php:36 +#, php-format +msgid "Update %s did not return a status. Unknown if it succeeded." +msgstr "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is." + +#: ../../Zotlabs/Module/Admin/Dbsync.php:39 +#, php-format +msgid "Update function %s could not be found." +msgstr "Update-functie %s kon niet gevonden worden." + +#: ../../Zotlabs/Module/Admin/Dbsync.php:55 +msgid "No failed updates." +msgstr "Geen mislukte updates." + +#: ../../Zotlabs/Module/Admin/Dbsync.php:59 +msgid "Failed Updates" +msgstr "Mislukte updates" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:61 +msgid "Mark success (if update was manually applied)" +msgstr "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:62 +msgid "Attempt to execute this update step automatically" +msgstr "Poging om deze stap van de update automatisch uit te voeren." + +#: ../../Zotlabs/Module/Admin/Site.php:133 msgid "Site settings updated." msgstr "Hub-instellingen bijgewerkt." -#: ../../Zotlabs/Module/Admin/Site.php:162 ../../include/text.php:2942 +#: ../../Zotlabs/Module/Admin/Site.php:159 ../../include/text.php:2918 msgid "Default" msgstr "Standaard" -#: ../../Zotlabs/Module/Admin/Site.php:172 -#: ../../Zotlabs/Module/Settings/Display.php:141 +#: ../../Zotlabs/Module/Admin/Site.php:169 +#: ../../Zotlabs/Module/Settings/Display.php:143 msgid "mobile" msgstr "mobiel" -#: ../../Zotlabs/Module/Admin/Site.php:174 +#: ../../Zotlabs/Module/Admin/Site.php:171 msgid "experimental" msgstr "experimenteel" -#: ../../Zotlabs/Module/Admin/Site.php:176 +#: ../../Zotlabs/Module/Admin/Site.php:173 msgid "unsupported" msgstr "Niet ondersteund" -#: ../../Zotlabs/Module/Admin/Site.php:221 -#: ../../Zotlabs/Module/Connedit.php:408 ../../Zotlabs/Module/Connedit.php:686 -#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157 -#: ../../Zotlabs/Module/Api.php:85 ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Photos.php:653 ../../Zotlabs/Module/Events.php:462 -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:472 -#: ../../Zotlabs/Module/Settings/Channel.php:289 -#: ../../Zotlabs/Module/Settings/Display.php:101 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -#: ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1743 -msgid "No" -msgstr "Nee" - -#: ../../Zotlabs/Module/Admin/Site.php:222 +#: ../../Zotlabs/Module/Admin/Site.php:219 msgid "Yes - with approval" msgstr "Ja - met goedkeuring" -#: ../../Zotlabs/Module/Admin/Site.php:223 -#: ../../Zotlabs/Module/Connedit.php:408 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Api.php:84 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Photos.php:653 ../../Zotlabs/Module/Events.php:462 -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:472 -#: ../../Zotlabs/Module/Settings/Channel.php:289 -#: ../../Zotlabs/Module/Settings/Display.php:101 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -#: ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1743 -msgid "Yes" -msgstr "Ja" - -#: ../../Zotlabs/Module/Admin/Site.php:228 +#: ../../Zotlabs/Module/Admin/Site.php:225 msgid "My site is not a public server" msgstr "Mijn $Projectname-hub is niet openbaar" -#: ../../Zotlabs/Module/Admin/Site.php:229 +#: ../../Zotlabs/Module/Admin/Site.php:226 msgid "My site has paid access only" msgstr "Mijn $Projectname-hub kent alleen betaalde toegang" -#: ../../Zotlabs/Module/Admin/Site.php:230 +#: ../../Zotlabs/Module/Admin/Site.php:227 msgid "My site has free access only" msgstr "Mijn $Projectname-hub kent alleen gratis toegang" -#: ../../Zotlabs/Module/Admin/Site.php:231 +#: ../../Zotlabs/Module/Admin/Site.php:228 msgid "My site offers free accounts with optional paid upgrades" msgstr "Mijn $Projectname-hub biedt gratis accounts aan met betaalde uitbreidingen als optie" -#: ../../Zotlabs/Module/Admin/Site.php:242 ../../Zotlabs/Module/Setup.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:239 ../../Zotlabs/Module/Setup.php:328 msgid "Basic/Minimal Social Networking" msgstr "Basic/eenvoudig sociaal netwerk" -#: ../../Zotlabs/Module/Admin/Site.php:243 ../../Zotlabs/Module/Setup.php:337 +#: ../../Zotlabs/Module/Admin/Site.php:240 ../../Zotlabs/Module/Setup.php:329 msgid "Standard Configuration (default)" msgstr "Standaard (standaard)" -#: ../../Zotlabs/Module/Admin/Site.php:244 ../../Zotlabs/Module/Setup.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:241 ../../Zotlabs/Module/Setup.php:330 msgid "Professional" msgstr "Professioneel " -#: ../../Zotlabs/Module/Admin/Site.php:249 -#: ../../Zotlabs/Module/Settings/Account.php:105 +#: ../../Zotlabs/Module/Admin/Site.php:245 ../../Zotlabs/Lib/Techlevels.php:10 msgid "Beginner/Basic" msgstr "Beginner/basic" -#: ../../Zotlabs/Module/Admin/Site.php:250 -#: ../../Zotlabs/Module/Settings/Account.php:106 +#: ../../Zotlabs/Module/Admin/Site.php:246 ../../Zotlabs/Lib/Techlevels.php:11 msgid "Novice - not skilled but willing to learn" msgstr "Onervaren - niet bekwaam, maar wil graag leren" -#: ../../Zotlabs/Module/Admin/Site.php:251 -#: ../../Zotlabs/Module/Settings/Account.php:107 +#: ../../Zotlabs/Module/Admin/Site.php:247 ../../Zotlabs/Lib/Techlevels.php:12 msgid "Intermediate - somewhat comfortable" msgstr "Ervaren - voelt zich enigszins comfortabel" -#: ../../Zotlabs/Module/Admin/Site.php:252 -#: ../../Zotlabs/Module/Settings/Account.php:108 +#: ../../Zotlabs/Module/Admin/Site.php:248 ../../Zotlabs/Lib/Techlevels.php:13 msgid "Advanced - very comfortable" msgstr "Gevorderd - voelt zich comfortabel" -#: ../../Zotlabs/Module/Admin/Site.php:253 -#: ../../Zotlabs/Module/Settings/Account.php:109 +#: ../../Zotlabs/Module/Admin/Site.php:249 ../../Zotlabs/Lib/Techlevels.php:14 msgid "Expert - I can write computer code" msgstr "Expert - kan programmeren" -#: ../../Zotlabs/Module/Admin/Site.php:254 -#: ../../Zotlabs/Module/Settings/Account.php:110 +#: ../../Zotlabs/Module/Admin/Site.php:250 ../../Zotlabs/Lib/Techlevels.php:15 msgid "Wizard - I probably know more than you do" msgstr "Tovenaar - ik weet waarschijnlijk meer dan jij" -#: ../../Zotlabs/Module/Admin/Site.php:266 ../../include/widgets.php:1560 +#: ../../Zotlabs/Module/Admin/Site.php:259 ../../include/widgets.php:1561 msgid "Site" msgstr "Hub-instellingen" -#: ../../Zotlabs/Module/Admin/Site.php:268 -#: ../../Zotlabs/Module/Register.php:253 -msgid "Registration" -msgstr "Registratie" - -#: ../../Zotlabs/Module/Admin/Site.php:269 +#: ../../Zotlabs/Module/Admin/Site.php:262 msgid "File upload" msgstr "Bestand uploaden" -#: ../../Zotlabs/Module/Admin/Site.php:270 +#: ../../Zotlabs/Module/Admin/Site.php:263 msgid "Policies" msgstr "Beleid" -#: ../../Zotlabs/Module/Admin/Site.php:271 +#: ../../Zotlabs/Module/Admin/Site.php:264 #: ../../include/contact_widgets.php:16 msgid "Advanced" msgstr "Geavanceerd" -#: ../../Zotlabs/Module/Admin/Site.php:275 +#: ../../Zotlabs/Module/Admin/Site.php:268 +#: ../../extend/addon/addon/statusnet/statusnet.php:890 msgid "Site name" -msgstr "Naam van deze $Projectname-hub" +msgstr "Hubnaam" -#: ../../Zotlabs/Module/Admin/Site.php:277 ../../Zotlabs/Module/Setup.php:359 +#: ../../Zotlabs/Module/Admin/Site.php:270 ../../Zotlabs/Module/Setup.php:351 msgid "Server Configuration/Role" msgstr "Configuratietype hub" -#: ../../Zotlabs/Module/Admin/Site.php:279 +#: ../../Zotlabs/Module/Admin/Site.php:272 msgid "Site default technical skill level" msgstr "Standaard technisch niveau voor deze hub" -#: ../../Zotlabs/Module/Admin/Site.php:279 +#: ../../Zotlabs/Module/Admin/Site.php:272 msgid "Used to provide a member experience matched to technical comfort level" msgstr "Wordt gebruikt om leden een gebruikerservaring te bieden die met hun technisch niveau overeenkomt" -#: ../../Zotlabs/Module/Admin/Site.php:281 +#: ../../Zotlabs/Module/Admin/Site.php:274 msgid "Lock the technical skill level setting" msgstr "Vergrendel de functie 'Standaard technisch niveau voor deze hub'" -#: ../../Zotlabs/Module/Admin/Site.php:281 +#: ../../Zotlabs/Module/Admin/Site.php:274 msgid "Members can set their own technical comfort level by default" msgstr "Leden kunnen hun eigen technisch niveau standaard instellen" -#: ../../Zotlabs/Module/Admin/Site.php:284 +#: ../../Zotlabs/Module/Admin/Site.php:276 msgid "Banner/Logo" msgstr "Banner/logo" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "Administrator Information" msgstr "Informatie over de beheerder" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden." -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:278 +#: ../../Zotlabs/Module/Siteinfo.php:23 +msgid "Site Information" +msgstr "Hub-informatie" + +#: ../../Zotlabs/Module/Admin/Site.php:278 +msgid "" +"Publicly visible description of this site. Displayed on siteinfo page. " +"BBCode can be used here" +msgstr "Openbaar zichtbare beschrijving van deze hub. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden." + +#: ../../Zotlabs/Module/Admin/Site.php:279 msgid "System language" msgstr "Standaardtaal" -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:280 msgid "System theme" msgstr "Standaardthema" -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:280 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Standaardthema voor $Projectname-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "Mobile system theme" msgstr "Standaardthema voor mobiel" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "Theme for mobile devices" msgstr "Thema voor mobiele apparaten" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "Allow Feeds as Connections" msgstr "Sta feeds toe als connecties" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "(Heavy system resource usage)" msgstr "(sterk negatieve invloed op systeembronnen hub)" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:284 msgid "Maximum image size" msgstr "Maximale grootte van afbeeldingen" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:284 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend." -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:285 msgid "Does this site allow new member registration?" msgstr "Staat deze hub nieuwe accounts toe?" -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:286 msgid "Invitation only" msgstr "Alleen op uitnodiging" -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:286 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "Sta alleen nieuwe registraties toe van mensen die een uitnodigingscode hebben. Bovenstaand accountbeleid moet op Ja staan." -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:287 msgid "Which best describes the types of account offered by this hub?" msgstr "Wat voor soort accounts biedt deze $Projectname-hub aan? Kies wat het meest in de buurt komt." -#: ../../Zotlabs/Module/Admin/Site.php:295 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Register text" msgstr "Tekst tijdens registratie" -#: ../../Zotlabs/Module/Admin/Site.php:295 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Will be displayed prominently on the registration page." msgstr "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond." -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "Site homepage to show visitors (default: login box)" msgstr "Homepagina van deze hub die aan bezoekers wordt getoond (standaard: inlogformulier)" -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "" "example: 'public' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "voorbeeld: 'public' om de openbare stream te tonen, 'page/sys/home' om de webpagina 'home' van het systeemkanaal te tonen of 'include:home.html' om een gewoon bestand te gebruiken." -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "Preserve site homepage URL" msgstr "Behoudt de URL van de hub (/)" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Toon de homepagina van de hub in een frame op de oorspronkelijke locatie (/), i.p.v. een doorverwijzing naar een andere locatie (bv. .../home.html)" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "Accounts abandoned after x days" msgstr "Accounts als verlaten beschouwen na zoveel aantal dagen:" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet." -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "Allowed friend domains" msgstr "Toegestane domeinen" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze $Projectname-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten." -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "Verify Email Addresses" msgstr "E-mailadres verifieren" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen)." -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "Force publish" msgstr "Dwing kanaalvermelding af" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld." -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "Import Public Streams" msgstr "Openbare streams importeren" -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "Toegang verlenen tot openbare berichten die vanuit andere hubs worden geïmporteerd. Waarschuwing: de inhoud van deze berichten wordt niet gemodereerd." -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "Login on Homepage" msgstr "Inlogformulier op de homepagina" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Toon een inlogformulier voor bezoekers op de homepagina wanneer geen andere inhoud is geconfigureerd. " -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Enable context help" msgstr "Schakel contextuele hulp in" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "" "Display contextual help for the current page when the help button is " "pressed." msgstr "Toon hulp en documentatie voor de op dat moment getoonde pagina, wanneer op de hulp-knop wordt geklikt." -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Directory Server URL" msgstr "Server-URL voor de kanalengids" -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Default directory server" msgstr "Standaardserver voor de kanalengids" -#: ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "Proxy user" msgstr "Gebruikersnaam proxy" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:302 msgid "Proxy URL" msgstr "Proxy-URL" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Network timeout" msgstr "Netwerktimeout" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)" -#: ../../Zotlabs/Module/Admin/Site.php:311 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "Delivery interval" msgstr "Afleveringsinterval" -#: ../../Zotlabs/Module/Admin/Site.php:311 +#: ../../Zotlabs/Module/Admin/Site.php:304 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 "Vertraag de achtergrondprocessen voor het afleveren met een aantal seconden om de systeembelasting te verminderen. Aanbevolen: 4-5 voor shared hosts, 2-3 voor virtual private servers (VPS) en 0-1 voor grote dedicated servers." -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "Deliveries per process" msgstr "Leveringen per serverproces" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust" " if necessary to tune system performance. Recommend: 1-5." msgstr "Aantal leveringen die aan één serverproces worden meegegeven. Pas dit aan wanneer het nodig is om systeemprestaties te verbeteren. Aangeraden: 1-5" -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Poll interval" msgstr "Poll-interval" -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "De achtergrondprocessen voor het afleveren met zoveel seconden vertragen om de systeembelasting te verminderen. 0 om de afleveringsinterval te gebruiken." -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Maximum Load Average" msgstr "Maximaal gemiddelde systeembelasting" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50." -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Expiration period in days for imported (grid/network) content" msgstr "Aantal dagen waarna geïmporteerde inhoud uit iemands grid/netwerk-pagina wordt verwijderd." -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "0 for no expiration of imported content" msgstr "Dit geldt alleen voor inhoud van andere kanalen, dus niet voor iemands eigen kanaal. 0 voor het niet verwijderen van geïmporteerde inhoud." -#: ../../Zotlabs/Module/Admin/Themes.php:18 -msgid "Theme settings updated." -msgstr "Thema-instellingen bijgewerkt." - -#: ../../Zotlabs/Module/Admin/Themes.php:58 -msgid "No themes found." -msgstr "Geen thema's gevonden" - -#: ../../Zotlabs/Module/Admin/Themes.php:114 -msgid "Screenshot" -msgstr "Schermafdruk" - -#: ../../Zotlabs/Module/Admin/Themes.php:121 -#: ../../Zotlabs/Module/Admin/Themes.php:155 ../../include/widgets.php:1566 -msgid "Themes" -msgstr "Thema's" - -#: ../../Zotlabs/Module/Admin/Themes.php:160 -msgid "[Experimental]" -msgstr "[Experimenteel]" - -#: ../../Zotlabs/Module/Admin/Themes.php:161 -msgid "[Unsupported]" -msgstr "[Niet ondersteund]" - -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:222 -#: ../../include/nav.php:95 ../../include/conversation.php:1672 -msgid "Photos" -msgstr "Foto's" - -#: ../../Zotlabs/Module/Page.php:40 ../../Zotlabs/Module/Block.php:31 -msgid "Invalid item." -msgstr "Ongeldig item." - -#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Block.php:43 -#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Wall_upload.php:33 -msgid "Channel not found." -msgstr "Kanaal niet gevonden." - -#: ../../Zotlabs/Module/Page.php:131 -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/Filer.php:52 -msgid "Save to Folder:" -msgstr "Bewaar in map: " - -#: ../../Zotlabs/Module/Filer.php:52 -msgid "- select -" -msgstr "- kies map -" - -#: ../../Zotlabs/Module/Mail.php:38 -msgid "Unable to lookup recipient." -msgstr "Niet in staat om ontvanger op te zoeken." - -#: ../../Zotlabs/Module/Mail.php:45 -msgid "Unable to communicate with requested channel." -msgstr "Niet in staat om met het aangevraagde kanaal te communiceren." - -#: ../../Zotlabs/Module/Mail.php:52 -msgid "Cannot verify requested channel." -msgstr "Kan opgevraagd kanaal niet verifieren" - -#: ../../Zotlabs/Module/Mail.php:70 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt." - -#: ../../Zotlabs/Module/Mail.php:135 -msgid "Messages" -msgstr "Berichten" - -#: ../../Zotlabs/Module/Mail.php:170 -msgid "Message recalled." -msgstr "Bericht ingetrokken." - -#: ../../Zotlabs/Module/Mail.php:183 -msgid "Conversation removed." -msgstr "Conversatie verwijderd" - -#: ../../Zotlabs/Module/Mail.php:197 ../../Zotlabs/Module/Mail.php:306 -#: ../../Zotlabs/Module/Chat.php:205 ../../include/conversation.php:1184 -msgid "Please enter a link URL:" -msgstr "Vul een URL in:" - -#: ../../Zotlabs/Module/Mail.php:198 ../../Zotlabs/Module/Mail.php:307 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "Verloopt op DD-MM-YYYY om HH:MM" - -#: ../../Zotlabs/Module/Mail.php:226 -msgid "Requested channel is not in this network" -msgstr "Opgevraagd kanaal is niet in dit netwerk beschikbaar" - -#: ../../Zotlabs/Module/Mail.php:234 -msgid "Send Private Message" -msgstr "Privébericht versturen" - -#: ../../Zotlabs/Module/Mail.php:235 ../../Zotlabs/Module/Mail.php:360 -msgid "To:" -msgstr "Aan:" - -#: ../../Zotlabs/Module/Mail.php:238 ../../Zotlabs/Module/Mail.php:362 -msgid "Subject:" -msgstr "Onderwerp:" - -#: ../../Zotlabs/Module/Mail.php:241 ../../Zotlabs/Module/Invite.php:135 -msgid "Your message:" -msgstr "Jouw bericht:" - -#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368 -#: ../../include/conversation.php:1244 -msgid "Attach file" -msgstr "Bestand toevoegen" - -#: ../../Zotlabs/Module/Mail.php:244 ../../Zotlabs/Module/Mail.php:369 -#: ../../Zotlabs/Module/Editblock.php:111 -#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Chat.php:207 -#: ../../include/conversation.php:1149 -msgid "Insert web link" -msgstr "Weblink invoegen" - -#: ../../Zotlabs/Module/Mail.php:245 -msgid "Send" -msgstr "Verzenden" - -#: ../../Zotlabs/Module/Mail.php:248 ../../Zotlabs/Module/Mail.php:373 -#: ../../include/conversation.php:1289 -msgid "Set expiration date" -msgstr "Verloopdatum instellen" - -#: ../../Zotlabs/Module/Mail.php:250 ../../Zotlabs/Module/Mail.php:375 -#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Lib/ThreadItem.php:737 -#: ../../include/conversation.php:1294 -msgid "Encrypt text" -msgstr "Tekst versleutelen" - -#: ../../Zotlabs/Module/Mail.php:332 -msgid "Delete message" -msgstr "Bericht verwijderen" - -#: ../../Zotlabs/Module/Mail.php:333 -msgid "Delivery report" -msgstr "Afleveringsrapport" - -#: ../../Zotlabs/Module/Mail.php:334 -msgid "Recall message" -msgstr "Bericht intrekken" - -#: ../../Zotlabs/Module/Mail.php:336 -msgid "Message has been recalled." -msgstr "Bericht is ingetrokken." - -#: ../../Zotlabs/Module/Mail.php:353 -msgid "Delete Conversation" -msgstr "Verwijder conversatie" - -#: ../../Zotlabs/Module/Mail.php:355 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." -msgstr "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender." - -#: ../../Zotlabs/Module/Mail.php:359 -msgid "Send Reply" -msgstr "Antwoord versturen" - -#: ../../Zotlabs/Module/Mail.php:364 -#, php-format -msgid "Your message for %s (%s):" -msgstr "Jouw privébericht aan %s (%s):" - -#: ../../Zotlabs/Module/Connections.php:56 -#: ../../Zotlabs/Module/Connections.php:161 -#: ../../Zotlabs/Module/Connections.php:242 -msgid "Blocked" -msgstr "Geblokkeerd" - -#: ../../Zotlabs/Module/Connections.php:61 -#: ../../Zotlabs/Module/Connections.php:168 -#: ../../Zotlabs/Module/Connections.php:241 -msgid "Ignored" -msgstr "Genegeerd" - -#: ../../Zotlabs/Module/Connections.php:66 -#: ../../Zotlabs/Module/Connections.php:182 -#: ../../Zotlabs/Module/Connections.php:240 -msgid "Hidden" -msgstr "Verborgen" - -#: ../../Zotlabs/Module/Connections.php:71 -#: ../../Zotlabs/Module/Connections.php:175 -#: ../../Zotlabs/Module/Connections.php:239 -msgid "Archived" -msgstr "Gearchiveerd" - -#: ../../Zotlabs/Module/Connections.php:76 -#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116 -#: ../../include/conversation.php:1573 -msgid "New" -msgstr "Nieuw" - -#: ../../Zotlabs/Module/Connections.php:92 -#: ../../Zotlabs/Module/Connections.php:107 -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/widgets.php:533 -msgid "All" -msgstr "Alles" - -#: ../../Zotlabs/Module/Connections.php:138 -msgid "New Connections" -msgstr "Nieuwe connecties" - -#: ../../Zotlabs/Module/Connections.php:141 -msgid "Show pending (new) connections" -msgstr "Nog te accepteren (nieuwe) connecties weergeven" - -#: ../../Zotlabs/Module/Connections.php:145 -#: ../../Zotlabs/Module/Profperm.php:144 -msgid "All Connections" -msgstr "Alle connecties" - -#: ../../Zotlabs/Module/Connections.php:148 -msgid "Show all connections" -msgstr "Toon alle connecties" - -#: ../../Zotlabs/Module/Connections.php:164 -msgid "Only show blocked connections" -msgstr "Toon alleen geblokkeerde connecties" - -#: ../../Zotlabs/Module/Connections.php:171 -msgid "Only show ignored connections" -msgstr "Toon alleen genegeerde connecties" - -#: ../../Zotlabs/Module/Connections.php:178 -msgid "Only show archived connections" -msgstr "Toon alleen gearchiveerde connecties" - -#: ../../Zotlabs/Module/Connections.php:185 -msgid "Only show hidden connections" -msgstr "Toon alleen verborgen connecties" - -#: ../../Zotlabs/Module/Connections.php:238 -msgid "Pending approval" -msgstr "Moet nog geaccepteerd worden" - -#: ../../Zotlabs/Module/Connections.php:254 -#, php-format -msgid "%1$s [%2$s]" -msgstr "%1$s [%2$s]" - -#: ../../Zotlabs/Module/Connections.php:255 -msgid "Edit connection" -msgstr "Connectie bewerken" - -#: ../../Zotlabs/Module/Connections.php:256 -msgid "Delete connection" -msgstr "Connectie verwijderen" - -#: ../../Zotlabs/Module/Connections.php:265 -msgid "Channel address" -msgstr "Kanaaladres" - -#: ../../Zotlabs/Module/Connections.php:267 -msgid "Network" -msgstr "Netwerk" - -#: ../../Zotlabs/Module/Connections.php:270 -msgid "Status" -msgstr "Status" - -#: ../../Zotlabs/Module/Connections.php:272 -msgid "Connected" -msgstr "Verbonden" - -#: ../../Zotlabs/Module/Connections.php:274 -msgid "Approve connection" -msgstr "Connectie accepteren" - -#: ../../Zotlabs/Module/Connections.php:276 -msgid "Ignore connection" -msgstr "Connectie negeren" - -#: ../../Zotlabs/Module/Connections.php:277 -#: ../../Zotlabs/Module/Connedit.php:583 -#: ../../Zotlabs/Module/Notifications.php:55 -msgid "Ignore" -msgstr "Negeren" - -#: ../../Zotlabs/Module/Connections.php:278 -msgid "Recent activity" -msgstr "Recente activiteit" - -#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:209 -#: ../../include/text.php:901 ../../include/nav.php:191 -msgid "Connections" -msgstr "Connecties" - -#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44 -#: ../../Zotlabs/Lib/Apps.php:230 ../../include/text.php:971 -#: ../../include/text.php:983 ../../include/acl_selectors.php:174 -#: ../../include/nav.php:170 ../../include/widgets.php:315 -msgid "Search" -msgstr "Zoeken" - -#: ../../Zotlabs/Module/Connections.php:307 -msgid "Search your connections" -msgstr "Doorzoek jouw connecties" - -#: ../../Zotlabs/Module/Connections.php:308 -msgid "Connections search" -msgstr "Connecties zoeken" - -#: ../../Zotlabs/Module/Connections.php:309 -#: ../../Zotlabs/Module/Directory.php:388 -#: ../../Zotlabs/Module/Directory.php:393 ../../include/contact_widgets.php:23 -msgid "Find" -msgstr "Vinden" - -#: ../../Zotlabs/Module/Cover_photo.php:58 -#: ../../Zotlabs/Module/Profile_photo.php:61 -msgid "Image uploaded but image cropping failed." -msgstr "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. " - -#: ../../Zotlabs/Module/Cover_photo.php:134 -#: ../../Zotlabs/Module/Cover_photo.php:181 -msgid "Cover Photos" -msgstr "Omslagfoto's" - -#: ../../Zotlabs/Module/Cover_photo.php:154 -#: ../../Zotlabs/Module/Profile_photo.php:135 -msgid "Image resize failed." -msgstr "Afbeelding kon niet van grootte veranderd worden." - -#: ../../Zotlabs/Module/Cover_photo.php:168 -#: ../../Zotlabs/Module/Profile_photo.php:196 ../../include/photos.php:148 -msgid "Unable to process image" -msgstr "Afbeelding kan niet verwerkt worden" - -#: ../../Zotlabs/Module/Cover_photo.php:192 -#: ../../Zotlabs/Module/Profile_photo.php:223 -msgid "Image upload failed." -msgstr "Uploaden afbeelding mislukt" - -#: ../../Zotlabs/Module/Cover_photo.php:210 -#: ../../Zotlabs/Module/Profile_photo.php:242 -msgid "Unable to process image." -msgstr "Niet in staat om afbeelding te verwerken." - -#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4341 -msgid "female" -msgstr "vrouw" - -#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4342 -#, php-format -msgid "%1$s updated her %2$s" -msgstr "%1$s heeft haar %2$s bijgewerkt" - -#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4343 -msgid "male" -msgstr "man" - -#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4344 -#, php-format -msgid "%1$s updated his %2$s" -msgstr "%1$s heeft zijn %2$s bijgewerkt" - -#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4346 -#, php-format -msgid "%1$s updated their %2$s" -msgstr "De %2$s van %1$s is bijgewerkt" - -#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1731 -msgid "cover photo" -msgstr "omslagfoto" - -#: ../../Zotlabs/Module/Cover_photo.php:303 -#: ../../Zotlabs/Module/Cover_photo.php:318 -#: ../../Zotlabs/Module/Profile_photo.php:300 -#: ../../Zotlabs/Module/Profile_photo.php:341 -msgid "Photo not available." -msgstr "Foto niet beschikbaar." - -#: ../../Zotlabs/Module/Cover_photo.php:354 -#: ../../Zotlabs/Module/Profile_photo.php:387 -msgid "Upload File:" -msgstr "Bestand uploaden:" - -#: ../../Zotlabs/Module/Cover_photo.php:355 -#: ../../Zotlabs/Module/Profile_photo.php:388 -msgid "Select a profile:" -msgstr "Kies een profiel:" - -#: ../../Zotlabs/Module/Cover_photo.php:356 -msgid "Upload Cover Photo" -msgstr "Omslagfoto uploaden" - -#: ../../Zotlabs/Module/Cover_photo.php:361 -#: ../../Zotlabs/Module/Profile_photo.php:396 -#: ../../Zotlabs/Module/Settings/Channel.php:399 -msgid "or" -msgstr "of" - -#: ../../Zotlabs/Module/Cover_photo.php:361 -#: ../../Zotlabs/Module/Profile_photo.php:396 -msgid "skip this step" -msgstr "sla deze stap over" - -#: ../../Zotlabs/Module/Cover_photo.php:361 -#: ../../Zotlabs/Module/Profile_photo.php:396 -msgid "select a photo from your photo albums" -msgstr "Kies een foto uit jouw fotoalbums" - -#: ../../Zotlabs/Module/Cover_photo.php:377 -#: ../../Zotlabs/Module/Profile_photo.php:415 -msgid "Crop Image" -msgstr "Afbeelding bijsnijden" - -#: ../../Zotlabs/Module/Cover_photo.php:378 -#: ../../Zotlabs/Module/Profile_photo.php:416 -msgid "Please adjust the image cropping for optimum viewing." -msgstr "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven." - -#: ../../Zotlabs/Module/Cover_photo.php:380 -#: ../../Zotlabs/Module/Profile_photo.php:418 -msgid "Done Editing" -msgstr "Klaar met bewerken" - -#: ../../Zotlabs/Module/Rpost.php:138 ../../Zotlabs/Module/Editpost.php:106 -msgid "Edit post" -msgstr "Bericht bewerken" - -#: ../../Zotlabs/Module/Connedit.php:80 -msgid "Could not access contact record." -msgstr "Kon geen toegang krijgen tot de connectie-gegevens." - -#: ../../Zotlabs/Module/Connedit.php:104 -msgid "Could not locate selected profile." -msgstr "Kon het gekozen profiel niet vinden." - -#: ../../Zotlabs/Module/Connedit.php:256 -msgid "Connection updated." -msgstr "Connectie bijgewerkt." - -#: ../../Zotlabs/Module/Connedit.php:258 -msgid "Failed to update connection record." -msgstr "Bijwerken van connectie-gegevens mislukt." - -#: ../../Zotlabs/Module/Connedit.php:308 -msgid "is now connected to" -msgstr "is nu verbonden met" - -#: ../../Zotlabs/Module/Connedit.php:440 -msgid "Could not access address book record." -msgstr "Kon geen toegang krijgen tot de record van de connectie." - -#: ../../Zotlabs/Module/Connedit.php:460 -msgid "Refresh failed - channel is currently unavailable." -msgstr "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar" - -#: ../../Zotlabs/Module/Connedit.php:475 ../../Zotlabs/Module/Connedit.php:484 -#: ../../Zotlabs/Module/Connedit.php:493 ../../Zotlabs/Module/Connedit.php:502 -#: ../../Zotlabs/Module/Connedit.php:515 -msgid "Unable to set address book parameters." -msgstr "Niet in staat om de parameters van connecties in te stellen." - -#: ../../Zotlabs/Module/Connedit.php:538 -msgid "Connection has been removed." -msgstr "Connectie is verwijderd" - -#: ../../Zotlabs/Module/Connedit.php:554 ../../Zotlabs/Lib/Apps.php:221 -#: ../../include/nav.php:89 ../../include/conversation.php:953 -msgid "View Profile" -msgstr "Profiel weergeven" - -#: ../../Zotlabs/Module/Connedit.php:557 -#, php-format -msgid "View %s's profile" -msgstr "Profiel van %s weergeven" - -#: ../../Zotlabs/Module/Connedit.php:561 -msgid "Refresh Permissions" -msgstr "Permissies vernieuwen" - -#: ../../Zotlabs/Module/Connedit.php:564 -msgid "Fetch updated permissions" -msgstr "Aangepaste permissies ophalen" - -#: ../../Zotlabs/Module/Connedit.php:568 -msgid "Recent Activity" -msgstr "Recente activiteit/berichten" - -#: ../../Zotlabs/Module/Connedit.php:571 -msgid "View recent posts and comments" -msgstr "Recente berichten en reacties weergeven" - -#: ../../Zotlabs/Module/Connedit.php:578 -msgid "Block (or Unblock) all communications with this connection" -msgstr "Blokkeer (of deblokkeer) alle communicatie met deze connectie" - -#: ../../Zotlabs/Module/Connedit.php:579 -msgid "This connection is blocked!" -msgstr "Deze connectie is geblokkeerd!" - -#: ../../Zotlabs/Module/Connedit.php:583 -msgid "Unignore" -msgstr "Niet meer negeren" - -#: ../../Zotlabs/Module/Connedit.php:586 -msgid "Ignore (or Unignore) all inbound communications from this connection" -msgstr "Negeer (of negeer niet meer) alle inkomende communicatie van deze connectie" - -#: ../../Zotlabs/Module/Connedit.php:587 -msgid "This connection is ignored!" -msgstr "Deze connectie wordt genegeerd!" - -#: ../../Zotlabs/Module/Connedit.php:591 -msgid "Unarchive" -msgstr "Niet meer archiveren" - -#: ../../Zotlabs/Module/Connedit.php:591 -msgid "Archive" -msgstr "Archiveren" - -#: ../../Zotlabs/Module/Connedit.php:594 -msgid "" -"Archive (or Unarchive) this connection - mark channel dead but keep content" -msgstr "Archiveer (of dearchiveer) deze connectie - markeer het kanaal als dood, maar bewaar de inhoud" - -#: ../../Zotlabs/Module/Connedit.php:595 -msgid "This connection is archived!" -msgstr "Deze connectie is gearchiveerd!" - -#: ../../Zotlabs/Module/Connedit.php:599 -msgid "Unhide" -msgstr "Niet meer verbergen" - -#: ../../Zotlabs/Module/Connedit.php:599 -msgid "Hide" -msgstr "Verbergen" - -#: ../../Zotlabs/Module/Connedit.php:602 -msgid "Hide or Unhide this connection from your other connections" -msgstr "Deze connectie verbergen (of niet meer verbergen) voor jouw andere connecties" - -#: ../../Zotlabs/Module/Connedit.php:603 -msgid "This connection is hidden!" -msgstr "Deze connectie is verborgen!" - -#: ../../Zotlabs/Module/Connedit.php:610 -msgid "Delete this connection" -msgstr "Deze connectie verwijderen" - -#: ../../Zotlabs/Module/Connedit.php:625 ../../include/widgets.php:529 -msgid "Me" -msgstr "Ik" - -#: ../../Zotlabs/Module/Connedit.php:626 ../../include/widgets.php:530 -msgid "Family" -msgstr "Familie" - -#: ../../Zotlabs/Module/Connedit.php:627 -#: ../../Zotlabs/Module/Settings/Channel.php:61 -#: ../../Zotlabs/Module/Settings/Channel.php:65 -#: ../../Zotlabs/Module/Settings/Channel.php:66 -#: ../../Zotlabs/Module/Settings/Channel.php:69 -#: ../../Zotlabs/Module/Settings/Channel.php:80 -#: ../../include/selectors.php:123 ../../include/channel.php:402 -#: ../../include/channel.php:403 ../../include/channel.php:410 -#: ../../include/widgets.php:531 -msgid "Friends" -msgstr "Vrienden" - -#: ../../Zotlabs/Module/Connedit.php:628 ../../include/widgets.php:532 -msgid "Acquaintances" -msgstr "Kennissen" - -#: ../../Zotlabs/Module/Connedit.php:686 -msgid "Approve this connection" -msgstr "Deze connectie accepteren" - -#: ../../Zotlabs/Module/Connedit.php:686 -msgid "Accept connection to allow communication" -msgstr "Keur deze connectie goed om communicatie toe te staan" - -#: ../../Zotlabs/Module/Connedit.php:691 -msgid "Set Affinity" -msgstr "Verwantschapsfilter instellen" - -#: ../../Zotlabs/Module/Connedit.php:694 -msgid "Set Profile" -msgstr "Profiel instellen" - -#: ../../Zotlabs/Module/Connedit.php:697 -msgid "Set Affinity & Profile" -msgstr "Verwantschapsfilter en profiel instellen" - -#: ../../Zotlabs/Module/Connedit.php:746 -msgid "none" -msgstr "geen" - -#: ../../Zotlabs/Module/Connedit.php:750 ../../include/widgets.php:656 -msgid "Connection Default Permissions" -msgstr "Standaard permissies voor connecties" - -#: ../../Zotlabs/Module/Connedit.php:750 ../../include/items.php:3993 -#, php-format -msgid "Connection: %s" -msgstr "Connectie: %s" - -#: ../../Zotlabs/Module/Connedit.php:751 -msgid "Apply these permissions automatically" -msgstr "Deze permissies automatisch toepassen" - -#: ../../Zotlabs/Module/Connedit.php:751 -msgid "Connection requests will be approved without your interaction" -msgstr "Connectieverzoeken zullen automatisch worden geaccepteerd" - -#: ../../Zotlabs/Module/Connedit.php:753 -msgid "This connection's primary address is" -msgstr "Het primaire kanaaladres van deze connectie is" - -#: ../../Zotlabs/Module/Connedit.php:754 -msgid "Available locations:" -msgstr "Beschikbare locaties:" - -#: ../../Zotlabs/Module/Connedit.php:758 -msgid "" -"The permissions indicated on this page will be applied to all new " -"connections." -msgstr "Permissies die op deze pagina staan vermeld worden op alle nieuwe connecties toegepast." - -#: ../../Zotlabs/Module/Connedit.php:759 -msgid "Connection Tools" -msgstr "Hulpmiddelen" - -#: ../../Zotlabs/Module/Connedit.php:761 -msgid "Slide to adjust your degree of friendship" -msgstr "Schuif om te bepalen hoe goed je iemand kent en/of mag" - -#: ../../Zotlabs/Module/Connedit.php:762 ../../Zotlabs/Module/Rate.php:155 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "Beoordeling" - -#: ../../Zotlabs/Module/Connedit.php:763 -msgid "Slide to adjust your rating" -msgstr "Gebruik de schuif om je beoordeling te geven" - -#: ../../Zotlabs/Module/Connedit.php:764 ../../Zotlabs/Module/Connedit.php:769 -msgid "Optionally explain your rating" -msgstr "Verklaar jouw beoordeling (niet verplicht)" - -#: ../../Zotlabs/Module/Connedit.php:766 -msgid "Custom Filter" -msgstr "Berichtenfilter" - -#: ../../Zotlabs/Module/Connedit.php:767 -msgid "Only import posts with this text" -msgstr "Importeer alleen berichten met deze tekst" +#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1385 +msgid "Public Hubs" +msgstr "Openbare hubs" -#: ../../Zotlabs/Module/Connedit.php:767 ../../Zotlabs/Module/Connedit.php:768 +#: ../../Zotlabs/Module/Pubsites.php:27 msgid "" -"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " -"all posts" -msgstr "woorden (één per regel), #tags, /regex/ of talen (lang=iso639-1) - laat leeg om alle berichten te importeren" - -#: ../../Zotlabs/Module/Connedit.php:768 -msgid "Do not import posts with this text" -msgstr "Importeer geen berichten met deze tekst" - -#: ../../Zotlabs/Module/Connedit.php:770 -msgid "This information is public!" -msgstr "Deze informatie is openbaar!" - -#: ../../Zotlabs/Module/Connedit.php:775 -msgid "Connection Pending Approval" -msgstr "Connectie moet nog geaccepteerd worden" +"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 "Op de hier weergegeven hubs kan iedereen zich voor het $Projectname-netwerk aanmelden. Alle hubs in het netwerk zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen een financiële tegemoetkoming voor bepaalde uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven." -#: ../../Zotlabs/Module/Connedit.php:778 -#: ../../Zotlabs/Module/Settings/Tokens.php:163 -msgid "inherited" -msgstr "geërfd" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" +msgstr "Hub-URL" -#: ../../Zotlabs/Module/Connedit.php:780 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." -msgstr "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken." +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" +msgstr "Toegangs-<br/> type" -#: ../../Zotlabs/Module/Connedit.php:782 -#: ../../Zotlabs/Module/Settings/Tokens.php:160 -msgid "Their Settings" -msgstr "Hun instellingen" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" +msgstr "Registratie-<br/> beleid" -#: ../../Zotlabs/Module/Connedit.php:783 -#: ../../Zotlabs/Module/Settings/Tokens.php:161 -msgid "My Settings" -msgstr "Mijn instellingen" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" +msgstr "Stats" -#: ../../Zotlabs/Module/Connedit.php:785 -#: ../../Zotlabs/Module/Settings/Tokens.php:165 -msgid "Individual Permissions" -msgstr "Individuele permissies" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" +msgstr "Software" -#: ../../Zotlabs/Module/Connedit.php:786 -#: ../../Zotlabs/Module/Settings/Tokens.php:166 -msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can <strong>not</strong> change those" -" settings here." -msgstr "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele instellingen. Je kan je deze overgeërfde permissies hier <strong>niet</strong> veranderen." +#: ../../Zotlabs/Module/Pubsites.php:35 ../../Zotlabs/Module/Ratings.php:97 +#: ../../include/conversation.php:940 +msgid "Ratings" +msgstr "Beoordelingen" -#: ../../Zotlabs/Module/Connedit.php:787 -msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can change those settings here but " -"they wont have any impact unless the inherited setting changes." -msgstr "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele permissies. Je kan de permissies hier veranderen, maar die hebben geen effect, tenzij de overgeërfde permissies worden veranderd. " +#: ../../Zotlabs/Module/Pubsites.php:48 +msgid "Rate" +msgstr "Beoordeel" -#: ../../Zotlabs/Module/Connedit.php:788 -msgid "Last update:" -msgstr "Laatste wijziging:" +#: ../../Zotlabs/Module/Pubsites.php:59 ../../Zotlabs/Module/Blocks.php:166 +#: ../../Zotlabs/Module/Layouts.php:197 ../../Zotlabs/Module/Webpages.php:246 +#: ../../Zotlabs/Module/Wiki.php:146 ../../Zotlabs/Module/Events.php:685 +#: ../../include/page_widgets.php:42 +msgid "View" +msgstr "Weergeven" -#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 #: ../../Zotlabs/Module/Editlayout.php:79 #: ../../Zotlabs/Module/Editwebpage.php:80 +#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 #: ../../Zotlabs/Module/Editpost.php:24 msgid "Item not found" msgstr "Item niet gevonden" -#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 -#: ../../Zotlabs/Module/Blocks.php:155 -msgid "Block Name" -msgstr "Bloknaam" - -#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1260 -msgid "Title (optional)" -msgstr "Titel (optioneel)" - -#: ../../Zotlabs/Module/Editblock.php:133 -msgid "Edit Block" -msgstr "Blok bewerken" - #: ../../Zotlabs/Module/Editlayout.php:127 #: ../../Zotlabs/Module/Layouts.php:128 ../../Zotlabs/Module/Layouts.php:188 msgid "Layout Name" @@ -2490,10 +2854,67 @@ msgstr "Lay-out bewerken" msgid "Page link" msgstr "Paginalink" +#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:286 +#: ../../Zotlabs/Module/Mail.php:411 ../../Zotlabs/Module/Editblock.php:111 +#: ../../Zotlabs/Module/Chat.php:207 ../../include/conversation.php:1147 +msgid "Insert web link" +msgstr "Weblink invoegen" + #: ../../Zotlabs/Module/Editwebpage.php:169 msgid "Edit Webpage" msgstr "Webpagina bewerken" +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:224 +#: ../../include/nav.php:95 ../../include/conversation.php:1674 +msgid "Photos" +msgstr "Foto's" + +#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Wiki.php:20 +#: ../../Zotlabs/Module/Chat.php:25 +#: ../../extend/addon/addon/chess/chess.php:400 +msgid "You must be logged in to see this page." +msgstr "Je moet zijn ingelogd om deze pagina te kunnen bekijken." + +#: ../../Zotlabs/Module/Channel.php:44 +msgid "Posts and comments" +msgstr "Berichten en reacties" + +#: ../../Zotlabs/Module/Channel.php:45 +msgid "Only posts" +msgstr "Alleen berichten" + +#: ../../Zotlabs/Module/Channel.php:104 +msgid "Insufficient permissions. Request redirected to profile page." +msgstr "Onvoldoende permissies. Doorgestuurd naar profielpagina." + +#: ../../Zotlabs/Module/Network.php:96 +msgid "No such group" +msgstr "Collectie niet gevonden" + +#: ../../Zotlabs/Module/Network.php:136 +msgid "No such channel" +msgstr "Niet zo'n kanaal" + +#: ../../Zotlabs/Module/Network.php:141 +msgid "forum" +msgstr "forum" + +#: ../../Zotlabs/Module/Network.php:153 +msgid "Search Results For:" +msgstr "Zoekresultaten voor:" + +#: ../../Zotlabs/Module/Network.php:221 +msgid "Privacy group is empty" +msgstr "Privacygroep is leeg" + +#: ../../Zotlabs/Module/Network.php:230 +msgid "Privacy group: " +msgstr "Privacygroep: " + +#: ../../Zotlabs/Module/Network.php:256 +msgid "Invalid connection." +msgstr "Ongeldige connectie." + #: ../../Zotlabs/Module/Menu.php:49 msgid "Unable to update menu." msgstr "Niet in staat om menu aan te passen" @@ -2530,14 +2951,10 @@ msgstr "Menu kan gebruikt worden om bladwijzers in op te slaan" msgid "Submit and proceed" msgstr "Opslaan en doorgaan" -#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2309 +#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2271 msgid "Menus" msgstr "Menu's" -#: ../../Zotlabs/Module/Menu.php:113 ../../Zotlabs/Module/Locs.php:120 -msgid "Drop" -msgstr "Verwijderen" - #: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Blocks.php:157 #: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Webpages.php:251 #: ../../include/page_widgets.php:47 @@ -2615,137 +3032,99 @@ msgstr "App geïnstalleerd" msgid "Malformed app." msgstr "Misvormde app." -#: ../../Zotlabs/Module/Appman.php:104 +#: ../../Zotlabs/Module/Appman.php:105 msgid "Embed code" msgstr "Insluitcode" -#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107 +#: ../../Zotlabs/Module/Appman.php:111 ../../include/widgets.php:107 msgid "Edit App" msgstr "App bewerken" -#: ../../Zotlabs/Module/Appman.php:110 +#: ../../Zotlabs/Module/Appman.php:111 msgid "Create App" msgstr "App maken" -#: ../../Zotlabs/Module/Appman.php:115 +#: ../../Zotlabs/Module/Appman.php:116 msgid "Name of app" msgstr "Naam van app" -#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116 -#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713 -#: ../../Zotlabs/Module/Events.php:452 ../../Zotlabs/Module/Events.php:457 -#: ../../include/datetime.php:257 +#: ../../Zotlabs/Module/Appman.php:116 ../../Zotlabs/Module/Appman.php:117 +#: ../../Zotlabs/Module/Profiles.php:703 ../../Zotlabs/Module/Profiles.php:707 +#: ../../Zotlabs/Module/Events.php:453 ../../Zotlabs/Module/Events.php:458 +#: ../../include/datetime.php:259 msgid "Required" msgstr "Vereist" -#: ../../Zotlabs/Module/Appman.php:116 +#: ../../Zotlabs/Module/Appman.php:117 msgid "Location (URL) of app" msgstr "Locatie (URL) van app" -#: ../../Zotlabs/Module/Appman.php:117 ../../Zotlabs/Module/Rbmark.php:101 -#: ../../Zotlabs/Module/Events.php:465 +#: ../../Zotlabs/Module/Appman.php:118 ../../Zotlabs/Module/Rbmark.php:101 +#: ../../Zotlabs/Module/Events.php:466 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:838 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:165 msgid "Description" msgstr "Omschrijving" -#: ../../Zotlabs/Module/Appman.php:118 +#: ../../Zotlabs/Module/Appman.php:119 msgid "Photo icon URL" msgstr "URL van pictogram" -#: ../../Zotlabs/Module/Appman.php:118 +#: ../../Zotlabs/Module/Appman.php:119 msgid "80 x 80 pixels - optional" msgstr "80 x 80 pixels (optioneel)" -#: ../../Zotlabs/Module/Appman.php:119 +#: ../../Zotlabs/Module/Appman.php:120 msgid "Categories (optional, comma separated list)" msgstr "Categorieën (optioneel, door komma's gescheiden lijst)" -#: ../../Zotlabs/Module/Appman.php:120 +#: ../../Zotlabs/Module/Appman.php:121 msgid "Version ID" msgstr "Versie-ID" -#: ../../Zotlabs/Module/Appman.php:121 +#: ../../Zotlabs/Module/Appman.php:122 msgid "Price of app" msgstr "Prijs van de app" -#: ../../Zotlabs/Module/Appman.php:122 +#: ../../Zotlabs/Module/Appman.php:123 msgid "Location (URL) to purchase app" msgstr "Locatie (URL) om de app aan te schaffen" -#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1392 -msgid "Public Hubs" -msgstr "Openbare hubs" - -#: ../../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 "Op de hier weergegeven hubs kan iedereen zich voor het $Projectname-netwerk aanmelden. Alle hubs in het netwerk zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen een financiële tegemoetkoming voor bepaalde uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven." - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Hub URL" -msgstr "Hub-URL" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" -msgstr "Toegangs-<br/> type" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" -msgstr "Registratie-<br/> beleid" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" -msgstr "Stats" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" -msgstr "Software" - -#: ../../Zotlabs/Module/Pubsites.php:35 ../../Zotlabs/Module/Ratings.php:97 -#: ../../include/conversation.php:958 -msgid "Ratings" -msgstr "Beoordelingen" +#: ../../Zotlabs/Module/Rpost.php:138 ../../Zotlabs/Module/Editpost.php:107 +msgid "Edit post" +msgstr "Bericht bewerken" -#: ../../Zotlabs/Module/Pubsites.php:48 -msgid "Rate" -msgstr "Beoordeel" +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" +msgstr "Zoek documentatie" -#: ../../Zotlabs/Module/Pubsites.php:51 ../../Zotlabs/Module/Locs.php:117 -#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698 -#: ../../Zotlabs/Module/Events.php:467 ../../include/js_strings.php:25 -msgid "Location" -msgstr "Locatie" +#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1665 +msgid "About" +msgstr "Over" -#: ../../Zotlabs/Module/Pubsites.php:59 ../../Zotlabs/Module/Blocks.php:166 -#: ../../Zotlabs/Module/Layouts.php:197 ../../Zotlabs/Module/Webpages.php:246 -#: ../../Zotlabs/Module/Events.php:680 ../../include/page_widgets.php:42 -msgid "View" -msgstr "Weergeven" +#: ../../Zotlabs/Module/Help.php:81 ../../Zotlabs/Module/Group.php:197 +msgid "Members" +msgstr "Kanalen" -#: ../../Zotlabs/Module/Attach.php:13 -msgid "Item not available." -msgstr "Item is niet aanwezig." +#: ../../Zotlabs/Module/Help.php:82 +msgid "Administrators" +msgstr "Beheerders" -#: ../../Zotlabs/Module/Api.php:60 ../../Zotlabs/Module/Api.php:81 -msgid "Authorize application connection" -msgstr "Geef toestemming voor applicatiekoppeling" +#: ../../Zotlabs/Module/Help.php:83 +msgid "Developers" +msgstr "Ontwikkelaars" -#: ../../Zotlabs/Module/Api.php:61 -msgid "Return to your app and insert this Security Code:" -msgstr "Ga terug naar je app en voeg deze beveiligingscode in:" +#: ../../Zotlabs/Module/Help.php:84 +msgid "Tutorials" +msgstr "Zelfstudie" -#: ../../Zotlabs/Module/Api.php:71 -msgid "Please login to continue." -msgstr "Inloggen om verder te kunnen gaan." +#: ../../Zotlabs/Module/Help.php:93 +msgid "$Projectname Documentation" +msgstr "$Projectname-documentatie" -#: ../../Zotlabs/Module/Api.php:83 -msgid "" -"Do you want to authorize this application to access your posts and contacts," -" and/or create new posts for you?" -msgstr "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?" +#: ../../Zotlabs/Module/Help.php:94 +msgid "Contents" +msgstr "Inhoud" #: ../../Zotlabs/Module/Ffsapi.php:12 msgid "Share content from Firefox to $Projectname" @@ -2755,32 +3134,12 @@ msgstr "Deel webpagina's vanuit Firefox met " msgid "Activate the Firefox $Projectname provider" msgstr "Activeer de $Projectname-service in Firefox" -#: ../../Zotlabs/Module/Pdledit.php:21 -msgid "Layout updated." -msgstr "Lay-out bijgewerkt." - -#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Chat.php:218 -msgid "Feature disabled." -msgstr "Functie uitgeschakeld." - -#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Pdledit.php:69 -msgid "Edit System Page Description" -msgstr "Systeempagina's bewerken" - -#: ../../Zotlabs/Module/Pdledit.php:64 -msgid "Layout not found." -msgstr "Lay-out niet gevonden." - -#: ../../Zotlabs/Module/Pdledit.php:70 -msgid "Module Name:" -msgstr "Modulenaam:" - -#: ../../Zotlabs/Module/Pdledit.php:71 -msgid "Layout Help" -msgstr "Lay-out-hulp" +#: ../../Zotlabs/Module/Apps.php:46 ../../include/nav.php:166 +#: ../../include/widgets.php:102 +msgid "Apps" +msgstr "Apps" #: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82 -#: ../../Zotlabs/Module/Siteinfo.php:48 msgid "$Projectname" msgstr "$Projectname" @@ -2789,14 +3148,6 @@ msgstr "$Projectname" msgid "Welcome to %s" msgstr "Welkom op %s" -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." -msgstr "Privacy-informatie op afstand niet beschikbaar." - -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" -msgstr "Zichtbaar voor:" - #: ../../Zotlabs/Module/Filestorage.php:87 msgid "Permission Denied." msgstr "Toegang geweigerd" @@ -2812,7 +3163,7 @@ msgstr "Bestandsrechten bewerken" #: ../../Zotlabs/Module/Filestorage.php:152 #: ../../Zotlabs/Module/Photos.php:658 ../../Zotlabs/Module/Photos.php:1047 #: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:363 -#: ../../Zotlabs/Module/Chat.php:234 ../../include/acl_selectors.php:179 +#: ../../Zotlabs/Module/Chat.php:234 ../../include/acl_selectors.php:208 msgid "Permissions" msgstr "Permissies" @@ -2848,230 +3199,287 @@ msgstr "Toon URL van dit bestand" msgid "Notify your contacts about this file" msgstr "Jouw connecties over dit bestand berichten" -#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109 -msgid "Continue" -msgstr "Ga verder" +#: ../../Zotlabs/Module/Directory.php:64 ../../Zotlabs/Module/Display.php:17 +#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Photos.php:509 +#: ../../Zotlabs/Module/Search.php:17 +#: ../../Zotlabs/Module/Viewconnections.php:23 +#: ../../extend/addon/addon/friendica/dfrn_request.php:794 +msgid "Public access denied." +msgstr "Openbare toegang geweigerd." -#: ../../Zotlabs/Module/Connect.php:90 -msgid "Premium Channel Setup" -msgstr "Instellen premiumkanaal " +#: ../../Zotlabs/Module/Directory.php:245 +#, php-format +msgid "%d rating" +msgid_plural "%d ratings" +msgstr[0] "%d beoordeling" +msgstr[1] "%d beoordelingen" -#: ../../Zotlabs/Module/Connect.php:92 -msgid "Enable premium channel connection restrictions" -msgstr "Restricties voor connecties van premiumkanaal toestaan" +#: ../../Zotlabs/Module/Directory.php:256 +msgid "Gender: " +msgstr "Geslacht:" -#: ../../Zotlabs/Module/Connect.php:93 -msgid "" -"Please enter your restrictions or conditions, such as paypal receipt, usage " -"guidelines, etc." -msgstr "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz." +#: ../../Zotlabs/Module/Directory.php:258 +msgid "Status: " +msgstr "Status: " -#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115 -msgid "" -"This channel may require additional steps or acknowledgement of the " -"following conditions prior to connecting:" -msgstr "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:" +#: ../../Zotlabs/Module/Directory.php:260 +msgid "Homepage: " +msgstr "Homepage: " -#: ../../Zotlabs/Module/Connect.php:96 -msgid "" -"Potential connections will then see the following text before proceeding:" -msgstr "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:" +#: ../../Zotlabs/Module/Directory.php:309 ../../include/channel.php:1215 +msgid "Age:" +msgstr "Leeftijd:" -#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118 -msgid "" -"By continuing, I certify that I have complied with any instructions provided" -" on this page." -msgstr "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina." +#: ../../Zotlabs/Module/Directory.php:314 ../../include/channel.php:1051 +#: ../../include/bb2diaspora.php:521 ../../include/event.php:52 +#: ../../include/event.php:84 +msgid "Location:" +msgstr "Plaats:" -#: ../../Zotlabs/Module/Connect.php:106 -msgid "(No specific instructions have been provided by the channel owner.)" -msgstr "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) " +#: ../../Zotlabs/Module/Directory.php:320 +msgid "Description:" +msgstr "Omschrijving:" -#: ../../Zotlabs/Module/Connect.php:114 -msgid "Restricted or Premium Channel" -msgstr "Beperkt of premiumkanaal" +#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1231 +msgid "Hometown:" +msgstr "Oorspronkelijk uit:" -#: ../../Zotlabs/Module/Manage.php:136 -#: ../../Zotlabs/Module/New_channel.php:121 -#, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." -msgstr "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt." +#: ../../Zotlabs/Module/Directory.php:327 ../../include/channel.php:1239 +msgid "About:" +msgstr "Over:" -#: ../../Zotlabs/Module/Manage.php:143 -msgid "Create a new channel" -msgstr "Nieuw kanaal aanmaken" +#: ../../Zotlabs/Module/Directory.php:329 +msgid "Public Forum:" +msgstr "Openbaar forum:" -#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Profiles.php:778 -#: ../../Zotlabs/Module/Chat.php:255 -msgid "Create New" -msgstr "Nieuwe aanmaken" +#: ../../Zotlabs/Module/Directory.php:332 +msgid "Keywords: " +msgstr "Trefwoorden: " -#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:214 -#: ../../include/nav.php:211 -msgid "Channel Manager" -msgstr "Kanaalbeheer" +#: ../../Zotlabs/Module/Directory.php:335 +msgid "Don't suggest" +msgstr "Niet voorstellen" -#: ../../Zotlabs/Module/Manage.php:165 -msgid "Current Channel" -msgstr "Huidig kanaal" +#: ../../Zotlabs/Module/Directory.php:337 +msgid "Common connections:" +msgstr "Gemeenschappelijke connecties:" -#: ../../Zotlabs/Module/Manage.php:167 -msgid "Switch to one of your channels by selecting it." -msgstr "Activeer een van jouw andere kanalen door er op te klikken." +#: ../../Zotlabs/Module/Directory.php:386 +msgid "Global Directory" +msgstr "Volledige kanalengids" -#: ../../Zotlabs/Module/Manage.php:168 -msgid "Default Channel" -msgstr "Standaardkanaal" +#: ../../Zotlabs/Module/Directory.php:386 +msgid "Local Directory" +msgstr "Lokale kanalengids" -#: ../../Zotlabs/Module/Manage.php:169 -msgid "Make Default" -msgstr "Als standaard instellen" +#: ../../Zotlabs/Module/Directory.php:392 +msgid "Finding:" +msgstr "Gezocht naar:" -#: ../../Zotlabs/Module/Manage.php:172 +#: ../../Zotlabs/Module/Directory.php:395 ../../Zotlabs/Module/Suggest.php:64 +#: ../../include/contact_widgets.php:24 +msgid "Channel Suggestions" +msgstr "Voorgestelde kanalen" + +#: ../../Zotlabs/Module/Directory.php:397 +msgid "next page" +msgstr "volgende pagina" + +#: ../../Zotlabs/Module/Directory.php:397 +msgid "previous page" +msgstr "vorige pagina" + +#: ../../Zotlabs/Module/Directory.php:398 +msgid "Sort options" +msgstr "Sorteeropties" + +#: ../../Zotlabs/Module/Directory.php:399 +msgid "Alphabetic" +msgstr "Alfabetisch" + +#: ../../Zotlabs/Module/Directory.php:400 +msgid "Reverse Alphabetic" +msgstr "Omgekeerd alfabetisch" + +#: ../../Zotlabs/Module/Directory.php:401 +msgid "Newest to Oldest" +msgstr "Nieuw naar oud" + +#: ../../Zotlabs/Module/Directory.php:402 +msgid "Oldest to Newest" +msgstr "Oud naar nieuw" + +#: ../../Zotlabs/Module/Directory.php:419 +msgid "No entries (some entries may be hidden)." +msgstr "Niets gevonden (sommige kanalen kunnen verborgen zijn)." + +#: ../../Zotlabs/Module/Item.php:184 +msgid "Unable to locate original post." +msgstr "Niet in staat om de originele locatie van het bericht te vinden. " + +#: ../../Zotlabs/Module/Item.php:447 +msgid "Empty post discarded." +msgstr "Leeg bericht geannuleerd" + +#: ../../Zotlabs/Module/Item.php:489 +msgid "Executable content type not permitted to this channel." +msgstr "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal." + +#: ../../Zotlabs/Module/Item.php:837 +msgid "Duplicate post suppressed." +msgstr "Dubbel bericht tegengehouden." + +#: ../../Zotlabs/Module/Item.php:979 +msgid "System error. Post not saved." +msgstr "Systeemfout. Bericht niet opgeslagen." + +#: ../../Zotlabs/Module/Item.php:1111 +msgid "Unable to obtain post information from database." +msgstr "Niet in staat om informatie over dit bericht uit de database te verkrijgen." + +#: ../../Zotlabs/Module/Item.php:1118 #, php-format -msgid "%d new messages" -msgstr "%d nieuwe berichten" +msgid "You have reached your limit of %1$.0f top level posts." +msgstr "Je hebt jouw limiet van %1$.0f berichten bereikt." -#: ../../Zotlabs/Module/Manage.php:173 +#: ../../Zotlabs/Module/Item.php:1125 #, php-format -msgid "%d new introductions" -msgstr "%d nieuwe connectieverzoeken" +msgid "You have reached your limit of %1$.0f webpages." +msgstr "Je hebt jouw limiet van %1$.0f webpagina's bereikt." -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Delegated Channel" -msgstr "Uitbesteed kanaal" +#: ../../Zotlabs/Module/Chanview.php:134 +msgid "toggle full screen mode" +msgstr "Volledig scherm" -#: ../../Zotlabs/Module/Group.php:24 -msgid "Privacy group created." -msgstr "Privacygroep aangemaakt" +#: ../../Zotlabs/Module/Follow.php:31 +msgid "Channel added." +msgstr "Kanaal toegevoegd." -#: ../../Zotlabs/Module/Group.php:30 -msgid "Could not create privacy group." -msgstr "Kon privacygroep niet aanmaken" +#: ../../Zotlabs/Module/Mail.php:66 +msgid "Unable to lookup recipient." +msgstr "Niet in staat om ontvanger op te zoeken." -#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 -#: ../../include/items.php:3960 -msgid "Privacy group not found." -msgstr "Privacygroep niet gevonden" +#: ../../Zotlabs/Module/Mail.php:73 +msgid "Unable to communicate with requested channel." +msgstr "Niet in staat om met het aangevraagde kanaal te communiceren." -#: ../../Zotlabs/Module/Group.php:58 -msgid "Privacy group updated." -msgstr "Privacygroep bijgewerkt" +#: ../../Zotlabs/Module/Mail.php:80 +msgid "Cannot verify requested channel." +msgstr "Kan opgevraagd kanaal niet verifieren" -#: ../../Zotlabs/Module/Group.php:90 -msgid "Create a group of channels." -msgstr "Privacygroep met kanalen aanmaken" +#: ../../Zotlabs/Module/Mail.php:98 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt." -#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184 -msgid "Privacy group name: " -msgstr "Naam privacygroep: " +#: ../../Zotlabs/Module/Mail.php:177 +msgid "Messages" +msgstr "Berichten" -#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187 -msgid "Members are visible to other channels" -msgstr "Kanalen in deze privacygroep zijn zichtbaar voor andere kanalen" +#: ../../Zotlabs/Module/Mail.php:212 +msgid "Message recalled." +msgstr "Bericht ingetrokken." -#: ../../Zotlabs/Module/Group.php:111 -msgid "Privacy group removed." -msgstr "Privacygroep verwijderd." +#: ../../Zotlabs/Module/Mail.php:225 +msgid "Conversation removed." +msgstr "Conversatie verwijderd" -#: ../../Zotlabs/Module/Group.php:113 -msgid "Unable to remove privacy group." -msgstr "Verwijderen privacygroep mislukt" +#: ../../Zotlabs/Module/Mail.php:239 ../../Zotlabs/Module/Mail.php:348 +#: ../../Zotlabs/Module/Chat.php:205 ../../include/conversation.php:1182 +msgid "Please enter a link URL:" +msgstr "Vul een URL in:" -#: ../../Zotlabs/Module/Group.php:183 -msgid "Privacy group editor" -msgstr "Privacygroep bewerken" +#: ../../Zotlabs/Module/Mail.php:240 ../../Zotlabs/Module/Mail.php:349 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "Verloopt op DD-MM-YYYY om HH:MM" -#: ../../Zotlabs/Module/Group.php:197 -msgid "Members" -msgstr "Kanalen" +#: ../../Zotlabs/Module/Mail.php:268 +msgid "Requested channel is not in this network" +msgstr "Opgevraagd kanaal is niet in dit netwerk beschikbaar" -#: ../../Zotlabs/Module/Group.php:199 -msgid "All Connected Channels" -msgstr "Alle kanaalconnecties" +#: ../../Zotlabs/Module/Mail.php:276 +msgid "Send Private Message" +msgstr "Privébericht versturen" -#: ../../Zotlabs/Module/Group.php:231 -msgid "Click on a channel to add or remove." -msgstr "Klik op een kanaal om deze toe te voegen of te verwijderen." +#: ../../Zotlabs/Module/Mail.php:277 ../../Zotlabs/Module/Mail.php:402 +msgid "To:" +msgstr "Aan:" -#: ../../Zotlabs/Module/Dreport.php:44 -msgid "Invalid message" -msgstr "Ongeldig bericht" +#: ../../Zotlabs/Module/Mail.php:280 ../../Zotlabs/Module/Mail.php:404 +msgid "Subject:" +msgstr "Onderwerp:" -#: ../../Zotlabs/Module/Dreport.php:76 -msgid "no results" -msgstr "geen resultaten" +#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Invite.php:138 +msgid "Your message:" +msgstr "Jouw bericht:" -#: ../../Zotlabs/Module/Dreport.php:91 -msgid "channel sync processed" -msgstr "kanaalsync verwerkt" +#: ../../Zotlabs/Module/Mail.php:285 ../../Zotlabs/Module/Mail.php:410 +#: ../../include/conversation.php:1242 +msgid "Attach file" +msgstr "Bestand toevoegen" -#: ../../Zotlabs/Module/Dreport.php:95 -msgid "queued" -msgstr "in wachtrij" +#: ../../Zotlabs/Module/Mail.php:287 +msgid "Send" +msgstr "Verzenden" -#: ../../Zotlabs/Module/Dreport.php:99 -msgid "posted" -msgstr "verstuurd" +#: ../../Zotlabs/Module/Mail.php:290 ../../Zotlabs/Module/Mail.php:415 +#: ../../include/conversation.php:1287 +msgid "Set expiration date" +msgstr "Verloopdatum instellen" -#: ../../Zotlabs/Module/Dreport.php:103 -msgid "accepted for delivery" -msgstr "geaccepteerd om afgeleverd te worden" +#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:417 +#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Lib/ThreadItem.php:741 +#: ../../include/conversation.php:1292 +msgid "Encrypt text" +msgstr "Tekst versleutelen" -#: ../../Zotlabs/Module/Dreport.php:107 -msgid "updated" -msgstr "geüpdatet" +#: ../../Zotlabs/Module/Mail.php:374 +msgid "Delete message" +msgstr "Bericht verwijderen" -#: ../../Zotlabs/Module/Dreport.php:110 -msgid "update ignored" -msgstr "update genegeerd" +#: ../../Zotlabs/Module/Mail.php:375 +msgid "Delivery report" +msgstr "Afleveringsrapport" -#: ../../Zotlabs/Module/Dreport.php:113 -msgid "permission denied" -msgstr "toegang geweigerd" +#: ../../Zotlabs/Module/Mail.php:376 +msgid "Recall message" +msgstr "Bericht intrekken" -#: ../../Zotlabs/Module/Dreport.php:117 -msgid "recipient not found" -msgstr "ontvanger niet gevonden" +#: ../../Zotlabs/Module/Mail.php:378 +msgid "Message has been recalled." +msgstr "Bericht is ingetrokken." -#: ../../Zotlabs/Module/Dreport.php:120 -msgid "mail recalled" -msgstr "Privébericht ingetrokken" +#: ../../Zotlabs/Module/Mail.php:395 +msgid "Delete Conversation" +msgstr "Verwijder conversatie" -#: ../../Zotlabs/Module/Dreport.php:123 -msgid "duplicate mail received" -msgstr "dubbel privébericht ontvangen" +#: ../../Zotlabs/Module/Mail.php:397 +msgid "" +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." +msgstr "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender." -#: ../../Zotlabs/Module/Dreport.php:126 -msgid "mail delivered" -msgstr "privébericht afgeleverd" +#: ../../Zotlabs/Module/Mail.php:401 +msgid "Send Reply" +msgstr "Antwoord versturen" -#: ../../Zotlabs/Module/Dreport.php:146 +#: ../../Zotlabs/Module/Mail.php:406 #, php-format -msgid "Delivery report for %1$s" -msgstr "Afleveringsrapport voor %1$s" - -#: ../../Zotlabs/Module/Dreport.php:149 -msgid "Options" -msgstr "Opties" - -#: ../../Zotlabs/Module/Dreport.php:150 -msgid "Redeliver" -msgstr "Opnieuw afleveren" +msgid "Your message for %s (%s):" +msgstr "Jouw privébericht aan %s (%s):" -#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192 +#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203 msgid "webpage" msgstr "Webpagina" -#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198 +#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209 msgid "block" msgstr "blok" -#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195 +#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206 msgid "layout" msgstr "lay-out" -#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201 +#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212 msgid "menu" msgstr "menu" @@ -3085,6 +3493,26 @@ msgstr "%s onderdeel geïnstalleerd" msgid "%s element installation failed" msgstr "Installatie %s-element mislukt" +#: ../../Zotlabs/Module/Import_items.php:42 ../../Zotlabs/Module/Import.php:71 +msgid "Nothing to import." +msgstr "Niets gevonden om te importeren" + +#: ../../Zotlabs/Module/Import_items.php:66 ../../Zotlabs/Module/Import.php:83 +#: ../../Zotlabs/Module/Import.php:98 +msgid "Unable to download data from old server" +msgstr "Niet in staat om gegevens van de oude hub te downloaden" + +#: ../../Zotlabs/Module/Import_items.php:72 +#: ../../Zotlabs/Module/Import.php:105 +msgid "Imported file is empty." +msgstr "Geïmporteerde bestand is leeg" + +#: ../../Zotlabs/Module/Import_items.php:88 +#: ../../Zotlabs/Module/Import.php:127 +#, php-format +msgid "Warning: Database versions differ by %1$d updates." +msgstr "Waarschuwing: database-versies lopen %1$d updates achter." + #: ../../Zotlabs/Module/Import_items.php:104 msgid "Import completed" msgstr "Importeren voltooid" @@ -3098,6 +3526,11 @@ msgid "" "Use this form to import existing posts and content from an export file." msgstr "Gebruik dit formulier om bestaande berichten en andere inhoud vanuit een exportbestand te importeren." +#: ../../Zotlabs/Module/Import_items.php:121 +#: ../../Zotlabs/Module/Import.php:532 +msgid "File to Upload" +msgstr "Bestand om te uploaden" + #: ../../Zotlabs/Module/Invite.php:29 msgid "Total invitation limit exceeded." msgstr "Limiet voor aantal uitnodigingen overschreden." @@ -3107,503 +3540,148 @@ msgstr "Limiet voor aantal uitnodigingen overschreden." msgid "%s : Not a valid email address." msgstr "%s : Geen geldig e-mailadres." -#: ../../Zotlabs/Module/Invite.php:63 +#: ../../Zotlabs/Module/Invite.php:67 msgid "Please join us on $Projectname" msgstr "Uitnodiging voor $Projectname" -#: ../../Zotlabs/Module/Invite.php:74 +#: ../../Zotlabs/Module/Invite.php:77 msgid "Invitation limit exceeded. Please contact your site administrator." msgstr "Limiet voor aantal uitnodigingen overschreden. Neem contact op met je hub-beheerder." -#: ../../Zotlabs/Module/Invite.php:79 +#: ../../Zotlabs/Module/Invite.php:82 #, php-format msgid "%s : Message delivery failed." msgstr "%s: Aflevering bericht mislukt." -#: ../../Zotlabs/Module/Invite.php:83 +#: ../../Zotlabs/Module/Invite.php:86 #, php-format msgid "%d message sent." msgid_plural "%d messages sent." msgstr[0] "%d bericht verzonden." msgstr[1] "%d berichten verzonden." -#: ../../Zotlabs/Module/Invite.php:102 +#: ../../Zotlabs/Module/Invite.php:105 msgid "You have no more invitations available" msgstr "Je hebt geen uitnodigingen meer beschikbaar" -#: ../../Zotlabs/Module/Invite.php:133 +#: ../../Zotlabs/Module/Invite.php:136 msgid "Send invitations" msgstr "Uitnodigingen verzenden" -#: ../../Zotlabs/Module/Invite.php:134 +#: ../../Zotlabs/Module/Invite.php:137 msgid "Enter email addresses, one per line:" msgstr "Voer e-mailadressen in, één per regel:" -#: ../../Zotlabs/Module/Invite.php:136 +#: ../../Zotlabs/Module/Invite.php:139 msgid "Please join my community on $Projectname." msgstr "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op $Projectname te vergezellen. Lees meer over $Projectname op http://hubzilla.org" -#: ../../Zotlabs/Module/Invite.php:138 +#: ../../Zotlabs/Module/Invite.php:141 msgid "You will need to supply this invitation code:" msgstr "Je moet deze uitnodigingscode opgeven:" -#: ../../Zotlabs/Module/Invite.php:139 +#: ../../Zotlabs/Module/Invite.php:142 msgid "" "1. Register at any $Projectname location (they are all inter-connected)" msgstr "1. Registreer je op een willekeurige $Projectname-hub (ze zijn allemaal onderling met elkaar verbonden):" -#: ../../Zotlabs/Module/Invite.php:141 +#: ../../Zotlabs/Module/Invite.php:144 msgid "2. Enter my $Projectname network address into the site searchbar." msgstr "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn $Projectname-kanaaladres in het zoekveld invullen:" -#: ../../Zotlabs/Module/Invite.php:142 +#: ../../Zotlabs/Module/Invite.php:145 msgid "or visit" msgstr "of bezoek" -#: ../../Zotlabs/Module/Invite.php:144 +#: ../../Zotlabs/Module/Invite.php:147 msgid "3. Click [Connect]" msgstr "3. Klik op [+ Verbinden]" -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." -msgstr "Locatie niet gevonden." - -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." -msgstr "Opzoeken locatie mislukt" - -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary" -" location." -msgstr "Kies eerst een andere primaire locatie alvorens de huidige primaire locatie te verwijderen." - -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" -msgstr "Locaties synchronizeren" - -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." -msgstr "Geen locaties gevonden." - -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" -msgstr "Kanaallocaties beheren" - -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" -msgstr "Primair" - -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" -msgstr "Nu synchroniseren" - -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." -msgstr "Wacht enkele minuten tussen opeenvolgende handelingen." - -#: ../../Zotlabs/Module/Locs.php:124 -msgid "" -"When possible, drop a location by logging into that website/hub and removing" -" your channel." -msgstr "Wij adviseren, wanneer dit (nog) mogelijk is, de locatie te verwijderen door op de hub van de kloon in te loggen en het kanaal daar te verwijderen." - -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." -msgstr "Gebruik dit formulier om de locatie te verwijderen wanneer de hub van de kloon niet meer operationeel is." - -#: ../../Zotlabs/Module/Rate.php:156 -msgid "Website:" -msgstr "Website:" - -#: ../../Zotlabs/Module/Rate.php:159 -#, php-format -msgid "Remote Channel [%s] (not yet known on this site)" -msgstr "Kanaal op afstand [%s] (nog niet op deze hub bekend)" - -#: ../../Zotlabs/Module/Rate.php:160 -msgid "Rating (this information is public)" -msgstr "Beoordeling (deze informatie is openbaar)" - -#: ../../Zotlabs/Module/Rate.php:161 -msgid "Optionally explain your rating (this information is public)" -msgstr "Verklaar jouw beoordeling (niet verplicht, deze informatie is openbaar)" - -#: ../../Zotlabs/Module/Like.php:19 -msgid "Like/Dislike" -msgstr "Leuk/niet leuk" - -#: ../../Zotlabs/Module/Like.php:24 -msgid "This action is restricted to members." -msgstr "Deze actie kan alleen door $Projectname-leden worden uitgevoerd." - -#: ../../Zotlabs/Module/Like.php:25 -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 "Je dient <a href=\"rmagic\">in te loggen met je $Projectname-account</a> of <a href=\"register\">een nieuw $Projectname-account aan te maken</a> om verder te kunnen gaan." - -#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 -#: ../../Zotlabs/Module/Like.php:169 -msgid "Invalid request." -msgstr "Ongeldig verzoek" - -#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 -msgid "channel" -msgstr "kanaal" - -#: ../../Zotlabs/Module/Like.php:146 -msgid "thing" -msgstr "ding" - -#: ../../Zotlabs/Module/Like.php:192 -msgid "Channel unavailable." -msgstr "Kanaal niet beschikbaar." - -#: ../../Zotlabs/Module/Like.php:240 -msgid "Previous action reversed." -msgstr "Vorige actie omgedraaid" - -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1991 -#: ../../include/conversation.php:120 -msgid "photo" -msgstr "foto" - -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../include/text.php:1997 ../../include/conversation.php:148 -msgid "status" -msgstr "bericht" - -#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Events.php:253 -#: ../../Zotlabs/Module/Tagger.php:51 ../../include/text.php:1994 -#: ../../include/conversation.php:123 ../../include/event.php:961 -msgid "event" -msgstr "gebeurtenis" - -#: ../../Zotlabs/Module/Like.php:419 ../../include/conversation.php:164 -#, php-format -msgid "%1$s likes %2$s's %3$s" -msgstr "%1$s vindt %3$s van %2$s leuk" - -#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "%1$s vindt %3$s van %2$s niet leuk" - -#: ../../Zotlabs/Module/Like.php:423 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "%1$s is het eens met %2$s's %3$s" - -#: ../../Zotlabs/Module/Like.php:425 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "%1$s is het niet eens met %2$s's %3$s" - -#: ../../Zotlabs/Module/Like.php:427 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "%1$s onthoudt zich van een besluit over %2$s's %3$s" - -#: ../../Zotlabs/Module/Like.php:429 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "%1$s is aanwezig op %2$s's %3$s" - -#: ../../Zotlabs/Module/Like.php:431 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "%1$s is niet aanwezig op %2$s's %3$s" - -#: ../../Zotlabs/Module/Like.php:433 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "%1$s is mogelijk aanwezig op %2$s's %3$s" - -#: ../../Zotlabs/Module/Like.php:538 -msgid "Action completed." -msgstr "Actie voltooid" - -#: ../../Zotlabs/Module/Like.php:539 -msgid "Thank you." -msgstr "Bedankt" - -#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189 -#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625 -msgid "Profile not found." -msgstr "Profiel niet gevonden." - -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." -msgstr "Profiel verwijderd." - -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104 -msgid "Profile-" -msgstr "Profiel-" - -#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132 -msgid "New profile created." -msgstr "Nieuw profiel aangemaakt." - -#: ../../Zotlabs/Module/Profiles.php:110 -msgid "Profile unavailable to clone." -msgstr "Profiel niet beschikbaar om te klonen" - -#: ../../Zotlabs/Module/Profiles.php:151 -msgid "Profile unavailable to export." -msgstr "Geen profiel beschikbaar om te exporteren" - -#: ../../Zotlabs/Module/Profiles.php:256 -msgid "Profile Name is required." -msgstr "Profielnaam is vereist" - -#: ../../Zotlabs/Module/Profiles.php:427 -msgid "Marital Status" -msgstr "Huwelijke status" - -#: ../../Zotlabs/Module/Profiles.php:431 -msgid "Romantic Partner" -msgstr "Romantische partner" - -#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736 -msgid "Likes" -msgstr "Houdt van" - -#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737 -msgid "Dislikes" -msgstr "Houdt niet van" - -#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744 -msgid "Work/Employment" -msgstr "Werk/arbeid" - -#: ../../Zotlabs/Module/Profiles.php:446 -msgid "Religion" -msgstr "Religie" - -#: ../../Zotlabs/Module/Profiles.php:450 -msgid "Political Views" -msgstr "Politieke overtuigingen" - -#: ../../Zotlabs/Module/Profiles.php:454 -msgid "Gender" -msgstr "Geslacht" - -#: ../../Zotlabs/Module/Profiles.php:458 -msgid "Sexual Preference" -msgstr "Seksuele voorkeur" - -#: ../../Zotlabs/Module/Profiles.php:462 -msgid "Homepage" -msgstr "Homepage" - -#: ../../Zotlabs/Module/Profiles.php:466 -msgid "Interests" -msgstr "Interesses" - -#: ../../Zotlabs/Module/Profiles.php:560 -msgid "Profile updated." -msgstr "Profiel bijgewerkt" - -#: ../../Zotlabs/Module/Profiles.php:644 -msgid "Hide your connections list from viewers of this profile" -msgstr "Laat de lijst met connecties niet aan bezoekers van dit profiel zien." - -#: ../../Zotlabs/Module/Profiles.php:686 -msgid "Edit Profile Details" -msgstr "Profiel bewerken" - -#: ../../Zotlabs/Module/Profiles.php:688 -msgid "View this profile" -msgstr "Profiel weergeven" - -#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771 -#: ../../include/channel.php:981 -msgid "Edit visibility" -msgstr "Zichtbaarheid bewerken" - -#: ../../Zotlabs/Module/Profiles.php:690 -msgid "Profile Tools" -msgstr "Hulpmiddelen" - -#: ../../Zotlabs/Module/Profiles.php:691 -msgid "Change cover photo" -msgstr "Omslagfoto wijzigen" - -#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:952 -msgid "Change profile photo" -msgstr "Profielfoto veranderen" - -#: ../../Zotlabs/Module/Profiles.php:693 -msgid "Create a new profile using these settings" -msgstr "Een nieuw profiel aanmaken met dit profiel als basis" - -#: ../../Zotlabs/Module/Profiles.php:694 -msgid "Clone this profile" -msgstr "Dit profiel klonen" - -#: ../../Zotlabs/Module/Profiles.php:695 -msgid "Delete this profile" -msgstr "Dit profiel verwijderen" - -#: ../../Zotlabs/Module/Profiles.php:696 -msgid "Add profile things" -msgstr "Dingen aan je profiel toevoegen" - -#: ../../Zotlabs/Module/Profiles.php:697 ../../include/conversation.php:1564 -#: ../../include/widgets.php:105 -msgid "Personal" -msgstr "Persoonlijk" - -#: ../../Zotlabs/Module/Profiles.php:699 -msgid "Relation" -msgstr "Relatie" - -#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:55 -msgid "Miscellaneous" -msgstr "Diversen" - -#: ../../Zotlabs/Module/Profiles.php:702 -msgid "Import profile from file" -msgstr "Profiel vanuit bestand importeren" - -#: ../../Zotlabs/Module/Profiles.php:703 -msgid "Export profile to file" -msgstr "Profiel naar bestand exporteren" - -#: ../../Zotlabs/Module/Profiles.php:704 -msgid "Your gender" -msgstr "Jouw geslacht" - -#: ../../Zotlabs/Module/Profiles.php:705 -msgid "Marital status" -msgstr "Burgerlijke staat" - -#: ../../Zotlabs/Module/Profiles.php:706 -msgid "Sexual preference" -msgstr "Seksuele voorkeur" - -#: ../../Zotlabs/Module/Profiles.php:709 -msgid "Profile name" -msgstr "Profielnaam" - -#: ../../Zotlabs/Module/Profiles.php:711 -msgid "This is your default profile." -msgstr "Dit is jouw standaardprofiel" - -#: ../../Zotlabs/Module/Profiles.php:713 -msgid "Your full name" -msgstr "Jouw volledige naam" - -#: ../../Zotlabs/Module/Profiles.php:714 -msgid "Title/Description" -msgstr "Titel/omschrijving" - -#: ../../Zotlabs/Module/Profiles.php:717 -msgid "Street address" -msgstr "Straat en huisnummer" - -#: ../../Zotlabs/Module/Profiles.php:718 -msgid "Locality/City" -msgstr "Woonplaats" - -#: ../../Zotlabs/Module/Profiles.php:719 -msgid "Region/State" -msgstr "Provincie/gewest/deelstaat" - -#: ../../Zotlabs/Module/Profiles.php:720 -msgid "Postal/Zip code" -msgstr "Postcode" - -#: ../../Zotlabs/Module/Profiles.php:721 -msgid "Country" -msgstr "Land" - -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Who (if applicable)" -msgstr "Wie (wanneer van toepassing)" +#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 +#: ../../Zotlabs/Module/Blocks.php:155 +msgid "Block Name" +msgstr "Bloknaam" -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" -msgstr "Voorbeelden: petra123, Petra Jansen, petra@voorbeeld.nl" +#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1258 +msgid "Title (optional)" +msgstr "Titel (optioneel)" -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Since (date)" -msgstr "Sinds (datum)" +#: ../../Zotlabs/Module/Editblock.php:133 +msgid "Edit Block" +msgstr "Blok bewerken" -#: ../../Zotlabs/Module/Profiles.php:730 -msgid "Tell us about yourself" -msgstr "Vertel ons iets over jezelf" +#: ../../Zotlabs/Module/Group.php:24 +msgid "Privacy group created." +msgstr "Privacygroep aangemaakt" -#: ../../Zotlabs/Module/Profiles.php:731 -msgid "Homepage URL" -msgstr "URL homepagina" +#: ../../Zotlabs/Module/Group.php:30 +msgid "Could not create privacy group." +msgstr "Kon privacygroep niet aanmaken" -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Hometown" -msgstr "Oorspronkelijk uit" +#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 +#: ../../include/items.php:3876 +msgid "Privacy group not found." +msgstr "Privacygroep niet gevonden" -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Political views" -msgstr "Politieke overtuigingen" +#: ../../Zotlabs/Module/Group.php:58 +msgid "Privacy group updated." +msgstr "Privacygroep bijgewerkt" -#: ../../Zotlabs/Module/Profiles.php:734 -msgid "Religious views" -msgstr "Religieuze overtuigingen" +#: ../../Zotlabs/Module/Group.php:90 +msgid "Create a group of channels." +msgstr "Privacygroep met kanalen aanmaken" -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Keywords used in directory listings" -msgstr "Trefwoorden voor in de kanalengids" +#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184 +msgid "Privacy group name: " +msgstr "Naam privacygroep: " -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Example: fishing photography software" -msgstr "Voorbeeld: muziek, fotografie, software" +#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187 +msgid "Members are visible to other channels" +msgstr "Kanalen in deze privacygroep zijn zichtbaar voor andere kanalen" -#: ../../Zotlabs/Module/Profiles.php:738 -msgid "Musical interests" -msgstr "Muzikale interesses" +#: ../../Zotlabs/Module/Group.php:111 +msgid "Privacy group removed." +msgstr "Privacygroep verwijderd." -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "Books, literature" -msgstr "Boeken/literatuur" +#: ../../Zotlabs/Module/Group.php:113 +msgid "Unable to remove privacy group." +msgstr "Verwijderen privacygroep mislukt" -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Television" -msgstr "Televisie" +#: ../../Zotlabs/Module/Group.php:183 +msgid "Privacy group editor" +msgstr "Privacygroep bewerken" -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "Film/Dance/Culture/Entertainment" -msgstr "Film/dans/cultuur/entertainment" +#: ../../Zotlabs/Module/Group.php:199 +msgid "All Connected Channels" +msgstr "Alle kanaalconnecties" -#: ../../Zotlabs/Module/Profiles.php:742 -msgid "Hobbies/Interests" -msgstr "Hobby's/interesses" +#: ../../Zotlabs/Module/Group.php:231 +msgid "Click on a channel to add or remove." +msgstr "Klik op een kanaal om deze toe te voegen of te verwijderen." -#: ../../Zotlabs/Module/Profiles.php:743 -msgid "Love/Romance" -msgstr "Liefde/romantiek" +#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." +msgstr "Ongeldige profiel-identificator" -#: ../../Zotlabs/Module/Profiles.php:745 -msgid "School/Education" -msgstr "School/opleiding" +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Profile Visibility Editor" +msgstr "Zichtbaarheid profiel " -#: ../../Zotlabs/Module/Profiles.php:746 -msgid "Contact information and social networks" -msgstr "Contactinformatie en sociale netwerken" +#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1282 +msgid "Profile" +msgstr "Profiel" -#: ../../Zotlabs/Module/Profiles.php:747 -msgid "My other channels" -msgstr "Mijn andere kanalen" +#: ../../Zotlabs/Module/Profperm.php:119 +msgid "Click on a contact to add or remove." +msgstr "Klik op een connectie om deze toe te voegen of te verwijderen" -#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:977 -msgid "Profile Image" -msgstr "Profielfoto" +#: ../../Zotlabs/Module/Profperm.php:128 +msgid "Visible To" +msgstr "Zichtbaar voor" -#: ../../Zotlabs/Module/Profiles.php:777 ../../include/channel.php:959 -#: ../../include/nav.php:91 -msgid "Edit Profiles" -msgstr "Bewerk profielen" +#: ../../Zotlabs/Module/Magic.php:71 +msgid "Hub not found." +msgstr "Hub niet gevonden." #: ../../Zotlabs/Module/Mitem.php:52 msgid "Unable to create element." @@ -3622,7 +3700,7 @@ msgid "Menu Item Permissions" msgstr "Permissies menu-item" #: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231 -#: ../../Zotlabs/Module/Settings/Channel.php:486 +#: ../../Zotlabs/Module/Settings/Channel.php:489 msgid "(click to open/close)" msgstr "(klik om te openen/sluiten)" @@ -3722,388 +3800,753 @@ msgstr "Menu-element bewerken" msgid "Link text" msgstr "Linktekst" -#: ../../Zotlabs/Module/Setup.php:184 +#: ../../Zotlabs/Module/Ratings.php:70 +msgid "No ratings" +msgstr "Geen beoordelingen" + +#: ../../Zotlabs/Module/Ratings.php:98 +msgid "Rating: " +msgstr "Beoordeling: " + +#: ../../Zotlabs/Module/Ratings.php:99 +msgid "Website: " +msgstr "Website: " + +#: ../../Zotlabs/Module/Ratings.php:101 +msgid "Description: " +msgstr "Omschrijving: " + +#: ../../Zotlabs/Module/Attach.php:13 +msgid "Item not available." +msgstr "Item is niet aanwezig." + +#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260 +#, php-format +msgctxt "mood" +msgid "%1$s is %2$s" +msgstr "%1$s is %2$s" + +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:229 +msgid "Mood" +msgstr "Stemming" + +#: ../../Zotlabs/Module/Mood.php:136 +msgid "Set your current mood and tell your friends" +msgstr "Noteer je huidige stemming en toon het aan je connecties" + +#: ../../Zotlabs/Module/Notify.php:57 +#: ../../Zotlabs/Module/Notifications.php:35 +msgid "No more system notifications." +msgstr "Geen systeemnotificaties meer." + +#: ../../Zotlabs/Module/Notify.php:61 +#: ../../Zotlabs/Module/Notifications.php:39 +msgid "System Notifications" +msgstr "Systeemnotificaties" + +#: ../../Zotlabs/Module/Photos.php:82 +msgid "Page owner information could not be retrieved." +msgstr "Informatie over de pagina-eigenaar werd niet ontvangen." + +#: ../../Zotlabs/Module/Photos.php:97 ../../Zotlabs/Module/Photos.php:734 +#: ../../Zotlabs/Module/Profile_photo.php:115 +#: ../../Zotlabs/Module/Profile_photo.php:219 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:225 +#: ../../include/photo/photo_driver.php:728 +msgid "Profile Photos" +msgstr "Profielfoto's" + +#: ../../Zotlabs/Module/Photos.php:103 ../../Zotlabs/Module/Photos.php:129 +msgid "Album not found." +msgstr "Album niet gevonden." + +#: ../../Zotlabs/Module/Photos.php:112 +msgid "Delete Album" +msgstr "Verwijder album" + +#: ../../Zotlabs/Module/Photos.php:133 +msgid "" +"Multiple storage folders exist with this album name, but within different " +"directories. Please remove the desired folder or folders using the Files " +"manager" +msgstr "Er bestaan meerdere submappen met deze albumnaam, maar verspreidt over verschillende mappen. Verwijder de gewenste map(pen) met de bestandsbeheerder." + +#: ../../Zotlabs/Module/Photos.php:190 ../../Zotlabs/Module/Photos.php:1059 +msgid "Delete Photo" +msgstr "Verwijder foto" + +#: ../../Zotlabs/Module/Photos.php:520 +msgid "No photos selected" +msgstr "Geen foto's geselecteerd" + +#: ../../Zotlabs/Module/Photos.php:569 +msgid "Access to this item is restricted." +msgstr "Toegang tot dit item is beperkt." + +#: ../../Zotlabs/Module/Photos.php:608 +#, php-format +msgid "%1$.2f MB of %2$.2f MB photo storage used." +msgstr "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt." + +#: ../../Zotlabs/Module/Photos.php:611 +#, php-format +msgid "%1$.2f MB photo storage used." +msgstr "%1$.2f MB aan foto-opslag gebruikt." + +#: ../../Zotlabs/Module/Photos.php:647 +msgid "Upload Photos" +msgstr "Foto's uploaden" + +#: ../../Zotlabs/Module/Photos.php:651 +msgid "Enter an album name" +msgstr "Vul een albumnaam in" + +#: ../../Zotlabs/Module/Photos.php:652 +msgid "or select an existing album (doubleclick)" +msgstr "of kies een bestaand album (dubbelklikken)" + +#: ../../Zotlabs/Module/Photos.php:653 +msgid "Create a status post for this upload" +msgstr "Plaats een bericht voor deze upload." + +#: ../../Zotlabs/Module/Photos.php:654 +msgid "Caption (optional):" +msgstr "Bijschrift (optioneel):" + +#: ../../Zotlabs/Module/Photos.php:655 +msgid "Description (optional):" +msgstr "Omschrijving (optioneel):" + +#: ../../Zotlabs/Module/Photos.php:686 +msgid "Album name could not be decoded" +msgstr "Albumnaam kon niet gedecodeerd worden" + +#: ../../Zotlabs/Module/Photos.php:734 +msgid "Contact Photos" +msgstr "Connectiefoto's" + +#: ../../Zotlabs/Module/Photos.php:757 +msgid "Show Newest First" +msgstr "Nieuwste eerst weergeven" + +#: ../../Zotlabs/Module/Photos.php:759 +msgid "Show Oldest First" +msgstr "Oudste eerst weergeven" + +#: ../../Zotlabs/Module/Photos.php:783 ../../Zotlabs/Module/Photos.php:1337 +#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1678 +msgid "View Photo" +msgstr "Foto weergeven" + +#: ../../Zotlabs/Module/Photos.php:814 +#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1695 +msgid "Edit Album" +msgstr "Album bewerken" + +#: ../../Zotlabs/Module/Photos.php:861 +msgid "Permission denied. Access to this item may be restricted." +msgstr "Toegang geweigerd. Toegang tot dit item kan zijn beperkt." + +#: ../../Zotlabs/Module/Photos.php:863 +msgid "Photo not available" +msgstr "Foto niet aanwezig" + +#: ../../Zotlabs/Module/Photos.php:921 +msgid "Use as profile photo" +msgstr "Als profielfoto gebruiken" + +#: ../../Zotlabs/Module/Photos.php:922 +msgid "Use as cover photo" +msgstr "Als omslagfoto gebruiken" + +#: ../../Zotlabs/Module/Photos.php:929 +msgid "Private Photo" +msgstr "Privéfoto" + +#: ../../Zotlabs/Module/Photos.php:940 ../../Zotlabs/Module/Cal.php:336 +#: ../../Zotlabs/Module/Cal.php:343 ../../Zotlabs/Module/Events.php:680 +#: ../../Zotlabs/Module/Events.php:689 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:846 +msgid "Previous" +msgstr "Vorige" + +#: ../../Zotlabs/Module/Photos.php:944 +msgid "View Full Size" +msgstr "Volledige grootte weergeven" + +#: ../../Zotlabs/Module/Photos.php:949 ../../Zotlabs/Module/Setup.php:264 +#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Cal.php:344 +#: ../../Zotlabs/Module/Events.php:681 ../../Zotlabs/Module/Events.php:690 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847 +msgid "Next" +msgstr "Volgende" + +#: ../../Zotlabs/Module/Photos.php:1033 +msgid "Edit photo" +msgstr "Foto bewerken" + +#: ../../Zotlabs/Module/Photos.php:1035 +msgid "Rotate CW (right)" +msgstr "Draai met de klok mee (naar rechts)" + +#: ../../Zotlabs/Module/Photos.php:1036 +msgid "Rotate CCW (left)" +msgstr "Draai tegen de klok in (naar links)" + +#: ../../Zotlabs/Module/Photos.php:1039 +msgid "Move photo to album" +msgstr "Verplaatst foto naar album" + +#: ../../Zotlabs/Module/Photos.php:1040 +msgid "Enter a new album name" +msgstr "Vul een nieuwe albumnaam in" + +#: ../../Zotlabs/Module/Photos.php:1041 +msgid "or select an existing one (doubleclick)" +msgstr "of kies een bestaand album (dubbelklikken)" + +#: ../../Zotlabs/Module/Photos.php:1044 +msgid "Caption" +msgstr "Bijschrift" + +#: ../../Zotlabs/Module/Photos.php:1046 +msgid "Add a Tag" +msgstr "Tag toevoegen" + +#: ../../Zotlabs/Module/Photos.php:1054 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +msgstr "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl" + +#: ../../Zotlabs/Module/Photos.php:1057 +msgid "Flag as adult in album view" +msgstr "Markeer als voor volwassenen in albumweergave" + +#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:268 +msgid "I like this (toggle)" +msgstr "Vind ik leuk" + +#: ../../Zotlabs/Module/Photos.php:1077 ../../Zotlabs/Lib/ThreadItem.php:269 +msgid "I don't like this (toggle)" +msgstr "Vind ik niet leuk" + +#: ../../Zotlabs/Module/Photos.php:1078 ../../Zotlabs/Module/Blocks.php:161 +#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Webpages.php:241 +#: ../../extend/addon/addon/cdav/include/widgets.php:123 +#: ../../include/conversation.php:1230 +msgid "Share" +msgstr "Delen" + +#: ../../Zotlabs/Module/Photos.php:1079 ../../Zotlabs/Lib/ThreadItem.php:409 +#: ../../include/conversation.php:737 +msgid "Please wait" +msgstr "Even wachten" + +#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1213 +#: ../../Zotlabs/Lib/ThreadItem.php:726 +msgid "This is you" +msgstr "Dit ben jij" + +#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Module/Photos.php:1215 +#: ../../Zotlabs/Lib/ThreadItem.php:728 ../../include/js_strings.php:6 +msgid "Comment" +msgstr "Reactie" + +#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Module/Webpages.php:247 +#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Lib/ThreadItem.php:738 +#: ../../include/page_widgets.php:43 ../../include/conversation.php:1199 +msgid "Preview" +msgstr "Voorvertoning" + +#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:577 +msgctxt "title" +msgid "Likes" +msgstr "vinden dit leuk" + +#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:577 +msgctxt "title" +msgid "Dislikes" +msgstr "vinden dit niet leuk" + +#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 +msgctxt "title" +msgid "Agree" +msgstr "eens" + +#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 +msgctxt "title" +msgid "Disagree" +msgstr "oneens" + +#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 +msgctxt "title" +msgid "Abstain" +msgstr "onthoudingen" + +#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 +msgctxt "title" +msgid "Attending" +msgstr "aanwezig" + +#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 +msgctxt "title" +msgid "Not attending" +msgstr "niet aanwezig" + +#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 +msgctxt "title" +msgid "Might attend" +msgstr "mogelijk aanwezig" + +#: ../../Zotlabs/Module/Photos.php:1132 ../../Zotlabs/Module/Photos.php:1144 +#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Lib/ThreadItem.php:198 +#: ../../include/conversation.php:1765 +msgid "View all" +msgstr "Toon alles" + +#: ../../Zotlabs/Module/Photos.php:1136 ../../Zotlabs/Lib/ThreadItem.php:190 +#: ../../include/channel.php:1190 ../../include/taxonomy.php:403 +#: ../../include/conversation.php:1789 +msgctxt "noun" +msgid "Like" +msgid_plural "Likes" +msgstr[0] "vindt dit leuk" +msgstr[1] "vinden dit leuk" + +#: ../../Zotlabs/Module/Photos.php:1141 ../../Zotlabs/Lib/ThreadItem.php:195 +#: ../../include/conversation.php:1792 +msgctxt "noun" +msgid "Dislike" +msgid_plural "Dislikes" +msgstr[0] "vindt dit niet leuk" +msgstr[1] "vinden dit niet leuk" + +#: ../../Zotlabs/Module/Photos.php:1241 +msgid "Photo Tools" +msgstr "Hulpmiddelen" + +#: ../../Zotlabs/Module/Photos.php:1250 +msgid "In This Photo:" +msgstr "Op deze foto:" + +#: ../../Zotlabs/Module/Photos.php:1255 +msgid "Map" +msgstr "Kaart" + +#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:398 +msgctxt "noun" +msgid "Likes" +msgstr "vinden dit leuk" + +#: ../../Zotlabs/Module/Photos.php:1264 ../../Zotlabs/Lib/ThreadItem.php:399 +msgctxt "noun" +msgid "Dislikes" +msgstr "vinden dit niet leuk" + +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:404 +#: ../../include/acl_selectors.php:210 +msgid "Close" +msgstr "Sluiten" + +#: ../../Zotlabs/Module/Photos.php:1343 +msgid "View Album" +msgstr "Album weergeven" + +#: ../../Zotlabs/Module/Photos.php:1354 ../../Zotlabs/Module/Photos.php:1367 +#: ../../Zotlabs/Module/Photos.php:1368 +msgid "Recent Photos" +msgstr "Recente foto's" + +#: ../../Zotlabs/Module/Setup.php:176 msgid "$Projectname Server - Setup" msgstr "$Projectname Hub - Setup" -#: ../../Zotlabs/Module/Setup.php:188 +#: ../../Zotlabs/Module/Setup.php:180 msgid "Could not connect to database." msgstr "Could not connect to database." -#: ../../Zotlabs/Module/Setup.php:192 +#: ../../Zotlabs/Module/Setup.php:184 msgid "" "Could not connect to specified site URL. Possible SSL certificate or DNS " "issue." msgstr "Could not connect to specified hub URL. Possible SSL certificate or DNS issue." -#: ../../Zotlabs/Module/Setup.php:199 +#: ../../Zotlabs/Module/Setup.php:191 msgid "Could not create table." msgstr "Could not create table." -#: ../../Zotlabs/Module/Setup.php:204 +#: ../../Zotlabs/Module/Setup.php:196 msgid "Your site database has been installed." msgstr "Your hub database has been installed." -#: ../../Zotlabs/Module/Setup.php:208 +#: ../../Zotlabs/Module/Setup.php:200 msgid "" "You may need to import the file \"install/schema_xxx.sql\" manually using a " "database client." msgstr "You may need to import the file \"install/schema_xxx.sql\" manually using a database client." -#: ../../Zotlabs/Module/Setup.php:209 ../../Zotlabs/Module/Setup.php:271 -#: ../../Zotlabs/Module/Setup.php:734 +#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263 +#: ../../Zotlabs/Module/Setup.php:745 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "Please see the file \"install/INSTALL.txt\"." -#: ../../Zotlabs/Module/Setup.php:268 +#: ../../Zotlabs/Module/Setup.php:260 msgid "System check" msgstr "System check" -#: ../../Zotlabs/Module/Setup.php:272 ../../Zotlabs/Module/Photos.php:949 -#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340 -#: ../../Zotlabs/Module/Events.php:676 ../../Zotlabs/Module/Events.php:685 -msgid "Next" -msgstr "Volgende" - -#: ../../Zotlabs/Module/Setup.php:273 +#: ../../Zotlabs/Module/Setup.php:265 msgid "Check again" msgstr "Check again" -#: ../../Zotlabs/Module/Setup.php:295 +#: ../../Zotlabs/Module/Setup.php:287 msgid "Database connection" msgstr "Database connection" -#: ../../Zotlabs/Module/Setup.php:296 +#: ../../Zotlabs/Module/Setup.php:288 msgid "" "In order to install $Projectname we need to know how to connect to your " "database." msgstr "In order to install $Projectname we need to know how to connect to your database." -#: ../../Zotlabs/Module/Setup.php:297 +#: ../../Zotlabs/Module/Setup.php:289 msgid "" "Please contact your hosting provider or site administrator if you have " "questions about these settings." msgstr "Please contact your hosting provider or server administrator if you have questions about these settings." -#: ../../Zotlabs/Module/Setup.php:298 +#: ../../Zotlabs/Module/Setup.php:290 msgid "" "The database you specify below should already exist. If it does not, please " "create it before continuing." msgstr "The database you specify below should already exist. If it does not, please create it before continuing." -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:294 msgid "Database Server Name" msgstr "Database Server Name" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:294 msgid "Default is 127.0.0.1" msgstr "Default is 127.0.0.1" -#: ../../Zotlabs/Module/Setup.php:303 +#: ../../Zotlabs/Module/Setup.php:295 msgid "Database Port" msgstr "Database Port" -#: ../../Zotlabs/Module/Setup.php:303 +#: ../../Zotlabs/Module/Setup.php:295 msgid "Communication port number - use 0 for default" msgstr "Communication port number - use 0 for default" -#: ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:296 msgid "Database Login Name" msgstr "Database Login Name" -#: ../../Zotlabs/Module/Setup.php:305 +#: ../../Zotlabs/Module/Setup.php:297 msgid "Database Login Password" msgstr "Database Login Password" -#: ../../Zotlabs/Module/Setup.php:306 +#: ../../Zotlabs/Module/Setup.php:298 msgid "Database Name" msgstr "Database Name" -#: ../../Zotlabs/Module/Setup.php:307 +#: ../../Zotlabs/Module/Setup.php:299 msgid "Database Type" msgstr "Database Type" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:355 +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 msgid "Site administrator email address" msgstr "Hub administrator email address" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:355 +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 msgid "" "Your account email address must match this in order to use the web admin " "panel." msgstr "Your account email address must match this in order to use the web admin panel." -#: ../../Zotlabs/Module/Setup.php:310 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 msgid "Website URL" msgstr "Hub URL" -#: ../../Zotlabs/Module/Setup.php:310 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 msgid "Please use SSL (https) URL if available." msgstr "Please use SSL (https) URL if available." -#: ../../Zotlabs/Module/Setup.php:311 ../../Zotlabs/Module/Setup.php:361 +#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:353 msgid "Please select a default timezone for your website" msgstr "Please select a default timezone for your hub" -#: ../../Zotlabs/Module/Setup.php:344 +#: ../../Zotlabs/Module/Setup.php:336 msgid "Site settings" msgstr "Hub settings" -#: ../../Zotlabs/Module/Setup.php:400 +#: ../../Zotlabs/Module/Setup.php:392 msgid "PHP version 5.5 or greater is required." msgstr "PHP version 5.5 or greater is required." -#: ../../Zotlabs/Module/Setup.php:401 +#: ../../Zotlabs/Module/Setup.php:393 msgid "PHP version" msgstr "PHP version" -#: ../../Zotlabs/Module/Setup.php:416 +#: ../../Zotlabs/Module/Setup.php:409 msgid "Could not find a command line version of PHP in the web server PATH." msgstr "Could not find a command line version of PHP in the web server PATH." -#: ../../Zotlabs/Module/Setup.php:417 +#: ../../Zotlabs/Module/Setup.php:410 msgid "" "If you don't have a command line version of PHP installed on server, you " "will not be able to run background polling via cron." msgstr "If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron." -#: ../../Zotlabs/Module/Setup.php:421 +#: ../../Zotlabs/Module/Setup.php:414 msgid "PHP executable path" msgstr "PHP executable path" -#: ../../Zotlabs/Module/Setup.php:421 +#: ../../Zotlabs/Module/Setup.php:414 msgid "" "Enter full path to php executable. You can leave this blank to continue the " "installation." msgstr "Enter full path to php executable. You can leave this blank to continue the installation." -#: ../../Zotlabs/Module/Setup.php:426 +#: ../../Zotlabs/Module/Setup.php:419 msgid "Command line PHP" msgstr "Command line PHP" -#: ../../Zotlabs/Module/Setup.php:435 +#: ../../Zotlabs/Module/Setup.php:429 +msgid "" +"Unable to check command line PHP, as shell_exec() is disabled. This is " +"required." +msgstr "Unable to check command line PHP, as shell_exec() is disabled. This is required." + +#: ../../Zotlabs/Module/Setup.php:432 msgid "" "The command line version of PHP on your system does not have " "\"register_argc_argv\" enabled." msgstr "The command line version of PHP on your system does not have \"register_argc_argv\" enabled." -#: ../../Zotlabs/Module/Setup.php:436 +#: ../../Zotlabs/Module/Setup.php:433 msgid "This is required for message delivery to work." msgstr "This is required for message delivery to work." -#: ../../Zotlabs/Module/Setup.php:439 +#: ../../Zotlabs/Module/Setup.php:436 msgid "PHP register_argc_argv" msgstr "PHP register_argc_argv" -#: ../../Zotlabs/Module/Setup.php:457 +#: ../../Zotlabs/Module/Setup.php:454 #, php-format msgid "" "Your max allowed total upload size is set to %s. Maximum size of one file to" " upload is set to %s. You are allowed to upload up to %d files at once." msgstr "Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once." -#: ../../Zotlabs/Module/Setup.php:462 -msgid "You can adjust these settings in the servers php.ini." -msgstr "You can adjust these settings in the servers php.ini." +#: ../../Zotlabs/Module/Setup.php:459 +msgid "You can adjust these settings in the server php.ini file." +msgstr "You can adjust these settings in the server php.ini file." -#: ../../Zotlabs/Module/Setup.php:464 +#: ../../Zotlabs/Module/Setup.php:461 msgid "PHP upload limits" msgstr "PHP upload limits" -#: ../../Zotlabs/Module/Setup.php:487 +#: ../../Zotlabs/Module/Setup.php:484 msgid "" "Error: the \"openssl_pkey_new\" function on this system is not able to " "generate encryption keys" msgstr "Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys" -#: ../../Zotlabs/Module/Setup.php:488 +#: ../../Zotlabs/Module/Setup.php:485 msgid "" "If running under Windows, please see " "\"http://www.php.net/manual/en/openssl.installation.php\"." msgstr "If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"." -#: ../../Zotlabs/Module/Setup.php:491 +#: ../../Zotlabs/Module/Setup.php:488 msgid "Generate encryption keys" msgstr "Generate encryption keys" -#: ../../Zotlabs/Module/Setup.php:503 +#: ../../Zotlabs/Module/Setup.php:500 msgid "libCurl PHP module" msgstr "libCurl PHP module" -#: ../../Zotlabs/Module/Setup.php:504 +#: ../../Zotlabs/Module/Setup.php:501 msgid "GD graphics PHP module" msgstr "GD graphics PHP module" -#: ../../Zotlabs/Module/Setup.php:505 +#: ../../Zotlabs/Module/Setup.php:502 msgid "OpenSSL PHP module" msgstr "OpenSSL PHP module" -#: ../../Zotlabs/Module/Setup.php:506 -msgid "mysqli or postgres PHP module" -msgstr "mysqli or postgres PHP module" +#: ../../Zotlabs/Module/Setup.php:503 +msgid "PDO database PHP module" +msgstr "PDO database PHP module" -#: ../../Zotlabs/Module/Setup.php:507 +#: ../../Zotlabs/Module/Setup.php:504 msgid "mb_string PHP module" msgstr "mb_string PHP module" -#: ../../Zotlabs/Module/Setup.php:508 +#: ../../Zotlabs/Module/Setup.php:505 msgid "xml PHP module" msgstr "xml PHP module" -#: ../../Zotlabs/Module/Setup.php:512 ../../Zotlabs/Module/Setup.php:514 +#: ../../Zotlabs/Module/Setup.php:509 ../../Zotlabs/Module/Setup.php:511 msgid "Apache mod_rewrite module" msgstr "Apache mod_rewrite module" -#: ../../Zotlabs/Module/Setup.php:512 +#: ../../Zotlabs/Module/Setup.php:509 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "Error: Apache webserver mod-rewrite module is required but not installed." -#: ../../Zotlabs/Module/Setup.php:518 ../../Zotlabs/Module/Setup.php:521 -msgid "proc_open" -msgstr "proc_open" +#: ../../Zotlabs/Module/Setup.php:515 ../../Zotlabs/Module/Setup.php:518 +msgid "exec" +msgstr "exec" -#: ../../Zotlabs/Module/Setup.php:518 +#: ../../Zotlabs/Module/Setup.php:515 msgid "" -"Error: proc_open is required but is either not installed or has been " +"Error: exec is required but is either not installed or has been disabled in " +"php.ini" +msgstr "Error: exec is required but is either not installed or has been disabled in php.ini" + +#: ../../Zotlabs/Module/Setup.php:521 ../../Zotlabs/Module/Setup.php:524 +msgid "shell_exec" +msgstr "shell_exec" + +#: ../../Zotlabs/Module/Setup.php:521 +msgid "" +"Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" -msgstr "Error: proc_open is required but is either not installed or has been disabled in php.ini" +msgstr "Error: shell_exec is required but is either not installed or has been disabled in php.ini" -#: ../../Zotlabs/Module/Setup.php:526 +#: ../../Zotlabs/Module/Setup.php:529 msgid "Error: libCURL PHP module required but not installed." msgstr "Error: libCURL PHP module required but not installed." -#: ../../Zotlabs/Module/Setup.php:530 +#: ../../Zotlabs/Module/Setup.php:533 msgid "" "Error: GD graphics PHP module with JPEG support required but not installed." msgstr "Error: GD graphics PHP module with JPEG support required but not installed." -#: ../../Zotlabs/Module/Setup.php:534 +#: ../../Zotlabs/Module/Setup.php:537 msgid "Error: openssl PHP module required but not installed." msgstr "Error: openssl PHP module required but not installed." -#: ../../Zotlabs/Module/Setup.php:538 -msgid "" -"Error: mysqli or postgres PHP module required but neither are installed." -msgstr "Error: mysqli or postgres PHP module required but neither are installed." +#: ../../Zotlabs/Module/Setup.php:541 +msgid "Error: PDO database PHP module required but not installed." +msgstr "Error: PDO database PHP module required but not installed." -#: ../../Zotlabs/Module/Setup.php:542 +#: ../../Zotlabs/Module/Setup.php:545 msgid "Error: mb_string PHP module required but not installed." msgstr "Error: mb_string PHP module required but not installed." -#: ../../Zotlabs/Module/Setup.php:546 +#: ../../Zotlabs/Module/Setup.php:549 msgid "Error: xml PHP module required for DAV but not installed." msgstr "Error: xml PHP module required for DAV but not installed." -#: ../../Zotlabs/Module/Setup.php:564 +#: ../../Zotlabs/Module/Setup.php:567 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\"" " in the top folder of your web server and it is unable to do so." msgstr "The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so." -#: ../../Zotlabs/Module/Setup.php:565 +#: ../../Zotlabs/Module/Setup.php:568 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can." -#: ../../Zotlabs/Module/Setup.php:566 +#: ../../Zotlabs/Module/Setup.php:569 msgid "" "At the end of this procedure, we will give you a text to save in a file " "named .htconfig.php in your Red top folder." msgstr "At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder." -#: ../../Zotlabs/Module/Setup.php:567 +#: ../../Zotlabs/Module/Setup.php:570 msgid "" "You can alternatively skip this procedure and perform a manual installation." " Please see the file \"install/INSTALL.txt\" for instructions." msgstr "You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions." -#: ../../Zotlabs/Module/Setup.php:570 +#: ../../Zotlabs/Module/Setup.php:573 msgid ".htconfig.php is writable" msgstr ".htconfig.php is writable" -#: ../../Zotlabs/Module/Setup.php:584 +#: ../../Zotlabs/Module/Setup.php:587 msgid "" -"Red uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." -msgstr "Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering." +"This software uses the Smarty3 template engine to render its web views. " +"Smarty3 compiles templates to PHP to speed up rendering." +msgstr "This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering." -#: ../../Zotlabs/Module/Setup.php:585 +#: ../../Zotlabs/Module/Setup.php:588 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder." -#: ../../Zotlabs/Module/Setup.php:586 ../../Zotlabs/Module/Setup.php:607 +#: ../../Zotlabs/Module/Setup.php:589 ../../Zotlabs/Module/Setup.php:610 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has" " write access to this folder." msgstr "Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder." -#: ../../Zotlabs/Module/Setup.php:587 +#: ../../Zotlabs/Module/Setup.php:590 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains." -#: ../../Zotlabs/Module/Setup.php:590 +#: ../../Zotlabs/Module/Setup.php:593 #, php-format msgid "%s is writable" msgstr "%s is writable" -#: ../../Zotlabs/Module/Setup.php:606 +#: ../../Zotlabs/Module/Setup.php:609 msgid "" "This software uses the store directory to save uploaded files. The web " -"server needs to have write access to the store directory under the Red top " -"level folder" -msgstr "This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder" +"server needs to have write access to the store directory under the top level" +" web folder" +msgstr "This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder" -#: ../../Zotlabs/Module/Setup.php:610 +#: ../../Zotlabs/Module/Setup.php:613 msgid "store is writable" msgstr "store is writable" -#: ../../Zotlabs/Module/Setup.php:643 +#: ../../Zotlabs/Module/Setup.php:646 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access" " to this site." msgstr "SSL certificate cannot be validated. Fix certificate or disable https access to this hub." -#: ../../Zotlabs/Module/Setup.php:644 +#: ../../Zotlabs/Module/Setup.php:647 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "If you have https access to your hub or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!" -#: ../../Zotlabs/Module/Setup.php:645 +#: ../../Zotlabs/Module/Setup.php:648 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "This restriction is incorporated because public posts from you may for example contain references to images on your own hub." -#: ../../Zotlabs/Module/Setup.php:646 +#: ../../Zotlabs/Module/Setup.php:649 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "If your certificate is not recognized, members of other hubs (who may themselves have valid certificates) will get a warning message on their own hub complaining about security issues." -#: ../../Zotlabs/Module/Setup.php:647 +#: ../../Zotlabs/Module/Setup.php:650 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "This can cause usability issues elsewhere (not just on your own hub) so we must insist on this requirement." -#: ../../Zotlabs/Module/Setup.php:648 +#: ../../Zotlabs/Module/Setup.php:651 msgid "" "Providers are available that issue free certificates which are browser-" "valid." msgstr "Providers are available that issue free certificates which are browser-valid." -#: ../../Zotlabs/Module/Setup.php:650 +#: ../../Zotlabs/Module/Setup.php:653 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -4111,646 +4554,379 @@ msgid "" "server communications." msgstr "If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications." -#: ../../Zotlabs/Module/Setup.php:653 +#: ../../Zotlabs/Module/Setup.php:655 msgid "SSL certificate validation" msgstr "SSL certificate validation" -#: ../../Zotlabs/Module/Setup.php:659 +#: ../../Zotlabs/Module/Setup.php:661 msgid "" "Url rewrite in .htaccess is not working. Check your server " "configuration.Test: " msgstr "Url rewrite in .htaccess is not working. Check your server configuration.Test: " -#: ../../Zotlabs/Module/Setup.php:662 +#: ../../Zotlabs/Module/Setup.php:664 msgid "Url rewrite is working" msgstr "Url rewrite is working" -#: ../../Zotlabs/Module/Setup.php:671 +#: ../../Zotlabs/Module/Setup.php:678 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "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." -#: ../../Zotlabs/Module/Setup.php:695 +#: ../../Zotlabs/Module/Setup.php:702 +#: ../../extend/addon/addon/cdav/cdav.php:41 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:385 msgid "Errors encountered creating database tables." msgstr "Errors encountered creating database tables." -#: ../../Zotlabs/Module/Setup.php:732 +#: ../../Zotlabs/Module/Setup.php:743 msgid "<h1>What next</h1>" msgstr "<h1>What next</h1>" -#: ../../Zotlabs/Module/Setup.php:733 +#: ../../Zotlabs/Module/Setup.php:744 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the " "poller." msgstr "IMPORTANT: You will need to [manually] setup a scheduled task for the poller." -#: ../../Zotlabs/Module/Lostpass.php:19 -msgid "No valid account found." -msgstr "Geen geldige account gevonden." - -#: ../../Zotlabs/Module/Lostpass.php:33 -msgid "Password reset request issued. Check your email." -msgstr "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail." - -#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107 -#, php-format -msgid "Site Member (%s)" -msgstr "Lid van hub (%s)" - -#: ../../Zotlabs/Module/Lostpass.php:44 -#, php-format -msgid "Password reset requested at %s" -msgstr "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend" - -#: ../../Zotlabs/Module/Lostpass.php:67 -msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." -msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt." - -#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1747 -msgid "Password Reset" -msgstr "Wachtwoord vergeten?" - -#: ../../Zotlabs/Module/Lostpass.php:91 -msgid "Your password has been reset as requested." -msgstr "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht." - -#: ../../Zotlabs/Module/Lostpass.php:92 -msgid "Your new password is" -msgstr "Jouw nieuwe wachtwoord is" - -#: ../../Zotlabs/Module/Lostpass.php:93 -msgid "Save or copy your new password - and then" -msgstr "Kopieer of sla je nieuwe wachtwoord op - en" - -#: ../../Zotlabs/Module/Lostpass.php:94 -msgid "click here to login" -msgstr "klik dan hier om in te loggen" - -#: ../../Zotlabs/Module/Lostpass.php:95 -msgid "" -"Your password may be changed from the <em>Settings</em> page after " -"successful login." -msgstr "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd." - -#: ../../Zotlabs/Module/Lostpass.php:112 -#, php-format -msgid "Your password has changed at %s" -msgstr "Jouw wachtwoord op %s is veranderd" - -#: ../../Zotlabs/Module/Lostpass.php:127 -msgid "Forgot your Password?" -msgstr "Wachtwoord vergeten?" - -#: ../../Zotlabs/Module/Lostpass.php:128 -msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." -msgstr "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies." - -#: ../../Zotlabs/Module/Lostpass.php:129 -msgid "Email Address" -msgstr "E-mailadres" - -#: ../../Zotlabs/Module/Lostpass.php:130 -msgid "Reset" -msgstr "Opnieuw instellen" - -#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260 -#, php-format -msgctxt "mood" -msgid "%1$s is %2$s" -msgstr "%1$s is %2$s" - -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:227 -msgid "Mood" -msgstr "Stemming" - -#: ../../Zotlabs/Module/Mood.php:136 -msgid "Set your current mood and tell your friends" -msgstr "Noteer je huidige stemming en toon het aan je connecties" - -#: ../../Zotlabs/Module/Removeme.php:35 -msgid "" -"Channel removals are not allowed within 48 hours of changing the account " -"password." -msgstr "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd." - -#: ../../Zotlabs/Module/Removeme.php:60 -msgid "Remove This Channel" -msgstr "Verwijder dit kanaal" - -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "WARNING: " -msgstr "WAARSCHUWING: " - -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "This channel will be completely removed from the network. " -msgstr "Dit kanaal wordt volledig uit het $Projectname-netwerk verwijderd." - -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "This action is permanent and can not be undone!" -msgstr "Deze handeling is van permanente aard en kan niet meer worden teruggedraaid!" - -#: ../../Zotlabs/Module/Removeme.php:62 -#: ../../Zotlabs/Module/Removeaccount.php:59 -msgid "Please enter your password for verification:" -msgstr "Vul je wachtwoord in ter verificatie:" - -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "Remove this channel and all its clones from the network" -msgstr "Dit kanaal en alle klonen hiervan uit het $Projectname-netwerk verwijderen" - -#: ../../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 "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het $Projectname-netwerk verwijderd" - -#: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:544 -msgid "Remove Channel" -msgstr "Kanaal verwijderen" - -#: ../../Zotlabs/Module/Notify.php:57 -#: ../../Zotlabs/Module/Notifications.php:98 -msgid "No more system notifications." -msgstr "Geen systeemnotificaties meer." - -#: ../../Zotlabs/Module/Notify.php:61 -#: ../../Zotlabs/Module/Notifications.php:102 -msgid "System Notifications" -msgstr "Systeemnotificaties" - -#: ../../Zotlabs/Module/Match.php:26 -msgid "Profile Match" -msgstr "Profielovereenkomst" - -#: ../../Zotlabs/Module/Match.php:35 -msgid "No keywords to match. Please add keywords to your default profile." -msgstr "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe." - -#: ../../Zotlabs/Module/Match.php:67 -msgid "is interested in:" -msgstr "is geïnteresseerd in:" - -#: ../../Zotlabs/Module/Match.php:68 ../../Zotlabs/Module/Suggest.php:56 -#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1034 -#: ../../include/connections.php:78 ../../include/conversation.php:955 -#: ../../include/widgets.php:147 ../../include/widgets.php:184 -msgid "Connect" -msgstr "Verbinden" - -#: ../../Zotlabs/Module/Match.php:74 -msgid "No matches" -msgstr "Geen overeenkomsten" +#: ../../Zotlabs/Module/Editpost.php:35 +msgid "Item is not editable" +msgstr "Item is niet te bewerken" -#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 +#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25 msgid "This site is not a directory server" msgstr "Deze hub is geen kanalengidshub (directoryserver)" -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" -msgstr "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig" - -#: ../../Zotlabs/Module/Magic.php:71 -msgid "Hub not found." -msgstr "Hub niet gevonden." - -#: ../../Zotlabs/Module/Photos.php:82 -msgid "Page owner information could not be retrieved." -msgstr "Informatie over de pagina-eigenaar werd niet ontvangen." - -#: ../../Zotlabs/Module/Photos.php:97 ../../Zotlabs/Module/Photos.php:734 -#: ../../Zotlabs/Module/Profile_photo.php:115 -#: ../../Zotlabs/Module/Profile_photo.php:212 -#: ../../Zotlabs/Module/Profile_photo.php:311 -#: ../../include/photo/photo_driver.php:728 -msgid "Profile Photos" -msgstr "Profielfoto's" - -#: ../../Zotlabs/Module/Photos.php:103 ../../Zotlabs/Module/Photos.php:129 -msgid "Album not found." -msgstr "Album niet gevonden." - -#: ../../Zotlabs/Module/Photos.php:112 -msgid "Delete Album" -msgstr "Verwijder album" +#: ../../Zotlabs/Module/New_channel.php:140 +msgid "Create Channel" +msgstr "Kanaal aanmaken" -#: ../../Zotlabs/Module/Photos.php:133 +#: ../../Zotlabs/Module/New_channel.php:141 msgid "" -"Multiple storage folders exist with this album name, but within different " -"directories. Please remove the desired folder or folders using the Files " -"manager" -msgstr "Er bestaan meerdere submappen met deze albumnaam, maar verspreidt over verschillende mappen. Verwijder de gewenste map(pen) met de bestandsbeheerder." - -#: ../../Zotlabs/Module/Photos.php:190 ../../Zotlabs/Module/Photos.php:1059 -msgid "Delete Photo" -msgstr "Verwijder foto" - -#: ../../Zotlabs/Module/Photos.php:509 ../../Zotlabs/Module/Display.php:17 -#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Search.php:17 -#: ../../Zotlabs/Module/Viewconnections.php:23 -#: ../../Zotlabs/Module/Directory.php:63 -msgid "Public access denied." -msgstr "Openbare toegang geweigerd." - -#: ../../Zotlabs/Module/Photos.php:520 -msgid "No photos selected" -msgstr "Geen foto's geselecteerd" - -#: ../../Zotlabs/Module/Photos.php:569 -msgid "Access to this item is restricted." -msgstr "Toegang tot dit item is beperkt." - -#: ../../Zotlabs/Module/Photos.php:608 -#, php-format -msgid "%1$.2f MB of %2$.2f MB photo storage used." -msgstr "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt." - -#: ../../Zotlabs/Module/Photos.php:611 -#, php-format -msgid "%1$.2f MB photo storage used." -msgstr "%1$.2f MB aan foto-opslag gebruikt." - -#: ../../Zotlabs/Module/Photos.php:647 -msgid "Upload Photos" -msgstr "Foto's uploaden" - -#: ../../Zotlabs/Module/Photos.php:651 -msgid "Enter an album name" -msgstr "Vul een albumnaam in" - -#: ../../Zotlabs/Module/Photos.php:652 -msgid "or select an existing album (doubleclick)" -msgstr "of kies een bestaand album (dubbelklikken)" - -#: ../../Zotlabs/Module/Photos.php:653 -msgid "Create a status post for this upload" -msgstr "Plaats een bericht voor deze upload." +"A channel is your identity on this network. It can represent a person, a " +"blog, or a forum to name a few. Channels can make connections with other " +"channels to share information with highly detailed permissions." +msgstr "Een kanaal is jouw identiteit in dit netwerk. Het kan bijvoorbeeld een persoon, een blog of een forum vertegenwoordigen. Door met elkaar te verbinden kunnen kanalen, met behulp van uitgebreide permissies, informatie uitwisselen." -#: ../../Zotlabs/Module/Photos.php:654 -msgid "Caption (optional):" -msgstr "Bijschrift (optioneel):" +#: ../../Zotlabs/Module/New_channel.php:142 +msgid "" +"or <a href=\"import\">import an existing channel</a> from another location." +msgstr "Of <a href=\"import\">importeer een bestaand kanaal</a> vanaf een andere locatie" -#: ../../Zotlabs/Module/Photos.php:655 -msgid "Description (optional):" -msgstr "Omschrijving (optioneel):" +#: ../../Zotlabs/Module/Notifications.php:40 ../../include/nav.php:194 +msgid "Mark all system notifications seen" +msgstr "Markeer alle systeemnotificaties als bekeken" -#: ../../Zotlabs/Module/Photos.php:686 -msgid "Album name could not be decoded" -msgstr "Albumnaam kon niet gedecodeerd worden" +#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:230 +#: ../../include/conversation.php:941 +msgid "Poke" +msgstr "Aanstoten" -#: ../../Zotlabs/Module/Photos.php:734 -msgid "Contact Photos" -msgstr "Connectiefoto's" +#: ../../Zotlabs/Module/Poke.php:169 +msgid "Poke somebody" +msgstr "Iemand aanstoten" -#: ../../Zotlabs/Module/Photos.php:757 -msgid "Show Newest First" -msgstr "Nieuwste eerst weergeven" +#: ../../Zotlabs/Module/Poke.php:172 +msgid "Poke/Prod" +msgstr "Aanstoten/porren" -#: ../../Zotlabs/Module/Photos.php:759 -msgid "Show Oldest First" -msgstr "Oudste eerst weergeven" +#: ../../Zotlabs/Module/Poke.php:173 +msgid "Poke, prod or do other things to somebody" +msgstr "Iemand bijvoorbeeld aanstoten of poren" -#: ../../Zotlabs/Module/Photos.php:783 ../../Zotlabs/Module/Photos.php:1337 -#: ../../Zotlabs/Module/Embedphotos.php:141 ../../include/widgets.php:1677 -msgid "View Photo" -msgstr "Foto weergeven" +#: ../../Zotlabs/Module/Poke.php:180 +msgid "Recipient" +msgstr "Ontvanger" -#: ../../Zotlabs/Module/Photos.php:814 -#: ../../Zotlabs/Module/Embedphotos.php:157 ../../include/widgets.php:1694 -msgid "Edit Album" -msgstr "Album bewerken" +#: ../../Zotlabs/Module/Poke.php:181 +msgid "Choose what you wish to do to recipient" +msgstr "Kies wat je met de ontvanger wil doen" -#: ../../Zotlabs/Module/Photos.php:861 -msgid "Permission denied. Access to this item may be restricted." -msgstr "Toegang geweigerd. Toegang tot dit item kan zijn beperkt." +#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185 +msgid "Make this post private" +msgstr "Maak dit bericht privé" -#: ../../Zotlabs/Module/Photos.php:863 -msgid "Photo not available" -msgstr "Foto niet aanwezig" +#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:183 +#: ../../Zotlabs/Module/Profiles.php:240 ../../Zotlabs/Module/Profiles.php:619 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62 +msgid "Profile not found." +msgstr "Profiel niet gevonden." -#: ../../Zotlabs/Module/Photos.php:921 -msgid "Use as profile photo" -msgstr "Als profielfoto gebruiken" +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." +msgstr "Profiel verwijderd." -#: ../../Zotlabs/Module/Photos.php:922 -msgid "Use as cover photo" -msgstr "Als omslagfoto gebruiken" +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104 +msgid "Profile-" +msgstr "Profiel-" -#: ../../Zotlabs/Module/Photos.php:929 -msgid "Private Photo" -msgstr "Privéfoto" +#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 +msgid "New profile created." +msgstr "Nieuw profiel aangemaakt." -#: ../../Zotlabs/Module/Photos.php:940 ../../Zotlabs/Module/Cal.php:332 -#: ../../Zotlabs/Module/Cal.php:339 ../../Zotlabs/Module/Events.php:675 -#: ../../Zotlabs/Module/Events.php:684 -msgid "Previous" -msgstr "Vorige" +#: ../../Zotlabs/Module/Profiles.php:110 +msgid "Profile unavailable to clone." +msgstr "Profiel niet beschikbaar om te klonen" -#: ../../Zotlabs/Module/Photos.php:944 -msgid "View Full Size" -msgstr "Volledige grootte weergeven" +#: ../../Zotlabs/Module/Profiles.php:145 +msgid "Profile unavailable to export." +msgstr "Geen profiel beschikbaar om te exporteren" -#: ../../Zotlabs/Module/Photos.php:1033 -msgid "Edit photo" -msgstr "Foto bewerken" +#: ../../Zotlabs/Module/Profiles.php:250 +msgid "Profile Name is required." +msgstr "Profielnaam is vereist" -#: ../../Zotlabs/Module/Photos.php:1035 -msgid "Rotate CW (right)" -msgstr "Draai met de klok mee (naar rechts)" +#: ../../Zotlabs/Module/Profiles.php:421 +msgid "Marital Status" +msgstr "Huwelijke status" -#: ../../Zotlabs/Module/Photos.php:1036 -msgid "Rotate CCW (left)" -msgstr "Draai tegen de klok in (naar links)" +#: ../../Zotlabs/Module/Profiles.php:425 +msgid "Romantic Partner" +msgstr "Romantische partner" -#: ../../Zotlabs/Module/Photos.php:1039 -msgid "Move photo to album" -msgstr "Verplaatst foto naar album" +#: ../../Zotlabs/Module/Profiles.php:429 ../../Zotlabs/Module/Profiles.php:730 +msgid "Likes" +msgstr "Houdt van" -#: ../../Zotlabs/Module/Photos.php:1040 -msgid "Enter a new album name" -msgstr "Vul een nieuwe albumnaam in" +#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:731 +msgid "Dislikes" +msgstr "Houdt niet van" -#: ../../Zotlabs/Module/Photos.php:1041 -msgid "or select an existing one (doubleclick)" -msgstr "of kies een bestaand album (dubbelklikken)" +#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:738 +msgid "Work/Employment" +msgstr "Werk/arbeid" -#: ../../Zotlabs/Module/Photos.php:1044 -msgid "Caption" -msgstr "Bijschrift" +#: ../../Zotlabs/Module/Profiles.php:440 +msgid "Religion" +msgstr "Religie" -#: ../../Zotlabs/Module/Photos.php:1046 -msgid "Add a Tag" -msgstr "Tag toevoegen" +#: ../../Zotlabs/Module/Profiles.php:444 +msgid "Political Views" +msgstr "Politieke overtuigingen" -#: ../../Zotlabs/Module/Photos.php:1054 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" -msgstr "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl" +#: ../../Zotlabs/Module/Profiles.php:448 +#: ../../extend/addon/addon/openid/MysqlProvider.php:74 +msgid "Gender" +msgstr "Geslacht" -#: ../../Zotlabs/Module/Photos.php:1057 -msgid "Flag as adult in album view" -msgstr "Markeer als voor volwassenen in albumweergave" +#: ../../Zotlabs/Module/Profiles.php:452 +msgid "Sexual Preference" +msgstr "Seksuele voorkeur" -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:268 -msgid "I like this (toggle)" -msgstr "Vind ik leuk" +#: ../../Zotlabs/Module/Profiles.php:456 +msgid "Homepage" +msgstr "Homepage" -#: ../../Zotlabs/Module/Photos.php:1077 ../../Zotlabs/Lib/ThreadItem.php:269 -msgid "I don't like this (toggle)" -msgstr "Vind ik niet leuk" +#: ../../Zotlabs/Module/Profiles.php:460 +msgid "Interests" +msgstr "Interesses" -#: ../../Zotlabs/Module/Photos.php:1078 ../../Zotlabs/Module/Blocks.php:161 -#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Webpages.php:241 -#: ../../include/conversation.php:1232 -msgid "Share" -msgstr "Delen" +#: ../../Zotlabs/Module/Profiles.php:554 +msgid "Profile updated." +msgstr "Profiel bijgewerkt" -#: ../../Zotlabs/Module/Photos.php:1079 ../../Zotlabs/Lib/ThreadItem.php:405 -#: ../../include/conversation.php:741 -msgid "Please wait" -msgstr "Even wachten" +#: ../../Zotlabs/Module/Profiles.php:638 +msgid "Hide your connections list from viewers of this profile" +msgstr "Laat de lijst met connecties niet aan bezoekers van dit profiel zien." -#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1213 -#: ../../Zotlabs/Lib/ThreadItem.php:722 -msgid "This is you" -msgstr "Dit ben jij" +#: ../../Zotlabs/Module/Profiles.php:680 +msgid "Edit Profile Details" +msgstr "Profiel bewerken" -#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Module/Photos.php:1215 -#: ../../Zotlabs/Lib/ThreadItem.php:724 ../../include/js_strings.php:6 -msgid "Comment" -msgstr "Reactie" +#: ../../Zotlabs/Module/Profiles.php:682 +msgid "View this profile" +msgstr "Profiel weergeven" -#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Module/Webpages.php:247 -#: ../../Zotlabs/Module/Events.php:473 ../../Zotlabs/Lib/ThreadItem.php:734 -#: ../../include/page_widgets.php:43 ../../include/conversation.php:1201 -msgid "Preview" -msgstr "Voorvertoning" +#: ../../Zotlabs/Module/Profiles.php:683 ../../Zotlabs/Module/Profiles.php:765 +#: ../../include/channel.php:983 +msgid "Edit visibility" +msgstr "Zichtbaarheid bewerken" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:577 -msgctxt "title" -msgid "Likes" -msgstr "vinden dit leuk" +#: ../../Zotlabs/Module/Profiles.php:684 +msgid "Profile Tools" +msgstr "Hulpmiddelen" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:577 -msgctxt "title" -msgid "Dislikes" -msgstr "vinden dit niet leuk" +#: ../../Zotlabs/Module/Profiles.php:685 +msgid "Change cover photo" +msgstr "Omslagfoto wijzigen" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 -msgctxt "title" -msgid "Agree" -msgstr "eens" +#: ../../Zotlabs/Module/Profiles.php:686 ../../include/channel.php:954 +msgid "Change profile photo" +msgstr "Profielfoto veranderen" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 -msgctxt "title" -msgid "Disagree" -msgstr "oneens" +#: ../../Zotlabs/Module/Profiles.php:687 +msgid "Create a new profile using these settings" +msgstr "Een nieuw profiel aanmaken met dit profiel als basis" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:578 -msgctxt "title" -msgid "Abstain" -msgstr "onthoudingen" +#: ../../Zotlabs/Module/Profiles.php:688 +msgid "Clone this profile" +msgstr "Dit profiel klonen" -#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 -msgctxt "title" -msgid "Attending" -msgstr "aanwezig" +#: ../../Zotlabs/Module/Profiles.php:689 +msgid "Delete this profile" +msgstr "Dit profiel verwijderen" -#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 -msgctxt "title" -msgid "Not attending" -msgstr "niet aanwezig" +#: ../../Zotlabs/Module/Profiles.php:690 +msgid "Add profile things" +msgstr "Dingen aan je profiel toevoegen" -#: ../../Zotlabs/Module/Photos.php:1115 ../../include/conversation.php:579 -msgctxt "title" -msgid "Might attend" -msgstr "mogelijk aanwezig" +#: ../../Zotlabs/Module/Profiles.php:691 ../../include/widgets.php:105 +#: ../../include/conversation.php:1567 +msgid "Personal" +msgstr "Persoonlijk" -#: ../../Zotlabs/Module/Photos.php:1132 ../../Zotlabs/Module/Photos.php:1144 -#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Lib/ThreadItem.php:198 -#: ../../include/conversation.php:1763 -msgid "View all" -msgstr "Toon alles" +#: ../../Zotlabs/Module/Profiles.php:693 +msgid "Relation" +msgstr "Relatie" -#: ../../Zotlabs/Module/Photos.php:1136 ../../Zotlabs/Lib/ThreadItem.php:190 -#: ../../include/channel.php:1182 ../../include/conversation.php:1787 -#: ../../include/taxonomy.php:403 -msgctxt "noun" -msgid "Like" -msgid_plural "Likes" -msgstr[0] "vindt dit leuk" -msgstr[1] "vinden dit leuk" +#: ../../Zotlabs/Module/Profiles.php:694 ../../include/datetime.php:55 +msgid "Miscellaneous" +msgstr "Diversen" -#: ../../Zotlabs/Module/Photos.php:1141 ../../Zotlabs/Lib/ThreadItem.php:195 -#: ../../include/conversation.php:1790 -msgctxt "noun" -msgid "Dislike" -msgid_plural "Dislikes" -msgstr[0] "vindt dit niet leuk" -msgstr[1] "vinden dit niet leuk" +#: ../../Zotlabs/Module/Profiles.php:696 +msgid "Import profile from file" +msgstr "Profiel vanuit bestand importeren" -#: ../../Zotlabs/Module/Photos.php:1241 -msgid "Photo Tools" -msgstr "Hulpmiddelen" +#: ../../Zotlabs/Module/Profiles.php:697 +msgid "Export profile to file" +msgstr "Profiel naar bestand exporteren" -#: ../../Zotlabs/Module/Photos.php:1250 -msgid "In This Photo:" -msgstr "Op deze foto:" +#: ../../Zotlabs/Module/Profiles.php:698 +msgid "Your gender" +msgstr "Jouw geslacht" -#: ../../Zotlabs/Module/Photos.php:1255 -msgid "Map" -msgstr "Kaart" +#: ../../Zotlabs/Module/Profiles.php:699 +msgid "Marital status" +msgstr "Burgerlijke staat" -#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:394 -msgctxt "noun" -msgid "Likes" -msgstr "vinden dit leuk" +#: ../../Zotlabs/Module/Profiles.php:700 +msgid "Sexual preference" +msgstr "Seksuele voorkeur" -#: ../../Zotlabs/Module/Photos.php:1264 ../../Zotlabs/Lib/ThreadItem.php:395 -msgctxt "noun" -msgid "Dislikes" -msgstr "vinden dit niet leuk" +#: ../../Zotlabs/Module/Profiles.php:703 +msgid "Profile name" +msgstr "Profielnaam" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:400 -#: ../../include/acl_selectors.php:181 -msgid "Close" -msgstr "Sluiten" +#: ../../Zotlabs/Module/Profiles.php:705 +msgid "This is your default profile." +msgstr "Dit is jouw standaardprofiel" -#: ../../Zotlabs/Module/Photos.php:1343 -msgid "View Album" -msgstr "Album weergeven" +#: ../../Zotlabs/Module/Profiles.php:707 +msgid "Your full name" +msgstr "Jouw volledige naam" -#: ../../Zotlabs/Module/Photos.php:1354 ../../Zotlabs/Module/Photos.php:1367 -#: ../../Zotlabs/Module/Photos.php:1368 -msgid "Recent Photos" -msgstr "Recente foto's" +#: ../../Zotlabs/Module/Profiles.php:708 +msgid "Title/Description" +msgstr "Titel/omschrijving" -#: ../../Zotlabs/Module/New_channel.php:134 -#: ../../Zotlabs/Module/Register.php:237 -msgid "Name or caption" -msgstr "Naam" +#: ../../Zotlabs/Module/Profiles.php:711 +msgid "Street address" +msgstr "Straat en huisnummer" -#: ../../Zotlabs/Module/New_channel.php:134 -#: ../../Zotlabs/Module/Register.php:237 -msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\"" -msgstr "Voorbeelden: \"Jan Pietersen\", \"Willems weblog\", \"Computerforum\"" +#: ../../Zotlabs/Module/Profiles.php:712 +msgid "Locality/City" +msgstr "Woonplaats" -#: ../../Zotlabs/Module/New_channel.php:136 -#: ../../Zotlabs/Module/Register.php:239 -msgid "Choose a short nickname" -msgstr "Korte bijnaam" +#: ../../Zotlabs/Module/Profiles.php:713 +msgid "Region/State" +msgstr "Provincie/gewest/deelstaat" -#: ../../Zotlabs/Module/New_channel.php:136 -#: ../../Zotlabs/Module/Register.php:239 -#, php-format -msgid "" -"Your nickname will be used to create an easy to remember channel address " -"e.g. nickname%s" -msgstr "Deze bijnaam wordt gebruikt om een makkelijk te onthouden kanaaladres van jouw kanaal aan te maken, die je dan met anderen kunt delen. Bijvoorbeeld: bijnaam%s" +#: ../../Zotlabs/Module/Profiles.php:714 +msgid "Postal/Zip code" +msgstr "Postcode" -#: ../../Zotlabs/Module/New_channel.php:137 -#: ../../Zotlabs/Module/Register.php:240 -msgid "Channel role and privacy" -msgstr "Kanaaltype en privacy" +#: ../../Zotlabs/Module/Profiles.php:715 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1161 +msgid "Country" +msgstr "Land" -#: ../../Zotlabs/Module/New_channel.php:137 -#: ../../Zotlabs/Module/Register.php:240 -msgid "Select a channel role with your privacy requirements." -msgstr "Kies een kanaaltype met het door jou gewenste privacyniveau." +#: ../../Zotlabs/Module/Profiles.php:720 +msgid "Who (if applicable)" +msgstr "Wie (wanneer van toepassing)" -#: ../../Zotlabs/Module/New_channel.php:137 -#: ../../Zotlabs/Module/Register.php:240 -msgid "Read more about roles" -msgstr "Lees meer over kanaaltypes" +#: ../../Zotlabs/Module/Profiles.php:720 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "Voorbeelden: petra123, Petra Jansen, petra@voorbeeld.nl" -#: ../../Zotlabs/Module/New_channel.php:140 -msgid "Create Channel" -msgstr "Kanaal aanmaken" +#: ../../Zotlabs/Module/Profiles.php:721 +msgid "Since (date)" +msgstr "Sinds (datum)" -#: ../../Zotlabs/Module/New_channel.php:141 -msgid "" -"A channel is your identity on this network. It can represent a person, a " -"blog, or a forum to name a few. Channels can make connections with other " -"channels to share information with highly detailed permissions." -msgstr "Een kanaal is jouw identiteit in dit netwerk. Het kan bijvoorbeeld een persoon, een blog of een forum vertegenwoordigen. Door met elkaar te verbinden kunnen kanalen, met behulp van uitgebreide permissies, informatie uitwisselen." +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "Tell us about yourself" +msgstr "Vertel ons iets over jezelf" -#: ../../Zotlabs/Module/New_channel.php:142 -msgid "" -"or <a href=\"import\">import an existing channel</a> from another location." -msgstr "Of <a href=\"import\">importeer een bestaand kanaal</a> vanaf een andere locatie" +#: ../../Zotlabs/Module/Profiles.php:725 +#: ../../extend/addon/addon/openid/MysqlProvider.php:68 +msgid "Homepage URL" +msgstr "URL homepagina" -#: ../../Zotlabs/Module/Ping.php:265 -msgid "sent you a private message" -msgstr "stuurde jou een privébericht" +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Hometown" +msgstr "Oorspronkelijk uit" -#: ../../Zotlabs/Module/Ping.php:313 -msgid "added your channel" -msgstr "voegde jouw kanaal toe" +#: ../../Zotlabs/Module/Profiles.php:727 +msgid "Political views" +msgstr "Politieke overtuigingen" -#: ../../Zotlabs/Module/Ping.php:323 -msgid "g A l F d" -msgstr "G:i, l d F" +#: ../../Zotlabs/Module/Profiles.php:728 +msgid "Religious views" +msgstr "Religieuze overtuigingen" -#: ../../Zotlabs/Module/Ping.php:346 -msgid "[today]" -msgstr "[vandaag]" +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Keywords used in directory listings" +msgstr "Trefwoorden voor in de kanalengids" -#: ../../Zotlabs/Module/Ping.php:355 -msgid "posted an event" -msgstr "plaatste een gebeurtenis" +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Example: fishing photography software" +msgstr "Voorbeeld: muziek, fotografie, software" -#: ../../Zotlabs/Module/Notifications.php:30 -msgid "Invalid request identifier." -msgstr "Ongeldige verzoek identificator (request identifier)" +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Musical interests" +msgstr "Muzikale interesses" -#: ../../Zotlabs/Module/Notifications.php:39 -msgid "Discard" -msgstr "Annuleren" +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Books, literature" +msgstr "Boeken/literatuur" -#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:196 -msgid "Mark all system notifications seen" -msgstr "Markeer alle systeemnotificaties als bekeken" +#: ../../Zotlabs/Module/Profiles.php:734 +msgid "Television" +msgstr "Televisie" -#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:228 -#: ../../include/conversation.php:959 -msgid "Poke" -msgstr "Aanstoten" +#: ../../Zotlabs/Module/Profiles.php:735 +msgid "Film/Dance/Culture/Entertainment" +msgstr "Film/dans/cultuur/entertainment" -#: ../../Zotlabs/Module/Poke.php:169 -msgid "Poke somebody" -msgstr "Iemand aanstoten" +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Hobbies/Interests" +msgstr "Hobby's/interesses" -#: ../../Zotlabs/Module/Poke.php:172 -msgid "Poke/Prod" -msgstr "Aanstoten/porren" +#: ../../Zotlabs/Module/Profiles.php:737 +msgid "Love/Romance" +msgstr "Liefde/romantiek" -#: ../../Zotlabs/Module/Poke.php:173 -msgid "Poke, prod or do other things to somebody" -msgstr "Iemand bijvoorbeeld aanstoten of poren" +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "School/Education" +msgstr "School/opleiding" -#: ../../Zotlabs/Module/Poke.php:180 -msgid "Recipient" -msgstr "Ontvanger" +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Contact information and social networks" +msgstr "Contactinformatie en sociale netwerken" -#: ../../Zotlabs/Module/Poke.php:181 -msgid "Choose what you wish to do to recipient" -msgstr "Kies wat je met de ontvanger wil doen" +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "My other channels" +msgstr "Mijn andere kanalen" -#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185 -msgid "Make this post private" -msgstr "Maak dit bericht privé" +#: ../../Zotlabs/Module/Profiles.php:761 ../../include/channel.php:979 +msgid "Profile Image" +msgstr "Profielfoto" -#: ../../Zotlabs/Module/Apps.php:46 ../../include/nav.php:168 -#: ../../include/widgets.php:102 -msgid "Apps" -msgstr "Apps" +#: ../../Zotlabs/Module/Profiles.php:771 ../../include/channel.php:961 +#: ../../include/nav.php:91 +msgid "Edit Profiles" +msgstr "Bewerk profielen" #: ../../Zotlabs/Module/Oexchange.php:27 msgid "Unable to find your hub." @@ -4760,26 +4936,6 @@ msgstr "Niet in staat om je hub te vinden" msgid "Post successful." msgstr "Verzenden bericht geslaagd." -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." -msgstr "Ongeldige profiel-identificator" - -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Profile Visibility Editor" -msgstr "Zichtbaarheid profiel " - -#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1274 -msgid "Profile" -msgstr "Profiel" - -#: ../../Zotlabs/Module/Profperm.php:119 -msgid "Click on a contact to add or remove." -msgstr "Klik op een connectie om deze toe te voegen of te verwijderen" - -#: ../../Zotlabs/Module/Profperm.php:128 -msgid "Visible To" -msgstr "Zichtbaar voor" - #: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59 msgid "This setting requires special processing and editing has been blocked." msgstr "Deze instelling vereist een speciaal proces en bewerken is geblokkeerd." @@ -4795,66 +4951,7 @@ msgid "" " to correctly use this feature." msgstr "Waarschuwing: het veranderen van sommige instellingen kunnen jouw kanaal onklaar maken. Verlaat deze pagina, tenzij je weet waar je mee bezig bent en voldoende kennis bezit over hoe je deze functies moet gebruiken. " -#: ../../Zotlabs/Module/Siteinfo.php:19 -#, php-format -msgid "Version %s" -msgstr "Versie %s" - -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Installed plugins/addons/apps:" -msgstr "Ingeschakelde plugins en apps:" - -#: ../../Zotlabs/Module/Siteinfo.php:36 -msgid "No installed plugins/addons/apps" -msgstr "Geen ingeschakelde plugins en apps" - -#: ../../Zotlabs/Module/Siteinfo.php:49 -msgid "" -"This is a hub of $Projectname - a global cooperative network of " -"decentralized privacy enhanced websites." -msgstr "Dit is een $Projectname-hub - $Projectname is een wereldwijd coöperatief netwerk van gedecentraliseerde websites (hubs) met verbeterde privacy." - -#: ../../Zotlabs/Module/Siteinfo.php:51 -msgid "Tag: " -msgstr "Tag: " - -#: ../../Zotlabs/Module/Siteinfo.php:53 -msgid "Last background fetch: " -msgstr "Meest recente achtergrond-fetch:" - -#: ../../Zotlabs/Module/Siteinfo.php:55 -msgid "Current load average: " -msgstr "Gemiddelde systeembelasting is nu:" - -#: ../../Zotlabs/Module/Siteinfo.php:58 -msgid "Running at web location" -msgstr "Draaiend op weblocatie" - -#: ../../Zotlabs/Module/Siteinfo.php:59 -msgid "" -"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more " -"about $Projectname." -msgstr "Bezoek <a href=\"http://hubzilla.org\">hubzilla.org</a> " - -#: ../../Zotlabs/Module/Siteinfo.php:60 -msgid "Bug reports and issues: please visit" -msgstr "Bugrapporten en andere kwesties: bezoek" - -#: ../../Zotlabs/Module/Siteinfo.php:62 -msgid "$projectname issues" -msgstr "$projectname-issues" - -#: ../../Zotlabs/Module/Siteinfo.php:63 -msgid "" -"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot " -"com" -msgstr "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist - dot com" - -#: ../../Zotlabs/Module/Siteinfo.php:65 -msgid "Site Administrators" -msgstr "Hubbeheerders: " - -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2308 +#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2270 msgid "Blocks" msgstr "Blokken" @@ -4862,13 +4959,13 @@ msgstr "Blokken" msgid "Block Title" msgstr "Bloktitel" -#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2310 +#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2272 msgid "Layouts" msgstr "Lay-outs" -#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:225 -#: ../../include/help.php:47 ../../include/help.php:52 -#: ../../include/nav.php:164 +#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:227 +#: ../../include/nav.php:162 ../../include/help.php:53 +#: ../../include/help.php:59 msgid "Help" msgstr "Hulp" @@ -4884,116 +4981,158 @@ msgstr "Lay-out-omschrijving" msgid "Download PDL file" msgstr "Download PDL-bestand" -#: ../../Zotlabs/Module/Admin.php:97 -msgid "# Accounts" -msgstr "# accounts" +#: ../../Zotlabs/Module/Rate.php:156 +msgid "Website:" +msgstr "Website:" -#: ../../Zotlabs/Module/Admin.php:98 -msgid "# blocked accounts" -msgstr "# geblokkeerde accounts" +#: ../../Zotlabs/Module/Rate.php:159 +#, php-format +msgid "Remote Channel [%s] (not yet known on this site)" +msgstr "Kanaal op afstand [%s] (nog niet op deze hub bekend)" -#: ../../Zotlabs/Module/Admin.php:99 -msgid "# expired accounts" -msgstr "# verlopen accounts" +#: ../../Zotlabs/Module/Rate.php:160 +msgid "Rating (this information is public)" +msgstr "Beoordeling (deze informatie is openbaar)" -#: ../../Zotlabs/Module/Admin.php:100 -msgid "# expiring accounts" -msgstr "# accounts die nog moeten verlopen" +#: ../../Zotlabs/Module/Rate.php:161 +msgid "Optionally explain your rating (this information is public)" +msgstr "Verklaar jouw beoordeling (niet verplicht, deze informatie is openbaar)" -#: ../../Zotlabs/Module/Admin.php:111 -msgid "# Channels" -msgstr "# Kanalen" +#: ../../Zotlabs/Module/Like.php:19 +msgid "Like/Dislike" +msgstr "Leuk/niet leuk" -#: ../../Zotlabs/Module/Admin.php:112 -msgid "# primary" -msgstr "# primair" +#: ../../Zotlabs/Module/Like.php:24 +msgid "This action is restricted to members." +msgstr "Deze actie kan alleen door $Projectname-leden worden uitgevoerd." -#: ../../Zotlabs/Module/Admin.php:113 -msgid "# clones" -msgstr "# klonen" +#: ../../Zotlabs/Module/Like.php:25 +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 "Je dient <a href=\"rmagic\">in te loggen met je $Projectname-account</a> of <a href=\"register\">een nieuw $Projectname-account aan te maken</a> om verder te kunnen gaan." -#: ../../Zotlabs/Module/Admin.php:119 -msgid "Message queues" -msgstr "Berichtenwachtrij" +#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 +#: ../../Zotlabs/Module/Like.php:169 +msgid "Invalid request." +msgstr "Ongeldig verzoek" -#: ../../Zotlabs/Module/Admin.php:136 -msgid "Your software should be updated" -msgstr "Jouw software moet worden bijgewerkt " +#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 +msgid "channel" +msgstr "kanaal" -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Summary" -msgstr "Samenvatting" +#: ../../Zotlabs/Module/Like.php:146 +msgid "thing" +msgstr "ding" -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Registered accounts" -msgstr "Geregistreerde accounts" +#: ../../Zotlabs/Module/Like.php:192 +msgid "Channel unavailable." +msgstr "Kanaal niet beschikbaar." -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Pending registrations" -msgstr "Accounts die op goedkeuring wachten" +#: ../../Zotlabs/Module/Like.php:240 +msgid "Previous action reversed." +msgstr "Vorige actie omgedraaid" -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Registered channels" -msgstr "Geregistreerde kanalen" +#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 +#: ../../Zotlabs/Module/Tagger.php:47 +#: ../../extend/addon/addon/diaspora/inbound.php:1794 +#: ../../extend/addon/addon/redphotos/redphotohelper.php:74 +#: ../../include/text.php:1940 ../../include/conversation.php:120 +msgid "photo" +msgstr "foto" -#: ../../Zotlabs/Module/Admin.php:148 -msgid "Active plugins" -msgstr "Ingeschakelde plugins" +#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 +#: ../../extend/addon/addon/diaspora/inbound.php:1794 +#: ../../include/text.php:1946 ../../include/conversation.php:148 +msgid "status" +msgstr "bericht" -#: ../../Zotlabs/Module/Admin.php:149 -msgid "Version" -msgstr "Versie" +#: ../../Zotlabs/Module/Like.php:372 ../../Zotlabs/Module/Tagger.php:51 +#: ../../Zotlabs/Module/Events.php:256 ../../include/text.php:1943 +#: ../../include/event.php:961 ../../include/conversation.php:123 +msgid "event" +msgstr "gebeurtenis" -#: ../../Zotlabs/Module/Admin.php:150 -msgid "Repository version (master)" -msgstr "Versie repository (master)" +#: ../../Zotlabs/Module/Like.php:419 +#: ../../extend/addon/addon/diaspora/inbound.php:1823 +#: ../../include/conversation.php:164 +#, php-format +msgid "%1$s likes %2$s's %3$s" +msgstr "%1$s vindt %3$s van %2$s leuk" -#: ../../Zotlabs/Module/Admin.php:151 -msgid "Repository version (dev)" -msgstr "Versie repository (dev)" +#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "%1$s vindt %3$s van %2$s niet leuk" + +#: ../../Zotlabs/Module/Like.php:423 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" +msgstr "%1$s is het eens met %2$s's %3$s" + +#: ../../Zotlabs/Module/Like.php:425 +#, php-format +msgid "%1$s doesn't agree with %2$s's %3$s" +msgstr "%1$s is het niet eens met %2$s's %3$s" + +#: ../../Zotlabs/Module/Like.php:427 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" +msgstr "%1$s onthoudt zich van een besluit over %2$s's %3$s" + +#: ../../Zotlabs/Module/Like.php:429 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "%1$s is aanwezig op %2$s's %3$s" + +#: ../../Zotlabs/Module/Like.php:431 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "%1$s is niet aanwezig op %2$s's %3$s" + +#: ../../Zotlabs/Module/Like.php:433 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "%1$s is mogelijk aanwezig op %2$s's %3$s" + +#: ../../Zotlabs/Module/Like.php:538 +msgid "Action completed." +msgstr "Actie voltooid" + +#: ../../Zotlabs/Module/Like.php:539 +msgid "Thank you." +msgstr "Bedankt" #: ../../Zotlabs/Module/Profile_photo.php:186 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:293 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." msgstr "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven." -#: ../../Zotlabs/Module/Profile_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:409 +msgid "Use Photo for Profile" +msgstr "Als profielfoto gebruiken" + +#: ../../Zotlabs/Module/Profile_photo.php:409 msgid "Upload Profile Photo" msgstr "Profielfoto uploaden" -#: ../../Zotlabs/Module/Cal.php:69 -msgid "Permissions denied." -msgstr "Permissies niet toegestaan" - -#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:597 -msgid "l, F j" -msgstr "l j F" - -#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:646 -#: ../../include/text.php:1762 -msgid "Link to Source" -msgstr "Originele locatie" - -#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:674 -msgid "Edit Event" -msgstr "Gebeurtenis bewerken" - -#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:674 -msgid "Create Event" -msgstr "Gebeurtenis aanmaken" - -#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:677 -msgid "Export" -msgstr "Exporteren" +#: ../../Zotlabs/Module/Profile_photo.php:410 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:181 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:193 +msgid "Use" +msgstr "Gebruiken" -#: ../../Zotlabs/Module/Cal.php:337 ../../include/text.php:2332 -msgid "Import" -msgstr "Importeren" +#: ../../Zotlabs/Module/Search.php:223 +#, php-format +msgid "Items tagged with: %s" +msgstr "Items getagd met %s" -#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:686 -msgid "Today" -msgstr "Vandaag" +#: ../../Zotlabs/Module/Search.php:225 +#, php-format +msgid "Search results for: %s" +msgstr "Zoekresultaten voor %s" #: ../../Zotlabs/Module/Common.php:14 msgid "No channel." @@ -5007,127 +5146,154 @@ msgstr "Veel voorkomende connecties" msgid "No connections in common." msgstr "Geen gemeenschappelijke connecties." -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" -msgstr "Geen beoordelingen" +#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 +msgid "Authorize application connection" +msgstr "Geef toestemming voor applicatiekoppeling" -#: ../../Zotlabs/Module/Ratings.php:98 -msgid "Rating: " -msgstr "Beoordeling: " +#: ../../Zotlabs/Module/Api.php:73 +msgid "Return to your app and insert this Security Code:" +msgstr "Ga terug naar je app en voeg deze beveiligingscode in:" -#: ../../Zotlabs/Module/Ratings.php:99 -msgid "Website: " -msgstr "Website: " +#: ../../Zotlabs/Module/Api.php:83 +msgid "Please login to continue." +msgstr "Inloggen om verder te kunnen gaan." -#: ../../Zotlabs/Module/Ratings.php:101 -msgid "Description: " -msgstr "Omschrijving: " +#: ../../Zotlabs/Module/Api.php:95 +msgid "" +"Do you want to authorize this application to access your posts and contacts," +" and/or create new posts for you?" +msgstr "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?" -#: ../../Zotlabs/Module/Register.php:49 -msgid "Maximum daily site registrations exceeded. Please try again tomorrow." -msgstr "Maximum toegestane dagelijkse registraties op deze $Projectname-hub bereikt. Probeer het morgen (UTC) nogmaals." +#: ../../Zotlabs/Module/Ping.php:254 +msgid "sent you a private message" +msgstr "stuurde jou een privébericht" -#: ../../Zotlabs/Module/Register.php:55 -msgid "" -"Please indicate acceptance of the Terms of Service. Registration failed." -msgstr "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden." +#: ../../Zotlabs/Module/Ping.php:302 +msgid "added your channel" +msgstr "voegde jouw kanaal toe" -#: ../../Zotlabs/Module/Register.php:89 -msgid "Passwords do not match." -msgstr "Wachtwoorden komen niet met elkaar overeen." +#: ../../Zotlabs/Module/Ping.php:312 +msgid "g A l F d" +msgstr "G:i, l d F" -#: ../../Zotlabs/Module/Register.php:131 -msgid "" -"Registration successful. Please check your email for validation " -"instructions." -msgstr "Registratie geslaagd. Controleer je e-mail voor instructies." +#: ../../Zotlabs/Module/Ping.php:330 +msgid "[today]" +msgstr "[vandaag]" -#: ../../Zotlabs/Module/Register.php:137 -msgid "Your registration is pending approval by the site owner." -msgstr "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze $Projectname-hub." +#: ../../Zotlabs/Module/Ping.php:339 +msgid "posted an event" +msgstr "plaatste een gebeurtenis" -#: ../../Zotlabs/Module/Register.php:140 -msgid "Your registration can not be processed." -msgstr "Jouw registratie kan niet verwerkt worden." +#: ../../Zotlabs/Module/Siteinfo.php:20 +msgid "About this site" +msgstr "Over deze hub" -#: ../../Zotlabs/Module/Register.php:184 -msgid "Registration on this hub is disabled." -msgstr "Registreren van nieuwe accounts is op deze hub uitgeschakeld." +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "Site Name" +msgstr "Hubnaam" -#: ../../Zotlabs/Module/Register.php:193 -msgid "Registration on this hub is by approval only." -msgstr "Registraties op deze hub moeten eerst worden goedgekeurd." +#: ../../Zotlabs/Module/Siteinfo.php:25 ../../include/network.php:1962 +msgid "Administrator" +msgstr "Beheerder" -#: ../../Zotlabs/Module/Register.php:194 -msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" -msgstr "<a href=\"pubsites\">Registreer op een andere hub</a>." +#: ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Software and Project information" +msgstr "Software- en projectinformatie" -#: ../../Zotlabs/Module/Register.php:204 +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "This site is powered by $Projectname" +msgstr "Dit is een $Projectname-hub" + +#: ../../Zotlabs/Module/Siteinfo.php:30 msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." -msgstr "Deze $Projectname-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals." +"Federated and decentralised networking and identity services provided by Zot" +msgstr "Federatieve en gedecentraliseerde netwerk- en identiteitsdiensten, mogelijk gemaakt door Zot" -#: ../../Zotlabs/Module/Register.php:221 -msgid "Terms of Service" -msgstr "Gebruiksvoorwaarden" +#: ../../Zotlabs/Module/Siteinfo.php:32 +#, php-format +msgid "Version %s" +msgstr "Versie %s" -#: ../../Zotlabs/Module/Register.php:227 +#: ../../Zotlabs/Module/Siteinfo.php:33 +msgid "Project homepage" +msgstr "Projectwebsite" + +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Developer homepage" +msgstr "Ontwikkelaarswebsite" + +#: ../../Zotlabs/Module/Lostpass.php:19 +msgid "No valid account found." +msgstr "Geen geldige account gevonden." + +#: ../../Zotlabs/Module/Lostpass.php:33 +msgid "Password reset request issued. Check your email." +msgstr "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail." + +#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 #, php-format -msgid "I accept the %s for this website" -msgstr "Ik accepteer de %s van deze $Projectname-hub" +msgid "Site Member (%s)" +msgstr "Lid van hub (%s)" -#: ../../Zotlabs/Module/Register.php:229 +#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 #, php-format -msgid "I am over 13 years of age and accept the %s for this website" -msgstr "Ik ben 13 jaar of ouder en accepteer de %s van deze $Projectname-hub" +msgid "Password reset requested at %s" +msgstr "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend" -#: ../../Zotlabs/Module/Register.php:233 -msgid "Your email address" -msgstr "Jouw e-mailadres" +#: ../../Zotlabs/Module/Lostpass.php:68 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt." -#: ../../Zotlabs/Module/Register.php:234 -msgid "Choose a password" -msgstr "Geef een wachtwoord op" +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1728 +msgid "Password Reset" +msgstr "Wachtwoord vergeten?" -#: ../../Zotlabs/Module/Register.php:235 -msgid "Please re-enter your password" -msgstr "Geef het wachtwoord opnieuw op" +#: ../../Zotlabs/Module/Lostpass.php:92 +msgid "Your password has been reset as requested." +msgstr "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht." -#: ../../Zotlabs/Module/Register.php:236 -msgid "Please enter your invitation code" -msgstr "Vul jouw uitnodigingscode in" +#: ../../Zotlabs/Module/Lostpass.php:93 +msgid "Your new password is" +msgstr "Jouw nieuwe wachtwoord is" -#: ../../Zotlabs/Module/Register.php:241 -msgid "no" -msgstr "Nee" +#: ../../Zotlabs/Module/Lostpass.php:94 +msgid "Save or copy your new password - and then" +msgstr "Kopieer of sla je nieuwe wachtwoord op - en" -#: ../../Zotlabs/Module/Register.php:241 -msgid "yes" -msgstr "Ja" +#: ../../Zotlabs/Module/Lostpass.php:95 +msgid "click here to login" +msgstr "klik dan hier om in te loggen" -#: ../../Zotlabs/Module/Register.php:258 -msgid "Membership on this site is by invitation only." -msgstr "Registreren op deze $Projectname-hub kan alleen op uitnodiging." +#: ../../Zotlabs/Module/Lostpass.php:96 +msgid "" +"Your password may be changed from the <em>Settings</em> page after " +"successful login." +msgstr "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd." -#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:152 -#: ../../boot.php:1721 -msgid "Register" -msgstr "Registreren" +#: ../../Zotlabs/Module/Lostpass.php:117 +#, php-format +msgid "Your password has changed at %s" +msgstr "Jouw wachtwoord op %s is veranderd" -#: ../../Zotlabs/Module/Register.php:271 +#: ../../Zotlabs/Module/Lostpass.php:130 +msgid "Forgot your Password?" +msgstr "Wachtwoord vergeten?" + +#: ../../Zotlabs/Module/Lostpass.php:131 msgid "" -"This site may require email verification after submitting this form. If you " -"are returned to a login page, please check your email for instructions." -msgstr "Mogelijk moet op deze hub eerst jouw e-mail geverifieerd worden. Wanneer je na het indienen van dit formulier op de inlogpagina terecht komt, dan dien je jouw e-mail te controleren voor instructies. Controleer eventueel ook jouw spamfolder." +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." +msgstr "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies." -#: ../../Zotlabs/Module/Help.php:27 -msgid "Documentation Search" -msgstr "Zoek documentatie" +#: ../../Zotlabs/Module/Lostpass.php:132 +msgid "Email Address" +msgstr "E-mailadres" -#: ../../Zotlabs/Module/Help.php:57 -msgid "$Projectname Documentation" -msgstr "$Projectname-documentatie" +#: ../../Zotlabs/Module/Lostpass.php:133 +msgid "Reset" +msgstr "Opnieuw instellen" #: ../../Zotlabs/Module/Rbmark.php:94 msgid "Select a bookmark folder" @@ -5145,6 +5311,10 @@ msgstr "URL van bladwijzer" msgid "Or enter new bookmark folder name" msgstr "Of geef de naam op van een nieuwe bladwijzermap" +#: ../../Zotlabs/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" +msgstr "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig" + #: ../../Zotlabs/Module/Rmagic.php:35 msgid "Authentication failed." msgstr "Authenticatie mislukt." @@ -5176,11 +5346,26 @@ msgid "Remove This Account" msgstr "Verwijder dit account" #: ../../Zotlabs/Module/Removeaccount.php:58 +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "WARNING: " +msgstr "WAARSCHUWING: " + +#: ../../Zotlabs/Module/Removeaccount.php:58 msgid "" "This account and all its channels will be completely removed from the " "network. " msgstr "Dit account en al zijn kanalen worden volledig uit het $Projectname-netwerk verwijderd." +#: ../../Zotlabs/Module/Removeaccount.php:58 +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "This action is permanent and can not be undone!" +msgstr "Deze handeling is van permanente aard en kan niet meer worden teruggedraaid!" + +#: ../../Zotlabs/Module/Removeaccount.php:59 +#: ../../Zotlabs/Module/Removeme.php:62 +msgid "Please enter your password for verification:" +msgstr "Vul je wachtwoord in ter verificatie:" + #: ../../Zotlabs/Module/Removeaccount.php:60 msgid "" "Remove this account, all its channels and all its channel clones from the " @@ -5194,62 +5379,33 @@ msgid "" msgstr "Standaard worden alleen de kanalen die zich op deze hub bevinden uit het $Projectname-netwerk verwijderd" #: ../../Zotlabs/Module/Removeaccount.php:61 -#: ../../Zotlabs/Module/Settings/Account.php:128 +#: ../../Zotlabs/Module/Settings/Account.php:120 msgid "Remove Account" msgstr "Account verwijderen" -#: ../../Zotlabs/Module/Webpages.php:52 -msgid "Import Webpage Elements" -msgstr "Webpagina-elementen importeren" - -#: ../../Zotlabs/Module/Webpages.php:53 -msgid "Import selected" -msgstr "Importbestand geselecteerd" - -#: ../../Zotlabs/Module/Webpages.php:76 -msgid "Export Webpage Elements" -msgstr "Webpagina-elementen exporteren" - -#: ../../Zotlabs/Module/Webpages.php:77 -msgid "Export selected" -msgstr "Selectie exporteren" - -#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:218 -#: ../../include/nav.php:109 ../../include/conversation.php:1725 -msgid "Webpages" -msgstr "Webpagina's" - -#: ../../Zotlabs/Module/Webpages.php:248 ../../include/page_widgets.php:44 -msgid "Actions" -msgstr "Acties" - -#: ../../Zotlabs/Module/Webpages.php:249 ../../include/page_widgets.php:45 -msgid "Page Link" -msgstr "Paginalink" - -#: ../../Zotlabs/Module/Webpages.php:250 -msgid "Page Title" -msgstr "Paginatitel" +#: ../../Zotlabs/Module/Pdledit.php:21 +msgid "Layout updated." +msgstr "Lay-out bijgewerkt." -#: ../../Zotlabs/Module/Webpages.php:280 -msgid "Invalid file type." -msgstr "Ongeldig bestandsformaat" +#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Chat.php:218 +msgid "Feature disabled." +msgstr "Functie uitgeschakeld." -#: ../../Zotlabs/Module/Webpages.php:292 -msgid "Error opening zip file" -msgstr "Fout met openen zipbestand" +#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Pdledit.php:69 +msgid "Edit System Page Description" +msgstr "Systeempagina's bewerken" -#: ../../Zotlabs/Module/Webpages.php:303 -msgid "Invalid folder path." -msgstr "Ongeldige maplocatie" +#: ../../Zotlabs/Module/Pdledit.php:64 +msgid "Layout not found." +msgstr "Lay-out niet gevonden." -#: ../../Zotlabs/Module/Webpages.php:330 -msgid "No webpage elements detected." -msgstr "Geen webpagina-elementen gedecteerd" +#: ../../Zotlabs/Module/Pdledit.php:70 +msgid "Module Name:" +msgstr "Modulenaam:" -#: ../../Zotlabs/Module/Webpages.php:405 -msgid "Import complete." -msgstr "Importeren voltooid." +#: ../../Zotlabs/Module/Pdledit.php:71 +msgid "Layout Help" +msgstr "Lay-out-hulp" #: ../../Zotlabs/Module/Uexport.php:55 ../../Zotlabs/Module/Uexport.php:56 msgid "Export Channel" @@ -5309,241 +5465,201 @@ msgid "" " please import or restore these in date order (oldest first)." msgstr "Deze back-up-bestanden kunnen geïmporteerd of hersteld worden door op jouw hub en met jouw kanaal <a href=\"%1$s\">%2$s</a> te bezoeken. Voor het beste resultaat kan je de bestanden in chronologische volgorde importeren of herstellen." -#: ../../Zotlabs/Module/Editpost.php:35 -msgid "Item is not editable" -msgstr "Item is niet te bewerken" - -#: ../../Zotlabs/Module/Search.php:216 -#, php-format -msgid "Items tagged with: %s" -msgstr "Items getagd met %s" - -#: ../../Zotlabs/Module/Search.php:218 -#, php-format -msgid "Search results for: %s" -msgstr "Zoekresultaten voor %s" - -#: ../../Zotlabs/Module/Events.php:25 -msgid "Calendar entries imported." -msgstr "Agenda-items geïmporteerd." - -#: ../../Zotlabs/Module/Events.php:27 -msgid "No calendar entries found." -msgstr "Geen agenda-items gevonden." - -#: ../../Zotlabs/Module/Events.php:104 -msgid "Event can not end before it has started." -msgstr "Gebeurtenis kan niet eindigen voordat het is begonnen" - -#: ../../Zotlabs/Module/Events.php:106 ../../Zotlabs/Module/Events.php:115 -#: ../../Zotlabs/Module/Events.php:135 -msgid "Unable to generate preview." -msgstr "Niet in staat om voorvertoning te genereren" - -#: ../../Zotlabs/Module/Events.php:113 -msgid "Event title and start time are required." -msgstr "Titel en begintijd van gebeurtenis zijn vereist." +#: ../../Zotlabs/Module/Cal.php:69 +msgid "Permissions denied." +msgstr "Permissies niet toegestaan" -#: ../../Zotlabs/Module/Events.php:133 ../../Zotlabs/Module/Events.php:258 -msgid "Event not found." -msgstr "Gebeurtenis niet gevonden" +#: ../../Zotlabs/Module/Cal.php:263 ../../Zotlabs/Module/Events.php:596 +msgid "l, F j" +msgstr "l j F" -#: ../../Zotlabs/Module/Events.php:452 -msgid "Edit event title" -msgstr "Titel bewerken" +#: ../../Zotlabs/Module/Cal.php:312 ../../Zotlabs/Module/Events.php:651 +#: ../../include/text.php:1748 +msgid "Link to Source" +msgstr "Originele locatie" -#: ../../Zotlabs/Module/Events.php:452 -msgid "Event title" -msgstr "Titel" +#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Events.php:679 +msgid "Edit Event" +msgstr "Gebeurtenis bewerken" -#: ../../Zotlabs/Module/Events.php:454 -msgid "Categories (comma-separated list)" -msgstr "Categorieën (door komma's gescheiden lijst)" +#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Events.php:679 +msgid "Create Event" +msgstr "Gebeurtenis aanmaken" -#: ../../Zotlabs/Module/Events.php:455 -msgid "Edit Category" -msgstr "Categorie" +#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Events.php:682 +msgid "Export" +msgstr "Exporteren" -#: ../../Zotlabs/Module/Events.php:455 -msgid "Category" -msgstr "Categorie" +#: ../../Zotlabs/Module/Cal.php:341 ../../include/text.php:2294 +msgid "Import" +msgstr "Importeren" -#: ../../Zotlabs/Module/Events.php:458 -msgid "Edit start date and time" -msgstr "Begindatum en -tijd bewerken" +#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Events.php:691 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:848 +msgid "Today" +msgstr "Vandaag" -#: ../../Zotlabs/Module/Events.php:458 -msgid "Start date and time" -msgstr "Begindatum en -tijd" +#: ../../Zotlabs/Module/Admin.php:94 +msgid "# Accounts" +msgstr "# accounts" -#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:462 -msgid "Finish date and time are not known or not relevant" -msgstr "Einddatum en -tijd zijn niet bekend of niet van toepassing" +#: ../../Zotlabs/Module/Admin.php:95 +msgid "# blocked accounts" +msgstr "# geblokkeerde accounts" -#: ../../Zotlabs/Module/Events.php:461 -msgid "Edit finish date and time" -msgstr "Einddatum en -tijd bewerken" +#: ../../Zotlabs/Module/Admin.php:96 +msgid "# expired accounts" +msgstr "# verlopen accounts" -#: ../../Zotlabs/Module/Events.php:461 -msgid "Finish date and time" -msgstr "Einddatum en -tijd" +#: ../../Zotlabs/Module/Admin.php:97 +msgid "# expiring accounts" +msgstr "# accounts die nog moeten verlopen" -#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Events.php:464 -msgid "Adjust for viewer timezone" -msgstr "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt" +#: ../../Zotlabs/Module/Admin.php:108 +msgid "# Channels" +msgstr "# Kanalen" -#: ../../Zotlabs/Module/Events.php:463 -msgid "" -"Important for events that happen in a particular place. Not practical for " -"global holidays." -msgstr "Belangrijk voor gebeurtenissen die op een bepaalde locatie plaatsvinden. Niet praktisch voor wereldwijde feestdagen." +#: ../../Zotlabs/Module/Admin.php:109 +msgid "# primary" +msgstr "# primair" -#: ../../Zotlabs/Module/Events.php:465 -msgid "Edit Description" -msgstr "Omschrijving bewerken" +#: ../../Zotlabs/Module/Admin.php:110 +msgid "# clones" +msgstr "# klonen" -#: ../../Zotlabs/Module/Events.php:467 -msgid "Edit Location" -msgstr "Locatie bewerken" +#: ../../Zotlabs/Module/Admin.php:116 +msgid "Message queues" +msgstr "Berichtenwachtrij" -#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:472 -msgid "Share this event" -msgstr "Deel deze gebeurtenis" +#: ../../Zotlabs/Module/Admin.php:133 +msgid "Your software should be updated" +msgstr "Jouw software moet worden bijgewerkt " -#: ../../Zotlabs/Module/Events.php:474 ../../include/conversation.php:1264 -msgid "Permission settings" -msgstr "Permissies" +#: ../../Zotlabs/Module/Admin.php:138 +msgid "Summary" +msgstr "Samenvatting" -#: ../../Zotlabs/Module/Events.php:485 -msgid "Advanced Options" -msgstr "Geavanceerde opties" +#: ../../Zotlabs/Module/Admin.php:141 +msgid "Registered accounts" +msgstr "Geregistreerde accounts" -#: ../../Zotlabs/Module/Events.php:619 -msgid "Edit event" -msgstr "Gebeurtenis bewerken" +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Pending registrations" +msgstr "Accounts die op goedkeuring wachten" -#: ../../Zotlabs/Module/Events.php:621 -msgid "Delete event" -msgstr "Gebeurtenis verwijderen" +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Registered channels" +msgstr "Geregistreerde kanalen" -#: ../../Zotlabs/Module/Events.php:655 -msgid "calendar" -msgstr "agenda" +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Active plugins" +msgstr "Ingeschakelde plugins" -#: ../../Zotlabs/Module/Events.php:681 -msgid "Month" -msgstr "Maand" +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Version" +msgstr "Versie" -#: ../../Zotlabs/Module/Events.php:682 -msgid "Week" -msgstr "Week" +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Repository version (master)" +msgstr "Versie repository (master)" -#: ../../Zotlabs/Module/Events.php:683 -msgid "Day" -msgstr "Dag" +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (dev)" +msgstr "Versie repository (dev)" -#: ../../Zotlabs/Module/Events.php:717 -msgid "Event removed" -msgstr "Gebeurtenis verwijderd" +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." +msgstr "Privacy-informatie op afstand niet beschikbaar." -#: ../../Zotlabs/Module/Events.php:720 -msgid "Failed to remove event" -msgstr "Verwijderen gebeurtenis mislukt" +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" +msgstr "Zichtbaar voor:" #: ../../Zotlabs/Module/Service_limits.php:23 msgid "No service class restrictions found." msgstr "Geen abonnementsbeperkingen gevonden." -#: ../../Zotlabs/Module/Thing.php:114 -msgid "Thing updated" -msgstr "Ding bijgewerkt" - -#: ../../Zotlabs/Module/Thing.php:166 -msgid "Object store: failed" -msgstr "Opslaan van ding mislukt" - -#: ../../Zotlabs/Module/Thing.php:170 -msgid "Thing added" -msgstr "Ding toegevoegd" - -#: ../../Zotlabs/Module/Thing.php:196 -#, php-format -msgid "OBJ: %1$s %2$s %3$s" -msgstr "OBJ: %1$s %2$s %3$s" +#: ../../Zotlabs/Module/Webpages.php:52 +msgid "Import Webpage Elements" +msgstr "Webpagina-elementen importeren" -#: ../../Zotlabs/Module/Thing.php:259 -msgid "Show Thing" -msgstr "Ding weergeven" +#: ../../Zotlabs/Module/Webpages.php:53 +msgid "Import selected" +msgstr "Importbestand geselecteerd" -#: ../../Zotlabs/Module/Thing.php:266 -msgid "item not found." -msgstr "Item niet gevonden" +#: ../../Zotlabs/Module/Webpages.php:76 +msgid "Export Webpage Elements" +msgstr "Webpagina-elementen exporteren" -#: ../../Zotlabs/Module/Thing.php:299 -msgid "Edit Thing" -msgstr "Ding bewerken" +#: ../../Zotlabs/Module/Webpages.php:77 +msgid "Export selected" +msgstr "Selectie exporteren" -#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:355 -msgid "Select a profile" -msgstr "Kies een profiel" +#: ../../Zotlabs/Module/Webpages.php:237 ../../Zotlabs/Lib/Apps.php:220 +#: ../../include/nav.php:109 ../../include/conversation.php:1727 +msgid "Webpages" +msgstr "Webpagina's" -#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 -msgid "Post an activity" -msgstr "Plaats een bericht" +#: ../../Zotlabs/Module/Webpages.php:248 ../../include/page_widgets.php:44 +msgid "Actions" +msgstr "Acties" -#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 -msgid "Only sends to viewers of the applicable profile" -msgstr "Toont dit alleen aan diegene die het gekozen profiel mogen zien." +#: ../../Zotlabs/Module/Webpages.php:249 ../../include/page_widgets.php:45 +msgid "Page Link" +msgstr "Paginalink" -#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:360 -msgid "Name of thing e.g. something" -msgstr "Naam van ding" +#: ../../Zotlabs/Module/Webpages.php:250 +msgid "Page Title" +msgstr "Paginatitel" -#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:361 -msgid "URL of thing (optional)" -msgstr "URL van ding (optioneel)" +#: ../../Zotlabs/Module/Webpages.php:280 +msgid "Invalid file type." +msgstr "Ongeldig bestandsformaat" -#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:362 -msgid "URL for photo of thing (optional)" -msgstr "URL voor foto van ding (optioneel)" +#: ../../Zotlabs/Module/Webpages.php:292 +msgid "Error opening zip file" +msgstr "Fout tijdens openen zipbestand" -#: ../../Zotlabs/Module/Thing.php:353 -msgid "Add Thing to your Profile" -msgstr "Ding aan je profiel toevoegen" +#: ../../Zotlabs/Module/Webpages.php:303 +msgid "Invalid folder path." +msgstr "Ongeldige maplocatie" -#: ../../Zotlabs/Module/Item.php:180 -msgid "Unable to locate original post." -msgstr "Niet in staat om de originele locatie van het bericht te vinden. " +#: ../../Zotlabs/Module/Webpages.php:330 +msgid "No webpage elements detected." +msgstr "Geen webpagina-elementen gedecteerd" -#: ../../Zotlabs/Module/Item.php:433 -msgid "Empty post discarded." -msgstr "Leeg bericht geannuleerd" +#: ../../Zotlabs/Module/Webpages.php:405 +msgid "Import complete." +msgstr "Importeren voltooid." -#: ../../Zotlabs/Module/Item.php:473 -msgid "Executable content type not permitted to this channel." -msgstr "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal." +#: ../../Zotlabs/Module/Removeme.php:35 +msgid "" +"Channel removals are not allowed within 48 hours of changing the account " +"password." +msgstr "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd." -#: ../../Zotlabs/Module/Item.php:851 -msgid "Duplicate post suppressed." -msgstr "Dubbel bericht tegengehouden." +#: ../../Zotlabs/Module/Removeme.php:60 +msgid "Remove This Channel" +msgstr "Verwijder dit kanaal" -#: ../../Zotlabs/Module/Item.php:986 -msgid "System error. Post not saved." -msgstr "Systeemfout. Bericht niet opgeslagen." +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "This channel will be completely removed from the network. " +msgstr "Dit kanaal wordt volledig uit het $Projectname-netwerk verwijderd." -#: ../../Zotlabs/Module/Item.php:1107 -msgid "Unable to obtain post information from database." -msgstr "Niet in staat om informatie over dit bericht uit de database te verkrijgen." +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "Remove this channel and all its clones from the network" +msgstr "Dit kanaal en alle klonen hiervan uit het $Projectname-netwerk verwijderen" -#: ../../Zotlabs/Module/Item.php:1114 -#, php-format -msgid "You have reached your limit of %1$.0f top level posts." -msgstr "Je hebt jouw limiet van %1$.0f berichten bereikt." +#: ../../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 "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het $Projectname-netwerk verwijderd" -#: ../../Zotlabs/Module/Item.php:1121 -#, php-format -msgid "You have reached your limit of %1$.0f webpages." -msgstr "Je hebt jouw limiet van %1$.0f webpagina's bereikt." +#: ../../Zotlabs/Module/Removeme.php:64 +#: ../../Zotlabs/Module/Settings/Channel.php:549 +msgid "Remove Channel" +msgstr "Kanaal verwijderen" #: ../../Zotlabs/Module/Sharedwithme.php:98 msgid "Files: shared with me" @@ -5565,78 +5681,123 @@ msgstr "Verwijder dit bestand" msgid "Not found" msgstr "Niet gevonden" -#: ../../Zotlabs/Module/Wiki.php:97 ../../Zotlabs/Lib/Apps.php:219 -#: ../../include/features.php:99 ../../include/nav.php:111 -#: ../../include/conversation.php:1735 ../../include/conversation.php:1738 -msgid "Wiki" -msgstr "Wiki" - -#: ../../Zotlabs/Module/Wiki.php:98 -msgid "Sandbox" -msgstr "Zandbak" +#: ../../Zotlabs/Module/Wiki.php:55 +msgid "Invalid channel" +msgstr "Onbekend kanaal" #: ../../Zotlabs/Module/Wiki.php:100 -msgid "" -"\"# Wiki Sandbox\\n\\nContent you **edit** and **preview** here *will not be" -" saved*.\"" -msgstr "\"# Wiki Sandbox\\n\\nWat er hier onder **edit** en **preview** staat *wordt niet opgeslagen*.\"" +msgid "Error retrieving wiki" +msgstr "Fout tijdens ophalen wiki" + +#: ../../Zotlabs/Module/Wiki.php:107 +msgid "Error creating zip file export folder" +msgstr "Fout tijdens aanmaken exportmap zipbestand" + +#: ../../Zotlabs/Module/Wiki.php:125 +msgid "Error downloading wiki: " +msgstr "Fout tijdens downloaden wiki: " + +#: ../../Zotlabs/Module/Wiki.php:139 ../../include/nav.php:111 +#: ../../include/conversation.php:1737 +msgid "Wikis" +msgstr "Wiki's" + +#: ../../Zotlabs/Module/Wiki.php:145 +msgid "Download" +msgstr "Download" + +#: ../../Zotlabs/Module/Wiki.php:149 +msgid "Wiki name" +msgstr "Naam wiki" + +#: ../../Zotlabs/Module/Wiki.php:150 +msgid "Content type" +msgstr "Opmaaktype" + +#: ../../Zotlabs/Module/Wiki.php:159 +msgid "Create a status post for this wiki" +msgstr "Plaats een bericht over deze wiki" -#: ../../Zotlabs/Module/Wiki.php:169 +#: ../../Zotlabs/Module/Wiki.php:178 +msgid "Wiki not found" +msgstr "Wiki is niet gevonden" + +#: ../../Zotlabs/Module/Wiki.php:203 +msgid "Rename page" +msgstr "Pagina hernoemen" + +#: ../../Zotlabs/Module/Wiki.php:207 +msgid "Error retrieving page content" +msgstr "Fout tijdens ophalen inhoud pagina" + +#: ../../Zotlabs/Module/Wiki.php:236 msgid "Revision Comparison" msgstr "Revisies vergelijken" -#: ../../Zotlabs/Module/Wiki.php:170 +#: ../../Zotlabs/Module/Wiki.php:237 msgid "Revert" msgstr "Ongedaan maken" -#: ../../Zotlabs/Module/Wiki.php:201 -msgid "Enter the name of your new wiki:" -msgstr "Vul de naam in van jouw nieuwe wiki:" +#: ../../Zotlabs/Module/Wiki.php:246 +msgid "Source" +msgstr "Bron" -#: ../../Zotlabs/Module/Wiki.php:202 -msgid "Enter the name of the new page:" -msgstr "Vul de naam in van de nieuwe pagina:" +#: ../../Zotlabs/Module/Wiki.php:254 +msgid "New page name" +msgstr "Nieuwe paginanaam" -#: ../../Zotlabs/Module/Wiki.php:203 -msgid "Enter the new name:" -msgstr "Vul de nieuwe naam in:" - -#: ../../Zotlabs/Module/Wiki.php:209 ../../include/conversation.php:1153 +#: ../../Zotlabs/Module/Wiki.php:259 ../../include/conversation.php:1151 msgid "Embed image from photo albums" msgstr "Afbeelding uit een fotoalbum invoegen" -#: ../../Zotlabs/Module/Wiki.php:210 ../../include/conversation.php:1247 +#: ../../Zotlabs/Module/Wiki.php:260 ../../include/conversation.php:1245 msgid "Embed an image from your albums" msgstr "Afbeelding uit jouw albums invoegen" -#: ../../Zotlabs/Module/Wiki.php:212 ../../include/conversation.php:1249 -#: ../../include/conversation.php:1296 +#: ../../Zotlabs/Module/Wiki.php:262 ../../include/conversation.php:1247 +#: ../../include/conversation.php:1294 msgid "OK" msgstr "OK" -#: ../../Zotlabs/Module/Wiki.php:213 ../../include/conversation.php:1189 +#: ../../Zotlabs/Module/Wiki.php:263 ../../include/conversation.php:1187 msgid "Choose images to embed" msgstr "Kies afbeeldingen om in te voegen" -#: ../../Zotlabs/Module/Wiki.php:214 ../../include/conversation.php:1190 +#: ../../Zotlabs/Module/Wiki.php:264 ../../include/conversation.php:1188 msgid "Choose an album" msgstr "Kies een album" -#: ../../Zotlabs/Module/Wiki.php:215 ../../include/conversation.php:1191 -msgid "Choose a different album..." -msgstr "Kies een ander album..." +#: ../../Zotlabs/Module/Wiki.php:265 +msgid "Choose a different album" +msgstr "Kies een ander album" -#: ../../Zotlabs/Module/Wiki.php:216 ../../include/conversation.php:1192 +#: ../../Zotlabs/Module/Wiki.php:266 ../../include/conversation.php:1190 msgid "Error getting album list" -msgstr "Fout met ophalen albumlijst" +msgstr "Fout tijdens ophalen albumlijst" -#: ../../Zotlabs/Module/Wiki.php:217 ../../include/conversation.php:1193 +#: ../../Zotlabs/Module/Wiki.php:267 ../../include/conversation.php:1191 msgid "Error getting photo link" -msgstr "Fout met ophalen fotolink" +msgstr "Fout tijdens ophalen fotolink" -#: ../../Zotlabs/Module/Wiki.php:218 ../../include/conversation.php:1194 +#: ../../Zotlabs/Module/Wiki.php:268 ../../include/conversation.php:1192 msgid "Error getting album" -msgstr "Fout met ophalen album" +msgstr "Fout tijdens ophalen album" + +#: ../../Zotlabs/Module/Wiki.php:332 +msgid "Error creating wiki. Invalid name." +msgstr "Fout tijdens aanmaken wiki. Ongeldige naam." + +#: ../../Zotlabs/Module/Wiki.php:343 +msgid "Wiki created, but error creating Home page." +msgstr "Wiki aangemaakt, maar fout tijdens aanmaken homepagina." + +#: ../../Zotlabs/Module/Wiki.php:348 +msgid "Error creating wiki" +msgstr "Fout tijdens aanmaken wiki." + +#: ../../Zotlabs/Module/Wiki.php:394 +msgid "New page created" +msgstr "Nieuwe pagina aangemaakt" #: ../../Zotlabs/Module/Sources.php:37 msgid "Failed to create source. No channel selected." @@ -5736,16 +5897,11 @@ msgstr "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probe msgid "Ignore/Hide" msgstr "Negeren/Verbergen" -#: ../../Zotlabs/Module/Suggest.php:64 ../../Zotlabs/Module/Directory.php:392 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" -msgstr "Voorgestelde kanalen" - -#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:263 +#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:274 msgid "post" msgstr "bericht" -#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1999 +#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948 #: ../../include/conversation.php:150 msgid "comment" msgstr "reactie" @@ -5755,200 +5911,125 @@ msgstr "reactie" msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s heeft het %3$s van %2$s getagd met %4$s" -#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 -msgid "Tag removed" -msgstr "Tag verwijderd" - -#: ../../Zotlabs/Module/Tagrm.php:123 -msgid "Remove Item Tag" -msgstr "Verwijder item-tag" - -#: ../../Zotlabs/Module/Tagrm.php:125 -msgid "Select a tag to remove: " -msgstr "Kies een tag om te verwijderen" - -#: ../../Zotlabs/Module/Follow.php:34 -msgid "Channel added." -msgstr "Kanaal toegevoegd." - -#: ../../Zotlabs/Module/Viewconnections.php:65 -msgid "No connections." -msgstr "Geen connecties." - -#: ../../Zotlabs/Module/Viewconnections.php:78 -#, php-format -msgid "Visit %s's profile [%s]" -msgstr "Bezoek het profiel van %s [%s]" - -#: ../../Zotlabs/Module/Viewconnections.php:107 -msgid "View Connections" -msgstr "Connecties weergeven" - -#: ../../Zotlabs/Module/Viewsrc.php:44 -msgid "Source of Item" -msgstr "Bron van item" +#: ../../Zotlabs/Module/Settings/Features.php:45 +msgid "Additional Features" +msgstr "Extra functies" -#: ../../Zotlabs/Module/Chat.php:181 -msgid "Room not found" -msgstr "Chatkanaal niet gevonden" +#: ../../Zotlabs/Module/Settings/Oauth.php:34 +msgid "Name is required" +msgstr "Naam is vereist" -#: ../../Zotlabs/Module/Chat.php:197 -msgid "Leave Room" -msgstr "Chatkanaal verlaten" +#: ../../Zotlabs/Module/Settings/Oauth.php:38 +msgid "Key and Secret are required" +msgstr "Key en secret zijn vereist" -#: ../../Zotlabs/Module/Chat.php:198 -msgid "Delete Room" -msgstr "Chatkanaal verwijderen" +#: ../../Zotlabs/Module/Settings/Oauth.php:86 +#: ../../Zotlabs/Module/Settings/Oauth.php:112 +#: ../../Zotlabs/Module/Settings/Oauth.php:148 +msgid "Add application" +msgstr "Applicatie toevoegen" -#: ../../Zotlabs/Module/Chat.php:199 -msgid "I am away right now" -msgstr "Ik ben momenteel afwezig" +#: ../../Zotlabs/Module/Settings/Oauth.php:89 +msgid "Name of application" +msgstr "Naam van applicatie" -#: ../../Zotlabs/Module/Chat.php:200 -msgid "I am online" -msgstr "Ik ben online" +#: ../../Zotlabs/Module/Settings/Oauth.php:90 +#: ../../Zotlabs/Module/Settings/Oauth.php:116 +#: ../../extend/addon/addon/statusnet/statusnet.php:893 +#: ../../extend/addon/addon/twitter/twitter.php:775 +msgid "Consumer Key" +msgstr "Consumer key" -#: ../../Zotlabs/Module/Chat.php:202 -msgid "Bookmark this room" -msgstr "Chatkanaal aan bladwijzers toevoegen" +#: ../../Zotlabs/Module/Settings/Oauth.php:90 +#: ../../Zotlabs/Module/Settings/Oauth.php:91 +msgid "Automatically generated - change if desired. Max length 20" +msgstr "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20" -#: ../../Zotlabs/Module/Chat.php:231 -msgid "New Chatroom" -msgstr "Nieuw chatkanaal" +#: ../../Zotlabs/Module/Settings/Oauth.php:91 +#: ../../Zotlabs/Module/Settings/Oauth.php:117 +#: ../../extend/addon/addon/statusnet/statusnet.php:892 +#: ../../extend/addon/addon/twitter/twitter.php:776 +msgid "Consumer Secret" +msgstr "Consumer secret" -#: ../../Zotlabs/Module/Chat.php:232 -msgid "Chatroom name" -msgstr "Naam chatkanaal" +#: ../../Zotlabs/Module/Settings/Oauth.php:92 +#: ../../Zotlabs/Module/Settings/Oauth.php:118 +msgid "Redirect" +msgstr "Redirect/doorverwijzing" -#: ../../Zotlabs/Module/Chat.php:233 -msgid "Expiration of chats (minutes)" -msgstr "Aantal minuten voordat chatberichten worden verwijderd" +#: ../../Zotlabs/Module/Settings/Oauth.php:92 +msgid "" +"Redirect URI - leave blank unless your application specifically requires " +"this" +msgstr "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist" -#: ../../Zotlabs/Module/Chat.php:249 -#, php-format -msgid "%1$s's Chatrooms" -msgstr "Chatkanalen van %1$s" +#: ../../Zotlabs/Module/Settings/Oauth.php:93 +#: ../../Zotlabs/Module/Settings/Oauth.php:119 +msgid "Icon url" +msgstr "Pictogram-URL" -#: ../../Zotlabs/Module/Chat.php:254 -msgid "No chatrooms available" -msgstr "Geen chatkanalen beschikbaar" +#: ../../Zotlabs/Module/Settings/Oauth.php:104 +msgid "Application not found." +msgstr "Applicatie niet gevonden." -#: ../../Zotlabs/Module/Chat.php:258 -msgid "Expiration" -msgstr "Verloopt na" +#: ../../Zotlabs/Module/Settings/Oauth.php:147 +msgid "Connected Apps" +msgstr "Verbonden applicaties" -#: ../../Zotlabs/Module/Chat.php:259 -msgid "min" -msgstr "min" +#: ../../Zotlabs/Module/Settings/Oauth.php:151 +msgid "Client key starts with" +msgstr "Client key begint met" -#: ../../Zotlabs/Module/Xchan.php:10 -msgid "Xchan Lookup" -msgstr "Xchan opzoeken" +#: ../../Zotlabs/Module/Settings/Oauth.php:152 +msgid "No name" +msgstr "Geen naam" -#: ../../Zotlabs/Module/Xchan.php:13 -msgid "Lookup xchan beginning with (or webbie): " -msgstr "Zoek een xchan (of webbie) die begint met:" +#: ../../Zotlabs/Module/Settings/Oauth.php:153 +msgid "Remove authorization" +msgstr "Autorisatie verwijderen" -#: ../../Zotlabs/Module/Directory.php:243 +#: ../../Zotlabs/Module/Settings/Tokens.php:31 #, php-format -msgid "%d rating" -msgid_plural "%d ratings" -msgstr[0] "%d beoordeling" -msgstr[1] "%d beoordelingen" - -#: ../../Zotlabs/Module/Directory.php:254 -msgid "Gender: " -msgstr "Geslacht:" - -#: ../../Zotlabs/Module/Directory.php:256 -msgid "Status: " -msgstr "Status: " - -#: ../../Zotlabs/Module/Directory.php:258 -msgid "Homepage: " -msgstr "Homepage: " - -#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1207 -msgid "Age:" -msgstr "Leeftijd:" - -#: ../../Zotlabs/Module/Directory.php:311 ../../include/channel.php:1049 -#: ../../include/bb2diaspora.php:507 ../../include/event.php:52 -#: ../../include/event.php:84 -msgid "Location:" -msgstr "Plaats:" - -#: ../../Zotlabs/Module/Directory.php:317 -msgid "Description:" -msgstr "Omschrijving:" - -#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1223 -msgid "Hometown:" -msgstr "Oorspronkelijk uit:" - -#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1231 -msgid "About:" -msgstr "Over:" - -#: ../../Zotlabs/Module/Directory.php:326 -msgid "Public Forum:" -msgstr "Openbaar forum:" - -#: ../../Zotlabs/Module/Directory.php:329 -msgid "Keywords: " -msgstr "Trefwoorden: " - -#: ../../Zotlabs/Module/Directory.php:332 -msgid "Don't suggest" -msgstr "Niet voorstellen" - -#: ../../Zotlabs/Module/Directory.php:334 -msgid "Common connections:" -msgstr "Gemeenschappelijke connecties:" - -#: ../../Zotlabs/Module/Directory.php:383 -msgid "Global Directory" -msgstr "Volledige kanalengids" - -#: ../../Zotlabs/Module/Directory.php:383 -msgid "Local Directory" -msgstr "Lokale kanalengids" - -#: ../../Zotlabs/Module/Directory.php:389 -msgid "Finding:" -msgstr "Gezocht naar:" +msgid "This channel is limited to %d tokens" +msgstr "Dit kanaal heeft een limiet van %d tokens" -#: ../../Zotlabs/Module/Directory.php:394 -msgid "next page" -msgstr "volgende pagina" +#: ../../Zotlabs/Module/Settings/Tokens.php:37 +msgid "Name and Password are required." +msgstr "Naam en wachtwoord zijn vereist" -#: ../../Zotlabs/Module/Directory.php:394 -msgid "previous page" -msgstr "vorige pagina" +#: ../../Zotlabs/Module/Settings/Tokens.php:77 +msgid "Token saved." +msgstr "Token opgeslagen." -#: ../../Zotlabs/Module/Directory.php:395 -msgid "Sort options" -msgstr "Sorteeropties" +#: ../../Zotlabs/Module/Settings/Tokens.php:113 +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 "Gebruik dit formulier om tijdelijke identiteiten aan te maken, waarmee je bepaalde informatie met niet-leden kan delen. Deze identiteiten kunnen onder Permissies (handmatige selectie) worden gebruikt. Gasten kunnen inloggen met onderstaande gegevens om zo toegang te krijgen tot privéinhoud." -#: ../../Zotlabs/Module/Directory.php:396 -msgid "Alphabetic" -msgstr "Alfabetisch" +#: ../../Zotlabs/Module/Settings/Tokens.php:115 +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 "Je kan ook <em>dropbox</em>-achtige links aan mensen geven door bovenstaand wachtwoord op onderstaande manier aan een hub-URL toe te voegen. Voorbeelden:" -#: ../../Zotlabs/Module/Directory.php:397 -msgid "Reverse Alphabetic" -msgstr "Omgekeerd alfabetisch" +#: ../../Zotlabs/Module/Settings/Tokens.php:150 ../../include/widgets.php:647 +msgid "Guest Access Tokens" +msgstr "Gasttoegang" -#: ../../Zotlabs/Module/Directory.php:398 -msgid "Newest to Oldest" -msgstr "Nieuw naar oud" +#: ../../Zotlabs/Module/Settings/Tokens.php:157 +msgid "Login Name" +msgstr "Inlognaam" -#: ../../Zotlabs/Module/Directory.php:399 -msgid "Oldest to Newest" -msgstr "Oud naar nieuw" +#: ../../Zotlabs/Module/Settings/Tokens.php:158 +msgid "Login Password" +msgstr "Wachtwoord:" -#: ../../Zotlabs/Module/Directory.php:416 -msgid "No entries (some entries may be hidden)." -msgstr "Niets gevonden (sommige kanalen kunnen verborgen zijn)." +#: ../../Zotlabs/Module/Settings/Tokens.php:159 +msgid "Expires (yyyy-mm-dd)" +msgstr "Geldig t/m (yyyy-mm-dd)" #: ../../Zotlabs/Module/Settings/Account.php:20 msgid "Not valid email." @@ -5986,44 +6067,51 @@ msgstr "Wachtwoord veranderd." msgid "Password update failed. Please try again." msgstr "Bijwerken wachtwoord mislukt. Probeer opnieuw." -#: ../../Zotlabs/Module/Settings/Account.php:120 +#: ../../Zotlabs/Module/Settings/Account.php:112 msgid "Account Settings" msgstr "Account-instellingen" -#: ../../Zotlabs/Module/Settings/Account.php:121 +#: ../../Zotlabs/Module/Settings/Account.php:113 msgid "Current Password" msgstr "Huidig wachtwoord" -#: ../../Zotlabs/Module/Settings/Account.php:122 +#: ../../Zotlabs/Module/Settings/Account.php:114 msgid "Enter New Password" msgstr "Nieuw wachtwoord invoeren" -#: ../../Zotlabs/Module/Settings/Account.php:123 +#: ../../Zotlabs/Module/Settings/Account.php:115 msgid "Confirm New Password" msgstr "Nieuw wachtwoord bevestigen" -#: ../../Zotlabs/Module/Settings/Account.php:123 +#: ../../Zotlabs/Module/Settings/Account.php:115 msgid "Leave password fields blank unless changing" msgstr "Laat de wachtwoordvelden leeg, behalve wanneer je deze wil veranderen" -#: ../../Zotlabs/Module/Settings/Account.php:124 +#: ../../Zotlabs/Module/Settings/Account.php:116 msgid "Your technical skill level" msgstr "Jouw technisch niveau" -#: ../../Zotlabs/Module/Settings/Account.php:124 +#: ../../Zotlabs/Module/Settings/Account.php:116 msgid "Used to provide a member experience matched to your comfort level" msgstr "Wordt gebruikt om je een gebruikerservaring te bieden die met jouw technisch niveau overeenkomt" -#: ../../Zotlabs/Module/Settings/Account.php:127 -#: ../../Zotlabs/Module/Settings/Channel.php:459 +#: ../../Zotlabs/Module/Settings/Account.php:119 +#: ../../Zotlabs/Module/Settings/Channel.php:462 msgid "Email Address:" msgstr "E-mailadres:" -#: ../../Zotlabs/Module/Settings/Account.php:129 +#: ../../Zotlabs/Module/Settings/Account.php:121 msgid "Remove this account including all its channels" msgstr "Dit account en al zijn kanalen verwijderen" #: ../../Zotlabs/Module/Settings/Channel.php:246 +#: ../../extend/addon/addon/logrot/logrot.php:54 +#: ../../extend/addon/addon/msgfooter/msgfooter.php:54 +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:184 +#: ../../extend/addon/addon/piwik/piwik.php:116 +#: ../../extend/addon/addon/twitter/twitter.php:766 +#: ../../extend/addon/addon/xmpp/xmpp.php:102 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:82 msgid "Settings updated." msgstr "Instellingen bijgewerkt." @@ -6071,417 +6159,434 @@ msgstr "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan n msgid "Your channel address is" msgstr "Jouw kanaaladres is" -#: ../../Zotlabs/Module/Settings/Channel.php:450 +#: ../../Zotlabs/Module/Settings/Channel.php:407 +msgid "Your files/photos are accessible via WebDAV at" +msgstr "Jouw bestanden/foto's zijn beschikbaar via WebDAV op" + +#: ../../Zotlabs/Module/Settings/Channel.php:453 msgid "Channel Settings" msgstr "Kanaal-instellingen" -#: ../../Zotlabs/Module/Settings/Channel.php:457 +#: ../../Zotlabs/Module/Settings/Channel.php:460 msgid "Basic Settings" msgstr "Basis-instellingen" -#: ../../Zotlabs/Module/Settings/Channel.php:458 -#: ../../include/channel.php:1164 +#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../include/channel.php:1172 msgid "Full Name:" msgstr "Volledige naam:" -#: ../../Zotlabs/Module/Settings/Channel.php:460 +#: ../../Zotlabs/Module/Settings/Channel.php:463 msgid "Your Timezone:" msgstr "Jouw tijdzone:" -#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../Zotlabs/Module/Settings/Channel.php:464 msgid "Default Post Location:" msgstr "Standaardlocatie bericht:" -#: ../../Zotlabs/Module/Settings/Channel.php:461 +#: ../../Zotlabs/Module/Settings/Channel.php:464 msgid "Geographical location to display on your posts" msgstr "Geografische locatie die bij het bericht moet worden vermeld" -#: ../../Zotlabs/Module/Settings/Channel.php:462 +#: ../../Zotlabs/Module/Settings/Channel.php:465 msgid "Use Browser Location:" msgstr "Locatie van webbrowser gebruiken:" -#: ../../Zotlabs/Module/Settings/Channel.php:464 +#: ../../Zotlabs/Module/Settings/Channel.php:467 msgid "Adult Content" msgstr "Inhoud voor volwassenen" -#: ../../Zotlabs/Module/Settings/Channel.php:464 +#: ../../Zotlabs/Module/Settings/Channel.php:467 msgid "" "This channel frequently or regularly publishes adult content. (Please tag " "any adult material and/or nudity with #NSFW)" msgstr "Dit kanaal publiceert regelmatig of vaak materiaal dat alleen geschikt is voor volwassenen. (Gebruik de tag #NSFW in berichten met een seksueel getinte inhoud of ander voor minderjarigen ongeschikt materiaal)" -#: ../../Zotlabs/Module/Settings/Channel.php:466 +#: ../../Zotlabs/Module/Settings/Channel.php:469 msgid "Security and Privacy Settings" msgstr "Veiligheids- en privacy-instellingen" -#: ../../Zotlabs/Module/Settings/Channel.php:469 +#: ../../Zotlabs/Module/Settings/Channel.php:472 msgid "Your permissions are already configured. Click to view/adjust" msgstr "Jouw permissies zijn al ingesteld. Klik om ze te bekijken of aan te passen." -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:474 msgid "Hide my online presence" msgstr "Verberg mijn aanwezigheid" -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:474 msgid "Prevents displaying in your profile that you are online" msgstr "Voorkomt dat op je kanaalpagina te zien valt dat je momenteel op $Projectname aanwezig bent" -#: ../../Zotlabs/Module/Settings/Channel.php:473 +#: ../../Zotlabs/Module/Settings/Channel.php:476 msgid "Simple Privacy Settings:" msgstr "Eenvoudige privacy-instellingen:" -#: ../../Zotlabs/Module/Settings/Channel.php:474 +#: ../../Zotlabs/Module/Settings/Channel.php:477 msgid "" "Very Public - <em>extremely permissive (should be used with caution)</em>" msgstr "Zeer openbaar <em>(kanaal staat volledig open - moet met grote zorgvuldigheid gebruikt worden)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:475 +#: ../../Zotlabs/Module/Settings/Channel.php:478 msgid "" "Typical - <em>default public, privacy when desired (similar to social " "network permissions but with improved privacy)</em>" msgstr "Normaal <em>(standaard openbaar, maar privacy wanneer noodzakelijk - vergelijkbaar met die van sociale netwerken, maar met verbeterde privacy)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:476 +#: ../../Zotlabs/Module/Settings/Channel.php:479 msgid "Private - <em>default private, never open or public</em>" msgstr "Privé <em>(standaard privé en nooit openbaar)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:477 +#: ../../Zotlabs/Module/Settings/Channel.php:480 msgid "Blocked - <em>default blocked to/from everybody</em>" msgstr "Geblokkeerd <em>(standaard geblokkeerd naar/van iedereen)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:479 +#: ../../Zotlabs/Module/Settings/Channel.php:482 msgid "Allow others to tag your posts" msgstr "Anderen toestaan om je berichten te taggen" -#: ../../Zotlabs/Module/Settings/Channel.php:479 +#: ../../Zotlabs/Module/Settings/Channel.php:482 msgid "" "Often used by the community to retro-actively flag inappropriate content" msgstr "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren" -#: ../../Zotlabs/Module/Settings/Channel.php:481 +#: ../../Zotlabs/Module/Settings/Channel.php:484 msgid "Channel Permission Limits" msgstr "Geavanceerde permissies" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "Expire other channel content after this many days" msgstr "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:" -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "0 or blank to use the website limit." msgstr "0 of leeg om het standaard aantal dagen van deze hub te gebruiken." -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 #, php-format msgid "This website expires after %d days." msgstr "Deze hub laat de inhoud van andere kanalen na %d dagen verlopen." -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "This website does not expire imported content." msgstr "Deze hub laat de inhoud van andere kanalen niet verlopen." -#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Channel.php:486 msgid "The website limit takes precedence if lower than your limit." msgstr "Wanneer de standaard aantal dagen van deze hub lager ligt dan jouw aantal, dan heeft de limiet van deze hub voorrang." -#: ../../Zotlabs/Module/Settings/Channel.php:484 +#: ../../Zotlabs/Module/Settings/Channel.php:487 msgid "Maximum Friend Requests/Day:" msgstr "Maximum aantal connectieverzoeken per dag:" -#: ../../Zotlabs/Module/Settings/Channel.php:484 +#: ../../Zotlabs/Module/Settings/Channel.php:487 msgid "May reduce spam activity" msgstr "Kan eventuele spam verminderen" -#: ../../Zotlabs/Module/Settings/Channel.php:485 +#: ../../Zotlabs/Module/Settings/Channel.php:488 msgid "Default Access Control List (ACL)" msgstr "Standaard permissies voor nieuwe berichten" -#: ../../Zotlabs/Module/Settings/Channel.php:487 +#: ../../Zotlabs/Module/Settings/Channel.php:490 msgid "Use my default audience setting for the type of object published" msgstr "Gebruik mijn standaard privacy-instelling voor dit type publicatie" -#: ../../Zotlabs/Module/Settings/Channel.php:494 +#: ../../Zotlabs/Module/Settings/Channel.php:497 msgid "Channel permissions category:" msgstr "Kanaaltype en -permissies:" -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Maximum private messages per day from unknown people:" msgstr "Maximum aantal privé-berichten per dag van onbekende personen:" -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Useful to reduce spamming" msgstr "Kan eventuele spam verminderen" -#: ../../Zotlabs/Module/Settings/Channel.php:503 +#: ../../Zotlabs/Module/Settings/Channel.php:506 msgid "Notification Settings" msgstr "Notificatie-instellingen" -#: ../../Zotlabs/Module/Settings/Channel.php:504 +#: ../../Zotlabs/Module/Settings/Channel.php:507 msgid "By default post a status message when:" msgstr "Plaats automatisch een bericht wanneer:" -#: ../../Zotlabs/Module/Settings/Channel.php:505 +#: ../../Zotlabs/Module/Settings/Channel.php:508 msgid "accepting a friend request" msgstr "Een connectieverzoek wordt geaccepteerd" -#: ../../Zotlabs/Module/Settings/Channel.php:506 +#: ../../Zotlabs/Module/Settings/Channel.php:509 msgid "joining a forum/community" msgstr "Je lid wordt van een forum/groep" -#: ../../Zotlabs/Module/Settings/Channel.php:507 +#: ../../Zotlabs/Module/Settings/Channel.php:510 msgid "making an <em>interesting</em> profile change" msgstr "Er sprake is van een <em>interessante</em> profielwijziging" -#: ../../Zotlabs/Module/Settings/Channel.php:508 +#: ../../Zotlabs/Module/Settings/Channel.php:511 msgid "Send a notification email when:" msgstr "Verzend een notificatie per e-mail wanneer:" -#: ../../Zotlabs/Module/Settings/Channel.php:509 +#: ../../Zotlabs/Module/Settings/Channel.php:512 msgid "You receive a connection request" msgstr "Je een connectieverzoek ontvangt" -#: ../../Zotlabs/Module/Settings/Channel.php:510 +#: ../../Zotlabs/Module/Settings/Channel.php:513 msgid "Your connections are confirmed" msgstr "Jouw connecties zijn bevestigd" -#: ../../Zotlabs/Module/Settings/Channel.php:511 +#: ../../Zotlabs/Module/Settings/Channel.php:514 msgid "Someone writes on your profile wall" msgstr "Iemand iets op jouw kanaal heeft geschreven" -#: ../../Zotlabs/Module/Settings/Channel.php:512 +#: ../../Zotlabs/Module/Settings/Channel.php:515 msgid "Someone writes a followup comment" msgstr "Iemand een reactie schrijft" -#: ../../Zotlabs/Module/Settings/Channel.php:513 +#: ../../Zotlabs/Module/Settings/Channel.php:516 msgid "You receive a private message" msgstr "Je een privé-bericht ontvangt" -#: ../../Zotlabs/Module/Settings/Channel.php:514 +#: ../../Zotlabs/Module/Settings/Channel.php:517 msgid "You receive a friend suggestion" msgstr "Je een kanaalvoorstel ontvangt" -#: ../../Zotlabs/Module/Settings/Channel.php:515 +#: ../../Zotlabs/Module/Settings/Channel.php:518 msgid "You are tagged in a post" msgstr "Je expliciet in een bericht bent genoemd" -#: ../../Zotlabs/Module/Settings/Channel.php:516 +#: ../../Zotlabs/Module/Settings/Channel.php:519 msgid "You are poked/prodded/etc. in a post" msgstr "Je bent in een bericht aangestoten/gepord/etc." -#: ../../Zotlabs/Module/Settings/Channel.php:519 +#: ../../Zotlabs/Module/Settings/Channel.php:521 +msgid "Someone likes your post/comment" +msgstr "Iemand jouw bericht/reactie leuk vindt" + +#: ../../Zotlabs/Module/Settings/Channel.php:524 msgid "Show visual notifications including:" msgstr "Toon de volgende zichtbare notificaties:" -#: ../../Zotlabs/Module/Settings/Channel.php:521 +#: ../../Zotlabs/Module/Settings/Channel.php:526 msgid "Unseen grid activity" msgstr "Niet bekeken grid-activiteit" -#: ../../Zotlabs/Module/Settings/Channel.php:522 +#: ../../Zotlabs/Module/Settings/Channel.php:527 msgid "Unseen channel activity" msgstr "Niet bekeken kanaal-activiteit" -#: ../../Zotlabs/Module/Settings/Channel.php:523 +#: ../../Zotlabs/Module/Settings/Channel.php:528 msgid "Unseen private messages" msgstr "Niet bekeken privéberichten" -#: ../../Zotlabs/Module/Settings/Channel.php:523 #: ../../Zotlabs/Module/Settings/Channel.php:528 -#: ../../Zotlabs/Module/Settings/Channel.php:529 -#: ../../Zotlabs/Module/Settings/Channel.php:530 +#: ../../Zotlabs/Module/Settings/Channel.php:533 +#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:535 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 msgid "Recommended" msgstr "Aanbevolen" -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:529 msgid "Upcoming events" msgstr "Aankomende gebeurtenissen" -#: ../../Zotlabs/Module/Settings/Channel.php:525 +#: ../../Zotlabs/Module/Settings/Channel.php:530 msgid "Events today" msgstr "Gebeurtenissen van vandaag" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:531 msgid "Upcoming birthdays" msgstr "Aankomende verjaardagen" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:531 msgid "Not available in all themes" msgstr "Niet in alle thema's beschikbaar" -#: ../../Zotlabs/Module/Settings/Channel.php:527 +#: ../../Zotlabs/Module/Settings/Channel.php:532 msgid "System (personal) notifications" msgstr "(Persoonlijke) systeemnotificaties" -#: ../../Zotlabs/Module/Settings/Channel.php:528 +#: ../../Zotlabs/Module/Settings/Channel.php:533 msgid "System info messages" msgstr "Systeemmededelingen" -#: ../../Zotlabs/Module/Settings/Channel.php:529 +#: ../../Zotlabs/Module/Settings/Channel.php:534 msgid "System critical alerts" msgstr "Kritische systeemwaarschuwingen" -#: ../../Zotlabs/Module/Settings/Channel.php:530 +#: ../../Zotlabs/Module/Settings/Channel.php:535 msgid "New connections" msgstr "Nieuwe connecties" -#: ../../Zotlabs/Module/Settings/Channel.php:531 +#: ../../Zotlabs/Module/Settings/Channel.php:536 msgid "System Registrations" msgstr "Nieuwe accountregistraties op deze hub" -#: ../../Zotlabs/Module/Settings/Channel.php:532 +#: ../../Zotlabs/Module/Settings/Channel.php:537 msgid "" "Also show new wall posts, private messages and connections under Notices" msgstr "Toon tevens nieuwe kanaalberichten, privéberichten en connecties onder Notificaties" -#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:539 msgid "Notify me of events this many days in advance" msgstr "Herinner mij zoveel dagen van te voren aan gebeurtenissen" -#: ../../Zotlabs/Module/Settings/Channel.php:534 +#: ../../Zotlabs/Module/Settings/Channel.php:539 msgid "Must be greater than 0" msgstr "Moet hoger dan 0 zijn" -#: ../../Zotlabs/Module/Settings/Channel.php:536 +#: ../../Zotlabs/Module/Settings/Channel.php:541 msgid "Advanced Account/Page Type Settings" msgstr "Instellingen geavanceerd account/paginatype" -#: ../../Zotlabs/Module/Settings/Channel.php:537 +#: ../../Zotlabs/Module/Settings/Channel.php:542 msgid "Change the behaviour of this account for special situations" msgstr "Verander het gedrag van dit account voor speciale situaties" -#: ../../Zotlabs/Module/Settings/Channel.php:539 +#: ../../Zotlabs/Module/Settings/Channel.php:544 msgid "Miscellaneous Settings" msgstr "Diverse instellingen" -#: ../../Zotlabs/Module/Settings/Channel.php:540 +#: ../../Zotlabs/Module/Settings/Channel.php:545 msgid "Default photo upload folder" msgstr "Standaard fotoalbum voor uploads" -#: ../../Zotlabs/Module/Settings/Channel.php:540 -#: ../../Zotlabs/Module/Settings/Channel.php:541 +#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Module/Settings/Channel.php:546 msgid "%Y - current year, %m - current month" msgstr "%Y - dit jaar, %m - deze maand" -#: ../../Zotlabs/Module/Settings/Channel.php:541 +#: ../../Zotlabs/Module/Settings/Channel.php:546 msgid "Default file upload folder" msgstr "Standaard bestandsmap voor uploads" -#: ../../Zotlabs/Module/Settings/Channel.php:543 +#: ../../Zotlabs/Module/Settings/Channel.php:548 msgid "Personal menu to display in your channel pages" msgstr "Persoonlijk menu om op je kanaalpagina's weer te geven" -#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Module/Settings/Channel.php:550 msgid "Remove this channel." msgstr "Verwijder dit kanaal." -#: ../../Zotlabs/Module/Settings/Channel.php:546 +#: ../../Zotlabs/Module/Settings/Channel.php:551 msgid "Firefox Share $Projectname provider" msgstr "$Projectname-service voor Firefox Share" -#: ../../Zotlabs/Module/Settings/Channel.php:547 +#: ../../Zotlabs/Module/Settings/Channel.php:552 msgid "Start calendar week on monday" msgstr "Begin in de agenda de week op maandag" -#: ../../Zotlabs/Module/Settings/Display.php:135 +#: ../../Zotlabs/Module/Settings/Display.php:137 msgid "No special theme for mobile devices" msgstr "Geen speciaal thema voor mobiele apparaten" -#: ../../Zotlabs/Module/Settings/Display.php:138 +#: ../../Zotlabs/Module/Settings/Display.php:140 #, php-format msgid "%s - (Experimental)" msgstr "%s - (experimenteel)" -#: ../../Zotlabs/Module/Settings/Display.php:189 +#: ../../Zotlabs/Module/Settings/Display.php:191 msgid "Display Settings" msgstr "Weergave-instellingen" -#: ../../Zotlabs/Module/Settings/Display.php:190 +#: ../../Zotlabs/Module/Settings/Display.php:192 msgid "Theme Settings" msgstr "Thema-instellingen" -#: ../../Zotlabs/Module/Settings/Display.php:191 +#: ../../Zotlabs/Module/Settings/Display.php:193 msgid "Custom Theme Settings" msgstr "Handmatige thema-instellingen" -#: ../../Zotlabs/Module/Settings/Display.php:192 +#: ../../Zotlabs/Module/Settings/Display.php:194 msgid "Content Settings" msgstr "Inhoudsinstellingen" -#: ../../Zotlabs/Module/Settings/Display.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:200 msgid "Display Theme:" msgstr "Gebruik thema:" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:201 msgid "Select scheme" msgstr "Kies schema van thema" -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Module/Settings/Display.php:203 msgid "Mobile Theme:" msgstr "Mobiel thema:" -#: ../../Zotlabs/Module/Settings/Display.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:204 msgid "Preload images before rendering the page" msgstr "Afbeeldingen laden voordat de pagina wordt weergegeven" -#: ../../Zotlabs/Module/Settings/Display.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:204 msgid "" "The subjective page load time will be longer but the page will be ready when" " displayed" msgstr "De laadtijd van een pagina lijkt langer, maar de pagina is wel meteen helemaal geladen wanneer deze wordt weergeven" -#: ../../Zotlabs/Module/Settings/Display.php:203 +#: ../../Zotlabs/Module/Settings/Display.php:205 msgid "Enable user zoom on mobile devices" msgstr "Inzoomen op smartphones en tablets toestaan" -#: ../../Zotlabs/Module/Settings/Display.php:204 +#: ../../Zotlabs/Module/Settings/Display.php:206 msgid "Update browser every xx seconds" msgstr "Ververs de webbrowser om de zoveel seconde" -#: ../../Zotlabs/Module/Settings/Display.php:204 +#: ../../Zotlabs/Module/Settings/Display.php:206 msgid "Minimum of 10 seconds, no maximum" msgstr "Minimaal 10 seconde, geen maximum" -#: ../../Zotlabs/Module/Settings/Display.php:205 +#: ../../Zotlabs/Module/Settings/Display.php:207 msgid "Maximum number of conversations to load at any time:" msgstr "Maximaal aantal conversaties die per keer geladen worden:" -#: ../../Zotlabs/Module/Settings/Display.php:205 +#: ../../Zotlabs/Module/Settings/Display.php:207 msgid "Maximum of 100 items" msgstr "Maximaal 100 conversaties" -#: ../../Zotlabs/Module/Settings/Display.php:206 +#: ../../Zotlabs/Module/Settings/Display.php:208 msgid "Show emoticons (smilies) as images" msgstr "Toon emoticons (smilies) als afbeeldingen" -#: ../../Zotlabs/Module/Settings/Display.php:207 +#: ../../Zotlabs/Module/Settings/Display.php:209 +msgid "Manual conversation updates" +msgstr "Handmatige conversatie-updates" + +#: ../../Zotlabs/Module/Settings/Display.php:209 +msgid "Default is automatic, which may increase screen jumping" +msgstr "Standaard is automatisch, maar soms kan het zorgen voor het verspringen van items" + +#: ../../Zotlabs/Module/Settings/Display.php:210 msgid "Link post titles to source" msgstr "Berichtkoppen naar originele locatie linken" -#: ../../Zotlabs/Module/Settings/Display.php:208 +#: ../../Zotlabs/Module/Settings/Display.php:211 msgid "System Page Layout Editor - (advanced)" msgstr "Lay-out bewerken van systeempagina's (geavanceerd)" -#: ../../Zotlabs/Module/Settings/Display.php:211 +#: ../../Zotlabs/Module/Settings/Display.php:214 msgid "Use blog/list mode on channel page" msgstr "Gebruik blog/lijst-modus op kanaalpagina" -#: ../../Zotlabs/Module/Settings/Display.php:211 -#: ../../Zotlabs/Module/Settings/Display.php:212 +#: ../../Zotlabs/Module/Settings/Display.php:214 +#: ../../Zotlabs/Module/Settings/Display.php:215 msgid "(comments displayed separately)" msgstr "(reacties worden afzonderlijk weergeven)" -#: ../../Zotlabs/Module/Settings/Display.php:212 +#: ../../Zotlabs/Module/Settings/Display.php:215 msgid "Use blog/list mode on grid page" msgstr "Gebruik blog/lijst-modus op gridpagina" -#: ../../Zotlabs/Module/Settings/Display.php:213 +#: ../../Zotlabs/Module/Settings/Display.php:216 msgid "Channel page max height of content (in pixels)" msgstr "Maximale hoogte berichtinhoud op kanaalpagina (in pixels)" -#: ../../Zotlabs/Module/Settings/Display.php:213 -#: ../../Zotlabs/Module/Settings/Display.php:214 +#: ../../Zotlabs/Module/Settings/Display.php:216 +#: ../../Zotlabs/Module/Settings/Display.php:217 msgid "click to expand content exceeding this height" msgstr "klik om inhoud uit te klappen die deze hoogte overschrijdt" -#: ../../Zotlabs/Module/Settings/Display.php:214 +#: ../../Zotlabs/Module/Settings/Display.php:217 msgid "Grid page max height of content (in pixels)" msgstr "Maximale hoogte berichtinhoud op gridpagina (in pixels)" @@ -6493,352 +6598,442 @@ msgstr "Geen plugin-instellingen aanwezig" msgid "Feature/Addon Settings" msgstr "Plugin-instellingen" -#: ../../Zotlabs/Module/Settings/Features.php:45 -msgid "Additional Features" -msgstr "Extra functies" +#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 +msgid "Tag removed" +msgstr "Tag verwijderd" -#: ../../Zotlabs/Module/Settings/Oauth.php:34 -msgid "Name is required" -msgstr "Naam is vereist" +#: ../../Zotlabs/Module/Tagrm.php:123 +msgid "Remove Item Tag" +msgstr "Verwijder item-tag" -#: ../../Zotlabs/Module/Settings/Oauth.php:38 -msgid "Key and Secret are required" -msgstr "Key en secret zijn vereist" +#: ../../Zotlabs/Module/Tagrm.php:125 +msgid "Select a tag to remove: " +msgstr "Kies een tag om te verwijderen" -#: ../../Zotlabs/Module/Settings/Oauth.php:86 -#: ../../Zotlabs/Module/Settings/Oauth.php:112 -#: ../../Zotlabs/Module/Settings/Oauth.php:148 -msgid "Add application" -msgstr "Applicatie toevoegen" +#: ../../Zotlabs/Module/Thing.php:114 +msgid "Thing updated" +msgstr "Ding bijgewerkt" -#: ../../Zotlabs/Module/Settings/Oauth.php:89 -msgid "Name of application" -msgstr "Naam van applicatie" +#: ../../Zotlabs/Module/Thing.php:166 +msgid "Object store: failed" +msgstr "Opslaan van ding mislukt" -#: ../../Zotlabs/Module/Settings/Oauth.php:90 -#: ../../Zotlabs/Module/Settings/Oauth.php:116 -msgid "Consumer Key" -msgstr "Consumer key" +#: ../../Zotlabs/Module/Thing.php:170 +msgid "Thing added" +msgstr "Ding toegevoegd" -#: ../../Zotlabs/Module/Settings/Oauth.php:90 -#: ../../Zotlabs/Module/Settings/Oauth.php:91 -msgid "Automatically generated - change if desired. Max length 20" -msgstr "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20" +#: ../../Zotlabs/Module/Thing.php:196 +#, php-format +msgid "OBJ: %1$s %2$s %3$s" +msgstr "OBJ: %1$s %2$s %3$s" -#: ../../Zotlabs/Module/Settings/Oauth.php:91 -#: ../../Zotlabs/Module/Settings/Oauth.php:117 -msgid "Consumer Secret" -msgstr "Consumer secret" +#: ../../Zotlabs/Module/Thing.php:259 +msgid "Show Thing" +msgstr "Ding weergeven" -#: ../../Zotlabs/Module/Settings/Oauth.php:92 -#: ../../Zotlabs/Module/Settings/Oauth.php:118 -msgid "Redirect" -msgstr "Redirect/doorverwijzing" +#: ../../Zotlabs/Module/Thing.php:266 +msgid "item not found." +msgstr "Item niet gevonden" -#: ../../Zotlabs/Module/Settings/Oauth.php:92 -msgid "" -"Redirect URI - leave blank unless your application specifically requires " -"this" -msgstr "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist" +#: ../../Zotlabs/Module/Thing.php:299 +msgid "Edit Thing" +msgstr "Ding bewerken" -#: ../../Zotlabs/Module/Settings/Oauth.php:93 -#: ../../Zotlabs/Module/Settings/Oauth.php:119 -msgid "Icon url" -msgstr "Pictogram-URL" +#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:355 +msgid "Select a profile" +msgstr "Kies een profiel" -#: ../../Zotlabs/Module/Settings/Oauth.php:104 -msgid "Application not found." -msgstr "Applicatie niet gevonden." +#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 +msgid "Post an activity" +msgstr "Plaats een bericht" -#: ../../Zotlabs/Module/Settings/Oauth.php:147 -msgid "Connected Apps" -msgstr "Verbonden applicaties" +#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 +msgid "Only sends to viewers of the applicable profile" +msgstr "Toont dit alleen aan diegene die het gekozen profiel mogen zien." -#: ../../Zotlabs/Module/Settings/Oauth.php:151 -msgid "Client key starts with" -msgstr "Client key begint met" +#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:360 +msgid "Name of thing e.g. something" +msgstr "Naam van ding" -#: ../../Zotlabs/Module/Settings/Oauth.php:152 -msgid "No name" -msgstr "Geen naam" +#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:361 +msgid "URL of thing (optional)" +msgstr "URL van ding (optioneel)" -#: ../../Zotlabs/Module/Settings/Oauth.php:153 -msgid "Remove authorization" -msgstr "Autorisatie verwijderen" +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:362 +msgid "URL for photo of thing (optional)" +msgstr "URL voor foto van ding (optioneel)" -#: ../../Zotlabs/Module/Settings/Tokens.php:31 +#: ../../Zotlabs/Module/Thing.php:353 +msgid "Add Thing to your Profile" +msgstr "Ding aan je profiel toevoegen" + +#: ../../Zotlabs/Module/Import.php:33 #, php-format -msgid "This channel is limited to %d tokens" -msgstr "Dit kanaal heeft een limiet van %d tokens" +msgid "Your service plan only allows %d channels." +msgstr "Jouw abonnement staat maar %d kanalen toe." -#: ../../Zotlabs/Module/Settings/Tokens.php:37 -msgid "Name and Password are required." -msgstr "Naam en wachtwoord zijn vereist" +#: ../../Zotlabs/Module/Import.php:157 ../../include/import.php:100 +msgid "Cloned channel not found. Import failed." +msgstr "Gekloond kanaal niet gevonden. Importeren mislukt." -#: ../../Zotlabs/Module/Settings/Tokens.php:77 -msgid "Token saved." -msgstr "Token opgeslagen." +#: ../../Zotlabs/Module/Import.php:167 +msgid "No channel. Import failed." +msgstr "Geen kanaal. Importeren mislukt." -#: ../../Zotlabs/Module/Settings/Tokens.php:113 +#: ../../Zotlabs/Module/Import.php:503 +#: ../../include/Import/import_diaspora.php:142 +msgid "Import completed." +msgstr "Import voltooid." + +#: ../../Zotlabs/Module/Import.php:525 +msgid "You must be logged in to use this feature." +msgstr "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken." + +#: ../../Zotlabs/Module/Import.php:530 +msgid "Import Channel" +msgstr "Kanaal importeren" + +#: ../../Zotlabs/Module/Import.php:531 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 "Gebruik dit formulier om tijdelijke identiteiten aan te maken, waarmee je bepaalde informatie met niet-leden kan delen. Deze identiteiten kunnen onder Permissies (handmatige selectie) worden gebruikt. Gasten kunnen inloggen met onderstaande gegevens om zo toegang te krijgen tot privéinhoud." +"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 "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken." -#: ../../Zotlabs/Module/Settings/Tokens.php:115 +#: ../../Zotlabs/Module/Import.php:533 +msgid "Or provide the old server/hub details" +msgstr "Of vul de gegevens van de oude hub in" + +#: ../../Zotlabs/Module/Import.php:534 +msgid "Your old identity address (xyz@example.com)" +msgstr "Jouw oude kanaaladres (xyz@example.com)" + +#: ../../Zotlabs/Module/Import.php:535 +msgid "Your old login email address" +msgstr "Het e-mailadres van je oude account" + +#: ../../Zotlabs/Module/Import.php:536 +msgid "Your old login password" +msgstr "Wachtwoord van jouw oude account" + +#: ../../Zotlabs/Module/Import.php:537 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 "Je kan ook <em>dropbox</em>-achtige links aan mensen geven door bovenstaand wachtwoord op onderstaande manier aan een hub-URL toe te voegen. Voorbeelden:" +"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 "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen." -#: ../../Zotlabs/Module/Settings/Tokens.php:150 ../../include/widgets.php:647 -msgid "Guest Access Tokens" -msgstr "Gasttoegang" +#: ../../Zotlabs/Module/Import.php:538 +msgid "Make this hub my primary location" +msgstr "Stel deze hub als mijn primaire locatie in" -#: ../../Zotlabs/Module/Settings/Tokens.php:157 -msgid "Login Name" -msgstr "Inlognaam" +#: ../../Zotlabs/Module/Import.php:539 +msgid "" +"Import existing posts if possible (experimental - limited by available " +"memory" +msgstr "Importeer bestaande berichten wanneer mogelijk (experimenteel - afhankelijk van beschikbaar servergeheugen)" -#: ../../Zotlabs/Module/Settings/Tokens.php:158 -msgid "Login Password" -msgstr "Wachtwoord:" +#: ../../Zotlabs/Module/Import.php:540 +msgid "" +"This process may take several minutes to complete. Please submit the form " +"only once and leave this page open until finished." +msgstr "Dit proces kan enkele minuten in beslag nemen. Klik maar één keer op opslaan en verlaat deze pagina niet alvorens het proces is voltooid." -#: ../../Zotlabs/Module/Settings/Tokens.php:159 -msgid "Expires (yyyy-mm-dd)" -msgstr "Geldig t/m (yyyy-mm-dd)" +#: ../../Zotlabs/Module/Viewconnections.php:65 +msgid "No connections." +msgstr "Geen connecties." -#: ../../Zotlabs/Lib/Chatroom.php:27 -msgid "Missing room name" -msgstr "Naam chatkanaal ontbreekt" +#: ../../Zotlabs/Module/Viewconnections.php:78 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "Bezoek het profiel van %s [%s]" -#: ../../Zotlabs/Lib/Chatroom.php:36 -msgid "Duplicate room name" -msgstr "Naam chatkanaal bestaat al" +#: ../../Zotlabs/Module/Viewconnections.php:107 +msgid "View Connections" +msgstr "Connecties weergeven" -#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94 -msgid "Invalid room specifier." -msgstr "Ongeldige omschrijving chatkanaal" +#: ../../Zotlabs/Module/Viewsrc.php:44 +msgid "Source of Item" +msgstr "Bron van item" -#: ../../Zotlabs/Lib/Chatroom.php:126 -msgid "Room not found." +#: ../../Zotlabs/Module/Chat.php:181 +msgid "Room not found" msgstr "Chatkanaal niet gevonden" -#: ../../Zotlabs/Lib/Chatroom.php:147 -msgid "Room is full" -msgstr "Chatkanaal is vol" +#: ../../Zotlabs/Module/Chat.php:197 +msgid "Leave Room" +msgstr "Chatkanaal verlaten" -#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1889 -msgid "$Projectname Notification" -msgstr "$Projectname-notificatie" +#: ../../Zotlabs/Module/Chat.php:198 +msgid "Delete Room" +msgstr "Chatkanaal verwijderen" -#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1890 -msgid "$projectname" -msgstr "$projectname" +#: ../../Zotlabs/Module/Chat.php:199 +msgid "I am away right now" +msgstr "Ik ben momenteel afwezig" -#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1892 -msgid "Thank You," -msgstr "Bedankt," +#: ../../Zotlabs/Module/Chat.php:200 +msgid "I am online" +msgstr "Ik ben online" -#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1894 -#, php-format -msgid "%s Administrator" -msgstr "Beheerder %s" +#: ../../Zotlabs/Module/Chat.php:202 +msgid "Bookmark this room" +msgstr "Chatkanaal aan bladwijzers toevoegen" -#: ../../Zotlabs/Lib/Enotify.php:103 -#, php-format -msgid "%s <!item_type!>" -msgstr "%s <!item_type!>" +#: ../../Zotlabs/Module/Chat.php:231 +msgid "New Chatroom" +msgstr "Nieuw chatkanaal" -#: ../../Zotlabs/Lib/Enotify.php:107 -#, php-format -msgid "[$Projectname:Notify] New mail received at %s" -msgstr "[$Projectname:Notificatie] Nieuw privébericht ontvangen op %s" +#: ../../Zotlabs/Module/Chat.php:232 +msgid "Chatroom name" +msgstr "Naam chatkanaal" -#: ../../Zotlabs/Lib/Enotify.php:109 -#, php-format -msgid "%1$s, %2$s sent you a new private message at %3$s." -msgstr "%1$s, %2$s zond jou een nieuw privébericht om %3$s." +#: ../../Zotlabs/Module/Chat.php:233 +msgid "Expiration of chats (minutes)" +msgstr "Aantal minuten voordat chatberichten worden verwijderd" -#: ../../Zotlabs/Lib/Enotify.php:110 +#: ../../Zotlabs/Module/Chat.php:249 #, php-format -msgid "%1$s sent you %2$s." -msgstr "%1$s zond jou %2$s." +msgid "%1$s's Chatrooms" +msgstr "Chatkanalen van %1$s" -#: ../../Zotlabs/Lib/Enotify.php:110 -msgid "a private message" -msgstr "een privébericht" +#: ../../Zotlabs/Module/Chat.php:254 +msgid "No chatrooms available" +msgstr "Geen chatkanalen beschikbaar" -#: ../../Zotlabs/Lib/Enotify.php:111 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." -msgstr "Bezoek %s om je privéberichten te bekijken en/of er op te reageren." +#: ../../Zotlabs/Module/Chat.php:258 +msgid "Expiration" +msgstr "Verloopt na" -#: ../../Zotlabs/Lib/Enotify.php:170 -#, php-format -msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" -msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %4$s[/zrl]" +#: ../../Zotlabs/Module/Chat.php:259 +msgid "min" +msgstr "min" -#: ../../Zotlabs/Lib/Enotify.php:178 -#, php-format -msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" -msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %5$s van %4$s[/zrl]" +#: ../../Zotlabs/Module/Xchan.php:10 +msgid "Xchan Lookup" +msgstr "Xchan opzoeken" -#: ../../Zotlabs/Lib/Enotify.php:187 -#, php-format -msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" -msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]jouw %4$s[/zrl]" +#: ../../Zotlabs/Module/Xchan.php:13 +msgid "Lookup xchan beginning with (or webbie): " +msgstr "Zoek een xchan (of webbie) die begint met:" -#: ../../Zotlabs/Lib/Enotify.php:198 -#, php-format -msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" -msgstr "[$Projectname:Notificatie] Reactie op conversatie #%1$d door %2$s" +#: ../../Zotlabs/Module/Events.php:25 +msgid "Calendar entries imported." +msgstr "Agenda-items geïmporteerd." -#: ../../Zotlabs/Lib/Enotify.php:199 -#, php-format -msgid "%1$s, %2$s commented on an item/conversation you have been following." -msgstr "%1$s, %2$s gaf een reactie op een bericht/conversatie die jij volgt." +#: ../../Zotlabs/Module/Events.php:27 +msgid "No calendar entries found." +msgstr "Geen agenda-items gevonden." -#: ../../Zotlabs/Lib/Enotify.php:202 ../../Zotlabs/Lib/Enotify.php:217 -#: ../../Zotlabs/Lib/Enotify.php:243 ../../Zotlabs/Lib/Enotify.php:261 -#: ../../Zotlabs/Lib/Enotify.php:275 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." -msgstr "Bezoek %s om de conversatie te bekijken en/of er op te reageren." +#: ../../Zotlabs/Module/Events.php:106 +msgid "Event can not end before it has started." +msgstr "Gebeurtenis kan niet eindigen voordat het is begonnen" -#: ../../Zotlabs/Lib/Enotify.php:208 -#, php-format -msgid "[$Projectname:Notify] %s posted to your profile wall" -msgstr "[$Projectname:Notificatie] %s heeft een bericht op jouw kanaal geplaatst" +#: ../../Zotlabs/Module/Events.php:108 ../../Zotlabs/Module/Events.php:117 +#: ../../Zotlabs/Module/Events.php:139 +msgid "Unable to generate preview." +msgstr "Niet in staat om voorvertoning te genereren" -#: ../../Zotlabs/Lib/Enotify.php:210 -#, php-format -msgid "%1$s, %2$s posted to your profile wall at %3$s" -msgstr "%1$s, %2$s heeft om %3$s een bericht op jouw kanaal geplaatst" +#: ../../Zotlabs/Module/Events.php:115 +msgid "Event title and start time are required." +msgstr "Titel en begintijd van gebeurtenis zijn vereist." -#: ../../Zotlabs/Lib/Enotify.php:212 -#, php-format -msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]" -msgstr "%1$s, %2$s heeft een bericht op [zrl=%3$s]jouw kanaal[/zrl] geplaatst" +#: ../../Zotlabs/Module/Events.php:137 ../../Zotlabs/Module/Events.php:261 +msgid "Event not found." +msgstr "Gebeurtenis niet gevonden" -#: ../../Zotlabs/Lib/Enotify.php:236 -#, php-format -msgid "[$Projectname:Notify] %s tagged you" -msgstr "[$Projectname:Notificatie] %s heeft jou genoemd" +#: ../../Zotlabs/Module/Events.php:453 +msgid "Edit event title" +msgstr "Titel bewerken" -#: ../../Zotlabs/Lib/Enotify.php:237 -#, php-format -msgid "%1$s, %2$s tagged you at %3$s" -msgstr "%1$s, %2$s noemde jou op %3$s" +#: ../../Zotlabs/Module/Events.php:453 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:835 +msgid "Event title" +msgstr "Titel" -#: ../../Zotlabs/Lib/Enotify.php:238 -#, php-format -msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]." -msgstr "%1$s, %2$s [zrl=%3$s]noemde jou[/zrl]." +#: ../../Zotlabs/Module/Events.php:455 +msgid "Categories (comma-separated list)" +msgstr "Categorieën (door komma's gescheiden lijst)" -#: ../../Zotlabs/Lib/Enotify.php:250 -#, php-format -msgid "[$Projectname:Notify] %1$s poked you" -msgstr "[$Projectname:Notificatie] %1$s heeft jou aangestoten" +#: ../../Zotlabs/Module/Events.php:456 +msgid "Edit Category" +msgstr "Categorie" -#: ../../Zotlabs/Lib/Enotify.php:251 -#, php-format -msgid "%1$s, %2$s poked you at %3$s" -msgstr "%1$s, %2$s heeft je aangestoten op %3$s" +#: ../../Zotlabs/Module/Events.php:456 +msgid "Category" +msgstr "Categorie" -#: ../../Zotlabs/Lib/Enotify.php:252 -#, php-format -msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]." -msgstr "%1$s, %2$s [zrl=%2$s]heeft je aangestoten[/zrl]." +#: ../../Zotlabs/Module/Events.php:459 +msgid "Edit start date and time" +msgstr "Begindatum en -tijd bewerken" -#: ../../Zotlabs/Lib/Enotify.php:268 -#, php-format -msgid "[$Projectname:Notify] %s tagged your post" -msgstr "[$Projectname:Notificatie] %s heeft jouw bericht getagd" +#: ../../Zotlabs/Module/Events.php:459 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 +msgid "Start date and time" +msgstr "Begindatum en -tijd" -#: ../../Zotlabs/Lib/Enotify.php:269 -#, php-format -msgid "%1$s, %2$s tagged your post at %3$s" -msgstr "%1$s, %2$s heeft jouw bericht om %3$s getagd" +#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:463 +msgid "Finish date and time are not known or not relevant" +msgstr "Einddatum en -tijd zijn niet bekend of niet van toepassing" -#: ../../Zotlabs/Lib/Enotify.php:270 -#, php-format -msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]" -msgstr "%1$s, %2$s heeft [zrl=%3$s]jouw bericht[/zrl] getagd" +#: ../../Zotlabs/Module/Events.php:462 +msgid "Edit finish date and time" +msgstr "Einddatum en -tijd bewerken" -#: ../../Zotlabs/Lib/Enotify.php:282 -msgid "[$Projectname:Notify] Introduction received" -msgstr "[$Projectname:Notificatie] Connectieverzoek ontvangen" +#: ../../Zotlabs/Module/Events.php:462 +msgid "Finish date and time" +msgstr "Einddatum en -tijd" -#: ../../Zotlabs/Lib/Enotify.php:283 -#, php-format -msgid "%1$s, you've received an new connection request from '%2$s' at %3$s" -msgstr "%1$s, je hebt een nieuw connectieverzoek ontvangen van '%2$s' op %3$s" +#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Events.php:465 +msgid "Adjust for viewer timezone" +msgstr "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt" -#: ../../Zotlabs/Lib/Enotify.php:284 -#, php-format +#: ../../Zotlabs/Module/Events.php:464 msgid "" -"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s." -msgstr "%1$s, je hebt een [zrl=%2$s]nieuw connectieverzoek[/zrl] ontvangen van %3$s." +"Important for events that happen in a particular place. Not practical for " +"global holidays." +msgstr "Belangrijk voor gebeurtenissen die op een bepaalde locatie plaatsvinden. Niet praktisch voor wereldwijde feestdagen." -#: ../../Zotlabs/Lib/Enotify.php:288 ../../Zotlabs/Lib/Enotify.php:307 -#, php-format -msgid "You may visit their profile at %s" -msgstr "Je kan het profiel bekijken op %s" +#: ../../Zotlabs/Module/Events.php:466 +msgid "Edit Description" +msgstr "Omschrijving bewerken" -#: ../../Zotlabs/Lib/Enotify.php:290 -#, php-format -msgid "Please visit %s to approve or reject the connection request." -msgstr "Bezoek %s om het connectieverzoek te accepteren of af te wijzen." +#: ../../Zotlabs/Module/Events.php:468 +msgid "Edit Location" +msgstr "Locatie bewerken" -#: ../../Zotlabs/Lib/Enotify.php:297 -msgid "[$Projectname:Notify] Friend suggestion received" -msgstr "[$Projectname:Notificatie] Kanaalvoorstel ontvangen" +#: ../../Zotlabs/Module/Events.php:472 ../../include/conversation.php:1262 +msgid "Permission settings" +msgstr "Permissies" -#: ../../Zotlabs/Lib/Enotify.php:298 -#, php-format -msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s" -msgstr "%1$s, je hebt een kanaalvoorstel ontvangen van '%2$s' om %3$s" +#: ../../Zotlabs/Module/Events.php:485 +msgid "Advanced Options" +msgstr "Geavanceerde opties" -#: ../../Zotlabs/Lib/Enotify.php:299 -#, php-format -msgid "" -"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from " -"%4$s." -msgstr "%1$s, je hebt [zrl=%2$s]een kanaalvoorstel[/zrl] ontvangen voor %3$s van %4$s." +#: ../../Zotlabs/Module/Events.php:624 +msgid "Edit event" +msgstr "Gebeurtenis bewerken" -#: ../../Zotlabs/Lib/Enotify.php:305 -msgid "Name:" -msgstr "Naam:" +#: ../../Zotlabs/Module/Events.php:626 +msgid "Delete event" +msgstr "Gebeurtenis verwijderen" -#: ../../Zotlabs/Lib/Enotify.php:306 -msgid "Photo:" -msgstr "Foto:" +#: ../../Zotlabs/Module/Events.php:660 +msgid "calendar" +msgstr "agenda" -#: ../../Zotlabs/Lib/Enotify.php:309 -#, php-format -msgid "Please visit %s to approve or reject the suggestion." -msgstr "Bezoek %s om het voorstel te accepteren of af te wijzen." +#: ../../Zotlabs/Module/Events.php:686 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:849 +msgid "Month" +msgstr "Maand" -#: ../../Zotlabs/Lib/Enotify.php:527 -msgid "[$Projectname:Notify]" -msgstr "[$Projectname:Notificatie]" +#: ../../Zotlabs/Module/Events.php:687 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:850 +msgid "Week" +msgstr "Week" -#: ../../Zotlabs/Lib/Enotify.php:687 -msgid "created a new post" -msgstr "maakte een nieuw bericht aan" +#: ../../Zotlabs/Module/Events.php:688 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:851 +msgid "Day" +msgstr "Dag" + +#: ../../Zotlabs/Module/Events.php:722 +msgid "Event removed" +msgstr "Gebeurtenis verwijderd" -#: ../../Zotlabs/Lib/Enotify.php:688 +#: ../../Zotlabs/Module/Events.php:725 +msgid "Failed to remove event" +msgstr "Verwijderen gebeurtenis mislukt" + +#: ../../Zotlabs/Lib/Chatroom.php:27 +msgid "Missing room name" +msgstr "Naam chatkanaal ontbreekt" + +#: ../../Zotlabs/Lib/Chatroom.php:36 +msgid "Duplicate room name" +msgstr "Naam chatkanaal bestaat al" + +#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94 +msgid "Invalid room specifier." +msgstr "Ongeldige omschrijving chatkanaal" + +#: ../../Zotlabs/Lib/Chatroom.php:126 +msgid "Room not found." +msgstr "Chatkanaal niet gevonden" + +#: ../../Zotlabs/Lib/Chatroom.php:147 +msgid "Room is full" +msgstr "Chatkanaal is vol" + +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +#: ../../include/acl_selectors.php:128 +msgid "Visible to your default audience" +msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld" + +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +#: ../../include/acl_selectors.php:191 +msgid "Only me" +msgstr "Alleen ik" + +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" +msgstr "Openbaar" + +#: ../../Zotlabs/Lib/PermissionDescription.php:109 +msgid "Anybody in the $Projectname network" +msgstr "Iedereen in het $Projectname-netwerk" + +#: ../../Zotlabs/Lib/PermissionDescription.php:110 #, php-format -msgid "commented on %s's post" -msgstr "gaf een reactie op een bericht van %s" +msgid "Any account on %s" +msgstr "Iedereen op %s" + +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" +msgstr "Al mijn geaccepteerde connecties" + +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" +msgstr "Alleen connecties die uitdrukkelijk door jou zijn toegestaan" + +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" +msgstr "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)" + +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" +msgstr "Al mijn geaccepteerde en nog niet geaccepteerde connecties" + +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." +msgstr "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken" + +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" +msgstr "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken" + +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" +msgstr "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken" -#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:667 +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" +msgstr "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken" + +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" +msgstr "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken" + +#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:663 msgid "Private Message" msgstr "Niet voor iedereen zichtbaar" -#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:659 +#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:655 msgid "Select" msgstr "Kies" @@ -6886,11 +7081,11 @@ msgstr "Ster toevoegen of verwijderen" msgid "starred" msgstr "met ster" -#: ../../Zotlabs/Lib/ThreadItem.php:239 ../../include/conversation.php:674 +#: ../../Zotlabs/Lib/ThreadItem.php:239 ../../include/conversation.php:670 msgid "Message signature validated" msgstr "Berichtkenmerk gevalideerd" -#: ../../Zotlabs/Lib/ThreadItem.php:240 ../../include/conversation.php:675 +#: ../../Zotlabs/Lib/ThreadItem.php:240 ../../include/conversation.php:671 msgid "Message signature incorrect" msgstr "Berichtkenmerk onjuist" @@ -6946,1006 +7141,3376 @@ msgstr "Kanaal-naar-kanaal" msgid "via Wall-To-Wall:" msgstr "via kanaal-naar-kanaal" -#: ../../Zotlabs/Lib/ThreadItem.php:348 ../../include/conversation.php:720 +#: ../../Zotlabs/Lib/ThreadItem.php:348 ../../include/conversation.php:716 #, php-format msgid "from %s" msgstr "van %s" -#: ../../Zotlabs/Lib/ThreadItem.php:351 ../../include/conversation.php:723 +#: ../../Zotlabs/Lib/ThreadItem.php:351 ../../include/conversation.php:719 #, php-format msgid "last edited: %s" msgstr "laatst bewerkt: %s" -#: ../../Zotlabs/Lib/ThreadItem.php:352 ../../include/conversation.php:724 +#: ../../Zotlabs/Lib/ThreadItem.php:352 ../../include/conversation.php:720 #, php-format msgid "Expires: %s" msgstr "Verloopt: %s" -#: ../../Zotlabs/Lib/ThreadItem.php:377 +#: ../../Zotlabs/Lib/ThreadItem.php:358 +msgid "Attend" +msgstr "Aanwezig" + +#: ../../Zotlabs/Lib/ThreadItem.php:359 +msgid "Attendance Options" +msgstr "Aanwezigheidsopties" + +#: ../../Zotlabs/Lib/ThreadItem.php:360 +msgid "Vote" +msgstr "Stem" + +#: ../../Zotlabs/Lib/ThreadItem.php:361 +msgid "Voting Options" +msgstr "Stemopties" + +#: ../../Zotlabs/Lib/ThreadItem.php:381 +#: ../../extend/addon/addon/bookmarker/bookmarker.php:38 msgid "Save Bookmarks" msgstr "Bladwijzers opslaan" -#: ../../Zotlabs/Lib/ThreadItem.php:378 +#: ../../Zotlabs/Lib/ThreadItem.php:382 msgid "Add to Calendar" msgstr "Aan agenda toevoegen" -#: ../../Zotlabs/Lib/ThreadItem.php:387 +#: ../../Zotlabs/Lib/ThreadItem.php:391 msgid "Mark all seen" msgstr "Markeer alles als bekeken" -#: ../../Zotlabs/Lib/ThreadItem.php:436 ../../include/js_strings.php:7 +#: ../../Zotlabs/Lib/ThreadItem.php:440 ../../include/js_strings.php:7 #, php-format msgid "%s show all" msgstr "%s alle" -#: ../../Zotlabs/Lib/ThreadItem.php:726 ../../include/conversation.php:1239 +#: ../../Zotlabs/Lib/ThreadItem.php:730 ../../include/conversation.php:1237 msgid "Bold" msgstr "Vet" -#: ../../Zotlabs/Lib/ThreadItem.php:727 ../../include/conversation.php:1240 +#: ../../Zotlabs/Lib/ThreadItem.php:731 ../../include/conversation.php:1238 msgid "Italic" msgstr "Cursief" -#: ../../Zotlabs/Lib/ThreadItem.php:728 ../../include/conversation.php:1241 +#: ../../Zotlabs/Lib/ThreadItem.php:732 ../../include/conversation.php:1239 msgid "Underline" msgstr "Onderstrepen" -#: ../../Zotlabs/Lib/ThreadItem.php:729 ../../include/conversation.php:1242 +#: ../../Zotlabs/Lib/ThreadItem.php:733 ../../include/conversation.php:1240 msgid "Quote" msgstr "Citeren" -#: ../../Zotlabs/Lib/ThreadItem.php:730 ../../include/conversation.php:1243 +#: ../../Zotlabs/Lib/ThreadItem.php:734 ../../include/conversation.php:1241 msgid "Code" msgstr "Broncode" -#: ../../Zotlabs/Lib/ThreadItem.php:731 +#: ../../Zotlabs/Lib/ThreadItem.php:735 msgid "Image" msgstr "Afbeelding" -#: ../../Zotlabs/Lib/ThreadItem.php:732 +#: ../../Zotlabs/Lib/ThreadItem.php:736 msgid "Insert Link" msgstr "Link invoegen" -#: ../../Zotlabs/Lib/ThreadItem.php:733 +#: ../../Zotlabs/Lib/ThreadItem.php:737 msgid "Video" msgstr "Video" -#: ../../Zotlabs/Lib/PermissionDescription.php:31 -#: ../../include/acl_selectors.php:124 -msgid "Visible to your default audience" -msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld" - -#: ../../Zotlabs/Lib/PermissionDescription.php:106 -#: ../../include/acl_selectors.php:165 -msgid "Only me" -msgstr "Alleen ik" - -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -msgid "Public" -msgstr "Openbaar" - -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Anybody in the $Projectname network" -msgstr "Iedereen in het $Projectname-netwerk" - -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -#, php-format -msgid "Any account on %s" -msgstr "Iedereen op %s" - -#: ../../Zotlabs/Lib/PermissionDescription.php:110 -msgid "Any of my connections" -msgstr "Al mijn geaccepteerde connecties" - -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Only connections I specifically allow" -msgstr "Alleen connecties die uitdrukkelijk door jou zijn toegestaan" - -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Anybody authenticated (could include visitors from other networks)" -msgstr "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)" - -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Any connections including those who haven't yet been approved" -msgstr "Al mijn geaccepteerde en nog niet geaccepteerde connecties" - -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." -msgstr "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken" - -#: ../../Zotlabs/Lib/PermissionDescription.php:153 -msgid "" -"This is your default setting for who can view your default channel profile" -msgstr "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken" - -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for who can view your connections" -msgstr "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken" - -#: ../../Zotlabs/Lib/PermissionDescription.php:155 -msgid "" -"This is your default setting for who can view your file storage and photos" -msgstr "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken" - -#: ../../Zotlabs/Lib/PermissionDescription.php:156 -msgid "This is your default setting for the audience of your webpages" -msgstr "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken" - -#: ../../Zotlabs/Lib/Apps.php:205 +#: ../../Zotlabs/Lib/Apps.php:207 msgid "Site Admin" msgstr "Hubbeheerder" -#: ../../Zotlabs/Lib/Apps.php:206 -msgid "Bug Report" -msgstr "Bugrapport" +#: ../../Zotlabs/Lib/Apps.php:208 +#: ../../extend/addon/addon/buglink/buglink.php:16 +msgid "Report Bug" +msgstr "Bugrapport indienen" -#: ../../Zotlabs/Lib/Apps.php:207 +#: ../../Zotlabs/Lib/Apps.php:209 msgid "View Bookmarks" msgstr "Bladwijzers bekijken" -#: ../../Zotlabs/Lib/Apps.php:208 +#: ../../Zotlabs/Lib/Apps.php:210 msgid "My Chatrooms" msgstr "Mijn chatkanalen" -#: ../../Zotlabs/Lib/Apps.php:210 +#: ../../Zotlabs/Lib/Apps.php:212 msgid "Firefox Share" msgstr "Firefox Share" -#: ../../Zotlabs/Lib/Apps.php:211 +#: ../../Zotlabs/Lib/Apps.php:213 msgid "Remote Diagnostics" msgstr "Diagnose op afstand" -#: ../../Zotlabs/Lib/Apps.php:212 ../../include/features.php:319 +#: ../../Zotlabs/Lib/Apps.php:214 ../../include/features.php:319 msgid "Suggest Channels" msgstr "Kanalen voorstellen" -#: ../../Zotlabs/Lib/Apps.php:213 ../../include/nav.php:115 -#: ../../boot.php:1739 +#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:115 +#: ../../boot.php:1720 msgid "Login" msgstr "Inloggen" -#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:184 +#: ../../Zotlabs/Lib/Apps.php:217 ../../include/nav.php:182 msgid "Grid" msgstr "Grid" -#: ../../Zotlabs/Lib/Apps.php:220 ../../include/nav.php:187 +#: ../../Zotlabs/Lib/Apps.php:221 ../../include/features.php:99 +#: ../../include/conversation.php:1740 +msgid "Wiki" +msgstr "Wiki" + +#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:185 msgid "Channel Home" msgstr "Jouw kanaal" -#: ../../Zotlabs/Lib/Apps.php:223 ../../include/nav.php:206 -#: ../../include/conversation.php:1689 ../../include/conversation.php:1692 +#: ../../Zotlabs/Lib/Apps.php:225 ../../include/nav.php:204 +#: ../../include/conversation.php:1691 ../../include/conversation.php:1694 msgid "Events" msgstr "Agenda" -#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:172 +#: ../../Zotlabs/Lib/Apps.php:226 ../../include/nav.php:170 msgid "Directory" msgstr "Kanalengids" -#: ../../Zotlabs/Lib/Apps.php:226 ../../include/nav.php:198 +#: ../../Zotlabs/Lib/Apps.php:228 ../../include/nav.php:196 msgid "Mail" msgstr "Privéberichten" -#: ../../Zotlabs/Lib/Apps.php:229 ../../include/nav.php:99 +#: ../../Zotlabs/Lib/Apps.php:231 ../../include/nav.php:99 msgid "Chat" msgstr "Chatten" -#: ../../Zotlabs/Lib/Apps.php:231 +#: ../../Zotlabs/Lib/Apps.php:233 msgid "Probe" msgstr "Onderzoeken" -#: ../../Zotlabs/Lib/Apps.php:232 +#: ../../Zotlabs/Lib/Apps.php:234 msgid "Suggest" msgstr "Voorstellen" -#: ../../Zotlabs/Lib/Apps.php:233 +#: ../../Zotlabs/Lib/Apps.php:235 msgid "Random Channel" msgstr "Willekeurig kanaal" -#: ../../Zotlabs/Lib/Apps.php:234 +#: ../../Zotlabs/Lib/Apps.php:236 msgid "Invite" msgstr "Uitnodigen " -#: ../../Zotlabs/Lib/Apps.php:235 ../../include/widgets.php:1564 +#: ../../Zotlabs/Lib/Apps.php:237 ../../include/widgets.php:1565 msgid "Features" msgstr "Extra functies" -#: ../../Zotlabs/Lib/Apps.php:236 +#: ../../Zotlabs/Lib/Apps.php:238 +#: ../../extend/addon/addon/openid/MysqlProvider.php:69 msgid "Language" msgstr "Taal" -#: ../../Zotlabs/Lib/Apps.php:237 +#: ../../Zotlabs/Lib/Apps.php:239 msgid "Post" msgstr "Bericht" -#: ../../Zotlabs/Lib/Apps.php:238 +#: ../../Zotlabs/Lib/Apps.php:240 +#: ../../extend/addon/addon/openid/MysqlProvider.php:58 +#: ../../extend/addon/addon/openid/MysqlProvider.php:59 +#: ../../extend/addon/addon/openid/MysqlProvider.php:60 msgid "Profile Photo" msgstr "Profielfoto" -#: ../../Zotlabs/Lib/Apps.php:339 +#: ../../Zotlabs/Lib/Apps.php:344 msgid "Purchase" msgstr "Aanschaffen" -#: ../../include/Import/import_diaspora.php:16 -msgid "No username found in import file." -msgstr "Geen gebruikersnaam in het importbestand gevonden." +#: ../../Zotlabs/Lib/Apps.php:348 +msgid "Undelete" +msgstr "Verwijdering ongedaan maken" -#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:51 -msgid "Unable to create a unique channel address. Import failed." -msgstr "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt." +#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1914 +msgid "$Projectname Notification" +msgstr "$Projectname-notificatie" -#: ../../include/dba/dba_driver.php:173 +#: ../../Zotlabs/Lib/Enotify.php:61 ../../extend/addon/addon/diaspora/p.php:46 +#: ../../extend/addon/addon/diaspora/util.php:218 +#: ../../extend/addon/addon/diaspora/util.php:231 +#: ../../include/network.php:1915 +msgid "$projectname" +msgstr "$projectname" + +#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1917 +msgid "Thank You," +msgstr "Bedankt," + +#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1919 #, php-format -msgid "Cannot locate DNS info for database server '%s'" -msgstr "Kan DNS-informatie voor databaseserver '%s' niet vinden" +msgid "%s Administrator" +msgstr "Beheerder %s" -#: ../../include/permissions.php:35 -msgid "Can view my normal stream and posts" -msgstr "Kan mijn normale kanaalstream en berichten bekijken" +#: ../../Zotlabs/Lib/Enotify.php:116 +#, php-format +msgid "%s <!item_type!>" +msgstr "%s <!item_type!>" -#: ../../include/permissions.php:39 -msgid "Can view my webpages" -msgstr "Kan mijn pagina's bekijken" +#: ../../Zotlabs/Lib/Enotify.php:120 +#, php-format +msgid "[$Projectname:Notify] New mail received at %s" +msgstr "[$Projectname:Notificatie] Nieuw privébericht ontvangen op %s" -#: ../../include/permissions.php:43 -msgid "Can post on my channel page (\"wall\")" -msgstr "Kan een bericht in mijn kanaal plaatsen" +#: ../../Zotlabs/Lib/Enotify.php:122 +#, php-format +msgid "%1$s, %2$s sent you a new private message at %3$s." +msgstr "%1$s, %2$s zond jou een nieuw privébericht om %3$s." -#: ../../include/permissions.php:46 -msgid "Can like/dislike stuff" -msgstr "Kan dingen leuk of niet leuk vinden" +#: ../../Zotlabs/Lib/Enotify.php:123 +#, php-format +msgid "%1$s sent you %2$s." +msgstr "%1$s zond jou %2$s." -#: ../../include/permissions.php:46 -msgid "Profiles and things other than posts/comments" -msgstr "Profielen en dingen, buiten berichten en reacties" +#: ../../Zotlabs/Lib/Enotify.php:123 +msgid "a private message" +msgstr "een privébericht" -#: ../../include/permissions.php:48 -msgid "Can forward to all my channel contacts via post @mentions" -msgstr "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+" +#: ../../Zotlabs/Lib/Enotify.php:124 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." +msgstr "Bezoek %s om je privéberichten te bekijken en/of er op te reageren." -#: ../../include/permissions.php:48 -msgid "Advanced - useful for creating group forum channels" -msgstr "Geavanceerd - nuttig voor groepforums" +#: ../../Zotlabs/Lib/Enotify.php:183 +#, php-format +msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]" +msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %4$s[/zrl]" -#: ../../include/permissions.php:49 -msgid "Can chat with me (when available)" -msgstr "Kan met mij chatten (wanneer beschikbaar)" +#: ../../Zotlabs/Lib/Enotify.php:191 +#, php-format +msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]" +msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %5$s van %4$s[/zrl]" -#: ../../include/permissions.php:50 -msgid "Can write to my file storage and photos" -msgstr "Kan foto's en andere bestanden aan mijn bestandsopslag toevoegen" +#: ../../Zotlabs/Lib/Enotify.php:200 +#, php-format +msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]" +msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]jouw %4$s[/zrl]" -#: ../../include/permissions.php:51 -msgid "Can edit my webpages" -msgstr "Kan mijn pagina's bewerken" +#: ../../Zotlabs/Lib/Enotify.php:211 +#, php-format +msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" +msgstr "[$Projectname:Notificatie] %2$s gaf een reactie in conversatie #%1$d" -#: ../../include/permissions.php:53 -msgid "Somewhat advanced - very useful in open communities" -msgstr "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)" +#: ../../Zotlabs/Lib/Enotify.php:212 +#, php-format +msgid "%1$s, %2$s commented on an item/conversation you have been following." +msgstr "%1$s, %2$s gaf een reactie in een conversatie die jij volgt." -#: ../../include/permissions.php:55 -msgid "Can administer my channel resources" -msgstr "Kan mijn kanaal beheren" +#: ../../Zotlabs/Lib/Enotify.php:215 ../../Zotlabs/Lib/Enotify.php:292 +#: ../../Zotlabs/Lib/Enotify.php:309 ../../Zotlabs/Lib/Enotify.php:335 +#: ../../Zotlabs/Lib/Enotify.php:353 ../../Zotlabs/Lib/Enotify.php:367 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." +msgstr "Bezoek %s om de conversatie te bekijken en/of er op te reageren." -#: ../../include/permissions.php:55 +#: ../../Zotlabs/Lib/Enotify.php:273 +#, php-format +msgid "%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]" +msgstr "%1$s, %2$s vindt [zrl=%3$s]jouw %4$s[/zrl] leuk" + +#: ../../Zotlabs/Lib/Enotify.php:288 +#, php-format +msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" +msgstr "[$Projectname:Notificatie] %2$s vindt iets leuk in conversatie #%1$d" + +#: ../../Zotlabs/Lib/Enotify.php:289 +#, php-format +msgid "%1$s, %2$s liked an item/conversation you created." +msgstr "%1$s, %2$s vindt iets leuk in een conversatie die jij bent gestart." + +#: ../../Zotlabs/Lib/Enotify.php:300 +#, php-format +msgid "[$Projectname:Notify] %s posted to your profile wall" +msgstr "[$Projectname:Notificatie] %s heeft een bericht op jouw kanaal geplaatst" + +#: ../../Zotlabs/Lib/Enotify.php:302 +#, php-format +msgid "%1$s, %2$s posted to your profile wall at %3$s" +msgstr "%1$s, %2$s heeft om %3$s een bericht op jouw kanaal geplaatst" + +#: ../../Zotlabs/Lib/Enotify.php:304 +#, php-format +msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]" +msgstr "%1$s, %2$s heeft een bericht op [zrl=%3$s]jouw kanaal[/zrl] geplaatst" + +#: ../../Zotlabs/Lib/Enotify.php:328 +#, php-format +msgid "[$Projectname:Notify] %s tagged you" +msgstr "[$Projectname:Notificatie] %s heeft jou genoemd" + +#: ../../Zotlabs/Lib/Enotify.php:329 +#, php-format +msgid "%1$s, %2$s tagged you at %3$s" +msgstr "%1$s, %2$s noemde jou op %3$s" + +#: ../../Zotlabs/Lib/Enotify.php:330 +#, php-format +msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]." +msgstr "%1$s, %2$s [zrl=%3$s]noemde jou[/zrl]." + +#: ../../Zotlabs/Lib/Enotify.php:342 +#, php-format +msgid "[$Projectname:Notify] %1$s poked you" +msgstr "[$Projectname:Notificatie] %1$s heeft jou aangestoten" + +#: ../../Zotlabs/Lib/Enotify.php:343 +#, php-format +msgid "%1$s, %2$s poked you at %3$s" +msgstr "%1$s, %2$s heeft je aangestoten op %3$s" + +#: ../../Zotlabs/Lib/Enotify.php:344 +#, php-format +msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]." +msgstr "%1$s, %2$s [zrl=%2$s]heeft je aangestoten[/zrl]." + +#: ../../Zotlabs/Lib/Enotify.php:360 +#, php-format +msgid "[$Projectname:Notify] %s tagged your post" +msgstr "[$Projectname:Notificatie] %s heeft jouw bericht getagd" + +#: ../../Zotlabs/Lib/Enotify.php:361 +#, php-format +msgid "%1$s, %2$s tagged your post at %3$s" +msgstr "%1$s, %2$s heeft jouw bericht om %3$s getagd" + +#: ../../Zotlabs/Lib/Enotify.php:362 +#, php-format +msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]" +msgstr "%1$s, %2$s heeft [zrl=%3$s]jouw bericht[/zrl] getagd" + +#: ../../Zotlabs/Lib/Enotify.php:374 +msgid "[$Projectname:Notify] Introduction received" +msgstr "[$Projectname:Notificatie] Connectieverzoek ontvangen" + +#: ../../Zotlabs/Lib/Enotify.php:375 +#, php-format +msgid "%1$s, you've received an new connection request from '%2$s' at %3$s" +msgstr "%1$s, je hebt een nieuw connectieverzoek ontvangen van '%2$s' op %3$s" + +#: ../../Zotlabs/Lib/Enotify.php:376 +#, php-format msgid "" -"Extremely advanced. Leave this alone unless you know what you are doing" -msgstr "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet." +"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s." +msgstr "%1$s, je hebt een [zrl=%2$s]nieuw connectieverzoek[/zrl] ontvangen van %3$s." -#: ../../include/photos.php:114 +#: ../../Zotlabs/Lib/Enotify.php:380 ../../Zotlabs/Lib/Enotify.php:399 #, php-format -msgid "Image exceeds website size limit of %lu bytes" -msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes" +msgid "You may visit their profile at %s" +msgstr "Je kan het profiel bekijken op %s" -#: ../../include/photos.php:121 -msgid "Image file is empty." -msgstr "Afbeeldingsbestand is leeg" +#: ../../Zotlabs/Lib/Enotify.php:382 +#, php-format +msgid "Please visit %s to approve or reject the connection request." +msgstr "Bezoek %s om het connectieverzoek te accepteren of af te wijzen." -#: ../../include/photos.php:259 -msgid "Photo storage failed." -msgstr "Foto kan niet worden opgeslagen" +#: ../../Zotlabs/Lib/Enotify.php:389 +msgid "[$Projectname:Notify] Friend suggestion received" +msgstr "[$Projectname:Notificatie] Kanaalvoorstel ontvangen" -#: ../../include/photos.php:299 -msgid "a new photo" -msgstr "een nieuwe foto" +#: ../../Zotlabs/Lib/Enotify.php:390 +#, php-format +msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s" +msgstr "%1$s, je hebt een kanaalvoorstel ontvangen van '%2$s' om %3$s" -#: ../../include/photos.php:303 +#: ../../Zotlabs/Lib/Enotify.php:391 #, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" -msgstr "%1$s plaatste %2$s op %3$s" +msgid "" +"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from " +"%4$s." +msgstr "%1$s, je hebt [zrl=%2$s]een kanaalvoorstel[/zrl] ontvangen voor %3$s van %4$s." -#: ../../include/photos.php:506 ../../include/conversation.php:1675 -msgid "Photo Albums" -msgstr "Fotoalbums" +#: ../../Zotlabs/Lib/Enotify.php:397 +msgid "Name:" +msgstr "Naam:" -#: ../../include/photos.php:510 -msgid "Upload New Photos" -msgstr "Nieuwe foto's uploaden" +#: ../../Zotlabs/Lib/Enotify.php:398 +msgid "Photo:" +msgstr "Foto:" -#: ../../include/features.php:58 -msgid "General Features" -msgstr "Algemene functies" +#: ../../Zotlabs/Lib/Enotify.php:401 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." +msgstr "Bezoek %s om het voorstel te accepteren of af te wijzen." -#: ../../include/features.php:63 -msgid "Multiple Profiles" -msgstr "Meerdere profielen" +#: ../../Zotlabs/Lib/Enotify.php:619 +msgid "[$Projectname:Notify]" +msgstr "[$Projectname:Notificatie]" -#: ../../include/features.php:64 -msgid "Ability to create multiple profiles" -msgstr "Mogelijkheid om meerdere profielen aan te maken" +#: ../../Zotlabs/Lib/Enotify.php:779 +msgid "created a new post" +msgstr "maakte een nieuw bericht aan" -#: ../../include/features.php:72 -msgid "Advanced Profiles" -msgstr "Geavanceerde profielen" +#: ../../Zotlabs/Lib/Enotify.php:780 +#, php-format +msgid "commented on %s's post" +msgstr "gaf een reactie op een bericht van %s" -#: ../../include/features.php:73 -msgid "Additional profile sections and selections" -msgstr "Extra onderdelen en keuzes voor je profiel" +#: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:24 +msgid "Flag Adult Photos" +msgstr "Markeer foto's als voor volwassenen" -#: ../../include/features.php:81 -msgid "Profile Import/Export" -msgstr "Profiel importen/exporteren" +#: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:25 +msgid "" +"Provide photo edit option to hide inappropriate photos from default album " +"view" +msgstr "Zorgt voor een optie om foto's met inhoud voor volwassenen in de standaard albumweergave te verbergen" -#: ../../include/features.php:82 -msgid "Save and load profile details across sites/channels" -msgstr "Profielgegevens opslaan en in andere hubs/kanalen gebruiken." +#: ../../extend/addon/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 "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." -#: ../../include/features.php:90 -msgid "Web Pages" -msgstr "Webpagina's" +#: ../../extend/addon/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 "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." -#: ../../include/features.php:91 -msgid "Provide managed web pages on your channel" -msgstr "Sta beheerde webpagina's op jouw kanaal toe" +#: ../../extend/addon/addon/chords/Mod_Chords.php:48 +msgid "" +"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " +"E7b13b11 ..." +msgstr "Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." -#: ../../include/features.php:100 -msgid "Provide a wiki for your channel" -msgstr "Voeg een wiki aan jouw kanaal toe" +#: ../../extend/addon/addon/chords/Mod_Chords.php:51 +msgid "Guitar Chords" +msgstr "Gitaarakkoorden" -#: ../../include/features.php:117 -msgid "Private Notes" -msgstr "Privé-aantekeningen" +#: ../../extend/addon/addon/chords/Mod_Chords.php:52 +msgid "The complete online chord dictionary" +msgstr "Het complete online akkoordenboek" -#: ../../include/features.php:118 -msgid "Enables a tool to store notes and reminders (note: not encrypted)" -msgstr "Een eenvoudige toepassing om aantekeningen en herinneringen in te bewaren (let op: niet versleuteld)" +#: ../../extend/addon/addon/chords/Mod_Chords.php:57 +msgid "Tuning" +msgstr "Stemmen" -#: ../../include/features.php:126 -msgid "Navigation Channel Select" -msgstr "Kanaal kiezen in navigatiemenu" +#: ../../extend/addon/addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" +msgstr "Akkoordnaam: bijvoorbeeld: Em7" -#: ../../include/features.php:127 -msgid "Change channels directly from within the navigation dropdown menu" -msgstr "Kies een ander kanaal direct vanuit het dropdown-menu op de navigatiebalk" +#: ../../extend/addon/addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" +msgstr "Toon voor linkshandige gitaar" -#: ../../include/features.php:135 -msgid "Photo Location" -msgstr "Fotolocatie" +#: ../../extend/addon/addon/chords/chords.php:33 +msgid "Quick Reference" +msgstr "Beknopt overzicht" -#: ../../include/features.php:136 -msgid "If location data is available on uploaded photos, link this to a map." -msgstr "Wanneer in de geüploade foto's locatiegegevens aanwezig zijn, link dit dan aan een kaart." +#: ../../extend/addon/addon/diaspora/diaspora.php:671 +msgid "Diaspora Protocol Settings updated." +msgstr "Diaspora-protocol-instellingen bijgewerkt." -#: ../../include/features.php:144 -msgid "Access Controlled Chatrooms" -msgstr "Chatkanalen met toegangscontrole " +#: ../../extend/addon/addon/diaspora/diaspora.php:692 +msgid "Enable the Diaspora protocol for this channel" +msgstr "Het Diaspora-protocol voor dit kanaal inschakelen" -#: ../../include/features.php:145 -msgid "Provide chatrooms and chat services with access control." -msgstr "Chatkanalen en chatdiensten met toegangscontrole aanbieden." +#: ../../extend/addon/addon/diaspora/diaspora.php:696 +msgid "Allow any Diaspora member to comment on your public posts" +msgstr "Geef elk Diaspora-lid toestemming om op jouw openbare berichten te reageren" -#: ../../include/features.php:153 -msgid "Smart Birthdays" -msgstr "Slimme verjaardagen" +#: ../../extend/addon/addon/diaspora/diaspora.php:700 +msgid "Prevent your hashtags from being redirected to other sites" +msgstr "Voorkom dat jouw hashtags naar andere websites worden doorverwezen" -#: ../../include/features.php:154 +#: ../../extend/addon/addon/diaspora/diaspora.php:705 +msgid "Followed hashtags (comma separated, do not include the #)" +msgstr "Gevolgde hashtags (door komma's gescheiden lijst, zonder de #)" + +#: ../../extend/addon/addon/diaspora/diaspora.php:710 +msgid "Diaspora Protocol Settings" +msgstr "Diaspora-protocol (incl. Friendica)" + +#: ../../extend/addon/addon/dirstats/dirstats.php:94 +msgid "Hubzilla Directory Stats" +msgstr "Kanalengidsstatistieken Hubzilla" + +#: ../../extend/addon/addon/dirstats/dirstats.php:95 +msgid "Total Hubs" +msgstr "Totaal aantal hubs" + +#: ../../extend/addon/addon/dirstats/dirstats.php:97 +msgid "Hubzilla Hubs" +msgstr "Hubzilla-hubs" + +#: ../../extend/addon/addon/dirstats/dirstats.php:99 +msgid "Friendica Hubs" +msgstr "Friendica-hubs" + +#: ../../extend/addon/addon/dirstats/dirstats.php:101 +msgid "Diaspora Pods" +msgstr "Diaspora-pods" + +#: ../../extend/addon/addon/dirstats/dirstats.php:103 +msgid "Hubzilla Channels" +msgstr "Hubzilla-kanalen" + +#: ../../extend/addon/addon/dirstats/dirstats.php:105 +msgid "Friendica Channels" +msgstr "Friendica-kanalen" + +#: ../../extend/addon/addon/dirstats/dirstats.php:107 +msgid "Diaspora Channels" +msgstr "Diaspora-kanalen" + +#: ../../extend/addon/addon/dirstats/dirstats.php:109 +msgid "Aged 35 and above" +msgstr "Leeftijd is ouder dan 35 jaar" + +#: ../../extend/addon/addon/dirstats/dirstats.php:111 +msgid "Aged 34 and under" +msgstr "Leeftijd is jonger dan 34" + +#: ../../extend/addon/addon/dirstats/dirstats.php:113 +msgid "Average Age" +msgstr "Gemiddelde leeftijd" + +#: ../../extend/addon/addon/dirstats/dirstats.php:115 +msgid "Known Chatrooms" +msgstr "Bekend aantal chatkanalen" + +#: ../../extend/addon/addon/dirstats/dirstats.php:117 +msgid "Known Tags" +msgstr "Bekend aantal tags" + +#: ../../extend/addon/addon/dirstats/dirstats.php:119 msgid "" -"Make birthday events timezone aware in case your friends are scattered " -"across the planet." -msgstr "Maak verjaardagen bewust van tijdzones. Voor het geval dat jouw vrienden over de hele wereld verspreid zijn." +"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 "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," -#: ../../include/features.php:162 -msgid "Advanced Directory Search" -msgstr "Geavanceerd in de kanalengids zoeken" +#: ../../extend/addon/addon/donate/donate.php:21 +msgid "Project Servers and Resources" +msgstr "Projectservers en -middelen" -#: ../../include/features.php:163 -msgid "Allows creation of complex directory search queries" -msgstr "Gebruik complexe zoekopdrachten in de kanalengids" +#: ../../extend/addon/addon/donate/donate.php:22 +msgid "Project Creator and Tech Lead" +msgstr "Projectgrondlegger en hoofdontwikkelaar" -#: ../../include/features.php:171 -msgid "Advanced Theme and Layout Settings" -msgstr "Geavanceerde thema- en lay-out-instellingen" +#: ../../extend/addon/addon/donate/donate.php:23 +msgid "Admin, developer, directorymin, support bloke" +msgstr "Beheerder, ontwikkelaar, kanalengidsbeheerder en supportgozer" -#: ../../include/features.php:172 -msgid "Allows fine tuning of themes and page layouts" -msgstr "Maakt het mogelijk dat thema's en pagina-lay-outs preciezer ingesteld kunnen worden " +#: ../../extend/addon/addon/donate/donate.php:50 +msgid "" +"And the hundreds of other people and organisations who helped make the " +"Hubzilla possible." +msgstr "En de honderden andere mensen en organisaties die Hubzilla mogelijk hebben gemaakt. " -#: ../../include/features.php:182 -msgid "Post Composition Features" -msgstr "Functies voor het opstellen van berichten" +#: ../../extend/addon/addon/donate/donate.php:53 +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 "De Hubzillaprojecten worden hoofdzakelijk aangeboden door vrijwilligers die er hun tijd en expertise insteken - en meestal zelf de diensten betalen die ze met anderen delen." -#: ../../include/features.php:186 -msgid "Large Photos" -msgstr "Grote foto's" +#: ../../extend/addon/addon/donate/donate.php:54 +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 "Wij worden niet gefinancierd door bedrijven en reclame, en wij verzamelen en verkopen niet jouw persoonlijke gegevens. We hebben geen controle over jouw persoonlijke gegevens - <strong>dat heb jezelf</strong>." -#: ../../include/features.php:187 +#: ../../extend/addon/addon/donate/donate.php:55 msgid "" -"Include large (1024px) photo thumbnails in posts. If not enabled, use small " -"(640px) photo thumbnails" -msgstr "Gebruik grotere foto's (1024px) in berichten. Wanneer dit is uitgeschakeld worden er kleinere foto's (640px) gebruikt." +"Help support our ground-breaking work in decentralisation, web identity, and" +" privacy." +msgstr "Steun ons baanbrekende werk in decentralisatie, webidentiteit en privacy. " -#: ../../include/features.php:196 -msgid "Automatically import channel content from other channels or feeds" -msgstr "Automatisch inhoud uit andere kanalen of feeds importeren." +#: ../../extend/addon/addon/donate/donate.php:57 +msgid "" +"Your donations keep servers and services running and also helps us to " +"provide innovative new features and continued development." +msgstr "Jouw donaties laten onze servers en diensten draaien, en helpt ons om nieuwe innovatieve mogelijkheden te blijven ontwikkelen." -#: ../../include/features.php:204 -msgid "Even More Encryption" -msgstr "Extra encryptie" +#: ../../extend/addon/addon/donate/donate.php:60 +msgid "Donate" +msgstr "Doneer" -#: ../../include/features.php:205 +#: ../../extend/addon/addon/donate/donate.php:62 msgid "" -"Allow optional encryption of content end-to-end with a shared secret key" -msgstr "Sta toe dat inhoud extra end-to-end wordt versleuteld met een gedeelde geheime sleutel." +"Choose a project, developer, or public hub to support with a one-time " +"donation" +msgstr "Kies een project, ontwikkelaar of openbaar toegankelijke hub, die je met een eenmalige donatie wil steunen" -#: ../../include/features.php:213 -msgid "Enable Voting Tools" -msgstr "Peilingen inschakelen" +#: ../../extend/addon/addon/donate/donate.php:63 +msgid "Donate Now" +msgstr "Doneer nu" -#: ../../include/features.php:214 -msgid "Provide a class of post which others can vote on" -msgstr "Maakt het mogelijk om een bericht op te stellen, waar mensen op kunnen stemmen." +#: ../../extend/addon/addon/donate/donate.php:64 +msgid "" +"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project " +"only)" +msgstr "<strong><em>Of</em></strong> wordt een projectsponsor (alleen het Hubzilla-project)" -#: ../../include/features.php:222 -msgid "Disable Comments" -msgstr "Reacties uitschakelen" +#: ../../extend/addon/addon/donate/donate.php:65 +msgid "" +"Please indicate if you would like your first name or full name (or nothing) " +"to appear in our sponsor listing" +msgstr "Geef aan of jouw voornaam of volledige naam (of niets) op onze sponsorlijst moet verschijnen" -#: ../../include/features.php:223 -msgid "Provide the option to disable comments for a post" -msgstr "Maak het mogelijk dat reacties op een bericht kunnen worden uitgeschakeld" +#: ../../extend/addon/addon/donate/donate.php:66 +msgid "Sponsor" +msgstr "Sponsor" -#: ../../include/features.php:231 -msgid "Delayed Posting" -msgstr "Berichten uitstellen" +#: ../../extend/addon/addon/donate/donate.php:69 +msgid "Special thanks to: " +msgstr "Speciale dank gaat naar: " -#: ../../include/features.php:232 -msgid "Allow posts to be published at a later date" -msgstr "Maakt het mogelijk dat berichten op een toekomstig moment gepubliceerd kunnen worden." +#: ../../extend/addon/addon/dwpost/dwpost.php:42 +msgid "Post to Dreamwidth" +msgstr "Doorplaatsen naar Dreamwidth" -#: ../../include/features.php:240 -msgid "Content Expiration" -msgstr "Inhoud laten verlopen" +#: ../../extend/addon/addon/dwpost/dwpost.php:73 +msgid "Enable Dreamwidth Post Plugin" +msgstr "Doorplaatsen naar Dreamwidth inschakelen" -#: ../../include/features.php:241 -msgid "Remove posts/comments and/or private messages at a future time" -msgstr "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen" +#: ../../extend/addon/addon/dwpost/dwpost.php:77 +msgid "Dreamwidth username" +msgstr "Gebruikersnaam Dreamwidth" -#: ../../include/features.php:249 -msgid "Suppress Duplicate Posts/Comments" -msgstr "Dubbele berichten/reacties tegenhouden" +#: ../../extend/addon/addon/dwpost/dwpost.php:81 +msgid "Dreamwidth password" +msgstr "Wachtwoord Dreamwidth" -#: ../../include/features.php:250 +#: ../../extend/addon/addon/dwpost/dwpost.php:85 +msgid "Post to Dreamwidth by default" +msgstr "Standaard doorplaatsen naar Dreamwidth" + +#: ../../extend/addon/addon/dwpost/dwpost.php:89 +msgid "Dreamwidth Post Settings" +msgstr "Doorplaatsen naar Dreamwidth" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:45 +msgid "Flattr this!" +msgstr "Flattr this!" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:83 +msgid "Flattr widget settings updated." +msgstr "Instellingen Flattrwidget bijgewerkt." + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:100 +msgid "Flattr user" +msgstr "Gebruikersnaam Flattr" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:104 +msgid "URL of the Thing to flattr" +msgstr "URL van het Flattr-item" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:104 +msgid "If empty channel URL is used" +msgstr "Wanneer een lege kanaal-URL wordt gebruikt" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:108 +msgid "Title of the Thing to flattr" +msgstr "Naam van het Flattr-item" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:108 +msgid "If empty \"channel name on The Hubzilla\" will be used" +msgstr "Wanneer een lege \"kanaalnaam op Hubzilla\" wordt gebruikt" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 +msgid "Static or dynamic flattr button" +msgstr "Statische of dynamische Flattr-knop" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 +msgid "static" +msgstr "statisch" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 +msgid "dynamic" +msgstr "dynamisch" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 +msgid "Alignment of the widget" +msgstr "Uitlijning van de widget" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 +msgid "left" +msgstr "links" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 +msgid "right" +msgstr "rechts" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 +msgid "Enable Flattr widget" +msgstr "Flattrwidget inschakelen" + +#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 +msgid "Flattr Widget Settings" +msgstr "Flattrwidget" + +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:118 +msgid "Contact not found." +msgstr "Contact niet gevonden" + +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:119 msgid "" -"Prevent posts with identical content to be published with less than two " -"minutes in between submissions." -msgstr "Voorkomt dat berichten en reacties met identieke inhoud en die binnen twee minuten zijn verstuurd, worden gepubliceerd. " +"This may occasionally happen if contact was requested by both persons and it" +" has already been approved." +msgstr "This may occasionally happen if contact was requested by both persons and it has already been approved." -#: ../../include/features.php:261 -msgid "Network and Stream Filtering" -msgstr "Netwerk- en streamfilter" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:238 +msgid "Response from remote site was not understood." +msgstr "Response from remote site was not understood." -#: ../../include/features.php:265 -msgid "Search by Date" -msgstr "Zoek op datum" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:247 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:252 +msgid "Unexpected response from remote site: " +msgstr "Unexpected response from remote site: " -#: ../../include/features.php:266 -msgid "Ability to select posts by date ranges" -msgstr "Mogelijkheid om berichten op datum te filteren " +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:261 +msgid "Confirmation completed successfully." +msgstr "Confirmation completed successfully." -#: ../../include/features.php:274 ../../include/group.php:311 -msgid "Privacy Groups" -msgstr "Privacygroepen" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:263 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:277 +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:284 +msgid "Remote site reported: " +msgstr "Remote site reported: " -#: ../../include/features.php:275 -msgid "Enable management and selection of privacy groups" -msgstr "Beheer en selectie van privacygroepen inschakelen" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:275 +msgid "Temporary failure. Please wait and try again." +msgstr "Temporary failure. Please wait and try again." -#: ../../include/features.php:283 ../../include/widgets.php:283 -msgid "Saved Searches" -msgstr "Opgeslagen zoekopdrachten" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:282 +msgid "Introduction failed or was revoked." +msgstr "Introduction failed or was revoked." -#: ../../include/features.php:284 -msgid "Save search terms for re-use" -msgstr "Sla zoekopdrachten op voor hergebruik" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:428 +msgid "Unable to set contact photo." +msgstr "Unable to set contact photo." -#: ../../include/features.php:292 -msgid "Network Personal Tab" -msgstr "Persoonlijke netwerktab" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:485 +#, php-format +msgid "%1$s is now friends with %2$s" +msgstr "%1$s is now friends with %2$s" -#: ../../include/features.php:293 -msgid "Enable tab to display only Network posts that you've interacted on" -msgstr "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:570 +#, php-format +msgid "No user record found for '%s' " +msgstr "No user record found for '%s' " -#: ../../include/features.php:301 -msgid "Network New Tab" -msgstr "Nieuwe netwerktab" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:580 +msgid "Our site encryption key is apparently messed up." +msgstr "Our site encryption key is apparently messed up." -#: ../../include/features.php:302 -msgid "Enable tab to display all new Network activity" -msgstr "Laat de tab alle nieuwe netwerkactiviteit tonen" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:591 +msgid "Empty site URL was provided or URL could not be decrypted by us." +msgstr "Empty site URL was provided or URL could not be decrypted by us." -#: ../../include/features.php:310 -msgid "Affinity Tool" -msgstr "Verwantschapsfilter" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:612 +msgid "Contact record was not found for you on our site." +msgstr "Contact record was not found for you on our site." -#: ../../include/features.php:311 -msgid "Filter stream activity by depth of relationships" -msgstr "Filter wat je in jouw grid ziet op hoe goed je iemand kent of mag" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:626 +#, php-format +msgid "Site public key not available in contact record for URL %s." +msgstr "Site public key not available in contact record for URL %s." -#: ../../include/features.php:320 -msgid "Show friend and connection suggestions" -msgstr "Toon kanaalvoorstellen" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:646 +msgid "" +"The ID provided by your system is a duplicate on our system. It should work " +"if you try again." +msgstr "The ID provided by your system is a duplicate on our system. It should work if you try again." -#: ../../include/features.php:328 -msgid "Connection Filtering" -msgstr "Berichtenfilters" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:657 +msgid "Unable to set your contact credentials on our system." +msgstr "Unable to set your contact credentials on our system." -#: ../../include/features.php:329 -msgid "Filter incoming posts from connections based on keywords/content" -msgstr "Filter binnenkomende berichten van connecties aan de hand van trefwoorden en taal" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:724 +msgid "Unable to update your contact profile details on our system" +msgstr "Unable to update your contact profile details on our system" -#: ../../include/features.php:341 -msgid "Post/Comment Tools" -msgstr "Bericht- en reactiehulpmiddelen" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:751 +#: ../../extend/addon/addon/friendica/dfrn_request.php:749 +msgid "[Name Withheld]" +msgstr "[Name Withheld]" -#: ../../include/features.php:345 -msgid "Community Tagging" -msgstr "Taggen door anderen" +#: ../../extend/addon/addon/friendica/dfrn_confirm.php:796 +#, php-format +msgid "%1$s has joined %2$s" +msgstr "%1$s has joined %2$s" -#: ../../include/features.php:346 -msgid "Ability to tag existing posts" -msgstr "Geeft andere mensen de mogelijkheid om jouw (bestaande) berichten te taggen" +#: ../../extend/addon/addon/friendica/dfrn_poll.php:103 +#: ../../extend/addon/addon/friendica/dfrn_poll.php:536 +#, php-format +msgid "%1$s welcomes %2$s" +msgstr "%1$s welcomes %2$s" -#: ../../include/features.php:354 -msgid "Post Categories" -msgstr "Categorieën berichten" +#: ../../extend/addon/addon/friendica/dfrn_request.php:102 +msgid "This introduction has already been accepted." +msgstr "This introduction has already been accepted." -#: ../../include/features.php:355 -msgid "Add categories to your posts" -msgstr "Voeg categorieën toe aan je berichten" +#: ../../extend/addon/addon/friendica/dfrn_request.php:123 +#: ../../extend/addon/addon/friendica/dfrn_request.php:528 +msgid "Profile location is not valid or does not contain profile information." +msgstr "Profile location is not valid or does not contain profile information." -#: ../../include/features.php:363 -msgid "Emoji Reactions" -msgstr "Emoji-reacties" +#: ../../extend/addon/addon/friendica/dfrn_request.php:128 +#: ../../extend/addon/addon/friendica/dfrn_request.php:533 +msgid "Warning: profile location has no identifiable owner name." +msgstr "Warning: profile location has no identifiable owner name." -#: ../../include/features.php:364 -msgid "Add emoji reaction ability to posts" -msgstr "Emoji-reacties in berichten toestaan" +#: ../../extend/addon/addon/friendica/dfrn_request.php:130 +#: ../../extend/addon/addon/friendica/dfrn_request.php:535 +msgid "Warning: profile location has no profile photo." +msgstr "Warning: profile location has no profile photo." -#: ../../include/features.php:372 ../../include/contact_widgets.php:53 -#: ../../include/widgets.php:346 -msgid "Saved Folders" -msgstr "Bewaarde mappen" +#: ../../extend/addon/addon/friendica/dfrn_request.php:133 +#: ../../extend/addon/addon/friendica/dfrn_request.php:538 +#, php-format +msgid "%d required parameter was not found at the given location" +msgid_plural "%d required parameters were not found at the given location" +msgstr[0] "%d required parameter was not found at the given location" +msgstr[1] "%d required parameters were not found at the given location" -#: ../../include/features.php:373 -msgid "Ability to file posts under folders" -msgstr "Mogelijkheid om berichten in mappen op te slaan" +#: ../../extend/addon/addon/friendica/dfrn_request.php:180 +msgid "Introduction complete." +msgstr "Introduction complete." -#: ../../include/features.php:381 -msgid "Dislike Posts" -msgstr "Vind berichten niet leuk" +#: ../../extend/addon/addon/friendica/dfrn_request.php:224 +msgid "Unrecoverable protocol error." +msgstr "Unrecoverable protocol error." -#: ../../include/features.php:382 -msgid "Ability to dislike posts/comments" -msgstr "Mogelijkheid om berichten en reacties niet leuk te vinden" +#: ../../extend/addon/addon/friendica/dfrn_request.php:252 +msgid "Profile unavailable." +msgstr "Profile unavailable." -#: ../../include/features.php:390 -msgid "Star Posts" -msgstr "Geef berichten een ster" +#: ../../extend/addon/addon/friendica/dfrn_request.php:277 +#, php-format +msgid "%s has received too many connection requests today." +msgstr "%s has received too many connection requests today." -#: ../../include/features.php:391 -msgid "Ability to mark special posts with a star indicator" -msgstr "Mogelijkheid om speciale berichten met een ster te markeren" +#: ../../extend/addon/addon/friendica/dfrn_request.php:278 +msgid "Spam protection measures have been invoked." +msgstr "Spam protection measures have been invoked." -#: ../../include/features.php:399 -msgid "Tag Cloud" -msgstr "Tagwolk" +#: ../../extend/addon/addon/friendica/dfrn_request.php:279 +msgid "Friends are advised to please try again in 24 hours." +msgstr "Friends are advised to please try again in 24 hours." -#: ../../include/features.php:400 -msgid "Provide a personal tag cloud on your channel page" -msgstr "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina" +#: ../../extend/addon/addon/friendica/dfrn_request.php:341 +msgid "Invalid locator" +msgstr "Invalid locator" -#: ../../include/features.php:412 -msgid "Premium Channel" -msgstr "Premiumkanaal" +#: ../../extend/addon/addon/friendica/dfrn_request.php:350 +msgid "Invalid email address." +msgstr "Invalid email address." -#: ../../include/features.php:413 +#: ../../extend/addon/addon/friendica/dfrn_request.php:377 +msgid "This account has not been configured for email. Request failed." +msgstr "This account has not been configured for email. Request failed." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:473 +msgid "Unable to resolve your name at the provided location." +msgstr "Unable to resolve your name at the provided location." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:486 +msgid "You have already introduced yourself here." +msgstr "You have already introduced yourself here." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:490 +#, php-format +msgid "Apparently you are already friends with %s." +msgstr "Apparently you are already friends with %s." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:511 +msgid "Invalid profile URL." +msgstr "Invalid profile URL." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:517 +msgid "Disallowed profile URL." +msgstr "Disallowed profile URL." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:587 +msgid "Failed to update contact record." +msgstr "Failed to update contact record." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:608 +msgid "Your introduction has been sent." +msgstr "Your introduction has been sent." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:662 +msgid "Please login to confirm introduction." +msgstr "Please login to confirm introduction." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:676 msgid "" -"Allows you to set restrictions and terms on those that connect with your " -"channel" -msgstr "Stelt je in staat om beperkingen en voorwaarden in te stellen voor jouw kanaal" +"Incorrect identity currently logged in. Please login to " +"<strong>this</strong> profile." +msgstr "Incorrect identity currently logged in. Please login to <strong>this</strong> profile." -#: ../../include/help.php:25 -msgid "Help:" -msgstr "Hulp:" +#: ../../extend/addon/addon/friendica/dfrn_request.php:690 +#: ../../extend/addon/addon/friendica/dfrn_request.php:707 +msgid "Confirm" +msgstr "Confirm" -#: ../../include/security.php:109 -msgid "guest:" -msgstr "gast:" +#: ../../extend/addon/addon/friendica/dfrn_request.php:702 +msgid "Hide this contact" +msgstr "Hide this contact" -#: ../../include/security.php:527 +#: ../../extend/addon/addon/friendica/dfrn_request.php:705 +#, php-format +msgid "Welcome home %s." +msgstr "Welcome home %s." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:706 +#, php-format +msgid "Please confirm your introduction/connection request to %s." +msgstr "Please confirm your introduction/connection request to %s." + +#: ../../extend/addon/addon/friendica/dfrn_request.php:836 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 "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. " +"Please enter your 'Identity Address' from one of the following supported " +"communications networks:" +msgstr "Please enter your 'Identity Address' from one of the following supported communications networks:" -#: ../../include/text.php:450 -msgid "prev" -msgstr "vorige" +#: ../../extend/addon/addon/friendica/dfrn_request.php:857 +#, php-format +msgid "" +"If you are not yet a member of the free social web, <a " +"href=\"%s/siteinfo\">follow this link to find a public Friendica site and " +"join us today</a>." +msgstr "If you are not yet a member of the free social web, <a href=\"%s/siteinfo\">follow this link to find a public Friendica site and join us today</a>." -#: ../../include/text.php:452 -msgid "first" -msgstr "eerste" +#: ../../extend/addon/addon/friendica/dfrn_request.php:862 +msgid "Friend/Connection Request" +msgstr "Friend/Connection Request" -#: ../../include/text.php:481 -msgid "last" -msgstr "laatste" +#: ../../extend/addon/addon/friendica/dfrn_request.php:863 +msgid "" +"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " +"testuser@identi.ca" +msgstr "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" -#: ../../include/text.php:484 -msgid "next" -msgstr "volgende" +#: ../../extend/addon/addon/friendica/dfrn_request.php:864 +msgid "Please answer the following:" +msgstr "Please answer the following:" -#: ../../include/text.php:494 -msgid "older" -msgstr "ouder" +#: ../../extend/addon/addon/friendica/dfrn_request.php:865 +#, php-format +msgid "Does %s know you?" +msgstr "Does %s know you?" -#: ../../include/text.php:496 -msgid "newer" -msgstr "nieuwer" +#: ../../extend/addon/addon/friendica/dfrn_request.php:869 +msgid "Add a personal note:" +msgstr "Add a personal note:" -#: ../../include/text.php:889 -msgid "No connections" -msgstr "Geen connecties" +#: ../../extend/addon/addon/friendica/dfrn_request.php:871 +#: ../../include/network.php:2232 ../../include/network.php:2233 +msgid "Friendica" +msgstr "Friendica" + +#: ../../extend/addon/addon/friendica/dfrn_request.php:872 +msgid "StatusNet/Federated Social Web" +msgstr "StatusNet/Federated Social Web" + +#: ../../extend/addon/addon/friendica/dfrn_request.php:873 +#: ../../include/network.php:2238 +msgid "Diaspora" +msgstr "Diaspora" -#: ../../include/text.php:914 +#: ../../extend/addon/addon/friendica/dfrn_request.php:874 #, php-format -msgid "View all %s connections" -msgstr "Toon alle %s connecties" +msgid "" +" - please do not use this form. Instead, enter %s into your Diaspora search" +" bar." +msgstr " - please do not use this form. Instead, enter %s into your Diaspora search bar." -#: ../../include/text.php:1059 ../../include/text.php:1064 -msgid "poke" -msgstr "aanstoten" +#: ../../extend/addon/addon/friendica/dfrn_request.php:875 +msgid "Your Identity Address:" +msgstr "Your Identity Address:" -#: ../../include/text.php:1059 ../../include/text.php:1064 -#: ../../include/conversation.php:243 -msgid "poked" -msgstr "aangestoten" +#: ../../extend/addon/addon/friendica/dfrn_request.php:878 +msgid "Submit Request" +msgstr "Submit Request" -#: ../../include/text.php:1065 -msgid "ping" -msgstr "ping" +#: ../../extend/addon/addon/friendica/friendica.php:113 +#: ../../extend/addon/addon/gnusoc/gnusoc.php:114 +msgid "GNU-Social Protocol Settings updated." +msgstr "GNU social-protocol-instellingen bijgewerkt." -#: ../../include/text.php:1065 -msgid "pinged" -msgstr "gepingd" +#: ../../extend/addon/addon/friendica/friendica.php:124 +msgid "Enable the (experimental) GNU-Social protocol for this channel" +msgstr "GNU social-protocol voor dit kanaal inschakelen (experimenteel)" -#: ../../include/text.php:1066 -msgid "prod" -msgstr "por" +#: ../../extend/addon/addon/friendica/friendica.php:128 +#: ../../extend/addon/addon/gnusoc/gnusoc.php:129 +msgid "GNU-Social Protocol Settings" +msgstr "GNU social-protocol" -#: ../../include/text.php:1066 -msgid "prodded" -msgstr "gepord" +#: ../../extend/addon/addon/friendica/friendica.php:185 +#: ../../extend/addon/addon/gnusoc/gnusoc.php:319 +msgid "Follow" +msgstr "Volgen" -#: ../../include/text.php:1067 -msgid "slap" -msgstr "slaan" +#: ../../extend/addon/addon/friendica/friendica.php:188 +#: ../../extend/addon/addon/gnusoc/gnusoc.php:322 +#, php-format +msgid "%1$s is now following %2$s" +msgstr "%1$s volgt nu %2$s" -#: ../../include/text.php:1067 -msgid "slapped" -msgstr "sloeg" +#: ../../extend/addon/addon/frphotos/frphotos.php:91 +msgid "Friendica Photo Album Import" +msgstr "Fotoalbums importeren vanuit Friendica" -#: ../../include/text.php:1068 -msgid "finger" -msgstr "finger" +#: ../../extend/addon/addon/frphotos/frphotos.php:92 +msgid "This will import all your Friendica photo albums to this Red channel." +msgstr "Hiermee importeer je al jouw Friendica-fotoalbums in dit Hubzilla-kanaal." -#: ../../include/text.php:1068 -msgid "fingered" -msgstr "gefingerd" +#: ../../extend/addon/addon/frphotos/frphotos.php:93 +msgid "Friendica Server base URL" +msgstr "Basis-URL van Friendica-server" -#: ../../include/text.php:1069 -msgid "rebuff" -msgstr "afpoeieren" +#: ../../extend/addon/addon/frphotos/frphotos.php:94 +msgid "Friendica Login Username" +msgstr "Gebruikersnaam Friendica" -#: ../../include/text.php:1069 -msgid "rebuffed" -msgstr "afgepoeierd" +#: ../../extend/addon/addon/frphotos/frphotos.php:95 +msgid "Friendica Login Password" +msgstr "Wachtwoord Friendica" -#: ../../include/text.php:1081 -msgid "happy" -msgstr "gelukkig" +#: ../../extend/addon/addon/gnusoc/gnusoc.php:125 +msgid "Enable the GNU-Social protocol for this channel" +msgstr "GNU social-protocol voor dit kanaal inschakelen" -#: ../../include/text.php:1082 -msgid "sad" -msgstr "bedroefd" +#: ../../extend/addon/addon/hubwall/hubwall.php:19 +msgid "Send email to all members" +msgstr "Naar alle leden e-mail versturen" -#: ../../include/text.php:1083 -msgid "mellow" -msgstr "mellow" +#: ../../extend/addon/addon/hubwall/hubwall.php:33 +#, php-format +msgid "$1%s Administrator" +msgstr "Beheerder $1%s" -#: ../../include/text.php:1084 -msgid "tired" -msgstr "moe" +#: ../../extend/addon/addon/hubwall/hubwall.php:50 +#: ../../extend/addon/addon/mailtest/mailtest.php:50 +msgid "No recipients found." +msgstr "Geen ontvangers gevonden" -#: ../../include/text.php:1085 -msgid "perky" -msgstr "parmantig" +#: ../../extend/addon/addon/hubwall/hubwall.php:73 +#, php-format +msgid "%1$d of %2$d messages sent." +msgstr "%1$d van %2$d berichten verzonden." -#: ../../include/text.php:1086 -msgid "angry" -msgstr "boos" +#: ../../extend/addon/addon/hubwall/hubwall.php:81 +msgid "Send email to all hub members." +msgstr "Naar alle leden van deze hub e-mail versturen." -#: ../../include/text.php:1087 -msgid "stupefied" -msgstr "verbijsterd" +#: ../../extend/addon/addon/hubwall/hubwall.php:92 +#: ../../extend/addon/addon/mailtest/mailtest.php:96 +msgid "Message subject" +msgstr "Onderwerp e-mailbericht" -#: ../../include/text.php:1088 -msgid "puzzled" -msgstr "verward" +#: ../../extend/addon/addon/hubwall/hubwall.php:93 +msgid "Sender Email address" +msgstr "E-mailadres afzender" -#: ../../include/text.php:1089 -msgid "interested" -msgstr "geïnteresseerd" +#: ../../extend/addon/addon/hubwall/hubwall.php:94 +msgid "Test mode (only send to hub administrator)" +msgstr "Testmodus (alleen naar hubbeheerder sturen)" -#: ../../include/text.php:1090 -msgid "bitter" -msgstr "verbitterd" +#: ../../extend/addon/addon/ijpost/ijpost.php:42 +msgid "Post to Insanejournal" +msgstr "Doorplaatsen naar InsaneJournal" -#: ../../include/text.php:1091 -msgid "cheerful" -msgstr "vrolijk" +#: ../../extend/addon/addon/ijpost/ijpost.php:73 +msgid "Enable InsaneJournal Post Plugin" +msgstr "Doorplaatsen naar InsaneJournal inschakelen" -#: ../../include/text.php:1092 -msgid "alive" -msgstr "levendig" +#: ../../extend/addon/addon/ijpost/ijpost.php:77 +msgid "InsaneJournal username" +msgstr "Gebruikersnaam InsaneJournal" -#: ../../include/text.php:1093 -msgid "annoyed" -msgstr "geërgerd" +#: ../../extend/addon/addon/ijpost/ijpost.php:81 +msgid "InsaneJournal password" +msgstr "Wachtwoord InsaneJournal" -#: ../../include/text.php:1094 -msgid "anxious" -msgstr "bezorgd" +#: ../../extend/addon/addon/ijpost/ijpost.php:85 +msgid "Post to InsaneJournal by default" +msgstr "Standaard doorplaatsen naar InsaneJournal" -#: ../../include/text.php:1095 -msgid "cranky" -msgstr "humeurig" +#: ../../extend/addon/addon/ijpost/ijpost.php:89 +msgid "InsaneJournal Post Settings" +msgstr "Doorplaatsen naar InsaneJournal" -#: ../../include/text.php:1096 -msgid "disturbed" -msgstr "verontrust" +#: ../../extend/addon/addon/ijpost/ijpost.php:104 +msgid "Insane Journal Settings saved." +msgstr "InsaneJournal-instellingen opgeslagen." -#: ../../include/text.php:1097 -msgid "frustrated" -msgstr "gefrustreerd " +#: ../../extend/addon/addon/irc/irc.php:45 +msgid "Channels to auto connect" +msgstr "Kanalen om automatisch mee te verbinden" -#: ../../include/text.php:1098 -msgid "depressed" -msgstr "gedeprimeerd" +#: ../../extend/addon/addon/irc/irc.php:45 +#: ../../extend/addon/addon/irc/irc.php:49 +msgid "Comma separated list" +msgstr "Door komma's gescheiden lijst" -#: ../../include/text.php:1099 -msgid "motivated" -msgstr "gemotiveerd" +#: ../../extend/addon/addon/irc/irc.php:49 +#: ../../extend/addon/addon/irc/irc.php:96 +msgid "Popular Channels" +msgstr "Populaire chatkanalen" -#: ../../include/text.php:1100 -msgid "relaxed" -msgstr "ontspannen" +#: ../../extend/addon/addon/irc/irc.php:53 +msgid "IRC Settings" +msgstr "IRC" -#: ../../include/text.php:1101 -msgid "surprised" -msgstr "verrast" +#: ../../extend/addon/addon/irc/irc.php:69 +msgid "IRC settings saved." +msgstr "IRC-instellingen opgeslagen." -#: ../../include/text.php:1285 ../../include/js_strings.php:70 -msgid "Monday" -msgstr "maandag" +#: ../../extend/addon/addon/irc/irc.php:74 +msgid "IRC Chatroom" +msgstr "IRC-chatkanaal" -#: ../../include/text.php:1285 ../../include/js_strings.php:71 -msgid "Tuesday" -msgstr "dinsdag" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:305 +#: ../../include/channel.php:1056 ../../include/channel.php:1218 +msgid "Status:" +msgstr "Status:" -#: ../../include/text.php:1285 ../../include/js_strings.php:72 -msgid "Wednesday" -msgstr "woensdag" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 +msgid "Activate addon" +msgstr "Plugin inschakelen" -#: ../../include/text.php:1285 ../../include/js_strings.php:73 -msgid "Thursday" -msgstr "donderdag" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 +msgid "Hide Jappixmini Chat-Widget from the webinterface" +msgstr "Hide Jappixmini Chat-Widget from the webinterface" -#: ../../include/text.php:1285 ../../include/js_strings.php:74 -msgid "Friday" -msgstr "vrijdag" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:318 +msgid "Jabber username" +msgstr "Gebruikersnaam Jabber" -#: ../../include/text.php:1285 ../../include/js_strings.php:75 -msgid "Saturday" -msgstr "zaterdag" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:324 +msgid "Jabber server" +msgstr "Jabberserver" -#: ../../include/text.php:1285 ../../include/js_strings.php:69 -msgid "Sunday" -msgstr "zondag" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:330 +msgid "Jabber BOSH host URL" +msgstr "Jabber BOSH host URL" -#: ../../include/text.php:1289 ../../include/js_strings.php:45 -msgid "January" -msgstr "januari" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:337 +msgid "Jabber password" +msgstr "Wachtwoord Jabber" -#: ../../include/text.php:1289 ../../include/js_strings.php:46 -msgid "February" -msgstr "februari" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 +msgid "Encrypt Jabber password with Hubzilla password" +msgstr "Versleutel Jabber-wachtwoord met Hubzilla-wachtwoord" -#: ../../include/text.php:1289 ../../include/js_strings.php:47 -msgid "March" -msgstr "maart" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:347 +#: ../../extend/addon/addon/redred/redred.php:115 +msgid "Hubzilla password" +msgstr "Wachtwoord Hubzilla" -#: ../../include/text.php:1289 ../../include/js_strings.php:48 -msgid "April" -msgstr "april" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 +#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 +msgid "Approve subscription requests from Hubzilla contacts automatically" +msgstr "Approve subscription requests from Hubzilla contacts automatically" -#: ../../include/text.php:1289 -msgid "May" -msgstr "mei" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "Purge internal list of jabber addresses of contacts" -#: ../../include/text.php:1289 ../../include/js_strings.php:50 -msgid "June" -msgstr "juni" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:364 +msgid "Configuration Help" +msgstr "Configuratiehulp" -#: ../../include/text.php:1289 ../../include/js_strings.php:51 -msgid "July" -msgstr "juli" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:368 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149 +msgid "Add Contact" +msgstr "Contact toevoegen" -#: ../../include/text.php:1289 ../../include/js_strings.php:52 -msgid "August" -msgstr "augustus" +#: ../../extend/addon/addon/jappixmini/jappixmini.php:371 +msgid "Jappix Mini Settings" +msgstr "Jappix Mini" -#: ../../include/text.php:1289 ../../include/js_strings.php:53 -msgid "September" -msgstr "september" +#: ../../extend/addon/addon/js_upload/js_upload.php:44 +msgid "Upload a file" +msgstr "Bestand uploaden" -#: ../../include/text.php:1289 ../../include/js_strings.php:54 -msgid "October" -msgstr "oktober" +#: ../../extend/addon/addon/js_upload/js_upload.php:45 +msgid "Drop files here to upload" +msgstr "Sleep bestanden hierheen om ze te uploaden" -#: ../../include/text.php:1289 ../../include/js_strings.php:55 -msgid "November" -msgstr "november" +#: ../../extend/addon/addon/js_upload/js_upload.php:47 +msgid "Failed" +msgstr "Mislukt" -#: ../../include/text.php:1289 ../../include/js_strings.php:56 -msgid "December" -msgstr "december" +#: ../../extend/addon/addon/js_upload/js_upload.php:315 +msgid "No files were uploaded." +msgstr "Er zijn geen bestanden geüpload." -#: ../../include/text.php:1366 ../../include/text.php:1370 -msgid "Unknown Attachment" -msgstr "Onbekende bijlage" +#: ../../extend/addon/addon/js_upload/js_upload.php:322 +msgid "Uploaded file is empty" +msgstr "Geüpload bestand is leeg" -#: ../../include/text.php:1372 -msgid "unknown" -msgstr "onbekend" +#: ../../extend/addon/addon/js_upload/js_upload.php:335 +msgid "Image exceeds size limit of " +msgstr "Afbeeldingsgrootte overschrijdt het limiet van " -#: ../../include/text.php:1408 -msgid "remove category" -msgstr "categorie verwijderen" +#: ../../extend/addon/addon/js_upload/js_upload.php:347 +msgid "File has an invalid extension, it should be one of " +msgstr "Bestand heeft een ongeldige extensie. Geldige extensies zijn " -#: ../../include/text.php:1485 -msgid "remove from file" -msgstr "uit map verwijderen" +#: ../../extend/addon/addon/js_upload/js_upload.php:359 +msgid "Upload was cancelled, or server error encountered" +msgstr "Upload werd geannuleerd of er was een serverfout" -#: ../../include/text.php:1784 ../../include/text.php:1855 -msgid "default" -msgstr "standaard" +#: ../../extend/addon/addon/ldapauth/ldapauth.php:61 +msgid "An account has been created for you." +msgstr "Er is voor jou een account aangemaakt." -#: ../../include/text.php:1792 -msgid "Page layout" -msgstr "Pagina-lay-out" +#: ../../extend/addon/addon/ldapauth/ldapauth.php:68 +msgid "Authentication successful but rejected: account creation is disabled." +msgstr "Authenticatie geslaagd, maar afgekeurd: aanmaken accounts uitgeschakeld." -#: ../../include/text.php:1792 -msgid "You can create your own with the layouts tool" -msgstr "Je kan jouw eigen lay-out ontwerpen onder lay-outs" +#: ../../extend/addon/addon/libertree/libertree.php:38 +msgid "Post to Libertree" +msgstr "Doorplaatsen naar Libertree" -#: ../../include/text.php:1834 -msgid "Page content type" -msgstr "Opmaaktype pagina" +#: ../../extend/addon/addon/libertree/libertree.php:69 +msgid "Enable Libertree Post Plugin" +msgstr "Doorplaatsen naar Libertree inschakelen" -#: ../../include/text.php:1867 -msgid "Select an alternate language" -msgstr "Kies een andere taal" +#: ../../extend/addon/addon/libertree/libertree.php:73 +msgid "Libertree API token" +msgstr "API-token Libertree" -#: ../../include/text.php:2004 -msgid "activity" -msgstr "activiteit" +#: ../../extend/addon/addon/libertree/libertree.php:77 +msgid "Libertree site URL" +msgstr "Website-URL Libertree" -#: ../../include/text.php:2305 -msgid "Design Tools" -msgstr "Ontwerp-hulpmiddelen" +#: ../../extend/addon/addon/libertree/libertree.php:81 +msgid "Post to Libertree by default" +msgstr "Standaard doorplaatsen naar Libertree" -#: ../../include/text.php:2311 -msgid "Pages" -msgstr "Pagina's" +#: ../../extend/addon/addon/libertree/libertree.php:85 +msgid "Libertree Post Settings" +msgstr "Doorplaatsen naar Libertree" -#: ../../include/text.php:2333 -msgid "Import website..." -msgstr "Website importeren..." +#: ../../extend/addon/addon/libertree/libertree.php:99 +msgid "Libertree Settings saved." +msgstr "Libertree-instellingen opgeslagen." -#: ../../include/text.php:2334 -msgid "Select folder to import" -msgstr "Kies een map om te importeren" +#: ../../extend/addon/addon/ljpost/ljpost.php:42 +msgid "Post to LiveJournal" +msgstr "Doorplaatsen naar LiveJournal" -#: ../../include/text.php:2335 -msgid "Import from a zipped folder:" -msgstr "Vanuit een zipbestand importeren:" +#: ../../extend/addon/addon/ljpost/ljpost.php:70 +msgid "Enable LiveJournal Post Plugin" +msgstr "Doorplaatsen naar LiveJournal inschakelen" -#: ../../include/text.php:2336 -msgid "Import from cloud files:" -msgstr "Vanuit de cloud importeren:" +#: ../../extend/addon/addon/ljpost/ljpost.php:74 +msgid "LiveJournal username" +msgstr "Gebruikersnaam LiveJournal" -#: ../../include/text.php:2337 -msgid "/cloud/channel/path/to/folder" -msgstr "/cloud/channel/maplocatie" +#: ../../extend/addon/addon/ljpost/ljpost.php:78 +msgid "LiveJournal password" +msgstr "Wachtwoord LiveJournal" -#: ../../include/text.php:2338 -msgid "Enter path to website files" -msgstr "Voer de locatie in van de websitebestanden" +#: ../../extend/addon/addon/ljpost/ljpost.php:82 +msgid "Post to LiveJournal by default" +msgstr "Standaard doorplaatsen naar " -#: ../../include/text.php:2339 -msgid "Select folder" -msgstr "Kies een map" +#: ../../extend/addon/addon/ljpost/ljpost.php:86 +msgid "LiveJournal Post Settings" +msgstr "Doorplaatsen naar LiveJournal" -#: ../../include/text.php:2340 -msgid "Export website..." -msgstr "Website exporteren..." +#: ../../extend/addon/addon/ljpost/ljpost.php:101 +msgid "LiveJournal Settings saved." +msgstr "LiveJournal-instellingen opgeslagen." -#: ../../include/text.php:2341 -msgid "Export to a zip file" -msgstr "Naar een zipbestand exporteren" +#: ../../extend/addon/addon/logrot/logrot.php:36 +msgid "Logfile archive directory" +msgstr "Logbestand archiefmap" -#: ../../include/text.php:2342 -msgid "website.zip" -msgstr "website.zip" +#: ../../extend/addon/addon/logrot/logrot.php:36 +msgid "Directory to store rotated logs" +msgstr "Map om geroteerde logbestanden in op te slaan" -#: ../../include/text.php:2343 -msgid "Enter a name for the zip file." -msgstr "Vul een naam in voor het zipbestand." +#: ../../extend/addon/addon/logrot/logrot.php:37 +msgid "Logfile size in bytes before rotating" +msgstr "Grootte van logbestand in bytes, voordat het wordt geroteerd" -#: ../../include/text.php:2344 -msgid "Export to cloud files" -msgstr "Naar de cloud exporteren" +#: ../../extend/addon/addon/logrot/logrot.php:38 +msgid "Number of logfiles to retain" +msgstr "Aantal te behouden logbestanden" -#: ../../include/text.php:2345 -msgid "/path/to/export/folder" -msgstr "/locatie/van/export/map" +#: ../../extend/addon/addon/mailhost/mailhost.php:36 +msgid "Email notification hub" +msgstr "Hub voor e-mailnotificaties" -#: ../../include/text.php:2346 -msgid "Enter a path to a cloud files destination." -msgstr "Voer de locatie in van de cloudbestemming" +#: ../../extend/addon/addon/mailhost/mailhost.php:36 +msgid "Hostname" +msgstr "Hostnaam" -#: ../../include/text.php:2347 -msgid "Specify folder" -msgstr "Selecteer een map" +#: ../../extend/addon/addon/mailhost/mailhost.php:40 +msgid "Mailhost Settings" +msgstr "Mailhost" -#: ../../include/zot.php:700 -msgid "Invalid data packet" -msgstr "Datapakket ongeldig" +#: ../../extend/addon/addon/mailhost/mailhost.php:54 +msgid "MAILHOST Settings saved." +msgstr "Mailhost-instellingen opgeslagen." -#: ../../include/zot.php:716 -msgid "Unable to verify channel signature" -msgstr "Kanaalkenmerk kon niet worden geverifieerd. " +#: ../../extend/addon/addon/moremoods/moremoods.php:19 +msgid "lonely" +msgstr "Eenzaam" + +#: ../../extend/addon/addon/moremoods/moremoods.php:20 +msgid "drunk" +msgstr "dronken" + +#: ../../extend/addon/addon/moremoods/moremoods.php:21 +msgid "horny" +msgstr "geil" + +#: ../../extend/addon/addon/moremoods/moremoods.php:22 +msgid "stoned" +msgstr "stoned" + +#: ../../extend/addon/addon/moremoods/moremoods.php:23 +msgid "fucked up" +msgstr "opgefokt" + +#: ../../extend/addon/addon/moremoods/moremoods.php:24 +msgid "clusterfucked" +msgstr "clusterfucked" + +#: ../../extend/addon/addon/moremoods/moremoods.php:25 +msgid "crazy" +msgstr "gek" + +#: ../../extend/addon/addon/moremoods/moremoods.php:26 +msgid "hurt" +msgstr "gekwetst" + +#: ../../extend/addon/addon/moremoods/moremoods.php:27 +msgid "sleepy" +msgstr "slaperig" + +#: ../../extend/addon/addon/moremoods/moremoods.php:28 +msgid "grumpy" +msgstr "chagrijnig" + +#: ../../extend/addon/addon/moremoods/moremoods.php:29 +msgid "high" +msgstr "high" + +#: ../../extend/addon/addon/moremoods/moremoods.php:30 +msgid "semi-conscious" +msgstr "half bij kennis" + +#: ../../extend/addon/addon/moremoods/moremoods.php:31 +msgid "in love" +msgstr "verliefd" + +#: ../../extend/addon/addon/moremoods/moremoods.php:32 +msgid "in lust" +msgstr "wellustig" + +#: ../../extend/addon/addon/moremoods/moremoods.php:33 +msgid "naked" +msgstr "naakt" + +#: ../../extend/addon/addon/moremoods/moremoods.php:34 +msgid "stinky" +msgstr "stinkend" + +#: ../../extend/addon/addon/moremoods/moremoods.php:35 +msgid "sweaty" +msgstr "zweterig" + +#: ../../extend/addon/addon/moremoods/moremoods.php:36 +msgid "bleeding out" +msgstr "aan het doodbloeden" + +#: ../../extend/addon/addon/moremoods/moremoods.php:37 +msgid "victorious" +msgstr "zegevierend" + +#: ../../extend/addon/addon/moremoods/moremoods.php:38 +msgid "defeated" +msgstr "verslagen" + +#: ../../extend/addon/addon/moremoods/moremoods.php:39 +msgid "envious" +msgstr "jaloers" + +#: ../../extend/addon/addon/moremoods/moremoods.php:40 +msgid "jealous" +msgstr "jaloers" + +#: ../../extend/addon/addon/morepokes/morepokes.php:19 +msgid "bitchslap" +msgstr "bitchslappen" + +#: ../../extend/addon/addon/morepokes/morepokes.php:19 +msgid "bitchslapped" +msgstr "bitchslapped" + +#: ../../extend/addon/addon/morepokes/morepokes.php:20 +msgid "shag" +msgstr "wippen" -#: ../../include/zot.php:2329 +#: ../../extend/addon/addon/morepokes/morepokes.php:20 +msgid "shagged" +msgstr "wipte met" + +#: ../../extend/addon/addon/morepokes/morepokes.php:21 +msgid "patent" +msgstr "patent" + +#: ../../extend/addon/addon/morepokes/morepokes.php:21 +msgid "patented" +msgstr "patented" + +#: ../../extend/addon/addon/morepokes/morepokes.php:22 +msgid "hug" +msgstr "knuffelen" + +#: ../../extend/addon/addon/morepokes/morepokes.php:22 +msgid "hugged" +msgstr "knuffelde" + +#: ../../extend/addon/addon/morepokes/morepokes.php:23 +msgid "murder" +msgstr "vermoorden" + +#: ../../extend/addon/addon/morepokes/morepokes.php:23 +msgid "murdered" +msgstr "vermoorde" + +#: ../../extend/addon/addon/morepokes/morepokes.php:24 +msgid "worship" +msgstr "aanbidden" + +#: ../../extend/addon/addon/morepokes/morepokes.php:24 +msgid "worshipped" +msgstr "aanbad" + +#: ../../extend/addon/addon/morepokes/morepokes.php:25 +msgid "kiss" +msgstr "kussen" + +#: ../../extend/addon/addon/morepokes/morepokes.php:25 +msgid "kissed" +msgstr "kuste" + +#: ../../extend/addon/addon/morepokes/morepokes.php:26 +msgid "tempt" +msgstr "verleiden" + +#: ../../extend/addon/addon/morepokes/morepokes.php:26 +msgid "tempted" +msgstr "verleidde" + +#: ../../extend/addon/addon/morepokes/morepokes.php:27 +msgid "raise eyebrows at" +msgstr "wenkbrauwen optrekken" + +#: ../../extend/addon/addon/morepokes/morepokes.php:27 +msgid "raised their eyebrows at" +msgstr "trok zijn/haar wenkbrauwen op naar" + +#: ../../extend/addon/addon/morepokes/morepokes.php:28 +msgid "insult" +msgstr "beledigen" + +#: ../../extend/addon/addon/morepokes/morepokes.php:28 +msgid "insulted" +msgstr "beledigde" + +#: ../../extend/addon/addon/morepokes/morepokes.php:29 +msgid "praise" +msgstr "prijzen" + +#: ../../extend/addon/addon/morepokes/morepokes.php:29 +msgid "praised" +msgstr "prees" + +#: ../../extend/addon/addon/morepokes/morepokes.php:30 +msgid "be dubious of" +msgstr "twijfels hebben" + +#: ../../extend/addon/addon/morepokes/morepokes.php:30 +msgid "was dubious of" +msgstr "had twijfels over" + +#: ../../extend/addon/addon/morepokes/morepokes.php:31 +msgid "eat" +msgstr "opeten" + +#: ../../extend/addon/addon/morepokes/morepokes.php:31 +msgid "ate" +msgstr "at" + +#: ../../extend/addon/addon/morepokes/morepokes.php:32 +msgid "giggle and fawn at" +msgstr "giechelen en vleien" + +#: ../../extend/addon/addon/morepokes/morepokes.php:32 +msgid "giggled and fawned at" +msgstr "giechelde naar en vleide met" + +#: ../../extend/addon/addon/morepokes/morepokes.php:33 +msgid "doubt" +msgstr "betwijfelen" + +#: ../../extend/addon/addon/morepokes/morepokes.php:33 +msgid "doubted" +msgstr "betwijfelde" + +#: ../../extend/addon/addon/morepokes/morepokes.php:34 +msgid "glare" +msgstr "boos kijken" + +#: ../../extend/addon/addon/morepokes/morepokes.php:34 +msgid "glared at" +msgstr "keek boos naar" + +#: ../../extend/addon/addon/morepokes/morepokes.php:35 +msgid "fuck" +msgstr "neuken" + +#: ../../extend/addon/addon/morepokes/morepokes.php:35 +msgid "fucked" +msgstr "neukte" + +#: ../../extend/addon/addon/morepokes/morepokes.php:36 +msgid "bonk" +msgstr "naaien" + +#: ../../extend/addon/addon/morepokes/morepokes.php:36 +msgid "bonked" +msgstr "naaide" + +#: ../../extend/addon/addon/morepokes/morepokes.php:37 +msgid "declare undying love for" +msgstr "eeuwige liefde verklaren" + +#: ../../extend/addon/addon/morepokes/morepokes.php:37 +msgid "declared undying love for" +msgstr "verklaarde de eeuwige liefde aan" + +#: ../../extend/addon/addon/msgfooter/msgfooter.php:46 +#: ../../extend/addon/addon/xmpp/xmpp.php:91 +msgid "Save Settings" +msgstr "Instellingen opslaan" + +#: ../../extend/addon/addon/msgfooter/msgfooter.php:47 +msgid "text to include in all outgoing posts from this site" +msgstr "tekst om onderaan elk uitgaand bericht van deze hub te plaatsen" + +#: ../../extend/addon/addon/nofed/nofed.php:42 +msgid "Federate" +msgstr "Federeren" + +#: ../../extend/addon/addon/nofed/nofed.php:56 +msgid "nofed Settings saved." +msgstr "Geen federatie-instellingen opgeslagen." + +#: ../../extend/addon/addon/nofed/nofed.php:72 +msgid "Allow Federation Toggle" +msgstr "Federatie toestaan?" + +#: ../../extend/addon/addon/nofed/nofed.php:76 +msgid "Federate posts by default" +msgstr "Standaard berichten federeren" + +#: ../../extend/addon/addon/nofed/nofed.php:80 +msgid "NoFed Settings" +msgstr "Geen federatie" + +#: ../../extend/addon/addon/nsabait/nsabait.php:125 +msgid "Nsabait Settings updated." +msgstr "NSAbait-instellingen bijgewerkt." + +#: ../../extend/addon/addon/nsabait/nsabait.php:157 +msgid "Enable NSAbait Plugin" +msgstr "NSAbait inschakelen" + +#: ../../extend/addon/addon/nsabait/nsabait.php:161 +msgid "NSAbait Settings" +msgstr "NSAbait" + +#: ../../extend/addon/addon/nsfw/nsfw.php:80 +msgid "" +"This plugin 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 "Deze plug-in controleert berichten op woorden die je hieronder kunt opgeven en klapt berichten in die deze woorden bevatten, zodat die berichten niet worden weergegeven op ongeschikte momenten. Denk hierbij aan berichten met erotische afbeeldingen, die waarschijnlijk niet geschikt zijn binnen (bijvoorbeeld) een werkomgeving. Het is beleefd en het wordt aangeraden om zulke berichten met #NSFW te taggen. Dit filter kan ook gebruikt worden met andere woorden en is dus voor alles inzetbaar." + +#: ../../extend/addon/addon/nsfw/nsfw.php:84 +msgid "Enable Content filter" +msgstr "Inhoudsfilter inschakelen" + +#: ../../extend/addon/addon/nsfw/nsfw.php:88 +msgid "Comma separated list of keywords to hide" +msgstr "Door komma's gescheiden lijst met woorden die gefilterd moeten worden." + +#: ../../extend/addon/addon/nsfw/nsfw.php:88 +msgid "Use /expression/ to provide regular expressions" +msgstr "Gebruik /expressie/ voor reguliere expressies" + +#: ../../extend/addon/addon/nsfw/nsfw.php:92 +msgid "Not Safe For Work Settings" +msgstr "Not Safe For Work (inhoudsfilter)" + +#: ../../extend/addon/addon/nsfw/nsfw.php:92 +msgid "General Purpose Content Filter" +msgstr "Voor alles te gebruiken inhoudsfilter" + +#: ../../extend/addon/addon/nsfw/nsfw.php:110 +msgid "NSFW Settings saved." +msgstr "NSFW-instellingen opgeslagen." + +#: ../../extend/addon/addon/nsfw/nsfw.php:207 +msgid "Possible adult content" +msgstr "Mogelijk inhoud voor volwassenen" + +#: ../../extend/addon/addon/nsfw/nsfw.php:211 #, php-format -msgid "Unable to verify site signature for %s" -msgstr "Hubkenmerk voor %s kon niet worden geverifieerd" +msgid "%s - click to open/close" +msgstr "%s - Klik om te openen of te sluiten" -#: ../../include/zot.php:3713 -msgid "invalid target signature" -msgstr "ongeldig doelkenmerk" +#: ../../extend/addon/addon/openclipatar/openclipatar.php:49 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:127 +msgid "System defaults:" +msgstr "Systeemstandaarden:" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:53 +msgid "Preferred Clipart IDs" +msgstr "Voorkeursclipart" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:53 +msgid "List of preferred clipart ids. These will be shown first." +msgstr "Lijst met clipartnummers die als eerste moeten worden getoond." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:54 +msgid "Default Search Term" +msgstr "Standaard zoekterm" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:54 +msgid "The default search term. These will be shown second." +msgstr "Standaard zoekterm. Deze worden als tweede getoond." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:55 +msgid "Return After" +msgstr "Ga na afloop naar" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:55 +msgid "Page to load after image selection." +msgstr "Pagina die na het kiezen van een afbeelding moet laden." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:57 +#: ../../include/channel.php:965 ../../include/nav.php:93 +msgid "Edit Profile" +msgstr "Profiel bewerken" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:58 +msgid "Profile List" +msgstr "Profiellijst" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:60 +msgid "Order of Preferred" +msgstr "Voorkeursclipart sorteren op" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:60 +msgid "Sort order of preferred clipart ids." +msgstr "Als eerste getoonde clipart hierop sorteren." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:61 +#: ../../extend/addon/addon/openclipatar/openclipatar.php:67 +msgid "Newest first" +msgstr "Nieuwste eerst" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:64 +msgid "As entered" +msgstr "Zoals ingevoerd" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:66 +msgid "Order of other" +msgstr "Overige clipart sorteren op" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:66 +msgid "Sort order of other clipart ids." +msgstr "Overige clipart hierop sorteren." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:68 +msgid "Most downloaded first" +msgstr "Meest gedownload eerst" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:69 +msgid "Most liked first" +msgstr "Meest geliked eerst" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:71 +msgid "Preferred IDs Message" +msgstr "Tekst voorkeursclipart" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:71 +msgid "Message to display above preferred results." +msgstr "Tekst die bovenaan de resultaten met voorkeursclipart moet worden getoond." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:77 +msgid "Uploaded by: " +msgstr "Geüpload door: " + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:77 +msgid "Drawn by: " +msgstr "Getekend door: " + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:191 +msgid "Or select from a free OpenClipart.org image:" +msgstr "Of kies uit een vrije OpenClipart.org-afbeelding:" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:194 +msgid "Search Term" +msgstr "Zoekterm" + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:216 +msgid "Unknown error. Please try again later." +msgstr "Onbekende fout. Probeer later nog eens." + +#: ../../extend/addon/addon/openclipatar/openclipatar.php:303 +msgid "Profile photo updated successfully." +msgstr "Bijwerken profielfoto geslaagd." + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:146 +msgid "View Larger" +msgstr "Groter tonen" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:169 +msgid "Tile Server URL" +msgstr "URL tile-server" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:169 +msgid "" +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" " +"target=\"_blank\">public tile servers</a>" +msgstr "Een lijst met <a href=\\\"http://wiki.openstreetmap.org/wiki/TMS\\\" target=\\\"_blank\\\">openbare tile-servers</a>" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:170 +msgid "Nominatim (reverse geocoding) Server URL" +msgstr "Server-URL Nominatim (reverse geocoding)" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:170 +msgid "" +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" " +"target=\"_blank\">Nominatim servers</a>" +msgstr "Een lijst met <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim-servers</a>" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:171 +msgid "Default zoom" +msgstr "Standaard zoomniveau" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:171 +msgid "" +"The default zoom level. (1:world, 18:highest, also depends on tile server)" +msgstr "Standaard zoomniveau. Van 1 (wereld) t/m 18 (maximaal). Is ook afhankelijk van tile-server." + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:172 +msgid "Include marker on map" +msgstr "Markering op kaart plaatsen" + +#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:172 +msgid "Include a marker on the map." +msgstr "Plaatst een markering op de kaart." + +#: ../../extend/addon/addon/pageheader/pageheader.php:43 +msgid "Message to display on every page on this server" +msgstr "Bericht om op elke pagina van deze hub weer te geven" + +#: ../../extend/addon/addon/pageheader/pageheader.php:48 +msgid "Pageheader Settings" +msgstr "Pageheader" + +#: ../../extend/addon/addon/pageheader/pageheader.php:64 +msgid "pageheader Settings saved." +msgstr "Pageheader-instellingen opgeslagen." + +#: ../../extend/addon/addon/piwik/piwik.php:85 +msgid "" +"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " +"analytics tool." +msgstr "Het bezoek aan deze website wordt gemeten door <a href='http://www.piwik.org'>Piwik</a>." + +#: ../../extend/addon/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 "Wanneer je niet wil dat jouw bezoek aan deze website wordt bijgehouden, <a href='%s'>kan je een cookie achterlaten om te verhinderen dat Piwik jou op deze website blijft volgen</a> (opt-out)." + +#: ../../extend/addon/addon/piwik/piwik.php:96 +msgid "Piwik Base URL" +msgstr "Basis-URL Piwik" + +#: ../../extend/addon/addon/piwik/piwik.php:96 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" +msgstr "Absoluut pad naar jouw Piwik-installatie (zonder protocol (http/s), met een slash op het einde)" + +#: ../../extend/addon/addon/piwik/piwik.php:97 +msgid "Site ID" +msgstr "Site ID" + +#: ../../extend/addon/addon/piwik/piwik.php:98 +msgid "Show opt-out cookie link?" +msgstr "Toon opt-out cookie-link?" + +#: ../../extend/addon/addon/piwik/piwik.php:99 +msgid "Asynchronous tracking" +msgstr "Asynchroon volgen" + +#: ../../extend/addon/addon/piwik/piwik.php:100 +msgid "Enable frontend JavaScript error tracking" +msgstr "Volgen van front-end JavaScript-fouten inschakelen" + +#: ../../extend/addon/addon/piwik/piwik.php:100 +msgid "This feature requires Piwik >= 2.2.0" +msgstr "Deze functie vereist Piwik >= 2.2.0" + +#: ../../extend/addon/addon/planets/planets.php:121 +msgid "Planets Settings updated." +msgstr "Planets-instellingen opgeslagen." + +#: ../../extend/addon/addon/planets/planets.php:153 +msgid "Enable Planets Plugin" +msgstr "Planets inschakelen" + +#: ../../extend/addon/addon/planets/planets.php:157 +msgid "Planets Settings" +msgstr "Planets" + +#: ../../extend/addon/addon/pumpio/pumpio.php:148 +msgid "You are now authenticated to pumpio." +msgstr "De verbinding met pump.io is geverifieerd" + +#: ../../extend/addon/addon/pumpio/pumpio.php:149 +msgid "return to the featured settings page" +msgstr "Ga terug naar pagina met plugin-instellingen" + +#: ../../extend/addon/addon/pumpio/pumpio.php:163 +msgid "Post to Pump.io" +msgstr "Doorplaatsen naar Pump.io" + +#: ../../extend/addon/addon/pumpio/pumpio.php:198 +msgid "Pump.io servername" +msgstr "Pump.io-servernaam" + +#: ../../extend/addon/addon/pumpio/pumpio.php:198 +msgid "Without \"http://\" or \"https://\"" +msgstr "Zonder \"http://\" of \"https://\"" + +#: ../../extend/addon/addon/pumpio/pumpio.php:202 +msgid "Pump.io username" +msgstr "Gebruikersnaam Pump.io" + +#: ../../extend/addon/addon/pumpio/pumpio.php:202 +msgid "Without the servername" +msgstr "Zonder servernaam" + +#: ../../extend/addon/addon/pumpio/pumpio.php:213 +msgid "You are not authenticated to pumpio" +msgstr "De verbinding met pump.io is niet geverifieerd" + +#: ../../extend/addon/addon/pumpio/pumpio.php:215 +msgid "(Re-)Authenticate your pump.io connection" +msgstr "Verifieer (opnieuw) jouw pump.io-verbinding" + +#: ../../extend/addon/addon/pumpio/pumpio.php:219 +msgid "Enable pump.io Post Plugin" +msgstr "Doorplaatsen naar Pump.io inschakelen" + +#: ../../extend/addon/addon/pumpio/pumpio.php:223 +msgid "Post to pump.io by default" +msgstr "Standaard doorplaatsen naar Pump.io" + +#: ../../extend/addon/addon/pumpio/pumpio.php:227 +msgid "Should posts be public" +msgstr "Moeten berichten openbaar zijn" + +#: ../../extend/addon/addon/pumpio/pumpio.php:231 +msgid "Mirror all public posts" +msgstr "Alle openbare berichten doorplaatsen" + +#: ../../extend/addon/addon/pumpio/pumpio.php:237 +msgid "Pump.io Post Settings" +msgstr "Doorplaatsen naar Pump.io" + +#: ../../extend/addon/addon/pumpio/pumpio.php:266 +msgid "PumpIO Settings saved." +msgstr "Pump.io-instellingen opgeslagen." + +#: ../../extend/addon/addon/qrator/qrator.php:48 +msgid "QR code" +msgstr "QR-code" + +#: ../../extend/addon/addon/qrator/qrator.php:63 +msgid "QR Generator" +msgstr "QR-code-generator" + +#: ../../extend/addon/addon/qrator/qrator.php:64 +msgid "Enter some text" +msgstr "Vul wat tekst in" + +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 +msgid "Enable Rainbowtag" +msgstr "Rainbowtag inschakelen" + +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:85 +msgid "Rainbowtag Settings" +msgstr "Rainbowtag" + +#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:101 +msgid "Rainbowtag Settings saved." +msgstr "Rainbowtag-instellingen opgeslagen." + +#: ../../extend/addon/addon/randpost/randpost.php:97 +msgid "You're welcome." +msgstr "Je bent van harte welkom." + +#: ../../extend/addon/addon/randpost/randpost.php:98 +msgid "Ah shucks..." +msgstr "Hé verdorie..." + +#: ../../extend/addon/addon/randpost/randpost.php:99 +msgid "Don't mention it." +msgstr "Graag gedaan." + +#: ../../extend/addon/addon/randpost/randpost.php:100 +msgid "<blush>" +msgstr "<bloos>" + +#: ../../extend/addon/addon/redfiles/redfiles.php:119 +msgid "Redmatrix File Storage Import" +msgstr "Importeer bestanden vanuit Redmatrix" + +#: ../../extend/addon/addon/redfiles/redfiles.php:120 +msgid "This will import all your Redmatrix cloud files to this channel." +msgstr "Hiermee importeer je al jouw Redmatrix-bestanden in dit kanaal." + +#: ../../extend/addon/addon/redfiles/redfiles.php:121 +#: ../../extend/addon/addon/redphotos/redphotos.php:131 +msgid "Redmatrix Server base URL" +msgstr "Basis-URL van Redmatrix-hub" + +#: ../../extend/addon/addon/redfiles/redfiles.php:122 +#: ../../extend/addon/addon/redphotos/redphotos.php:132 +msgid "Redmatrix Login Username" +msgstr "Gebruikersnaam Redmatrix" + +#: ../../extend/addon/addon/redfiles/redfiles.php:123 +#: ../../extend/addon/addon/redphotos/redphotos.php:133 +msgid "Redmatrix Login Password" +msgstr "Wachtwoord Redmatrix" + +#: ../../extend/addon/addon/redfiles/redfilehelper.php:67 +msgid "file" +msgstr "bestand" + +#: ../../extend/addon/addon/redphotos/redphotos.php:106 +msgid "Photos imported" +msgstr "Foto's geïmporteerd" + +#: ../../extend/addon/addon/redphotos/redphotos.php:129 +msgid "Redmatrix Photo Album Import" +msgstr "Fotoalbums importeren vanuit Redmatrix" + +#: ../../extend/addon/addon/redphotos/redphotos.php:130 +msgid "This will import all your Redmatrix photo albums to this channel." +msgstr "Hiermee importeer je al jouw Redmatrix-fotoalbums in dit Hubzilla-kanaal." + +#: ../../extend/addon/addon/redphotos/redphotos.php:134 +msgid "Import just this album" +msgstr "Alleen dit album importeren" + +#: ../../extend/addon/addon/redphotos/redphotos.php:134 +msgid "Leave blank to import all albums" +msgstr "Laat leeg om alle albums te importeren" + +#: ../../extend/addon/addon/redphotos/redphotos.php:135 +msgid "Maximum count to import" +msgstr "Maximaal aantal om te importeren" + +#: ../../extend/addon/addon/redphotos/redphotos.php:135 +msgid "0 or blank to import all available" +msgstr "0 of leeg om alles te importeren" + +#: ../../extend/addon/addon/redred/redred.php:45 +msgid "Post to Red" +msgstr "Doorplaatsen naar Hubzilla" + +#: ../../extend/addon/addon/redred/redred.php:60 +msgid "Channel is required." +msgstr "Een kanaal is vereist." + +#: ../../extend/addon/addon/redred/redred.php:65 +msgid "Invalid channel." +msgstr "Onbekend kanaal." + +#: ../../extend/addon/addon/redred/redred.php:76 +msgid "redred Settings saved." +msgstr "RedRed-instellingen opgeslagen." + +#: ../../extend/addon/addon/redred/redred.php:95 +msgid "Allow posting to another Hubzilla Channel" +msgstr "Doorplaatsen naar een ander Hubzilla-kanaal toestaan" + +#: ../../extend/addon/addon/redred/redred.php:99 +msgid "Send public postings to Hubzilla channel by default" +msgstr "Standaard doorplaatsen naar een ander Hubzilla-kanaal toestaan" + +#: ../../extend/addon/addon/redred/redred.php:103 +msgid "Hubzilla API Path" +msgstr "API-pad Hubzilla" + +#: ../../extend/addon/addon/redred/redred.php:103 +#: ../../extend/addon/addon/rtof/rtof.php:89 +msgid "https://{sitename}/api" +msgstr "https://{hubnaam}/api" + +#: ../../extend/addon/addon/redred/redred.php:107 +msgid "Hubzilla login name" +msgstr "Gebruikersnaam Hubzilla" + +#: ../../extend/addon/addon/redred/redred.php:111 +msgid "Hubzilla channel name" +msgstr "Kanaalnaam Hubzilla" + +#: ../../extend/addon/addon/redred/redred.php:111 +#: ../../extend/addon/addon/openid/MysqlProvider.php:54 +msgid "Nickname" +msgstr "Bijnaam" + +#: ../../extend/addon/addon/redred/redred.php:119 +msgid "Hubzilla Crosspost Settings" +msgstr "Doorplaatsen naar Hubzilla" + +#: ../../extend/addon/addon/rtof/rtof.php:45 +msgid "Post to Friendica" +msgstr "Doorplaatsen naar Friendica" + +#: ../../extend/addon/addon/rtof/rtof.php:62 +msgid "rtof Settings saved." +msgstr "RTOF-instellingen opgeslagen." + +#: ../../extend/addon/addon/rtof/rtof.php:81 +msgid "Allow posting to Friendica" +msgstr "Doorplaatsen naar Friendica toestaan" + +#: ../../extend/addon/addon/rtof/rtof.php:85 +msgid "Send public postings to Friendica by default" +msgstr "Standaard doorplaatsen naar Friendica" + +#: ../../extend/addon/addon/rtof/rtof.php:89 +msgid "Friendica API Path" +msgstr "API-pad Friendica" + +#: ../../extend/addon/addon/rtof/rtof.php:93 +msgid "Friendica login name" +msgstr "Gebruikersnaam Friendica" + +#: ../../extend/addon/addon/rtof/rtof.php:97 +msgid "Friendica password" +msgstr "Wachtwoord Friendica" + +#: ../../extend/addon/addon/rtof/rtof.php:101 +msgid "Hubzilla to Friendica Post Settings" +msgstr "Doorplaatsen naar Friendica" + +#: ../../extend/addon/addon/sendzid/sendzid.php:25 +msgid "Extended Identity Sharing" +msgstr "Uitgebreid identiteit delen" + +#: ../../extend/addon/addon/sendzid/sendzid.php:26 +msgid "" +"Share your identity with all websites on the internet. When disabled, " +"identity is only shared with sites in the matrix." +msgstr "Deel jouw Hubzilla-identiteit met alle websites op het internet. Wanneer dit is uitgeschakeld wordt je identiteit alleen binnen het Hubzilla-netwerk gedeeld. Schakel dit alleen in als je weet wat je doet." + +#: ../../extend/addon/addon/skeleton/skeleton.php:59 +msgid "Some setting" +msgstr "Een of andere instelling" + +#: ../../extend/addon/addon/skeleton/skeleton.php:61 +msgid "A setting" +msgstr "Een instelling" + +#: ../../extend/addon/addon/skeleton/skeleton.php:64 +msgid "Skeleton Settings" +msgstr "Plugin-skeleton" + +#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 +msgid "Deactivate the feature" +msgstr "Deze functie uitschakelen" + +#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 +msgid "Hide the button and show the smilies directly." +msgstr "Verberg de knop en toon de smilies direct." + +#: ../../extend/addon/addon/smileybutton/smileybutton.php:281 +msgid "Smileybutton Settings" +msgstr "Smileyknop" + +#: ../../extend/addon/addon/startpage/startpage.php:109 +msgid "Page to load after login" +msgstr "Pagina die na het inloggen getoond moet worden" + +#: ../../extend/addon/addon/startpage/startpage.php:109 +msgid "" +"Examples: "apps", "network?f=&gid=37" (privacy " +"collection), "channel" or "notifications/system" (leave " +"blank for default network page (grid)." +msgstr "Voorbeelden: "apps", "network?f=&gid=37" (privacygroep), "channel" of "notifications/system" (laat leeg voor de standaard netwerkpagina (grid)." + +#: ../../extend/addon/addon/startpage/startpage.php:113 +msgid "Startpage Settings" +msgstr "Startpagina" + +#: ../../extend/addon/addon/statusnet/statusnet.php:143 +msgid "Post to GNU social" +msgstr "Doorplaatsen naar GNU social" + +#: ../../extend/addon/addon/statusnet/statusnet.php:195 +msgid "" +"Please contact your site administrator.<br />The provided API URL is not " +"valid." +msgstr "De verstrekte API-URL is ongeldig.<br />Neem contact op met jouw hubbeheerder." + +#: ../../extend/addon/addon/statusnet/statusnet.php:232 +msgid "We could not contact the GNU social API with the Path you entered." +msgstr "Wij konden de GNU social-API niet bereiken door middel van het ingevulde pad." + +#: ../../extend/addon/addon/statusnet/statusnet.php:266 +msgid "GNU social settings updated." +msgstr "GNU social-instellingen bijgewerkt." + +#: ../../extend/addon/addon/statusnet/statusnet.php:310 +msgid "Globally Available GNU social OAuthKeys" +msgstr "Op de gehele hub te gebruiken GNU social OAuthkeys." + +#: ../../extend/addon/addon/statusnet/statusnet.php:312 +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 "Er zijn op deze hub enkele voorgeconfigureerde OAuthkey-paren voor GNU social servers beschikbaar. Wanneer je een van deze servers gebruikt, gebruik dan deze voorgeconfigureerde gegevens.<br />Wanneer dit niet het geval is, maak dan gerust met een andere GNU social-server verbinding (zie hieronder)." + +#: ../../extend/addon/addon/statusnet/statusnet.php:327 +msgid "Provide your own OAuth Credentials" +msgstr "Verstrek jouw eigen OAuth-gegevens" + +#: ../../extend/addon/addon/statusnet/statusnet.php:329 +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 "Geen consumerkey voor GNU social gevonden. Registreer jouw Hubzilla-account als een desktopclient in jouw GNU-social-account, kopieer en plak hier de consumerkey en de consumersecret, en vul de API-base-root in.<br />Voordat je jouw eigen OAuthkey-paar registreert, vraag dan eerst aan jouw hubbeheerder of er al een key-paar voor deze hub op jouw favoriete GNU social-server bestaat." + +#: ../../extend/addon/addon/statusnet/statusnet.php:333 +msgid "OAuth Consumer Key" +msgstr "OAuth-consumerkey" + +#: ../../extend/addon/addon/statusnet/statusnet.php:337 +msgid "OAuth Consumer Secret" +msgstr "Oauth-consumersecret" + +#: ../../extend/addon/addon/statusnet/statusnet.php:341 +msgid "Base API Path" +msgstr "Basispad API" + +#: ../../extend/addon/addon/statusnet/statusnet.php:341 +msgid "Remember the trailing /" +msgstr "Vergeet niet de afsluitende /" + +#: ../../extend/addon/addon/statusnet/statusnet.php:345 +msgid "GNU social application name" +msgstr "Naam GNU social-applicatie" + +#: ../../extend/addon/addon/statusnet/statusnet.php:368 +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 "Om jouw GNU social-account te koppelen klik je op de knop hieronder. Je krijgt dan een veiligheidscode van GNU social die je kan kopiëren en dan hieronder in het invulveld kan plakken. Vervolgens klik je op Opslaan. Alleen jouw <strong>openbare</strong> berichten kunnen worden doorgeplaatst naar GNU social." + +#: ../../extend/addon/addon/statusnet/statusnet.php:370 +msgid "Log in with GNU social" +msgstr "Inloggen op " + +#: ../../extend/addon/addon/statusnet/statusnet.php:373 +msgid "Copy the security code from GNU social here" +msgstr "Plak de veiligheidscode van GNU social hier" + +#: ../../extend/addon/addon/statusnet/statusnet.php:383 +msgid "Cancel Connection Process" +msgstr "Annuleer het verbindingsproces" + +#: ../../extend/addon/addon/statusnet/statusnet.php:385 +msgid "Current GNU social API is" +msgstr "Huidige GNU social-API is" + +#: ../../extend/addon/addon/statusnet/statusnet.php:389 +msgid "Cancel GNU social Connection" +msgstr "Annuleer de GNU social-verbinding" + +#: ../../extend/addon/addon/statusnet/statusnet.php:401 +#: ../../extend/addon/addon/twitter/twitter.php:232 +msgid "Currently connected to: " +msgstr "Momenteel gekoppeld aan: " + +#: ../../extend/addon/addon/statusnet/statusnet.php:406 +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>Opmerking</strong>: In verband met jouw privacyinstellingen (<em>wanneer jouw kanaalprofiel voor onbekenden is verborgen</em>) leidt de profiellink die mogelijk in jouw naar GNU social doorgestuurde openbare berichten staat, naar een lege pagina met de melding dat toegang tot jouw kanaalprofiel is beperkt." + +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +msgid "Allow posting to GNU social" +msgstr "Doorplaatsen naar GNU social toestaan" + +#: ../../extend/addon/addon/statusnet/statusnet.php:411 +msgid "" +"If enabled your public postings can be posted to the associated GNU-social " +"account" +msgstr "Wanneer dit is ingeschakeld kunnen jouw openbare berichten naar het gekoppelde Twitter-account worden doorgeplaatst" + +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +msgid "Post to GNU social by default" +msgstr "Standaard doorplaatsen naar GNU social" + +#: ../../extend/addon/addon/statusnet/statusnet.php:415 +msgid "" +"If enabled your public postings will be posted to the associated GNU-social " +"account by default" +msgstr "Wanneer dit is ingeschakeld worden al jouw openbare berichten standaard naar het gekoppelde GNU social-account doorgeplaatst" + +#: ../../extend/addon/addon/statusnet/statusnet.php:424 +#: ../../extend/addon/addon/twitter/twitter.php:255 +msgid "Clear OAuth configuration" +msgstr "OAuth-configuratie wissen" + +#: ../../extend/addon/addon/statusnet/statusnet.php:432 +msgid "GNU social Post Settings" +msgstr "Doorplaatsen naar GNU social" + +#: ../../extend/addon/addon/statusnet/statusnet.php:891 +msgid "API URL" +msgstr "API-URL" + +#: ../../extend/addon/addon/statusnet/statusnet.php:894 +msgid "Application name" +msgstr "Naam applicatie" + +#: ../../extend/addon/addon/superblock/superblock.php:110 +msgid "Currently blocked" +msgstr "Momenteel geblokkeerd" + +#: ../../extend/addon/addon/superblock/superblock.php:112 +msgid "No channels currently blocked" +msgstr "Momenteel geen kanalen geblokkeerd" + +#: ../../extend/addon/addon/superblock/superblock.php:118 +msgid "\"Superblock\" Settings" +msgstr "Superblock" + +#: ../../extend/addon/addon/superblock/superblock.php:316 +msgid "Block Completely" +msgstr "Volledig blokkeren" + +#: ../../extend/addon/addon/superblock/superblock.php:361 +msgid "superblock settings updated" +msgstr "Superblock-instellingen bijgewerkt" + +#: ../../extend/addon/addon/testdrive/testdrive.php:104 +#, php-format +msgid "Your account on %s will expire in a few days." +msgstr "Jouw account op %s verloopt over een paar dagen. " + +#: ../../extend/addon/addon/testdrive/testdrive.php:105 +msgid "Your $Productname test account is about to expire." +msgstr "Jouw $Productname-testaccount staat op het punt om te verlopen." + +#: ../../extend/addon/addon/tictac/tictac.php:21 +msgid "Three Dimensional Tic-Tac-Toe" +msgstr "Driedimensionaal Boter-kaas-en-eieren" + +#: ../../extend/addon/addon/tictac/tictac.php:54 +msgid "3D Tic-Tac-Toe" +msgstr "Boter-kaas-en-eieren in 3D" + +#: ../../extend/addon/addon/tictac/tictac.php:59 +msgid "New game" +msgstr "Nieuw spel" + +#: ../../extend/addon/addon/tictac/tictac.php:60 +msgid "New game with handicap" +msgstr "Nieuw spel met handicap" + +#: ../../extend/addon/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 "Driedimensionaal Boter-kaas-en-eieren is hetzelfde als het klassieke spel, behalve dat het gelijktijdig op meerdere hoogtes wordt gespeeld." + +#: ../../extend/addon/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 "In dit geval zijn er drie hoogtes. Je wint wanneer je drie op een rij hebt op een van de drie hoogtes, van boven naar beneden of diagonaal." + +#: ../../extend/addon/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 "Het spel met een handicap schakelt de middelste positie op de middelste hoogte uit, omdat de speler die deze positie krijgt vaak een oneerlijk voordeel geniet." + +#: ../../extend/addon/addon/tictac/tictac.php:183 +msgid "You go first..." +msgstr "Jij bent eerst..." + +#: ../../extend/addon/addon/tictac/tictac.php:188 +msgid "I'm going first this time..." +msgstr "Ik ga deze keer eerst..." + +#: ../../extend/addon/addon/tictac/tictac.php:194 +msgid "You won!" +msgstr "Jij wint!" + +#: ../../extend/addon/addon/tictac/tictac.php:200 +#: ../../extend/addon/addon/tictac/tictac.php:225 +msgid "\"Cat\" game!" +msgstr "Gelijkspel!" + +#: ../../extend/addon/addon/tictac/tictac.php:223 +msgid "I won!" +msgstr "Ik win!" + +#: ../../extend/addon/addon/tour/tour.php:75 +msgid "Edit your profile and change settings." +msgstr "Jouw profiel bewerken en instellingen veranderen." + +#: ../../extend/addon/addon/tour/tour.php:76 +msgid "Click here to see activity from your connections." +msgstr "Klik hier voor een tijdlijn met berichten en overige activiteiten van jouw connecties." + +#: ../../extend/addon/addon/tour/tour.php:77 +msgid "Click here to see your channel home." +msgstr "Klik hier voor de tijdlijn van jouw eigen kanaal." + +#: ../../extend/addon/addon/tour/tour.php:78 +msgid "You can access your private messages from here." +msgstr "Hiermee krijg je toegang tot jouw privéberichten." + +#: ../../extend/addon/addon/tour/tour.php:79 +msgid "Create new events here." +msgstr "Nieuwe gebeurtenissen kan je hier aanmaken." + +#: ../../extend/addon/addon/tour/tour.php:80 +msgid "" +"You can accept new connections and change permissions for existing ones " +"here. You can also e.g. create groups of contacts." +msgstr "Hier kan je nieuwe connecties accepteren en instellingen van bestaande connecties wijzigen. Je kan hier bijv. ook privacygroepen aanmaken." + +#: ../../extend/addon/addon/tour/tour.php:81 +msgid "System notifications will arrive here" +msgstr "Systeemnotificaties komen hier tevoorschijn" + +#: ../../extend/addon/addon/tour/tour.php:82 +msgid "Search for content and users" +msgstr "Zoek hier naar tekst in berichten of naar andere kanalen." + +#: ../../extend/addon/addon/tour/tour.php:83 +msgid "Browse for new contacts" +msgstr "Blader hier in een gids met kanalen, die je toe kan voegen als connectie." + +#: ../../extend/addon/addon/tour/tour.php:84 +msgid "Launch installed apps" +msgstr "Open (op deze hub) geïnstalleerde apps." + +#: ../../extend/addon/addon/tour/tour.php:85 +msgid "Looking for help? Click here." +msgstr "Zoek je hulp? Klik dan hier." + +#: ../../extend/addon/addon/tour/tour.php:86 +msgid "" +"New events have occurred in your network. Click here to see what has " +"happened!" +msgstr "Er is iets nieuws gebeurd in jouw netwerk. Klik hier om te zien wat precies." + +#: ../../extend/addon/addon/tour/tour.php:87 +msgid "You have received a new private message. Click here to see from who!" +msgstr "Je hebt een nieuw privébericht ontvangen. Klik hier om te zien van wie." + +#: ../../extend/addon/addon/tour/tour.php:88 +msgid "There are events this week. Click here too see which!" +msgstr "Er vinden deze week gebeurtenissen plaats. Klik hier om te zien welke dit zijn." + +#: ../../extend/addon/addon/tour/tour.php:89 +msgid "You have received a new introduction. Click here to see who!" +msgstr "Je hebt een nieuw connectieverzoek ontvangen. Klik hier om te kijken van wie." + +#: ../../extend/addon/addon/tour/tour.php:90 +msgid "" +"There is a new system notification. Click here to see what has happened!" +msgstr "Er is een nieuwe systeemnotificatie. Klik hier om te zien wat er aan de hand is." + +#: ../../extend/addon/addon/tour/tour.php:93 +msgid "Click here to share text, images, videos and sound." +msgstr "Klik hier om tekst, afbeeldingen, video en audio te delen." + +#: ../../extend/addon/addon/tour/tour.php:94 +msgid "You can write an optional title for your update (good for long posts)." +msgstr "Je kan optioneel een titel voor je nieuwe bericht verzinnen. Vooral goed voor langere berichten." + +#: ../../extend/addon/addon/tour/tour.php:95 +msgid "Entering some categories here makes it easier to find your post later." +msgstr "Het invullen van enkele categorieën, maakt het later terugvinden van je berichten gemakkelijker. Dit is niet verplicht." + +#: ../../extend/addon/addon/tour/tour.php:96 +msgid "Share photos, links, location, etc." +msgstr "Deel foto's, links, locaties, enz." + +#: ../../extend/addon/addon/tour/tour.php:97 +msgid "" +"Only want to share content for a while? Make it expire at a certain date." +msgstr "Wil je alleen iets tot een bepaald moment delen? Dan kan je het hiermee op een bepaalde datum en tijd laten verlopen." + +#: ../../extend/addon/addon/tour/tour.php:98 +msgid "You can password protect content." +msgstr "Je kan met een wachtwoord gegevens beveiligen." + +#: ../../extend/addon/addon/tour/tour.php:99 +msgid "Choose who you share with." +msgstr "Kies met wie je dit wil delen. " + +#: ../../extend/addon/addon/tour/tour.php:101 +msgid "Click here when you are done." +msgstr "Klik hier wanneer je klaar bent." + +#: ../../extend/addon/addon/tour/tour.php:104 +msgid "Adjust from which channels posts should be displayed." +msgstr "Aanpassen van welke kanalen berichten moeten worden getoond. " + +#: ../../extend/addon/addon/tour/tour.php:105 +msgid "Only show posts from channels in the specified privacy group." +msgstr "Toon alleen berichten van kanalen in de hier gekozen privacygroep." + +#: ../../extend/addon/addon/tour/tour.php:109 +msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)." +msgstr "Vind gemakkelijk berichten met tags (trefwoorden die beginnen met een \"#\")." + +#: ../../extend/addon/addon/tour/tour.php:110 +msgid "Easily find posts in given category." +msgstr "Vind gemakkelijk berichten in een bepaalde categorie." + +#: ../../extend/addon/addon/tour/tour.php:111 +msgid "Easily find posts by date." +msgstr "Vind gemakkelijk berichten op datum." + +#: ../../extend/addon/addon/tour/tour.php:112 +msgid "" +"Suggested users who have volounteered to be shown as suggestions, and who we" +" think you might find interesting." +msgstr "Voorstellen voor kanalen die wellicht interessant voor jou zijn en hier ook vrijwillig voor hebben gekozen." + +#: ../../extend/addon/addon/tour/tour.php:113 +msgid "Here you see channels you have connected to." +msgstr "Hier kan je zien met welke kanalen je bent verbonden (connecties)." + +#: ../../extend/addon/addon/tour/tour.php:114 +msgid "Save your search so you can repeat it at a later date." +msgstr "Sla jouw zoekopdracht op, zodat je het later opnieuw kan gebruiken." + +#: ../../extend/addon/addon/tour/tour.php:117 +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 "Wanneer je dit pictogram ziet, kan je er van uitgaan dat de afzender is wie hij/zij beweert te zijn. Het is niet altijd mogelijk om de afzender te verifiëren, waardoor het pictogram soms ontbreekt. Dit is meestal geen reden voor ongerustheid." + +#: ../../extend/addon/addon/tour/tour.php:118 +msgid "" +"Danger! It seems someone tried to forge a message! This message is not " +"necessarily from who it says it is from!" +msgstr "Gevaar! Het lijkt er op dat iemand een bericht heeft proberen te vervalsen! Dit bericht is mogelijk niet afkomstig van de vermelde afzender!" + +#: ../../extend/addon/addon/tour/tour.php:125 +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 "Welkom op Hubzilla! Wil jij een rondleiding hebben langs de gebruikersinterface?</p> <p>Je kan dit op elk moment pauzeren en weer hervatten door de pagina te herladen of naar een andere pagina te gaan.</p><p>Je kan ook vooruitgaan met behulp van de entertoets." + +#: ../../extend/addon/addon/twitter/twitter.php:99 +msgid "Post to Twitter" +msgstr "Doorplaatsen naar Twitter" + +#: ../../extend/addon/addon/twitter/twitter.php:154 +msgid "Twitter settings updated." +msgstr "Twitter-instellingen bijgewerkt." + +#: ../../extend/addon/addon/twitter/twitter.php:183 +msgid "" +"No consumer key pair for Twitter found. Please contact your site " +"administrator." +msgstr "Geen consumerkeys voor Twitter gevonden. Neem contact op met jouw hubbeheerder." + +#: ../../extend/addon/addon/twitter/twitter.php:205 +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 "De Twitter-plugin is op deze Hubzilla-hub ingeschakeld, maar je hebt nog niet jouw Hubzilla-kanaal met jouw Twitter-account gekoppeld. Om dit te doen klik je op de knop hieronder om een PIN-code van Twitter te krijgen. Deze dien je te kopiëren en in het invoegveld beneden te plakken. Vervolgens klik je op Opslaan. Alleen jouw <strong>openbare</strong> berichten kunnen op Twitter worden geplaatst." + +#: ../../extend/addon/addon/twitter/twitter.php:207 +msgid "Log in with Twitter" +msgstr "Op Twitter inloggen" + +#: ../../extend/addon/addon/twitter/twitter.php:210 +msgid "Copy the PIN from Twitter here" +msgstr "Plak of type de PIN-code hier" + +#: ../../extend/addon/addon/twitter/twitter.php:237 +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>Opmerking</strong>: In verband met jouw privacyinstellingen (<em>wanneer jouw kanaalprofiel voor onbekenden is verborgen</em>) leidt de profiellink die mogelijk in jouw naar Twitter doorgestuurde openbare berichten staat, naar een lege pagina met de melding dat toegang tot jouw kanaalprofiel is beperkt." + +#: ../../extend/addon/addon/twitter/twitter.php:242 +msgid "Allow posting to Twitter" +msgstr "Doorplaatsen naar Twitter toestaan" + +#: ../../extend/addon/addon/twitter/twitter.php:242 +msgid "" +"If enabled your public postings can be posted to the associated Twitter " +"account" +msgstr "Wanneer dit is ingeschakeld kunnen jouw <strong>openbare</strong> berichten naar het gekoppelde Twitter-account worden doorgeplaatst" + +#: ../../extend/addon/addon/twitter/twitter.php:246 +msgid "Send public postings to Twitter by default" +msgstr "Standaard doorplaatsen naar Twitter" + +#: ../../extend/addon/addon/twitter/twitter.php:246 +msgid "" +"If enabled your public postings will be posted to the associated Twitter " +"account by default" +msgstr "Wanneer dit is ingeschakeld worden al jouw <strong>openbare</strong> berichten standaard naar het gekoppelde Twitter-account doorgeplaatst" + +#: ../../extend/addon/addon/twitter/twitter.php:264 +msgid "Twitter Post Settings" +msgstr "Doorplaatsen naar Twitter" + +#: ../../extend/addon/addon/twitter/twitter.php:773 +#: ../../extend/addon/addon/rendezvous/rendezvous.php:95 +msgid "Submit Settings" +msgstr "Instellingen toepassen" + +#: ../../extend/addon/addon/upload_limits/upload_limits.php:25 +msgid "Show Upload Limits" +msgstr "Uploadlimieten tonen" + +#: ../../extend/addon/addon/upload_limits/upload_limits.php:27 +msgid "Hubzilla configured maximum size: " +msgstr "Op Hubzilla configureerde maximale grootte: " + +#: ../../extend/addon/addon/upload_limits/upload_limits.php:28 +msgid "PHP upload_max_filesize: " +msgstr "PHP upload_max_filesize: " + +#: ../../extend/addon/addon/upload_limits/upload_limits.php:29 +msgid "PHP post_max_size (must be larger than upload_max_filesize): " +msgstr "PHP post_max_size (moet hoger zijn dan upload_max_filesize): " + +#: ../../extend/addon/addon/visage/visage.php:93 +msgid "Recent Channel/Profile Viewers" +msgstr "Recente bezoekers van jouw kanaal/profiel" + +#: ../../extend/addon/addon/visage/visage.php:98 +msgid "This plugin/addon has not been configured." +msgstr "Deze plugin is niet geconfigureerd. " + +#: ../../extend/addon/addon/visage/visage.php:99 +#, php-format +msgid "Please visit the Visage settings on %s" +msgstr "Bezoek de Visage-instellingen op %s" + +#: ../../extend/addon/addon/visage/visage.php:99 +msgid "your feature settings page" +msgstr "Jouw plugin-instellingen" + +#: ../../extend/addon/addon/visage/visage.php:112 +msgid "No entries." +msgstr "Niets aanwezig." + +#: ../../extend/addon/addon/visage/visage.php:166 +msgid "Enable Visage Visitor Logging" +msgstr "Visage inschakelen " + +#: ../../extend/addon/addon/visage/visage.php:170 +msgid "Visage Settings" +msgstr "Visage" + +#: ../../extend/addon/addon/wholikesme/wholikesme.php:29 +msgid "Who likes me?" +msgstr "Wie vindt mij leuk?" + +#: ../../extend/addon/addon/wppost/wppost.php:45 +msgid "Post to WordPress" +msgstr "Doorplaatsen naar WordPress" + +#: ../../extend/addon/addon/wppost/wppost.php:82 +msgid "Enable WordPress Post Plugin" +msgstr "Doorplaatsen naar WordPress inschakelen" + +#: ../../extend/addon/addon/wppost/wppost.php:86 +msgid "WordPress username" +msgstr "Gebruikersnaam WordPress" + +#: ../../extend/addon/addon/wppost/wppost.php:90 +msgid "WordPress password" +msgstr "Wachtwoord WordPress" + +#: ../../extend/addon/addon/wppost/wppost.php:94 +msgid "WordPress API URL" +msgstr "API-URL WordPress" + +#: ../../extend/addon/addon/wppost/wppost.php:95 +msgid "Typically https://your-blog.tld/xmlrpc.php" +msgstr "Meestal https://jouw-blog.tld/xmlrpc.php" + +#: ../../extend/addon/addon/wppost/wppost.php:98 +msgid "WordPress blogid" +msgstr "Blog ID WordPress" + +#: ../../extend/addon/addon/wppost/wppost.php:99 +msgid "For multi-user sites such as wordpress.com, otherwise leave blank" +msgstr "Voor websites met meerdere gebruikers, zoals wordpress.com. Anders leeg laten." + +#: ../../extend/addon/addon/wppost/wppost.php:105 +msgid "Post to WordPress by default" +msgstr "Standaard naar WordPress doorplaatsen" + +#: ../../extend/addon/addon/wppost/wppost.php:109 +msgid "Forward comments (requires hubzilla_wp plugin)" +msgstr "Reacties doorplaatsen (Hubzilla_WP-plugin vereist)" + +#: ../../extend/addon/addon/wppost/wppost.php:113 +msgid "WordPress Post Settings" +msgstr "Doorplaatsen naar WordPress" + +#: ../../extend/addon/addon/wppost/wppost.php:129 +msgid "Wordpress Settings saved." +msgstr "WordPress-instellingen opgeslagen." + +#: ../../extend/addon/addon/xmpp/xmpp.php:31 +msgid "XMPP settings updated." +msgstr "XMPP-instellingen bijgewerkt." + +#: ../../extend/addon/addon/xmpp/xmpp.php:53 +msgid "Enable Chat" +msgstr "Chatten inschakelen" + +#: ../../extend/addon/addon/xmpp/xmpp.php:58 +msgid "Individual credentials" +msgstr "Individuele credentials" + +#: ../../extend/addon/addon/xmpp/xmpp.php:64 +msgid "Jabber BOSH server" +msgstr "BOSH-server van Jabber" + +#: ../../extend/addon/addon/xmpp/xmpp.php:69 +msgid "XMPP Settings" +msgstr "XMPP" + +#: ../../extend/addon/addon/xmpp/xmpp.php:92 +msgid "Jabber BOSH host" +msgstr "BOSH-host van Jabber" + +#: ../../extend/addon/addon/xmpp/xmpp.php:93 +msgid "Use central userbase" +msgstr "Gebruik een centrale gebruikersgroep" + +#: ../../extend/addon/addon/xmpp/xmpp.php:93 +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 "Wanneer ingeschakeld worden leden automatisch op een Ejabberd-server ingelogd. Deze dient wel op deze machine te zijn geïnstalleerd met zgn. 'synchronized credentials' via het 'auth_ejabberd.php'-script." + +#: ../../extend/addon/addon/cdav/include/widgets.php:37 +msgid "Select Channel" +msgstr "Kies een kanaal" + +#: ../../extend/addon/addon/cdav/include/widgets.php:42 +msgid "Read-write" +msgstr "Lees- en schrijfrechten" + +#: ../../extend/addon/addon/cdav/include/widgets.php:43 +msgid "Read-only" +msgstr "Alleen leesrechten" + +#: ../../extend/addon/addon/cdav/include/widgets.php:116 +msgid "My Calendars" +msgstr "Mijn agenda's" + +#: ../../extend/addon/addon/cdav/include/widgets.php:118 +msgid "Shared Calendars" +msgstr "Gedeelde agenda's" + +#: ../../extend/addon/addon/cdav/include/widgets.php:122 +msgid "Share this calendar" +msgstr "Agenda delen" + +#: ../../extend/addon/addon/cdav/include/widgets.php:124 +msgid "Calendar name and color" +msgstr "Naam en kleur agenda" + +#: ../../extend/addon/addon/cdav/include/widgets.php:126 +msgid "Create new calendar" +msgstr "Nieuwe agenda aanmaken" + +#: ../../extend/addon/addon/cdav/include/widgets.php:128 +msgid "Calendar Name" +msgstr "Naam agenda" + +#: ../../extend/addon/addon/cdav/include/widgets.php:129 +msgid "Calendar Tools" +msgstr "Agenda-hulpmiddelen" + +#: ../../extend/addon/addon/cdav/include/widgets.php:130 +msgid "Import calendar" +msgstr "Importeren" + +#: ../../extend/addon/addon/cdav/include/widgets.php:131 +msgid "Select a calendar to import to" +msgstr "Kies een agenda om te importeren" + +#: ../../extend/addon/addon/cdav/include/widgets.php:158 +msgid "Addressbooks" +msgstr "Adresboeken" + +#: ../../extend/addon/addon/cdav/include/widgets.php:160 +msgid "Addressbook name" +msgstr "Naam adresboek" + +#: ../../extend/addon/addon/cdav/include/widgets.php:162 +msgid "Create new addressbook" +msgstr "Nieuw adresboek aanmaken" + +#: ../../extend/addon/addon/cdav/include/widgets.php:163 +msgid "Addressbook Name" +msgstr "Naam adresboek" + +#: ../../extend/addon/addon/cdav/include/widgets.php:165 +msgid "Addressbook Tools" +msgstr "Adresboek-hulpmiddelen" + +#: ../../extend/addon/addon/cdav/include/widgets.php:166 +msgid "Import addressbook" +msgstr "Importeren" + +#: ../../extend/addon/addon/cdav/include/widgets.php:167 +msgid "Select an addressbook to import to" +msgstr "Kies een adresboek om te importeren" + +#: ../../extend/addon/addon/cdav/cdav.php:36 +msgid "Errors encountered creating database table: " +msgstr "Fouten opgetreden tijdens aanmaken databasetabel: " + +#: ../../extend/addon/addon/cdav/cdav.php:197 +msgid "Default Calendar" +msgstr "Standaard agenda" + +#: ../../extend/addon/addon/cdav/cdav.php:206 +msgid "Default Addressbook" +msgstr "Standaard adresboek" + +#: ../../extend/addon/addon/cdav/cdav.php:215 +msgid "CalDAV/CardDAV Settings saved." +msgstr "CalDAV/CardDAV-instellingen opgeslagen." + +#: ../../extend/addon/addon/cdav/cdav.php:234 +msgid "Enable CalDAV/CardDAV Server for this channel" +msgstr "CalDAV/CardDAV-server voor dit kanaal inschakelen" + +#: ../../extend/addon/addon/cdav/cdav.php:237 +#, php-format +msgid "Your CalDAV resources are located at %s " +msgstr "Jouw CalDAV-URL is %s " + +#: ../../extend/addon/addon/cdav/cdav.php:240 +#, php-format +msgid "Your CardDAV resources are located at %s " +msgstr "Jouw CardDAV-URL is %s " + +#: ../../extend/addon/addon/cdav/cdav.php:246 +msgid "CalDAV/CardDAV Settings" +msgstr "CalDAV/CardDAV" + +#: ../../extend/addon/addon/cdav/cdav.php:270 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145 +msgid "Mobile" +msgstr "Mobiel" + +#: ../../extend/addon/addon/cdav/cdav.php:271 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146 ../../include/nav.php:88 +msgid "Home" +msgstr "Thuis" + +#: ../../extend/addon/addon/cdav/cdav.php:272 +msgid "Home, Voice" +msgstr "Thuis, spraak" + +#: ../../extend/addon/addon/cdav/cdav.php:273 +msgid "Home, Fax" +msgstr "Thuis, fax" + +#: ../../extend/addon/addon/cdav/cdav.php:274 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147 +msgid "Work" +msgstr "Werk" + +#: ../../extend/addon/addon/cdav/cdav.php:275 +msgid "Work, Voice" +msgstr "Werk, spraak" + +#: ../../extend/addon/addon/cdav/cdav.php:276 +msgid "Work, Fax" +msgstr "Werk, fax" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 +msgid "INVALID EVENT DISMISSED!" +msgstr "ONGELDIGE GEBEURTENIS VERWIJDERD!" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 +msgid "Summary: " +msgstr "Samenvatting: " + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 +msgid "Date: " +msgstr "Datum: " + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:747 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:754 +msgid "Reason: " +msgstr "Reden: " + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 +msgid "INVALID CARD DISMISSED!" +msgstr "ONGELDIGE CONTACTKAART VERWIJDERD!" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 +msgid "Name: " +msgstr "Naam: " + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:770 +msgid "" +"You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV " +"Settings before you can use it." +msgstr "Voordat je dit kunt gebruiken dien je eerst deze plugin onder 'Plugin-instellingen > CalDAV/CardDAV' in te schakelen." + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 +msgid "Example: YYYY-MM-DD HH:mm" +msgstr "Bijvoorbeeld: JJJJ-MM-DD UU:mm" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 +msgid "End date and time" +msgstr "Einddatum en -tijd" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:852 +msgid "List month" +msgstr "Maand tonen" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:853 +msgid "List week" +msgstr "Week tonen" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:854 +msgid "List day" +msgstr "Dag tonen" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:861 +msgid "More" +msgstr "Meer" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:862 +msgid "Less" +msgstr "Minder" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:863 +msgid "Select calendar" +msgstr "Kies agenda" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:865 +msgid "Delete all" +msgstr "Alles verwijderen" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:867 +msgid "Sorry! Editing of recurrent events is not yet implemented." +msgstr "Excuses! Bewerken van herhalende gebeurtenissen is nog niet geïmplementeerd." + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137 +msgid "Organisation" +msgstr "Organisatie" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138 +#: ../../include/page_widgets.php:46 +msgid "Title" +msgstr "Titel" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139 +msgid "Phone" +msgstr "Telefoon" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141 +msgid "Instant messenger" +msgstr "Instant messenger" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142 +msgid "Website" +msgstr "Website" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144 +msgid "Note" +msgstr "Opmerking" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155 +msgid "P.O. Box" +msgstr "Postbus" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156 +msgid "Additional" +msgstr "Extra" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157 +msgid "Street" +msgstr "Straat en huisnummer" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1158 +msgid "Locality" +msgstr "Plaats" + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1159 +msgid "Region" +msgstr "Provincie/staat/regio/enz." + +#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1160 +msgid "ZIP Code" +msgstr "Postcode" + +#: ../../extend/addon/addon/chess/chess.php:276 +#: ../../extend/addon/addon/chess/chess.php:430 +msgid "Invalid game." +msgstr "Ongeldig spel." + +#: ../../extend/addon/addon/chess/chess.php:282 +#: ../../extend/addon/addon/chess/chess.php:436 +msgid "You are not a player in this game." +msgstr "Jij doet niet aan dit speel mee." + +#: ../../extend/addon/addon/chess/chess.php:315 +msgid "You must be a local channel to create a game." +msgstr "Je moet een lokaal kanaal zijn om een spel aan te maken." + +#: ../../extend/addon/addon/chess/chess.php:333 +msgid "You must select one opponent that is not yourself." +msgstr "Je moet één tegenstander uitkiezen, maar niet jezelf." + +#: ../../extend/addon/addon/chess/chess.php:336 +msgid "Creating new game..." +msgstr "Nieuw spel wordt aangemaakt..." + +#: ../../extend/addon/addon/chess/chess.php:342 +msgid "You must select white or black." +msgstr "Je moet wit of zwart kiezen." + +#: ../../extend/addon/addon/chess/chess.php:349 +msgid "Error creating new game." +msgstr "Fout tijdens aanmaken nieuw spel." + +#: ../../extend/addon/addon/chess/chess.php:379 ../../include/channel.php:816 +msgid "Requested channel is not available." +msgstr "Opgevraagd kanaal is niet beschikbaar." + +#: ../../extend/addon/addon/chess/chess.php:392 +msgid "You must select a local channel /chess/channelname" +msgstr "Je moet een lokaal kanaal kiezen: .../chess/kanaalnaam" + +#: ../../extend/addon/addon/chess/chess.php:920 +msgid "Enable notifications" +msgstr "Notificaties inschakelen" + +#: ../../extend/addon/addon/likebanner/likebanner.php:51 +msgid "Your Webbie:" +msgstr "Jouw kanaaladres:" + +#: ../../extend/addon/addon/likebanner/likebanner.php:54 +msgid "Fontsize (px):" +msgstr "Tekengrootte (px):" + +#: ../../extend/addon/addon/likebanner/likebanner.php:68 +msgid "Link:" +msgstr "Link:" + +#: ../../extend/addon/addon/likebanner/likebanner.php:70 +msgid "Like us on Hubzilla" +msgstr "Like ons op Hubzilla" + +#: ../../extend/addon/addon/likebanner/likebanner.php:72 +msgid "Embed:" +msgstr "Insluiten (embed):" + +#: ../../extend/addon/addon/openid/Mod_Id.php:85 +#: ../../include/selectors.php:49 ../../include/selectors.php:66 +msgid "Male" +msgstr "Man" + +#: ../../extend/addon/addon/openid/Mod_Id.php:87 +#: ../../include/selectors.php:49 ../../include/selectors.php:66 +msgid "Female" +msgstr "Vrouw" + +#: ../../extend/addon/addon/openid/Mod_Openid.php:30 +msgid "OpenID protocol error. No ID returned." +msgstr "OpenID-protocolfout. Geen ID terugontvangen." + +#: ../../extend/addon/addon/openid/Mod_Openid.php:193 +#: ../../include/auth.php:286 +msgid "Login failed." +msgstr "Inloggen mislukt." + +#: ../../extend/addon/addon/openid/MysqlProvider.php:52 +msgid "First Name" +msgstr "Voornaam" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:53 +msgid "Last Name" +msgstr "Achternaam" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:55 +msgid "Full Name" +msgstr "Volledige naam" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:61 +msgid "Profile Photo 16px" +msgstr "Profielfoto 16px" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:62 +msgid "Profile Photo 32px" +msgstr "Profielfoto 32px" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:63 +msgid "Profile Photo 48px" +msgstr "Profielfoto 48px" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:64 +msgid "Profile Photo 64px" +msgstr "Profielfoto 64px" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:65 +msgid "Profile Photo 80px" +msgstr "Profielfoto 80px" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:66 +msgid "Profile Photo 128px" +msgstr "Profielfoto 128px" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:67 +msgid "Timezone" +msgstr "Tijdzone" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:70 +msgid "Birth Year" +msgstr "Geboortejaar" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:71 +msgid "Birth Month" +msgstr "Geboortemaand" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:72 +msgid "Birth Day" +msgstr "Geboortedag" + +#: ../../extend/addon/addon/openid/MysqlProvider.php:73 +msgid "Birthdate" +msgstr "Geboortedatum" + +#: ../../extend/addon/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 "We hebben een probleem ontdekt tijdens het inloggen met de OpenID die je hebt verstrekt. Controleer de ID op typefouten." + +#: ../../extend/addon/addon/openid/openid.php:49 +msgid "The error message was:" +msgstr "Foutmelding was:" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44 +#, php-format +msgid "Reconnecting %d connections" +msgstr "%d connecties opnieuw aan het verbinden" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63 +msgid "Diaspora Reconnect" +msgstr "Diaspora opnieuw verbinden" + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65 +msgid "" +"Use this form to re-establish Diaspora connections which were initially made" +" from a different hub." +msgstr "Gebruik dit formulier om opnieuw met Diaspora-connecties te verbinden, die oorspronkelijk op een andere hub waren verbonden." + +#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70 +msgid "Reconnect" +msgstr "Opnieuw verbinden" + +#: ../../extend/addon/addon/mailtest/mailtest.php:19 +msgid "Send test email" +msgstr "Test-e-mail versturen" + +#: ../../extend/addon/addon/mailtest/mailtest.php:66 +msgid "Mail sent." +msgstr "E-mail verzonden." + +#: ../../extend/addon/addon/mailtest/mailtest.php:68 +msgid "Sending of mail failed." +msgstr "Verzenden van e-mail mislukt." + +#: ../../extend/addon/addon/mailtest/mailtest.php:77 +msgid "Mail Test" +msgstr "E-mailtest" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:57 +msgid "Errors encountered deleting database table " +msgstr "Fouten opgetreden tijdens verwijderen databasetabel " + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:96 +msgid "Drop tables when uninstalling?" +msgstr "Verwijder tabellen tijdens uitschakelen plugin?" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:96 +msgid "" +"If checked, the Rendezvous database tables will be deleted when the plugin " +"is uninstalled." +msgstr "Wanneer dit is aangevinkt worden de tabellen in de Rendezvous-database verwijderd wanneer de plugin wordt uitgeschakeld." + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:97 +msgid "Mapbox Access Token" +msgstr "Toegangstoken " + +#: ../../extend/addon/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 "De Mapbox-toegangstoken wordt gebruikt om kaarttegels (tiles) van Mapbox op te halen in plaats van de standaard tile-server van OpenStreetMap." + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:154 +msgid "Rendezvous" +msgstr "Rendezvous" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:159 +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 "Deze identiteit is door een ander lid verwijderd als gevolg van inactiviteit. Klik op de knop \"Nieuwe identiteit\" of herlaad de pagina om een nieuwe identiteit aan te maken. Je kan eventueel dezelfde naam gebruiken." + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:160 +msgid "Welcome to Rendezvous!" +msgstr "Welkom bij Rendezvous!" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:161 +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 "Vul je naam in om deel te nemen aan deze rendezvous. Om met het delen van je locatie met de andere leden te beginnen, klik je op de locatieknop van je webbrowser. Nadat jouw locatie is gevonden verschijnt er een rode stip en kunnen andere leden jou zien op de kaart." + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:163 +msgid "Let's meet here" +msgstr "Laten we elkaar hier ontmoeten" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:166 +msgid "New marker" +msgstr "Nieuwe markering" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:167 +msgid "Edit marker" +msgstr "Markering bewerken" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:168 +msgid "New identity" +msgstr "Nieuwe identiteit" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:169 +msgid "Delete marker" +msgstr "Markering verwijderen" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:170 +msgid "Delete member" +msgstr "Lid verwijderen" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:171 +msgid "Edit proximity alert" +msgstr "Nabijheidswaarschuwing bewerken" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:172 +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 "Een nabijheidswaarschuwing wordt actief wanneer dit lid zich binnen een bepaalde straal bevindt.<br><br>Voer het aantal meters van de straal in (0 om uit te schakelen):" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:172 +msgid "distance" +msgstr "afstand" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:183 +msgid "Add new rendezvous" +msgstr "Nieuwe rendezvous toevoegen" + +#: ../../extend/addon/addon/rendezvous/rendezvous.php:184 +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 "Maak een nieuwe rendezvous aan en deel de toegangslink met wie je wil uitnodigen voor de groep. Wie op de link klikt wordt lid van rendezvous. Zij kunnen dan de locaties zien van andere leden, markeringen aan de kaart toevoegen of hun eigen locaties met de groep delen." + +#: ../../include/Import/import_diaspora.php:16 +msgid "No username found in import file." +msgstr "Geen gebruikersnaam in het importbestand gevonden." + +#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:51 +msgid "Unable to create a unique channel address. Import failed." +msgstr "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt." + +#: ../../include/dba/dba_driver.php:187 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" +msgstr "Kan DNS-informatie voor databaseserver '%s' niet vinden" + +#: ../../include/datetime.php:147 +msgid "Birthday" +msgstr "Verjaardag of geboortedatum" + +#: ../../include/datetime.php:149 +msgid "Age: " +msgstr "Leeftijd:" + +#: ../../include/datetime.php:151 +msgid "YYYY-MM-DD or MM-DD" +msgstr "JJJJ-MM-DD of MM-DD" + +#: ../../include/datetime.php:286 ../../boot.php:2564 +msgid "never" +msgstr "nooit" + +#: ../../include/datetime.php:292 +msgid "less than a second ago" +msgstr "minder dan een seconde geleden" + +#: ../../include/datetime.php:310 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" +msgstr "%1$d %2$s geleden" + +#: ../../include/datetime.php:321 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "jaar" +msgstr[1] "jaren" + +#: ../../include/datetime.php:324 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "maand" +msgstr[1] "maanden" + +#: ../../include/datetime.php:327 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "week" +msgstr[1] "weken" + +#: ../../include/datetime.php:330 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "dag" +msgstr[1] "dagen" + +#: ../../include/datetime.php:333 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "uur" +msgstr[1] "uren" + +#: ../../include/datetime.php:336 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuut" +msgstr[1] "minuten" + +#: ../../include/datetime.php:339 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "seconde" +msgstr[1] "seconden" + +#: ../../include/datetime.php:576 +#, php-format +msgid "%1$s's birthday" +msgstr "Verjaardag van %1$s" + +#: ../../include/datetime.php:577 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "Gefeliciteerd met je verjaardag %1$s" #: ../../include/account.php:35 msgid "Not a valid email address" @@ -7975,67 +10540,46 @@ msgstr "Vul de vereiste informatie in." msgid "Failed to store account information." msgstr "Account-informatie kon niet opgeslagen worden." -#: ../../include/account.php:258 +#: ../../include/account.php:263 #, php-format msgid "Registration confirmation for %s" msgstr "Registratiebevestiging voor %s" -#: ../../include/account.php:324 +#: ../../include/account.php:330 #, php-format msgid "Registration request at %s" msgstr "Registratiebevestiging voor %s" -#: ../../include/account.php:326 ../../include/account.php:353 -#: ../../include/account.php:413 ../../include/network.php:1937 -msgid "Administrator" -msgstr "Beheerder" - -#: ../../include/account.php:348 +#: ../../include/account.php:352 msgid "your registration password" msgstr "jouw registratiewachtwoord" -#: ../../include/account.php:351 ../../include/account.php:411 +#: ../../include/account.php:358 ../../include/account.php:420 #, php-format msgid "Registration details for %s" msgstr "Registratiegegevens voor %s" -#: ../../include/account.php:423 +#: ../../include/account.php:431 msgid "Account approved." msgstr "Account goedgekeurd" -#: ../../include/account.php:463 +#: ../../include/account.php:471 #, php-format msgid "Registration revoked for %s" msgstr "Registratie ingetrokken voor %s" -#: ../../include/account.php:748 ../../include/account.php:750 +#: ../../include/account.php:756 ../../include/account.php:758 msgid "Click here to upgrade." msgstr "Klik hier om te upgraden." -#: ../../include/account.php:756 +#: ../../include/account.php:764 msgid "This action exceeds the limits set by your subscription plan." msgstr "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden." -#: ../../include/account.php:761 +#: ../../include/account.php:769 msgid "This action is not available under your subscription plan." msgstr "Deze handeling is niet mogelijk met jouw abonnement." -#: ../../include/message.php:20 -msgid "No recipient provided." -msgstr "Geen ontvanger opgegeven." - -#: ../../include/message.php:25 -msgid "[no subject]" -msgstr "[geen onderwerp]" - -#: ../../include/message.php:45 -msgid "Unable to determine sender." -msgstr "Afzender kan niet bepaald worden." - -#: ../../include/message.php:222 -msgid "Stored post could not be verified." -msgstr "Opgeslagen bericht kon niet worden geverifieerd." - #: ../../include/selectors.php:30 msgid "Frequently" msgstr "Regelmatig" @@ -8060,14 +10604,6 @@ msgstr "Wekelijks" msgid "Monthly" msgstr "Maandelijks" -#: ../../include/selectors.php:49 ../../include/selectors.php:66 -msgid "Male" -msgstr "Man" - -#: ../../include/selectors.php:49 ../../include/selectors.php:66 -msgid "Female" -msgstr "Vrouw" - #: ../../include/selectors.php:49 msgid "Currently Male" msgstr "Momenteel man" @@ -8321,192 +10857,115 @@ msgstr "Niet in staat om aangemaakte identiteit te vinden" msgid "Default Profile" msgstr "Standaardprofiel" -#: ../../include/channel.php:813 -msgid "Requested channel is not available." -msgstr "Opgevraagd kanaal is niet beschikbaar." - -#: ../../include/channel.php:960 +#: ../../include/channel.php:962 msgid "Create New Profile" msgstr "Nieuw profiel aanmaken" -#: ../../include/channel.php:963 ../../include/nav.php:93 -msgid "Edit Profile" -msgstr "Profiel bewerken" - -#: ../../include/channel.php:980 +#: ../../include/channel.php:982 msgid "Visible to everybody" msgstr "Voor iedereen zichtbaar" -#: ../../include/channel.php:1053 ../../include/channel.php:1166 +#: ../../include/channel.php:1055 ../../include/channel.php:1174 msgid "Gender:" msgstr "Geslacht:" -#: ../../include/channel.php:1054 ../../include/channel.php:1210 -msgid "Status:" -msgstr "Status:" - -#: ../../include/channel.php:1055 ../../include/channel.php:1221 +#: ../../include/channel.php:1057 ../../include/channel.php:1229 msgid "Homepage:" msgstr "Homepagina:" -#: ../../include/channel.php:1056 +#: ../../include/channel.php:1058 msgid "Online Now" msgstr "Nu online" -#: ../../include/channel.php:1171 +#: ../../include/channel.php:1179 msgid "Like this channel" msgstr "Vind dit kanaal leuk" -#: ../../include/channel.php:1195 +#: ../../include/channel.php:1203 msgid "j F, Y" msgstr "F j Y" -#: ../../include/channel.php:1196 +#: ../../include/channel.php:1204 msgid "j F" msgstr "F j" -#: ../../include/channel.php:1203 +#: ../../include/channel.php:1211 msgid "Birthday:" msgstr "Geboortedatum:" -#: ../../include/channel.php:1216 +#: ../../include/channel.php:1224 #, php-format msgid "for %1$d %2$s" msgstr "voor %1$d %2$s" -#: ../../include/channel.php:1219 +#: ../../include/channel.php:1227 msgid "Sexual Preference:" msgstr "Seksuele voorkeur:" -#: ../../include/channel.php:1225 +#: ../../include/channel.php:1233 msgid "Tags:" msgstr "Tags:" -#: ../../include/channel.php:1227 +#: ../../include/channel.php:1235 msgid "Political Views:" msgstr "Politieke overtuigingen:" -#: ../../include/channel.php:1229 +#: ../../include/channel.php:1237 msgid "Religion:" msgstr "Religie:" -#: ../../include/channel.php:1233 +#: ../../include/channel.php:1241 msgid "Hobbies/Interests:" msgstr "Hobby's/interesses:" -#: ../../include/channel.php:1235 +#: ../../include/channel.php:1243 msgid "Likes:" msgstr "Houdt van:" -#: ../../include/channel.php:1237 +#: ../../include/channel.php:1245 msgid "Dislikes:" msgstr "Houdt niet van:" -#: ../../include/channel.php:1239 +#: ../../include/channel.php:1247 msgid "Contact information and Social Networks:" msgstr "Contactinformatie en sociale netwerken:" -#: ../../include/channel.php:1241 +#: ../../include/channel.php:1249 msgid "My other channels:" msgstr "Mijn andere kanalen" -#: ../../include/channel.php:1243 +#: ../../include/channel.php:1251 msgid "Musical interests:" msgstr "Muzikale interesses:" -#: ../../include/channel.php:1245 +#: ../../include/channel.php:1253 msgid "Books, literature:" msgstr "Boeken, literatuur:" -#: ../../include/channel.php:1247 +#: ../../include/channel.php:1255 msgid "Television:" msgstr "Televisie:" -#: ../../include/channel.php:1249 +#: ../../include/channel.php:1257 msgid "Film/dance/culture/entertainment:" msgstr "Films/dansen/cultuur/vermaak:" -#: ../../include/channel.php:1251 +#: ../../include/channel.php:1259 msgid "Love/Romance:" msgstr "Liefde/romantiek:" -#: ../../include/channel.php:1253 +#: ../../include/channel.php:1261 msgid "Work/employment:" msgstr "Werk/beroep:" -#: ../../include/channel.php:1255 +#: ../../include/channel.php:1263 msgid "School/education:" msgstr "School/opleiding:" -#: ../../include/channel.php:1276 +#: ../../include/channel.php:1284 msgid "Like this thing" msgstr "Vind dit ding leuk" -#: ../../include/acl_selectors.php:169 -msgid "Who can see this?" -msgstr "Wie kan dit zien?" - -#: ../../include/acl_selectors.php:170 -msgid "Custom selection" -msgstr "Handmatige selectie" - -#: ../../include/acl_selectors.php:171 -msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" -" the scope of \"Show\"." -msgstr "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"." - -#: ../../include/acl_selectors.php:172 -msgid "Show" -msgstr "Tonen" - -#: ../../include/acl_selectors.php:173 -msgid "Don't show" -msgstr "Niet tonen" - -#: ../../include/acl_selectors.php:207 -#, 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 "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien." - -#: ../../include/bookmarks.php:35 -#, php-format -msgid "%1$s's bookmarks" -msgstr "Bladwijzers van %1$s" - -#: ../../include/group.php:26 -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 "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken." - -#: ../../include/group.php:248 -msgid "Add new connections to this privacy group" -msgstr "Voeg nieuwe connecties aan deze privacygroep toe" - -#: ../../include/group.php:289 -msgid "edit" -msgstr "bewerken" - -#: ../../include/group.php:312 -msgid "Edit group" -msgstr "Privacygroep bewerken" - -#: ../../include/group.php:313 -msgid "Add privacy group" -msgstr "Privacygroep toevoegen" - -#: ../../include/group.php:314 -msgid "Channels not in any privacy group" -msgstr "Kanalen die zich in geen enkele privacygroep bevinden" - -#: ../../include/group.php:316 ../../include/widgets.php:284 -msgid "add" -msgstr "toevoegen" - #: ../../include/connections.php:95 msgid "New window" msgstr "Nieuw venster" @@ -8520,19 +10979,23 @@ msgstr "Open de geselecteerde locatie in een ander venster of tab" msgid "User '%s' deleted" msgstr "Account '%s' verwijderd" -#: ../../include/page_widgets.php:7 -msgid "New Page" -msgstr "Nieuwe pagina" +#: ../../include/dir_fns.php:141 +msgid "Directory Options" +msgstr "Opties kanalengids" -#: ../../include/page_widgets.php:46 -msgid "Title" -msgstr "Titel" +#: ../../include/dir_fns.php:143 +msgid "Safe Mode" +msgstr "Veilig zoeken" -#: ../../include/wiki.php:525 ../../include/bbcode.php:619 -msgid "Different viewers will see this text differently" -msgstr "Deze tekst wordt per persoon anders weergeven." +#: ../../include/dir_fns.php:144 +msgid "Public Forums Only" +msgstr "Alleen openbare forums" -#: ../../include/nav.php:85 ../../include/nav.php:118 ../../boot.php:1738 +#: ../../include/dir_fns.php:145 +msgid "This Website Only" +msgstr "Alleen deze hub" + +#: ../../include/nav.php:85 ../../include/nav.php:118 ../../boot.php:1719 msgid "Logout" msgstr "Uitloggen" @@ -8540,10 +11003,6 @@ msgstr "Uitloggen" msgid "End this session" msgstr "Beëindig deze sessie" -#: ../../include/nav.php:88 ../../include/nav.php:149 -msgid "Home" -msgstr "Home" - #: ../../include/nav.php:88 msgid "Your posts and conversations" msgstr "Jouw kanaal" @@ -8572,7 +11031,7 @@ msgstr "Jouw bestanden" msgid "Your chatrooms" msgstr "Jouw chatkanalen" -#: ../../include/nav.php:105 ../../include/conversation.php:1715 +#: ../../include/nav.php:105 ../../include/conversation.php:1717 msgid "Bookmarks" msgstr "Bladwijzers" @@ -8585,165 +11044,578 @@ msgid "Your webpages" msgstr "Jouw webpagina's" #: ../../include/nav.php:111 -msgid "Your wiki" -msgstr "Jouw wiki" +msgid "Your wikis" +msgstr "Jouw wiki's" #: ../../include/nav.php:115 msgid "Sign in" msgstr "Inloggen" -#: ../../include/nav.php:132 -#, php-format -msgid "%s - click to logout" -msgstr "%s - klik om uit te loggen" - -#: ../../include/nav.php:135 +#: ../../include/nav.php:131 msgid "Remote authentication" msgstr "Authenticatie op afstand" -#: ../../include/nav.php:135 +#: ../../include/nav.php:131 msgid "Click to authenticate to your home hub" msgstr "Authenticeer jezelf via (bijvoorbeeld) jouw hub" -#: ../../include/nav.php:149 -msgid "Home Page" -msgstr "Homepage" +#: ../../include/nav.php:143 +msgid "Get me home" +msgstr "Terug naar mijn hub" -#: ../../include/nav.php:152 +#: ../../include/nav.php:145 +msgid "Log me out of this site" +msgstr "Uitloggen op deze hub" + +#: ../../include/nav.php:150 msgid "Create an account" msgstr "Maak een account aan" -#: ../../include/nav.php:164 +#: ../../include/nav.php:162 msgid "Help and documentation" msgstr "Hulp en documentatie" -#: ../../include/nav.php:168 +#: ../../include/nav.php:166 msgid "Applications, utilities, links, games" msgstr "Apps" -#: ../../include/nav.php:170 +#: ../../include/nav.php:168 msgid "Search site @name, #tag, ?docs, content" msgstr "Zoek een @kanaal, doorzoek inhoud hub met tekst en #tags, of doorzoek ?documentatie " -#: ../../include/nav.php:172 +#: ../../include/nav.php:170 msgid "Channel Directory" msgstr "Kanalengids" -#: ../../include/nav.php:184 +#: ../../include/nav.php:182 msgid "Your grid" msgstr "Jouw grid" -#: ../../include/nav.php:185 +#: ../../include/nav.php:183 msgid "Mark all grid notifications seen" msgstr "Markeer alle gridnotificaties als bekeken" -#: ../../include/nav.php:187 +#: ../../include/nav.php:185 msgid "Channel home" msgstr "Jouw kanaal" -#: ../../include/nav.php:188 +#: ../../include/nav.php:186 msgid "Mark all channel notifications seen" msgstr "Alle kanaalnotificaties als gelezen markeren" -#: ../../include/nav.php:194 +#: ../../include/nav.php:192 msgid "Notices" msgstr "Notificaties" -#: ../../include/nav.php:194 +#: ../../include/nav.php:192 msgid "Notifications" msgstr "Notificaties" -#: ../../include/nav.php:195 +#: ../../include/nav.php:193 msgid "See all notifications" msgstr "Alle notificaties weergeven" -#: ../../include/nav.php:198 +#: ../../include/nav.php:196 msgid "Private mail" msgstr "Privéberichten" -#: ../../include/nav.php:199 +#: ../../include/nav.php:197 msgid "See all private messages" msgstr "Alle privéberichten weergeven" -#: ../../include/nav.php:200 +#: ../../include/nav.php:198 msgid "Mark all private messages seen" msgstr "Markeer alle privéberichten als bekeken" -#: ../../include/nav.php:201 ../../include/widgets.php:700 +#: ../../include/nav.php:199 ../../include/widgets.php:700 msgid "Inbox" msgstr "Postvak IN" -#: ../../include/nav.php:202 ../../include/widgets.php:705 +#: ../../include/nav.php:200 ../../include/widgets.php:705 msgid "Outbox" msgstr "Postvak UIT" -#: ../../include/nav.php:203 ../../include/widgets.php:710 +#: ../../include/nav.php:201 ../../include/widgets.php:710 msgid "New Message" msgstr "Nieuw bericht" -#: ../../include/nav.php:206 +#: ../../include/nav.php:204 msgid "Event Calendar" msgstr "Agenda" -#: ../../include/nav.php:207 +#: ../../include/nav.php:205 msgid "See all events" msgstr "Alle gebeurtenissen weergeven" -#: ../../include/nav.php:208 +#: ../../include/nav.php:206 msgid "Mark all events seen" msgstr "Markeer alle gebeurtenissen als bekeken" -#: ../../include/nav.php:211 +#: ../../include/nav.php:209 msgid "Manage Your Channels" msgstr "Beheer je kanalen" -#: ../../include/nav.php:213 +#: ../../include/nav.php:211 msgid "Account/Channel Settings" msgstr "Account-/kanaal-instellingen" -#: ../../include/nav.php:221 ../../include/widgets.php:1594 +#: ../../include/nav.php:219 ../../include/widgets.php:1595 msgid "Admin" msgstr "Beheer" -#: ../../include/nav.php:221 +#: ../../include/nav.php:219 msgid "Site Setup and Configuration" msgstr "Hub instellen en beheren" -#: ../../include/nav.php:252 ../../include/conversation.php:853 +#: ../../include/nav.php:250 ../../include/conversation.php:835 msgid "Loading..." msgstr "Aan het laden..." -#: ../../include/nav.php:257 +#: ../../include/nav.php:255 msgid "@name, #tag, ?doc, content" msgstr "@kanaal, #tag, inhoud, ?hulp" -#: ../../include/nav.php:258 +#: ../../include/nav.php:256 msgid "Please wait..." msgstr "Wachten aub..." -#: ../../include/bb2diaspora.php:398 +#: ../../include/features.php:58 +msgid "General Features" +msgstr "Algemene functies" + +#: ../../include/features.php:63 +msgid "Multiple Profiles" +msgstr "Meerdere profielen" + +#: ../../include/features.php:64 +msgid "Ability to create multiple profiles" +msgstr "Mogelijkheid om meerdere profielen aan te maken" + +#: ../../include/features.php:72 +msgid "Advanced Profiles" +msgstr "Geavanceerde profielen" + +#: ../../include/features.php:73 +msgid "Additional profile sections and selections" +msgstr "Extra onderdelen en keuzes voor je profiel" + +#: ../../include/features.php:81 +msgid "Profile Import/Export" +msgstr "Profiel importen/exporteren" + +#: ../../include/features.php:82 +msgid "Save and load profile details across sites/channels" +msgstr "Profielgegevens opslaan en in andere hubs/kanalen gebruiken." + +#: ../../include/features.php:90 +msgid "Web Pages" +msgstr "Webpagina's" + +#: ../../include/features.php:91 +msgid "Provide managed web pages on your channel" +msgstr "Sta beheerde webpagina's op jouw kanaal toe" + +#: ../../include/features.php:100 +msgid "Provide a wiki for your channel" +msgstr "Voeg een wiki aan jouw kanaal toe" + +#: ../../include/features.php:117 +msgid "Private Notes" +msgstr "Privé-aantekeningen" + +#: ../../include/features.php:118 +msgid "Enables a tool to store notes and reminders (note: not encrypted)" +msgstr "Een eenvoudige toepassing om aantekeningen en herinneringen in te bewaren (let op: niet versleuteld)" + +#: ../../include/features.php:126 +msgid "Navigation Channel Select" +msgstr "Kanaal kiezen in navigatiemenu" + +#: ../../include/features.php:127 +msgid "Change channels directly from within the navigation dropdown menu" +msgstr "Kies een ander kanaal direct vanuit het dropdown-menu op de navigatiebalk" + +#: ../../include/features.php:135 +msgid "Photo Location" +msgstr "Fotolocatie" + +#: ../../include/features.php:136 +msgid "If location data is available on uploaded photos, link this to a map." +msgstr "Wanneer in de geüploade foto's locatiegegevens aanwezig zijn, link dit dan aan een kaart." + +#: ../../include/features.php:144 +msgid "Access Controlled Chatrooms" +msgstr "Chatkanalen met toegangscontrole " + +#: ../../include/features.php:145 +msgid "Provide chatrooms and chat services with access control." +msgstr "Chatkanalen en chatdiensten met toegangscontrole aanbieden." + +#: ../../include/features.php:153 +msgid "Smart Birthdays" +msgstr "Slimme verjaardagen" + +#: ../../include/features.php:154 +msgid "" +"Make birthday events timezone aware in case your friends are scattered " +"across the planet." +msgstr "Maak verjaardagen bewust van tijdzones. Voor het geval dat jouw vrienden over de hele wereld verspreid zijn." + +#: ../../include/features.php:162 +msgid "Advanced Directory Search" +msgstr "Geavanceerd in de kanalengids zoeken" + +#: ../../include/features.php:163 +msgid "Allows creation of complex directory search queries" +msgstr "Gebruik complexe zoekopdrachten in de kanalengids" + +#: ../../include/features.php:171 +msgid "Advanced Theme and Layout Settings" +msgstr "Geavanceerde thema- en lay-out-instellingen" + +#: ../../include/features.php:172 +msgid "Allows fine tuning of themes and page layouts" +msgstr "Maakt het mogelijk dat thema's en pagina-lay-outs preciezer ingesteld kunnen worden " + +#: ../../include/features.php:182 +msgid "Post Composition Features" +msgstr "Functies voor het opstellen van berichten" + +#: ../../include/features.php:186 +msgid "Large Photos" +msgstr "Grote foto's" + +#: ../../include/features.php:187 +msgid "" +"Include large (1024px) photo thumbnails in posts. If not enabled, use small " +"(640px) photo thumbnails" +msgstr "Gebruik grotere foto's (1024px) in berichten. Wanneer dit is uitgeschakeld worden er kleinere foto's (640px) gebruikt." + +#: ../../include/features.php:196 +msgid "Automatically import channel content from other channels or feeds" +msgstr "Automatisch inhoud uit andere kanalen of feeds importeren." + +#: ../../include/features.php:204 +msgid "Even More Encryption" +msgstr "Extra encryptie" + +#: ../../include/features.php:205 +msgid "" +"Allow optional encryption of content end-to-end with a shared secret key" +msgstr "Sta toe dat inhoud extra end-to-end wordt versleuteld met een gedeelde geheime sleutel." + +#: ../../include/features.php:213 +msgid "Enable Voting Tools" +msgstr "Peilingen inschakelen" + +#: ../../include/features.php:214 +msgid "Provide a class of post which others can vote on" +msgstr "Maakt het mogelijk om een bericht op te stellen, waar mensen op kunnen stemmen." + +#: ../../include/features.php:222 +msgid "Disable Comments" +msgstr "Reacties uitschakelen" + +#: ../../include/features.php:223 +msgid "Provide the option to disable comments for a post" +msgstr "Maak het mogelijk dat reacties op een bericht kunnen worden uitgeschakeld" + +#: ../../include/features.php:231 +msgid "Delayed Posting" +msgstr "Berichten uitstellen" + +#: ../../include/features.php:232 +msgid "Allow posts to be published at a later date" +msgstr "Maakt het mogelijk dat berichten op een toekomstig moment gepubliceerd kunnen worden." + +#: ../../include/features.php:240 +msgid "Content Expiration" +msgstr "Inhoud laten verlopen" + +#: ../../include/features.php:241 +msgid "Remove posts/comments and/or private messages at a future time" +msgstr "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen" + +#: ../../include/features.php:249 +msgid "Suppress Duplicate Posts/Comments" +msgstr "Dubbele berichten/reacties tegenhouden" + +#: ../../include/features.php:250 +msgid "" +"Prevent posts with identical content to be published with less than two " +"minutes in between submissions." +msgstr "Voorkomt dat berichten en reacties met identieke inhoud en die binnen twee minuten zijn verstuurd, worden gepubliceerd. " + +#: ../../include/features.php:261 +msgid "Network and Stream Filtering" +msgstr "Netwerk- en streamfilter" + +#: ../../include/features.php:265 +msgid "Search by Date" +msgstr "Zoek op datum" + +#: ../../include/features.php:266 +msgid "Ability to select posts by date ranges" +msgstr "Mogelijkheid om berichten op datum te filteren " + +#: ../../include/features.php:274 ../../include/group.php:311 +msgid "Privacy Groups" +msgstr "Privacygroepen" + +#: ../../include/features.php:275 +msgid "Enable management and selection of privacy groups" +msgstr "Beheer en selectie van privacygroepen inschakelen" + +#: ../../include/features.php:283 ../../include/widgets.php:283 +msgid "Saved Searches" +msgstr "Opgeslagen zoekopdrachten" + +#: ../../include/features.php:284 +msgid "Save search terms for re-use" +msgstr "Sla zoekopdrachten op voor hergebruik" + +#: ../../include/features.php:292 +msgid "Network Personal Tab" +msgstr "Persoonlijke netwerktab" + +#: ../../include/features.php:293 +msgid "Enable tab to display only Network posts that you've interacted on" +msgstr "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had" + +#: ../../include/features.php:301 +msgid "Network New Tab" +msgstr "Nieuwe netwerktab" + +#: ../../include/features.php:302 +msgid "Enable tab to display all new Network activity" +msgstr "Laat de tab alle nieuwe netwerkactiviteit tonen" + +#: ../../include/features.php:310 +msgid "Affinity Tool" +msgstr "Verwantschapsfilter" + +#: ../../include/features.php:311 +msgid "Filter stream activity by depth of relationships" +msgstr "Filter wat je in jouw grid ziet op hoe goed je iemand kent of mag" + +#: ../../include/features.php:320 +msgid "Show friend and connection suggestions" +msgstr "Toon kanaalvoorstellen" + +#: ../../include/features.php:328 +msgid "Connection Filtering" +msgstr "Berichtenfilters" + +#: ../../include/features.php:329 +msgid "Filter incoming posts from connections based on keywords/content" +msgstr "Filter binnenkomende berichten van connecties aan de hand van trefwoorden en taal" + +#: ../../include/features.php:341 +msgid "Post/Comment Tools" +msgstr "Bericht- en reactiehulpmiddelen" + +#: ../../include/features.php:345 +msgid "Community Tagging" +msgstr "Taggen door anderen" + +#: ../../include/features.php:346 +msgid "Ability to tag existing posts" +msgstr "Geeft andere mensen de mogelijkheid om jouw (bestaande) berichten te taggen" + +#: ../../include/features.php:354 +msgid "Post Categories" +msgstr "Categorieën berichten" + +#: ../../include/features.php:355 +msgid "Add categories to your posts" +msgstr "Voeg categorieën toe aan je berichten" + +#: ../../include/features.php:363 +msgid "Emoji Reactions" +msgstr "Emoji-reacties" + +#: ../../include/features.php:364 +msgid "Add emoji reaction ability to posts" +msgstr "Emoji-reacties in berichten toestaan" + +#: ../../include/features.php:372 ../../include/contact_widgets.php:53 +#: ../../include/widgets.php:346 +msgid "Saved Folders" +msgstr "Bewaarde mappen" + +#: ../../include/features.php:373 +msgid "Ability to file posts under folders" +msgstr "Mogelijkheid om berichten in mappen op te slaan" + +#: ../../include/features.php:381 +msgid "Dislike Posts" +msgstr "Vind berichten niet leuk" + +#: ../../include/features.php:382 +msgid "Ability to dislike posts/comments" +msgstr "Mogelijkheid om berichten en reacties niet leuk te vinden" + +#: ../../include/features.php:390 +msgid "Star Posts" +msgstr "Geef berichten een ster" + +#: ../../include/features.php:391 +msgid "Ability to mark special posts with a star indicator" +msgstr "Mogelijkheid om speciale berichten met een ster te markeren" + +#: ../../include/features.php:399 +msgid "Tag Cloud" +msgstr "Tagwolk" + +#: ../../include/features.php:400 +msgid "Provide a personal tag cloud on your channel page" +msgstr "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina" + +#: ../../include/features.php:412 +msgid "Premium Channel" +msgstr "Premiumkanaal" + +#: ../../include/features.php:413 +msgid "" +"Allows you to set restrictions and terms on those that connect with your " +"channel" +msgstr "Stelt je in staat om beperkingen en voorwaarden in te stellen voor jouw kanaal" + +#: ../../include/bb2diaspora.php:404 msgid "Attachments:" msgstr "Bijlagen:" -#: ../../include/bb2diaspora.php:485 ../../include/event.php:22 +#: ../../include/bb2diaspora.php:499 ../../include/event.php:22 #: ../../include/event.php:69 msgid "l F d, Y \\@ g:i A" msgstr "l d F Y \\@ G:i" -#: ../../include/bb2diaspora.php:487 +#: ../../include/bb2diaspora.php:501 msgid "$Projectname event notification:" msgstr "Notificatie $Projectname-gebeurtenis:" -#: ../../include/bb2diaspora.php:491 ../../include/event.php:30 +#: ../../include/bb2diaspora.php:505 ../../include/event.php:30 #: ../../include/event.php:73 msgid "Starts:" msgstr "Start:" -#: ../../include/bb2diaspora.php:499 ../../include/event.php:40 +#: ../../include/bb2diaspora.php:513 ../../include/event.php:40 #: ../../include/event.php:77 msgid "Finishes:" msgstr "Einde:" +#: ../../include/bookmarks.php:35 +#, php-format +msgid "%1$s's bookmarks" +msgstr "Bladwijzers van %1$s" + +#: ../../include/help.php:31 +msgid "Help:" +msgstr "Hulp:" + +#: ../../include/help.php:63 +msgid "Not Found" +msgstr "Niet gevonden" + +#: ../../include/wiki.php:546 ../../include/bbcode.php:552 +#: ../../include/bbcode.php:683 +msgid "Different viewers will see this text differently" +msgstr "Deze tekst wordt per persoon anders weergeven." + +#: ../../include/zot.php:667 +msgid "Invalid data packet" +msgstr "Datapakket ongeldig" + +#: ../../include/zot.php:683 +msgid "Unable to verify channel signature" +msgstr "Kanaalkenmerk kon niet worden geverifieerd. " + +#: ../../include/zot.php:2325 +#, php-format +msgid "Unable to verify site signature for %s" +msgstr "Hubkenmerk voor %s kon niet worden geverifieerd" + +#: ../../include/zot.php:3723 +msgid "invalid target signature" +msgstr "ongeldig doelkenmerk" + +#: ../../include/page_widgets.php:7 +msgid "New Page" +msgstr "Nieuwe pagina" + +#: ../../include/message.php:32 +msgid "Unable to determine sender." +msgstr "Afzender kan niet bepaald worden." + +#: ../../include/message.php:69 +msgid "No recipient provided." +msgstr "Geen ontvanger opgegeven." + +#: ../../include/message.php:74 +msgid "[no subject]" +msgstr "[geen onderwerp]" + +#: ../../include/message.php:225 +msgid "Stored post could not be verified." +msgstr "Opgeslagen bericht kon niet worden geverifieerd." + +#: ../../include/contact_widgets.php:11 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "%d uitnodiging beschikbaar" +msgstr[1] "%d uitnodigingen beschikbaar" + +#: ../../include/contact_widgets.php:19 +msgid "Find Channels" +msgstr "Kanalen vinden" + +#: ../../include/contact_widgets.php:20 +msgid "Enter name or interest" +msgstr "Vul naam of interesse in" + +#: ../../include/contact_widgets.php:21 +msgid "Connect/Follow" +msgstr "Verbinden/volgen" + +#: ../../include/contact_widgets.php:22 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Voorbeeld: Robert Morgenstein, vissen" + +#: ../../include/contact_widgets.php:26 +msgid "Random Profile" +msgstr "Willekeurig profiel" + +#: ../../include/contact_widgets.php:27 +msgid "Invite Friends" +msgstr "Vrienden uitnodigen" + +#: ../../include/contact_widgets.php:29 +msgid "Advanced example: name=fred and country=iceland" +msgstr "Geavanceerd voorbeeld (Engels): name=jan en country=nederland" + +#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94 +#: ../../include/widgets.php:349 ../../include/widgets.php:468 +msgid "Everything" +msgstr "Alles" + +#: ../../include/contact_widgets.php:91 ../../include/taxonomy.php:188 +#: ../../include/taxonomy.php:270 ../../include/widgets.php:46 +#: ../../include/widgets.php:465 +msgid "Categories" +msgstr "Categorieën" + +#: ../../include/contact_widgets.php:122 +#, php-format +msgid "%d connection in common" +msgid_plural "%d connections in common" +msgstr[0] "%d gemeenschappelijke connectie" +msgstr[1] "%d gemeenschappelijke connecties" + +#: ../../include/contact_widgets.php:127 +msgid "show more" +msgstr "meer connecties weergeven" + #: ../../include/js_strings.php:5 msgid "Delete this item?" msgstr "Dit item verwijderen?" @@ -8884,11 +11756,55 @@ msgstr " " msgid "timeago.numbers" msgstr "timeago.numbers" +#: ../../include/js_strings.php:45 ../../include/text.php:1307 +msgid "January" +msgstr "januari" + +#: ../../include/js_strings.php:46 ../../include/text.php:1307 +msgid "February" +msgstr "februari" + +#: ../../include/js_strings.php:47 ../../include/text.php:1307 +msgid "March" +msgstr "maart" + +#: ../../include/js_strings.php:48 ../../include/text.php:1307 +msgid "April" +msgstr "april" + #: ../../include/js_strings.php:49 msgctxt "long" msgid "May" msgstr "mei" +#: ../../include/js_strings.php:50 ../../include/text.php:1307 +msgid "June" +msgstr "juni" + +#: ../../include/js_strings.php:51 ../../include/text.php:1307 +msgid "July" +msgstr "juli" + +#: ../../include/js_strings.php:52 ../../include/text.php:1307 +msgid "August" +msgstr "augustus" + +#: ../../include/js_strings.php:53 ../../include/text.php:1307 +msgid "September" +msgstr "september" + +#: ../../include/js_strings.php:54 ../../include/text.php:1307 +msgid "October" +msgstr "oktober" + +#: ../../include/js_strings.php:55 ../../include/text.php:1307 +msgid "November" +msgstr "november" + +#: ../../include/js_strings.php:56 ../../include/text.php:1307 +msgid "December" +msgstr "december" + #: ../../include/js_strings.php:57 msgid "Jan" msgstr "jan" @@ -8938,6 +11854,34 @@ msgstr "nov" msgid "Dec" msgstr "dec" +#: ../../include/js_strings.php:69 ../../include/text.php:1303 +msgid "Sunday" +msgstr "zondag" + +#: ../../include/js_strings.php:70 ../../include/text.php:1303 +msgid "Monday" +msgstr "maandag" + +#: ../../include/js_strings.php:71 ../../include/text.php:1303 +msgid "Tuesday" +msgstr "dinsdag" + +#: ../../include/js_strings.php:72 ../../include/text.php:1303 +msgid "Wednesday" +msgstr "woensdag" + +#: ../../include/js_strings.php:73 ../../include/text.php:1303 +msgid "Thursday" +msgstr "donderdag" + +#: ../../include/js_strings.php:74 ../../include/text.php:1303 +msgid "Friday" +msgstr "vrijdag" + +#: ../../include/js_strings.php:75 ../../include/text.php:1303 +msgid "Saturday" +msgstr "zaterdag" + #: ../../include/js_strings.php:76 msgid "Sun" msgstr "zo" @@ -8991,493 +11935,403 @@ msgctxt "calendar" msgid "All day" msgstr "hele dag" -#: ../../include/follow.php:27 -msgid "Channel is blocked on this site." -msgstr "Kanaal is op deze hub geblokkeerd." - -#: ../../include/follow.php:32 -msgid "Channel location missing." -msgstr "Ontbrekende kanaallocatie." - -#: ../../include/follow.php:80 -msgid "Response from remote channel was incomplete." -msgstr "Antwoord van het kanaal op afstand was niet volledig." +#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 +msgid "Tags" +msgstr "Tags" -#: ../../include/follow.php:97 -msgid "Channel was deleted and no longer exists." -msgstr "Kanaal is verwijderd en bestaat niet meer." +#: ../../include/taxonomy.php:293 +msgid "Keywords" +msgstr "Trefwoorden" -#: ../../include/follow.php:147 ../../include/follow.php:183 -msgid "Protocol disabled." -msgstr "Protocol uitgeschakeld." +#: ../../include/taxonomy.php:314 +msgid "have" +msgstr "heb" -#: ../../include/follow.php:171 -msgid "Channel discovery failed." -msgstr "Kanaal ontdekken mislukt." +#: ../../include/taxonomy.php:314 +msgid "has" +msgstr "heeft" -#: ../../include/follow.php:210 -msgid "Cannot connect to yourself." -msgstr "Kan niet met jezelf verbinden" +#: ../../include/taxonomy.php:315 +msgid "want" +msgstr "wil" -#: ../../include/bbcode.php:123 ../../include/bbcode.php:881 -#: ../../include/bbcode.php:884 ../../include/bbcode.php:889 -#: ../../include/bbcode.php:892 ../../include/bbcode.php:895 -#: ../../include/bbcode.php:898 ../../include/bbcode.php:903 -#: ../../include/bbcode.php:906 ../../include/bbcode.php:911 -#: ../../include/bbcode.php:914 ../../include/bbcode.php:917 -#: ../../include/bbcode.php:920 -msgid "Image/photo" -msgstr "Afbeelding/foto" +#: ../../include/taxonomy.php:315 +msgid "wants" +msgstr "wil" -#: ../../include/bbcode.php:162 ../../include/bbcode.php:931 -msgid "Encrypted content" -msgstr "Versleutelde inhoud" +#: ../../include/taxonomy.php:316 +msgid "likes" +msgstr "vindt dit leuk" -#: ../../include/bbcode.php:178 -#, php-format -msgid "Install %s element: " -msgstr "Installeer %s-element: " +#: ../../include/taxonomy.php:317 +msgid "dislikes" +msgstr "vindt dit niet leuk" -#: ../../include/bbcode.php:182 -#, php-format -msgid "" -"This post contains an installable %s element, however you lack permissions " -"to install it on this site." -msgstr "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren." +#: ../../include/text.php:460 +msgid "prev" +msgstr "vorige" -#: ../../include/bbcode.php:261 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" -msgstr "%1$s schreef het volgende %2$s %3$s" +#: ../../include/text.php:462 +msgid "first" +msgstr "eerste" -#: ../../include/bbcode.php:338 ../../include/bbcode.php:346 -msgid "Click to open/close" -msgstr "Klik om te openen of te sluiten" +#: ../../include/text.php:491 +msgid "last" +msgstr "laatste" -#: ../../include/bbcode.php:346 -msgid "spoiler" -msgstr "spoiler" +#: ../../include/text.php:494 +msgid "next" +msgstr "volgende" -#: ../../include/bbcode.php:869 -msgid "$1 wrote:" -msgstr "$1 schreef:" +#: ../../include/text.php:505 +msgid "older" +msgstr "ouder" -#: ../../include/conversation.php:204 -#, php-format -msgid "%1$s is now connected with %2$s" -msgstr "%1$s is nu met %2$s verbonden" +#: ../../include/text.php:507 +msgid "newer" +msgstr "nieuwer" -#: ../../include/conversation.php:239 -#, php-format -msgid "%1$s poked %2$s" -msgstr "%1$s heeft %2$s aangestoten" +#: ../../include/text.php:904 +msgid "No connections" +msgstr "Geen connecties" -#: ../../include/conversation.php:694 +#: ../../include/text.php:929 #, php-format -msgid "View %s's profile @ %s" -msgstr "Bekijk het profiel van %s @ %s" - -#: ../../include/conversation.php:713 -msgid "Categories:" -msgstr "Categorieën:" - -#: ../../include/conversation.php:714 -msgid "Filed under:" -msgstr "Bewaard onder:" +msgid "View all %s connections" +msgstr "Toon alle %s connecties" -#: ../../include/conversation.php:739 -msgid "View in context" -msgstr "In context bekijken" +#: ../../include/text.php:1074 ../../include/text.php:1079 +msgid "poke" +msgstr "aanstoten" -#: ../../include/conversation.php:849 -msgid "remove" -msgstr "verwijderen" +#: ../../include/text.php:1074 ../../include/text.php:1079 +#: ../../include/conversation.php:243 +msgid "poked" +msgstr "aangestoten" -#: ../../include/conversation.php:854 -msgid "Delete Selected Items" -msgstr "Verwijder de geselecteerde items" +#: ../../include/text.php:1080 +msgid "ping" +msgstr "ping" -#: ../../include/conversation.php:947 -msgid "View Source" -msgstr "Bron weergeven" +#: ../../include/text.php:1080 +msgid "pinged" +msgstr "gepingd" -#: ../../include/conversation.php:948 -msgid "Follow Thread" -msgstr "Conversatie volgen" +#: ../../include/text.php:1081 +msgid "prod" +msgstr "por" -#: ../../include/conversation.php:949 -msgid "Unfollow Thread" -msgstr "Conversatie niet meer volgen" +#: ../../include/text.php:1081 +msgid "prodded" +msgstr "gepord" -#: ../../include/conversation.php:954 -msgid "Activity/Posts" -msgstr "Activiteit/berichten connectie" +#: ../../include/text.php:1082 +msgid "slap" +msgstr "slaan" -#: ../../include/conversation.php:956 -msgid "Edit Connection" -msgstr "Connectie bewerken" +#: ../../include/text.php:1082 +msgid "slapped" +msgstr "sloeg" -#: ../../include/conversation.php:957 -msgid "Message" -msgstr "Bericht" +#: ../../include/text.php:1083 +msgid "finger" +msgstr "finger" -#: ../../include/conversation.php:1077 -#, php-format -msgid "%s likes this." -msgstr "%s vindt dit leuk." +#: ../../include/text.php:1083 +msgid "fingered" +msgstr "gefingerd" -#: ../../include/conversation.php:1077 -#, php-format -msgid "%s doesn't like this." -msgstr "%s vindt dit niet leuk." +#: ../../include/text.php:1084 +msgid "rebuff" +msgstr "afpoeieren" -#: ../../include/conversation.php:1081 -#, 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] "<span %1$s>%2$d persoon</span> vindt dit leuk." -msgstr[1] "<span %1$s>%2$d personen</span> vinden dit leuk." +#: ../../include/text.php:1084 +msgid "rebuffed" +msgstr "afgepoeierd" -#: ../../include/conversation.php:1083 -#, 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] "<span %1$s>%2$d persoon</span> vindt dit niet leuk." -msgstr[1] "<span %1$s>%2$d personen</span> vinden dit niet leuk." +#: ../../include/text.php:1096 +msgid "happy" +msgstr "gelukkig" -#: ../../include/conversation.php:1089 -msgid "and" -msgstr "en" +#: ../../include/text.php:1097 +msgid "sad" +msgstr "bedroefd" -#: ../../include/conversation.php:1092 -#, php-format -msgid ", and %d other people" -msgid_plural ", and %d other people" -msgstr[0] ", en %d ander persoon" -msgstr[1] ", en %d andere personen" +#: ../../include/text.php:1098 +msgid "mellow" +msgstr "mellow" -#: ../../include/conversation.php:1093 -#, php-format -msgid "%s like this." -msgstr "%s vinden dit leuk." +#: ../../include/text.php:1099 +msgid "tired" +msgstr "moe" -#: ../../include/conversation.php:1093 -#, php-format -msgid "%s don't like this." -msgstr "%s vinden dit niet leuk." +#: ../../include/text.php:1100 +msgid "perky" +msgstr "parmantig" -#: ../../include/conversation.php:1136 -msgid "Set your location" -msgstr "Locatie instellen" +#: ../../include/text.php:1101 +msgid "angry" +msgstr "boos" -#: ../../include/conversation.php:1137 -msgid "Clear browser location" -msgstr "Locatie van webbrowser wissen" +#: ../../include/text.php:1102 +msgid "stupefied" +msgstr "verbijsterd" -#: ../../include/conversation.php:1185 -msgid "Tag term:" -msgstr "Tag:" +#: ../../include/text.php:1103 +msgid "puzzled" +msgstr "verward" -#: ../../include/conversation.php:1186 -msgid "Where are you right now?" -msgstr "Waar bevind je je op dit moment?" +#: ../../include/text.php:1104 +msgid "interested" +msgstr "geïnteresseerd" -#: ../../include/conversation.php:1195 -msgid "Comments enabled" -msgstr "Reacties ingeschakeld" +#: ../../include/text.php:1105 +msgid "bitter" +msgstr "verbitterd" -#: ../../include/conversation.php:1196 -msgid "Comments disabled" -msgstr "Reacties uitgeschakeld" +#: ../../include/text.php:1106 +msgid "cheerful" +msgstr "vrolijk" -#: ../../include/conversation.php:1234 -msgid "Page link name" -msgstr "Linknaam pagina" +#: ../../include/text.php:1107 +msgid "alive" +msgstr "levendig" -#: ../../include/conversation.php:1237 -msgid "Post as" -msgstr "Bericht plaatsen als" +#: ../../include/text.php:1108 +msgid "annoyed" +msgstr "geërgerd" -#: ../../include/conversation.php:1251 -msgid "Toggle voting" -msgstr "Peiling in- of uitschakelen" +#: ../../include/text.php:1109 +msgid "anxious" +msgstr "bezorgd" -#: ../../include/conversation.php:1254 -msgid "Disable comments" -msgstr "Reacties uitschakelen" +#: ../../include/text.php:1110 +msgid "cranky" +msgstr "humeurig" -#: ../../include/conversation.php:1255 -msgid "Toggle comments" -msgstr "Reacties in- of uitschakelen" +#: ../../include/text.php:1111 +msgid "disturbed" +msgstr "verontrust" -#: ../../include/conversation.php:1263 -msgid "Categories (optional, comma-separated list)" -msgstr "Categorieën (optioneel, door komma's gescheiden lijst)" +#: ../../include/text.php:1112 +msgid "frustrated" +msgstr "gefrustreerd " -#: ../../include/conversation.php:1286 -msgid "Other networks and post services" -msgstr "Andere netwerken en diensten" +#: ../../include/text.php:1113 +msgid "depressed" +msgstr "gedeprimeerd" -#: ../../include/conversation.php:1292 -msgid "Set publish date" -msgstr "Publicatiedatum instellen" +#: ../../include/text.php:1114 +msgid "motivated" +msgstr "gemotiveerd" -#: ../../include/conversation.php:1541 -msgid "Discover" -msgstr "Ontdekken" +#: ../../include/text.php:1115 +msgid "relaxed" +msgstr "ontspannen" -#: ../../include/conversation.php:1544 -msgid "Imported public streams" -msgstr "Openbare streams importeren" +#: ../../include/text.php:1116 +msgid "surprised" +msgstr "verrast" -#: ../../include/conversation.php:1549 -msgid "Commented Order" -msgstr "Nieuwe reacties bovenaan" +#: ../../include/text.php:1307 +msgid "May" +msgstr "mei" -#: ../../include/conversation.php:1552 -msgid "Sort by Comment Date" -msgstr "Berichten met nieuwe reacties bovenaan" +#: ../../include/text.php:1384 ../../include/text.php:1388 +msgid "Unknown Attachment" +msgstr "Onbekende bijlage" -#: ../../include/conversation.php:1556 -msgid "Posted Order" -msgstr "Nieuwe berichten bovenaan" +#: ../../include/text.php:1390 +msgid "unknown" +msgstr "onbekend" -#: ../../include/conversation.php:1559 -msgid "Sort by Post Date" -msgstr "Nieuwe berichten bovenaan" +#: ../../include/text.php:1426 +msgid "remove category" +msgstr "categorie verwijderen" -#: ../../include/conversation.php:1567 -msgid "Posts that mention or involve you" -msgstr "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent" +#: ../../include/text.php:1503 +msgid "remove from file" +msgstr "uit map verwijderen" -#: ../../include/conversation.php:1576 -msgid "Activity Stream - by date" -msgstr "Activiteitenstroom - volgens datum" +#: ../../include/text.php:1770 ../../include/language.php:367 +msgid "default" +msgstr "standaard" -#: ../../include/conversation.php:1582 -msgid "Starred" -msgstr "Met ster" +#: ../../include/text.php:1778 +msgid "Page layout" +msgstr "Pagina-lay-out" -#: ../../include/conversation.php:1585 -msgid "Favourite Posts" -msgstr "Favoriete berichten" +#: ../../include/text.php:1778 +msgid "You can create your own with the layouts tool" +msgstr "Je kan jouw eigen lay-out ontwerpen onder lay-outs" -#: ../../include/conversation.php:1592 -msgid "Spam" -msgstr "Spam" +#: ../../include/text.php:1820 +msgid "Page content type" +msgstr "Opmaaktype" -#: ../../include/conversation.php:1595 -msgid "Posts flagged as SPAM" -msgstr "Berichten gemarkeerd als SPAM" +#: ../../include/text.php:1953 +msgid "activity" +msgstr "activiteit" -#: ../../include/conversation.php:1654 -msgid "Status Messages and Posts" -msgstr "Berichten in dit kanaal" +#: ../../include/text.php:2267 +msgid "Design Tools" +msgstr "Ontwerp-hulpmiddelen" -#: ../../include/conversation.php:1663 -msgid "About" -msgstr "Over" +#: ../../include/text.php:2273 +msgid "Pages" +msgstr "Pagina's" -#: ../../include/conversation.php:1666 -msgid "Profile Details" -msgstr "Profiel" +#: ../../include/text.php:2295 +msgid "Import website..." +msgstr "Website importeren..." -#: ../../include/conversation.php:1682 -msgid "Files and Storage" -msgstr "Bestanden en opslagruimte" +#: ../../include/text.php:2296 +msgid "Select folder to import" +msgstr "Kies een map om te importeren" -#: ../../include/conversation.php:1702 ../../include/conversation.php:1705 -#: ../../include/widgets.php:883 -msgid "Chatrooms" -msgstr "Chatkanalen" +#: ../../include/text.php:2297 +msgid "Import from a zipped folder:" +msgstr "Vanuit een zipbestand importeren:" -#: ../../include/conversation.php:1718 -msgid "Saved Bookmarks" -msgstr "Opgeslagen bladwijzers" +#: ../../include/text.php:2298 +msgid "Import from cloud files:" +msgstr "Vanuit de cloud importeren:" -#: ../../include/conversation.php:1728 -msgid "Manage Webpages" -msgstr "Webpagina's beheren" +#: ../../include/text.php:2299 +msgid "/cloud/channel/path/to/folder" +msgstr "/cloud/channel/maplocatie" -#: ../../include/conversation.php:1793 -msgctxt "noun" -msgid "Attending" -msgid_plural "Attending" -msgstr[0] "aanwezig" -msgstr[1] "aanwezig" +#: ../../include/text.php:2300 +msgid "Enter path to website files" +msgstr "Voer de locatie in van de websitebestanden" -#: ../../include/conversation.php:1796 -msgctxt "noun" -msgid "Not Attending" -msgid_plural "Not Attending" -msgstr[0] "niet aanwezig" -msgstr[1] "niet aanwezig" +#: ../../include/text.php:2301 +msgid "Select folder" +msgstr "Kies een map" -#: ../../include/conversation.php:1799 -msgctxt "noun" -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "nog niet beslist" -msgstr[1] "nog niet beslist" +#: ../../include/text.php:2302 +msgid "Export website..." +msgstr "Website exporteren..." -#: ../../include/conversation.php:1802 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "eens" -msgstr[1] "eens" +#: ../../include/text.php:2303 +msgid "Export to a zip file" +msgstr "Naar een zipbestand exporteren" -#: ../../include/conversation.php:1805 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "oneens" -msgstr[1] "oneens" +#: ../../include/text.php:2304 +msgid "website.zip" +msgstr "website.zip" -#: ../../include/conversation.php:1808 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "onthouding" -msgstr[1] "onthoudingen" +#: ../../include/text.php:2305 +msgid "Enter a name for the zip file." +msgstr "Vul een naam in voor het zipbestand." -#: ../../include/datetime.php:147 -msgid "Birthday" -msgstr "Verjaardag of geboortedatum" +#: ../../include/text.php:2306 +msgid "Export to cloud files" +msgstr "Naar de cloud exporteren" -#: ../../include/datetime.php:149 -msgid "Age: " -msgstr "Leeftijd:" +#: ../../include/text.php:2307 +msgid "/path/to/export/folder" +msgstr "/locatie/van/export/map" -#: ../../include/datetime.php:151 -msgid "YYYY-MM-DD or MM-DD" -msgstr "JJJJ-MM-DD of MM-DD" +#: ../../include/text.php:2308 +msgid "Enter a path to a cloud files destination." +msgstr "Voer de locatie in van de cloudbestemming" -#: ../../include/datetime.php:284 ../../boot.php:2578 -msgid "never" -msgstr "nooit" +#: ../../include/text.php:2309 +msgid "Specify folder" +msgstr "Selecteer een map" -#: ../../include/datetime.php:290 -msgid "less than a second ago" -msgstr "minder dan een seconde geleden" +#: ../../include/import.php:30 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt." -#: ../../include/datetime.php:308 -#, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" -msgstr "%1$d %2$s geleden" +#: ../../include/import.php:90 +msgid "Channel clone failed. Import failed." +msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt." -#: ../../include/datetime.php:319 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "jaar" -msgstr[1] "jaren" +#: ../../include/import.php:1354 +msgid "Unable to import element \"" +msgstr "Niet in staat om dit element te importeren: \"" -#: ../../include/datetime.php:322 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "maand" -msgstr[1] "maanden" +#: ../../include/security.php:117 +msgid "guest:" +msgstr "gast:" -#: ../../include/datetime.php:325 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "week" -msgstr[1] "weken" +#: ../../include/security.php:535 +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 "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. " -#: ../../include/datetime.php:328 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "dag" -msgstr[1] "dagen" +#: ../../include/items.php:837 ../../include/items.php:882 +msgid "(Unknown)" +msgstr "(Onbekend)" -#: ../../include/datetime.php:331 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "uur" -msgstr[1] "uren" +#: ../../include/items.php:1080 +msgid "Visible to anybody on the internet." +msgstr "Voor iedereen op het internet zichtbaar." -#: ../../include/datetime.php:334 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuut" -msgstr[1] "minuten" +#: ../../include/items.php:1082 +msgid "Visible to you only." +msgstr "Alleen voor jou zichtbaar." -#: ../../include/datetime.php:337 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "seconde" -msgstr[1] "seconden" +#: ../../include/items.php:1084 +msgid "Visible to anybody in this network." +msgstr "Voor iedereen in dit netwerk zichtbaar." -#: ../../include/datetime.php:574 -#, php-format -msgid "%1$s's birthday" -msgstr "Verjaardag van %1$s" +#: ../../include/items.php:1086 +msgid "Visible to anybody authenticated." +msgstr "Voor iedereen die geauthenticeerd is zichtbaar." -#: ../../include/datetime.php:575 +#: ../../include/items.php:1088 #, php-format -msgid "Happy Birthday %1$s" -msgstr "Gefeliciteerd met je verjaardag %1$s" - -#: ../../include/dir_fns.php:141 -msgid "Directory Options" -msgstr "Opties kanalengids" - -#: ../../include/dir_fns.php:143 -msgid "Safe Mode" -msgstr "Veilig zoeken" - -#: ../../include/dir_fns.php:144 -msgid "Public Forums Only" -msgstr "Alleen openbare forums" +msgid "Visible to anybody on %s." +msgstr "Voor iedereen op %s zichtbaar." -#: ../../include/dir_fns.php:145 -msgid "This Website Only" -msgstr "Alleen deze hub" +#: ../../include/items.php:1090 +msgid "Visible to all connections." +msgstr "Voor alle connecties zichtbaar." -#: ../../include/event.php:824 -msgid "This event has been added to your calendar." -msgstr "Dit evenement is aan jouw agenda toegevoegd." +#: ../../include/items.php:1092 +msgid "Visible to approved connections." +msgstr "Voor alle geaccepteerde connecties zichtbaar." -#: ../../include/event.php:1024 -msgid "Not specified" -msgstr "Niet aangegeven" +#: ../../include/items.php:1094 +msgid "Visible to specific connections." +msgstr "Voor specifieke connecties zichtbaar." -#: ../../include/event.php:1025 -msgid "Needs Action" -msgstr "Actie vereist" +#: ../../include/items.php:3892 +msgid "Privacy group is empty." +msgstr "Privacygroep is leeg" -#: ../../include/event.php:1026 -msgid "Completed" -msgstr "Voltooid" +#: ../../include/items.php:3899 +#, php-format +msgid "Privacy group: %s" +msgstr "Privacygroep: %s" -#: ../../include/event.php:1027 -msgid "In Process" -msgstr "In behandeling" +#: ../../include/items.php:3911 +msgid "Connection not found." +msgstr "Connectie niet gevonden." -#: ../../include/event.php:1028 -msgid "Cancelled" -msgstr "Geannuleerd" +#: ../../include/items.php:4260 +msgid "profile photo" +msgstr "profielfoto" -#: ../../include/import.php:30 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." -msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt." +#: ../../include/items.php:4456 +#, php-format +msgid "[Edited %s]" +msgstr "[%s bewerkt]" -#: ../../include/import.php:97 -msgid "Channel clone failed. Import failed." -msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt." +#: ../../include/items.php:4456 +msgctxt "edit_activity" +msgid "Post" +msgstr "Bericht" -#: ../../include/import.php:1447 -msgid "Unable to import element \"" -msgstr "Niet in staat om dit element te importeren: \"" +#: ../../include/items.php:4456 +msgctxt "edit_activity" +msgid "Comment" +msgstr "Reactie" #: ../../include/auth.php:148 msgid "Logged out." @@ -9487,10 +12341,6 @@ msgstr "Uitgelogd." msgid "Failed authentication" msgstr "Mislukte authenticatie" -#: ../../include/auth.php:286 -msgid "Login failed." -msgstr "Inloggen mislukt." - #: ../../include/activities.php:41 msgid " and " msgstr " en " @@ -9514,142 +12364,230 @@ msgstr "Bezoek het %2$s van %1$s" msgid "%1$s has an updated %2$s, changing %3$s." msgstr "%1$s heeft een aangepaste %2$s, %3$s veranderd." -#: ../../include/network.php:704 -msgid "view full size" -msgstr "volledige grootte tonen" +#: ../../include/attach.php:248 ../../include/attach.php:336 +msgid "Item was not found." +msgstr "Item niet gevonden" -#: ../../include/network.php:1953 -msgid "No Subject" -msgstr "Geen onderwerp" +#: ../../include/attach.php:497 +msgid "No source file." +msgstr "Geen bronbestand." -#: ../../include/network.php:2207 ../../include/network.php:2208 -msgid "Friendica" -msgstr "Friendica" +#: ../../include/attach.php:519 +msgid "Cannot locate file to replace" +msgstr "Kan het te vervangen bestand niet vinden" -#: ../../include/network.php:2209 -msgid "OStatus" -msgstr "OStatus" +#: ../../include/attach.php:537 +msgid "Cannot locate file to revise/update" +msgstr "Kan het bestand wat aangepast moet worden niet vinden" -#: ../../include/network.php:2210 -msgid "GNU-Social" -msgstr "GNU social" +#: ../../include/attach.php:668 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "Bestand is groter dan de toegelaten %d" -#: ../../include/network.php:2211 -msgid "RSS/Atom" -msgstr "RSS/Atom" +#: ../../include/attach.php:682 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +msgstr "Je hebt jouw limiet van %1$.0f MB opslagruimte voor bijlagen bereikt." -#: ../../include/network.php:2213 -msgid "Diaspora" -msgstr "Diaspora" +#: ../../include/attach.php:852 +msgid "File upload failed. Possible system limit or action terminated." +msgstr "Uploaden van bestand mislukt. Mogelijk systeemlimiet bereikt of actie afgebroken." -#: ../../include/network.php:2214 -msgid "Facebook" -msgstr "Facebook" +#: ../../include/attach.php:865 +msgid "Stored file could not be verified. Upload failed." +msgstr "Opgeslagen bestand kon niet worden geverifieerd. Uploaden mislukt." -#: ../../include/network.php:2215 -msgid "Zot" -msgstr "Zot" +#: ../../include/attach.php:920 ../../include/attach.php:936 +msgid "Path not available." +msgstr "Locatie niet beschikbaar." -#: ../../include/network.php:2216 -msgid "LinkedIn" -msgstr "LinkedIn" +#: ../../include/attach.php:982 ../../include/attach.php:1140 +msgid "Empty pathname" +msgstr "Ontbrekende locatienaam" -#: ../../include/network.php:2217 -msgid "XMPP/IM" -msgstr "XMPP/IM" +#: ../../include/attach.php:1008 +msgid "duplicate filename or path" +msgstr "dubbele bestandsnaam of locatie" -#: ../../include/network.php:2218 -msgid "MySpace" -msgstr "MySpace" +#: ../../include/attach.php:1030 +msgid "Path not found." +msgstr "Locatie niet gevonden" -#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270 -#: ../../include/contact_widgets.php:91 ../../include/widgets.php:46 -#: ../../include/widgets.php:465 -msgid "Categories" -msgstr "Categorieën" +#: ../../include/attach.php:1094 +msgid "mkdir failed." +msgstr "directory aanmaken (mkdir) mislukt." -#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 -msgid "Tags" -msgstr "Tags" +#: ../../include/attach.php:1098 +msgid "database storage failed." +msgstr "opslag in database mislukt." -#: ../../include/taxonomy.php:293 -msgid "Keywords" -msgstr "Trefwoorden" +#: ../../include/attach.php:1146 +msgid "Empty path" +msgstr "Ontbrekende locatie" -#: ../../include/taxonomy.php:314 -msgid "have" -msgstr "heb" +#: ../../include/event.php:824 +msgid "This event has been added to your calendar." +msgstr "Dit evenement is aan jouw agenda toegevoegd." -#: ../../include/taxonomy.php:314 -msgid "has" -msgstr "heeft" +#: ../../include/event.php:1024 +msgid "Not specified" +msgstr "Niet aangegeven" -#: ../../include/taxonomy.php:315 -msgid "want" -msgstr "wil" +#: ../../include/event.php:1025 +msgid "Needs Action" +msgstr "Actie vereist" -#: ../../include/taxonomy.php:315 -msgid "wants" -msgstr "wil" +#: ../../include/event.php:1026 +msgid "Completed" +msgstr "Voltooid" -#: ../../include/taxonomy.php:316 -msgid "likes" -msgstr "vindt dit leuk" +#: ../../include/event.php:1027 +msgid "In Process" +msgstr "In behandeling" -#: ../../include/taxonomy.php:317 -msgid "dislikes" -msgstr "vindt dit niet leuk" +#: ../../include/event.php:1028 +msgid "Cancelled" +msgstr "Geannuleerd" -#: ../../include/contact_widgets.php:11 +#: ../../include/follow.php:27 +msgid "Channel is blocked on this site." +msgstr "Kanaal is op deze hub geblokkeerd." + +#: ../../include/follow.php:32 +msgid "Channel location missing." +msgstr "Ontbrekende kanaallocatie." + +#: ../../include/follow.php:80 +msgid "Response from remote channel was incomplete." +msgstr "Antwoord van het kanaal op afstand was niet volledig." + +#: ../../include/follow.php:97 +msgid "Channel was deleted and no longer exists." +msgstr "Kanaal is verwijderd en bestaat niet meer." + +#: ../../include/follow.php:147 ../../include/follow.php:183 +msgid "Protocol disabled." +msgstr "Protocol uitgeschakeld." + +#: ../../include/follow.php:171 +msgid "Channel discovery failed." +msgstr "Kanaal ontdekken mislukt." + +#: ../../include/follow.php:210 +msgid "Cannot connect to yourself." +msgstr "Kan niet met jezelf verbinden" + +#: ../../include/group.php:26 +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 "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken." + +#: ../../include/group.php:248 +msgid "Add new connections to this privacy group" +msgstr "Voeg nieuwe connecties aan deze privacygroep toe" + +#: ../../include/group.php:289 +msgid "edit" +msgstr "bewerken" + +#: ../../include/group.php:312 +msgid "Edit group" +msgstr "Privacygroep bewerken" + +#: ../../include/group.php:313 +msgid "Add privacy group" +msgstr "Privacygroep toevoegen" + +#: ../../include/group.php:314 +msgid "Channels not in any privacy group" +msgstr "Kanalen die zich in geen enkele privacygroep bevinden" + +#: ../../include/group.php:316 ../../include/widgets.php:284 +msgid "add" +msgstr "toevoegen" + +#: ../../include/language.php:380 +msgid "Select an alternate language" +msgstr "Kies een andere taal" + +#: ../../include/photos.php:115 #, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "%d uitnodiging beschikbaar" -msgstr[1] "%d uitnodigingen beschikbaar" +msgid "Image exceeds website size limit of %lu bytes" +msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes" -#: ../../include/contact_widgets.php:19 -msgid "Find Channels" -msgstr "Kanalen vinden" +#: ../../include/photos.php:122 +msgid "Image file is empty." +msgstr "Afbeeldingsbestand is leeg" -#: ../../include/contact_widgets.php:20 -msgid "Enter name or interest" -msgstr "Vul naam of interesse in" +#: ../../include/photos.php:260 +msgid "Photo storage failed." +msgstr "Foto kan niet worden opgeslagen" -#: ../../include/contact_widgets.php:21 -msgid "Connect/Follow" -msgstr "Verbinden/volgen" +#: ../../include/photos.php:300 +msgid "a new photo" +msgstr "een nieuwe foto" -#: ../../include/contact_widgets.php:22 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "Voorbeeld: Robert Morgenstein, vissen" +#: ../../include/photos.php:304 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" +msgstr "%1$s plaatste %2$s op %3$s" -#: ../../include/contact_widgets.php:26 -msgid "Random Profile" -msgstr "Willekeurig profiel" +#: ../../include/photos.php:507 ../../include/conversation.php:1677 +msgid "Photo Albums" +msgstr "Fotoalbums" -#: ../../include/contact_widgets.php:27 -msgid "Invite Friends" -msgstr "Vrienden uitnodigen" +#: ../../include/photos.php:511 +msgid "Upload New Photos" +msgstr "Nieuwe foto's uploaden" -#: ../../include/contact_widgets.php:29 -msgid "Advanced example: name=fred and country=iceland" -msgstr "Geavanceerd voorbeeld (Engels): name=jan en country=nederland" +#: ../../include/acl_selectors.php:198 +msgid "Who can see this?" +msgstr "Wie kan dit zien?" -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94 -#: ../../include/widgets.php:349 ../../include/widgets.php:468 -msgid "Everything" -msgstr "Alles" +#: ../../include/acl_selectors.php:199 +msgid "Custom selection" +msgstr "Handmatige selectie" -#: ../../include/contact_widgets.php:122 +#: ../../include/acl_selectors.php:200 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" +" the scope of \"Show\"." +msgstr "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"." + +#: ../../include/acl_selectors.php:201 +msgid "Show" +msgstr "Tonen" + +#: ../../include/acl_selectors.php:202 +msgid "Don't show" +msgstr "Niet tonen" + +#: ../../include/acl_selectors.php:235 #, php-format -msgid "%d connection in common" -msgid_plural "%d connections in common" -msgstr[0] "%d gemeenschappelijke connectie" -msgstr[1] "%d gemeenschappelijke connecties" +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 "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien." -#: ../../include/contact_widgets.php:127 -msgid "show more" -msgstr "meer connecties weergeven" +#: ../../include/oembed.php:312 +msgid " by " +msgstr " door " + +#: ../../include/oembed.php:313 +msgid " on " +msgstr " op " + +#: ../../include/oembed.php:342 +msgid "Embedded content" +msgstr "Ingesloten (embedded) inhoud" + +#: ../../include/oembed.php:351 +msgid "Embedding disabled" +msgstr "Insluiten (embedding) uitgeschakeld" #: ../../include/widgets.php:103 msgid "System" @@ -9776,6 +12714,11 @@ msgstr "Exporteren" msgid "Import Calendar" msgstr "Importeren" +#: ../../include/widgets.php:883 ../../include/conversation.php:1704 +#: ../../include/conversation.php:1707 +msgid "Chatrooms" +msgstr "Chatkanalen" + #: ../../include/widgets.php:887 msgid "Overview" msgstr "Overzicht" @@ -9784,205 +12727,487 @@ msgstr "Overzicht" msgid "Chat Members" msgstr "Chatleden" -#: ../../include/widgets.php:916 +#: ../../include/widgets.php:906 msgid "Wiki List" msgstr "Wiki's" -#: ../../include/widgets.php:954 +#: ../../include/widgets.php:944 msgid "Wiki Pages" msgstr "Wikipagina's" -#: ../../include/widgets.php:989 +#: ../../include/widgets.php:949 +msgid "Add new page" +msgstr "Nieuwe pagina toevoegen" + +#: ../../include/widgets.php:950 +msgid "Page name" +msgstr "Paginanaam" + +#: ../../include/widgets.php:983 msgid "Bookmarked Chatrooms" msgstr "Bladwijzers van chatkanalen" -#: ../../include/widgets.php:1020 +#: ../../include/widgets.php:1014 msgid "Suggested Chatrooms" msgstr "Voorgestelde chatkanalen" -#: ../../include/widgets.php:1166 ../../include/widgets.php:1278 +#: ../../include/widgets.php:1159 ../../include/widgets.php:1271 msgid "photo/image" msgstr "foto/afbeelding" -#: ../../include/widgets.php:1221 +#: ../../include/widgets.php:1214 msgid "Click to show more" msgstr "Klik voor meer" -#: ../../include/widgets.php:1372 +#: ../../include/widgets.php:1365 msgid "Rating Tools" msgstr "Beoordelingen" -#: ../../include/widgets.php:1376 ../../include/widgets.php:1378 +#: ../../include/widgets.php:1369 ../../include/widgets.php:1371 msgid "Rate Me" msgstr "Beoordeel mij" -#: ../../include/widgets.php:1381 +#: ../../include/widgets.php:1374 msgid "View Ratings" msgstr "Bekijk beoordelingen" -#: ../../include/widgets.php:1465 +#: ../../include/widgets.php:1467 msgid "Forums" msgstr "Forums" -#: ../../include/widgets.php:1494 +#: ../../include/widgets.php:1496 msgid "Tasks" msgstr "Taken" -#: ../../include/widgets.php:1505 -msgid "Documentation" -msgstr "Documentatie" - -#: ../../include/widgets.php:1561 ../../include/widgets.php:1599 +#: ../../include/widgets.php:1562 ../../include/widgets.php:1600 msgid "Member registrations waiting for confirmation" msgstr "Accounts die op goedkeuring wachten" -#: ../../include/widgets.php:1567 +#: ../../include/widgets.php:1568 msgid "Inspect queue" msgstr "Inspecteer berichtenwachtrij" -#: ../../include/widgets.php:1569 +#: ../../include/widgets.php:1570 msgid "DB updates" msgstr "Database-updates" -#: ../../include/widgets.php:1595 +#: ../../include/widgets.php:1596 msgid "Plugin Features" msgstr "Plugin-opties" -#: ../../include/api.php:1330 -msgid "Public Timeline" -msgstr "Openbare tijdlijn" +#: ../../include/network.php:729 +msgid "view full size" +msgstr "volledige grootte tonen" -#: ../../include/oembed.php:322 -msgid " by " -msgstr " door " +#: ../../include/network.php:1978 +msgid "No Subject" +msgstr "Geen onderwerp" -#: ../../include/oembed.php:323 -msgid " on " -msgstr " op " +#: ../../include/network.php:2234 +msgid "OStatus" +msgstr "OStatus" -#: ../../include/oembed.php:352 -msgid "Embedded content" -msgstr "Ingesloten (embedded) inhoud" +#: ../../include/network.php:2235 +msgid "GNU-Social" +msgstr "GNU social" -#: ../../include/oembed.php:361 -msgid "Embedding disabled" -msgstr "Insluiten (embedding) uitgeschakeld" +#: ../../include/network.php:2236 +msgid "RSS/Atom" +msgstr "RSS/Atom" -#: ../../include/items.php:918 ../../include/items.php:963 -msgid "(Unknown)" -msgstr "(Onbekend)" +#: ../../include/network.php:2239 +msgid "Facebook" +msgstr "Facebook" -#: ../../include/items.php:1162 -msgid "Visible to anybody on the internet." -msgstr "Voor iedereen op het internet zichtbaar." +#: ../../include/network.php:2240 +msgid "Zot" +msgstr "Zot" -#: ../../include/items.php:1164 -msgid "Visible to you only." -msgstr "Alleen voor jou zichtbaar." +#: ../../include/network.php:2241 +msgid "LinkedIn" +msgstr "LinkedIn" -#: ../../include/items.php:1166 -msgid "Visible to anybody in this network." -msgstr "Voor iedereen in dit netwerk zichtbaar." +#: ../../include/network.php:2242 +msgid "XMPP/IM" +msgstr "XMPP/IM" -#: ../../include/items.php:1168 -msgid "Visible to anybody authenticated." -msgstr "Voor iedereen die geauthenticeerd is zichtbaar." +#: ../../include/network.php:2243 +msgid "MySpace" +msgstr "MySpace" -#: ../../include/items.php:1170 -#, php-format -msgid "Visible to anybody on %s." -msgstr "Voor iedereen op %s zichtbaar." +#: ../../include/permissions.php:35 +msgid "Can view my normal stream and posts" +msgstr "Kan mijn normale kanaalstream en berichten bekijken" -#: ../../include/items.php:1172 -msgid "Visible to all connections." -msgstr "Voor alle connecties zichtbaar." +#: ../../include/permissions.php:39 +msgid "Can view my webpages" +msgstr "Kan mijn pagina's bekijken" -#: ../../include/items.php:1174 -msgid "Visible to approved connections." -msgstr "Voor alle geaccepteerde connecties zichtbaar." +#: ../../include/permissions.php:43 +msgid "Can post on my channel page (\"wall\")" +msgstr "Kan een bericht in mijn kanaal plaatsen" -#: ../../include/items.php:1176 -msgid "Visible to specific connections." -msgstr "Voor specifieke connecties zichtbaar." +#: ../../include/permissions.php:46 +msgid "Can like/dislike stuff" +msgstr "Kan dingen leuk of niet leuk vinden" -#: ../../include/items.php:3976 -msgid "Privacy group is empty." -msgstr "Privacygroep is leeg" +#: ../../include/permissions.php:46 +msgid "Profiles and things other than posts/comments" +msgstr "Profielen en dingen, buiten berichten en reacties" + +#: ../../include/permissions.php:48 +msgid "Can forward to all my channel contacts via post @mentions" +msgstr "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+" + +#: ../../include/permissions.php:48 +msgid "Advanced - useful for creating group forum channels" +msgstr "Geavanceerd - nuttig voor groepforums" + +#: ../../include/permissions.php:49 +msgid "Can chat with me (when available)" +msgstr "Kan met mij chatten (wanneer beschikbaar)" -#: ../../include/items.php:3983 +#: ../../include/permissions.php:50 +msgid "Can write to my file storage and photos" +msgstr "Kan foto's en andere bestanden aan mijn bestandsopslag toevoegen" + +#: ../../include/permissions.php:51 +msgid "Can edit my webpages" +msgstr "Kan mijn pagina's bewerken" + +#: ../../include/permissions.php:53 +msgid "Somewhat advanced - very useful in open communities" +msgstr "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)" + +#: ../../include/permissions.php:55 +msgid "Can administer my channel resources" +msgstr "Kan mijn kanaal beheren" + +#: ../../include/permissions.php:55 +msgid "" +"Extremely advanced. Leave this alone unless you know what you are doing" +msgstr "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet." + +#: ../../include/conversation.php:204 #, php-format -msgid "Privacy group: %s" -msgstr "Privacygroep: %s" +msgid "%1$s is now connected with %2$s" +msgstr "%1$s is nu met %2$s verbonden" -#: ../../include/items.php:3995 -msgid "Connection not found." -msgstr "Connectie niet gevonden." +#: ../../include/conversation.php:239 +#, php-format +msgid "%1$s poked %2$s" +msgstr "%1$s heeft %2$s aangestoten" -#: ../../include/items.php:4348 -msgid "profile photo" -msgstr "profielfoto" +#: ../../include/conversation.php:690 +#, php-format +msgid "View %s's profile @ %s" +msgstr "Bekijk het profiel van %s @ %s" -#: ../../include/attach.php:248 ../../include/attach.php:334 -msgid "Item was not found." -msgstr "Item niet gevonden" +#: ../../include/conversation.php:709 +msgid "Categories:" +msgstr "Categorieën:" -#: ../../include/attach.php:500 -msgid "No source file." -msgstr "Geen bronbestand." +#: ../../include/conversation.php:710 +msgid "Filed under:" +msgstr "Bewaard onder:" -#: ../../include/attach.php:522 -msgid "Cannot locate file to replace" -msgstr "Kan het te vervangen bestand niet vinden" +#: ../../include/conversation.php:735 +msgid "View in context" +msgstr "In context bekijken" -#: ../../include/attach.php:540 -msgid "Cannot locate file to revise/update" -msgstr "Kan het bestand wat aangepast moet worden niet vinden" +#: ../../include/conversation.php:831 +msgid "remove" +msgstr "verwijderen" + +#: ../../include/conversation.php:836 +msgid "Delete Selected Items" +msgstr "Verwijder de geselecteerde items" + +#: ../../include/conversation.php:929 +msgid "View Source" +msgstr "Bron weergeven" + +#: ../../include/conversation.php:930 +msgid "Follow Thread" +msgstr "Conversatie volgen" + +#: ../../include/conversation.php:931 +msgid "Unfollow Thread" +msgstr "Conversatie niet meer volgen" + +#: ../../include/conversation.php:936 +msgid "Activity/Posts" +msgstr "Activiteit/berichten connectie" -#: ../../include/attach.php:675 +#: ../../include/conversation.php:938 +msgid "Edit Connection" +msgstr "Connectie bewerken" + +#: ../../include/conversation.php:939 +msgid "Message" +msgstr "Bericht" + +#: ../../include/conversation.php:1075 #, php-format -msgid "File exceeds size limit of %d" -msgstr "Bestand is groter dan de toegelaten %d" +msgid "%s likes this." +msgstr "%s vindt dit leuk." -#: ../../include/attach.php:689 +#: ../../include/conversation.php:1075 #, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." -msgstr "Je hebt jouw limiet van %1$.0f MB opslagruimte voor bijlagen bereikt." +msgid "%s doesn't like this." +msgstr "%s vindt dit niet leuk." -#: ../../include/attach.php:854 -msgid "File upload failed. Possible system limit or action terminated." -msgstr "Uploaden van bestand mislukt. Mogelijk systeemlimiet bereikt of actie afgebroken." +#: ../../include/conversation.php:1079 +#, 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] "<span %1$s>%2$d persoon</span> vindt dit leuk." +msgstr[1] "<span %1$s>%2$d personen</span> vinden dit leuk." -#: ../../include/attach.php:867 -msgid "Stored file could not be verified. Upload failed." -msgstr "Opgeslagen bestand kon niet worden geverifieerd. Uploaden mislukt." +#: ../../include/conversation.php:1081 +#, 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] "<span %1$s>%2$d persoon</span> vindt dit niet leuk." +msgstr[1] "<span %1$s>%2$d personen</span> vinden dit niet leuk." -#: ../../include/attach.php:923 ../../include/attach.php:939 -msgid "Path not available." -msgstr "Locatie niet beschikbaar." +#: ../../include/conversation.php:1087 +msgid "and" +msgstr "en" -#: ../../include/attach.php:985 ../../include/attach.php:1137 -msgid "Empty pathname" -msgstr "Ontbrekende locatienaam" +#: ../../include/conversation.php:1090 +#, php-format +msgid ", and %d other people" +msgid_plural ", and %d other people" +msgstr[0] ", en %d ander persoon" +msgstr[1] ", en %d andere personen" -#: ../../include/attach.php:1011 -msgid "duplicate filename or path" -msgstr "dubbele bestandsnaam of locatie" +#: ../../include/conversation.php:1091 +#, php-format +msgid "%s like this." +msgstr "%s vinden dit leuk." -#: ../../include/attach.php:1033 -msgid "Path not found." -msgstr "Locatie niet gevonden" +#: ../../include/conversation.php:1091 +#, php-format +msgid "%s don't like this." +msgstr "%s vinden dit niet leuk." -#: ../../include/attach.php:1091 -msgid "mkdir failed." -msgstr "directory aanmaken (mkdir) mislukt." +#: ../../include/conversation.php:1134 +msgid "Set your location" +msgstr "Locatie instellen" -#: ../../include/attach.php:1095 -msgid "database storage failed." -msgstr "opslag in database mislukt." +#: ../../include/conversation.php:1135 +msgid "Clear browser location" +msgstr "Locatie van webbrowser wissen" -#: ../../include/attach.php:1143 -msgid "Empty path" -msgstr "Ontbrekende locatie" +#: ../../include/conversation.php:1183 +msgid "Tag term:" +msgstr "Tag:" + +#: ../../include/conversation.php:1184 +msgid "Where are you right now?" +msgstr "Waar bevind je je op dit moment?" + +#: ../../include/conversation.php:1189 +msgid "Choose a different album..." +msgstr "Kies een ander album..." + +#: ../../include/conversation.php:1193 +msgid "Comments enabled" +msgstr "Reacties ingeschakeld" + +#: ../../include/conversation.php:1194 +msgid "Comments disabled" +msgstr "Reacties uitgeschakeld" + +#: ../../include/conversation.php:1232 +msgid "Page link name" +msgstr "Linknaam pagina" + +#: ../../include/conversation.php:1235 +msgid "Post as" +msgstr "Bericht plaatsen als" + +#: ../../include/conversation.php:1249 +msgid "Toggle voting" +msgstr "Peiling in- of uitschakelen" + +#: ../../include/conversation.php:1252 +msgid "Disable comments" +msgstr "Reacties uitschakelen" + +#: ../../include/conversation.php:1253 +msgid "Toggle comments" +msgstr "Reacties in- of uitschakelen" + +#: ../../include/conversation.php:1261 +msgid "Categories (optional, comma-separated list)" +msgstr "Categorieën (optioneel, door komma's gescheiden lijst)" + +#: ../../include/conversation.php:1284 +msgid "Other networks and post services" +msgstr "Andere netwerken en diensten" + +#: ../../include/conversation.php:1290 +msgid "Set publish date" +msgstr "Publicatiedatum instellen" + +#: ../../include/conversation.php:1544 +msgid "Discover" +msgstr "Ontdekken" + +#: ../../include/conversation.php:1547 +msgid "Imported public streams" +msgstr "Openbare streams importeren" + +#: ../../include/conversation.php:1552 +msgid "Commented Order" +msgstr "Nieuwe reacties bovenaan" + +#: ../../include/conversation.php:1555 +msgid "Sort by Comment Date" +msgstr "Berichten met nieuwe reacties bovenaan" + +#: ../../include/conversation.php:1559 +msgid "Posted Order" +msgstr "Nieuwe berichten bovenaan" + +#: ../../include/conversation.php:1562 +msgid "Sort by Post Date" +msgstr "Nieuwe berichten bovenaan" + +#: ../../include/conversation.php:1570 +msgid "Posts that mention or involve you" +msgstr "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent" + +#: ../../include/conversation.php:1579 +msgid "Activity Stream - by date" +msgstr "Activiteitenstroom - volgens datum" + +#: ../../include/conversation.php:1585 +msgid "Starred" +msgstr "Met ster" + +#: ../../include/conversation.php:1588 +msgid "Favourite Posts" +msgstr "Favoriete berichten" + +#: ../../include/conversation.php:1595 +msgid "Spam" +msgstr "Spam" + +#: ../../include/conversation.php:1598 +msgid "Posts flagged as SPAM" +msgstr "Berichten gemarkeerd als SPAM" + +#: ../../include/conversation.php:1656 +msgid "Status Messages and Posts" +msgstr "Berichten in dit kanaal" + +#: ../../include/conversation.php:1668 +msgid "Profile Details" +msgstr "Profiel" + +#: ../../include/conversation.php:1684 +msgid "Files and Storage" +msgstr "Bestanden en opslagruimte" + +#: ../../include/conversation.php:1720 +msgid "Saved Bookmarks" +msgstr "Opgeslagen bladwijzers" + +#: ../../include/conversation.php:1730 +msgid "Manage Webpages" +msgstr "Webpagina's beheren" + +#: ../../include/conversation.php:1795 +msgctxt "noun" +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "aanwezig" +msgstr[1] "aanwezig" + +#: ../../include/conversation.php:1798 +msgctxt "noun" +msgid "Not Attending" +msgid_plural "Not Attending" +msgstr[0] "niet aanwezig" +msgstr[1] "niet aanwezig" + +#: ../../include/conversation.php:1801 +msgctxt "noun" +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "nog niet beslist" +msgstr[1] "nog niet beslist" + +#: ../../include/conversation.php:1804 +msgctxt "noun" +msgid "Agree" +msgid_plural "Agrees" +msgstr[0] "eens" +msgstr[1] "eens" + +#: ../../include/conversation.php:1807 +msgctxt "noun" +msgid "Disagree" +msgid_plural "Disagrees" +msgstr[0] "oneens" +msgstr[1] "oneens" + +#: ../../include/conversation.php:1810 +msgctxt "noun" +msgid "Abstain" +msgid_plural "Abstains" +msgstr[0] "onthouding" +msgstr[1] "onthoudingen" + +#: ../../include/bbcode.php:134 ../../include/bbcode.php:962 +#: ../../include/bbcode.php:965 ../../include/bbcode.php:970 +#: ../../include/bbcode.php:973 ../../include/bbcode.php:976 +#: ../../include/bbcode.php:979 ../../include/bbcode.php:984 +#: ../../include/bbcode.php:987 ../../include/bbcode.php:992 +#: ../../include/bbcode.php:995 ../../include/bbcode.php:998 +#: ../../include/bbcode.php:1001 +msgid "Image/photo" +msgstr "Afbeelding/foto" + +#: ../../include/bbcode.php:173 ../../include/bbcode.php:1012 +msgid "Encrypted content" +msgstr "Versleutelde inhoud" + +#: ../../include/bbcode.php:189 +#, php-format +msgid "Install %s element: " +msgstr "Installeer %s-element: " + +#: ../../include/bbcode.php:193 +#, php-format +msgid "" +"This post contains an installable %s element, however you lack permissions " +"to install it on this site." +msgstr "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren." + +#: ../../include/bbcode.php:272 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" +msgstr "%1$s schreef het volgende %2$s %3$s" + +#: ../../include/bbcode.php:349 ../../include/bbcode.php:357 +msgid "Click to open/close" +msgstr "Klik om te openen of te sluiten" + +#: ../../include/bbcode.php:357 +msgid "spoiler" +msgstr "spoiler" + +#: ../../include/bbcode.php:950 +msgid "$1 wrote:" +msgstr "$1 schreef:" + +#: ../../util/nconfig.php:34 +msgid "Source channel not found." +msgstr "Bron van kanaal niet gevonden" #: ../../view/theme/redbasic/php/config.php:9 msgid "Focus (Hubzilla default)" @@ -10116,66 +13341,66 @@ msgstr "Grootte profielfoto's van berichten instellen" msgid "Set size of followup author photos" msgstr "Grootte profielfoto's van reacties instellen" -#: ../../boot.php:1195 +#: ../../boot.php:1176 #, php-format msgctxt "opensearch" msgid "Search %1$s (%2$s)" msgstr "Zoek %1$s (%2$s)" -#: ../../boot.php:1195 +#: ../../boot.php:1176 msgctxt "opensearch" msgid "$Projectname" msgstr "$Projectname" -#: ../../boot.php:1513 +#: ../../boot.php:1494 #, php-format msgid "Update %s failed. See error logs." msgstr "Update %s mislukt. Zie foutenlogboek." -#: ../../boot.php:1516 +#: ../../boot.php:1497 #, php-format msgid "Update Error at %s" msgstr "Update-fout op %s" -#: ../../boot.php:1720 +#: ../../boot.php:1701 msgid "" "Create an account to access services and applications within the Hubzilla" msgstr "Maak een account aan om toegang te krijgen tot diensten en toepassingen van Hubzilla" -#: ../../boot.php:1741 +#: ../../boot.php:1722 msgid "Login/Email" msgstr "E-mailadres of inlognaam" -#: ../../boot.php:1742 +#: ../../boot.php:1723 msgid "Password" msgstr "Wachtwoord" -#: ../../boot.php:1743 +#: ../../boot.php:1724 msgid "Remember me" msgstr "Aangemeld blijven" -#: ../../boot.php:1746 +#: ../../boot.php:1727 msgid "Forgot your password?" msgstr "Wachtwoord vergeten?" -#: ../../boot.php:2315 +#: ../../boot.php:2288 msgid "toggle mobile" msgstr "mobiele weergave omschakelen" -#: ../../boot.php:2470 +#: ../../boot.php:2443 msgid "Website SSL certificate is not valid. Please correct." msgstr "Het SSL-certificaat van deze website is ongeldig. Corrigeer dit a.u.b." -#: ../../boot.php:2473 +#: ../../boot.php:2446 #, php-format msgid "[hubzilla] Website SSL error for %s" msgstr "[hubzilla] Probleem met SSL-certificaat voor %s" -#: ../../boot.php:2577 +#: ../../boot.php:2563 msgid "Cron/Scheduled tasks not running." msgstr "Cron is niet actief" -#: ../../boot.php:2581 +#: ../../boot.php:2567 #, php-format msgid "[hubzilla] Cron tasks not running on %s" msgstr "[hubzilla] Cron-taken zijn niet actief op %s" diff --git a/view/nl/hstrings.php b/view/nl/hstrings.php index 54d121f36..000c8043c 100644 --- a/view/nl/hstrings.php +++ b/view/nl/hstrings.php @@ -61,9 +61,8 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s%) App::$strings["WARNING:"] = "WAARSCHUWING:"; App::$strings["Create new folder"] = "Nieuwe map aanmaken"; App::$strings["Upload file"] = "Bestand uploaden"; -App::$strings["Drop files here to immediately upload"] = "Sleep bestanden hierheen om ze onmiddelijk te uploaden"; +App::$strings["Drop files here to immediately upload"] = "Sleep bestanden hierheen om ze onmiddellijk te uploaden"; App::$strings["Permission denied."] = "Toegang geweigerd."; -App::$strings["Not Found"] = "Niet gevonden"; App::$strings["Page not found."] = "Pagina niet gevonden."; App::$strings["Permission denied"] = "Toegang geweigerd"; App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen."; @@ -72,117 +71,233 @@ App::$strings["Requested profile is not available."] = "Opgevraagd profiel is ni App::$strings["Some blurb about what to do when you're new here"] = "Welkom op \$Projectname. Klik op de tab ontdekken of klik rechtsboven op de <a href=\"directory\">kanalengids</a>, om kanalen te vinden. Rechtsboven vind je ook <a href=\"directory\">apps</a>, waar je vrijwel alle functies van \$Projectname kunt vinden. Voor <a href=\"directory\">hulp</a> met \$Projectname klik je op het vraagteken."; App::$strings["Away"] = "Afwezig"; App::$strings["Online"] = "Online"; -App::$strings["No such group"] = "Collectie niet gevonden"; -App::$strings["No such channel"] = "Niet zo'n kanaal"; -App::$strings["forum"] = "forum"; -App::$strings["Search Results For:"] = "Zoekresultaten voor:"; -App::$strings["Privacy group is empty"] = "Privacygroep is leeg"; -App::$strings["Privacy group: "] = "Privacygroep: "; -App::$strings["Invalid connection."] = "Ongeldige connectie."; +App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximum toegestane dagelijkse registraties op deze \$Projectname-hub bereikt. Probeer het morgen (UTC) nogmaals."; +App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden."; +App::$strings["Passwords do not match."] = "Wachtwoorden komen niet met elkaar overeen."; +App::$strings["Registration successful. Please check your email for validation instructions."] = "Registratie geslaagd. Controleer je e-mail voor instructies."; +App::$strings["Your registration is pending approval by the site owner."] = "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze \$Projectname-hub."; +App::$strings["Your registration can not be processed."] = "Jouw registratie kan niet verwerkt worden."; +App::$strings["Registration on this hub is disabled."] = "Registreren van nieuwe accounts is op deze hub uitgeschakeld."; +App::$strings["Registration on this hub is by approval only."] = "Registraties op deze hub moeten eerst worden goedgekeurd."; +App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registreer op een andere hub</a>."; +App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Deze \$Projectname-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals."; +App::$strings["Terms of Service"] = "Gebruiksvoorwaarden"; +App::$strings["I accept the %s for this website"] = "Ik accepteer de %s van deze \$Projectname-hub"; +App::$strings["I am over 13 years of age and accept the %s for this website"] = "Ik ben 13 jaar of ouder en accepteer de %s van deze \$Projectname-hub"; +App::$strings["Your email address"] = "Jouw e-mailadres"; +App::$strings["Choose a password"] = "Geef een wachtwoord op"; +App::$strings["Please re-enter your password"] = "Geef het wachtwoord opnieuw op"; +App::$strings["Please enter your invitation code"] = "Vul jouw uitnodigingscode in"; +App::$strings["Name or caption"] = "Naam"; +App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Voorbeelden: \"Jan Pietersen\", \"Willems weblog\", \"Computerforum\""; +App::$strings["Choose a short nickname"] = "Korte bijnaam"; +App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Deze bijnaam wordt gebruikt om een makkelijk te onthouden kanaaladres van jouw kanaal aan te maken, die je dan met anderen kunt delen. Bijvoorbeeld: bijnaam%s"; +App::$strings["Channel role and privacy"] = "Kanaaltype en privacy"; +App::$strings["Select a channel role with your privacy requirements."] = "Kies een kanaaltype met het door jou gewenste privacyniveau."; +App::$strings["Read more about roles"] = "Lees meer over kanaaltypes"; +App::$strings["no"] = "Nee"; +App::$strings["yes"] = "Ja"; +App::$strings["Registration"] = "Registratie"; +App::$strings["Membership on this site is by invitation only."] = "Registreren op deze \$Projectname-hub kan alleen op uitnodiging."; +App::$strings["Register"] = "Registreren"; +App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Mogelijk moet op deze hub eerst jouw e-mail geverifieerd worden. Wanneer je na het indienen van dit formulier op de inlogpagina terecht komt, dan dien je jouw e-mail te controleren voor instructies. Controleer eventueel ook jouw spamfolder."; App::$strings["Fetching URL returns error: %1\$s"] = "Ophalen URL gaf een foutmelding terug: %1\$s"; -App::$strings["network"] = "netwerk"; -App::$strings["RSS"] = "RSS"; -App::$strings["You must be logged in to see this page."] = "Je moet zijn ingelogd om deze pagina te kunnen bekijken."; -App::$strings["Posts and comments"] = "Berichten en reacties"; -App::$strings["Only posts"] = "Alleen berichten"; -App::$strings["Insufficient permissions. Request redirected to profile page."] = "Onvoldoende permissies. Doorgestuurd naar profielpagina."; -App::$strings["Your service plan only allows %d channels."] = "Jouw abonnement staat maar %d kanalen toe."; -App::$strings["Nothing to import."] = "Niets gevonden om te importeren"; -App::$strings["Unable to download data from old server"] = "Niet in staat om gegevens van de oude hub te downloaden"; -App::$strings["Imported file is empty."] = "Geïmporteerde bestand is leeg"; -App::$strings["Warning: Database versions differ by %1\$d updates."] = "Waarschuwing: database-versies lopen %1\$d updates achter."; -App::$strings["Cloned channel not found. Import failed."] = "Gekloond kanaal niet gevonden. Importeren mislukt."; -App::$strings["No channel. Import failed."] = "Geen kanaal. Importeren mislukt."; -App::$strings["Import completed."] = "Import voltooid."; -App::$strings["You must be logged in to use this feature."] = "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken."; -App::$strings["Import Channel"] = "Kanaal importeren"; -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."] = "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken."; -App::$strings["File to Upload"] = "Bestand om te uploaden"; -App::$strings["Or provide the old server/hub details"] = "Of vul de gegevens van de oude hub in"; -App::$strings["Your old identity address (xyz@example.com)"] = "Jouw oude kanaaladres (xyz@example.com)"; -App::$strings["Your old login email address"] = "Het e-mailadres van je oude account"; -App::$strings["Your old login password"] = "Wachtwoord van jouw oude account"; -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."] = "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen."; -App::$strings["Make this hub my primary location"] = "Stel deze hub als mijn primaire locatie in"; -App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importeer bestaande berichten wanneer mogelijk (experimenteel - afhankelijk van beschikbaar servergeheugen)"; -App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dit proces kan enkele minuten in beslag nemen. Klik maar één keer op opslaan en verlaat deze pagina niet alvorens het proces is voltooid."; +App::$strings["Profile Match"] = "Profielovereenkomst"; +App::$strings["No keywords to match. Please add keywords to your default profile."] = "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe."; +App::$strings["is interested in:"] = "is geïnteresseerd in:"; +App::$strings["Connect"] = "Verbinden"; +App::$strings["No matches"] = "Geen overeenkomsten"; +App::$strings["Could not access contact record."] = "Kon geen toegang krijgen tot de connectie-gegevens."; +App::$strings["Could not locate selected profile."] = "Kon het gekozen profiel niet vinden."; +App::$strings["Connection updated."] = "Connectie bijgewerkt."; +App::$strings["Failed to update connection record."] = "Bijwerken van connectie-gegevens mislukt."; +App::$strings["is now connected to"] = "is nu verbonden met"; +App::$strings["No"] = "Nee"; +App::$strings["Yes"] = "Ja"; +App::$strings["Could not access address book record."] = "Kon geen toegang krijgen tot de record van de connectie."; +App::$strings["Refresh failed - channel is currently unavailable."] = "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar"; +App::$strings["Unable to set address book parameters."] = "Niet in staat om de parameters van connecties in te stellen."; +App::$strings["Connection has been removed."] = "Connectie is verwijderd"; +App::$strings["View Profile"] = "Profiel weergeven"; +App::$strings["View %s's profile"] = "Profiel van %s weergeven"; +App::$strings["Refresh Permissions"] = "Permissies vernieuwen"; +App::$strings["Fetch updated permissions"] = "Aangepaste permissies ophalen"; +App::$strings["Recent Activity"] = "Recente activiteit/berichten"; +App::$strings["View recent posts and comments"] = "Recente berichten en reacties weergeven"; +App::$strings["Unblock"] = "Deblokkeren"; +App::$strings["Block"] = "Blokkeren"; +App::$strings["Block (or Unblock) all communications with this connection"] = "Blokkeer (of deblokkeer) alle communicatie met deze connectie"; +App::$strings["This connection is blocked!"] = "Deze connectie is geblokkeerd!"; +App::$strings["Unignore"] = "Niet meer negeren"; +App::$strings["Ignore"] = "Negeren"; +App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Negeer (of negeer niet meer) alle inkomende communicatie van deze connectie"; +App::$strings["This connection is ignored!"] = "Deze connectie wordt genegeerd!"; +App::$strings["Unarchive"] = "Niet meer archiveren"; +App::$strings["Archive"] = "Archiveren"; +App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiveer (of dearchiveer) deze connectie - markeer het kanaal als dood, maar bewaar de inhoud"; +App::$strings["This connection is archived!"] = "Deze connectie is gearchiveerd!"; +App::$strings["Unhide"] = "Niet meer verbergen"; +App::$strings["Hide"] = "Verbergen"; +App::$strings["Hide or Unhide this connection from your other connections"] = "Deze connectie verbergen (of niet meer verbergen) voor jouw andere connecties"; +App::$strings["This connection is hidden!"] = "Deze connectie is verborgen!"; +App::$strings["Delete this connection"] = "Deze connectie verwijderen"; +App::$strings["Me"] = "Ik"; +App::$strings["Family"] = "Familie"; +App::$strings["Friends"] = "Vrienden"; +App::$strings["Acquaintances"] = "Kennissen"; +App::$strings["All"] = "Alles"; +App::$strings["Approve this connection"] = "Deze connectie accepteren"; +App::$strings["Accept connection to allow communication"] = "Keur deze connectie goed om communicatie toe te staan"; +App::$strings["Set Affinity"] = "Verwantschapsfilter instellen"; +App::$strings["Set Profile"] = "Profiel instellen"; +App::$strings["Set Affinity & Profile"] = "Verwantschapsfilter en profiel instellen"; +App::$strings["none"] = "geen"; +App::$strings["Connection Default Permissions"] = "Standaard permissies voor connecties"; +App::$strings["Connection: %s"] = "Connectie: %s"; +App::$strings["Apply these permissions automatically"] = "Deze permissies automatisch toepassen"; +App::$strings["Connection requests will be approved without your interaction"] = "Connectieverzoeken zullen automatisch worden geaccepteerd"; +App::$strings["This connection's primary address is"] = "Het primaire kanaaladres van deze connectie is"; +App::$strings["Available locations:"] = "Beschikbare locaties:"; +App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Permissies die op deze pagina staan vermeld worden op alle nieuwe connecties toegepast."; +App::$strings["Connection Tools"] = "Hulpmiddelen"; +App::$strings["Slide to adjust your degree of friendship"] = "Schuif om te bepalen hoe goed je iemand kent en/of mag"; +App::$strings["Rating"] = "Beoordeling"; +App::$strings["Slide to adjust your rating"] = "Gebruik de schuif om je beoordeling te geven"; +App::$strings["Optionally explain your rating"] = "Verklaar jouw beoordeling (niet verplicht)"; +App::$strings["Custom Filter"] = "Berichtenfilter"; +App::$strings["Only import posts with this text"] = "Importeer alleen berichten met deze tekst"; +App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "woorden (één per regel), #tags, /regex/ of talen (lang=iso639-1) - laat leeg om alle berichten te importeren"; +App::$strings["Do not import posts with this text"] = "Importeer geen berichten met deze tekst"; +App::$strings["This information is public!"] = "Deze informatie is openbaar!"; +App::$strings["Connection Pending Approval"] = "Connectie moet nog geaccepteerd worden"; +App::$strings["inherited"] = "geërfd"; App::$strings["Submit"] = "Opslaan"; +App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken."; +App::$strings["Their Settings"] = "Hun instellingen"; +App::$strings["My Settings"] = "Mijn instellingen"; +App::$strings["Individual Permissions"] = "Individuele permissies"; +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."] = "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele instellingen. Je kan je deze overgeërfde permissies hier <strong>niet</strong> veranderen."; +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."] = "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele permissies. Je kan de permissies hier veranderen, maar die hebben geen effect, tenzij de overgeërfde permissies worden veranderd. "; +App::$strings["Last update:"] = "Laatste wijziging:"; +App::$strings["Invalid message"] = "Ongeldig bericht"; +App::$strings["no results"] = "geen resultaten"; +App::$strings["channel sync processed"] = "kanaalsync verwerkt"; +App::$strings["queued"] = "in wachtrij"; +App::$strings["posted"] = "verstuurd"; +App::$strings["accepted for delivery"] = "geaccepteerd om afgeleverd te worden"; +App::$strings["updated"] = "geüpdatet"; +App::$strings["update ignored"] = "update genegeerd"; +App::$strings["permission denied"] = "toegang geweigerd"; +App::$strings["recipient not found"] = "ontvanger niet gevonden"; +App::$strings["mail recalled"] = "Privébericht ingetrokken"; +App::$strings["duplicate mail received"] = "dubbel privébericht ontvangen"; +App::$strings["mail delivered"] = "privébericht afgeleverd"; +App::$strings["Delivery report for %1\$s"] = "Afleveringsrapport voor %1\$s"; +App::$strings["Options"] = "Opties"; +App::$strings["Redeliver"] = "Opnieuw afleveren"; App::$strings["Bookmark added"] = "Bladwijzer toegevoegd"; App::$strings["My Bookmarks"] = "Mijn bladwijzers"; App::$strings["My Connections Bookmarks"] = "Bladwijzers van mijn connecties"; -App::$strings["%s account blocked/unblocked"] = array( - 0 => "%s account geblokkeerd/gedeblokkeerd", - 1 => "%s accounts geblokkeerd/gedeblokkeerd", -); -App::$strings["%s account deleted"] = array( - 0 => "%s account verwijderd", - 1 => "%s accounts verwijderd", -); -App::$strings["Account not found"] = "Account niet gevonden"; -App::$strings["Account '%s' deleted"] = "Account '%s' verwijderd"; -App::$strings["Account '%s' blocked"] = "Account '%s' geblokkeerd"; -App::$strings["Account '%s' unblocked"] = "Account '%s' gedeblokkeerd"; -App::$strings["Administration"] = "Beheer"; -App::$strings["Accounts"] = "Accounts"; -App::$strings["select all"] = "alles selecteren"; -App::$strings["Registrations waiting for confirm"] = "Accounts die op goedkeuring wachten"; -App::$strings["Request date"] = "Tijd/datum verzoek"; -App::$strings["Email"] = "E-mail"; -App::$strings["No registrations."] = "Geen verzoeken."; +App::$strings["network"] = "netwerk"; +App::$strings["RSS"] = "RSS"; +App::$strings["Location not found."] = "Locatie niet gevonden."; +App::$strings["Location lookup failed."] = "Opzoeken locatie mislukt"; +App::$strings["Please select another location to become primary before removing the primary location."] = "Kies eerst een andere primaire locatie alvorens de huidige primaire locatie te verwijderen."; +App::$strings["Syncing locations"] = "Locaties synchronizeren"; +App::$strings["No locations found."] = "Geen locaties gevonden."; +App::$strings["Manage Channel Locations"] = "Kanaallocaties beheren"; +App::$strings["Location"] = "Locatie"; +App::$strings["Address"] = "Adres"; +App::$strings["Primary"] = "Primair"; +App::$strings["Drop"] = "Verwijderen"; +App::$strings["Sync Now"] = "Nu synchroniseren"; +App::$strings["Please wait several minutes between consecutive operations."] = "Wacht enkele minuten tussen opeenvolgende handelingen."; +App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wij adviseren, wanneer dit (nog) mogelijk is, de locatie te verwijderen door op de hub van de kloon in te loggen en het kanaal daar te verwijderen."; +App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Gebruik dit formulier om de locatie te verwijderen wanneer de hub van de kloon niet meer operationeel is."; +App::$strings["Continue"] = "Ga verder"; +App::$strings["Premium Channel Setup"] = "Instellen premiumkanaal "; +App::$strings["Enable premium channel connection restrictions"] = "Restricties voor connecties van premiumkanaal toestaan"; +App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz."; +App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:"; +App::$strings["Potential connections will then see the following text before proceeding:"] = "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:"; +App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina."; +App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) "; +App::$strings["Restricted or Premium Channel"] = "Beperkt of premiumkanaal"; +App::$strings["Invalid item."] = "Ongeldig item."; +App::$strings["Channel not found."] = "Kanaal niet gevonden."; +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["Save to Folder:"] = "Bewaar in map: "; +App::$strings["- select -"] = "- kies map -"; +App::$strings["Save"] = "Opslaan"; +App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt."; +App::$strings["Create a new channel"] = "Nieuw kanaal aanmaken"; +App::$strings["Create New"] = "Nieuwe aanmaken"; +App::$strings["Channel Manager"] = "Kanaalbeheer"; +App::$strings["Current Channel"] = "Huidig kanaal"; +App::$strings["Switch to one of your channels by selecting it."] = "Activeer een van jouw andere kanalen door er op te klikken."; +App::$strings["Default Channel"] = "Standaardkanaal"; +App::$strings["Make Default"] = "Als standaard instellen"; +App::$strings["%d new messages"] = "%d nieuwe berichten"; +App::$strings["%d new introductions"] = "%d nieuwe connectieverzoeken"; +App::$strings["Delegated Channel"] = "Uitbesteed kanaal"; +App::$strings["Blocked"] = "Geblokkeerd"; +App::$strings["Ignored"] = "Genegeerd"; +App::$strings["Hidden"] = "Verborgen"; +App::$strings["Archived"] = "Gearchiveerd"; +App::$strings["New"] = "Nieuw"; +App::$strings["New Connections"] = "Nieuwe connecties"; +App::$strings["Show pending (new) connections"] = "Nog te accepteren (nieuwe) connecties weergeven"; +App::$strings["All Connections"] = "Alle connecties"; +App::$strings["Show all connections"] = "Toon alle connecties"; +App::$strings["Only show blocked connections"] = "Toon alleen geblokkeerde connecties"; +App::$strings["Only show ignored connections"] = "Toon alleen genegeerde connecties"; +App::$strings["Only show archived connections"] = "Toon alleen gearchiveerde connecties"; +App::$strings["Only show hidden connections"] = "Toon alleen verborgen connecties"; +App::$strings["Pending approval"] = "Moet nog geaccepteerd worden"; +App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]"; +App::$strings["Edit connection"] = "Connectie bewerken"; +App::$strings["Delete connection"] = "Connectie verwijderen"; +App::$strings["Channel address"] = "Kanaaladres"; +App::$strings["Network"] = "Netwerk"; +App::$strings["Status"] = "Status"; +App::$strings["Connected"] = "Verbonden"; +App::$strings["Approve connection"] = "Connectie accepteren"; App::$strings["Approve"] = "Goedkeuren"; -App::$strings["Deny"] = "Afkeuren"; -App::$strings["Block"] = "Blokkeren"; -App::$strings["Unblock"] = "Deblokkeren"; -App::$strings["ID"] = "ID"; -App::$strings["All Channels"] = "Alle kanalen"; -App::$strings["Register date"] = "Geregistreerd"; -App::$strings["Last login"] = "Laatste keer ingelogd"; -App::$strings["Expires"] = "Verloopt"; -App::$strings["Service Class"] = "Abonnementen"; -App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?"; -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?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"; -App::$strings["%s channel censored/uncensored"] = array( - 0 => "%s kanaal gecensureerd/ongecensureerd", - 1 => "%s kanalen gecensureerd/ongecensureerd", -); -App::$strings["%s channel code allowed/disallowed"] = array( - 0 => "Scripts toegestaan/niet toegestaan voor %s kanaal", - 1 => "Scripts toegestaan/niet toegestaan voor %s kanalen", -); -App::$strings["%s channel deleted"] = array( - 0 => "%s kanaal verwijderd", - 1 => "%s kanalen verwijderd", -); -App::$strings["Channel not found"] = "Kanaal niet gevonden"; -App::$strings["Channel '%s' deleted"] = "Kanaal '%s' verwijderd"; -App::$strings["Channel '%s' censored"] = "Kanaal '%s' gecensureerd"; -App::$strings["Channel '%s' uncensored"] = "Kanaal '%s' ongecensureerd"; -App::$strings["Channel '%s' code allowed"] = "Scripts toegestaan voor kanaal '%s'"; -App::$strings["Channel '%s' code disallowed"] = "Scripts niet toegestaan voor kanaal '%s'"; -App::$strings["Channels"] = "Kanalen"; -App::$strings["Censor"] = "Censureren"; -App::$strings["Uncensor"] = "Niet censureren"; -App::$strings["Allow Code"] = "Scripts toestaan"; -App::$strings["Disallow Code"] = "Scripts niet toestaan"; -App::$strings["Channel"] = "Kanaal"; -App::$strings["UID"] = "UID"; -App::$strings["Address"] = "Kanaaladres"; -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?"] = "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"; -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?"] = "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"; -App::$strings["Update has been marked successful"] = "Update is als succesvol gemarkeerd"; -App::$strings["Executing %s failed. Check system logs."] = "Uitvoeren van %s is mislukt. Controleer systeemlogboek."; -App::$strings["Update %s was successfully applied."] = "Update %s was geslaagd."; -App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is."; -App::$strings["Update function %s could not be found."] = "Update-functie %s kon niet gevonden worden."; -App::$strings["No failed updates."] = "Geen mislukte updates."; -App::$strings["Failed Updates"] = "Mislukte updates"; -App::$strings["Mark success (if update was manually applied)"] = "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)"; -App::$strings["Attempt to execute this update step automatically"] = "Poging om deze stap van de update automatisch uit te voeren."; +App::$strings["Ignore connection"] = "Connectie negeren"; +App::$strings["Recent activity"] = "Recente activiteit"; +App::$strings["Connections"] = "Connecties"; +App::$strings["Search"] = "Zoeken"; +App::$strings["Search your connections"] = "Doorzoek jouw connecties"; +App::$strings["Connections search"] = "Connecties zoeken"; +App::$strings["Find"] = "Vinden"; +App::$strings["Image uploaded but image cropping failed."] = "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. "; +App::$strings["Cover Photos"] = "Omslagfoto's"; +App::$strings["Image resize failed."] = "Afbeelding kon niet van grootte veranderd worden."; +App::$strings["Unable to process image"] = "Afbeelding kan niet verwerkt worden"; +App::$strings["Image upload failed."] = "Uploaden afbeelding mislukt"; +App::$strings["Unable to process image."] = "Niet in staat om afbeelding te verwerken."; +App::$strings["female"] = "vrouw"; +App::$strings["%1\$s updated her %2\$s"] = "%1\$s heeft haar %2\$s bijgewerkt"; +App::$strings["male"] = "man"; +App::$strings["%1\$s updated his %2\$s"] = "%1\$s heeft zijn %2\$s bijgewerkt"; +App::$strings["%1\$s updated their %2\$s"] = "De %2\$s van %1\$s is bijgewerkt"; +App::$strings["cover photo"] = "omslagfoto"; +App::$strings["Photo not available."] = "Foto niet beschikbaar."; +App::$strings["Upload File:"] = "Bestand uploaden:"; +App::$strings["Select a profile:"] = "Kies een profiel:"; +App::$strings["Upload Cover Photo"] = "Omslagfoto uploaden"; +App::$strings["or"] = "of"; +App::$strings["skip this step"] = "sla deze stap over"; +App::$strings["select a photo from your photo albums"] = "Kies een foto uit jouw fotoalbums"; +App::$strings["Crop Image"] = "Afbeelding bijsnijden"; +App::$strings["Please adjust the image cropping for optimum viewing."] = "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven."; +App::$strings["Done Editing"] = "Klaar met bewerken"; App::$strings["Off"] = "Uit"; App::$strings["On"] = "Aan"; App::$strings["Lock feature %s"] = " Vergrendel de functie '%s'"; App::$strings["Manage Additional Features"] = "Beheer - Extra functies"; App::$strings["Log settings updated."] = "Logboek-instellingen bijgewerkt."; +App::$strings["Administration"] = "Beheer"; App::$strings["Logs"] = "Logboeken"; App::$strings["Clear"] = "Leegmaken"; App::$strings["Debugging"] = "Debuggen"; @@ -227,7 +342,6 @@ App::$strings["Field Name"] = "Veldnaam"; App::$strings["Label on profile pages"] = "Tekstlabel voor op profielpagina's"; App::$strings["Help text"] = "Helptekst"; App::$strings["Additional info (optional)"] = "Extra informatie (optioneel)"; -App::$strings["Save"] = "Opslaan"; App::$strings["Field definition not found"] = "Velddefinitie niet gevonden"; App::$strings["Edit Profile Field"] = "Profielveld bewerken"; App::$strings["Profile Fields"] = "Profielvelden"; @@ -267,14 +381,90 @@ App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Alle App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Alleen ongefilterde ingesloten (embedded) HTML van deze websites toestaan"; App::$strings["One site per line. By default embedded content is filtered."] = "Eén website per regel. Standaard wordt ingesloten (embedded) inhoud gefilterd."; App::$strings["Block embedded HTML from these domains"] = "Ingesloten (embedded) HTML vanaf deze domeinen blokkeren"; +App::$strings["Theme settings updated."] = "Thema-instellingen bijgewerkt."; +App::$strings["No themes found."] = "Geen thema's gevonden"; +App::$strings["Screenshot"] = "Schermafdruk"; +App::$strings["Themes"] = "Thema's"; +App::$strings["[Experimental]"] = "[Experimenteel]"; +App::$strings["[Unsupported]"] = "[Niet ondersteund]"; +App::$strings["Password changed for account %d."] = "Wachtwoord veranderd voor account %d."; +App::$strings["Account settings updated."] = "Account-instellingen bijgewerkt."; +App::$strings["Account not found."] = "Account niet gevonden."; +App::$strings["Account Edit"] = "Account bewerken"; +App::$strings["New Password"] = "Nieuw wachtwoord"; +App::$strings["New Password again"] = "Nieuw wachtwoord bevestigen"; +App::$strings["Technical skill level"] = "Technisch niveau"; +App::$strings["Account language (for emails)"] = "Taal van account (voor e-mails)"; +App::$strings["Service class"] = "Abonnement"; +App::$strings["%s account blocked/unblocked"] = array( + 0 => "%s account geblokkeerd/gedeblokkeerd", + 1 => "%s accounts geblokkeerd/gedeblokkeerd", +); +App::$strings["%s account deleted"] = array( + 0 => "%s account verwijderd", + 1 => "%s accounts verwijderd", +); +App::$strings["Account not found"] = "Account niet gevonden"; +App::$strings["Account '%s' deleted"] = "Account '%s' verwijderd"; +App::$strings["Account '%s' blocked"] = "Account '%s' geblokkeerd"; +App::$strings["Account '%s' unblocked"] = "Account '%s' gedeblokkeerd"; +App::$strings["Accounts"] = "Accounts"; +App::$strings["select all"] = "alles selecteren"; +App::$strings["Registrations waiting for confirm"] = "Accounts die op goedkeuring wachten"; +App::$strings["Request date"] = "Tijd/datum verzoek"; +App::$strings["Email"] = "E-mail"; +App::$strings["No registrations."] = "Geen verzoeken."; +App::$strings["Deny"] = "Afkeuren"; +App::$strings["ID"] = "ID"; +App::$strings["All Channels"] = "Alle kanalen"; +App::$strings["Register date"] = "Geregistreerd"; +App::$strings["Last login"] = "Laatste keer ingelogd"; +App::$strings["Expires"] = "Verloopt"; +App::$strings["Service Class"] = "Abonnement"; +App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?"; +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?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"; +App::$strings["%s channel censored/uncensored"] = array( + 0 => "%s kanaal gecensureerd/ongecensureerd", + 1 => "%s kanalen gecensureerd/ongecensureerd", +); +App::$strings["%s channel code allowed/disallowed"] = array( + 0 => "Scripts toegestaan/niet toegestaan voor %s kanaal", + 1 => "Scripts toegestaan/niet toegestaan voor %s kanalen", +); +App::$strings["%s channel deleted"] = array( + 0 => "%s kanaal verwijderd", + 1 => "%s kanalen verwijderd", +); +App::$strings["Channel not found"] = "Kanaal niet gevonden"; +App::$strings["Channel '%s' deleted"] = "Kanaal '%s' verwijderd"; +App::$strings["Channel '%s' censored"] = "Kanaal '%s' gecensureerd"; +App::$strings["Channel '%s' uncensored"] = "Kanaal '%s' ongecensureerd"; +App::$strings["Channel '%s' code allowed"] = "Scripts toegestaan voor kanaal '%s'"; +App::$strings["Channel '%s' code disallowed"] = "Scripts niet toegestaan voor kanaal '%s'"; +App::$strings["Channels"] = "Kanalen"; +App::$strings["Censor"] = "Censureren"; +App::$strings["Uncensor"] = "Niet censureren"; +App::$strings["Allow Code"] = "Scripts toestaan"; +App::$strings["Disallow Code"] = "Scripts niet toestaan"; +App::$strings["Channel"] = "Kanaal"; +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?"] = "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"; +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?"] = "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"; +App::$strings["Update has been marked successful"] = "Update is als succesvol gemarkeerd"; +App::$strings["Executing %s failed. Check system logs."] = "Uitvoeren van %s is mislukt. Controleer systeemlogboek."; +App::$strings["Update %s was successfully applied."] = "Update %s was geslaagd."; +App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is."; +App::$strings["Update function %s could not be found."] = "Update-functie %s kon niet gevonden worden."; +App::$strings["No failed updates."] = "Geen mislukte updates."; +App::$strings["Failed Updates"] = "Mislukte updates"; +App::$strings["Mark success (if update was manually applied)"] = "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)"; +App::$strings["Attempt to execute this update step automatically"] = "Poging om deze stap van de update automatisch uit te voeren."; App::$strings["Site settings updated."] = "Hub-instellingen bijgewerkt."; App::$strings["Default"] = "Standaard"; App::$strings["mobile"] = "mobiel"; App::$strings["experimental"] = "experimenteel"; App::$strings["unsupported"] = "Niet ondersteund"; -App::$strings["No"] = "Nee"; App::$strings["Yes - with approval"] = "Ja - met goedkeuring"; -App::$strings["Yes"] = "Ja"; App::$strings["My site is not a public server"] = "Mijn \$Projectname-hub is niet openbaar"; App::$strings["My site has paid access only"] = "Mijn \$Projectname-hub kent alleen betaalde toegang"; App::$strings["My site has free access only"] = "Mijn \$Projectname-hub kent alleen gratis toegang"; @@ -289,11 +479,10 @@ App::$strings["Advanced - very comfortable"] = "Gevorderd - voelt zich comfortab App::$strings["Expert - I can write computer code"] = "Expert - kan programmeren"; App::$strings["Wizard - I probably know more than you do"] = "Tovenaar - ik weet waarschijnlijk meer dan jij"; App::$strings["Site"] = "Hub-instellingen"; -App::$strings["Registration"] = "Registratie"; App::$strings["File upload"] = "Bestand uploaden"; App::$strings["Policies"] = "Beleid"; App::$strings["Advanced"] = "Geavanceerd"; -App::$strings["Site name"] = "Naam van deze \$Projectname-hub"; +App::$strings["Site name"] = "Hubnaam"; App::$strings["Server Configuration/Role"] = "Configuratietype hub"; App::$strings["Site default technical skill level"] = "Standaard technisch niveau voor deze hub"; App::$strings["Used to provide a member experience matched to technical comfort level"] = "Wordt gebruikt om leden een gebruikerservaring te bieden die met hun technisch niveau overeenkomt"; @@ -302,6 +491,8 @@ App::$strings["Members can set their own technical comfort level by default"] = App::$strings["Banner/Logo"] = "Banner/logo"; App::$strings["Administrator Information"] = "Informatie over de beheerder"; App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden."; +App::$strings["Site Information"] = "Hub-informatie"; +App::$strings["Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here"] = "Openbaar zichtbare beschrijving van deze hub. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden."; App::$strings["System language"] = "Standaardtaal"; App::$strings["System theme"] = "Standaardthema"; App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standaardthema voor \$Projectname-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>"; @@ -351,173 +542,35 @@ App::$strings["Maximum Load Average"] = "Maximaal gemiddelde systeembelasting"; App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50."; App::$strings["Expiration period in days for imported (grid/network) content"] = "Aantal dagen waarna geïmporteerde inhoud uit iemands grid/netwerk-pagina wordt verwijderd."; App::$strings["0 for no expiration of imported content"] = "Dit geldt alleen voor inhoud van andere kanalen, dus niet voor iemands eigen kanaal. 0 voor het niet verwijderen van geïmporteerde inhoud."; -App::$strings["Theme settings updated."] = "Thema-instellingen bijgewerkt."; -App::$strings["No themes found."] = "Geen thema's gevonden"; -App::$strings["Screenshot"] = "Schermafdruk"; -App::$strings["Themes"] = "Thema's"; -App::$strings["[Experimental]"] = "[Experimenteel]"; -App::$strings["[Unsupported]"] = "[Niet ondersteund]"; -App::$strings["Photos"] = "Foto's"; -App::$strings["Invalid item."] = "Ongeldig item."; -App::$strings["Channel not found."] = "Kanaal niet gevonden."; -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["Save to Folder:"] = "Bewaar in map: "; -App::$strings["- select -"] = "- kies map -"; -App::$strings["Unable to lookup recipient."] = "Niet in staat om ontvanger op te zoeken."; -App::$strings["Unable to communicate with requested channel."] = "Niet in staat om met het aangevraagde kanaal te communiceren."; -App::$strings["Cannot verify requested channel."] = "Kan opgevraagd kanaal niet verifieren"; -App::$strings["Selected channel has private message restrictions. Send failed."] = "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt."; -App::$strings["Messages"] = "Berichten"; -App::$strings["Message recalled."] = "Bericht ingetrokken."; -App::$strings["Conversation removed."] = "Conversatie verwijderd"; -App::$strings["Please enter a link URL:"] = "Vul een URL in:"; -App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verloopt op DD-MM-YYYY om HH:MM"; -App::$strings["Requested channel is not in this network"] = "Opgevraagd kanaal is niet in dit netwerk beschikbaar"; -App::$strings["Send Private Message"] = "Privébericht versturen"; -App::$strings["To:"] = "Aan:"; -App::$strings["Subject:"] = "Onderwerp:"; -App::$strings["Your message:"] = "Jouw bericht:"; -App::$strings["Attach file"] = "Bestand toevoegen"; -App::$strings["Insert web link"] = "Weblink invoegen"; -App::$strings["Send"] = "Verzenden"; -App::$strings["Set expiration date"] = "Verloopdatum instellen"; -App::$strings["Encrypt text"] = "Tekst versleutelen"; -App::$strings["Delete message"] = "Bericht verwijderen"; -App::$strings["Delivery report"] = "Afleveringsrapport"; -App::$strings["Recall message"] = "Bericht intrekken"; -App::$strings["Message has been recalled."] = "Bericht is ingetrokken."; -App::$strings["Delete Conversation"] = "Verwijder conversatie"; -App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender."; -App::$strings["Send Reply"] = "Antwoord versturen"; -App::$strings["Your message for %s (%s):"] = "Jouw privébericht aan %s (%s):"; -App::$strings["Blocked"] = "Geblokkeerd"; -App::$strings["Ignored"] = "Genegeerd"; -App::$strings["Hidden"] = "Verborgen"; -App::$strings["Archived"] = "Gearchiveerd"; -App::$strings["New"] = "Nieuw"; -App::$strings["All"] = "Alles"; -App::$strings["New Connections"] = "Nieuwe connecties"; -App::$strings["Show pending (new) connections"] = "Nog te accepteren (nieuwe) connecties weergeven"; -App::$strings["All Connections"] = "Alle connecties"; -App::$strings["Show all connections"] = "Toon alle connecties"; -App::$strings["Only show blocked connections"] = "Toon alleen geblokkeerde connecties"; -App::$strings["Only show ignored connections"] = "Toon alleen genegeerde connecties"; -App::$strings["Only show archived connections"] = "Toon alleen gearchiveerde connecties"; -App::$strings["Only show hidden connections"] = "Toon alleen verborgen connecties"; -App::$strings["Pending approval"] = "Moet nog geaccepteerd worden"; -App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]"; -App::$strings["Edit connection"] = "Connectie bewerken"; -App::$strings["Delete connection"] = "Connectie verwijderen"; -App::$strings["Channel address"] = "Kanaaladres"; -App::$strings["Network"] = "Netwerk"; -App::$strings["Status"] = "Status"; -App::$strings["Connected"] = "Verbonden"; -App::$strings["Approve connection"] = "Connectie accepteren"; -App::$strings["Ignore connection"] = "Connectie negeren"; -App::$strings["Ignore"] = "Negeren"; -App::$strings["Recent activity"] = "Recente activiteit"; -App::$strings["Connections"] = "Connecties"; -App::$strings["Search"] = "Zoeken"; -App::$strings["Search your connections"] = "Doorzoek jouw connecties"; -App::$strings["Connections search"] = "Connecties zoeken"; -App::$strings["Find"] = "Vinden"; -App::$strings["Image uploaded but image cropping failed."] = "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. "; -App::$strings["Cover Photos"] = "Omslagfoto's"; -App::$strings["Image resize failed."] = "Afbeelding kon niet van grootte veranderd worden."; -App::$strings["Unable to process image"] = "Afbeelding kan niet verwerkt worden"; -App::$strings["Image upload failed."] = "Uploaden afbeelding mislukt"; -App::$strings["Unable to process image."] = "Niet in staat om afbeelding te verwerken."; -App::$strings["female"] = "vrouw"; -App::$strings["%1\$s updated her %2\$s"] = "%1\$s heeft haar %2\$s bijgewerkt"; -App::$strings["male"] = "man"; -App::$strings["%1\$s updated his %2\$s"] = "%1\$s heeft zijn %2\$s bijgewerkt"; -App::$strings["%1\$s updated their %2\$s"] = "De %2\$s van %1\$s is bijgewerkt"; -App::$strings["cover photo"] = "omslagfoto"; -App::$strings["Photo not available."] = "Foto niet beschikbaar."; -App::$strings["Upload File:"] = "Bestand uploaden:"; -App::$strings["Select a profile:"] = "Kies een profiel:"; -App::$strings["Upload Cover Photo"] = "Omslagfoto uploaden"; -App::$strings["or"] = "of"; -App::$strings["skip this step"] = "sla deze stap over"; -App::$strings["select a photo from your photo albums"] = "Kies een foto uit jouw fotoalbums"; -App::$strings["Crop Image"] = "Afbeelding bijsnijden"; -App::$strings["Please adjust the image cropping for optimum viewing."] = "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven."; -App::$strings["Done Editing"] = "Klaar met bewerken"; -App::$strings["Edit post"] = "Bericht bewerken"; -App::$strings["Could not access contact record."] = "Kon geen toegang krijgen tot de connectie-gegevens."; -App::$strings["Could not locate selected profile."] = "Kon het gekozen profiel niet vinden."; -App::$strings["Connection updated."] = "Connectie bijgewerkt."; -App::$strings["Failed to update connection record."] = "Bijwerken van connectie-gegevens mislukt."; -App::$strings["is now connected to"] = "is nu verbonden met"; -App::$strings["Could not access address book record."] = "Kon geen toegang krijgen tot de record van de connectie."; -App::$strings["Refresh failed - channel is currently unavailable."] = "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar"; -App::$strings["Unable to set address book parameters."] = "Niet in staat om de parameters van connecties in te stellen."; -App::$strings["Connection has been removed."] = "Connectie is verwijderd"; -App::$strings["View Profile"] = "Profiel weergeven"; -App::$strings["View %s's profile"] = "Profiel van %s weergeven"; -App::$strings["Refresh Permissions"] = "Permissies vernieuwen"; -App::$strings["Fetch updated permissions"] = "Aangepaste permissies ophalen"; -App::$strings["Recent Activity"] = "Recente activiteit/berichten"; -App::$strings["View recent posts and comments"] = "Recente berichten en reacties weergeven"; -App::$strings["Block (or Unblock) all communications with this connection"] = "Blokkeer (of deblokkeer) alle communicatie met deze connectie"; -App::$strings["This connection is blocked!"] = "Deze connectie is geblokkeerd!"; -App::$strings["Unignore"] = "Niet meer negeren"; -App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Negeer (of negeer niet meer) alle inkomende communicatie van deze connectie"; -App::$strings["This connection is ignored!"] = "Deze connectie wordt genegeerd!"; -App::$strings["Unarchive"] = "Niet meer archiveren"; -App::$strings["Archive"] = "Archiveren"; -App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiveer (of dearchiveer) deze connectie - markeer het kanaal als dood, maar bewaar de inhoud"; -App::$strings["This connection is archived!"] = "Deze connectie is gearchiveerd!"; -App::$strings["Unhide"] = "Niet meer verbergen"; -App::$strings["Hide"] = "Verbergen"; -App::$strings["Hide or Unhide this connection from your other connections"] = "Deze connectie verbergen (of niet meer verbergen) voor jouw andere connecties"; -App::$strings["This connection is hidden!"] = "Deze connectie is verborgen!"; -App::$strings["Delete this connection"] = "Deze connectie verwijderen"; -App::$strings["Me"] = "Ik"; -App::$strings["Family"] = "Familie"; -App::$strings["Friends"] = "Vrienden"; -App::$strings["Acquaintances"] = "Kennissen"; -App::$strings["Approve this connection"] = "Deze connectie accepteren"; -App::$strings["Accept connection to allow communication"] = "Keur deze connectie goed om communicatie toe te staan"; -App::$strings["Set Affinity"] = "Verwantschapsfilter instellen"; -App::$strings["Set Profile"] = "Profiel instellen"; -App::$strings["Set Affinity & Profile"] = "Verwantschapsfilter en profiel instellen"; -App::$strings["none"] = "geen"; -App::$strings["Connection Default Permissions"] = "Standaard permissies voor connecties"; -App::$strings["Connection: %s"] = "Connectie: %s"; -App::$strings["Apply these permissions automatically"] = "Deze permissies automatisch toepassen"; -App::$strings["Connection requests will be approved without your interaction"] = "Connectieverzoeken zullen automatisch worden geaccepteerd"; -App::$strings["This connection's primary address is"] = "Het primaire kanaaladres van deze connectie is"; -App::$strings["Available locations:"] = "Beschikbare locaties:"; -App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Permissies die op deze pagina staan vermeld worden op alle nieuwe connecties toegepast."; -App::$strings["Connection Tools"] = "Hulpmiddelen"; -App::$strings["Slide to adjust your degree of friendship"] = "Schuif om te bepalen hoe goed je iemand kent en/of mag"; -App::$strings["Rating"] = "Beoordeling"; -App::$strings["Slide to adjust your rating"] = "Gebruik de schuif om je beoordeling te geven"; -App::$strings["Optionally explain your rating"] = "Verklaar jouw beoordeling (niet verplicht)"; -App::$strings["Custom Filter"] = "Berichtenfilter"; -App::$strings["Only import posts with this text"] = "Importeer alleen berichten met deze tekst"; -App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "woorden (één per regel), #tags, /regex/ of talen (lang=iso639-1) - laat leeg om alle berichten te importeren"; -App::$strings["Do not import posts with this text"] = "Importeer geen berichten met deze tekst"; -App::$strings["This information is public!"] = "Deze informatie is openbaar!"; -App::$strings["Connection Pending Approval"] = "Connectie moet nog geaccepteerd worden"; -App::$strings["inherited"] = "geërfd"; -App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken."; -App::$strings["Their Settings"] = "Hun instellingen"; -App::$strings["My Settings"] = "Mijn instellingen"; -App::$strings["Individual Permissions"] = "Individuele permissies"; -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."] = "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele instellingen. Je kan je deze overgeërfde permissies hier <strong>niet</strong> veranderen."; -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."] = "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele permissies. Je kan de permissies hier veranderen, maar die hebben geen effect, tenzij de overgeërfde permissies worden veranderd. "; -App::$strings["Last update:"] = "Laatste wijziging:"; +App::$strings["Public Hubs"] = "Openbare hubs"; +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."] = "Op de hier weergegeven hubs kan iedereen zich voor het \$Projectname-netwerk aanmelden. Alle hubs in het netwerk zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen een financiële tegemoetkoming voor bepaalde uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven."; +App::$strings["Hub URL"] = "Hub-URL"; +App::$strings["Access Type"] = "Toegangs-<br/> type"; +App::$strings["Registration Policy"] = "Registratie-<br/> beleid"; +App::$strings["Stats"] = "Stats"; +App::$strings["Software"] = "Software"; +App::$strings["Ratings"] = "Beoordelingen"; +App::$strings["Rate"] = "Beoordeel"; +App::$strings["View"] = "Weergeven"; App::$strings["Item not found"] = "Item niet gevonden"; -App::$strings["Block Name"] = "Bloknaam"; -App::$strings["Title (optional)"] = "Titel (optioneel)"; -App::$strings["Edit Block"] = "Blok bewerken"; App::$strings["Layout Name"] = "Naam lay-out"; App::$strings["Layout Description (Optional)"] = "Lay-out-omschrijving (optioneel)"; App::$strings["Edit Layout"] = "Lay-out bewerken"; App::$strings["Page link"] = "Paginalink"; +App::$strings["Insert web link"] = "Weblink invoegen"; App::$strings["Edit Webpage"] = "Webpagina bewerken"; +App::$strings["Photos"] = "Foto's"; +App::$strings["You must be logged in to see this page."] = "Je moet zijn ingelogd om deze pagina te kunnen bekijken."; +App::$strings["Posts and comments"] = "Berichten en reacties"; +App::$strings["Only posts"] = "Alleen berichten"; +App::$strings["Insufficient permissions. Request redirected to profile page."] = "Onvoldoende permissies. Doorgestuurd naar profielpagina."; +App::$strings["No such group"] = "Collectie niet gevonden"; +App::$strings["No such channel"] = "Niet zo'n kanaal"; +App::$strings["forum"] = "forum"; +App::$strings["Search Results For:"] = "Zoekresultaten voor:"; +App::$strings["Privacy group is empty"] = "Privacygroep is leeg"; +App::$strings["Privacy group: "] = "Privacygroep: "; +App::$strings["Invalid connection."] = "Ongeldige connectie."; App::$strings["Unable to update menu."] = "Niet in staat om menu aan te passen"; App::$strings["Unable to create menu."] = "Niet in staat om menu aan te maken."; App::$strings["Menu Name"] = "Menunaam"; @@ -528,7 +581,6 @@ App::$strings["Allow Bookmarks"] = "Bladwijzers toestaan"; App::$strings["Menu may be used to store saved bookmarks"] = "Menu kan gebruikt worden om bladwijzers in op te slaan"; App::$strings["Submit and proceed"] = "Opslaan en doorgaan"; App::$strings["Menus"] = "Menu's"; -App::$strings["Drop"] = "Verwijderen"; App::$strings["Created"] = "Aangemaakt"; App::$strings["Edited"] = "Bewerkt"; App::$strings["Bookmarks allowed"] = "Bladwijzers toegestaan"; @@ -560,34 +612,20 @@ App::$strings["Categories (optional, comma separated list)"] = "Categorieën (op App::$strings["Version ID"] = "Versie-ID"; App::$strings["Price of app"] = "Prijs van de app"; App::$strings["Location (URL) to purchase app"] = "Locatie (URL) om de app aan te schaffen"; -App::$strings["Public Hubs"] = "Openbare hubs"; -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."] = "Op de hier weergegeven hubs kan iedereen zich voor het \$Projectname-netwerk aanmelden. Alle hubs in het netwerk zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen een financiële tegemoetkoming voor bepaalde uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven."; -App::$strings["Hub URL"] = "Hub-URL"; -App::$strings["Access Type"] = "Toegangs-<br/> type"; -App::$strings["Registration Policy"] = "Registratie-<br/> beleid"; -App::$strings["Stats"] = "Stats"; -App::$strings["Software"] = "Software"; -App::$strings["Ratings"] = "Beoordelingen"; -App::$strings["Rate"] = "Beoordeel"; -App::$strings["Location"] = "Locatie"; -App::$strings["View"] = "Weergeven"; -App::$strings["Item not available."] = "Item is niet aanwezig."; -App::$strings["Authorize application connection"] = "Geef toestemming voor applicatiekoppeling"; -App::$strings["Return to your app and insert this Security Code:"] = "Ga terug naar je app en voeg deze beveiligingscode in:"; -App::$strings["Please login to continue."] = "Inloggen om verder te kunnen gaan."; -App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?"; +App::$strings["Edit post"] = "Bericht bewerken"; +App::$strings["Documentation Search"] = "Zoek documentatie"; +App::$strings["About"] = "Over"; +App::$strings["Members"] = "Kanalen"; +App::$strings["Administrators"] = "Beheerders"; +App::$strings["Developers"] = "Ontwikkelaars"; +App::$strings["Tutorials"] = "Zelfstudie"; +App::$strings["\$Projectname Documentation"] = "\$Projectname-documentatie"; +App::$strings["Contents"] = "Inhoud"; App::$strings["Share content from Firefox to \$Projectname"] = "Deel webpagina's vanuit Firefox met "; App::$strings["Activate the Firefox \$Projectname provider"] = "Activeer de \$Projectname-service in Firefox"; -App::$strings["Layout updated."] = "Lay-out bijgewerkt."; -App::$strings["Feature disabled."] = "Functie uitgeschakeld."; -App::$strings["Edit System Page Description"] = "Systeempagina's bewerken"; -App::$strings["Layout not found."] = "Lay-out niet gevonden."; -App::$strings["Module Name:"] = "Modulenaam:"; -App::$strings["Layout Help"] = "Lay-out-hulp"; +App::$strings["Apps"] = "Apps"; App::$strings["\$Projectname"] = "\$Projectname"; App::$strings["Welcome to %s"] = "Welkom op %s"; -App::$strings["Remote privacy information not available."] = "Privacy-informatie op afstand niet beschikbaar."; -App::$strings["Visible to:"] = "Zichtbaar voor:"; App::$strings["Permission Denied."] = "Toegang geweigerd"; App::$strings["File not found."] = "Bestand niet gevonden."; App::$strings["Edit file permissions"] = "Bestandsrechten bewerken"; @@ -600,64 +638,85 @@ App::$strings["Copy/paste this URL to link file from a web page"] = "Kopieer/pla App::$strings["Share this file"] = "Dit bestand delen"; App::$strings["Show URL to this file"] = "Toon URL van dit bestand"; App::$strings["Notify your contacts about this file"] = "Jouw connecties over dit bestand berichten"; -App::$strings["Continue"] = "Ga verder"; -App::$strings["Premium Channel Setup"] = "Instellen premiumkanaal "; -App::$strings["Enable premium channel connection restrictions"] = "Restricties voor connecties van premiumkanaal toestaan"; -App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz."; -App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:"; -App::$strings["Potential connections will then see the following text before proceeding:"] = "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:"; -App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina."; -App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) "; -App::$strings["Restricted or Premium Channel"] = "Beperkt of premiumkanaal"; -App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt."; -App::$strings["Create a new channel"] = "Nieuw kanaal aanmaken"; -App::$strings["Create New"] = "Nieuwe aanmaken"; -App::$strings["Channel Manager"] = "Kanaalbeheer"; -App::$strings["Current Channel"] = "Huidig kanaal"; -App::$strings["Switch to one of your channels by selecting it."] = "Activeer een van jouw andere kanalen door er op te klikken."; -App::$strings["Default Channel"] = "Standaardkanaal"; -App::$strings["Make Default"] = "Als standaard instellen"; -App::$strings["%d new messages"] = "%d nieuwe berichten"; -App::$strings["%d new introductions"] = "%d nieuwe connectieverzoeken"; -App::$strings["Delegated Channel"] = "Uitbesteed kanaal"; -App::$strings["Privacy group created."] = "Privacygroep aangemaakt"; -App::$strings["Could not create privacy group."] = "Kon privacygroep niet aanmaken"; -App::$strings["Privacy group not found."] = "Privacygroep niet gevonden"; -App::$strings["Privacy group updated."] = "Privacygroep bijgewerkt"; -App::$strings["Create a group of channels."] = "Privacygroep met kanalen aanmaken"; -App::$strings["Privacy group name: "] = "Naam privacygroep: "; -App::$strings["Members are visible to other channels"] = "Kanalen in deze privacygroep zijn zichtbaar voor andere kanalen"; -App::$strings["Privacy group removed."] = "Privacygroep verwijderd."; -App::$strings["Unable to remove privacy group."] = "Verwijderen privacygroep mislukt"; -App::$strings["Privacy group editor"] = "Privacygroep bewerken"; -App::$strings["Members"] = "Kanalen"; -App::$strings["All Connected Channels"] = "Alle kanaalconnecties"; -App::$strings["Click on a channel to add or remove."] = "Klik op een kanaal om deze toe te voegen of te verwijderen."; -App::$strings["Invalid message"] = "Ongeldig bericht"; -App::$strings["no results"] = "geen resultaten"; -App::$strings["channel sync processed"] = "kanaalsync verwerkt"; -App::$strings["queued"] = "in wachtrij"; -App::$strings["posted"] = "verstuurd"; -App::$strings["accepted for delivery"] = "geaccepteerd om afgeleverd te worden"; -App::$strings["updated"] = "geüpdatet"; -App::$strings["update ignored"] = "update genegeerd"; -App::$strings["permission denied"] = "toegang geweigerd"; -App::$strings["recipient not found"] = "ontvanger niet gevonden"; -App::$strings["mail recalled"] = "Privébericht ingetrokken"; -App::$strings["duplicate mail received"] = "dubbel privébericht ontvangen"; -App::$strings["mail delivered"] = "privébericht afgeleverd"; -App::$strings["Delivery report for %1\$s"] = "Afleveringsrapport voor %1\$s"; -App::$strings["Options"] = "Opties"; -App::$strings["Redeliver"] = "Opnieuw afleveren"; +App::$strings["Public access denied."] = "Openbare toegang geweigerd."; +App::$strings["%d rating"] = array( + 0 => "%d beoordeling", + 1 => "%d beoordelingen", +); +App::$strings["Gender: "] = "Geslacht:"; +App::$strings["Status: "] = "Status: "; +App::$strings["Homepage: "] = "Homepage: "; +App::$strings["Age:"] = "Leeftijd:"; +App::$strings["Location:"] = "Plaats:"; +App::$strings["Description:"] = "Omschrijving:"; +App::$strings["Hometown:"] = "Oorspronkelijk uit:"; +App::$strings["About:"] = "Over:"; +App::$strings["Public Forum:"] = "Openbaar forum:"; +App::$strings["Keywords: "] = "Trefwoorden: "; +App::$strings["Don't suggest"] = "Niet voorstellen"; +App::$strings["Common connections:"] = "Gemeenschappelijke connecties:"; +App::$strings["Global Directory"] = "Volledige kanalengids"; +App::$strings["Local Directory"] = "Lokale kanalengids"; +App::$strings["Finding:"] = "Gezocht naar:"; +App::$strings["Channel Suggestions"] = "Voorgestelde kanalen"; +App::$strings["next page"] = "volgende pagina"; +App::$strings["previous page"] = "vorige pagina"; +App::$strings["Sort options"] = "Sorteeropties"; +App::$strings["Alphabetic"] = "Alfabetisch"; +App::$strings["Reverse Alphabetic"] = "Omgekeerd alfabetisch"; +App::$strings["Newest to Oldest"] = "Nieuw naar oud"; +App::$strings["Oldest to Newest"] = "Oud naar nieuw"; +App::$strings["No entries (some entries may be hidden)."] = "Niets gevonden (sommige kanalen kunnen verborgen zijn)."; +App::$strings["Unable to locate original post."] = "Niet in staat om de originele locatie van het bericht te vinden. "; +App::$strings["Empty post discarded."] = "Leeg bericht geannuleerd"; +App::$strings["Executable content type not permitted to this channel."] = "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal."; +App::$strings["Duplicate post suppressed."] = "Dubbel bericht tegengehouden."; +App::$strings["System error. Post not saved."] = "Systeemfout. Bericht niet opgeslagen."; +App::$strings["Unable to obtain post information from database."] = "Niet in staat om informatie over dit bericht uit de database te verkrijgen."; +App::$strings["You have reached your limit of %1$.0f top level posts."] = "Je hebt jouw limiet van %1$.0f berichten bereikt."; +App::$strings["You have reached your limit of %1$.0f webpages."] = "Je hebt jouw limiet van %1$.0f webpagina's bereikt."; +App::$strings["toggle full screen mode"] = "Volledig scherm"; +App::$strings["Channel added."] = "Kanaal toegevoegd."; +App::$strings["Unable to lookup recipient."] = "Niet in staat om ontvanger op te zoeken."; +App::$strings["Unable to communicate with requested channel."] = "Niet in staat om met het aangevraagde kanaal te communiceren."; +App::$strings["Cannot verify requested channel."] = "Kan opgevraagd kanaal niet verifieren"; +App::$strings["Selected channel has private message restrictions. Send failed."] = "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt."; +App::$strings["Messages"] = "Berichten"; +App::$strings["Message recalled."] = "Bericht ingetrokken."; +App::$strings["Conversation removed."] = "Conversatie verwijderd"; +App::$strings["Please enter a link URL:"] = "Vul een URL in:"; +App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verloopt op DD-MM-YYYY om HH:MM"; +App::$strings["Requested channel is not in this network"] = "Opgevraagd kanaal is niet in dit netwerk beschikbaar"; +App::$strings["Send Private Message"] = "Privébericht versturen"; +App::$strings["To:"] = "Aan:"; +App::$strings["Subject:"] = "Onderwerp:"; +App::$strings["Your message:"] = "Jouw bericht:"; +App::$strings["Attach file"] = "Bestand toevoegen"; +App::$strings["Send"] = "Verzenden"; +App::$strings["Set expiration date"] = "Verloopdatum instellen"; +App::$strings["Encrypt text"] = "Tekst versleutelen"; +App::$strings["Delete message"] = "Bericht verwijderen"; +App::$strings["Delivery report"] = "Afleveringsrapport"; +App::$strings["Recall message"] = "Bericht intrekken"; +App::$strings["Message has been recalled."] = "Bericht is ingetrokken."; +App::$strings["Delete Conversation"] = "Verwijder conversatie"; +App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender."; +App::$strings["Send Reply"] = "Antwoord versturen"; +App::$strings["Your message for %s (%s):"] = "Jouw privébericht aan %s (%s):"; App::$strings["webpage"] = "Webpagina"; App::$strings["block"] = "blok"; App::$strings["layout"] = "lay-out"; App::$strings["menu"] = "menu"; App::$strings["%s element installed"] = "%s onderdeel geïnstalleerd"; App::$strings["%s element installation failed"] = "Installatie %s-element mislukt"; +App::$strings["Nothing to import."] = "Niets gevonden om te importeren"; +App::$strings["Unable to download data from old server"] = "Niet in staat om gegevens van de oude hub te downloaden"; +App::$strings["Imported file is empty."] = "Geïmporteerde bestand is leeg"; +App::$strings["Warning: Database versions differ by %1\$d updates."] = "Waarschuwing: database-versies lopen %1\$d updates achter."; App::$strings["Import completed"] = "Importeren voltooid"; App::$strings["Import Items"] = "Importeer items"; App::$strings["Use this form to import existing posts and content from an export file."] = "Gebruik dit formulier om bestaande berichten en andere inhoud vanuit een exportbestand te importeren."; +App::$strings["File to Upload"] = "Bestand om te uploaden"; App::$strings["Total invitation limit exceeded."] = "Limiet voor aantal uitnodigingen overschreden."; App::$strings["%s : Not a valid email address."] = "%s : Geen geldig e-mailadres."; App::$strings["Please join us on \$Projectname"] = "Uitnodiging voor \$Projectname"; @@ -676,110 +735,27 @@ App::$strings["1. Register at any \$Projectname location (they are all inter-con App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn \$Projectname-kanaaladres in het zoekveld invullen:"; App::$strings["or visit"] = "of bezoek"; App::$strings["3. Click [Connect]"] = "3. Klik op [+ Verbinden]"; -App::$strings["Location not found."] = "Locatie niet gevonden."; -App::$strings["Location lookup failed."] = "Opzoeken locatie mislukt"; -App::$strings["Please select another location to become primary before removing the primary location."] = "Kies eerst een andere primaire locatie alvorens de huidige primaire locatie te verwijderen."; -App::$strings["Syncing locations"] = "Locaties synchronizeren"; -App::$strings["No locations found."] = "Geen locaties gevonden."; -App::$strings["Manage Channel Locations"] = "Kanaallocaties beheren"; -App::$strings["Primary"] = "Primair"; -App::$strings["Sync Now"] = "Nu synchroniseren"; -App::$strings["Please wait several minutes between consecutive operations."] = "Wacht enkele minuten tussen opeenvolgende handelingen."; -App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wij adviseren, wanneer dit (nog) mogelijk is, de locatie te verwijderen door op de hub van de kloon in te loggen en het kanaal daar te verwijderen."; -App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Gebruik dit formulier om de locatie te verwijderen wanneer de hub van de kloon niet meer operationeel is."; -App::$strings["Website:"] = "Website:"; -App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Kanaal op afstand [%s] (nog niet op deze hub bekend)"; -App::$strings["Rating (this information is public)"] = "Beoordeling (deze informatie is openbaar)"; -App::$strings["Optionally explain your rating (this information is public)"] = "Verklaar jouw beoordeling (niet verplicht, deze informatie is openbaar)"; -App::$strings["Like/Dislike"] = "Leuk/niet leuk"; -App::$strings["This action is restricted to members."] = "Deze actie kan alleen door \$Projectname-leden worden uitgevoerd."; -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."] = "Je dient <a href=\"rmagic\">in te loggen met je \$Projectname-account</a> of <a href=\"register\">een nieuw \$Projectname-account aan te maken</a> om verder te kunnen gaan."; -App::$strings["Invalid request."] = "Ongeldig verzoek"; -App::$strings["channel"] = "kanaal"; -App::$strings["thing"] = "ding"; -App::$strings["Channel unavailable."] = "Kanaal niet beschikbaar."; -App::$strings["Previous action reversed."] = "Vorige actie omgedraaid"; -App::$strings["photo"] = "foto"; -App::$strings["status"] = "bericht"; -App::$strings["event"] = "gebeurtenis"; -App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s leuk"; -App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s niet leuk"; -App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s is het eens met %2\$s's %3\$s"; -App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s is het niet eens met %2\$s's %3\$s"; -App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s onthoudt zich van een besluit over %2\$s's %3\$s"; -App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s is aanwezig op %2\$s's %3\$s"; -App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s is niet aanwezig op %2\$s's %3\$s"; -App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s is mogelijk aanwezig op %2\$s's %3\$s"; -App::$strings["Action completed."] = "Actie voltooid"; -App::$strings["Thank you."] = "Bedankt"; -App::$strings["Profile not found."] = "Profiel niet gevonden."; -App::$strings["Profile deleted."] = "Profiel verwijderd."; -App::$strings["Profile-"] = "Profiel-"; -App::$strings["New profile created."] = "Nieuw profiel aangemaakt."; -App::$strings["Profile unavailable to clone."] = "Profiel niet beschikbaar om te klonen"; -App::$strings["Profile unavailable to export."] = "Geen profiel beschikbaar om te exporteren"; -App::$strings["Profile Name is required."] = "Profielnaam is vereist"; -App::$strings["Marital Status"] = "Huwelijke status"; -App::$strings["Romantic Partner"] = "Romantische partner"; -App::$strings["Likes"] = "Houdt van"; -App::$strings["Dislikes"] = "Houdt niet van"; -App::$strings["Work/Employment"] = "Werk/arbeid"; -App::$strings["Religion"] = "Religie"; -App::$strings["Political Views"] = "Politieke overtuigingen"; -App::$strings["Gender"] = "Geslacht"; -App::$strings["Sexual Preference"] = "Seksuele voorkeur"; -App::$strings["Homepage"] = "Homepage"; -App::$strings["Interests"] = "Interesses"; -App::$strings["Profile updated."] = "Profiel bijgewerkt"; -App::$strings["Hide your connections list from viewers of this profile"] = "Laat de lijst met connecties niet aan bezoekers van dit profiel zien."; -App::$strings["Edit Profile Details"] = "Profiel bewerken"; -App::$strings["View this profile"] = "Profiel weergeven"; -App::$strings["Edit visibility"] = "Zichtbaarheid bewerken"; -App::$strings["Profile Tools"] = "Hulpmiddelen"; -App::$strings["Change cover photo"] = "Omslagfoto wijzigen"; -App::$strings["Change profile photo"] = "Profielfoto veranderen"; -App::$strings["Create a new profile using these settings"] = "Een nieuw profiel aanmaken met dit profiel als basis"; -App::$strings["Clone this profile"] = "Dit profiel klonen"; -App::$strings["Delete this profile"] = "Dit profiel verwijderen"; -App::$strings["Add profile things"] = "Dingen aan je profiel toevoegen"; -App::$strings["Personal"] = "Persoonlijk"; -App::$strings["Relation"] = "Relatie"; -App::$strings["Miscellaneous"] = "Diversen"; -App::$strings["Import profile from file"] = "Profiel vanuit bestand importeren"; -App::$strings["Export profile to file"] = "Profiel naar bestand exporteren"; -App::$strings["Your gender"] = "Jouw geslacht"; -App::$strings["Marital status"] = "Burgerlijke staat"; -App::$strings["Sexual preference"] = "Seksuele voorkeur"; -App::$strings["Profile name"] = "Profielnaam"; -App::$strings["This is your default profile."] = "Dit is jouw standaardprofiel"; -App::$strings["Your full name"] = "Jouw volledige naam"; -App::$strings["Title/Description"] = "Titel/omschrijving"; -App::$strings["Street address"] = "Straat en huisnummer"; -App::$strings["Locality/City"] = "Woonplaats"; -App::$strings["Region/State"] = "Provincie/gewest/deelstaat"; -App::$strings["Postal/Zip code"] = "Postcode"; -App::$strings["Country"] = "Land"; -App::$strings["Who (if applicable)"] = "Wie (wanneer van toepassing)"; -App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Voorbeelden: petra123, Petra Jansen, petra@voorbeeld.nl"; -App::$strings["Since (date)"] = "Sinds (datum)"; -App::$strings["Tell us about yourself"] = "Vertel ons iets over jezelf"; -App::$strings["Homepage URL"] = "URL homepagina"; -App::$strings["Hometown"] = "Oorspronkelijk uit"; -App::$strings["Political views"] = "Politieke overtuigingen"; -App::$strings["Religious views"] = "Religieuze overtuigingen"; -App::$strings["Keywords used in directory listings"] = "Trefwoorden voor in de kanalengids"; -App::$strings["Example: fishing photography software"] = "Voorbeeld: muziek, fotografie, software"; -App::$strings["Musical interests"] = "Muzikale interesses"; -App::$strings["Books, literature"] = "Boeken/literatuur"; -App::$strings["Television"] = "Televisie"; -App::$strings["Film/Dance/Culture/Entertainment"] = "Film/dans/cultuur/entertainment"; -App::$strings["Hobbies/Interests"] = "Hobby's/interesses"; -App::$strings["Love/Romance"] = "Liefde/romantiek"; -App::$strings["School/Education"] = "School/opleiding"; -App::$strings["Contact information and social networks"] = "Contactinformatie en sociale netwerken"; -App::$strings["My other channels"] = "Mijn andere kanalen"; -App::$strings["Profile Image"] = "Profielfoto"; -App::$strings["Edit Profiles"] = "Bewerk profielen"; +App::$strings["Block Name"] = "Bloknaam"; +App::$strings["Title (optional)"] = "Titel (optioneel)"; +App::$strings["Edit Block"] = "Blok bewerken"; +App::$strings["Privacy group created."] = "Privacygroep aangemaakt"; +App::$strings["Could not create privacy group."] = "Kon privacygroep niet aanmaken"; +App::$strings["Privacy group not found."] = "Privacygroep niet gevonden"; +App::$strings["Privacy group updated."] = "Privacygroep bijgewerkt"; +App::$strings["Create a group of channels."] = "Privacygroep met kanalen aanmaken"; +App::$strings["Privacy group name: "] = "Naam privacygroep: "; +App::$strings["Members are visible to other channels"] = "Kanalen in deze privacygroep zijn zichtbaar voor andere kanalen"; +App::$strings["Privacy group removed."] = "Privacygroep verwijderd."; +App::$strings["Unable to remove privacy group."] = "Verwijderen privacygroep mislukt"; +App::$strings["Privacy group editor"] = "Privacygroep bewerken"; +App::$strings["All Connected Channels"] = "Alle kanaalconnecties"; +App::$strings["Click on a channel to add or remove."] = "Klik op een kanaal om deze toe te voegen of te verwijderen."; +App::$strings["Invalid profile identifier."] = "Ongeldige profiel-identificator"; +App::$strings["Profile Visibility Editor"] = "Zichtbaarheid profiel "; +App::$strings["Profile"] = "Profiel"; +App::$strings["Click on a contact to add or remove."] = "Klik op een connectie om deze toe te voegen of te verwijderen"; +App::$strings["Visible To"] = "Zichtbaar voor"; +App::$strings["Hub not found."] = "Hub niet gevonden."; App::$strings["Unable to create element."] = "Niet in staat om onderdeel aan te maken."; App::$strings["Unable to update menu element."] = "Menu-onderdeel kan niet worden geüpdatet."; App::$strings["Unable to add menu element."] = "Menu-onderdeel kan niet worden toegevoegd."; @@ -809,6 +785,88 @@ App::$strings["Menu item deleted."] = "Menu-item verwijderd."; App::$strings["Menu item could not be deleted."] = "Menu-item kon niet worden verwijderd."; App::$strings["Edit Menu Element"] = "Menu-element bewerken"; App::$strings["Link text"] = "Linktekst"; +App::$strings["No ratings"] = "Geen beoordelingen"; +App::$strings["Rating: "] = "Beoordeling: "; +App::$strings["Website: "] = "Website: "; +App::$strings["Description: "] = "Omschrijving: "; +App::$strings["Item not available."] = "Item is niet aanwezig."; +App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s is %2\$s"; +App::$strings["Mood"] = "Stemming"; +App::$strings["Set your current mood and tell your friends"] = "Noteer je huidige stemming en toon het aan je connecties"; +App::$strings["No more system notifications."] = "Geen systeemnotificaties meer."; +App::$strings["System Notifications"] = "Systeemnotificaties"; +App::$strings["Page owner information could not be retrieved."] = "Informatie over de pagina-eigenaar werd niet ontvangen."; +App::$strings["Profile Photos"] = "Profielfoto's"; +App::$strings["Album not found."] = "Album niet gevonden."; +App::$strings["Delete Album"] = "Verwijder album"; +App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "Er bestaan meerdere submappen met deze albumnaam, maar verspreidt over verschillende mappen. Verwijder de gewenste map(pen) met de bestandsbeheerder."; +App::$strings["Delete Photo"] = "Verwijder foto"; +App::$strings["No photos selected"] = "Geen foto's geselecteerd"; +App::$strings["Access to this item is restricted."] = "Toegang tot dit item is beperkt."; +App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt."; +App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB aan foto-opslag gebruikt."; +App::$strings["Upload Photos"] = "Foto's uploaden"; +App::$strings["Enter an album name"] = "Vul een albumnaam in"; +App::$strings["or select an existing album (doubleclick)"] = "of kies een bestaand album (dubbelklikken)"; +App::$strings["Create a status post for this upload"] = "Plaats een bericht voor deze upload."; +App::$strings["Caption (optional):"] = "Bijschrift (optioneel):"; +App::$strings["Description (optional):"] = "Omschrijving (optioneel):"; +App::$strings["Album name could not be decoded"] = "Albumnaam kon niet gedecodeerd worden"; +App::$strings["Contact Photos"] = "Connectiefoto's"; +App::$strings["Show Newest First"] = "Nieuwste eerst weergeven"; +App::$strings["Show Oldest First"] = "Oudste eerst weergeven"; +App::$strings["View Photo"] = "Foto weergeven"; +App::$strings["Edit Album"] = "Album bewerken"; +App::$strings["Permission denied. Access to this item may be restricted."] = "Toegang geweigerd. Toegang tot dit item kan zijn beperkt."; +App::$strings["Photo not available"] = "Foto niet aanwezig"; +App::$strings["Use as profile photo"] = "Als profielfoto gebruiken"; +App::$strings["Use as cover photo"] = "Als omslagfoto gebruiken"; +App::$strings["Private Photo"] = "Privéfoto"; +App::$strings["Previous"] = "Vorige"; +App::$strings["View Full Size"] = "Volledige grootte weergeven"; +App::$strings["Next"] = "Volgende"; +App::$strings["Edit photo"] = "Foto bewerken"; +App::$strings["Rotate CW (right)"] = "Draai met de klok mee (naar rechts)"; +App::$strings["Rotate CCW (left)"] = "Draai tegen de klok in (naar links)"; +App::$strings["Move photo to album"] = "Verplaatst foto naar album"; +App::$strings["Enter a new album name"] = "Vul een nieuwe albumnaam in"; +App::$strings["or select an existing one (doubleclick)"] = "of kies een bestaand album (dubbelklikken)"; +App::$strings["Caption"] = "Bijschrift"; +App::$strings["Add a Tag"] = "Tag toevoegen"; +App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl"; +App::$strings["Flag as adult in album view"] = "Markeer als voor volwassenen in albumweergave"; +App::$strings["I like this (toggle)"] = "Vind ik leuk"; +App::$strings["I don't like this (toggle)"] = "Vind ik niet leuk"; +App::$strings["Share"] = "Delen"; +App::$strings["Please wait"] = "Even wachten"; +App::$strings["This is you"] = "Dit ben jij"; +App::$strings["Comment"] = "Reactie"; +App::$strings["Preview"] = "Voorvertoning"; +App::$strings["__ctx:title__ Likes"] = "vinden dit leuk"; +App::$strings["__ctx:title__ Dislikes"] = "vinden dit niet leuk"; +App::$strings["__ctx:title__ Agree"] = "eens"; +App::$strings["__ctx:title__ Disagree"] = "oneens"; +App::$strings["__ctx:title__ Abstain"] = "onthoudingen"; +App::$strings["__ctx:title__ Attending"] = "aanwezig"; +App::$strings["__ctx:title__ Not attending"] = "niet aanwezig"; +App::$strings["__ctx:title__ Might attend"] = "mogelijk aanwezig"; +App::$strings["View all"] = "Toon alles"; +App::$strings["__ctx:noun__ Like"] = array( + 0 => "vindt dit leuk", + 1 => "vinden dit leuk", +); +App::$strings["__ctx:noun__ Dislike"] = array( + 0 => "vindt dit niet leuk", + 1 => "vinden dit niet leuk", +); +App::$strings["Photo Tools"] = "Hulpmiddelen"; +App::$strings["In This Photo:"] = "Op deze foto:"; +App::$strings["Map"] = "Kaart"; +App::$strings["__ctx:noun__ Likes"] = "vinden dit leuk"; +App::$strings["__ctx:noun__ Dislikes"] = "vinden dit niet leuk"; +App::$strings["Close"] = "Sluiten"; +App::$strings["View Album"] = "Album weergeven"; +App::$strings["Recent Photos"] = "Recente foto's"; App::$strings["\$Projectname Server - Setup"] = "\$Projectname Hub - Setup"; App::$strings["Could not connect to database."] = "Could not connect to database."; App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Could not connect to specified hub URL. Possible SSL certificate or DNS issue."; @@ -817,7 +875,6 @@ App::$strings["Your site database has been installed."] = "Your hub database has App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "You may need to import the file \"install/schema_xxx.sql\" manually using a database client."; App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Please see the file \"install/INSTALL.txt\"."; App::$strings["System check"] = "System check"; -App::$strings["Next"] = "Volgende"; App::$strings["Check again"] = "Check again"; App::$strings["Database connection"] = "Database connection"; App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "In order to install \$Projectname we need to know how to connect to your database."; @@ -844,11 +901,12 @@ App::$strings["If you don't have a command line version of PHP installed on serv App::$strings["PHP executable path"] = "PHP executable path"; App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Enter full path to php executable. You can leave this blank to continue the installation."; App::$strings["Command line PHP"] = "Command line PHP"; +App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "Unable to check command line PHP, as shell_exec() is disabled. This is required."; App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "The command line version of PHP on your system does not have \"register_argc_argv\" enabled."; App::$strings["This is required for message delivery to work."] = "This is required for message delivery to work."; App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv"; App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."; -App::$strings["You can adjust these settings in the servers php.ini."] = "You can adjust these settings in the servers php.ini."; +App::$strings["You can adjust these settings in the server php.ini file."] = "You can adjust these settings in the server php.ini file."; App::$strings["PHP upload limits"] = "PHP upload limits"; App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"; App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."; @@ -856,17 +914,19 @@ App::$strings["Generate encryption keys"] = "Generate encryption keys"; App::$strings["libCurl PHP module"] = "libCurl PHP module"; App::$strings["GD graphics PHP module"] = "GD graphics PHP module"; App::$strings["OpenSSL PHP module"] = "OpenSSL PHP module"; -App::$strings["mysqli or postgres PHP module"] = "mysqli or postgres PHP module"; +App::$strings["PDO database PHP module"] = "PDO database PHP module"; App::$strings["mb_string PHP module"] = "mb_string PHP module"; App::$strings["xml PHP module"] = "xml PHP module"; App::$strings["Apache mod_rewrite module"] = "Apache mod_rewrite module"; App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: Apache webserver mod-rewrite module is required but not installed."; -App::$strings["proc_open"] = "proc_open"; -App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Error: proc_open is required but is either not installed or has been disabled in php.ini"; +App::$strings["exec"] = "exec"; +App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Error: exec is required but is either not installed or has been disabled in php.ini"; +App::$strings["shell_exec"] = "shell_exec"; +App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Error: shell_exec is required but is either not installed or has been disabled in php.ini"; App::$strings["Error: libCURL PHP module required but not installed."] = "Error: libCURL PHP module required but not installed."; App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: GD graphics PHP module with JPEG support required but not installed."; App::$strings["Error: openssl PHP module required but not installed."] = "Error: openssl PHP module required but not installed."; -App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Error: mysqli or postgres PHP module required but neither are installed."; +App::$strings["Error: PDO database PHP module required but not installed."] = "Error: PDO database PHP module required but not installed."; App::$strings["Error: mb_string PHP module required but not installed."] = "Error: mb_string PHP module required but not installed."; App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: xml PHP module required for DAV but not installed."; App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."; @@ -874,12 +934,12 @@ App::$strings["This is most often a permission setting, as the web server may no App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."; App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."; App::$strings[".htconfig.php is writable"] = ".htconfig.php is writable"; -App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."; +App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."; App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."; App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."; App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."; App::$strings["%s is writable"] = "%s is writable"; -App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"; +App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"; App::$strings["store is writable"] = "store is writable"; App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "SSL certificate cannot be validated. Fix certificate or disable https access to this hub."; App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "If you have https access to your hub or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"; @@ -895,133 +955,11 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr App::$strings["Errors encountered creating database tables."] = "Errors encountered creating database tables."; App::$strings["<h1>What next</h1>"] = "<h1>What next</h1>"; App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT: You will need to [manually] setup a scheduled task for the poller."; -App::$strings["No valid account found."] = "Geen geldige account gevonden."; -App::$strings["Password reset request issued. Check your email."] = "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail."; -App::$strings["Site Member (%s)"] = "Lid van hub (%s)"; -App::$strings["Password reset requested at %s"] = "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend"; -App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."; -App::$strings["Password Reset"] = "Wachtwoord vergeten?"; -App::$strings["Your password has been reset as requested."] = "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht."; -App::$strings["Your new password is"] = "Jouw nieuwe wachtwoord is"; -App::$strings["Save or copy your new password - and then"] = "Kopieer of sla je nieuwe wachtwoord op - en"; -App::$strings["click here to login"] = "klik dan hier om in te loggen"; -App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd."; -App::$strings["Your password has changed at %s"] = "Jouw wachtwoord op %s is veranderd"; -App::$strings["Forgot your Password?"] = "Wachtwoord vergeten?"; -App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies."; -App::$strings["Email Address"] = "E-mailadres"; -App::$strings["Reset"] = "Opnieuw instellen"; -App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s is %2\$s"; -App::$strings["Mood"] = "Stemming"; -App::$strings["Set your current mood and tell your friends"] = "Noteer je huidige stemming en toon het aan je connecties"; -App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd."; -App::$strings["Remove This Channel"] = "Verwijder dit kanaal"; -App::$strings["WARNING: "] = "WAARSCHUWING: "; -App::$strings["This channel will be completely removed from the network. "] = "Dit kanaal wordt volledig uit het \$Projectname-netwerk verwijderd."; -App::$strings["This action is permanent and can not be undone!"] = "Deze handeling is van permanente aard en kan niet meer worden teruggedraaid!"; -App::$strings["Please enter your password for verification:"] = "Vul je wachtwoord in ter verificatie:"; -App::$strings["Remove this channel and all its clones from the network"] = "Dit kanaal en alle klonen hiervan uit het \$Projectname-netwerk verwijderen"; -App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het \$Projectname-netwerk verwijderd"; -App::$strings["Remove Channel"] = "Kanaal verwijderen"; -App::$strings["No more system notifications."] = "Geen systeemnotificaties meer."; -App::$strings["System Notifications"] = "Systeemnotificaties"; -App::$strings["Profile Match"] = "Profielovereenkomst"; -App::$strings["No keywords to match. Please add keywords to your default profile."] = "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe."; -App::$strings["is interested in:"] = "is geïnteresseerd in:"; -App::$strings["Connect"] = "Verbinden"; -App::$strings["No matches"] = "Geen overeenkomsten"; +App::$strings["Item is not editable"] = "Item is niet te bewerken"; App::$strings["This site is not a directory server"] = "Deze hub is geen kanalengidshub (directoryserver)"; -App::$strings["This directory server requires an access token"] = "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig"; -App::$strings["Hub not found."] = "Hub niet gevonden."; -App::$strings["Page owner information could not be retrieved."] = "Informatie over de pagina-eigenaar werd niet ontvangen."; -App::$strings["Profile Photos"] = "Profielfoto's"; -App::$strings["Album not found."] = "Album niet gevonden."; -App::$strings["Delete Album"] = "Verwijder album"; -App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "Er bestaan meerdere submappen met deze albumnaam, maar verspreidt over verschillende mappen. Verwijder de gewenste map(pen) met de bestandsbeheerder."; -App::$strings["Delete Photo"] = "Verwijder foto"; -App::$strings["Public access denied."] = "Openbare toegang geweigerd."; -App::$strings["No photos selected"] = "Geen foto's geselecteerd"; -App::$strings["Access to this item is restricted."] = "Toegang tot dit item is beperkt."; -App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt."; -App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB aan foto-opslag gebruikt."; -App::$strings["Upload Photos"] = "Foto's uploaden"; -App::$strings["Enter an album name"] = "Vul een albumnaam in"; -App::$strings["or select an existing album (doubleclick)"] = "of kies een bestaand album (dubbelklikken)"; -App::$strings["Create a status post for this upload"] = "Plaats een bericht voor deze upload."; -App::$strings["Caption (optional):"] = "Bijschrift (optioneel):"; -App::$strings["Description (optional):"] = "Omschrijving (optioneel):"; -App::$strings["Album name could not be decoded"] = "Albumnaam kon niet gedecodeerd worden"; -App::$strings["Contact Photos"] = "Connectiefoto's"; -App::$strings["Show Newest First"] = "Nieuwste eerst weergeven"; -App::$strings["Show Oldest First"] = "Oudste eerst weergeven"; -App::$strings["View Photo"] = "Foto weergeven"; -App::$strings["Edit Album"] = "Album bewerken"; -App::$strings["Permission denied. Access to this item may be restricted."] = "Toegang geweigerd. Toegang tot dit item kan zijn beperkt."; -App::$strings["Photo not available"] = "Foto niet aanwezig"; -App::$strings["Use as profile photo"] = "Als profielfoto gebruiken"; -App::$strings["Use as cover photo"] = "Als omslagfoto gebruiken"; -App::$strings["Private Photo"] = "Privéfoto"; -App::$strings["Previous"] = "Vorige"; -App::$strings["View Full Size"] = "Volledige grootte weergeven"; -App::$strings["Edit photo"] = "Foto bewerken"; -App::$strings["Rotate CW (right)"] = "Draai met de klok mee (naar rechts)"; -App::$strings["Rotate CCW (left)"] = "Draai tegen de klok in (naar links)"; -App::$strings["Move photo to album"] = "Verplaatst foto naar album"; -App::$strings["Enter a new album name"] = "Vul een nieuwe albumnaam in"; -App::$strings["or select an existing one (doubleclick)"] = "of kies een bestaand album (dubbelklikken)"; -App::$strings["Caption"] = "Bijschrift"; -App::$strings["Add a Tag"] = "Tag toevoegen"; -App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl"; -App::$strings["Flag as adult in album view"] = "Markeer als voor volwassenen in albumweergave"; -App::$strings["I like this (toggle)"] = "Vind ik leuk"; -App::$strings["I don't like this (toggle)"] = "Vind ik niet leuk"; -App::$strings["Share"] = "Delen"; -App::$strings["Please wait"] = "Even wachten"; -App::$strings["This is you"] = "Dit ben jij"; -App::$strings["Comment"] = "Reactie"; -App::$strings["Preview"] = "Voorvertoning"; -App::$strings["__ctx:title__ Likes"] = "vinden dit leuk"; -App::$strings["__ctx:title__ Dislikes"] = "vinden dit niet leuk"; -App::$strings["__ctx:title__ Agree"] = "eens"; -App::$strings["__ctx:title__ Disagree"] = "oneens"; -App::$strings["__ctx:title__ Abstain"] = "onthoudingen"; -App::$strings["__ctx:title__ Attending"] = "aanwezig"; -App::$strings["__ctx:title__ Not attending"] = "niet aanwezig"; -App::$strings["__ctx:title__ Might attend"] = "mogelijk aanwezig"; -App::$strings["View all"] = "Toon alles"; -App::$strings["__ctx:noun__ Like"] = array( - 0 => "vindt dit leuk", - 1 => "vinden dit leuk", -); -App::$strings["__ctx:noun__ Dislike"] = array( - 0 => "vindt dit niet leuk", - 1 => "vinden dit niet leuk", -); -App::$strings["Photo Tools"] = "Hulpmiddelen"; -App::$strings["In This Photo:"] = "Op deze foto:"; -App::$strings["Map"] = "Kaart"; -App::$strings["__ctx:noun__ Likes"] = "vinden dit leuk"; -App::$strings["__ctx:noun__ Dislikes"] = "vinden dit niet leuk"; -App::$strings["Close"] = "Sluiten"; -App::$strings["View Album"] = "Album weergeven"; -App::$strings["Recent Photos"] = "Recente foto's"; -App::$strings["Name or caption"] = "Naam"; -App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Voorbeelden: \"Jan Pietersen\", \"Willems weblog\", \"Computerforum\""; -App::$strings["Choose a short nickname"] = "Korte bijnaam"; -App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Deze bijnaam wordt gebruikt om een makkelijk te onthouden kanaaladres van jouw kanaal aan te maken, die je dan met anderen kunt delen. Bijvoorbeeld: bijnaam%s"; -App::$strings["Channel role and privacy"] = "Kanaaltype en privacy"; -App::$strings["Select a channel role with your privacy requirements."] = "Kies een kanaaltype met het door jou gewenste privacyniveau."; -App::$strings["Read more about roles"] = "Lees meer over kanaaltypes"; App::$strings["Create Channel"] = "Kanaal aanmaken"; App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Een kanaal is jouw identiteit in dit netwerk. Het kan bijvoorbeeld een persoon, een blog of een forum vertegenwoordigen. Door met elkaar te verbinden kunnen kanalen, met behulp van uitgebreide permissies, informatie uitwisselen."; App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "Of <a href=\"import\">importeer een bestaand kanaal</a> vanaf een andere locatie"; -App::$strings["sent you a private message"] = "stuurde jou een privébericht"; -App::$strings["added your channel"] = "voegde jouw kanaal toe"; -App::$strings["g A l F d"] = "G:i, l d F"; -App::$strings["[today]"] = "[vandaag]"; -App::$strings["posted an event"] = "plaatste een gebeurtenis"; -App::$strings["Invalid request identifier."] = "Ongeldige verzoek identificator (request identifier)"; -App::$strings["Discard"] = "Annuleren"; App::$strings["Mark all system notifications seen"] = "Markeer alle systeemnotificaties als bekeken"; App::$strings["Poke"] = "Aanstoten"; App::$strings["Poke somebody"] = "Iemand aanstoten"; @@ -1030,30 +968,79 @@ App::$strings["Poke, prod or do other things to somebody"] = "Iemand bijvoorbeel App::$strings["Recipient"] = "Ontvanger"; App::$strings["Choose what you wish to do to recipient"] = "Kies wat je met de ontvanger wil doen"; App::$strings["Make this post private"] = "Maak dit bericht privé"; -App::$strings["Apps"] = "Apps"; +App::$strings["Profile not found."] = "Profiel niet gevonden."; +App::$strings["Profile deleted."] = "Profiel verwijderd."; +App::$strings["Profile-"] = "Profiel-"; +App::$strings["New profile created."] = "Nieuw profiel aangemaakt."; +App::$strings["Profile unavailable to clone."] = "Profiel niet beschikbaar om te klonen"; +App::$strings["Profile unavailable to export."] = "Geen profiel beschikbaar om te exporteren"; +App::$strings["Profile Name is required."] = "Profielnaam is vereist"; +App::$strings["Marital Status"] = "Huwelijke status"; +App::$strings["Romantic Partner"] = "Romantische partner"; +App::$strings["Likes"] = "Houdt van"; +App::$strings["Dislikes"] = "Houdt niet van"; +App::$strings["Work/Employment"] = "Werk/arbeid"; +App::$strings["Religion"] = "Religie"; +App::$strings["Political Views"] = "Politieke overtuigingen"; +App::$strings["Gender"] = "Geslacht"; +App::$strings["Sexual Preference"] = "Seksuele voorkeur"; +App::$strings["Homepage"] = "Homepage"; +App::$strings["Interests"] = "Interesses"; +App::$strings["Profile updated."] = "Profiel bijgewerkt"; +App::$strings["Hide your connections list from viewers of this profile"] = "Laat de lijst met connecties niet aan bezoekers van dit profiel zien."; +App::$strings["Edit Profile Details"] = "Profiel bewerken"; +App::$strings["View this profile"] = "Profiel weergeven"; +App::$strings["Edit visibility"] = "Zichtbaarheid bewerken"; +App::$strings["Profile Tools"] = "Hulpmiddelen"; +App::$strings["Change cover photo"] = "Omslagfoto wijzigen"; +App::$strings["Change profile photo"] = "Profielfoto veranderen"; +App::$strings["Create a new profile using these settings"] = "Een nieuw profiel aanmaken met dit profiel als basis"; +App::$strings["Clone this profile"] = "Dit profiel klonen"; +App::$strings["Delete this profile"] = "Dit profiel verwijderen"; +App::$strings["Add profile things"] = "Dingen aan je profiel toevoegen"; +App::$strings["Personal"] = "Persoonlijk"; +App::$strings["Relation"] = "Relatie"; +App::$strings["Miscellaneous"] = "Diversen"; +App::$strings["Import profile from file"] = "Profiel vanuit bestand importeren"; +App::$strings["Export profile to file"] = "Profiel naar bestand exporteren"; +App::$strings["Your gender"] = "Jouw geslacht"; +App::$strings["Marital status"] = "Burgerlijke staat"; +App::$strings["Sexual preference"] = "Seksuele voorkeur"; +App::$strings["Profile name"] = "Profielnaam"; +App::$strings["This is your default profile."] = "Dit is jouw standaardprofiel"; +App::$strings["Your full name"] = "Jouw volledige naam"; +App::$strings["Title/Description"] = "Titel/omschrijving"; +App::$strings["Street address"] = "Straat en huisnummer"; +App::$strings["Locality/City"] = "Woonplaats"; +App::$strings["Region/State"] = "Provincie/gewest/deelstaat"; +App::$strings["Postal/Zip code"] = "Postcode"; +App::$strings["Country"] = "Land"; +App::$strings["Who (if applicable)"] = "Wie (wanneer van toepassing)"; +App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Voorbeelden: petra123, Petra Jansen, petra@voorbeeld.nl"; +App::$strings["Since (date)"] = "Sinds (datum)"; +App::$strings["Tell us about yourself"] = "Vertel ons iets over jezelf"; +App::$strings["Homepage URL"] = "URL homepagina"; +App::$strings["Hometown"] = "Oorspronkelijk uit"; +App::$strings["Political views"] = "Politieke overtuigingen"; +App::$strings["Religious views"] = "Religieuze overtuigingen"; +App::$strings["Keywords used in directory listings"] = "Trefwoorden voor in de kanalengids"; +App::$strings["Example: fishing photography software"] = "Voorbeeld: muziek, fotografie, software"; +App::$strings["Musical interests"] = "Muzikale interesses"; +App::$strings["Books, literature"] = "Boeken/literatuur"; +App::$strings["Television"] = "Televisie"; +App::$strings["Film/Dance/Culture/Entertainment"] = "Film/dans/cultuur/entertainment"; +App::$strings["Hobbies/Interests"] = "Hobby's/interesses"; +App::$strings["Love/Romance"] = "Liefde/romantiek"; +App::$strings["School/Education"] = "School/opleiding"; +App::$strings["Contact information and social networks"] = "Contactinformatie en sociale netwerken"; +App::$strings["My other channels"] = "Mijn andere kanalen"; +App::$strings["Profile Image"] = "Profielfoto"; +App::$strings["Edit Profiles"] = "Bewerk profielen"; App::$strings["Unable to find your hub."] = "Niet in staat om je hub te vinden"; App::$strings["Post successful."] = "Verzenden bericht geslaagd."; -App::$strings["Invalid profile identifier."] = "Ongeldige profiel-identificator"; -App::$strings["Profile Visibility Editor"] = "Zichtbaarheid profiel "; -App::$strings["Profile"] = "Profiel"; -App::$strings["Click on a contact to add or remove."] = "Klik op een connectie om deze toe te voegen of te verwijderen"; -App::$strings["Visible To"] = "Zichtbaar voor"; App::$strings["This setting requires special processing and editing has been blocked."] = "Deze instelling vereist een speciaal proces en bewerken is geblokkeerd."; App::$strings["Configuration Editor"] = "Configuratiebewerker"; 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."] = "Waarschuwing: het veranderen van sommige instellingen kunnen jouw kanaal onklaar maken. Verlaat deze pagina, tenzij je weet waar je mee bezig bent en voldoende kennis bezit over hoe je deze functies moet gebruiken. "; -App::$strings["Version %s"] = "Versie %s"; -App::$strings["Installed plugins/addons/apps:"] = "Ingeschakelde plugins en apps:"; -App::$strings["No installed plugins/addons/apps"] = "Geen ingeschakelde plugins en apps"; -App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Dit is een \$Projectname-hub - \$Projectname is een wereldwijd coöperatief netwerk van gedecentraliseerde websites (hubs) met verbeterde privacy."; -App::$strings["Tag: "] = "Tag: "; -App::$strings["Last background fetch: "] = "Meest recente achtergrond-fetch:"; -App::$strings["Current load average: "] = "Gemiddelde systeembelasting is nu:"; -App::$strings["Running at web location"] = "Draaiend op weblocatie"; -App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Bezoek <a href=\"http://hubzilla.org\">hubzilla.org</a> "; -App::$strings["Bug reports and issues: please visit"] = "Bugrapporten en andere kwesties: bezoek"; -App::$strings["\$projectname issues"] = "\$projectname-issues"; -App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist - dot com"; -App::$strings["Site Administrators"] = "Hubbeheerders: "; App::$strings["Blocks"] = "Blokken"; App::$strings["Block Title"] = "Bloktitel"; App::$strings["Layouts"] = "Lay-outs"; @@ -1061,68 +1048,79 @@ App::$strings["Help"] = "Hulp"; App::$strings["Comanche page description language help"] = "Hulp met de paginabeschrijvingstaal Comanche"; App::$strings["Layout Description"] = "Lay-out-omschrijving"; App::$strings["Download PDL file"] = "Download PDL-bestand"; -App::$strings["# Accounts"] = "# accounts"; -App::$strings["# blocked accounts"] = "# geblokkeerde accounts"; -App::$strings["# expired accounts"] = "# verlopen accounts"; -App::$strings["# expiring accounts"] = "# accounts die nog moeten verlopen"; -App::$strings["# Channels"] = "# Kanalen"; -App::$strings["# primary"] = "# primair"; -App::$strings["# clones"] = "# klonen"; -App::$strings["Message queues"] = "Berichtenwachtrij"; -App::$strings["Your software should be updated"] = "Jouw software moet worden bijgewerkt "; -App::$strings["Summary"] = "Samenvatting"; -App::$strings["Registered accounts"] = "Geregistreerde accounts"; -App::$strings["Pending registrations"] = "Accounts die op goedkeuring wachten"; -App::$strings["Registered channels"] = "Geregistreerde kanalen"; -App::$strings["Active plugins"] = "Ingeschakelde plugins"; -App::$strings["Version"] = "Versie"; -App::$strings["Repository version (master)"] = "Versie repository (master)"; -App::$strings["Repository version (dev)"] = "Versie repository (dev)"; +App::$strings["Website:"] = "Website:"; +App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Kanaal op afstand [%s] (nog niet op deze hub bekend)"; +App::$strings["Rating (this information is public)"] = "Beoordeling (deze informatie is openbaar)"; +App::$strings["Optionally explain your rating (this information is public)"] = "Verklaar jouw beoordeling (niet verplicht, deze informatie is openbaar)"; +App::$strings["Like/Dislike"] = "Leuk/niet leuk"; +App::$strings["This action is restricted to members."] = "Deze actie kan alleen door \$Projectname-leden worden uitgevoerd."; +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."] = "Je dient <a href=\"rmagic\">in te loggen met je \$Projectname-account</a> of <a href=\"register\">een nieuw \$Projectname-account aan te maken</a> om verder te kunnen gaan."; +App::$strings["Invalid request."] = "Ongeldig verzoek"; +App::$strings["channel"] = "kanaal"; +App::$strings["thing"] = "ding"; +App::$strings["Channel unavailable."] = "Kanaal niet beschikbaar."; +App::$strings["Previous action reversed."] = "Vorige actie omgedraaid"; +App::$strings["photo"] = "foto"; +App::$strings["status"] = "bericht"; +App::$strings["event"] = "gebeurtenis"; +App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s leuk"; +App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s niet leuk"; +App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s is het eens met %2\$s's %3\$s"; +App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s is het niet eens met %2\$s's %3\$s"; +App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s onthoudt zich van een besluit over %2\$s's %3\$s"; +App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s is aanwezig op %2\$s's %3\$s"; +App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s is niet aanwezig op %2\$s's %3\$s"; +App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s is mogelijk aanwezig op %2\$s's %3\$s"; +App::$strings["Action completed."] = "Actie voltooid"; +App::$strings["Thank you."] = "Bedankt"; App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven."; +App::$strings["Use Photo for Profile"] = "Als profielfoto gebruiken"; App::$strings["Upload Profile Photo"] = "Profielfoto uploaden"; -App::$strings["Permissions denied."] = "Permissies niet toegestaan"; -App::$strings["l, F j"] = "l j F"; -App::$strings["Link to Source"] = "Originele locatie"; -App::$strings["Edit Event"] = "Gebeurtenis bewerken"; -App::$strings["Create Event"] = "Gebeurtenis aanmaken"; -App::$strings["Export"] = "Exporteren"; -App::$strings["Import"] = "Importeren"; -App::$strings["Today"] = "Vandaag"; +App::$strings["Use"] = "Gebruiken"; +App::$strings["Items tagged with: %s"] = "Items getagd met %s"; +App::$strings["Search results for: %s"] = "Zoekresultaten voor %s"; App::$strings["No channel."] = "Geen kanaal."; App::$strings["Common connections"] = "Veel voorkomende connecties"; App::$strings["No connections in common."] = "Geen gemeenschappelijke connecties."; -App::$strings["No ratings"] = "Geen beoordelingen"; -App::$strings["Rating: "] = "Beoordeling: "; -App::$strings["Website: "] = "Website: "; -App::$strings["Description: "] = "Omschrijving: "; -App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximum toegestane dagelijkse registraties op deze \$Projectname-hub bereikt. Probeer het morgen (UTC) nogmaals."; -App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden."; -App::$strings["Passwords do not match."] = "Wachtwoorden komen niet met elkaar overeen."; -App::$strings["Registration successful. Please check your email for validation instructions."] = "Registratie geslaagd. Controleer je e-mail voor instructies."; -App::$strings["Your registration is pending approval by the site owner."] = "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze \$Projectname-hub."; -App::$strings["Your registration can not be processed."] = "Jouw registratie kan niet verwerkt worden."; -App::$strings["Registration on this hub is disabled."] = "Registreren van nieuwe accounts is op deze hub uitgeschakeld."; -App::$strings["Registration on this hub is by approval only."] = "Registraties op deze hub moeten eerst worden goedgekeurd."; -App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registreer op een andere hub</a>."; -App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Deze \$Projectname-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals."; -App::$strings["Terms of Service"] = "Gebruiksvoorwaarden"; -App::$strings["I accept the %s for this website"] = "Ik accepteer de %s van deze \$Projectname-hub"; -App::$strings["I am over 13 years of age and accept the %s for this website"] = "Ik ben 13 jaar of ouder en accepteer de %s van deze \$Projectname-hub"; -App::$strings["Your email address"] = "Jouw e-mailadres"; -App::$strings["Choose a password"] = "Geef een wachtwoord op"; -App::$strings["Please re-enter your password"] = "Geef het wachtwoord opnieuw op"; -App::$strings["Please enter your invitation code"] = "Vul jouw uitnodigingscode in"; -App::$strings["no"] = "Nee"; -App::$strings["yes"] = "Ja"; -App::$strings["Membership on this site is by invitation only."] = "Registreren op deze \$Projectname-hub kan alleen op uitnodiging."; -App::$strings["Register"] = "Registreren"; -App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Mogelijk moet op deze hub eerst jouw e-mail geverifieerd worden. Wanneer je na het indienen van dit formulier op de inlogpagina terecht komt, dan dien je jouw e-mail te controleren voor instructies. Controleer eventueel ook jouw spamfolder."; -App::$strings["Documentation Search"] = "Zoek documentatie"; -App::$strings["\$Projectname Documentation"] = "\$Projectname-documentatie"; +App::$strings["Authorize application connection"] = "Geef toestemming voor applicatiekoppeling"; +App::$strings["Return to your app and insert this Security Code:"] = "Ga terug naar je app en voeg deze beveiligingscode in:"; +App::$strings["Please login to continue."] = "Inloggen om verder te kunnen gaan."; +App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?"; +App::$strings["sent you a private message"] = "stuurde jou een privébericht"; +App::$strings["added your channel"] = "voegde jouw kanaal toe"; +App::$strings["g A l F d"] = "G:i, l d F"; +App::$strings["[today]"] = "[vandaag]"; +App::$strings["posted an event"] = "plaatste een gebeurtenis"; +App::$strings["About this site"] = "Over deze hub"; +App::$strings["Site Name"] = "Hubnaam"; +App::$strings["Administrator"] = "Beheerder"; +App::$strings["Software and Project information"] = "Software- en projectinformatie"; +App::$strings["This site is powered by \$Projectname"] = "Dit is een \$Projectname-hub"; +App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Federatieve en gedecentraliseerde netwerk- en identiteitsdiensten, mogelijk gemaakt door Zot"; +App::$strings["Version %s"] = "Versie %s"; +App::$strings["Project homepage"] = "Projectwebsite"; +App::$strings["Developer homepage"] = "Ontwikkelaarswebsite"; +App::$strings["No valid account found."] = "Geen geldige account gevonden."; +App::$strings["Password reset request issued. Check your email."] = "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail."; +App::$strings["Site Member (%s)"] = "Lid van hub (%s)"; +App::$strings["Password reset requested at %s"] = "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend"; +App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."; +App::$strings["Password Reset"] = "Wachtwoord vergeten?"; +App::$strings["Your password has been reset as requested."] = "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht."; +App::$strings["Your new password is"] = "Jouw nieuwe wachtwoord is"; +App::$strings["Save or copy your new password - and then"] = "Kopieer of sla je nieuwe wachtwoord op - en"; +App::$strings["click here to login"] = "klik dan hier om in te loggen"; +App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd."; +App::$strings["Your password has changed at %s"] = "Jouw wachtwoord op %s is veranderd"; +App::$strings["Forgot your Password?"] = "Wachtwoord vergeten?"; +App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies."; +App::$strings["Email Address"] = "E-mailadres"; +App::$strings["Reset"] = "Opnieuw instellen"; App::$strings["Select a bookmark folder"] = "Kies een bladwijzermap"; App::$strings["Save Bookmark"] = "Bladwijzer opslaan"; App::$strings["URL of bookmark"] = "URL van bladwijzer"; App::$strings["Or enter new bookmark folder name"] = "Of geef de naam op van een nieuwe bladwijzermap"; +App::$strings["This directory server requires an access token"] = "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig"; App::$strings["Authentication failed."] = "Authenticatie mislukt."; App::$strings["Remote Authentication"] = "Authenticatie op afstand"; App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Vul jouw kanaaladres in (bijv. channel@example.com)"; @@ -1130,10 +1128,56 @@ App::$strings["Authenticate"] = "Authenticeren"; App::$strings["Please login."] = "Inloggen."; App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Het verwijderen van een account is niet toegestaan binnen 48 uur nadat het wachtwoord is veranderd."; App::$strings["Remove This Account"] = "Verwijder dit account"; +App::$strings["WARNING: "] = "WAARSCHUWING: "; App::$strings["This account and all its channels will be completely removed from the network. "] = "Dit account en al zijn kanalen worden volledig uit het \$Projectname-netwerk verwijderd."; +App::$strings["This action is permanent and can not be undone!"] = "Deze handeling is van permanente aard en kan niet meer worden teruggedraaid!"; +App::$strings["Please enter your password for verification:"] = "Vul je wachtwoord in ter verificatie:"; App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Dit account, al zijn kanalen en alle klonen van zijn kanalen uit het \$Projectname-netwerk verwijderen"; App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Standaard worden alleen de kanalen die zich op deze hub bevinden uit het \$Projectname-netwerk verwijderd"; App::$strings["Remove Account"] = "Account verwijderen"; +App::$strings["Layout updated."] = "Lay-out bijgewerkt."; +App::$strings["Feature disabled."] = "Functie uitgeschakeld."; +App::$strings["Edit System Page Description"] = "Systeempagina's bewerken"; +App::$strings["Layout not found."] = "Lay-out niet gevonden."; +App::$strings["Module Name:"] = "Modulenaam:"; +App::$strings["Layout Help"] = "Lay-out-hulp"; +App::$strings["Export Channel"] = "Kanaal exporteren"; +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."] = "Exporteer de basisinformatie van jouw kanaal naar een bestand. Dit fungeert als een back-up van jouw connecties, permissies, profiel en basisgegevens, die gebruikt kan worden om op een nieuwe hub jouw gegevens te importeren. Deze back-up bevat echter niet de inhoud van jouw kanaal."; +App::$strings["Export Content"] = "Inhoud exporteren"; +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."] = "Exporteer informatie en recente inhoud van jouw kanaal naar een JSON-back-up, wat kan worden gebruikt om jouw kanaal te herstellen of te importeren op een andere hub. Dit slaat al jouw connecties, permissies, profielgegevens en enkele maanden aan inhoud van jouw kanaal op. Dit bestand kan ZEER groot worden. Wees geduldig - het kan enkele minuten duren voordat de download begint."; +App::$strings["Export your posts from a given year."] = "Exporteer jouw berichten uit een bepaald jaar."; +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."] = "Je kan ook berichten en conversaties uit een bepaald jaar of van een bepaalde maand exporteren. Verander de datum in de adresbalk van jouw webbrowser om andere jaren en maanden te selecteren. Wanneer het exporteren mislukt (waarschijnlijk door een gebrek aan beschikbaar servergeheugen), probeer het dan nogmaals met een beperkter tijdvak."; +App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Bezoek <a href=\"%1\$s\">%2\$s</a> om alle berichten van bijvoorbeeld dit jaar te selecteren. "; +App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Bezoek <a href=\"%1\$s\">%2\$s</a> om alle berichten van bijvoorbeeld januari dit jaar te selecteren."; +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)."] = "Deze back-up-bestanden kunnen geïmporteerd of hersteld worden door op jouw hub en met jouw kanaal <a href=\"%1\$s\">%2\$s</a> te bezoeken. Voor het beste resultaat kan je de bestanden in chronologische volgorde importeren of herstellen."; +App::$strings["Permissions denied."] = "Permissies niet toegestaan"; +App::$strings["l, F j"] = "l j F"; +App::$strings["Link to Source"] = "Originele locatie"; +App::$strings["Edit Event"] = "Gebeurtenis bewerken"; +App::$strings["Create Event"] = "Gebeurtenis aanmaken"; +App::$strings["Export"] = "Exporteren"; +App::$strings["Import"] = "Importeren"; +App::$strings["Today"] = "Vandaag"; +App::$strings["# Accounts"] = "# accounts"; +App::$strings["# blocked accounts"] = "# geblokkeerde accounts"; +App::$strings["# expired accounts"] = "# verlopen accounts"; +App::$strings["# expiring accounts"] = "# accounts die nog moeten verlopen"; +App::$strings["# Channels"] = "# Kanalen"; +App::$strings["# primary"] = "# primair"; +App::$strings["# clones"] = "# klonen"; +App::$strings["Message queues"] = "Berichtenwachtrij"; +App::$strings["Your software should be updated"] = "Jouw software moet worden bijgewerkt "; +App::$strings["Summary"] = "Samenvatting"; +App::$strings["Registered accounts"] = "Geregistreerde accounts"; +App::$strings["Pending registrations"] = "Accounts die op goedkeuring wachten"; +App::$strings["Registered channels"] = "Geregistreerde kanalen"; +App::$strings["Active plugins"] = "Ingeschakelde plugins"; +App::$strings["Version"] = "Versie"; +App::$strings["Repository version (master)"] = "Versie repository (master)"; +App::$strings["Repository version (dev)"] = "Versie repository (dev)"; +App::$strings["Remote privacy information not available."] = "Privacy-informatie op afstand niet beschikbaar."; +App::$strings["Visible to:"] = "Zichtbaar voor:"; +App::$strings["No service class restrictions found."] = "Geen abonnementsbeperkingen gevonden."; App::$strings["Import Webpage Elements"] = "Webpagina-elementen importeren"; App::$strings["Import selected"] = "Importbestand geselecteerd"; App::$strings["Export Webpage Elements"] = "Webpagina-elementen exporteren"; @@ -1143,98 +1187,50 @@ App::$strings["Actions"] = "Acties"; App::$strings["Page Link"] = "Paginalink"; App::$strings["Page Title"] = "Paginatitel"; App::$strings["Invalid file type."] = "Ongeldig bestandsformaat"; -App::$strings["Error opening zip file"] = "Fout met openen zipbestand"; +App::$strings["Error opening zip file"] = "Fout tijdens openen zipbestand"; App::$strings["Invalid folder path."] = "Ongeldige maplocatie"; App::$strings["No webpage elements detected."] = "Geen webpagina-elementen gedecteerd"; App::$strings["Import complete."] = "Importeren voltooid."; -App::$strings["Export Channel"] = "Kanaal exporteren"; -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."] = "Exporteer de basisinformatie van jouw kanaal naar een bestand. Dit fungeert als een back-up van jouw connecties, permissies, profiel en basisgegevens, die gebruikt kan worden om op een nieuwe hub jouw gegevens te importeren. Deze back-up bevat echter niet de inhoud van jouw kanaal."; -App::$strings["Export Content"] = "Inhoud exporteren"; -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."] = "Exporteer informatie en recente inhoud van jouw kanaal naar een JSON-back-up, wat kan worden gebruikt om jouw kanaal te herstellen of te importeren op een andere hub. Dit slaat al jouw connecties, permissies, profielgegevens en enkele maanden aan inhoud van jouw kanaal op. Dit bestand kan ZEER groot worden. Wees geduldig - het kan enkele minuten duren voordat de download begint."; -App::$strings["Export your posts from a given year."] = "Exporteer jouw berichten uit een bepaald jaar."; -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."] = "Je kan ook berichten en conversaties uit een bepaald jaar of van een bepaalde maand exporteren. Verander de datum in de adresbalk van jouw webbrowser om andere jaren en maanden te selecteren. Wanneer het exporteren mislukt (waarschijnlijk door een gebrek aan beschikbaar servergeheugen), probeer het dan nogmaals met een beperkter tijdvak."; -App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Bezoek <a href=\"%1\$s\">%2\$s</a> om alle berichten van bijvoorbeeld dit jaar te selecteren. "; -App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Bezoek <a href=\"%1\$s\">%2\$s</a> om alle berichten van bijvoorbeeld januari dit jaar te selecteren."; -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)."] = "Deze back-up-bestanden kunnen geïmporteerd of hersteld worden door op jouw hub en met jouw kanaal <a href=\"%1\$s\">%2\$s</a> te bezoeken. Voor het beste resultaat kan je de bestanden in chronologische volgorde importeren of herstellen."; -App::$strings["Item is not editable"] = "Item is niet te bewerken"; -App::$strings["Items tagged with: %s"] = "Items getagd met %s"; -App::$strings["Search results for: %s"] = "Zoekresultaten voor %s"; -App::$strings["Calendar entries imported."] = "Agenda-items geïmporteerd."; -App::$strings["No calendar entries found."] = "Geen agenda-items gevonden."; -App::$strings["Event can not end before it has started."] = "Gebeurtenis kan niet eindigen voordat het is begonnen"; -App::$strings["Unable to generate preview."] = "Niet in staat om voorvertoning te genereren"; -App::$strings["Event title and start time are required."] = "Titel en begintijd van gebeurtenis zijn vereist."; -App::$strings["Event not found."] = "Gebeurtenis niet gevonden"; -App::$strings["Edit event title"] = "Titel bewerken"; -App::$strings["Event title"] = "Titel"; -App::$strings["Categories (comma-separated list)"] = "Categorieën (door komma's gescheiden lijst)"; -App::$strings["Edit Category"] = "Categorie"; -App::$strings["Category"] = "Categorie"; -App::$strings["Edit start date and time"] = "Begindatum en -tijd bewerken"; -App::$strings["Start date and time"] = "Begindatum en -tijd"; -App::$strings["Finish date and time are not known or not relevant"] = "Einddatum en -tijd zijn niet bekend of niet van toepassing"; -App::$strings["Edit finish date and time"] = "Einddatum en -tijd bewerken"; -App::$strings["Finish date and time"] = "Einddatum en -tijd"; -App::$strings["Adjust for viewer timezone"] = "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt"; -App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Belangrijk voor gebeurtenissen die op een bepaalde locatie plaatsvinden. Niet praktisch voor wereldwijde feestdagen."; -App::$strings["Edit Description"] = "Omschrijving bewerken"; -App::$strings["Edit Location"] = "Locatie bewerken"; -App::$strings["Share this event"] = "Deel deze gebeurtenis"; -App::$strings["Permission settings"] = "Permissies"; -App::$strings["Advanced Options"] = "Geavanceerde opties"; -App::$strings["Edit event"] = "Gebeurtenis bewerken"; -App::$strings["Delete event"] = "Gebeurtenis verwijderen"; -App::$strings["calendar"] = "agenda"; -App::$strings["Month"] = "Maand"; -App::$strings["Week"] = "Week"; -App::$strings["Day"] = "Dag"; -App::$strings["Event removed"] = "Gebeurtenis verwijderd"; -App::$strings["Failed to remove event"] = "Verwijderen gebeurtenis mislukt"; -App::$strings["No service class restrictions found."] = "Geen abonnementsbeperkingen gevonden."; -App::$strings["Thing updated"] = "Ding bijgewerkt"; -App::$strings["Object store: failed"] = "Opslaan van ding mislukt"; -App::$strings["Thing added"] = "Ding toegevoegd"; -App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s"; -App::$strings["Show Thing"] = "Ding weergeven"; -App::$strings["item not found."] = "Item niet gevonden"; -App::$strings["Edit Thing"] = "Ding bewerken"; -App::$strings["Select a profile"] = "Kies een profiel"; -App::$strings["Post an activity"] = "Plaats een bericht"; -App::$strings["Only sends to viewers of the applicable profile"] = "Toont dit alleen aan diegene die het gekozen profiel mogen zien."; -App::$strings["Name of thing e.g. something"] = "Naam van ding"; -App::$strings["URL of thing (optional)"] = "URL van ding (optioneel)"; -App::$strings["URL for photo of thing (optional)"] = "URL voor foto van ding (optioneel)"; -App::$strings["Add Thing to your Profile"] = "Ding aan je profiel toevoegen"; -App::$strings["Unable to locate original post."] = "Niet in staat om de originele locatie van het bericht te vinden. "; -App::$strings["Empty post discarded."] = "Leeg bericht geannuleerd"; -App::$strings["Executable content type not permitted to this channel."] = "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal."; -App::$strings["Duplicate post suppressed."] = "Dubbel bericht tegengehouden."; -App::$strings["System error. Post not saved."] = "Systeemfout. Bericht niet opgeslagen."; -App::$strings["Unable to obtain post information from database."] = "Niet in staat om informatie over dit bericht uit de database te verkrijgen."; -App::$strings["You have reached your limit of %1$.0f top level posts."] = "Je hebt jouw limiet van %1$.0f berichten bereikt."; -App::$strings["You have reached your limit of %1$.0f webpages."] = "Je hebt jouw limiet van %1$.0f webpagina's bereikt."; +App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd."; +App::$strings["Remove This Channel"] = "Verwijder dit kanaal"; +App::$strings["This channel will be completely removed from the network. "] = "Dit kanaal wordt volledig uit het \$Projectname-netwerk verwijderd."; +App::$strings["Remove this channel and all its clones from the network"] = "Dit kanaal en alle klonen hiervan uit het \$Projectname-netwerk verwijderen"; +App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het \$Projectname-netwerk verwijderd"; +App::$strings["Remove Channel"] = "Kanaal verwijderen"; App::$strings["Files: shared with me"] = "Bestanden: met mij gedeeld"; App::$strings["NEW"] = "NIEUW"; App::$strings["Remove all files"] = "Verwijder alle bestanden"; App::$strings["Remove this file"] = "Verwijder dit bestand"; App::$strings["Not found"] = "Niet gevonden"; -App::$strings["Wiki"] = "Wiki"; -App::$strings["Sandbox"] = "Zandbak"; -App::$strings["\"# Wiki Sandbox\\n\\nContent you **edit** and **preview** here *will not be saved*.\""] = "\"# Wiki Sandbox\\n\\nWat er hier onder **edit** en **preview** staat *wordt niet opgeslagen*.\""; +App::$strings["Invalid channel"] = "Onbekend kanaal"; +App::$strings["Error retrieving wiki"] = "Fout tijdens ophalen wiki"; +App::$strings["Error creating zip file export folder"] = "Fout tijdens aanmaken exportmap zipbestand"; +App::$strings["Error downloading wiki: "] = "Fout tijdens downloaden wiki: "; +App::$strings["Wikis"] = "Wiki's"; +App::$strings["Download"] = "Download"; +App::$strings["Wiki name"] = "Naam wiki"; +App::$strings["Content type"] = "Opmaaktype"; +App::$strings["Create a status post for this wiki"] = "Plaats een bericht over deze wiki"; +App::$strings["Wiki not found"] = "Wiki is niet gevonden"; +App::$strings["Rename page"] = "Pagina hernoemen"; +App::$strings["Error retrieving page content"] = "Fout tijdens ophalen inhoud pagina"; App::$strings["Revision Comparison"] = "Revisies vergelijken"; App::$strings["Revert"] = "Ongedaan maken"; -App::$strings["Enter the name of your new wiki:"] = "Vul de naam in van jouw nieuwe wiki:"; -App::$strings["Enter the name of the new page:"] = "Vul de naam in van de nieuwe pagina:"; -App::$strings["Enter the new name:"] = "Vul de nieuwe naam in:"; +App::$strings["Source"] = "Bron"; +App::$strings["New page name"] = "Nieuwe paginanaam"; App::$strings["Embed image from photo albums"] = "Afbeelding uit een fotoalbum invoegen"; App::$strings["Embed an image from your albums"] = "Afbeelding uit jouw albums invoegen"; App::$strings["OK"] = "OK"; App::$strings["Choose images to embed"] = "Kies afbeeldingen om in te voegen"; App::$strings["Choose an album"] = "Kies een album"; -App::$strings["Choose a different album..."] = "Kies een ander album..."; -App::$strings["Error getting album list"] = "Fout met ophalen albumlijst"; -App::$strings["Error getting photo link"] = "Fout met ophalen fotolink"; -App::$strings["Error getting album"] = "Fout met ophalen album"; +App::$strings["Choose a different album"] = "Kies een ander album"; +App::$strings["Error getting album list"] = "Fout tijdens ophalen albumlijst"; +App::$strings["Error getting photo link"] = "Fout tijdens ophalen fotolink"; +App::$strings["Error getting album"] = "Fout tijdens ophalen album"; +App::$strings["Error creating wiki. Invalid name."] = "Fout tijdens aanmaken wiki. Ongeldige naam."; +App::$strings["Wiki created, but error creating Home page."] = "Wiki aangemaakt, maar fout tijdens aanmaken homepagina."; +App::$strings["Error creating wiki"] = "Fout tijdens aanmaken wiki."; +App::$strings["New page created"] = "Nieuwe pagina aangemaakt"; App::$strings["Failed to create source. No channel selected."] = "Aanmaken bron mislukt. Geen kanaal geselecteerd."; App::$strings["Source created."] = "Bron aangemaakt."; App::$strings["Source updated."] = "Bron aangemaakt."; @@ -1257,60 +1253,34 @@ App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s volgt het %3\$s van % App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s volgt het %3\$s van %2\$s niet meer"; App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probeer het dan over 24 uur weer."; App::$strings["Ignore/Hide"] = "Negeren/Verbergen"; -App::$strings["Channel Suggestions"] = "Voorgestelde kanalen"; App::$strings["post"] = "bericht"; App::$strings["comment"] = "reactie"; App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s heeft het %3\$s van %2\$s getagd met %4\$s"; -App::$strings["Tag removed"] = "Tag verwijderd"; -App::$strings["Remove Item Tag"] = "Verwijder item-tag"; -App::$strings["Select a tag to remove: "] = "Kies een tag om te verwijderen"; -App::$strings["Channel added."] = "Kanaal toegevoegd."; -App::$strings["No connections."] = "Geen connecties."; -App::$strings["Visit %s's profile [%s]"] = "Bezoek het profiel van %s [%s]"; -App::$strings["View Connections"] = "Connecties weergeven"; -App::$strings["Source of Item"] = "Bron van item"; -App::$strings["Room not found"] = "Chatkanaal niet gevonden"; -App::$strings["Leave Room"] = "Chatkanaal verlaten"; -App::$strings["Delete Room"] = "Chatkanaal verwijderen"; -App::$strings["I am away right now"] = "Ik ben momenteel afwezig"; -App::$strings["I am online"] = "Ik ben online"; -App::$strings["Bookmark this room"] = "Chatkanaal aan bladwijzers toevoegen"; -App::$strings["New Chatroom"] = "Nieuw chatkanaal"; -App::$strings["Chatroom name"] = "Naam chatkanaal"; -App::$strings["Expiration of chats (minutes)"] = "Aantal minuten voordat chatberichten worden verwijderd"; -App::$strings["%1\$s's Chatrooms"] = "Chatkanalen van %1\$s"; -App::$strings["No chatrooms available"] = "Geen chatkanalen beschikbaar"; -App::$strings["Expiration"] = "Verloopt na"; -App::$strings["min"] = "min"; -App::$strings["Xchan Lookup"] = "Xchan opzoeken"; -App::$strings["Lookup xchan beginning with (or webbie): "] = "Zoek een xchan (of webbie) die begint met:"; -App::$strings["%d rating"] = array( - 0 => "%d beoordeling", - 1 => "%d beoordelingen", -); -App::$strings["Gender: "] = "Geslacht:"; -App::$strings["Status: "] = "Status: "; -App::$strings["Homepage: "] = "Homepage: "; -App::$strings["Age:"] = "Leeftijd:"; -App::$strings["Location:"] = "Plaats:"; -App::$strings["Description:"] = "Omschrijving:"; -App::$strings["Hometown:"] = "Oorspronkelijk uit:"; -App::$strings["About:"] = "Over:"; -App::$strings["Public Forum:"] = "Openbaar forum:"; -App::$strings["Keywords: "] = "Trefwoorden: "; -App::$strings["Don't suggest"] = "Niet voorstellen"; -App::$strings["Common connections:"] = "Gemeenschappelijke connecties:"; -App::$strings["Global Directory"] = "Volledige kanalengids"; -App::$strings["Local Directory"] = "Lokale kanalengids"; -App::$strings["Finding:"] = "Gezocht naar:"; -App::$strings["next page"] = "volgende pagina"; -App::$strings["previous page"] = "vorige pagina"; -App::$strings["Sort options"] = "Sorteeropties"; -App::$strings["Alphabetic"] = "Alfabetisch"; -App::$strings["Reverse Alphabetic"] = "Omgekeerd alfabetisch"; -App::$strings["Newest to Oldest"] = "Nieuw naar oud"; -App::$strings["Oldest to Newest"] = "Oud naar nieuw"; -App::$strings["No entries (some entries may be hidden)."] = "Niets gevonden (sommige kanalen kunnen verborgen zijn)."; +App::$strings["Additional Features"] = "Extra functies"; +App::$strings["Name is required"] = "Naam is vereist"; +App::$strings["Key and Secret are required"] = "Key en secret zijn vereist"; +App::$strings["Add application"] = "Applicatie toevoegen"; +App::$strings["Name of application"] = "Naam van applicatie"; +App::$strings["Consumer Key"] = "Consumer key"; +App::$strings["Automatically generated - change if desired. Max length 20"] = "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20"; +App::$strings["Consumer Secret"] = "Consumer secret"; +App::$strings["Redirect"] = "Redirect/doorverwijzing"; +App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist"; +App::$strings["Icon url"] = "Pictogram-URL"; +App::$strings["Application not found."] = "Applicatie niet gevonden."; +App::$strings["Connected Apps"] = "Verbonden applicaties"; +App::$strings["Client key starts with"] = "Client key begint met"; +App::$strings["No name"] = "Geen naam"; +App::$strings["Remove authorization"] = "Autorisatie verwijderen"; +App::$strings["This channel is limited to %d tokens"] = "Dit kanaal heeft een limiet van %d tokens"; +App::$strings["Name and Password are required."] = "Naam en wachtwoord zijn vereist"; +App::$strings["Token saved."] = "Token opgeslagen."; +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."] = "Gebruik dit formulier om tijdelijke identiteiten aan te maken, waarmee je bepaalde informatie met niet-leden kan delen. Deze identiteiten kunnen onder Permissies (handmatige selectie) worden gebruikt. Gasten kunnen inloggen met onderstaande gegevens om zo toegang te krijgen tot privéinhoud."; +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:"] = "Je kan ook <em>dropbox</em>-achtige links aan mensen geven door bovenstaand wachtwoord op onderstaande manier aan een hub-URL toe te voegen. Voorbeelden:"; +App::$strings["Guest Access Tokens"] = "Gasttoegang"; +App::$strings["Login Name"] = "Inlognaam"; +App::$strings["Login Password"] = "Wachtwoord:"; +App::$strings["Expires (yyyy-mm-dd)"] = "Geldig t/m (yyyy-mm-dd)"; App::$strings["Not valid email."] = "Geen geldig e-mailadres."; App::$strings["Protected email address. Cannot change to that email."] = "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken."; App::$strings["System failure storing new email. Please try again."] = "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer."; @@ -1341,6 +1311,7 @@ App::$strings["Anybody on the internet"] = "Iedereen op het internet"; App::$strings["Publish your default profile in the network directory"] = "Publiceer je standaardprofiel in de kanalengids"; App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan nieuwe kanalen"; App::$strings["Your channel address is"] = "Jouw kanaaladres is"; +App::$strings["Your files/photos are accessible via WebDAV at"] = "Jouw bestanden/foto's zijn beschikbaar via WebDAV op"; App::$strings["Channel Settings"] = "Kanaal-instellingen"; App::$strings["Basic Settings"] = "Basis-instellingen"; App::$strings["Full Name:"] = "Volledige naam:"; @@ -1388,6 +1359,7 @@ App::$strings["You receive a private message"] = "Je een privé-bericht ontvangt App::$strings["You receive a friend suggestion"] = "Je een kanaalvoorstel ontvangt"; App::$strings["You are tagged in a post"] = "Je expliciet in een bericht bent genoemd"; App::$strings["You are poked/prodded/etc. in a post"] = "Je bent in een bericht aangestoten/gepord/etc."; +App::$strings["Someone likes your post/comment"] = "Iemand jouw bericht/reactie leuk vindt"; App::$strings["Show visual notifications including:"] = "Toon de volgende zichtbare notificaties:"; App::$strings["Unseen grid activity"] = "Niet bekeken grid-activiteit"; App::$strings["Unseen channel activity"] = "Niet bekeken kanaal-activiteit"; @@ -1432,6 +1404,8 @@ App::$strings["Minimum of 10 seconds, no maximum"] = "Minimaal 10 seconde, geen App::$strings["Maximum number of conversations to load at any time:"] = "Maximaal aantal conversaties die per keer geladen worden:"; App::$strings["Maximum of 100 items"] = "Maximaal 100 conversaties"; App::$strings["Show emoticons (smilies) as images"] = "Toon emoticons (smilies) als afbeeldingen"; +App::$strings["Manual conversation updates"] = "Handmatige conversatie-updates"; +App::$strings["Default is automatic, which may increase screen jumping"] = "Standaard is automatisch, maar soms kan het zorgen voor het verspringen van items"; App::$strings["Link post titles to source"] = "Berichtkoppen naar originele locatie linken"; App::$strings["System Page Layout Editor - (advanced)"] = "Lay-out bewerken van systeempagina's (geavanceerd)"; App::$strings["Use blog/list mode on channel page"] = "Gebruik blog/lijst-modus op kanaalpagina"; @@ -1442,78 +1416,106 @@ App::$strings["click to expand content exceeding this height"] = "klik om inhoud App::$strings["Grid page max height of content (in pixels)"] = "Maximale hoogte berichtinhoud op gridpagina (in pixels)"; App::$strings["No feature settings configured"] = "Geen plugin-instellingen aanwezig"; App::$strings["Feature/Addon Settings"] = "Plugin-instellingen"; -App::$strings["Additional Features"] = "Extra functies"; -App::$strings["Name is required"] = "Naam is vereist"; -App::$strings["Key and Secret are required"] = "Key en secret zijn vereist"; -App::$strings["Add application"] = "Applicatie toevoegen"; -App::$strings["Name of application"] = "Naam van applicatie"; -App::$strings["Consumer Key"] = "Consumer key"; -App::$strings["Automatically generated - change if desired. Max length 20"] = "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20"; -App::$strings["Consumer Secret"] = "Consumer secret"; -App::$strings["Redirect"] = "Redirect/doorverwijzing"; -App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist"; -App::$strings["Icon url"] = "Pictogram-URL"; -App::$strings["Application not found."] = "Applicatie niet gevonden."; -App::$strings["Connected Apps"] = "Verbonden applicaties"; -App::$strings["Client key starts with"] = "Client key begint met"; -App::$strings["No name"] = "Geen naam"; -App::$strings["Remove authorization"] = "Autorisatie verwijderen"; -App::$strings["This channel is limited to %d tokens"] = "Dit kanaal heeft een limiet van %d tokens"; -App::$strings["Name and Password are required."] = "Naam en wachtwoord zijn vereist"; -App::$strings["Token saved."] = "Token opgeslagen."; -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."] = "Gebruik dit formulier om tijdelijke identiteiten aan te maken, waarmee je bepaalde informatie met niet-leden kan delen. Deze identiteiten kunnen onder Permissies (handmatige selectie) worden gebruikt. Gasten kunnen inloggen met onderstaande gegevens om zo toegang te krijgen tot privéinhoud."; -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:"] = "Je kan ook <em>dropbox</em>-achtige links aan mensen geven door bovenstaand wachtwoord op onderstaande manier aan een hub-URL toe te voegen. Voorbeelden:"; -App::$strings["Guest Access Tokens"] = "Gasttoegang"; -App::$strings["Login Name"] = "Inlognaam"; -App::$strings["Login Password"] = "Wachtwoord:"; -App::$strings["Expires (yyyy-mm-dd)"] = "Geldig t/m (yyyy-mm-dd)"; +App::$strings["Tag removed"] = "Tag verwijderd"; +App::$strings["Remove Item Tag"] = "Verwijder item-tag"; +App::$strings["Select a tag to remove: "] = "Kies een tag om te verwijderen"; +App::$strings["Thing updated"] = "Ding bijgewerkt"; +App::$strings["Object store: failed"] = "Opslaan van ding mislukt"; +App::$strings["Thing added"] = "Ding toegevoegd"; +App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s"; +App::$strings["Show Thing"] = "Ding weergeven"; +App::$strings["item not found."] = "Item niet gevonden"; +App::$strings["Edit Thing"] = "Ding bewerken"; +App::$strings["Select a profile"] = "Kies een profiel"; +App::$strings["Post an activity"] = "Plaats een bericht"; +App::$strings["Only sends to viewers of the applicable profile"] = "Toont dit alleen aan diegene die het gekozen profiel mogen zien."; +App::$strings["Name of thing e.g. something"] = "Naam van ding"; +App::$strings["URL of thing (optional)"] = "URL van ding (optioneel)"; +App::$strings["URL for photo of thing (optional)"] = "URL voor foto van ding (optioneel)"; +App::$strings["Add Thing to your Profile"] = "Ding aan je profiel toevoegen"; +App::$strings["Your service plan only allows %d channels."] = "Jouw abonnement staat maar %d kanalen toe."; +App::$strings["Cloned channel not found. Import failed."] = "Gekloond kanaal niet gevonden. Importeren mislukt."; +App::$strings["No channel. Import failed."] = "Geen kanaal. Importeren mislukt."; +App::$strings["Import completed."] = "Import voltooid."; +App::$strings["You must be logged in to use this feature."] = "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken."; +App::$strings["Import Channel"] = "Kanaal importeren"; +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."] = "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken."; +App::$strings["Or provide the old server/hub details"] = "Of vul de gegevens van de oude hub in"; +App::$strings["Your old identity address (xyz@example.com)"] = "Jouw oude kanaaladres (xyz@example.com)"; +App::$strings["Your old login email address"] = "Het e-mailadres van je oude account"; +App::$strings["Your old login password"] = "Wachtwoord van jouw oude account"; +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."] = "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen."; +App::$strings["Make this hub my primary location"] = "Stel deze hub als mijn primaire locatie in"; +App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importeer bestaande berichten wanneer mogelijk (experimenteel - afhankelijk van beschikbaar servergeheugen)"; +App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dit proces kan enkele minuten in beslag nemen. Klik maar één keer op opslaan en verlaat deze pagina niet alvorens het proces is voltooid."; +App::$strings["No connections."] = "Geen connecties."; +App::$strings["Visit %s's profile [%s]"] = "Bezoek het profiel van %s [%s]"; +App::$strings["View Connections"] = "Connecties weergeven"; +App::$strings["Source of Item"] = "Bron van item"; +App::$strings["Room not found"] = "Chatkanaal niet gevonden"; +App::$strings["Leave Room"] = "Chatkanaal verlaten"; +App::$strings["Delete Room"] = "Chatkanaal verwijderen"; +App::$strings["I am away right now"] = "Ik ben momenteel afwezig"; +App::$strings["I am online"] = "Ik ben online"; +App::$strings["Bookmark this room"] = "Chatkanaal aan bladwijzers toevoegen"; +App::$strings["New Chatroom"] = "Nieuw chatkanaal"; +App::$strings["Chatroom name"] = "Naam chatkanaal"; +App::$strings["Expiration of chats (minutes)"] = "Aantal minuten voordat chatberichten worden verwijderd"; +App::$strings["%1\$s's Chatrooms"] = "Chatkanalen van %1\$s"; +App::$strings["No chatrooms available"] = "Geen chatkanalen beschikbaar"; +App::$strings["Expiration"] = "Verloopt na"; +App::$strings["min"] = "min"; +App::$strings["Xchan Lookup"] = "Xchan opzoeken"; +App::$strings["Lookup xchan beginning with (or webbie): "] = "Zoek een xchan (of webbie) die begint met:"; +App::$strings["Calendar entries imported."] = "Agenda-items geïmporteerd."; +App::$strings["No calendar entries found."] = "Geen agenda-items gevonden."; +App::$strings["Event can not end before it has started."] = "Gebeurtenis kan niet eindigen voordat het is begonnen"; +App::$strings["Unable to generate preview."] = "Niet in staat om voorvertoning te genereren"; +App::$strings["Event title and start time are required."] = "Titel en begintijd van gebeurtenis zijn vereist."; +App::$strings["Event not found."] = "Gebeurtenis niet gevonden"; +App::$strings["Edit event title"] = "Titel bewerken"; +App::$strings["Event title"] = "Titel"; +App::$strings["Categories (comma-separated list)"] = "Categorieën (door komma's gescheiden lijst)"; +App::$strings["Edit Category"] = "Categorie"; +App::$strings["Category"] = "Categorie"; +App::$strings["Edit start date and time"] = "Begindatum en -tijd bewerken"; +App::$strings["Start date and time"] = "Begindatum en -tijd"; +App::$strings["Finish date and time are not known or not relevant"] = "Einddatum en -tijd zijn niet bekend of niet van toepassing"; +App::$strings["Edit finish date and time"] = "Einddatum en -tijd bewerken"; +App::$strings["Finish date and time"] = "Einddatum en -tijd"; +App::$strings["Adjust for viewer timezone"] = "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt"; +App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Belangrijk voor gebeurtenissen die op een bepaalde locatie plaatsvinden. Niet praktisch voor wereldwijde feestdagen."; +App::$strings["Edit Description"] = "Omschrijving bewerken"; +App::$strings["Edit Location"] = "Locatie bewerken"; +App::$strings["Permission settings"] = "Permissies"; +App::$strings["Advanced Options"] = "Geavanceerde opties"; +App::$strings["Edit event"] = "Gebeurtenis bewerken"; +App::$strings["Delete event"] = "Gebeurtenis verwijderen"; +App::$strings["calendar"] = "agenda"; +App::$strings["Month"] = "Maand"; +App::$strings["Week"] = "Week"; +App::$strings["Day"] = "Dag"; +App::$strings["Event removed"] = "Gebeurtenis verwijderd"; +App::$strings["Failed to remove event"] = "Verwijderen gebeurtenis mislukt"; App::$strings["Missing room name"] = "Naam chatkanaal ontbreekt"; App::$strings["Duplicate room name"] = "Naam chatkanaal bestaat al"; App::$strings["Invalid room specifier."] = "Ongeldige omschrijving chatkanaal"; App::$strings["Room not found."] = "Chatkanaal niet gevonden"; App::$strings["Room is full"] = "Chatkanaal is vol"; -App::$strings["\$Projectname Notification"] = "\$Projectname-notificatie"; -App::$strings["\$projectname"] = "\$projectname"; -App::$strings["Thank You,"] = "Bedankt,"; -App::$strings["%s Administrator"] = "Beheerder %s"; -App::$strings["%s <!item_type!>"] = "%s <!item_type!>"; -App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Notificatie] Nieuw privébericht ontvangen op %s"; -App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s."; -App::$strings["%1\$s sent you %2\$s."] = "%1\$s zond jou %2\$s."; -App::$strings["a private message"] = "een privébericht"; -App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bezoek %s om je privéberichten te bekijken en/of er op te reageren."; -App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %4\$s[/zrl]"; -App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %5\$s van %4\$s[/zrl]"; -App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]jouw %4\$s[/zrl]"; -App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Notificatie] Reactie op conversatie #%1\$d door %2\$s"; -App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s gaf een reactie op een bericht/conversatie die jij volgt."; -App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bezoek %s om de conversatie te bekijken en/of er op te reageren."; -App::$strings["[\$Projectname:Notify] %s posted to your profile wall"] = "[\$Projectname:Notificatie] %s heeft een bericht op jouw kanaal geplaatst"; -App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s heeft om %3\$s een bericht op jouw kanaal geplaatst"; -App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s heeft een bericht op [zrl=%3\$s]jouw kanaal[/zrl] geplaatst"; -App::$strings["[\$Projectname:Notify] %s tagged you"] = "[\$Projectname:Notificatie] %s heeft jou genoemd"; -App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s noemde jou op %3\$s"; -App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]noemde jou[/zrl]."; -App::$strings["[\$Projectname:Notify] %1\$s poked you"] = "[\$Projectname:Notificatie] %1\$s heeft jou aangestoten"; -App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s heeft je aangestoten op %3\$s"; -App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]heeft je aangestoten[/zrl]."; -App::$strings["[\$Projectname:Notify] %s tagged your post"] = "[\$Projectname:Notificatie] %s heeft jouw bericht getagd"; -App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s heeft jouw bericht om %3\$s getagd"; -App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s heeft [zrl=%3\$s]jouw bericht[/zrl] getagd"; -App::$strings["[\$Projectname:Notify] Introduction received"] = "[\$Projectname:Notificatie] Connectieverzoek ontvangen"; -App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, je hebt een nieuw connectieverzoek ontvangen van '%2\$s' op %3\$s"; -App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, je hebt een [zrl=%2\$s]nieuw connectieverzoek[/zrl] ontvangen van %3\$s."; -App::$strings["You may visit their profile at %s"] = "Je kan het profiel bekijken op %s"; -App::$strings["Please visit %s to approve or reject the connection request."] = "Bezoek %s om het connectieverzoek te accepteren of af te wijzen."; -App::$strings["[\$Projectname:Notify] Friend suggestion received"] = "[\$Projectname:Notificatie] Kanaalvoorstel ontvangen"; -App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, je hebt een kanaalvoorstel ontvangen van '%2\$s' om %3\$s"; -App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, je hebt [zrl=%2\$s]een kanaalvoorstel[/zrl] ontvangen voor %3\$s van %4\$s."; -App::$strings["Name:"] = "Naam:"; -App::$strings["Photo:"] = "Foto:"; -App::$strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen."; -App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Notificatie]"; -App::$strings["created a new post"] = "maakte een nieuw bericht aan"; -App::$strings["commented on %s's post"] = "gaf een reactie op een bericht van %s"; +App::$strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld"; +App::$strings["Only me"] = "Alleen ik"; +App::$strings["Public"] = "Openbaar"; +App::$strings["Anybody in the \$Projectname network"] = "Iedereen in het \$Projectname-netwerk"; +App::$strings["Any account on %s"] = "Iedereen op %s"; +App::$strings["Any of my connections"] = "Al mijn geaccepteerde connecties"; +App::$strings["Only connections I specifically allow"] = "Alleen connecties die uitdrukkelijk door jou zijn toegestaan"; +App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)"; +App::$strings["Any connections including those who haven't yet been approved"] = "Al mijn geaccepteerde en nog niet geaccepteerde connecties"; +App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken"; +App::$strings["This is your default setting for who can view your default channel profile"] = "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken"; +App::$strings["This is your default setting for who can view your connections"] = "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken"; +App::$strings["This is your default setting for who can view your file storage and photos"] = "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken"; +App::$strings["This is your default setting for the audience of your webpages"] = "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken"; App::$strings["Private Message"] = "Niet voor iedereen zichtbaar"; App::$strings["Select"] = "Kies"; App::$strings["Save to Folder"] = "In map opslaan"; @@ -1547,6 +1549,10 @@ App::$strings["via Wall-To-Wall:"] = "via kanaal-naar-kanaal"; App::$strings["from %s"] = "van %s"; App::$strings["last edited: %s"] = "laatst bewerkt: %s"; App::$strings["Expires: %s"] = "Verloopt: %s"; +App::$strings["Attend"] = "Aanwezig"; +App::$strings["Attendance Options"] = "Aanwezigheidsopties"; +App::$strings["Vote"] = "Stem"; +App::$strings["Voting Options"] = "Stemopties"; App::$strings["Save Bookmarks"] = "Bladwijzers opslaan"; App::$strings["Add to Calendar"] = "Aan agenda toevoegen"; App::$strings["Mark all seen"] = "Markeer alles als bekeken"; @@ -1559,22 +1565,8 @@ App::$strings["Code"] = "Broncode"; App::$strings["Image"] = "Afbeelding"; App::$strings["Insert Link"] = "Link invoegen"; App::$strings["Video"] = "Video"; -App::$strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld"; -App::$strings["Only me"] = "Alleen ik"; -App::$strings["Public"] = "Openbaar"; -App::$strings["Anybody in the \$Projectname network"] = "Iedereen in het \$Projectname-netwerk"; -App::$strings["Any account on %s"] = "Iedereen op %s"; -App::$strings["Any of my connections"] = "Al mijn geaccepteerde connecties"; -App::$strings["Only connections I specifically allow"] = "Alleen connecties die uitdrukkelijk door jou zijn toegestaan"; -App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)"; -App::$strings["Any connections including those who haven't yet been approved"] = "Al mijn geaccepteerde en nog niet geaccepteerde connecties"; -App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken"; -App::$strings["This is your default setting for who can view your default channel profile"] = "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken"; -App::$strings["This is your default setting for who can view your connections"] = "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken"; -App::$strings["This is your default setting for who can view your file storage and photos"] = "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken"; -App::$strings["This is your default setting for the audience of your webpages"] = "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken"; App::$strings["Site Admin"] = "Hubbeheerder"; -App::$strings["Bug Report"] = "Bugrapport"; +App::$strings["Report Bug"] = "Bugrapport indienen"; App::$strings["View Bookmarks"] = "Bladwijzers bekijken"; App::$strings["My Chatrooms"] = "Mijn chatkanalen"; App::$strings["Firefox Share"] = "Firefox Share"; @@ -1582,6 +1574,7 @@ App::$strings["Remote Diagnostics"] = "Diagnose op afstand"; App::$strings["Suggest Channels"] = "Kanalen voorstellen"; App::$strings["Login"] = "Inloggen"; App::$strings["Grid"] = "Grid"; +App::$strings["Wiki"] = "Wiki"; App::$strings["Channel Home"] = "Jouw kanaal"; App::$strings["Events"] = "Agenda"; App::$strings["Directory"] = "Kanalengids"; @@ -1596,196 +1589,752 @@ App::$strings["Language"] = "Taal"; App::$strings["Post"] = "Bericht"; App::$strings["Profile Photo"] = "Profielfoto"; App::$strings["Purchase"] = "Aanschaffen"; +App::$strings["Undelete"] = "Verwijdering ongedaan maken"; +App::$strings["\$Projectname Notification"] = "\$Projectname-notificatie"; +App::$strings["\$projectname"] = "\$projectname"; +App::$strings["Thank You,"] = "Bedankt,"; +App::$strings["%s Administrator"] = "Beheerder %s"; +App::$strings["%s <!item_type!>"] = "%s <!item_type!>"; +App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Notificatie] Nieuw privébericht ontvangen op %s"; +App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s."; +App::$strings["%1\$s sent you %2\$s."] = "%1\$s zond jou %2\$s."; +App::$strings["a private message"] = "een privébericht"; +App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bezoek %s om je privéberichten te bekijken en/of er op te reageren."; +App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %4\$s[/zrl]"; +App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %5\$s van %4\$s[/zrl]"; +App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]jouw %4\$s[/zrl]"; +App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Notificatie] %2\$s gaf een reactie in conversatie #%1\$d"; +App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s gaf een reactie in een conversatie die jij volgt."; +App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bezoek %s om de conversatie te bekijken en/of er op te reageren."; +App::$strings["%1\$s, %2\$s liked [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s vindt [zrl=%3\$s]jouw %4\$s[/zrl] leuk"; +App::$strings["[\$Projectname:Notify] Like received to conversation #%1\$d by %2\$s"] = "[\$Projectname:Notificatie] %2\$s vindt iets leuk in conversatie #%1\$d"; +App::$strings["%1\$s, %2\$s liked an item/conversation you created."] = "%1\$s, %2\$s vindt iets leuk in een conversatie die jij bent gestart."; +App::$strings["[\$Projectname:Notify] %s posted to your profile wall"] = "[\$Projectname:Notificatie] %s heeft een bericht op jouw kanaal geplaatst"; +App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s heeft om %3\$s een bericht op jouw kanaal geplaatst"; +App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s heeft een bericht op [zrl=%3\$s]jouw kanaal[/zrl] geplaatst"; +App::$strings["[\$Projectname:Notify] %s tagged you"] = "[\$Projectname:Notificatie] %s heeft jou genoemd"; +App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s noemde jou op %3\$s"; +App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]noemde jou[/zrl]."; +App::$strings["[\$Projectname:Notify] %1\$s poked you"] = "[\$Projectname:Notificatie] %1\$s heeft jou aangestoten"; +App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s heeft je aangestoten op %3\$s"; +App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]heeft je aangestoten[/zrl]."; +App::$strings["[\$Projectname:Notify] %s tagged your post"] = "[\$Projectname:Notificatie] %s heeft jouw bericht getagd"; +App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s heeft jouw bericht om %3\$s getagd"; +App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s heeft [zrl=%3\$s]jouw bericht[/zrl] getagd"; +App::$strings["[\$Projectname:Notify] Introduction received"] = "[\$Projectname:Notificatie] Connectieverzoek ontvangen"; +App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, je hebt een nieuw connectieverzoek ontvangen van '%2\$s' op %3\$s"; +App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, je hebt een [zrl=%2\$s]nieuw connectieverzoek[/zrl] ontvangen van %3\$s."; +App::$strings["You may visit their profile at %s"] = "Je kan het profiel bekijken op %s"; +App::$strings["Please visit %s to approve or reject the connection request."] = "Bezoek %s om het connectieverzoek te accepteren of af te wijzen."; +App::$strings["[\$Projectname:Notify] Friend suggestion received"] = "[\$Projectname:Notificatie] Kanaalvoorstel ontvangen"; +App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, je hebt een kanaalvoorstel ontvangen van '%2\$s' om %3\$s"; +App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, je hebt [zrl=%2\$s]een kanaalvoorstel[/zrl] ontvangen voor %3\$s van %4\$s."; +App::$strings["Name:"] = "Naam:"; +App::$strings["Photo:"] = "Foto:"; +App::$strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen."; +App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Notificatie]"; +App::$strings["created a new post"] = "maakte een nieuw bericht aan"; +App::$strings["commented on %s's post"] = "gaf een reactie op een bericht van %s"; +App::$strings["Flag Adult Photos"] = "Markeer foto's als voor volwassenen"; +App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Zorgt voor een optie om foto's met inhoud voor volwassenen in de standaard albumweergave te verbergen"; +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."] = "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."; +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."] = "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."; +App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; +App::$strings["Guitar Chords"] = "Gitaarakkoorden"; +App::$strings["The complete online chord dictionary"] = "Het complete online akkoordenboek"; +App::$strings["Tuning"] = "Stemmen"; +App::$strings["Chord name: example: Em7"] = "Akkoordnaam: bijvoorbeeld: Em7"; +App::$strings["Show for left handed stringing"] = "Toon voor linkshandige gitaar"; +App::$strings["Quick Reference"] = "Beknopt overzicht"; +App::$strings["Diaspora Protocol Settings updated."] = "Diaspora-protocol-instellingen bijgewerkt."; +App::$strings["Enable the Diaspora protocol for this channel"] = "Het Diaspora-protocol voor dit kanaal inschakelen"; +App::$strings["Allow any Diaspora member to comment on your public posts"] = "Geef elk Diaspora-lid toestemming om op jouw openbare berichten te reageren"; +App::$strings["Prevent your hashtags from being redirected to other sites"] = "Voorkom dat jouw hashtags naar andere websites worden doorverwezen"; +App::$strings["Followed hashtags (comma separated, do not include the #)"] = "Gevolgde hashtags (door komma's gescheiden lijst, zonder de #)"; +App::$strings["Diaspora Protocol Settings"] = "Diaspora-protocol (incl. Friendica)"; +App::$strings["Hubzilla Directory Stats"] = "Kanalengidsstatistieken Hubzilla"; +App::$strings["Total Hubs"] = "Totaal aantal hubs"; +App::$strings["Hubzilla Hubs"] = "Hubzilla-hubs"; +App::$strings["Friendica Hubs"] = "Friendica-hubs"; +App::$strings["Diaspora Pods"] = "Diaspora-pods"; +App::$strings["Hubzilla Channels"] = "Hubzilla-kanalen"; +App::$strings["Friendica Channels"] = "Friendica-kanalen"; +App::$strings["Diaspora Channels"] = "Diaspora-kanalen"; +App::$strings["Aged 35 and above"] = "Leeftijd is ouder dan 35 jaar"; +App::$strings["Aged 34 and under"] = "Leeftijd is jonger dan 34"; +App::$strings["Average Age"] = "Gemiddelde leeftijd"; +App::$strings["Known Chatrooms"] = "Bekend aantal chatkanalen"; +App::$strings["Known Tags"] = "Bekend aantal tags"; +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,"] = "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,"; +App::$strings["Project Servers and Resources"] = "Projectservers en -middelen"; +App::$strings["Project Creator and Tech Lead"] = "Projectgrondlegger en hoofdontwikkelaar"; +App::$strings["Admin, developer, directorymin, support bloke"] = "Beheerder, ontwikkelaar, kanalengidsbeheerder en supportgozer"; +App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "En de honderden andere mensen en organisaties die Hubzilla mogelijk hebben gemaakt. "; +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."] = "De Hubzillaprojecten worden hoofdzakelijk aangeboden door vrijwilligers die er hun tijd en expertise insteken - en meestal zelf de diensten betalen die ze met anderen delen."; +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>.)"] = "Wij worden niet gefinancierd door bedrijven en reclame, en wij verzamelen en verkopen niet jouw persoonlijke gegevens. We hebben geen controle over jouw persoonlijke gegevens - <strong>dat heb jezelf</strong>."; +App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Steun ons baanbrekende werk in decentralisatie, webidentiteit en privacy. "; +App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Jouw donaties laten onze servers en diensten draaien, en helpt ons om nieuwe innovatieve mogelijkheden te blijven ontwikkelen."; +App::$strings["Donate"] = "Doneer"; +App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Kies een project, ontwikkelaar of openbaar toegankelijke hub, die je met een eenmalige donatie wil steunen"; +App::$strings["Donate Now"] = "Doneer nu"; +App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>Of</em></strong> wordt een projectsponsor (alleen het Hubzilla-project)"; +App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Geef aan of jouw voornaam of volledige naam (of niets) op onze sponsorlijst moet verschijnen"; +App::$strings["Sponsor"] = "Sponsor"; +App::$strings["Special thanks to: "] = "Speciale dank gaat naar: "; +App::$strings["Post to Dreamwidth"] = "Doorplaatsen naar Dreamwidth"; +App::$strings["Enable Dreamwidth Post Plugin"] = "Doorplaatsen naar Dreamwidth inschakelen"; +App::$strings["Dreamwidth username"] = "Gebruikersnaam Dreamwidth"; +App::$strings["Dreamwidth password"] = "Wachtwoord Dreamwidth"; +App::$strings["Post to Dreamwidth by default"] = "Standaard doorplaatsen naar Dreamwidth"; +App::$strings["Dreamwidth Post Settings"] = "Doorplaatsen naar Dreamwidth"; +App::$strings["Flattr this!"] = "Flattr this!"; +App::$strings["Flattr widget settings updated."] = "Instellingen Flattrwidget bijgewerkt."; +App::$strings["Flattr user"] = "Gebruikersnaam Flattr"; +App::$strings["URL of the Thing to flattr"] = "URL van het Flattr-item"; +App::$strings["If empty channel URL is used"] = "Wanneer een lege kanaal-URL wordt gebruikt"; +App::$strings["Title of the Thing to flattr"] = "Naam van het Flattr-item"; +App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Wanneer een lege \"kanaalnaam op Hubzilla\" wordt gebruikt"; +App::$strings["Static or dynamic flattr button"] = "Statische of dynamische Flattr-knop"; +App::$strings["static"] = "statisch"; +App::$strings["dynamic"] = "dynamisch"; +App::$strings["Alignment of the widget"] = "Uitlijning van de widget"; +App::$strings["left"] = "links"; +App::$strings["right"] = "rechts"; +App::$strings["Enable Flattr widget"] = "Flattrwidget inschakelen"; +App::$strings["Flattr Widget Settings"] = "Flattrwidget"; +App::$strings["Contact not found."] = "Contact niet gevonden"; +App::$strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "This may occasionally happen if contact was requested by both persons and it has already been approved."; +App::$strings["Response from remote site was not understood."] = "Response from remote site was not understood."; +App::$strings["Unexpected response from remote site: "] = "Unexpected response from remote site: "; +App::$strings["Confirmation completed successfully."] = "Confirmation completed successfully."; +App::$strings["Remote site reported: "] = "Remote site reported: "; +App::$strings["Temporary failure. Please wait and try again."] = "Temporary failure. Please wait and try again."; +App::$strings["Introduction failed or was revoked."] = "Introduction failed or was revoked."; +App::$strings["Unable to set contact photo."] = "Unable to set contact photo."; +App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s is now friends with %2\$s"; +App::$strings["No user record found for '%s' "] = "No user record found for '%s' "; +App::$strings["Our site encryption key is apparently messed up."] = "Our site encryption key is apparently messed up."; +App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Empty site URL was provided or URL could not be decrypted by us."; +App::$strings["Contact record was not found for you on our site."] = "Contact record was not found for you on our site."; +App::$strings["Site public key not available in contact record for URL %s."] = "Site public key not available in contact record for URL %s."; +App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "The ID provided by your system is a duplicate on our system. It should work if you try again."; +App::$strings["Unable to set your contact credentials on our system."] = "Unable to set your contact credentials on our system."; +App::$strings["Unable to update your contact profile details on our system"] = "Unable to update your contact profile details on our system"; +App::$strings["[Name Withheld]"] = "[Name Withheld]"; +App::$strings["%1\$s has joined %2\$s"] = "%1\$s has joined %2\$s"; +App::$strings["%1\$s welcomes %2\$s"] = "%1\$s welcomes %2\$s"; +App::$strings["This introduction has already been accepted."] = "This introduction has already been accepted."; +App::$strings["Profile location is not valid or does not contain profile information."] = "Profile location is not valid or does not contain profile information."; +App::$strings["Warning: profile location has no identifiable owner name."] = "Warning: profile location has no identifiable owner name."; +App::$strings["Warning: profile location has no profile photo."] = "Warning: profile location has no profile photo."; +App::$strings["%d required parameter was not found at the given location"] = array( + 0 => "%d required parameter was not found at the given location", + 1 => "%d required parameters were not found at the given location", +); +App::$strings["Introduction complete."] = "Introduction complete."; +App::$strings["Unrecoverable protocol error."] = "Unrecoverable protocol error."; +App::$strings["Profile unavailable."] = "Profile unavailable."; +App::$strings["%s has received too many connection requests today."] = "%s has received too many connection requests today."; +App::$strings["Spam protection measures have been invoked."] = "Spam protection measures have been invoked."; +App::$strings["Friends are advised to please try again in 24 hours."] = "Friends are advised to please try again in 24 hours."; +App::$strings["Invalid locator"] = "Invalid locator"; +App::$strings["Invalid email address."] = "Invalid email address."; +App::$strings["This account has not been configured for email. Request failed."] = "This account has not been configured for email. Request failed."; +App::$strings["Unable to resolve your name at the provided location."] = "Unable to resolve your name at the provided location."; +App::$strings["You have already introduced yourself here."] = "You have already introduced yourself here."; +App::$strings["Apparently you are already friends with %s."] = "Apparently you are already friends with %s."; +App::$strings["Invalid profile URL."] = "Invalid profile URL."; +App::$strings["Disallowed profile URL."] = "Disallowed profile URL."; +App::$strings["Failed to update contact record."] = "Failed to update contact record."; +App::$strings["Your introduction has been sent."] = "Your introduction has been sent."; +App::$strings["Please login to confirm introduction."] = "Please login to confirm introduction."; +App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Incorrect identity currently logged in. Please login to <strong>this</strong> profile."; +App::$strings["Confirm"] = "Confirm"; +App::$strings["Hide this contact"] = "Hide this contact"; +App::$strings["Welcome home %s."] = "Welcome home %s."; +App::$strings["Please confirm your introduction/connection request to %s."] = "Please confirm your introduction/connection request to %s."; +App::$strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Please enter your 'Identity Address' from one of the following supported communications networks:"; +App::$strings["If you are not yet a member of the free social web, <a href=\"%s/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = "If you are not yet a member of the free social web, <a href=\"%s/siteinfo\">follow this link to find a public Friendica site and join us today</a>."; +App::$strings["Friend/Connection Request"] = "Friend/Connection Request"; +App::$strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"; +App::$strings["Please answer the following:"] = "Please answer the following:"; +App::$strings["Does %s know you?"] = "Does %s know you?"; +App::$strings["Add a personal note:"] = "Add a personal note:"; +App::$strings["Friendica"] = "Friendica"; +App::$strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web"; +App::$strings["Diaspora"] = "Diaspora"; +App::$strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = " - please do not use this form. Instead, enter %s into your Diaspora search bar."; +App::$strings["Your Identity Address:"] = "Your Identity Address:"; +App::$strings["Submit Request"] = "Submit Request"; +App::$strings["GNU-Social Protocol Settings updated."] = "GNU social-protocol-instellingen bijgewerkt."; +App::$strings["Enable the (experimental) GNU-Social protocol for this channel"] = "GNU social-protocol voor dit kanaal inschakelen (experimenteel)"; +App::$strings["GNU-Social Protocol Settings"] = "GNU social-protocol"; +App::$strings["Follow"] = "Volgen"; +App::$strings["%1\$s is now following %2\$s"] = "%1\$s volgt nu %2\$s"; +App::$strings["Friendica Photo Album Import"] = "Fotoalbums importeren vanuit Friendica"; +App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Hiermee importeer je al jouw Friendica-fotoalbums in dit Hubzilla-kanaal."; +App::$strings["Friendica Server base URL"] = "Basis-URL van Friendica-server"; +App::$strings["Friendica Login Username"] = "Gebruikersnaam Friendica"; +App::$strings["Friendica Login Password"] = "Wachtwoord Friendica"; +App::$strings["Enable the GNU-Social protocol for this channel"] = "GNU social-protocol voor dit kanaal inschakelen"; +App::$strings["Send email to all members"] = "Naar alle leden e-mail versturen"; +App::$strings["$1%s Administrator"] = "Beheerder $1%s"; +App::$strings["No recipients found."] = "Geen ontvangers gevonden"; +App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d van %2\$d berichten verzonden."; +App::$strings["Send email to all hub members."] = "Naar alle leden van deze hub e-mail versturen."; +App::$strings["Message subject"] = "Onderwerp e-mailbericht"; +App::$strings["Sender Email address"] = "E-mailadres afzender"; +App::$strings["Test mode (only send to hub administrator)"] = "Testmodus (alleen naar hubbeheerder sturen)"; +App::$strings["Post to Insanejournal"] = "Doorplaatsen naar InsaneJournal"; +App::$strings["Enable InsaneJournal Post Plugin"] = "Doorplaatsen naar InsaneJournal inschakelen"; +App::$strings["InsaneJournal username"] = "Gebruikersnaam InsaneJournal"; +App::$strings["InsaneJournal password"] = "Wachtwoord InsaneJournal"; +App::$strings["Post to InsaneJournal by default"] = "Standaard doorplaatsen naar InsaneJournal"; +App::$strings["InsaneJournal Post Settings"] = "Doorplaatsen naar InsaneJournal"; +App::$strings["Insane Journal Settings saved."] = "InsaneJournal-instellingen opgeslagen."; +App::$strings["Channels to auto connect"] = "Kanalen om automatisch mee te verbinden"; +App::$strings["Comma separated list"] = "Door komma's gescheiden lijst"; +App::$strings["Popular Channels"] = "Populaire chatkanalen"; +App::$strings["IRC Settings"] = "IRC"; +App::$strings["IRC settings saved."] = "IRC-instellingen opgeslagen."; +App::$strings["IRC Chatroom"] = "IRC-chatkanaal"; +App::$strings["Status:"] = "Status:"; +App::$strings["Activate addon"] = "Plugin inschakelen"; +App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Hide Jappixmini Chat-Widget from the webinterface"; +App::$strings["Jabber username"] = "Gebruikersnaam Jabber"; +App::$strings["Jabber server"] = "Jabberserver"; +App::$strings["Jabber BOSH host URL"] = "Jabber BOSH host URL"; +App::$strings["Jabber password"] = "Wachtwoord Jabber"; +App::$strings["Encrypt Jabber password with Hubzilla password"] = "Versleutel Jabber-wachtwoord met Hubzilla-wachtwoord"; +App::$strings["Hubzilla password"] = "Wachtwoord Hubzilla"; +App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Approve subscription requests from Hubzilla contacts automatically"; +App::$strings["Purge internal list of jabber addresses of contacts"] = "Purge internal list of jabber addresses of contacts"; +App::$strings["Configuration Help"] = "Configuratiehulp"; +App::$strings["Add Contact"] = "Contact toevoegen"; +App::$strings["Jappix Mini Settings"] = "Jappix Mini"; +App::$strings["Upload a file"] = "Bestand uploaden"; +App::$strings["Drop files here to upload"] = "Sleep bestanden hierheen om ze te uploaden"; +App::$strings["Failed"] = "Mislukt"; +App::$strings["No files were uploaded."] = "Er zijn geen bestanden geüpload."; +App::$strings["Uploaded file is empty"] = "Geüpload bestand is leeg"; +App::$strings["Image exceeds size limit of "] = "Afbeeldingsgrootte overschrijdt het limiet van "; +App::$strings["File has an invalid extension, it should be one of "] = "Bestand heeft een ongeldige extensie. Geldige extensies zijn "; +App::$strings["Upload was cancelled, or server error encountered"] = "Upload werd geannuleerd of er was een serverfout"; +App::$strings["An account has been created for you."] = "Er is voor jou een account aangemaakt."; +App::$strings["Authentication successful but rejected: account creation is disabled."] = "Authenticatie geslaagd, maar afgekeurd: aanmaken accounts uitgeschakeld."; +App::$strings["Post to Libertree"] = "Doorplaatsen naar Libertree"; +App::$strings["Enable Libertree Post Plugin"] = "Doorplaatsen naar Libertree inschakelen"; +App::$strings["Libertree API token"] = "API-token Libertree"; +App::$strings["Libertree site URL"] = "Website-URL Libertree"; +App::$strings["Post to Libertree by default"] = "Standaard doorplaatsen naar Libertree"; +App::$strings["Libertree Post Settings"] = "Doorplaatsen naar Libertree"; +App::$strings["Libertree Settings saved."] = "Libertree-instellingen opgeslagen."; +App::$strings["Post to LiveJournal"] = "Doorplaatsen naar LiveJournal"; +App::$strings["Enable LiveJournal Post Plugin"] = "Doorplaatsen naar LiveJournal inschakelen"; +App::$strings["LiveJournal username"] = "Gebruikersnaam LiveJournal"; +App::$strings["LiveJournal password"] = "Wachtwoord LiveJournal"; +App::$strings["Post to LiveJournal by default"] = "Standaard doorplaatsen naar "; +App::$strings["LiveJournal Post Settings"] = "Doorplaatsen naar LiveJournal"; +App::$strings["LiveJournal Settings saved."] = "LiveJournal-instellingen opgeslagen."; +App::$strings["Logfile archive directory"] = "Logbestand archiefmap"; +App::$strings["Directory to store rotated logs"] = "Map om geroteerde logbestanden in op te slaan"; +App::$strings["Logfile size in bytes before rotating"] = "Grootte van logbestand in bytes, voordat het wordt geroteerd"; +App::$strings["Number of logfiles to retain"] = "Aantal te behouden logbestanden"; +App::$strings["Email notification hub"] = "Hub voor e-mailnotificaties"; +App::$strings["Hostname"] = "Hostnaam"; +App::$strings["Mailhost Settings"] = "Mailhost"; +App::$strings["MAILHOST Settings saved."] = "Mailhost-instellingen opgeslagen."; +App::$strings["lonely"] = "Eenzaam"; +App::$strings["drunk"] = "dronken"; +App::$strings["horny"] = "geil"; +App::$strings["stoned"] = "stoned"; +App::$strings["fucked up"] = "opgefokt"; +App::$strings["clusterfucked"] = "clusterfucked"; +App::$strings["crazy"] = "gek"; +App::$strings["hurt"] = "gekwetst"; +App::$strings["sleepy"] = "slaperig"; +App::$strings["grumpy"] = "chagrijnig"; +App::$strings["high"] = "high"; +App::$strings["semi-conscious"] = "half bij kennis"; +App::$strings["in love"] = "verliefd"; +App::$strings["in lust"] = "wellustig"; +App::$strings["naked"] = "naakt"; +App::$strings["stinky"] = "stinkend"; +App::$strings["sweaty"] = "zweterig"; +App::$strings["bleeding out"] = "aan het doodbloeden"; +App::$strings["victorious"] = "zegevierend"; +App::$strings["defeated"] = "verslagen"; +App::$strings["envious"] = "jaloers"; +App::$strings["jealous"] = "jaloers"; +App::$strings["bitchslap"] = "bitchslappen"; +App::$strings["bitchslapped"] = "bitchslapped"; +App::$strings["shag"] = "wippen"; +App::$strings["shagged"] = "wipte met"; +App::$strings["patent"] = "patent"; +App::$strings["patented"] = "patented"; +App::$strings["hug"] = "knuffelen"; +App::$strings["hugged"] = "knuffelde"; +App::$strings["murder"] = "vermoorden"; +App::$strings["murdered"] = "vermoorde"; +App::$strings["worship"] = "aanbidden"; +App::$strings["worshipped"] = "aanbad"; +App::$strings["kiss"] = "kussen"; +App::$strings["kissed"] = "kuste"; +App::$strings["tempt"] = "verleiden"; +App::$strings["tempted"] = "verleidde"; +App::$strings["raise eyebrows at"] = "wenkbrauwen optrekken"; +App::$strings["raised their eyebrows at"] = "trok zijn/haar wenkbrauwen op naar"; +App::$strings["insult"] = "beledigen"; +App::$strings["insulted"] = "beledigde"; +App::$strings["praise"] = "prijzen"; +App::$strings["praised"] = "prees"; +App::$strings["be dubious of"] = "twijfels hebben"; +App::$strings["was dubious of"] = "had twijfels over"; +App::$strings["eat"] = "opeten"; +App::$strings["ate"] = "at"; +App::$strings["giggle and fawn at"] = "giechelen en vleien"; +App::$strings["giggled and fawned at"] = "giechelde naar en vleide met"; +App::$strings["doubt"] = "betwijfelen"; +App::$strings["doubted"] = "betwijfelde"; +App::$strings["glare"] = "boos kijken"; +App::$strings["glared at"] = "keek boos naar"; +App::$strings["fuck"] = "neuken"; +App::$strings["fucked"] = "neukte"; +App::$strings["bonk"] = "naaien"; +App::$strings["bonked"] = "naaide"; +App::$strings["declare undying love for"] = "eeuwige liefde verklaren"; +App::$strings["declared undying love for"] = "verklaarde de eeuwige liefde aan"; +App::$strings["Save Settings"] = "Instellingen opslaan"; +App::$strings["text to include in all outgoing posts from this site"] = "tekst om onderaan elk uitgaand bericht van deze hub te plaatsen"; +App::$strings["Federate"] = "Federeren"; +App::$strings["nofed Settings saved."] = "Geen federatie-instellingen opgeslagen."; +App::$strings["Allow Federation Toggle"] = "Federatie toestaan?"; +App::$strings["Federate posts by default"] = "Standaard berichten federeren"; +App::$strings["NoFed Settings"] = "Geen federatie"; +App::$strings["Nsabait Settings updated."] = "NSAbait-instellingen bijgewerkt."; +App::$strings["Enable NSAbait Plugin"] = "NSAbait inschakelen"; +App::$strings["NSAbait Settings"] = "NSAbait"; +App::$strings["This plugin 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."] = "Deze plug-in controleert berichten op woorden die je hieronder kunt opgeven en klapt berichten in die deze woorden bevatten, zodat die berichten niet worden weergegeven op ongeschikte momenten. Denk hierbij aan berichten met erotische afbeeldingen, die waarschijnlijk niet geschikt zijn binnen (bijvoorbeeld) een werkomgeving. Het is beleefd en het wordt aangeraden om zulke berichten met #NSFW te taggen. Dit filter kan ook gebruikt worden met andere woorden en is dus voor alles inzetbaar."; +App::$strings["Enable Content filter"] = "Inhoudsfilter inschakelen"; +App::$strings["Comma separated list of keywords to hide"] = "Door komma's gescheiden lijst met woorden die gefilterd moeten worden."; +App::$strings["Use /expression/ to provide regular expressions"] = "Gebruik /expressie/ voor reguliere expressies"; +App::$strings["Not Safe For Work Settings"] = "Not Safe For Work (inhoudsfilter)"; +App::$strings["General Purpose Content Filter"] = "Voor alles te gebruiken inhoudsfilter"; +App::$strings["NSFW Settings saved."] = "NSFW-instellingen opgeslagen."; +App::$strings["Possible adult content"] = "Mogelijk inhoud voor volwassenen"; +App::$strings["%s - click to open/close"] = "%s - Klik om te openen of te sluiten"; +App::$strings["System defaults:"] = "Systeemstandaarden:"; +App::$strings["Preferred Clipart IDs"] = "Voorkeursclipart"; +App::$strings["List of preferred clipart ids. These will be shown first."] = "Lijst met clipartnummers die als eerste moeten worden getoond."; +App::$strings["Default Search Term"] = "Standaard zoekterm"; +App::$strings["The default search term. These will be shown second."] = "Standaard zoekterm. Deze worden als tweede getoond."; +App::$strings["Return After"] = "Ga na afloop naar"; +App::$strings["Page to load after image selection."] = "Pagina die na het kiezen van een afbeelding moet laden."; +App::$strings["Edit Profile"] = "Profiel bewerken"; +App::$strings["Profile List"] = "Profiellijst"; +App::$strings["Order of Preferred"] = "Voorkeursclipart sorteren op"; +App::$strings["Sort order of preferred clipart ids."] = "Als eerste getoonde clipart hierop sorteren."; +App::$strings["Newest first"] = "Nieuwste eerst"; +App::$strings["As entered"] = "Zoals ingevoerd"; +App::$strings["Order of other"] = "Overige clipart sorteren op"; +App::$strings["Sort order of other clipart ids."] = "Overige clipart hierop sorteren."; +App::$strings["Most downloaded first"] = "Meest gedownload eerst"; +App::$strings["Most liked first"] = "Meest geliked eerst"; +App::$strings["Preferred IDs Message"] = "Tekst voorkeursclipart"; +App::$strings["Message to display above preferred results."] = "Tekst die bovenaan de resultaten met voorkeursclipart moet worden getoond."; +App::$strings["Uploaded by: "] = "Geüpload door: "; +App::$strings["Drawn by: "] = "Getekend door: "; +App::$strings["Or select from a free OpenClipart.org image:"] = "Of kies uit een vrije OpenClipart.org-afbeelding:"; +App::$strings["Search Term"] = "Zoekterm"; +App::$strings["Unknown error. Please try again later."] = "Onbekende fout. Probeer later nog eens."; +App::$strings["Profile photo updated successfully."] = "Bijwerken profielfoto geslaagd."; +App::$strings["View Larger"] = "Groter tonen"; +App::$strings["Tile Server URL"] = "URL tile-server"; +App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Een lijst met <a href=\\\"http://wiki.openstreetmap.org/wiki/TMS\\\" target=\\\"_blank\\\">openbare tile-servers</a>"; +App::$strings["Nominatim (reverse geocoding) Server URL"] = "Server-URL Nominatim (reverse geocoding)"; +App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim servers</a>"] = "Een lijst met <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim-servers</a>"; +App::$strings["Default zoom"] = "Standaard zoomniveau"; +App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "Standaard zoomniveau. Van 1 (wereld) t/m 18 (maximaal). Is ook afhankelijk van tile-server."; +App::$strings["Include marker on map"] = "Markering op kaart plaatsen"; +App::$strings["Include a marker on the map."] = "Plaatst een markering op de kaart."; +App::$strings["Message to display on every page on this server"] = "Bericht om op elke pagina van deze hub weer te geven"; +App::$strings["Pageheader Settings"] = "Pageheader"; +App::$strings["pageheader Settings saved."] = "Pageheader-instellingen opgeslagen."; +App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Het bezoek aan deze website wordt gemeten door <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)."] = "Wanneer je niet wil dat jouw bezoek aan deze website wordt bijgehouden, <a href='%s'>kan je een cookie achterlaten om te verhinderen dat Piwik jou op deze website blijft volgen</a> (opt-out)."; +App::$strings["Piwik Base URL"] = "Basis-URL Piwik"; +App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Absoluut pad naar jouw Piwik-installatie (zonder protocol (http/s), met een slash op het einde)"; +App::$strings["Site ID"] = "Site ID"; +App::$strings["Show opt-out cookie link?"] = "Toon opt-out cookie-link?"; +App::$strings["Asynchronous tracking"] = "Asynchroon volgen"; +App::$strings["Enable frontend JavaScript error tracking"] = "Volgen van front-end JavaScript-fouten inschakelen"; +App::$strings["This feature requires Piwik >= 2.2.0"] = "Deze functie vereist Piwik >= 2.2.0"; +App::$strings["Planets Settings updated."] = "Planets-instellingen opgeslagen."; +App::$strings["Enable Planets Plugin"] = "Planets inschakelen"; +App::$strings["Planets Settings"] = "Planets"; +App::$strings["You are now authenticated to pumpio."] = "De verbinding met pump.io is geverifieerd"; +App::$strings["return to the featured settings page"] = "Ga terug naar pagina met plugin-instellingen"; +App::$strings["Post to Pump.io"] = "Doorplaatsen naar Pump.io"; +App::$strings["Pump.io servername"] = "Pump.io-servernaam"; +App::$strings["Without \"http://\" or \"https://\""] = "Zonder \"http://\" of \"https://\""; +App::$strings["Pump.io username"] = "Gebruikersnaam Pump.io"; +App::$strings["Without the servername"] = "Zonder servernaam"; +App::$strings["You are not authenticated to pumpio"] = "De verbinding met pump.io is niet geverifieerd"; +App::$strings["(Re-)Authenticate your pump.io connection"] = "Verifieer (opnieuw) jouw pump.io-verbinding"; +App::$strings["Enable pump.io Post Plugin"] = "Doorplaatsen naar Pump.io inschakelen"; +App::$strings["Post to pump.io by default"] = "Standaard doorplaatsen naar Pump.io"; +App::$strings["Should posts be public"] = "Moeten berichten openbaar zijn"; +App::$strings["Mirror all public posts"] = "Alle openbare berichten doorplaatsen"; +App::$strings["Pump.io Post Settings"] = "Doorplaatsen naar Pump.io"; +App::$strings["PumpIO Settings saved."] = "Pump.io-instellingen opgeslagen."; +App::$strings["QR code"] = "QR-code"; +App::$strings["QR Generator"] = "QR-code-generator"; +App::$strings["Enter some text"] = "Vul wat tekst in"; +App::$strings["Enable Rainbowtag"] = "Rainbowtag inschakelen"; +App::$strings["Rainbowtag Settings"] = "Rainbowtag"; +App::$strings["Rainbowtag Settings saved."] = "Rainbowtag-instellingen opgeslagen."; +App::$strings["You're welcome."] = "Je bent van harte welkom."; +App::$strings["Ah shucks..."] = "Hé verdorie..."; +App::$strings["Don't mention it."] = "Graag gedaan."; +App::$strings["<blush>"] = "<bloos>"; +App::$strings["Redmatrix File Storage Import"] = "Importeer bestanden vanuit Redmatrix"; +App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Hiermee importeer je al jouw Redmatrix-bestanden in dit kanaal."; +App::$strings["Redmatrix Server base URL"] = "Basis-URL van Redmatrix-hub"; +App::$strings["Redmatrix Login Username"] = "Gebruikersnaam Redmatrix"; +App::$strings["Redmatrix Login Password"] = "Wachtwoord Redmatrix"; +App::$strings["file"] = "bestand"; +App::$strings["Photos imported"] = "Foto's geïmporteerd"; +App::$strings["Redmatrix Photo Album Import"] = "Fotoalbums importeren vanuit Redmatrix"; +App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Hiermee importeer je al jouw Redmatrix-fotoalbums in dit Hubzilla-kanaal."; +App::$strings["Import just this album"] = "Alleen dit album importeren"; +App::$strings["Leave blank to import all albums"] = "Laat leeg om alle albums te importeren"; +App::$strings["Maximum count to import"] = "Maximaal aantal om te importeren"; +App::$strings["0 or blank to import all available"] = "0 of leeg om alles te importeren"; +App::$strings["Post to Red"] = "Doorplaatsen naar Hubzilla"; +App::$strings["Channel is required."] = "Een kanaal is vereist."; +App::$strings["Invalid channel."] = "Onbekend kanaal."; +App::$strings["redred Settings saved."] = "RedRed-instellingen opgeslagen."; +App::$strings["Allow posting to another Hubzilla Channel"] = "Doorplaatsen naar een ander Hubzilla-kanaal toestaan"; +App::$strings["Send public postings to Hubzilla channel by default"] = "Standaard doorplaatsen naar een ander Hubzilla-kanaal toestaan"; +App::$strings["Hubzilla API Path"] = "API-pad Hubzilla"; +App::$strings["https://{sitename}/api"] = "https://{hubnaam}/api"; +App::$strings["Hubzilla login name"] = "Gebruikersnaam Hubzilla"; +App::$strings["Hubzilla channel name"] = "Kanaalnaam Hubzilla"; +App::$strings["Nickname"] = "Bijnaam"; +App::$strings["Hubzilla Crosspost Settings"] = "Doorplaatsen naar Hubzilla"; +App::$strings["Post to Friendica"] = "Doorplaatsen naar Friendica"; +App::$strings["rtof Settings saved."] = "RTOF-instellingen opgeslagen."; +App::$strings["Allow posting to Friendica"] = "Doorplaatsen naar Friendica toestaan"; +App::$strings["Send public postings to Friendica by default"] = "Standaard doorplaatsen naar Friendica"; +App::$strings["Friendica API Path"] = "API-pad Friendica"; +App::$strings["Friendica login name"] = "Gebruikersnaam Friendica"; +App::$strings["Friendica password"] = "Wachtwoord Friendica"; +App::$strings["Hubzilla to Friendica Post Settings"] = "Doorplaatsen naar Friendica"; +App::$strings["Extended Identity Sharing"] = "Uitgebreid identiteit delen"; +App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Deel jouw Hubzilla-identiteit met alle websites op het internet. Wanneer dit is uitgeschakeld wordt je identiteit alleen binnen het Hubzilla-netwerk gedeeld. Schakel dit alleen in als je weet wat je doet."; +App::$strings["Some setting"] = "Een of andere instelling"; +App::$strings["A setting"] = "Een instelling"; +App::$strings["Skeleton Settings"] = "Plugin-skeleton"; +App::$strings["Deactivate the feature"] = "Deze functie uitschakelen"; +App::$strings["Hide the button and show the smilies directly."] = "Verberg de knop en toon de smilies direct."; +App::$strings["Smileybutton Settings"] = "Smileyknop"; +App::$strings["Page to load after login"] = "Pagina die na het inloggen getoond moet worden"; +App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Voorbeelden: "apps", "network?f=&gid=37" (privacygroep), "channel" of "notifications/system" (laat leeg voor de standaard netwerkpagina (grid)."; +App::$strings["Startpage Settings"] = "Startpagina"; +App::$strings["Post to GNU social"] = "Doorplaatsen naar GNU social"; +App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "De verstrekte API-URL is ongeldig.<br />Neem contact op met jouw hubbeheerder."; +App::$strings["We could not contact the GNU social API with the Path you entered."] = "Wij konden de GNU social-API niet bereiken door middel van het ingevulde pad."; +App::$strings["GNU social settings updated."] = "GNU social-instellingen bijgewerkt."; +App::$strings["Globally Available GNU social OAuthKeys"] = "Op de gehele hub te gebruiken GNU social OAuthkeys."; +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)."] = "Er zijn op deze hub enkele voorgeconfigureerde OAuthkey-paren voor GNU social servers beschikbaar. Wanneer je een van deze servers gebruikt, gebruik dan deze voorgeconfigureerde gegevens.<br />Wanneer dit niet het geval is, maak dan gerust met een andere GNU social-server verbinding (zie hieronder)."; +App::$strings["Provide your own OAuth Credentials"] = "Verstrek jouw eigen OAuth-gegevens"; +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."] = "Geen consumerkey voor GNU social gevonden. Registreer jouw Hubzilla-account als een desktopclient in jouw GNU-social-account, kopieer en plak hier de consumerkey en de consumersecret, en vul de API-base-root in.<br />Voordat je jouw eigen OAuthkey-paar registreert, vraag dan eerst aan jouw hubbeheerder of er al een key-paar voor deze hub op jouw favoriete GNU social-server bestaat."; +App::$strings["OAuth Consumer Key"] = "OAuth-consumerkey"; +App::$strings["OAuth Consumer Secret"] = "Oauth-consumersecret"; +App::$strings["Base API Path"] = "Basispad API"; +App::$strings["Remember the trailing /"] = "Vergeet niet de afsluitende /"; +App::$strings["GNU social application name"] = "Naam GNU social-applicatie"; +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."] = "Om jouw GNU social-account te koppelen klik je op de knop hieronder. Je krijgt dan een veiligheidscode van GNU social die je kan kopiëren en dan hieronder in het invulveld kan plakken. Vervolgens klik je op Opslaan. Alleen jouw <strong>openbare</strong> berichten kunnen worden doorgeplaatst naar GNU social."; +App::$strings["Log in with GNU social"] = "Inloggen op "; +App::$strings["Copy the security code from GNU social here"] = "Plak de veiligheidscode van GNU social hier"; +App::$strings["Cancel Connection Process"] = "Annuleer het verbindingsproces"; +App::$strings["Current GNU social API is"] = "Huidige GNU social-API is"; +App::$strings["Cancel GNU social Connection"] = "Annuleer de GNU social-verbinding"; +App::$strings["Currently connected to: "] = "Momenteel gekoppeld aan: "; +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>Opmerking</strong>: In verband met jouw privacyinstellingen (<em>wanneer jouw kanaalprofiel voor onbekenden is verborgen</em>) leidt de profiellink die mogelijk in jouw naar GNU social doorgestuurde openbare berichten staat, naar een lege pagina met de melding dat toegang tot jouw kanaalprofiel is beperkt."; +App::$strings["Allow posting to GNU social"] = "Doorplaatsen naar GNU social toestaan"; +App::$strings["If enabled your public postings can be posted to the associated GNU-social account"] = "Wanneer dit is ingeschakeld kunnen jouw openbare berichten naar het gekoppelde Twitter-account worden doorgeplaatst"; +App::$strings["Post to GNU social by default"] = "Standaard doorplaatsen naar GNU social"; +App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Wanneer dit is ingeschakeld worden al jouw openbare berichten standaard naar het gekoppelde GNU social-account doorgeplaatst"; +App::$strings["Clear OAuth configuration"] = "OAuth-configuratie wissen"; +App::$strings["GNU social Post Settings"] = "Doorplaatsen naar GNU social"; +App::$strings["API URL"] = "API-URL"; +App::$strings["Application name"] = "Naam applicatie"; +App::$strings["Currently blocked"] = "Momenteel geblokkeerd"; +App::$strings["No channels currently blocked"] = "Momenteel geen kanalen geblokkeerd"; +App::$strings["\"Superblock\" Settings"] = "Superblock"; +App::$strings["Block Completely"] = "Volledig blokkeren"; +App::$strings["superblock settings updated"] = "Superblock-instellingen bijgewerkt"; +App::$strings["Your account on %s will expire in a few days."] = "Jouw account op %s verloopt over een paar dagen. "; +App::$strings["Your $Productname test account is about to expire."] = "Jouw $Productname-testaccount staat op het punt om te verlopen."; +App::$strings["Three Dimensional Tic-Tac-Toe"] = "Driedimensionaal Boter-kaas-en-eieren"; +App::$strings["3D Tic-Tac-Toe"] = "Boter-kaas-en-eieren in 3D"; +App::$strings["New game"] = "Nieuw spel"; +App::$strings["New game with handicap"] = "Nieuw spel met handicap"; +App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Driedimensionaal Boter-kaas-en-eieren is hetzelfde als het klassieke spel, behalve dat het gelijktijdig op meerdere hoogtes wordt gespeeld."; +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."] = "In dit geval zijn er drie hoogtes. Je wint wanneer je drie op een rij hebt op een van de drie hoogtes, van boven naar beneden of diagonaal."; +App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Het spel met een handicap schakelt de middelste positie op de middelste hoogte uit, omdat de speler die deze positie krijgt vaak een oneerlijk voordeel geniet."; +App::$strings["You go first..."] = "Jij bent eerst..."; +App::$strings["I'm going first this time..."] = "Ik ga deze keer eerst..."; +App::$strings["You won!"] = "Jij wint!"; +App::$strings["\"Cat\" game!"] = "Gelijkspel!"; +App::$strings["I won!"] = "Ik win!"; +App::$strings["Edit your profile and change settings."] = "Jouw profiel bewerken en instellingen veranderen."; +App::$strings["Click here to see activity from your connections."] = "Klik hier voor een tijdlijn met berichten en overige activiteiten van jouw connecties."; +App::$strings["Click here to see your channel home."] = "Klik hier voor de tijdlijn van jouw eigen kanaal."; +App::$strings["You can access your private messages from here."] = "Hiermee krijg je toegang tot jouw privéberichten."; +App::$strings["Create new events here."] = "Nieuwe gebeurtenissen kan je hier aanmaken."; +App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Hier kan je nieuwe connecties accepteren en instellingen van bestaande connecties wijzigen. Je kan hier bijv. ook privacygroepen aanmaken."; +App::$strings["System notifications will arrive here"] = "Systeemnotificaties komen hier tevoorschijn"; +App::$strings["Search for content and users"] = "Zoek hier naar tekst in berichten of naar andere kanalen."; +App::$strings["Browse for new contacts"] = "Blader hier in een gids met kanalen, die je toe kan voegen als connectie."; +App::$strings["Launch installed apps"] = "Open (op deze hub) geïnstalleerde apps."; +App::$strings["Looking for help? Click here."] = "Zoek je hulp? Klik dan hier."; +App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "Er is iets nieuws gebeurd in jouw netwerk. Klik hier om te zien wat precies."; +App::$strings["You have received a new private message. Click here to see from who!"] = "Je hebt een nieuw privébericht ontvangen. Klik hier om te zien van wie."; +App::$strings["There are events this week. Click here too see which!"] = "Er vinden deze week gebeurtenissen plaats. Klik hier om te zien welke dit zijn."; +App::$strings["You have received a new introduction. Click here to see who!"] = "Je hebt een nieuw connectieverzoek ontvangen. Klik hier om te kijken van wie."; +App::$strings["There is a new system notification. Click here to see what has happened!"] = "Er is een nieuwe systeemnotificatie. Klik hier om te zien wat er aan de hand is."; +App::$strings["Click here to share text, images, videos and sound."] = "Klik hier om tekst, afbeeldingen, video en audio te delen."; +App::$strings["You can write an optional title for your update (good for long posts)."] = "Je kan optioneel een titel voor je nieuwe bericht verzinnen. Vooral goed voor langere berichten."; +App::$strings["Entering some categories here makes it easier to find your post later."] = "Het invullen van enkele categorieën, maakt het later terugvinden van je berichten gemakkelijker. Dit is niet verplicht."; +App::$strings["Share photos, links, location, etc."] = "Deel foto's, links, locaties, enz."; +App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Wil je alleen iets tot een bepaald moment delen? Dan kan je het hiermee op een bepaalde datum en tijd laten verlopen."; +App::$strings["You can password protect content."] = "Je kan met een wachtwoord gegevens beveiligen."; +App::$strings["Choose who you share with."] = "Kies met wie je dit wil delen. "; +App::$strings["Click here when you are done."] = "Klik hier wanneer je klaar bent."; +App::$strings["Adjust from which channels posts should be displayed."] = "Aanpassen van welke kanalen berichten moeten worden getoond. "; +App::$strings["Only show posts from channels in the specified privacy group."] = "Toon alleen berichten van kanalen in de hier gekozen privacygroep."; +App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Vind gemakkelijk berichten met tags (trefwoorden die beginnen met een \"#\")."; +App::$strings["Easily find posts in given category."] = "Vind gemakkelijk berichten in een bepaalde categorie."; +App::$strings["Easily find posts by date."] = "Vind gemakkelijk berichten op datum."; +App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Voorstellen voor kanalen die wellicht interessant voor jou zijn en hier ook vrijwillig voor hebben gekozen."; +App::$strings["Here you see channels you have connected to."] = "Hier kan je zien met welke kanalen je bent verbonden (connecties)."; +App::$strings["Save your search so you can repeat it at a later date."] = "Sla jouw zoekopdracht op, zodat je het later opnieuw kan gebruiken."; +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."] = "Wanneer je dit pictogram ziet, kan je er van uitgaan dat de afzender is wie hij/zij beweert te zijn. Het is niet altijd mogelijk om de afzender te verifiëren, waardoor het pictogram soms ontbreekt. Dit is meestal geen reden voor ongerustheid."; +App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "Gevaar! Het lijkt er op dat iemand een bericht heeft proberen te vervalsen! Dit bericht is mogelijk niet afkomstig van de vermelde afzender!"; +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"] = "Welkom op Hubzilla! Wil jij een rondleiding hebben langs de gebruikersinterface?</p> <p>Je kan dit op elk moment pauzeren en weer hervatten door de pagina te herladen of naar een andere pagina te gaan.</p><p>Je kan ook vooruitgaan met behulp van de entertoets."; +App::$strings["Post to Twitter"] = "Doorplaatsen naar Twitter"; +App::$strings["Twitter settings updated."] = "Twitter-instellingen bijgewerkt."; +App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Geen consumerkeys voor Twitter gevonden. Neem contact op met jouw hubbeheerder."; +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."] = "De Twitter-plugin is op deze Hubzilla-hub ingeschakeld, maar je hebt nog niet jouw Hubzilla-kanaal met jouw Twitter-account gekoppeld. Om dit te doen klik je op de knop hieronder om een PIN-code van Twitter te krijgen. Deze dien je te kopiëren en in het invoegveld beneden te plakken. Vervolgens klik je op Opslaan. Alleen jouw <strong>openbare</strong> berichten kunnen op Twitter worden geplaatst."; +App::$strings["Log in with Twitter"] = "Op Twitter inloggen"; +App::$strings["Copy the PIN from Twitter here"] = "Plak of type de PIN-code hier"; +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>Opmerking</strong>: In verband met jouw privacyinstellingen (<em>wanneer jouw kanaalprofiel voor onbekenden is verborgen</em>) leidt de profiellink die mogelijk in jouw naar Twitter doorgestuurde openbare berichten staat, naar een lege pagina met de melding dat toegang tot jouw kanaalprofiel is beperkt."; +App::$strings["Allow posting to Twitter"] = "Doorplaatsen naar Twitter toestaan"; +App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Wanneer dit is ingeschakeld kunnen jouw <strong>openbare</strong> berichten naar het gekoppelde Twitter-account worden doorgeplaatst"; +App::$strings["Send public postings to Twitter by default"] = "Standaard doorplaatsen naar Twitter"; +App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Wanneer dit is ingeschakeld worden al jouw <strong>openbare</strong> berichten standaard naar het gekoppelde Twitter-account doorgeplaatst"; +App::$strings["Twitter Post Settings"] = "Doorplaatsen naar Twitter"; +App::$strings["Submit Settings"] = "Instellingen toepassen"; +App::$strings["Show Upload Limits"] = "Uploadlimieten tonen"; +App::$strings["Hubzilla configured maximum size: "] = "Op Hubzilla configureerde maximale grootte: "; +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 (moet hoger zijn dan upload_max_filesize): "; +App::$strings["Recent Channel/Profile Viewers"] = "Recente bezoekers van jouw kanaal/profiel"; +App::$strings["This plugin/addon has not been configured."] = "Deze plugin is niet geconfigureerd. "; +App::$strings["Please visit the Visage settings on %s"] = "Bezoek de Visage-instellingen op %s"; +App::$strings["your feature settings page"] = "Jouw plugin-instellingen"; +App::$strings["No entries."] = "Niets aanwezig."; +App::$strings["Enable Visage Visitor Logging"] = "Visage inschakelen "; +App::$strings["Visage Settings"] = "Visage"; +App::$strings["Who likes me?"] = "Wie vindt mij leuk?"; +App::$strings["Post to WordPress"] = "Doorplaatsen naar WordPress"; +App::$strings["Enable WordPress Post Plugin"] = "Doorplaatsen naar WordPress inschakelen"; +App::$strings["WordPress username"] = "Gebruikersnaam WordPress"; +App::$strings["WordPress password"] = "Wachtwoord WordPress"; +App::$strings["WordPress API URL"] = "API-URL WordPress"; +App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Meestal https://jouw-blog.tld/xmlrpc.php"; +App::$strings["WordPress blogid"] = "Blog ID WordPress"; +App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Voor websites met meerdere gebruikers, zoals wordpress.com. Anders leeg laten."; +App::$strings["Post to WordPress by default"] = "Standaard naar WordPress doorplaatsen"; +App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Reacties doorplaatsen (Hubzilla_WP-plugin vereist)"; +App::$strings["WordPress Post Settings"] = "Doorplaatsen naar WordPress"; +App::$strings["Wordpress Settings saved."] = "WordPress-instellingen opgeslagen."; +App::$strings["XMPP settings updated."] = "XMPP-instellingen bijgewerkt."; +App::$strings["Enable Chat"] = "Chatten inschakelen"; +App::$strings["Individual credentials"] = "Individuele credentials"; +App::$strings["Jabber BOSH server"] = "BOSH-server van Jabber"; +App::$strings["XMPP Settings"] = "XMPP"; +App::$strings["Jabber BOSH host"] = "BOSH-host van Jabber"; +App::$strings["Use central userbase"] = "Gebruik een centrale gebruikersgroep"; +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."] = "Wanneer ingeschakeld worden leden automatisch op een Ejabberd-server ingelogd. Deze dient wel op deze machine te zijn geïnstalleerd met zgn. 'synchronized credentials' via het 'auth_ejabberd.php'-script."; +App::$strings["Select Channel"] = "Kies een kanaal"; +App::$strings["Read-write"] = "Lees- en schrijfrechten"; +App::$strings["Read-only"] = "Alleen leesrechten"; +App::$strings["My Calendars"] = "Mijn agenda's"; +App::$strings["Shared Calendars"] = "Gedeelde agenda's"; +App::$strings["Share this calendar"] = "Agenda delen"; +App::$strings["Calendar name and color"] = "Naam en kleur agenda"; +App::$strings["Create new calendar"] = "Nieuwe agenda aanmaken"; +App::$strings["Calendar Name"] = "Naam agenda"; +App::$strings["Calendar Tools"] = "Agenda-hulpmiddelen"; +App::$strings["Import calendar"] = "Importeren"; +App::$strings["Select a calendar to import to"] = "Kies een agenda om te importeren"; +App::$strings["Addressbooks"] = "Adresboeken"; +App::$strings["Addressbook name"] = "Naam adresboek"; +App::$strings["Create new addressbook"] = "Nieuw adresboek aanmaken"; +App::$strings["Addressbook Name"] = "Naam adresboek"; +App::$strings["Addressbook Tools"] = "Adresboek-hulpmiddelen"; +App::$strings["Import addressbook"] = "Importeren"; +App::$strings["Select an addressbook to import to"] = "Kies een adresboek om te importeren"; +App::$strings["Errors encountered creating database table: "] = "Fouten opgetreden tijdens aanmaken databasetabel: "; +App::$strings["Default Calendar"] = "Standaard agenda"; +App::$strings["Default Addressbook"] = "Standaard adresboek"; +App::$strings["CalDAV/CardDAV Settings saved."] = "CalDAV/CardDAV-instellingen opgeslagen."; +App::$strings["Enable CalDAV/CardDAV Server for this channel"] = "CalDAV/CardDAV-server voor dit kanaal inschakelen"; +App::$strings["Your CalDAV resources are located at %s "] = "Jouw CalDAV-URL is %s "; +App::$strings["Your CardDAV resources are located at %s "] = "Jouw CardDAV-URL is %s "; +App::$strings["CalDAV/CardDAV Settings"] = "CalDAV/CardDAV"; +App::$strings["Mobile"] = "Mobiel"; +App::$strings["Home"] = "Thuis"; +App::$strings["Home, Voice"] = "Thuis, spraak"; +App::$strings["Home, Fax"] = "Thuis, fax"; +App::$strings["Work"] = "Werk"; +App::$strings["Work, Voice"] = "Werk, spraak"; +App::$strings["Work, Fax"] = "Werk, fax"; +App::$strings["INVALID EVENT DISMISSED!"] = "ONGELDIGE GEBEURTENIS VERWIJDERD!"; +App::$strings["Summary: "] = "Samenvatting: "; +App::$strings["Date: "] = "Datum: "; +App::$strings["Reason: "] = "Reden: "; +App::$strings["INVALID CARD DISMISSED!"] = "ONGELDIGE CONTACTKAART VERWIJDERD!"; +App::$strings["Name: "] = "Naam: "; +App::$strings["You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV Settings before you can use it."] = "Voordat je dit kunt gebruiken dien je eerst deze plugin onder 'Plugin-instellingen > CalDAV/CardDAV' in te schakelen."; +App::$strings["Example: YYYY-MM-DD HH:mm"] = "Bijvoorbeeld: JJJJ-MM-DD UU:mm"; +App::$strings["End date and time"] = "Einddatum en -tijd"; +App::$strings["List month"] = "Maand tonen"; +App::$strings["List week"] = "Week tonen"; +App::$strings["List day"] = "Dag tonen"; +App::$strings["More"] = "Meer"; +App::$strings["Less"] = "Minder"; +App::$strings["Select calendar"] = "Kies agenda"; +App::$strings["Delete all"] = "Alles verwijderen"; +App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "Excuses! Bewerken van herhalende gebeurtenissen is nog niet geïmplementeerd."; +App::$strings["Organisation"] = "Organisatie"; +App::$strings["Title"] = "Titel"; +App::$strings["Phone"] = "Telefoon"; +App::$strings["Instant messenger"] = "Instant messenger"; +App::$strings["Website"] = "Website"; +App::$strings["Note"] = "Opmerking"; +App::$strings["Add Field"] = "Veld toevoegen"; +App::$strings["P.O. Box"] = "Postbus"; +App::$strings["Additional"] = "Extra"; +App::$strings["Street"] = "Straat en huisnummer"; +App::$strings["Locality"] = "Plaats"; +App::$strings["Region"] = "Provincie/staat/regio/enz."; +App::$strings["ZIP Code"] = "Postcode"; +App::$strings["Invalid game."] = "Ongeldig spel."; +App::$strings["You are not a player in this game."] = "Jij doet niet aan dit speel mee."; +App::$strings["You must be a local channel to create a game."] = "Je moet een lokaal kanaal zijn om een spel aan te maken."; +App::$strings["You must select one opponent that is not yourself."] = "Je moet één tegenstander uitkiezen, maar niet jezelf."; +App::$strings["Creating new game..."] = "Nieuw spel wordt aangemaakt..."; +App::$strings["You must select white or black."] = "Je moet wit of zwart kiezen."; +App::$strings["Error creating new game."] = "Fout tijdens aanmaken nieuw spel."; +App::$strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar."; +App::$strings["You must select a local channel /chess/channelname"] = "Je moet een lokaal kanaal kiezen: .../chess/kanaalnaam"; +App::$strings["Enable notifications"] = "Notificaties inschakelen"; +App::$strings["Your Webbie:"] = "Jouw kanaaladres:"; +App::$strings["Fontsize (px):"] = "Tekengrootte (px):"; +App::$strings["Link:"] = "Link:"; +App::$strings["Like us on Hubzilla"] = "Like ons op Hubzilla"; +App::$strings["Embed:"] = "Insluiten (embed):"; +App::$strings["Male"] = "Man"; +App::$strings["Female"] = "Vrouw"; +App::$strings["OpenID protocol error. No ID returned."] = "OpenID-protocolfout. Geen ID terugontvangen."; +App::$strings["Login failed."] = "Inloggen mislukt."; +App::$strings["First Name"] = "Voornaam"; +App::$strings["Last Name"] = "Achternaam"; +App::$strings["Full Name"] = "Volledige naam"; +App::$strings["Profile Photo 16px"] = "Profielfoto 16px"; +App::$strings["Profile Photo 32px"] = "Profielfoto 32px"; +App::$strings["Profile Photo 48px"] = "Profielfoto 48px"; +App::$strings["Profile Photo 64px"] = "Profielfoto 64px"; +App::$strings["Profile Photo 80px"] = "Profielfoto 80px"; +App::$strings["Profile Photo 128px"] = "Profielfoto 128px"; +App::$strings["Timezone"] = "Tijdzone"; +App::$strings["Birth Year"] = "Geboortejaar"; +App::$strings["Birth Month"] = "Geboortemaand"; +App::$strings["Birth Day"] = "Geboortedag"; +App::$strings["Birthdate"] = "Geboortedatum"; +App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "We hebben een probleem ontdekt tijdens het inloggen met de OpenID die je hebt verstrekt. Controleer de ID op typefouten."; +App::$strings["The error message was:"] = "Foutmelding was:"; +App::$strings["Reconnecting %d connections"] = "%d connecties opnieuw aan het verbinden"; +App::$strings["Diaspora Reconnect"] = "Diaspora opnieuw verbinden"; +App::$strings["Use this form to re-establish Diaspora connections which were initially made from a different hub."] = "Gebruik dit formulier om opnieuw met Diaspora-connecties te verbinden, die oorspronkelijk op een andere hub waren verbonden."; +App::$strings["Reconnect"] = "Opnieuw verbinden"; +App::$strings["Send test email"] = "Test-e-mail versturen"; +App::$strings["Mail sent."] = "E-mail verzonden."; +App::$strings["Sending of mail failed."] = "Verzenden van e-mail mislukt."; +App::$strings["Mail Test"] = "E-mailtest"; +App::$strings["Errors encountered deleting database table "] = "Fouten opgetreden tijdens verwijderen databasetabel "; +App::$strings["Drop tables when uninstalling?"] = "Verwijder tabellen tijdens uitschakelen plugin?"; +App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Wanneer dit is aangevinkt worden de tabellen in de Rendezvous-database verwijderd wanneer de plugin wordt uitgeschakeld."; +App::$strings["Mapbox Access Token"] = "Toegangstoken "; +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."] = "De Mapbox-toegangstoken wordt gebruikt om kaarttegels (tiles) van Mapbox op te halen in plaats van de standaard tile-server van OpenStreetMap."; +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."] = "Deze identiteit is door een ander lid verwijderd als gevolg van inactiviteit. Klik op de knop \"Nieuwe identiteit\" of herlaad de pagina om een nieuwe identiteit aan te maken. Je kan eventueel dezelfde naam gebruiken."; +App::$strings["Welcome to Rendezvous!"] = "Welkom bij Rendezvous!"; +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."] = "Vul je naam in om deel te nemen aan deze rendezvous. Om met het delen van je locatie met de andere leden te beginnen, klik je op de locatieknop van je webbrowser. Nadat jouw locatie is gevonden verschijnt er een rode stip en kunnen andere leden jou zien op de kaart."; +App::$strings["Let's meet here"] = "Laten we elkaar hier ontmoeten"; +App::$strings["New marker"] = "Nieuwe markering"; +App::$strings["Edit marker"] = "Markering bewerken"; +App::$strings["New identity"] = "Nieuwe identiteit"; +App::$strings["Delete marker"] = "Markering verwijderen"; +App::$strings["Delete member"] = "Lid verwijderen"; +App::$strings["Edit proximity alert"] = "Nabijheidswaarschuwing bewerken"; +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):"] = "Een nabijheidswaarschuwing wordt actief wanneer dit lid zich binnen een bepaalde straal bevindt.<br><br>Voer het aantal meters van de straal in (0 om uit te schakelen):"; +App::$strings["distance"] = "afstand"; +App::$strings["Add new rendezvous"] = "Nieuwe rendezvous toevoegen"; +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."] = "Maak een nieuwe rendezvous aan en deel de toegangslink met wie je wil uitnodigen voor de groep. Wie op de link klikt wordt lid van rendezvous. Zij kunnen dan de locaties zien van andere leden, markeringen aan de kaart toevoegen of hun eigen locaties met de groep delen."; App::$strings["No username found in import file."] = "Geen gebruikersnaam in het importbestand gevonden."; App::$strings["Unable to create a unique channel address. Import failed."] = "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt."; App::$strings["Cannot locate DNS info for database server '%s'"] = "Kan DNS-informatie voor databaseserver '%s' niet vinden"; -App::$strings["Can view my normal stream and posts"] = "Kan mijn normale kanaalstream en berichten bekijken"; -App::$strings["Can view my webpages"] = "Kan mijn pagina's bekijken"; -App::$strings["Can post on my channel page (\"wall\")"] = "Kan een bericht in mijn kanaal plaatsen"; -App::$strings["Can like/dislike stuff"] = "Kan dingen leuk of niet leuk vinden"; -App::$strings["Profiles and things other than posts/comments"] = "Profielen en dingen, buiten berichten en reacties"; -App::$strings["Can forward to all my channel contacts via post @mentions"] = "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+"; -App::$strings["Advanced - useful for creating group forum channels"] = "Geavanceerd - nuttig voor groepforums"; -App::$strings["Can chat with me (when available)"] = "Kan met mij chatten (wanneer beschikbaar)"; -App::$strings["Can write to my file storage and photos"] = "Kan foto's en andere bestanden aan mijn bestandsopslag toevoegen"; -App::$strings["Can edit my webpages"] = "Kan mijn pagina's bewerken"; -App::$strings["Somewhat advanced - very useful in open communities"] = "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)"; -App::$strings["Can administer my channel resources"] = "Kan mijn kanaal beheren"; -App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet."; -App::$strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"; -App::$strings["Image file is empty."] = "Afbeeldingsbestand is leeg"; -App::$strings["Photo storage failed."] = "Foto kan niet worden opgeslagen"; -App::$strings["a new photo"] = "een nieuwe foto"; -App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s plaatste %2\$s op %3\$s"; -App::$strings["Photo Albums"] = "Fotoalbums"; -App::$strings["Upload New Photos"] = "Nieuwe foto's uploaden"; -App::$strings["General Features"] = "Algemene functies"; -App::$strings["Multiple Profiles"] = "Meerdere profielen"; -App::$strings["Ability to create multiple profiles"] = "Mogelijkheid om meerdere profielen aan te maken"; -App::$strings["Advanced Profiles"] = "Geavanceerde profielen"; -App::$strings["Additional profile sections and selections"] = "Extra onderdelen en keuzes voor je profiel"; -App::$strings["Profile Import/Export"] = "Profiel importen/exporteren"; -App::$strings["Save and load profile details across sites/channels"] = "Profielgegevens opslaan en in andere hubs/kanalen gebruiken."; -App::$strings["Web Pages"] = "Webpagina's"; -App::$strings["Provide managed web pages on your channel"] = "Sta beheerde webpagina's op jouw kanaal toe"; -App::$strings["Provide a wiki for your channel"] = "Voeg een wiki aan jouw kanaal toe"; -App::$strings["Private Notes"] = "Privé-aantekeningen"; -App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Een eenvoudige toepassing om aantekeningen en herinneringen in te bewaren (let op: niet versleuteld)"; -App::$strings["Navigation Channel Select"] = "Kanaal kiezen in navigatiemenu"; -App::$strings["Change channels directly from within the navigation dropdown menu"] = "Kies een ander kanaal direct vanuit het dropdown-menu op de navigatiebalk"; -App::$strings["Photo Location"] = "Fotolocatie"; -App::$strings["If location data is available on uploaded photos, link this to a map."] = "Wanneer in de geüploade foto's locatiegegevens aanwezig zijn, link dit dan aan een kaart."; -App::$strings["Access Controlled Chatrooms"] = "Chatkanalen met toegangscontrole "; -App::$strings["Provide chatrooms and chat services with access control."] = "Chatkanalen en chatdiensten met toegangscontrole aanbieden."; -App::$strings["Smart Birthdays"] = "Slimme verjaardagen"; -App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Maak verjaardagen bewust van tijdzones. Voor het geval dat jouw vrienden over de hele wereld verspreid zijn."; -App::$strings["Advanced Directory Search"] = "Geavanceerd in de kanalengids zoeken"; -App::$strings["Allows creation of complex directory search queries"] = "Gebruik complexe zoekopdrachten in de kanalengids"; -App::$strings["Advanced Theme and Layout Settings"] = "Geavanceerde thema- en lay-out-instellingen"; -App::$strings["Allows fine tuning of themes and page layouts"] = "Maakt het mogelijk dat thema's en pagina-lay-outs preciezer ingesteld kunnen worden "; -App::$strings["Post Composition Features"] = "Functies voor het opstellen van berichten"; -App::$strings["Large Photos"] = "Grote foto's"; -App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Gebruik grotere foto's (1024px) in berichten. Wanneer dit is uitgeschakeld worden er kleinere foto's (640px) gebruikt."; -App::$strings["Automatically import channel content from other channels or feeds"] = "Automatisch inhoud uit andere kanalen of feeds importeren."; -App::$strings["Even More Encryption"] = "Extra encryptie"; -App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Sta toe dat inhoud extra end-to-end wordt versleuteld met een gedeelde geheime sleutel."; -App::$strings["Enable Voting Tools"] = "Peilingen inschakelen"; -App::$strings["Provide a class of post which others can vote on"] = "Maakt het mogelijk om een bericht op te stellen, waar mensen op kunnen stemmen."; -App::$strings["Disable Comments"] = "Reacties uitschakelen"; -App::$strings["Provide the option to disable comments for a post"] = "Maak het mogelijk dat reacties op een bericht kunnen worden uitgeschakeld"; -App::$strings["Delayed Posting"] = "Berichten uitstellen"; -App::$strings["Allow posts to be published at a later date"] = "Maakt het mogelijk dat berichten op een toekomstig moment gepubliceerd kunnen worden."; -App::$strings["Content Expiration"] = "Inhoud laten verlopen"; -App::$strings["Remove posts/comments and/or private messages at a future time"] = "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen"; -App::$strings["Suppress Duplicate Posts/Comments"] = "Dubbele berichten/reacties tegenhouden"; -App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Voorkomt dat berichten en reacties met identieke inhoud en die binnen twee minuten zijn verstuurd, worden gepubliceerd. "; -App::$strings["Network and Stream Filtering"] = "Netwerk- en streamfilter"; -App::$strings["Search by Date"] = "Zoek op datum"; -App::$strings["Ability to select posts by date ranges"] = "Mogelijkheid om berichten op datum te filteren "; -App::$strings["Privacy Groups"] = "Privacygroepen"; -App::$strings["Enable management and selection of privacy groups"] = "Beheer en selectie van privacygroepen inschakelen"; -App::$strings["Saved Searches"] = "Opgeslagen zoekopdrachten"; -App::$strings["Save search terms for re-use"] = "Sla zoekopdrachten op voor hergebruik"; -App::$strings["Network Personal Tab"] = "Persoonlijke netwerktab"; -App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had"; -App::$strings["Network New Tab"] = "Nieuwe netwerktab"; -App::$strings["Enable tab to display all new Network activity"] = "Laat de tab alle nieuwe netwerkactiviteit tonen"; -App::$strings["Affinity Tool"] = "Verwantschapsfilter"; -App::$strings["Filter stream activity by depth of relationships"] = "Filter wat je in jouw grid ziet op hoe goed je iemand kent of mag"; -App::$strings["Show friend and connection suggestions"] = "Toon kanaalvoorstellen"; -App::$strings["Connection Filtering"] = "Berichtenfilters"; -App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filter binnenkomende berichten van connecties aan de hand van trefwoorden en taal"; -App::$strings["Post/Comment Tools"] = "Bericht- en reactiehulpmiddelen"; -App::$strings["Community Tagging"] = "Taggen door anderen"; -App::$strings["Ability to tag existing posts"] = "Geeft andere mensen de mogelijkheid om jouw (bestaande) berichten te taggen"; -App::$strings["Post Categories"] = "Categorieën berichten"; -App::$strings["Add categories to your posts"] = "Voeg categorieën toe aan je berichten"; -App::$strings["Emoji Reactions"] = "Emoji-reacties"; -App::$strings["Add emoji reaction ability to posts"] = "Emoji-reacties in berichten toestaan"; -App::$strings["Saved Folders"] = "Bewaarde mappen"; -App::$strings["Ability to file posts under folders"] = "Mogelijkheid om berichten in mappen op te slaan"; -App::$strings["Dislike Posts"] = "Vind berichten niet leuk"; -App::$strings["Ability to dislike posts/comments"] = "Mogelijkheid om berichten en reacties niet leuk te vinden"; -App::$strings["Star Posts"] = "Geef berichten een ster"; -App::$strings["Ability to mark special posts with a star indicator"] = "Mogelijkheid om speciale berichten met een ster te markeren"; -App::$strings["Tag Cloud"] = "Tagwolk"; -App::$strings["Provide a personal tag cloud on your channel page"] = "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina"; -App::$strings["Premium Channel"] = "Premiumkanaal"; -App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Stelt je in staat om beperkingen en voorwaarden in te stellen voor jouw kanaal"; -App::$strings["Help:"] = "Hulp:"; -App::$strings["guest:"] = "gast:"; -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."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "; -App::$strings["prev"] = "vorige"; -App::$strings["first"] = "eerste"; -App::$strings["last"] = "laatste"; -App::$strings["next"] = "volgende"; -App::$strings["older"] = "ouder"; -App::$strings["newer"] = "nieuwer"; -App::$strings["No connections"] = "Geen connecties"; -App::$strings["View all %s connections"] = "Toon alle %s connecties"; -App::$strings["poke"] = "aanstoten"; -App::$strings["poked"] = "aangestoten"; -App::$strings["ping"] = "ping"; -App::$strings["pinged"] = "gepingd"; -App::$strings["prod"] = "por"; -App::$strings["prodded"] = "gepord"; -App::$strings["slap"] = "slaan"; -App::$strings["slapped"] = "sloeg"; -App::$strings["finger"] = "finger"; -App::$strings["fingered"] = "gefingerd"; -App::$strings["rebuff"] = "afpoeieren"; -App::$strings["rebuffed"] = "afgepoeierd"; -App::$strings["happy"] = "gelukkig"; -App::$strings["sad"] = "bedroefd"; -App::$strings["mellow"] = "mellow"; -App::$strings["tired"] = "moe"; -App::$strings["perky"] = "parmantig"; -App::$strings["angry"] = "boos"; -App::$strings["stupefied"] = "verbijsterd"; -App::$strings["puzzled"] = "verward"; -App::$strings["interested"] = "geïnteresseerd"; -App::$strings["bitter"] = "verbitterd"; -App::$strings["cheerful"] = "vrolijk"; -App::$strings["alive"] = "levendig"; -App::$strings["annoyed"] = "geërgerd"; -App::$strings["anxious"] = "bezorgd"; -App::$strings["cranky"] = "humeurig"; -App::$strings["disturbed"] = "verontrust"; -App::$strings["frustrated"] = "gefrustreerd "; -App::$strings["depressed"] = "gedeprimeerd"; -App::$strings["motivated"] = "gemotiveerd"; -App::$strings["relaxed"] = "ontspannen"; -App::$strings["surprised"] = "verrast"; -App::$strings["Monday"] = "maandag"; -App::$strings["Tuesday"] = "dinsdag"; -App::$strings["Wednesday"] = "woensdag"; -App::$strings["Thursday"] = "donderdag"; -App::$strings["Friday"] = "vrijdag"; -App::$strings["Saturday"] = "zaterdag"; -App::$strings["Sunday"] = "zondag"; -App::$strings["January"] = "januari"; -App::$strings["February"] = "februari"; -App::$strings["March"] = "maart"; -App::$strings["April"] = "april"; -App::$strings["May"] = "mei"; -App::$strings["June"] = "juni"; -App::$strings["July"] = "juli"; -App::$strings["August"] = "augustus"; -App::$strings["September"] = "september"; -App::$strings["October"] = "oktober"; -App::$strings["November"] = "november"; -App::$strings["December"] = "december"; -App::$strings["Unknown Attachment"] = "Onbekende bijlage"; -App::$strings["unknown"] = "onbekend"; -App::$strings["remove category"] = "categorie verwijderen"; -App::$strings["remove from file"] = "uit map verwijderen"; -App::$strings["default"] = "standaard"; -App::$strings["Page layout"] = "Pagina-lay-out"; -App::$strings["You can create your own with the layouts tool"] = "Je kan jouw eigen lay-out ontwerpen onder lay-outs"; -App::$strings["Page content type"] = "Opmaaktype pagina"; -App::$strings["Select an alternate language"] = "Kies een andere taal"; -App::$strings["activity"] = "activiteit"; -App::$strings["Design Tools"] = "Ontwerp-hulpmiddelen"; -App::$strings["Pages"] = "Pagina's"; -App::$strings["Import website..."] = "Website importeren..."; -App::$strings["Select folder to import"] = "Kies een map om te importeren"; -App::$strings["Import from a zipped folder:"] = "Vanuit een zipbestand importeren:"; -App::$strings["Import from cloud files:"] = "Vanuit de cloud importeren:"; -App::$strings["/cloud/channel/path/to/folder"] = "/cloud/channel/maplocatie"; -App::$strings["Enter path to website files"] = "Voer de locatie in van de websitebestanden"; -App::$strings["Select folder"] = "Kies een map"; -App::$strings["Export website..."] = "Website exporteren..."; -App::$strings["Export to a zip file"] = "Naar een zipbestand exporteren"; -App::$strings["website.zip"] = "website.zip"; -App::$strings["Enter a name for the zip file."] = "Vul een naam in voor het zipbestand."; -App::$strings["Export to cloud files"] = "Naar de cloud exporteren"; -App::$strings["/path/to/export/folder"] = "/locatie/van/export/map"; -App::$strings["Enter a path to a cloud files destination."] = "Voer de locatie in van de cloudbestemming"; -App::$strings["Specify folder"] = "Selecteer een map"; -App::$strings["Invalid data packet"] = "Datapakket ongeldig"; -App::$strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. "; -App::$strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd"; -App::$strings["invalid target signature"] = "ongeldig doelkenmerk"; +App::$strings["Birthday"] = "Verjaardag of geboortedatum"; +App::$strings["Age: "] = "Leeftijd:"; +App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD"; +App::$strings["never"] = "nooit"; +App::$strings["less than a second ago"] = "minder dan een seconde geleden"; +App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s geleden"; +App::$strings["__ctx:relative_date__ year"] = array( + 0 => "jaar", + 1 => "jaren", +); +App::$strings["__ctx:relative_date__ month"] = array( + 0 => "maand", + 1 => "maanden", +); +App::$strings["__ctx:relative_date__ week"] = array( + 0 => "week", + 1 => "weken", +); +App::$strings["__ctx:relative_date__ day"] = array( + 0 => "dag", + 1 => "dagen", +); +App::$strings["__ctx:relative_date__ hour"] = array( + 0 => "uur", + 1 => "uren", +); +App::$strings["__ctx:relative_date__ minute"] = array( + 0 => "minuut", + 1 => "minuten", +); +App::$strings["__ctx:relative_date__ second"] = array( + 0 => "seconde", + 1 => "seconden", +); +App::$strings["%1\$s's birthday"] = "Verjaardag van %1\$s"; +App::$strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s"; App::$strings["Not a valid email address"] = "Geen geldig e-mailadres"; App::$strings["Your email domain is not among those allowed on this site"] = "Jouw e-maildomein is op deze hub niet toegestaan"; App::$strings["Your email address is already registered at this site."] = "Jouw e-mailadres is al op deze hub geregistreerd."; @@ -1795,7 +2344,6 @@ App::$strings["Please enter the required information."] = "Vul de vereiste infor App::$strings["Failed to store account information."] = "Account-informatie kon niet opgeslagen worden."; App::$strings["Registration confirmation for %s"] = "Registratiebevestiging voor %s"; App::$strings["Registration request at %s"] = "Registratiebevestiging voor %s"; -App::$strings["Administrator"] = "Beheerder"; App::$strings["your registration password"] = "jouw registratiewachtwoord"; App::$strings["Registration details for %s"] = "Registratiegegevens voor %s"; App::$strings["Account approved."] = "Account goedgekeurd"; @@ -1803,18 +2351,12 @@ App::$strings["Registration revoked for %s"] = "Registratie ingetrokken voor %s" App::$strings["Click here to upgrade."] = "Klik hier om te upgraden."; App::$strings["This action exceeds the limits set by your subscription plan."] = "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden."; App::$strings["This action is not available under your subscription plan."] = "Deze handeling is niet mogelijk met jouw abonnement."; -App::$strings["No recipient provided."] = "Geen ontvanger opgegeven."; -App::$strings["[no subject]"] = "[geen onderwerp]"; -App::$strings["Unable to determine sender."] = "Afzender kan niet bepaald worden."; -App::$strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd."; App::$strings["Frequently"] = "Regelmatig"; App::$strings["Hourly"] = "Elk uur"; App::$strings["Twice daily"] = "Twee keer per dag"; App::$strings["Daily"] = "Dagelijks"; App::$strings["Weekly"] = "Wekelijks"; App::$strings["Monthly"] = "Maandelijks"; -App::$strings["Male"] = "Man"; -App::$strings["Female"] = "Vrouw"; App::$strings["Currently Male"] = "Momenteel man"; App::$strings["Currently Female"] = "Momenteel vrouw"; App::$strings["Mostly Male"] = "Voornamelijk man"; @@ -1878,12 +2420,9 @@ App::$strings["Reserved nickname. Please choose another."] = "Deze naam is geres App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik."; App::$strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden"; App::$strings["Default Profile"] = "Standaardprofiel"; -App::$strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar."; App::$strings["Create New Profile"] = "Nieuw profiel aanmaken"; -App::$strings["Edit Profile"] = "Profiel bewerken"; App::$strings["Visible to everybody"] = "Voor iedereen zichtbaar"; App::$strings["Gender:"] = "Geslacht:"; -App::$strings["Status:"] = "Status:"; App::$strings["Homepage:"] = "Homepagina:"; App::$strings["Online Now"] = "Nu online"; App::$strings["Like this channel"] = "Vind dit kanaal leuk"; @@ -1908,29 +2447,15 @@ App::$strings["Love/Romance:"] = "Liefde/romantiek:"; App::$strings["Work/employment:"] = "Werk/beroep:"; App::$strings["School/education:"] = "School/opleiding:"; App::$strings["Like this thing"] = "Vind dit ding leuk"; -App::$strings["Who can see this?"] = "Wie kan dit zien?"; -App::$strings["Custom selection"] = "Handmatige selectie"; -App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"."; -App::$strings["Show"] = "Tonen"; -App::$strings["Don't show"] = "Niet tonen"; -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."] = "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien."; -App::$strings["%1\$s's bookmarks"] = "Bladwijzers van %1\$s"; -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."] = "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken."; -App::$strings["Add new connections to this privacy group"] = "Voeg nieuwe connecties aan deze privacygroep toe"; -App::$strings["edit"] = "bewerken"; -App::$strings["Edit group"] = "Privacygroep bewerken"; -App::$strings["Add privacy group"] = "Privacygroep toevoegen"; -App::$strings["Channels not in any privacy group"] = "Kanalen die zich in geen enkele privacygroep bevinden"; -App::$strings["add"] = "toevoegen"; App::$strings["New window"] = "Nieuw venster"; App::$strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab"; App::$strings["User '%s' deleted"] = "Account '%s' verwijderd"; -App::$strings["New Page"] = "Nieuwe pagina"; -App::$strings["Title"] = "Titel"; -App::$strings["Different viewers will see this text differently"] = "Deze tekst wordt per persoon anders weergeven."; +App::$strings["Directory Options"] = "Opties kanalengids"; +App::$strings["Safe Mode"] = "Veilig zoeken"; +App::$strings["Public Forums Only"] = "Alleen openbare forums"; +App::$strings["This Website Only"] = "Alleen deze hub"; App::$strings["Logout"] = "Uitloggen"; App::$strings["End this session"] = "Beëindig deze sessie"; -App::$strings["Home"] = "Home"; App::$strings["Your posts and conversations"] = "Jouw kanaal"; App::$strings["Your profile page"] = "Jouw profielpagina"; App::$strings["Manage/Edit profiles"] = "Beheer/wijzig profielen"; @@ -1941,12 +2466,12 @@ App::$strings["Your chatrooms"] = "Jouw chatkanalen"; App::$strings["Bookmarks"] = "Bladwijzers"; App::$strings["Your bookmarks"] = "Jouw bladwijzers"; App::$strings["Your webpages"] = "Jouw webpagina's"; -App::$strings["Your wiki"] = "Jouw wiki"; +App::$strings["Your wikis"] = "Jouw wiki's"; App::$strings["Sign in"] = "Inloggen"; -App::$strings["%s - click to logout"] = "%s - klik om uit te loggen"; App::$strings["Remote authentication"] = "Authenticatie op afstand"; App::$strings["Click to authenticate to your home hub"] = "Authenticeer jezelf via (bijvoorbeeld) jouw hub"; -App::$strings["Home Page"] = "Homepage"; +App::$strings["Get me home"] = "Terug naar mijn hub"; +App::$strings["Log me out of this site"] = "Uitloggen op deze hub"; App::$strings["Create an account"] = "Maak een account aan"; App::$strings["Help and documentation"] = "Hulp en documentatie"; App::$strings["Applications, utilities, links, games"] = "Apps"; @@ -1975,11 +2500,115 @@ App::$strings["Site Setup and Configuration"] = "Hub instellen en beheren"; App::$strings["Loading..."] = "Aan het laden..."; App::$strings["@name, #tag, ?doc, content"] = "@kanaal, #tag, inhoud, ?hulp"; App::$strings["Please wait..."] = "Wachten aub..."; +App::$strings["General Features"] = "Algemene functies"; +App::$strings["Multiple Profiles"] = "Meerdere profielen"; +App::$strings["Ability to create multiple profiles"] = "Mogelijkheid om meerdere profielen aan te maken"; +App::$strings["Advanced Profiles"] = "Geavanceerde profielen"; +App::$strings["Additional profile sections and selections"] = "Extra onderdelen en keuzes voor je profiel"; +App::$strings["Profile Import/Export"] = "Profiel importen/exporteren"; +App::$strings["Save and load profile details across sites/channels"] = "Profielgegevens opslaan en in andere hubs/kanalen gebruiken."; +App::$strings["Web Pages"] = "Webpagina's"; +App::$strings["Provide managed web pages on your channel"] = "Sta beheerde webpagina's op jouw kanaal toe"; +App::$strings["Provide a wiki for your channel"] = "Voeg een wiki aan jouw kanaal toe"; +App::$strings["Private Notes"] = "Privé-aantekeningen"; +App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Een eenvoudige toepassing om aantekeningen en herinneringen in te bewaren (let op: niet versleuteld)"; +App::$strings["Navigation Channel Select"] = "Kanaal kiezen in navigatiemenu"; +App::$strings["Change channels directly from within the navigation dropdown menu"] = "Kies een ander kanaal direct vanuit het dropdown-menu op de navigatiebalk"; +App::$strings["Photo Location"] = "Fotolocatie"; +App::$strings["If location data is available on uploaded photos, link this to a map."] = "Wanneer in de geüploade foto's locatiegegevens aanwezig zijn, link dit dan aan een kaart."; +App::$strings["Access Controlled Chatrooms"] = "Chatkanalen met toegangscontrole "; +App::$strings["Provide chatrooms and chat services with access control."] = "Chatkanalen en chatdiensten met toegangscontrole aanbieden."; +App::$strings["Smart Birthdays"] = "Slimme verjaardagen"; +App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Maak verjaardagen bewust van tijdzones. Voor het geval dat jouw vrienden over de hele wereld verspreid zijn."; +App::$strings["Advanced Directory Search"] = "Geavanceerd in de kanalengids zoeken"; +App::$strings["Allows creation of complex directory search queries"] = "Gebruik complexe zoekopdrachten in de kanalengids"; +App::$strings["Advanced Theme and Layout Settings"] = "Geavanceerde thema- en lay-out-instellingen"; +App::$strings["Allows fine tuning of themes and page layouts"] = "Maakt het mogelijk dat thema's en pagina-lay-outs preciezer ingesteld kunnen worden "; +App::$strings["Post Composition Features"] = "Functies voor het opstellen van berichten"; +App::$strings["Large Photos"] = "Grote foto's"; +App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Gebruik grotere foto's (1024px) in berichten. Wanneer dit is uitgeschakeld worden er kleinere foto's (640px) gebruikt."; +App::$strings["Automatically import channel content from other channels or feeds"] = "Automatisch inhoud uit andere kanalen of feeds importeren."; +App::$strings["Even More Encryption"] = "Extra encryptie"; +App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Sta toe dat inhoud extra end-to-end wordt versleuteld met een gedeelde geheime sleutel."; +App::$strings["Enable Voting Tools"] = "Peilingen inschakelen"; +App::$strings["Provide a class of post which others can vote on"] = "Maakt het mogelijk om een bericht op te stellen, waar mensen op kunnen stemmen."; +App::$strings["Disable Comments"] = "Reacties uitschakelen"; +App::$strings["Provide the option to disable comments for a post"] = "Maak het mogelijk dat reacties op een bericht kunnen worden uitgeschakeld"; +App::$strings["Delayed Posting"] = "Berichten uitstellen"; +App::$strings["Allow posts to be published at a later date"] = "Maakt het mogelijk dat berichten op een toekomstig moment gepubliceerd kunnen worden."; +App::$strings["Content Expiration"] = "Inhoud laten verlopen"; +App::$strings["Remove posts/comments and/or private messages at a future time"] = "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen"; +App::$strings["Suppress Duplicate Posts/Comments"] = "Dubbele berichten/reacties tegenhouden"; +App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Voorkomt dat berichten en reacties met identieke inhoud en die binnen twee minuten zijn verstuurd, worden gepubliceerd. "; +App::$strings["Network and Stream Filtering"] = "Netwerk- en streamfilter"; +App::$strings["Search by Date"] = "Zoek op datum"; +App::$strings["Ability to select posts by date ranges"] = "Mogelijkheid om berichten op datum te filteren "; +App::$strings["Privacy Groups"] = "Privacygroepen"; +App::$strings["Enable management and selection of privacy groups"] = "Beheer en selectie van privacygroepen inschakelen"; +App::$strings["Saved Searches"] = "Opgeslagen zoekopdrachten"; +App::$strings["Save search terms for re-use"] = "Sla zoekopdrachten op voor hergebruik"; +App::$strings["Network Personal Tab"] = "Persoonlijke netwerktab"; +App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had"; +App::$strings["Network New Tab"] = "Nieuwe netwerktab"; +App::$strings["Enable tab to display all new Network activity"] = "Laat de tab alle nieuwe netwerkactiviteit tonen"; +App::$strings["Affinity Tool"] = "Verwantschapsfilter"; +App::$strings["Filter stream activity by depth of relationships"] = "Filter wat je in jouw grid ziet op hoe goed je iemand kent of mag"; +App::$strings["Show friend and connection suggestions"] = "Toon kanaalvoorstellen"; +App::$strings["Connection Filtering"] = "Berichtenfilters"; +App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filter binnenkomende berichten van connecties aan de hand van trefwoorden en taal"; +App::$strings["Post/Comment Tools"] = "Bericht- en reactiehulpmiddelen"; +App::$strings["Community Tagging"] = "Taggen door anderen"; +App::$strings["Ability to tag existing posts"] = "Geeft andere mensen de mogelijkheid om jouw (bestaande) berichten te taggen"; +App::$strings["Post Categories"] = "Categorieën berichten"; +App::$strings["Add categories to your posts"] = "Voeg categorieën toe aan je berichten"; +App::$strings["Emoji Reactions"] = "Emoji-reacties"; +App::$strings["Add emoji reaction ability to posts"] = "Emoji-reacties in berichten toestaan"; +App::$strings["Saved Folders"] = "Bewaarde mappen"; +App::$strings["Ability to file posts under folders"] = "Mogelijkheid om berichten in mappen op te slaan"; +App::$strings["Dislike Posts"] = "Vind berichten niet leuk"; +App::$strings["Ability to dislike posts/comments"] = "Mogelijkheid om berichten en reacties niet leuk te vinden"; +App::$strings["Star Posts"] = "Geef berichten een ster"; +App::$strings["Ability to mark special posts with a star indicator"] = "Mogelijkheid om speciale berichten met een ster te markeren"; +App::$strings["Tag Cloud"] = "Tagwolk"; +App::$strings["Provide a personal tag cloud on your channel page"] = "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina"; +App::$strings["Premium Channel"] = "Premiumkanaal"; +App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Stelt je in staat om beperkingen en voorwaarden in te stellen voor jouw kanaal"; App::$strings["Attachments:"] = "Bijlagen:"; App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i"; App::$strings["\$Projectname event notification:"] = "Notificatie \$Projectname-gebeurtenis:"; App::$strings["Starts:"] = "Start:"; App::$strings["Finishes:"] = "Einde:"; +App::$strings["%1\$s's bookmarks"] = "Bladwijzers van %1\$s"; +App::$strings["Help:"] = "Hulp:"; +App::$strings["Not Found"] = "Niet gevonden"; +App::$strings["Different viewers will see this text differently"] = "Deze tekst wordt per persoon anders weergeven."; +App::$strings["Invalid data packet"] = "Datapakket ongeldig"; +App::$strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. "; +App::$strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd"; +App::$strings["invalid target signature"] = "ongeldig doelkenmerk"; +App::$strings["New Page"] = "Nieuwe pagina"; +App::$strings["Unable to determine sender."] = "Afzender kan niet bepaald worden."; +App::$strings["No recipient provided."] = "Geen ontvanger opgegeven."; +App::$strings["[no subject]"] = "[geen onderwerp]"; +App::$strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd."; +App::$strings["%d invitation available"] = array( + 0 => "%d uitnodiging beschikbaar", + 1 => "%d uitnodigingen beschikbaar", +); +App::$strings["Find Channels"] = "Kanalen vinden"; +App::$strings["Enter name or interest"] = "Vul naam of interesse in"; +App::$strings["Connect/Follow"] = "Verbinden/volgen"; +App::$strings["Examples: Robert Morgenstein, Fishing"] = "Voorbeeld: Robert Morgenstein, vissen"; +App::$strings["Random Profile"] = "Willekeurig profiel"; +App::$strings["Invite Friends"] = "Vrienden uitnodigen"; +App::$strings["Advanced example: name=fred and country=iceland"] = "Geavanceerd voorbeeld (Engels): name=jan en country=nederland"; +App::$strings["Everything"] = "Alles"; +App::$strings["Categories"] = "Categorieën"; +App::$strings["%d connection in common"] = array( + 0 => "%d gemeenschappelijke connectie", + 1 => "%d gemeenschappelijke connecties", +); +App::$strings["show more"] = "meer connecties weergeven"; App::$strings["Delete this item?"] = "Dit item verwijderen?"; App::$strings["%s show less"] = "%s minder reacties weergeven"; App::$strings["%s expand"] = "%s uitklappen"; @@ -2013,7 +2642,18 @@ App::$strings["about a year"] = "ongeveer een jaar"; App::$strings["%d years"] = "%d jaren"; App::$strings[" "] = " "; App::$strings["timeago.numbers"] = "timeago.numbers"; +App::$strings["January"] = "januari"; +App::$strings["February"] = "februari"; +App::$strings["March"] = "maart"; +App::$strings["April"] = "april"; App::$strings["__ctx:long__ May"] = "mei"; +App::$strings["June"] = "juni"; +App::$strings["July"] = "juli"; +App::$strings["August"] = "augustus"; +App::$strings["September"] = "september"; +App::$strings["October"] = "oktober"; +App::$strings["November"] = "november"; +App::$strings["December"] = "december"; App::$strings["Jan"] = "jan"; App::$strings["Feb"] = "feb"; App::$strings["Mar"] = "mrt"; @@ -2026,6 +2666,13 @@ App::$strings["Sep"] = "sep"; App::$strings["Oct"] = "okt"; App::$strings["Nov"] = "nov"; App::$strings["Dec"] = "dec"; +App::$strings["Sunday"] = "zondag"; +App::$strings["Monday"] = "maandag"; +App::$strings["Tuesday"] = "dinsdag"; +App::$strings["Wednesday"] = "woensdag"; +App::$strings["Thursday"] = "donderdag"; +App::$strings["Friday"] = "vrijdag"; +App::$strings["Saturday"] = "zaterdag"; App::$strings["Sun"] = "zo"; App::$strings["Mon"] = "ma"; App::$strings["Tue"] = "di"; @@ -2038,6 +2685,131 @@ App::$strings["__ctx:calendar__ month"] = "maand"; App::$strings["__ctx:calendar__ week"] = "week"; App::$strings["__ctx:calendar__ day"] = "dag"; App::$strings["__ctx:calendar__ All day"] = "hele dag"; +App::$strings["Tags"] = "Tags"; +App::$strings["Keywords"] = "Trefwoorden"; +App::$strings["have"] = "heb"; +App::$strings["has"] = "heeft"; +App::$strings["want"] = "wil"; +App::$strings["wants"] = "wil"; +App::$strings["likes"] = "vindt dit leuk"; +App::$strings["dislikes"] = "vindt dit niet leuk"; +App::$strings["prev"] = "vorige"; +App::$strings["first"] = "eerste"; +App::$strings["last"] = "laatste"; +App::$strings["next"] = "volgende"; +App::$strings["older"] = "ouder"; +App::$strings["newer"] = "nieuwer"; +App::$strings["No connections"] = "Geen connecties"; +App::$strings["View all %s connections"] = "Toon alle %s connecties"; +App::$strings["poke"] = "aanstoten"; +App::$strings["poked"] = "aangestoten"; +App::$strings["ping"] = "ping"; +App::$strings["pinged"] = "gepingd"; +App::$strings["prod"] = "por"; +App::$strings["prodded"] = "gepord"; +App::$strings["slap"] = "slaan"; +App::$strings["slapped"] = "sloeg"; +App::$strings["finger"] = "finger"; +App::$strings["fingered"] = "gefingerd"; +App::$strings["rebuff"] = "afpoeieren"; +App::$strings["rebuffed"] = "afgepoeierd"; +App::$strings["happy"] = "gelukkig"; +App::$strings["sad"] = "bedroefd"; +App::$strings["mellow"] = "mellow"; +App::$strings["tired"] = "moe"; +App::$strings["perky"] = "parmantig"; +App::$strings["angry"] = "boos"; +App::$strings["stupefied"] = "verbijsterd"; +App::$strings["puzzled"] = "verward"; +App::$strings["interested"] = "geïnteresseerd"; +App::$strings["bitter"] = "verbitterd"; +App::$strings["cheerful"] = "vrolijk"; +App::$strings["alive"] = "levendig"; +App::$strings["annoyed"] = "geërgerd"; +App::$strings["anxious"] = "bezorgd"; +App::$strings["cranky"] = "humeurig"; +App::$strings["disturbed"] = "verontrust"; +App::$strings["frustrated"] = "gefrustreerd "; +App::$strings["depressed"] = "gedeprimeerd"; +App::$strings["motivated"] = "gemotiveerd"; +App::$strings["relaxed"] = "ontspannen"; +App::$strings["surprised"] = "verrast"; +App::$strings["May"] = "mei"; +App::$strings["Unknown Attachment"] = "Onbekende bijlage"; +App::$strings["unknown"] = "onbekend"; +App::$strings["remove category"] = "categorie verwijderen"; +App::$strings["remove from file"] = "uit map verwijderen"; +App::$strings["default"] = "standaard"; +App::$strings["Page layout"] = "Pagina-lay-out"; +App::$strings["You can create your own with the layouts tool"] = "Je kan jouw eigen lay-out ontwerpen onder lay-outs"; +App::$strings["Page content type"] = "Opmaaktype"; +App::$strings["activity"] = "activiteit"; +App::$strings["Design Tools"] = "Ontwerp-hulpmiddelen"; +App::$strings["Pages"] = "Pagina's"; +App::$strings["Import website..."] = "Website importeren..."; +App::$strings["Select folder to import"] = "Kies een map om te importeren"; +App::$strings["Import from a zipped folder:"] = "Vanuit een zipbestand importeren:"; +App::$strings["Import from cloud files:"] = "Vanuit de cloud importeren:"; +App::$strings["/cloud/channel/path/to/folder"] = "/cloud/channel/maplocatie"; +App::$strings["Enter path to website files"] = "Voer de locatie in van de websitebestanden"; +App::$strings["Select folder"] = "Kies een map"; +App::$strings["Export website..."] = "Website exporteren..."; +App::$strings["Export to a zip file"] = "Naar een zipbestand exporteren"; +App::$strings["website.zip"] = "website.zip"; +App::$strings["Enter a name for the zip file."] = "Vul een naam in voor het zipbestand."; +App::$strings["Export to cloud files"] = "Naar de cloud exporteren"; +App::$strings["/path/to/export/folder"] = "/locatie/van/export/map"; +App::$strings["Enter a path to a cloud files destination."] = "Voer de locatie in van de cloudbestemming"; +App::$strings["Specify folder"] = "Selecteer een map"; +App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."; +App::$strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt."; +App::$strings["Unable to import element \""] = "Niet in staat om dit element te importeren: \""; +App::$strings["guest:"] = "gast:"; +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."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "; +App::$strings["(Unknown)"] = "(Onbekend)"; +App::$strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar."; +App::$strings["Visible to you only."] = "Alleen voor jou zichtbaar."; +App::$strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar."; +App::$strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar."; +App::$strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar."; +App::$strings["Visible to all connections."] = "Voor alle connecties zichtbaar."; +App::$strings["Visible to approved connections."] = "Voor alle geaccepteerde connecties zichtbaar."; +App::$strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar."; +App::$strings["Privacy group is empty."] = "Privacygroep is leeg"; +App::$strings["Privacy group: %s"] = "Privacygroep: %s"; +App::$strings["Connection not found."] = "Connectie niet gevonden."; +App::$strings["profile photo"] = "profielfoto"; +App::$strings["[Edited %s]"] = "[%s bewerkt]"; +App::$strings["__ctx:edit_activity__ Post"] = "Bericht"; +App::$strings["__ctx:edit_activity__ Comment"] = "Reactie"; +App::$strings["Logged out."] = "Uitgelogd."; +App::$strings["Failed authentication"] = "Mislukte authenticatie"; +App::$strings[" and "] = " en "; +App::$strings["public profile"] = "openbaar profiel"; +App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s veranderde %2\$s naar “%3\$s”"; +App::$strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s"; +App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd."; +App::$strings["Item was not found."] = "Item niet gevonden"; +App::$strings["No source file."] = "Geen bronbestand."; +App::$strings["Cannot locate file to replace"] = "Kan het te vervangen bestand niet vinden"; +App::$strings["Cannot locate file to revise/update"] = "Kan het bestand wat aangepast moet worden niet vinden"; +App::$strings["File exceeds size limit of %d"] = "Bestand is groter dan de toegelaten %d"; +App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Je hebt jouw limiet van %1$.0f MB opslagruimte voor bijlagen bereikt."; +App::$strings["File upload failed. Possible system limit or action terminated."] = "Uploaden van bestand mislukt. Mogelijk systeemlimiet bereikt of actie afgebroken."; +App::$strings["Stored file could not be verified. Upload failed."] = "Opgeslagen bestand kon niet worden geverifieerd. Uploaden mislukt."; +App::$strings["Path not available."] = "Locatie niet beschikbaar."; +App::$strings["Empty pathname"] = "Ontbrekende locatienaam"; +App::$strings["duplicate filename or path"] = "dubbele bestandsnaam of locatie"; +App::$strings["Path not found."] = "Locatie niet gevonden"; +App::$strings["mkdir failed."] = "directory aanmaken (mkdir) mislukt."; +App::$strings["database storage failed."] = "opslag in database mislukt."; +App::$strings["Empty path"] = "Ontbrekende locatie"; +App::$strings["This event has been added to your calendar."] = "Dit evenement is aan jouw agenda toegevoegd."; +App::$strings["Not specified"] = "Niet aangegeven"; +App::$strings["Needs Action"] = "Actie vereist"; +App::$strings["Completed"] = "Voltooid"; +App::$strings["In Process"] = "In behandeling"; +App::$strings["Cancelled"] = "Geannuleerd"; App::$strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd."; App::$strings["Channel location missing."] = "Ontbrekende kanaallocatie."; App::$strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig."; @@ -2045,14 +2817,105 @@ App::$strings["Channel was deleted and no longer exists."] = "Kanaal is verwijde App::$strings["Protocol disabled."] = "Protocol uitgeschakeld."; App::$strings["Channel discovery failed."] = "Kanaal ontdekken mislukt."; App::$strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden"; -App::$strings["Image/photo"] = "Afbeelding/foto"; -App::$strings["Encrypted content"] = "Versleutelde inhoud"; -App::$strings["Install %s element: "] = "Installeer %s-element: "; -App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren."; -App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schreef het volgende %2\$s %3\$s"; -App::$strings["Click to open/close"] = "Klik om te openen of te sluiten"; -App::$strings["spoiler"] = "spoiler"; -App::$strings["$1 wrote:"] = "$1 schreef:"; +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."] = "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken."; +App::$strings["Add new connections to this privacy group"] = "Voeg nieuwe connecties aan deze privacygroep toe"; +App::$strings["edit"] = "bewerken"; +App::$strings["Edit group"] = "Privacygroep bewerken"; +App::$strings["Add privacy group"] = "Privacygroep toevoegen"; +App::$strings["Channels not in any privacy group"] = "Kanalen die zich in geen enkele privacygroep bevinden"; +App::$strings["add"] = "toevoegen"; +App::$strings["Select an alternate language"] = "Kies een andere taal"; +App::$strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"; +App::$strings["Image file is empty."] = "Afbeeldingsbestand is leeg"; +App::$strings["Photo storage failed."] = "Foto kan niet worden opgeslagen"; +App::$strings["a new photo"] = "een nieuwe foto"; +App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s plaatste %2\$s op %3\$s"; +App::$strings["Photo Albums"] = "Fotoalbums"; +App::$strings["Upload New Photos"] = "Nieuwe foto's uploaden"; +App::$strings["Who can see this?"] = "Wie kan dit zien?"; +App::$strings["Custom selection"] = "Handmatige selectie"; +App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"."; +App::$strings["Show"] = "Tonen"; +App::$strings["Don't show"] = "Niet tonen"; +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."] = "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien."; +App::$strings[" by "] = " door "; +App::$strings[" on "] = " op "; +App::$strings["Embedded content"] = "Ingesloten (embedded) inhoud"; +App::$strings["Embedding disabled"] = "Insluiten (embedding) uitgeschakeld"; +App::$strings["System"] = "Systeem"; +App::$strings["New App"] = "Nieuwe app"; +App::$strings["Suggestions"] = "Voorgestelde kanalen"; +App::$strings["See more..."] = "Meer..."; +App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Je hebt %1$.0f van de %2$.0f toegestane connecties."; +App::$strings["Add New Connection"] = "Nieuwe connectie toevoegen"; +App::$strings["Enter channel address"] = "Vul kanaaladres in"; +App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Voorbeelden: bob@example.com, http://example.com/barbara"; +App::$strings["Notes"] = "Aantekeningen"; +App::$strings["Remove term"] = "Verwijder zoekterm"; +App::$strings["Archives"] = "Archieven"; +App::$strings["Refresh"] = "Vernieuwen"; +App::$strings["Account settings"] = "Account"; +App::$strings["Channel settings"] = "Kanaal"; +App::$strings["Additional features"] = "Extra functies"; +App::$strings["Feature/Addon settings"] = "Plugin-instellingen"; +App::$strings["Display settings"] = "Weergave"; +App::$strings["Manage locations"] = "Locaties beheren"; +App::$strings["Export channel"] = "Kanaal exporteren"; +App::$strings["Connected apps"] = "Verbonden applicaties"; +App::$strings["Premium Channel Settings"] = "Instellingen premiumkanaal"; +App::$strings["Private Mail Menu"] = "Privéberichten"; +App::$strings["Combined View"] = "Gecombineerd postvak"; +App::$strings["Conversations"] = "Conversaties"; +App::$strings["Received Messages"] = "Ontvangen berichten"; +App::$strings["Sent Messages"] = "Verzonden berichten"; +App::$strings["No messages."] = "Geen berichten"; +App::$strings["Delete conversation"] = "Verwijder conversatie"; +App::$strings["Events Tools"] = "Agenda-hulpmiddelen"; +App::$strings["Export Calendar"] = "Exporteren"; +App::$strings["Import Calendar"] = "Importeren"; +App::$strings["Chatrooms"] = "Chatkanalen"; +App::$strings["Overview"] = "Overzicht"; +App::$strings["Chat Members"] = "Chatleden"; +App::$strings["Wiki List"] = "Wiki's"; +App::$strings["Wiki Pages"] = "Wikipagina's"; +App::$strings["Add new page"] = "Nieuwe pagina toevoegen"; +App::$strings["Page name"] = "Paginanaam"; +App::$strings["Bookmarked Chatrooms"] = "Bladwijzers van chatkanalen"; +App::$strings["Suggested Chatrooms"] = "Voorgestelde chatkanalen"; +App::$strings["photo/image"] = "foto/afbeelding"; +App::$strings["Click to show more"] = "Klik voor meer"; +App::$strings["Rating Tools"] = "Beoordelingen"; +App::$strings["Rate Me"] = "Beoordeel mij"; +App::$strings["View Ratings"] = "Bekijk beoordelingen"; +App::$strings["Forums"] = "Forums"; +App::$strings["Tasks"] = "Taken"; +App::$strings["Member registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten"; +App::$strings["Inspect queue"] = "Inspecteer berichtenwachtrij"; +App::$strings["DB updates"] = "Database-updates"; +App::$strings["Plugin Features"] = "Plugin-opties"; +App::$strings["view full size"] = "volledige grootte tonen"; +App::$strings["No Subject"] = "Geen onderwerp"; +App::$strings["OStatus"] = "OStatus"; +App::$strings["GNU-Social"] = "GNU social"; +App::$strings["RSS/Atom"] = "RSS/Atom"; +App::$strings["Facebook"] = "Facebook"; +App::$strings["Zot"] = "Zot"; +App::$strings["LinkedIn"] = "LinkedIn"; +App::$strings["XMPP/IM"] = "XMPP/IM"; +App::$strings["MySpace"] = "MySpace"; +App::$strings["Can view my normal stream and posts"] = "Kan mijn normale kanaalstream en berichten bekijken"; +App::$strings["Can view my webpages"] = "Kan mijn pagina's bekijken"; +App::$strings["Can post on my channel page (\"wall\")"] = "Kan een bericht in mijn kanaal plaatsen"; +App::$strings["Can like/dislike stuff"] = "Kan dingen leuk of niet leuk vinden"; +App::$strings["Profiles and things other than posts/comments"] = "Profielen en dingen, buiten berichten en reacties"; +App::$strings["Can forward to all my channel contacts via post @mentions"] = "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+"; +App::$strings["Advanced - useful for creating group forum channels"] = "Geavanceerd - nuttig voor groepforums"; +App::$strings["Can chat with me (when available)"] = "Kan met mij chatten (wanneer beschikbaar)"; +App::$strings["Can write to my file storage and photos"] = "Kan foto's en andere bestanden aan mijn bestandsopslag toevoegen"; +App::$strings["Can edit my webpages"] = "Kan mijn pagina's bewerken"; +App::$strings["Somewhat advanced - very useful in open communities"] = "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)"; +App::$strings["Can administer my channel resources"] = "Kan mijn kanaal beheren"; +App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet."; App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s is nu met %2\$s verbonden"; App::$strings["%1\$s poked %2\$s"] = "%1\$s heeft %2\$s aangestoten"; App::$strings["View %s's profile @ %s"] = "Bekijk het profiel van %s @ %s"; @@ -2088,6 +2951,7 @@ App::$strings["Set your location"] = "Locatie instellen"; App::$strings["Clear browser location"] = "Locatie van webbrowser wissen"; App::$strings["Tag term:"] = "Tag:"; App::$strings["Where are you right now?"] = "Waar bevind je je op dit moment?"; +App::$strings["Choose a different album..."] = "Kies een ander album..."; App::$strings["Comments enabled"] = "Reacties ingeschakeld"; App::$strings["Comments disabled"] = "Reacties uitgeschakeld"; App::$strings["Page link name"] = "Linknaam pagina"; @@ -2111,10 +2975,8 @@ App::$strings["Favourite Posts"] = "Favoriete berichten"; App::$strings["Spam"] = "Spam"; App::$strings["Posts flagged as SPAM"] = "Berichten gemarkeerd als SPAM"; App::$strings["Status Messages and Posts"] = "Berichten in dit kanaal"; -App::$strings["About"] = "Over"; App::$strings["Profile Details"] = "Profiel"; App::$strings["Files and Storage"] = "Bestanden en opslagruimte"; -App::$strings["Chatrooms"] = "Chatkanalen"; App::$strings["Saved Bookmarks"] = "Opgeslagen bladwijzers"; App::$strings["Manage Webpages"] = "Webpagina's beheren"; App::$strings["__ctx:noun__ Attending"] = array( @@ -2141,183 +3003,15 @@ App::$strings["__ctx:noun__ Abstain"] = array( 0 => "onthouding", 1 => "onthoudingen", ); -App::$strings["Birthday"] = "Verjaardag of geboortedatum"; -App::$strings["Age: "] = "Leeftijd:"; -App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD"; -App::$strings["never"] = "nooit"; -App::$strings["less than a second ago"] = "minder dan een seconde geleden"; -App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s geleden"; -App::$strings["__ctx:relative_date__ year"] = array( - 0 => "jaar", - 1 => "jaren", -); -App::$strings["__ctx:relative_date__ month"] = array( - 0 => "maand", - 1 => "maanden", -); -App::$strings["__ctx:relative_date__ week"] = array( - 0 => "week", - 1 => "weken", -); -App::$strings["__ctx:relative_date__ day"] = array( - 0 => "dag", - 1 => "dagen", -); -App::$strings["__ctx:relative_date__ hour"] = array( - 0 => "uur", - 1 => "uren", -); -App::$strings["__ctx:relative_date__ minute"] = array( - 0 => "minuut", - 1 => "minuten", -); -App::$strings["__ctx:relative_date__ second"] = array( - 0 => "seconde", - 1 => "seconden", -); -App::$strings["%1\$s's birthday"] = "Verjaardag van %1\$s"; -App::$strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s"; -App::$strings["Directory Options"] = "Opties kanalengids"; -App::$strings["Safe Mode"] = "Veilig zoeken"; -App::$strings["Public Forums Only"] = "Alleen openbare forums"; -App::$strings["This Website Only"] = "Alleen deze hub"; -App::$strings["This event has been added to your calendar."] = "Dit evenement is aan jouw agenda toegevoegd."; -App::$strings["Not specified"] = "Niet aangegeven"; -App::$strings["Needs Action"] = "Actie vereist"; -App::$strings["Completed"] = "Voltooid"; -App::$strings["In Process"] = "In behandeling"; -App::$strings["Cancelled"] = "Geannuleerd"; -App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."; -App::$strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt."; -App::$strings["Unable to import element \""] = "Niet in staat om dit element te importeren: \""; -App::$strings["Logged out."] = "Uitgelogd."; -App::$strings["Failed authentication"] = "Mislukte authenticatie"; -App::$strings["Login failed."] = "Inloggen mislukt."; -App::$strings[" and "] = " en "; -App::$strings["public profile"] = "openbaar profiel"; -App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s veranderde %2\$s naar “%3\$s”"; -App::$strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s"; -App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd."; -App::$strings["view full size"] = "volledige grootte tonen"; -App::$strings["No Subject"] = "Geen onderwerp"; -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["Categories"] = "Categorieën"; -App::$strings["Tags"] = "Tags"; -App::$strings["Keywords"] = "Trefwoorden"; -App::$strings["have"] = "heb"; -App::$strings["has"] = "heeft"; -App::$strings["want"] = "wil"; -App::$strings["wants"] = "wil"; -App::$strings["likes"] = "vindt dit leuk"; -App::$strings["dislikes"] = "vindt dit niet leuk"; -App::$strings["%d invitation available"] = array( - 0 => "%d uitnodiging beschikbaar", - 1 => "%d uitnodigingen beschikbaar", -); -App::$strings["Find Channels"] = "Kanalen vinden"; -App::$strings["Enter name or interest"] = "Vul naam of interesse in"; -App::$strings["Connect/Follow"] = "Verbinden/volgen"; -App::$strings["Examples: Robert Morgenstein, Fishing"] = "Voorbeeld: Robert Morgenstein, vissen"; -App::$strings["Random Profile"] = "Willekeurig profiel"; -App::$strings["Invite Friends"] = "Vrienden uitnodigen"; -App::$strings["Advanced example: name=fred and country=iceland"] = "Geavanceerd voorbeeld (Engels): name=jan en country=nederland"; -App::$strings["Everything"] = "Alles"; -App::$strings["%d connection in common"] = array( - 0 => "%d gemeenschappelijke connectie", - 1 => "%d gemeenschappelijke connecties", -); -App::$strings["show more"] = "meer connecties weergeven"; -App::$strings["System"] = "Systeem"; -App::$strings["New App"] = "Nieuwe app"; -App::$strings["Suggestions"] = "Voorgestelde kanalen"; -App::$strings["See more..."] = "Meer..."; -App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Je hebt %1$.0f van de %2$.0f toegestane connecties."; -App::$strings["Add New Connection"] = "Nieuwe connectie toevoegen"; -App::$strings["Enter channel address"] = "Vul kanaaladres in"; -App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Voorbeelden: bob@example.com, http://example.com/barbara"; -App::$strings["Notes"] = "Aantekeningen"; -App::$strings["Remove term"] = "Verwijder zoekterm"; -App::$strings["Archives"] = "Archieven"; -App::$strings["Refresh"] = "Vernieuwen"; -App::$strings["Account settings"] = "Account"; -App::$strings["Channel settings"] = "Kanaal"; -App::$strings["Additional features"] = "Extra functies"; -App::$strings["Feature/Addon settings"] = "Plugin-instellingen"; -App::$strings["Display settings"] = "Weergave"; -App::$strings["Manage locations"] = "Locaties beheren"; -App::$strings["Export channel"] = "Kanaal exporteren"; -App::$strings["Connected apps"] = "Verbonden applicaties"; -App::$strings["Premium Channel Settings"] = "Instellingen premiumkanaal"; -App::$strings["Private Mail Menu"] = "Privéberichten"; -App::$strings["Combined View"] = "Gecombineerd postvak"; -App::$strings["Conversations"] = "Conversaties"; -App::$strings["Received Messages"] = "Ontvangen berichten"; -App::$strings["Sent Messages"] = "Verzonden berichten"; -App::$strings["No messages."] = "Geen berichten"; -App::$strings["Delete conversation"] = "Verwijder conversatie"; -App::$strings["Events Tools"] = "Agenda-hulpmiddelen"; -App::$strings["Export Calendar"] = "Exporteren"; -App::$strings["Import Calendar"] = "Importeren"; -App::$strings["Overview"] = "Overzicht"; -App::$strings["Chat Members"] = "Chatleden"; -App::$strings["Wiki List"] = "Wiki's"; -App::$strings["Wiki Pages"] = "Wikipagina's"; -App::$strings["Bookmarked Chatrooms"] = "Bladwijzers van chatkanalen"; -App::$strings["Suggested Chatrooms"] = "Voorgestelde chatkanalen"; -App::$strings["photo/image"] = "foto/afbeelding"; -App::$strings["Click to show more"] = "Klik voor meer"; -App::$strings["Rating Tools"] = "Beoordelingen"; -App::$strings["Rate Me"] = "Beoordeel mij"; -App::$strings["View Ratings"] = "Bekijk beoordelingen"; -App::$strings["Forums"] = "Forums"; -App::$strings["Tasks"] = "Taken"; -App::$strings["Documentation"] = "Documentatie"; -App::$strings["Member registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten"; -App::$strings["Inspect queue"] = "Inspecteer berichtenwachtrij"; -App::$strings["DB updates"] = "Database-updates"; -App::$strings["Plugin Features"] = "Plugin-opties"; -App::$strings["Public Timeline"] = "Openbare tijdlijn"; -App::$strings[" by "] = " door "; -App::$strings[" on "] = " op "; -App::$strings["Embedded content"] = "Ingesloten (embedded) inhoud"; -App::$strings["Embedding disabled"] = "Insluiten (embedding) uitgeschakeld"; -App::$strings["(Unknown)"] = "(Onbekend)"; -App::$strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar."; -App::$strings["Visible to you only."] = "Alleen voor jou zichtbaar."; -App::$strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar."; -App::$strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar."; -App::$strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar."; -App::$strings["Visible to all connections."] = "Voor alle connecties zichtbaar."; -App::$strings["Visible to approved connections."] = "Voor alle geaccepteerde connecties zichtbaar."; -App::$strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar."; -App::$strings["Privacy group is empty."] = "Privacygroep is leeg"; -App::$strings["Privacy group: %s"] = "Privacygroep: %s"; -App::$strings["Connection not found."] = "Connectie niet gevonden."; -App::$strings["profile photo"] = "profielfoto"; -App::$strings["Item was not found."] = "Item niet gevonden"; -App::$strings["No source file."] = "Geen bronbestand."; -App::$strings["Cannot locate file to replace"] = "Kan het te vervangen bestand niet vinden"; -App::$strings["Cannot locate file to revise/update"] = "Kan het bestand wat aangepast moet worden niet vinden"; -App::$strings["File exceeds size limit of %d"] = "Bestand is groter dan de toegelaten %d"; -App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Je hebt jouw limiet van %1$.0f MB opslagruimte voor bijlagen bereikt."; -App::$strings["File upload failed. Possible system limit or action terminated."] = "Uploaden van bestand mislukt. Mogelijk systeemlimiet bereikt of actie afgebroken."; -App::$strings["Stored file could not be verified. Upload failed."] = "Opgeslagen bestand kon niet worden geverifieerd. Uploaden mislukt."; -App::$strings["Path not available."] = "Locatie niet beschikbaar."; -App::$strings["Empty pathname"] = "Ontbrekende locatienaam"; -App::$strings["duplicate filename or path"] = "dubbele bestandsnaam of locatie"; -App::$strings["Path not found."] = "Locatie niet gevonden"; -App::$strings["mkdir failed."] = "directory aanmaken (mkdir) mislukt."; -App::$strings["database storage failed."] = "opslag in database mislukt."; -App::$strings["Empty path"] = "Ontbrekende locatie"; +App::$strings["Image/photo"] = "Afbeelding/foto"; +App::$strings["Encrypted content"] = "Versleutelde inhoud"; +App::$strings["Install %s element: "] = "Installeer %s-element: "; +App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren."; +App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schreef het volgende %2\$s %3\$s"; +App::$strings["Click to open/close"] = "Klik om te openen of te sluiten"; +App::$strings["spoiler"] = "spoiler"; +App::$strings["$1 wrote:"] = "$1 schreef:"; +App::$strings["Source channel not found."] = "Bron van kanaal niet gevonden"; App::$strings["Focus (Hubzilla default)"] = "Focus (Hubzilla-standaard)"; App::$strings["Theme settings"] = "Thema-instellingen"; App::$strings["Narrow navbar"] = "Smalle navigatiebalk"; diff --git a/view/pdl/mod_wiki.pdl b/view/pdl/mod_wiki.pdl index 76ed1c70c..052ae61a1 100644 --- a/view/pdl/mod_wiki.pdl +++ b/view/pdl/mod_wiki.pdl @@ -1,4 +1,4 @@ [region=aside] -[widget=wiki_list][/widget] +[widget=vcard][/widget] [widget=wiki_pages][/widget] [/region] diff --git a/view/php/default.php b/view/php/default.php index f5be4fa35..373fa2fd0 100644 --- a/view/php/default.php +++ b/view/php/default.php @@ -10,7 +10,7 @@ <header><?php if(x($page,'header')) echo $page['header']; ?></header> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"><?php if(x($page,'nav')) echo $page['nav']; ?></nav> <main> - <aside id="region_1"><?php if(x($page,'aside')) echo $page['aside']; ?></aside> + <aside id="region_1"><div id="left_aside_spacer"><div id="left_aside_wrapper"><?php if(x($page,'aside')) echo $page['aside']; ?></div></div></aside> <section id="region_2"><?php if(x($page,'content')) echo $page['content']; ?> <div id="page-footer"></div> <div id="pause"></div> diff --git a/view/php/theme_init.php b/view/php/theme_init.php index 46aadaa7d..85da4d782 100644 --- a/view/php/theme_init.php +++ b/view/php/theme_init.php @@ -26,6 +26,7 @@ head_add_js('library/jquery-textcomplete/jquery.textcomplete.js'); //head_add_js('library/colorbox/jquery.colorbox.js'); head_add_js('library/jquery.timeago.js'); head_add_js('library/readmore.js/readmore.js'); +head_add_js('library/sticky-kit/sticky-kit.js'); //head_add_js('library/jquery_ac/friendica.complete.js'); //head_add_js('library/tiptip/jquery.tipTip.minified.js'); head_add_js('library/jgrowl/jquery.jgrowl_minimized.js'); diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index f71fe8ea8..c6f075479 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -8,8 +8,8 @@ /* generals */ html { - height: 100%; font-size: 100%; + overflow-x: hidden; } body { @@ -21,7 +21,7 @@ body { background-size: cover; color: $font_colour; margin: 0px; - height: 100%; + overflow-x: hidden; } aside { @@ -30,24 +30,56 @@ aside { max-width: $aside_widthpx; } +aside #region_1 { + border-right: 1px solid transparent; +} + +aside #left_aside_wrapper { + margin-bottom: 10px; +} + main { margin-left: auto; margin-right: auto; max-width: $main_widthpx; } -h1, .h1, h2, .h2 { +#overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + cursor: pointer; + z-index: 1029; +} + +h1, .h1 { + font-size: 2em; +} + +h2, .h2 { font-size: 1.667em; } -h3, .h3, h4, .h4 { +h3, .h3 { font-size: 1.334em; } -h5, .h5, h6, .h6 { - font-size: 0.75rem; +h4, .h4 { + font-size: 1em; + font-weight: bold; +} + +h5, .h5 { + font-size: 1em; } +h6, .h6 { + font-size: 0.75em; +} + + .jslider { font-family: sans-serif, arial, freesans; } @@ -109,6 +141,20 @@ input, optgroup, select, textarea { resize: vertical; } +.selected-doco-nav { + font-weight: bold; + text-shadow: 2px 2px 3px lightgray; +} + +#doco-content img { + width: 100%; +} + +#help-content pre code { + overflow-x: auto; + white-space: pre; +} + pre code { border: none; } @@ -468,7 +514,6 @@ footer { #contact-block { width: 100%; - float: left; } #contact-block-numcontacts { @@ -477,12 +522,10 @@ footer { } .contact-block-div { - float: left; - width: 50px; - height: 50px; + display: inline; } + .contact-block-textdiv { - float: left; width: 150px; height: 34px; } @@ -490,12 +533,11 @@ footer { #contact-block-end { clear: both; } -.contact-block-link { - float: left; -} + .contact-block-img { - width:48px; - height:48px; + width:47px; + height:47px; + margin-bottom: 3px; } #tag-remove { @@ -1062,11 +1104,12 @@ a.rconnect:hover, a.rateme:hover, div.rateme:hover { .contact-block-content { margin-top: 10px; } -.contact-block-img.archived { +.contact-block-img.archived, .app-deleted { opacity: 0.3; filter:alpha(opacity=30); } + .profile-match-connect { margin-top: 5px; } .reshared-content { margin-left: 20px; } @@ -1261,6 +1304,11 @@ img.mail-conv-sender-photo { color: $toolicon_colour; } +.jot-icons.jot-lock-warn { + color: darkorange; +} + + /* conversation */ .nsfw-wrap { text-align: center; @@ -1622,7 +1670,7 @@ nav .dropdown-menu { main.fullscreen { left: 0px; width: 100%; - height: 100%; + height: 100vh; max-width: none; } @@ -1649,6 +1697,7 @@ main.fullscreen .section-content-wrapper-np { .atoken-index-row:hover td, .chatroom-index-row:hover td, +.wikis-index-row:hover td, .locs-index-row:hover td, [id^="cloud-index-"]:hover td, .cloud-index-active { @@ -1782,6 +1831,7 @@ nav .badge.mail-update:hover { #expand-aside, #expand-tabs, +#doco-return-to-top-btn, #context-help-btn { color: $nav_active_icon_colour; padding: 7px 10px; @@ -1830,10 +1880,6 @@ nav .badge.mail-update:hover { } main { - transition: all 0.25s ease-in-out; - } - - main { left: -$aside_widthpx; width: calc( 100% + $aside_widthpx ); } @@ -2034,8 +2080,25 @@ dl.bb-dl > dd > li { max-width: 100%; } +#ace-editor, +#editor { + border-bottom-left-radius: $radiuspx; + border-bottom-right-radius: $radiuspx; +} + .sub-menu { margin-top: 10px; padding-left: 15px; - border-left: 3px solid #ccc; + border-left: 3px solid #eee; +} + +.nav-pills-stacked-icons { + padding: 6px 10px; + float: right; + position: relative; + z-index:1; +} + +.nav-pills-stacked-icons:hover + a { + background-color: #eee; } diff --git a/view/theme/redbasic/js/redbasic.js b/view/theme/redbasic/js/redbasic.js index c5f74db3f..3ff0c43ae 100644 --- a/view/theme/redbasic/js/redbasic.js +++ b/view/theme/redbasic/js/redbasic.js @@ -8,7 +8,7 @@ $(document).ready(function() { if( $('#css3-calc').width() == 10) { $(window).resize(function() { if($(window).width() < 767) { - $('main').css('width', $(window).width() + 287 ); + $('main').css('width', $(window).width() + $('aside').outerWidth() ); } else { $('main').css('width', '100%' ); } @@ -16,12 +16,32 @@ $(document).ready(function() { } $('#css3-calc').remove(); // Remove the test element - $('#expand-aside').click(function() { - $('#expand-aside-icon').toggleClass('fa-arrow-circle-right').toggleClass('fa-arrow-circle-left'); - $('main').toggleClass('region_1-on'); + if($(window).width() > 767) { + $('#left_aside_wrapper').stick_in_parent({ + offset_top: $('nav').outerHeight(true), + parent: '#region_1', + spacer: '#left_aside_spacer' + }); + } + + $('#expand-aside').on('click', toggleAside); + + $('section').on('click', function() { + if($('main').hasClass('region_1-on')){ + toggleAside(); + } }); - if($('aside').length && $('aside').html().length === 0) { + var left_aside_height = $('#left_aside_wrapper').height(); + + $('#left_aside_wrapper').on('click', function() { + if(left_aside_height != $('#left_aside_wrapper').height()) { + $(document.body).trigger("sticky_kit:recalc"); + left_aside_height = $('#left_aside_wrapper').height(); + } + }); + + if($('#left_aside_wrapper').length && $('#left_aside_wrapper').html().length === 0) { $('#expand-aside').hide(); } @@ -72,5 +92,24 @@ function makeFullScreen(full) { $('#tabs-collapse-1').css({'visibility': ''}); $('#inline-btn').hide(); $('main').css({'transition': ''}); + $(document.body).trigger("sticky_kit:recalc"); + } +} + +function toggleAside() { + $('#expand-aside-icon').toggleClass('fa-arrow-circle-right').toggleClass('fa-arrow-circle-left'); + if($('main').hasClass('region_1-on')){ + $('main').removeClass('region_1-on') + $('#overlay').remove(); + $('#left_aside_wrapper').trigger("sticky_kit:detach"); + } + else { + $('main').addClass('region_1-on') + $('<div id="overlay"></div>').appendTo('section'); + $('#left_aside_wrapper').stick_in_parent({ + offset_top: $('nav').outerHeight(true) - 10, + parent: '#region_1', + spacer: '#left_aside_spacer' + }); } } diff --git a/view/theme/redbasic/php/style.php b/view/theme/redbasic/php/style.php index 2db0d4c44..9b994ebdf 100644 --- a/view/theme/redbasic/php/style.php +++ b/view/theme/redbasic/php/style.php @@ -165,7 +165,7 @@ if(file_exists('view/theme/redbasic/css/style.css')) { $x .= $schemecss; } - $aside_width = 287; + $aside_width = 288; // left aside and right aside are 285px + converse width if($align_left) { diff --git a/view/theme/redbasic/schema/dark.css b/view/theme/redbasic/schema/dark.css index ed2714dfc..f9114141d 100644 --- a/view/theme/redbasic/schema/dark.css +++ b/view/theme/redbasic/schema/dark.css @@ -433,3 +433,26 @@ pre { .contextual-help-tool i { color: $link_colour; } + + +.profile-match-wrapper { + width: 150px; + height: 120px; + border: none; +} + +.profile-match-name { + width: 144px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.widget-nav-pills-icons:hover + a { + background-color: #222; +} + +.widget-nav-pills-checkbox:hover + a { + background-color: #222; +} + + diff --git a/view/theme/redbasic/schema/simple_black_on_white.css b/view/theme/redbasic/schema/simple_black_on_white.css index 7dd8125a4..f06fd3667 100644 --- a/view/theme/redbasic/schema/simple_black_on_white.css +++ b/view/theme/redbasic/schema/simple_black_on_white.css @@ -297,3 +297,24 @@ pre { top: 50px; } + +.profile-match-wrapper { + width: 150px; + height: 120px; + border: none; +} + +.profile-match-name { + width: 144px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.widget-nav-pills-icons:hover + a { + background-color: #F5F5F5; +} + +.widget-nav-pills-checkbox:hover + a { + background-color: #F5F5F5; +} + diff --git a/view/theme/redbasic/schema/simple_green_on_black.css b/view/theme/redbasic/schema/simple_green_on_black.css index ca2e5b15a..c7bb99334 100644 --- a/view/theme/redbasic/schema/simple_green_on_black.css +++ b/view/theme/redbasic/schema/simple_green_on_black.css @@ -383,3 +383,23 @@ pre { .contextual-help-tool i { color: $link_colour; } + +.profile-match-wrapper { + width: 150px; + height: 120px; + border: none; +} + +.profile-match-name { + width: 144px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.widget-nav-pills-icons:hover + a { + background-color: #143D12; +} + +.widget-nav-pills-checkbox:hover + a { + background-color: #143D12; +} diff --git a/view/theme/redbasic/schema/simple_white_on_black.css b/view/theme/redbasic/schema/simple_white_on_black.css index a462c4d29..dabc26743 100644 --- a/view/theme/redbasic/schema/simple_white_on_black.css +++ b/view/theme/redbasic/schema/simple_white_on_black.css @@ -356,3 +356,24 @@ pre { .contextual-help-tool i { color: $link_colour; } + +.profile-match-wrapper { + width: 150px; + height: 120px; + border: none; +} + +.profile-match-name { + width: 144px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.widget-nav-pills-icons:hover + a { + background-color: #030303; +} + +.widget-nav-pills-checkbox:hover + a { + background-color: #030303; +} + diff --git a/view/tpl/abook_edit.tpl b/view/tpl/abook_edit.tpl index 835948096..069c38b52 100755 --- a/view/tpl/abook_edit.tpl +++ b/view/tpl/abook_edit.tpl @@ -1,21 +1,33 @@ <div class="generic-content-wrapper"> <div class="section-title-wrapper"> {{if $notself}} - <div class="dropdown pull-right"> - <button id="connection-dropdown" class="btn btn-default btn-xs" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - <i class="fa fa-caret-down"></i> {{$tools_label}} - </button> - <ul class="dropdown-menu" aria-labelledby="dLabel"> - <li><a href="{{$tools.view.url}}" title="{{$tools.view.title}}">{{$tools.view.label}}</a></li> - <li><a href="{{$tools.recent.url}}" title="{{$tools.recent.title}}">{{$tools.recent.label}}</a></li> - <li class="divider"></li> - <li><a href="#" title="{{$tools.refresh.title}}" onclick="window.location.href='{{$tools.refresh.url}}'; return false;">{{$tools.refresh.label}}</a></li> - <li><a href="#" title="{{$tools.block.title}}" onclick="window.location.href='{{$tools.block.url}}'; return false;">{{$tools.block.label}}</a></li> - <li><a href="#" title="{{$tools.ignore.title}}" onclick="window.location.href='{{$tools.ignore.url}}'; return false;">{{$tools.ignore.label}}</a></li> - <li><a href="#" title="{{$tools.archive.title}}" onclick="window.location.href='{{$tools.archive.url}}'; return false;">{{$tools.archive.label}}</a></li> - <li><a href="#" title="{{$tools.hide.title}}" onclick="window.location.href='{{$tools.hide.url}}'; return false;">{{$tools.hide.label}}</a></li> - <li><a href="#" title="{{$tools.delete.title}}" onclick="window.location.href='{{$tools.delete.url}}'; return false;">{{$tools.delete.label}}</a></li> - </ul> + <div class="pull-right"> + <div class="btn-group"> + <button id="connection-dropdown" class="btn btn-default btn-xs dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + <i class="fa fa-caret-down"></i> {{$tools_label}} + </button> + <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dLabel"> + <li><a href="{{$tools.view.url}}" title="{{$tools.view.title}}">{{$tools.view.label}}</a></li> + <li><a href="{{$tools.recent.url}}" title="{{$tools.recent.title}}">{{$tools.recent.label}}</a></li> + <li class="divider"></li> + <li><a href="#" title="{{$tools.refresh.title}}" onclick="window.location.href='{{$tools.refresh.url}}'; return false;">{{$tools.refresh.label}}</a></li> + <li><a href="#" title="{{$tools.block.title}}" onclick="window.location.href='{{$tools.block.url}}'; return false;">{{$tools.block.label}}</a></li> + <li><a href="#" title="{{$tools.ignore.title}}" onclick="window.location.href='{{$tools.ignore.url}}'; return false;">{{$tools.ignore.label}}</a></li> + <li><a href="#" title="{{$tools.archive.title}}" onclick="window.location.href='{{$tools.archive.url}}'; return false;">{{$tools.archive.label}}</a></li> + <li><a href="#" title="{{$tools.hide.title}}" onclick="window.location.href='{{$tools.hide.url}}'; return false;">{{$tools.hide.label}}</a></li> + <li><a href="#" title="{{$tools.delete.title}}" onclick="window.location.href='{{$tools.delete.url}}'; return false;">{{$tools.delete.label}}</a></li> + </ul> + </div> + {{if $abook_prev || $abook_next}} + <div class="btn-group"> + {{if $abook_prev}} + <a href="connedit/{{$abook_prev}}{{if $section}}?f=§ion={{$section}}{{/if}}" class="btn btn-default btn-xs" ><i class="fa fa-backward"></i></a> + {{/if}} + {{if $abook_next}} + <a href="connedit/{{$abook_next}}{{if $section}}?f=§ion={{$section}}{{/if}}" class="btn btn-default btn-xs" ><i class="fa fa-forward"></i></a> + {{/if}} + </div> + {{/if}} </div> {{/if}} <h2>{{$header}}</h2> @@ -51,6 +63,7 @@ <form id="abook-edit-form" action="connedit/{{$contact_id}}" method="post" > <input type="hidden" name="contact_id" value="{{$contact_id}}"> + <input type="hidden" name="section" value="{{$section}}"> <div class="panel-group" id="contact-edit-tools" role="tablist" aria-multiselectable="true"> {{if $notself}} @@ -74,6 +87,296 @@ </div> </div> {{/if}} + <div class="panel"> + + +<div id="template-form-vcard-org" class="form-group form-vcard-org"> + <div class="form-group form-vcard-org"> + <input type="text" name="org" value="" placeholder="{{$org_label}}"> + <i data-remove="vcard-org" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> +</div> + +<div id="template-form-vcard-title" class="form-group form-vcard-title"> + <div class="form-group form-vcard-title"> + <input type="text" name="title" value="" placeholder="{{$title_label}}"> + <i data-remove="vcard-title" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> +</div> + +<div id="template-form-vcard-tel" class="form-group form-vcard-tel"> + <select name="tel_type[]"> + <option value="CELL">{{$mobile}}</option> + <option value="HOME">{{$home}}</option> + <option value="WORK">{{$work}}</option> + <option value="OTHER">{{$other}}</option> + </select> + <input type="text" name="tel[]" value="" placeholder="{{$tel_label}}"> + <i data-remove="vcard-tel" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> +</div> + +<div id="template-form-vcard-email" class="form-group form-vcard-email"> + <select name="email_type[]"> + <option value="HOME">{{$home}}</option> + <option value="WORK">{{$work}}</option> + <option value="OTHER">{{$other}}</option> + </select> + <input type="text" name="email[]" value="" placeholder="{{$email_label}}"> + <i data-remove="vcard-email" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> +</div> + +<div id="template-form-vcard-impp" class="form-group form-vcard-impp"> + <select name="impp_type[]"> + <option value="HOME">{{$home}}</option> + <option value="WORK">{{$work}}</option> + <option value="OTHER">{{$other}}</option> + </select> + <input type="text" name="impp[]" value="" placeholder="{{$impp_label}}"> + <i data-remove="vcard-impp" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> +</div> + +<div id="template-form-vcard-url" class="form-group form-vcard-url"> + <select name="url_type[]"> + <option value="HOME">{{$home}}</option> + <option value="WORK">{{$work}}</option> + <option value="OTHER">{{$other}}</option> + </select> + <input type="text" name="url[]" value="" placeholder="{{$url_label}}"> + <i data-remove="vcard-url" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> +</div> + +<div id="template-form-vcard-adr" class="form-group form-vcard-adr"> + <div class="form-group"> + <select name="adr_type[]"> + <option value="HOME">{{$home}}</option> + <option value="WORK">{{$work}}</option> + <option value="OTHER">{{$other}}</option> + </select> + <label>{{$adr_label}}</label> + <i data-remove="vcard-adr" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$po_box}}"> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$extra}}"> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$street}}"> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$locality}}"> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$region}}"> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$zip_code}}"> + </div> + <div class="form-group"> + <input type="text" name="" value="" placeholder="{{$country}}"> + </div> +</div> + +<div id="template-form-vcard-note" class="form-group form-vcard-note"> + <label>{{$note_label}}</label> + <i data-remove="vcard-note" data-id="" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + <textarea name="note" class="form-control"></textarea> +</div> + + + <div class="section-content-wrapper-np"> + <div id="vcard-cancel-{{$vcard.id}}" class="vcard-cancel vcard-cancel-btn" data-id="{{$vcard.id}}" data-action="cancel"><i class="fa fa-close"></i></div> + <div id="vcard-add-field-{{$vcard.id}}" class="dropdown pull-right vcard-add-field"> + <button data-toggle="dropdown" type="button" class="btn btn-default btn-sm dropdown-toggle"><i class="fa fa-plus"></i> {{$add_field}}</button> + <ul class="dropdown-menu"> + <li class="add-vcard-org"{{if $vcard.org}} style="display: none"{{/if}}><a href="#" data-add="vcard-org" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$org_label}}</a></li> + <li class="add-vcard-title"{{if $vcard.title}} style="display: none"{{/if}}><a href="#" data-add="vcard-title" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$title_label}}</a></li> + <li class="add-vcard-tel"><a href="#" data-add="vcard-tel" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$tel_label}}</a></li> + <li class="add-vcard-email"><a href="#" data-add="vcard-email" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$email_label}}</a></li> + <li class="add-vcard-impp"><a href="#" data-add="vcard-impp" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$impp_label}}</a></li> + <li class="add-vcard-url"><a href="#" data-add="vcard-url" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$url_label}}</a></li> + <li class="add-vcard-adr"><a href="#" data-add="vcard-adr" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$adr_label}}</a></li> + <li class="add-vcard-note"{{if $vcard.note}} style="display: none"{{/if}}><a href="#" data-add="vcard-note" data-id="{{$vcard.id}}" class="add-field" onclick="return false;">{{$note_label}}</a></li> + </ul> + </div> + <div id="vcard-header-{{$vcard.id}}" class="vcard-header" data-id="{{$vcard.id}}" data-action="open"> + <span id="vcard-preview-{{$vcard.id}}" class="vcard-preview"> + {{if $vcard.fn}}<span class="vcard-fn-preview">{{$vcard.fn}}</span>{{/if}} + {{if $vcard.emails.0.address}}<span class="vcard-email-preview hidden-xs"><a href="mailto:{{$vcard.emails.0.address}}">{{$vcard.emails.0.address}}</a></span>{{/if}} + {{if $vcard.tels.0}}<span class="vcard-tel-preview hidden-xs">{{$vcard.tels.0.nr}}{{if $is_mobile}} <a class="btn btn-default btn-xs" href="tel:{{$vcard.tels.0.nr}}"><i class="fa fa-phone connphone"></i></a>{{/if}}</span>{{/if}} + </span> + <input id="vcard-fn-{{$vcard.id}}" class="vcard-fn" type="text" name="fn" value="{{$vcard.fn}}" size="{{$vcard.fn|count_characters:true}}" placeholder="{{$name_label}}"> + </div> + </div> + <div id="vcard-info-{{$vcard.id}}" class="vcard-info section-content-wrapper"> + + <div class="vcard-org form-group"> + <div class="form-vcard-org-wrapper"> + {{if $vcard.org}} + <div class="form-group form-vcard-org"> + <input type="text" name="org" value="{{$vcard.org}}" size="{{$vcard.org|count_characters:true}}" placeholder="{{$org_label}}"> + <i data-remove="vcard-org" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + {{/if}} + </div> + </div> + + <div class="vcard-title form-group"> + <div class="form-vcard-title-wrapper"> + {{if $vcard.title}} + <div class="form-group form-vcard-title"> + <input type="text" name="title" value="{{$vcard.title}}" size="{{$vcard.title|count_characters:true}}" placeholder="{{$title_label}}"> + <i data-remove="vcard-title" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + {{/if}} + </div> + </div> + + + <div class="vcard-tel form-group"> + <div class="form-vcard-tel-wrapper"> + {{if $vcard.tels}} + {{foreach $vcard.tels as $tel}} + <div class="form-group form-vcard-tel"> + <select name="tel_type[]"> + <option value=""{{if $tel.type.0 != 'CELL' && $tel.type.0 != 'HOME' && $tel.type.0 != 'WORK' && $tel.type.0 != 'OTHER'}} selected="selected"{{/if}}>{{$tel.type.1}}</option> + <option value="CELL"{{if $tel.type.0 == 'CELL'}} selected="selected"{{/if}}>{{$mobile}}</option> + <option value="HOME"{{if $tel.type.0 == 'HOME'}} selected="selected"{{/if}}>{{$home}}</option> + <option value="WORK"{{if $tel.type.0 == 'WORK'}} selected="selected"{{/if}}>{{$work}}</option> + <option value="OTHER"{{if $tel.type.0 == 'OTHER'}} selected="selected"{{/if}}>{{$other}}</option> + </select> + <input type="text" name="tel[]" value="{{$tel.nr}}" size="{{$tel.nr|count_characters:true}}" placeholder="{{$tel_label}}"> + <i data-remove="vcard-tel" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + {{/foreach}} + {{/if}} + </div> + </div> + + + <div class="vcard-email form-group"> + <div class="form-vcard-email-wrapper"> + {{if $vcard.emails}} + {{foreach $vcard.emails as $email}} + <div class="form-group form-vcard-email"> + <select name="email_type[]"> + <option value=""{{if $email.type.0 != 'HOME' && $email.type.0 != 'WORK' && $email.type.0 != 'OTHER'}} selected="selected"{{/if}}>{{$email.type.1}}</option> + <option value="HOME"{{if $email.type.0 == 'HOME'}} selected="selected"{{/if}}>{{$home}}</option> + <option value="WORK"{{if $email.type.0 == 'WORK'}} selected="selected"{{/if}}>{{$work}}</option> + <option value="OTHER"{{if $email.type.0 == 'OTHER'}} selected="selected"{{/if}}>{{$other}}</option> + </select> + <input type="text" name="email[]" value="{{$email.address}}" size="{{$email.address|count_characters:true}}" placeholder="{{$email_label}}"> + <i data-remove="vcard-email" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + {{/foreach}} + {{/if}} + </div> + </div> + + <div class="vcard-impp form-group"> + <div class="form-vcard-impp-wrapper"> + {{if $vcard.impps}} + {{foreach $vcard.impps as $impp}} + <div class="form-group form-vcard-impp"> + <select name="impp_type[]"> + <option value=""{{if $impp.type.0 != 'HOME' && $impp.type.0 != 'WORK' && $impp.type.0 != 'OTHER'}} selected="selected"{{/if}}>{{$impp.type.1}}</option> + <option value="HOME"{{if $impp.type.0 == 'HOME'}} selected="selected"{{/if}}>{{$home}}</option> + <option value="WORK"{{if $impp.type.0 == 'WORK'}} selected="selected"{{/if}}>{{$work}}</option> + <option value="OTHER"{{if $impp.type.0 == 'OTHER'}} selected="selected"{{/if}}>{{$other}}</option> + </select> + <input type="text" name="impp[]" value="{{$impp.address}}" size="{{$impp.address|count_characters:true}}" placeholder="{{$impp_label}}"> + <i data-remove="vcard-impp" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + {{/foreach}} + {{/if}} + </div> + </div> + + <div class="vcard-url form-group"> + <div class="form-vcard-url-wrapper"> + {{if $vcard.urls}} + {{foreach $vcard.urls as $url}} + <div class="form-group form-vcard-url"> + <select name="url_type[]"> + <option value=""{{if $url.type.0 != 'HOME' && $url.type.0 != 'WORK' && $url.type.0 != 'OTHER'}} selected="selected"{{/if}}>{{$url.type.1}}</option> + <option value="HOME"{{if $url.type.0 == 'HOME'}} selected="selected"{{/if}}>{{$home}}</option> + <option value="WORK"{{if $url.type.0 == 'WORK'}} selected="selected"{{/if}}>{{$work}}</option> + <option value="OTHER"{{if $url.type.0 == 'OTHER'}} selected="selected"{{/if}}>{{$other}}</option> + </select> + <input type="text" name="url[]" value="{{$url.address}}" size="{{$url.address|count_characters:true}}" placeholder="{{$url_label}}"> + <i data-remove="vcard-url" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + {{/foreach}} + {{/if}} + </div> + </div> + + <div class="vcard-adr form-group"> + <div class="form-vcard-adr-wrapper"> + {{if $vcard.adrs}} + {{foreach $vcard.adrs as $adr}} + <div class="form-group form-vcard-adr"> + <div class="form-group"> + <label>{{$adr_label}}</label> + <select name="adr_type[]"> + <option value=""{{if $adr.type.0 != 'HOME' && $adr.type.0 != 'WORK' && $adr.type.0 != 'OTHER'}} selected="selected"{{/if}}>{{$adr.type.1}}</option> + <option value="HOME"{{if $adr.type.0 == 'HOME'}} selected="selected"{{/if}}>{{$home}}</option> + <option value="WORK"{{if $adr.type.0 == 'WORK'}} selected="selected"{{/if}}>{{$work}}</option> + <option value="OTHER"{{if $adr.type.0 == 'OTHER'}} selected="selected"{{/if}}>{{$other}}</option> + </select> + <i data-remove="vcard-adr" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.0}}" size="{{$adr.address.0|count_characters:true}}" placeholder="{{$po_box}}"> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.1}}" size="{{$adr.address.1|count_characters:true}}" placeholder="{{$extra}}"> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.2}}" size="{{$adr.address.2|count_characters:true}}" placeholder="{{$street}}"> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.3}}" size="{{$adr.address.3|count_characters:true}}" placeholder="{{$locality}}"> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.4}}" size="{{$adr.address.4|count_characters:true}}" placeholder="{{$region}}"> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.5}}" size="{{$adr.address.5|count_characters:true}}" placeholder="{{$zip_code}}"> + </div> + <div class="form-group"> + <input type="text" name="adr[{{$adr@index}}][]" value="{{$adr.address.6}}" size="{{$adr.address.6|count_characters:true}}" placeholder="{{$country}}"> + </div> + </div> + {{/foreach}} + {{/if}} + </div> + </div> + + <div class="vcard-note form-group form-vcard-note"> + <div class="form-vcard-note-wrapper"> + {{if $vcard.note}} + <label>{{$note_label}}</label> + <i data-remove="vcard-note" data-id="{{$vcard.id}}" class="fa fa-trash-o remove-field drop-icons fakelink"></i> + <textarea name="note" class="form-control">{{$vcard.note}}</textarea> + {{/if}} + </div> + </div> + + + <div class="settings-submit-wrapper" > + <button type="submit" name="done" value="{{$submit}}" class="btn btn-primary">{{$submit}}</button> + </div> + + </div> + + + + + + + {{if $affinity }} <div class="panel"> @@ -84,7 +387,7 @@ </a> </h3> </div> - <div id="affinity-tool-collapse" class="panel-collapse collapse{{if !$is_pending}} in{{/if}}" role="tabpanel" aria-labelledby="affinity-tool"> + <div id="affinity-tool-collapse" class="panel-collapse collapse{{if !$is_pending || $section == 'affinity'}} in{{/if}}" role="tabpanel" aria-labelledby="affinity-tool"> <div class="section-content-tools-wrapper"> {{if $slide}} <div class="form-group"><strong>{{$lbl_slider}}</strong></div> @@ -115,7 +418,7 @@ </a> </h3> </div> - <div id="fitert-tool-collapse" class="panel-collapse collapse{{if !$is_pending && !($slide || $multiprofs)}} in{{/if}}" role="tabpanel" aria-labelledby="fitert-tool"> + <div id="fitert-tool-collapse" class="panel-collapse collapse{{if ( !$is_pending && !($slide || $multiprofs)) || $section == 'filter' }} in{{/if}}" role="tabpanel" aria-labelledby="fitert-tool"> <div class="section-content-tools-wrapper"> {{include file="field_textarea.tpl" field=$incl}} {{include file="field_textarea.tpl" field=$excl}} @@ -169,7 +472,7 @@ </h3> </div> {{/if}} - <div id="perms-tool-collapse" class="panel-collapse collapse{{if $self}} in{{/if}}" role="tabpanel" aria-labelledby="perms-tool"> + <div id="perms-tool-collapse" class="panel-collapse collapse{{if $self || $section === 'perms'}} in{{/if}}" role="tabpanel" aria-labelledby="perms-tool"> <div class="section-content-tools-wrapper"> <div class="section-content-warning-wrapper"> {{if $notself}}{{$permnote}}{{/if}} diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl index a5b32f08f..0bb3ceb15 100755 --- a/view/tpl/admin_site.tpl +++ b/view/tpl/admin_site.tpl @@ -49,6 +49,7 @@ {{/if}} {{include file="field_textarea.tpl" field=$banner}} + {{include file="field_textarea.tpl" field=$siteinfo}} {{include file="field_textarea.tpl" field=$admininfo}} {{include file="field_select.tpl" field=$language}} {{include file="field_select.tpl" field=$theme}} diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl index 3e6b71b29..cfb652913 100644 --- a/view/tpl/app.tpl +++ b/view/tpl/app.tpl @@ -1,5 +1,5 @@ <div class="app-container"> - <div class="app-detail"> + <div class="app-detail{{if $deleted}} app-deleted{{/if}}"> <a href="{{$app.url}}" {{if $ap.target}}target="{{$ap.target}}" {{/if}}{{if $app.desc}}title="{{$app.desc}}{{if $app.price}} ({{$app.price}}){{/if}}"{{else}}title="{{$app.name}}"{{/if}}><img src="{{$app.photo}}" width="80" height="80" /> <div class="app-name" style="text-align:center;">{{$app.name}}</div> </a> @@ -16,7 +16,7 @@ <input type="hidden" name="papp" value="{{$app.papp}}" /> {{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="fa fa-arrow-circle-o-down" ></i></button>{{/if}} {{if $edit}}<input type="hidden" name="appid" value="{{$app.guid}}" /><button type="submit" name="edit" value="{{$edit}}" class="btn btn-default" title="{{$edit}}" ><i class="fa fa-pencil" ></i></button>{{/if}} - {{if $delete}}<button type="submit" name="delete" value="{{$delete}}" class="btn btn-default" title="{{$delete}}" ><i class="fa fa-trash-o drop-icons"></i></button>{{/if}} + {{if $delete}}<button type="submit" name="delete" value="{{if $deleted}}{{$undelete}}{{else}}{{$delete}}{{/if}}" class="btn btn-default" title="{{if $deleted}}{{$undelete}}{{else}}{{$delete}}{{/if}}" ><i class="fa fa-trash-o drop-icons"></i></button>{{/if}} </form> </div> {{/if}} diff --git a/view/tpl/connection_template.tpl b/view/tpl/connection_template.tpl index a238f5bc7..64d27e609 100755 --- a/view/tpl/connection_template.tpl +++ b/view/tpl/connection_template.tpl @@ -14,7 +14,7 @@ </form> {{/if}} </div> - <h3>{{if $contact.public_forum}}<i class="fa fa-comments-o"></i> {{/if}}<a href="{{$contact.url}}" title="{{$contact.img_hover}}" >{{$contact.name}}</a></h3> + <h3>{{if $contact.public_forum}}<i class="fa fa-comments-o"></i> {{/if}}<a href="{{$contact.url}}" title="{{$contact.img_hover}}" >{{$contact.name}}</a>{{if $contact.phone}} <a class="btn btn-default btn-xs" href="tel:{{$contact.phone}}" title="{{$contact.call}}"><i class="fa fa-phone connphone"></i></a>{{/if}}</h3> </div> <div class="section-content-tools-wrapper"> <div class="contact-photo-wrapper" > diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl index 35c3d18e7..b5ff475b2 100755 --- a/view/tpl/conv_item.tpl +++ b/view/tpl/conv_item.tpl @@ -166,18 +166,27 @@ {{if $item.star}} <li role="presentation"><a role="menuitem" href="#" onclick="dostar({{$item.id}}); return false;"><i id="starred-{{$item.id}}" class="fa fa-star {{$item.star.isstarred}}" title="{{$item.star.toggle}}"></i> {{$item.star.toggle}}</a></li> {{/if}} + + {{if $item.thread_action_menu}} + {{foreach $item.thread_action_menu as $mitem}} + <li role="presentation"><a role="menuitem" {{if $mitem.href}}href="{{$mitem.href}}"{{/if}} {{if $mitem.action}}onclick="{{$mitem.action}}"{{/if}} {{if $mitem.title}}title="{{$mitem.title}}"{{/if}} ><i class="fa fa-{{$mitem.icon}}"></i> {{$mitem.title}}</a></li> + {{/foreach}} + {{/if}} + {{if $item.drop.dropping}} <li role="presentation"><a role="menuitem" href="#" onclick="dropItem('item/drop/{{$item.id}}', '#thread-wrapper-{{$item.id}}'); return false;" title="{{$item.drop.delete}}" ><i class="fa fa-trash-o"></i> {{$item.drop.delete}}</a></li> {{/if}} - {{if $item.item_photo_menu}} + + {{if $item.thread_author_menu}} <li role="presentation" class="divider"></li> - {{$item.item_photo_menu}} + {{foreach $item.thread_author_menu as $mitem}} + <li role="presentation"><a role="menuitem" {{if $mitem.href}}href="{{$mitem.href}}"{{/if}} {{if $mitem.action}}onclick="{{$mitem.action}}"{{/if}} {{if $mitem.title}}title="{{$mitem.title}}"{{/if}} >{{$mitem.title}}</a></li> + {{/foreach}} + {{/if}} {{if $item.edpost && $item.dreport}} <li role="presentation"><a role="menuitem" href="dreport/{{$item.mid}}">{{$item.dreport}}</a></li> {{/if}} - - {{/if}} </ul> </div> </div> diff --git a/view/tpl/cover_photo_widget.tpl b/view/tpl/cover_photo_widget.tpl index 2b47270c9..bc1f421bd 100755 --- a/view/tpl/cover_photo_widget.tpl +++ b/view/tpl/cover_photo_widget.tpl @@ -53,7 +53,7 @@ } } } - if($('#cover-photo').length) { + if($('#cover-photo').length && $('main').css('opacity') < 1) { $('main').css('opacity', ($(window).scrollTop()/$('#cover-photo').height()).toFixed(1)); } }); diff --git a/view/tpl/event_form.tpl b/view/tpl/event_form.tpl index 2c1fc762c..8a06567c1 100755 --- a/view/tpl/event_form.tpl +++ b/view/tpl/event_form.tpl @@ -10,6 +10,10 @@ {{include file="field_input.tpl" field=$summary}} + {{if $tz_choose}} + {{include file="field_select_grouped.tpl" field=$timezone}} + {{/if}} + {{$s_dsel}} {{$f_dsel}} diff --git a/view/tpl/generic_modal.tpl b/view/tpl/generic_modal.tpl index 3f7326e71..2bbea42b3 100644 --- a/view/tpl/generic_modal.tpl +++ b/view/tpl/generic_modal.tpl @@ -8,8 +8,10 @@ <div class="modal-body" id="generic-modal-body-{{$id}}"></div> <div class="modal-footer"> <button id="generic-modal-cancel-{{$id}}" type="button" class="btn btn-default" data-dismiss="modal">{{$cancel}}</button> + {{if $ok}} <button id="generic-modal-ok-{{$id}}" type="button" class="btn btn-primary">{{$ok}}</button> + {{/if}} </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> -</div><!-- /.modal -->
\ No newline at end of file +</div><!-- /.modal --> diff --git a/view/tpl/group_side.tpl b/view/tpl/group_side.tpl index e58cf060d..35f79a07e 100755 --- a/view/tpl/group_side.tpl +++ b/view/tpl/group_side.tpl @@ -5,12 +5,10 @@ {{foreach $groups as $group}} <li> {{if $group.cid}} - <a class="pull-right group-edit-tool fakelink" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.enc_cid}}'); return true;"/> - <i id="group-{{$group.id}}" class="fa {{if $group.ismember}}fa-check-square-o{{else}}fa-square-o{{/if}}"></i> - </a> + <i id="group-{{$group.id}}" class="widget-nav-pills-checkbox fa {{if $group.ismember}}fa-check-square-o{{else}}fa-square-o{{/if}}" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.enc_cid}}'); return true;"></i> {{/if}} {{if $group.edit}} - <a class="pull-right group-edit-tool" href="{{$group.edit.href}}" title="{{$edittext}}"><i class="group-edit-icon fa fa-pencil"></i></a> + <a href="{{$group.edit.href}}" class="widget-nav-pills-icons" title="{{$edittext}}"><i class="fa fa-pencil"></i></a> {{/if}} <a{{if $group.selected}} class="group-selected"{{/if}} href="{{$group.href}}">{{$group.text}}</a> </li> diff --git a/view/tpl/help.tpl b/view/tpl/help.tpl index 22180bda6..10e0a4957 100644 --- a/view/tpl/help.tpl +++ b/view/tpl/help.tpl @@ -1,8 +1,33 @@ <div id="help-content" class="generic-content-wrapper"> <div class="section-title-wrapper"> - <h2>{{$title}}</h2> + <h2>{{$title}}: {{$heading}}</h2> </div> - <div class="section-content-wrapper"> - {{$content}} + <div class="section-content-wrapper" id="doco-content"> + <h3 id="doco-top-toc-heading"> + <span class="fakelink" onclick="docoTocToggle(); return false;"> + <i class="fakelink fa fa-caret-right" id="doco-toc-toggle"></i> + {{$tocHeading}} + </span> + </h3> + <ul id="doco-top-toc" style="margin-bottom: 1.5em; display: none;"></ul> + {{$content}} </div> </div> + +<script> + // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) + $(document).ready(function () { + $('#doco-top-toc').toc({content: "#doco-content", headings: "h3,h4,h5,h6"}); + }); + + function docoTocToggle() { + if($('#doco-top-toc').is(':visible')) { + $('#doco-toc-toggle').removeClass('fa-caret-down').addClass('fa-caret-right'); + } else { + $('#doco-toc-toggle').removeClass('fa-caret-right').addClass('fa-caret-down'); + } + $('#doco-top-toc').toggle(); + + return false; + } +</script> diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl index a3bfad842..377eef453 100755 --- a/view/tpl/jot.tpl +++ b/view/tpl/jot.tpl @@ -180,7 +180,7 @@ {{/if}} {{if $showacl}} <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" type="button" data-form_id="profile-jot-form"> - <i id="jot-perms-icon" class="fa fa-{{$lockstate}} jot-icons"></i>{{if $bang}} <i class="fa fa-exclamation jot-icons"></i>{{/if}} + <i id="jot-perms-icon" class="fa fa-{{$lockstate}} jot-icons{{if $bang}} jot-lock-warn{{/if}}"></i> </button> {{/if}} <button id="dbtn-submit" class="btn btn-primary btn-sm" type="submit" tabindex="3" name="button-submit">{{$share}}</button> diff --git a/view/tpl/micropro_img.tpl b/view/tpl/micropro_img.tpl index 23b7bd281..a7c5973f3 100755 --- a/view/tpl/micropro_img.tpl +++ b/view/tpl/micropro_img.tpl @@ -1 +1 @@ -<div class="contact-block-div{{if $class}} {{$class}}{{/if}}"><a class="contact-block-link{{if $class}} {{$class}}{{/if}}{{if $click}} fakelink{{/if}}" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}><img class="contact-block-img{{if $class}} {{$class}}{{/if}}" src="{{$photo}}" title="{{$title}}" alt="{{$name}}" /></a></div> +<div class="contact-block-div{{if $class}} {{$class}}{{/if}}"><a class="contact-block-link{{if $class}} {{$class}}{{/if}}{{if $click}} fakelink{{/if}}" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}><img class="contact-block-img{{if $class}} {{$class}}{{/if}}" src="{{$photo}}" title="{{$title}}" alt="" /></a></div> diff --git a/view/tpl/nav.tpl b/view/tpl/nav.tpl index a279789a1..bc1e64416 100755 --- a/view/tpl/nav.tpl +++ b/view/tpl/nav.tpl @@ -45,9 +45,10 @@ {{/if}} </ul> {{else}} - {{if $nav.lock}} + {{if $nav.rusermenu}} <ul class="dropdown-menu" role="menu" aria-labelledby="avatar"> - <li role="presentation"><a href="{{$nav.lock.0}}" title="{{$nav.lock.3}}" role="menuitem">{{$nav.lock.3}}</a></li> + <li role="presentation"><a href="{{$nav.rusermenu.0}}" role="menuitem">{{$nav.rusermenu.1}}</a></li> + <li role="presentation"><a href="{{$nav.rusermenu.2}}" role="menuitem">{{$nav.rusermenu.3}}</a></li> </ul> {{/if}} {{/if}} diff --git a/view/tpl/notes.tpl b/view/tpl/notes.tpl index 0e8c8017c..c4da3783b 100644 --- a/view/tpl/notes.tpl +++ b/view/tpl/notes.tpl @@ -1,27 +1,33 @@ <div class="widget"> -<script> -var noteSaveTimer = null; -$(document).on('focusout',"#note-text",function(e){ - if(noteSaveTimer) - clearTimeout(noteSaveTimer); - notePostFinal(); - noteSaveTimer = null; -}); + <h3>{{$banner}}</h3> + <textarea name="note_text" id="note-text">{{$text}}</textarea> + <script> + var noteSaveTimer = null; + var noteText = $('#note-text'); -$(document).on('focusin',"#note-text",function(e){ - noteSaveTimer = setTimeout(noteSaveChanges,10000); -}); + noteText.on('change keyup keydown paste cut', function () { + $(this).height(0).height(this.scrollHeight); + $(document.body).trigger("sticky_kit:recalc"); + }).change(); -function notePostFinal() { - $.post('notes/sync', { 'note_text' : $('#note-text').val() }); -} + $(document).on('focusout',"#note-text",function(e){ + if(noteSaveTimer) + clearTimeout(noteSaveTimer); + notePostFinal(); + noteSaveTimer = null; + }); -function noteSaveChanges() { - $.post('notes', { 'note_text' : $('#note-text').val() }); - noteSaveTimer = setTimeout(noteSaveChanges,10000); -} -</script> + $(document).on('focusin',"#note-text",function(e){ + noteSaveTimer = setTimeout(noteSaveChanges,10000); + }); -<h3>{{$banner}}</h3> -<textarea name="note_text" id="note-text">{{$text}}</textarea> + function notePostFinal() { + $.post('notes/sync', { 'note_text' : $('#note-text').val() }); + } + + function noteSaveChanges() { + $.post('notes', { 'note_text' : $('#note-text').val() }); + noteSaveTimer = setTimeout(noteSaveChanges,10000); + } + </script> </div> diff --git a/view/tpl/peoplefind.tpl b/view/tpl/peoplefind.tpl index 0b7f792a6..ae0b7f1ea 100755 --- a/view/tpl/peoplefind.tpl +++ b/view/tpl/peoplefind.tpl @@ -1,7 +1,6 @@ <div id="peoplefind-sidebar" class="widget"> <h3>{{$findpeople}}</h3> <form action="directory" method="post" /> - <input type="hidden" name="navsearch" value="1" /> <div class="form-group"> <div class="input-group"> <input class="widget-input" type="text" name="search" title="{{$hint}}{{if $advanced_search}}{{$advanced_hint}}{{/if}}" placeholder="{{$desc}}" /> diff --git a/view/tpl/photo_album.tpl b/view/tpl/photo_album.tpl index f097646e4..66d0fcc94 100755 --- a/view/tpl/photo_album.tpl +++ b/view/tpl/photo_album.tpl @@ -1,4 +1,4 @@ -<div class="generic-content-wrapper"> +<div class="{{if !$no_fullscreen_btn}}generic-content-wrapper{{/if}}"> <div class="section-title-wrapper"> <div class="pull-right"> {{if $order}} diff --git a/view/tpl/photo_view.tpl b/view/tpl/photo_view.tpl index db5ffe3f5..967abea71 100755 --- a/view/tpl/photo_view.tpl +++ b/view/tpl/photo_view.tpl @@ -7,7 +7,7 @@ <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-caret-down"></i> {{$tools_label}} </button> - <ul class="dropdown-menu"> + <ul class="dropdown-menu dropdown-menu-right"> {{if $tools}} <li class="nav-item"> <a class="nav-link" href="{{$tools.profile.0}}"><i class="fa fa-user"></i> {{$tools.profile.1}}</a> @@ -32,7 +32,7 @@ {{if $lock}} <div class="btn-group"> <button id="lockview" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" title="{{$lock}}" onclick="lockview('photo',{{$id}});" ><i class="fa fa-lock"></i></button> - <ul id="panel-{{$id}}" class="lockview-panel dropdown-menu"></ul> + <ul id="panel-{{$id}}" class="lockview-panel dropdown-menu dropdown-menu-right"></ul> </div> {{/if}} {{if $prevlink || $nextlink}} diff --git a/view/tpl/prv_message.tpl b/view/tpl/prv_message.tpl index 0c9b9ba1d..e4e923ddb 100755 --- a/view/tpl/prv_message.tpl +++ b/view/tpl/prv_message.tpl @@ -7,10 +7,9 @@ {{/if}} <div id="prvmail-wrapper" > <form id="prvmail-form" action="mail" method="post" > - <input type="hidden" id="inp-prvmail-expires" name="expires" value="{{$defexpire}}" /> <input type="hidden" name="media_str" id="jot-media" value="" /> - + <input type="hidden" name="preview" id="mail-preview" value="0" /> {{if $new}} <div class="form-group"> <label for="recip">{{$to}}</label> @@ -22,20 +21,18 @@ <input class="form-control" type="text" maxlength="255" id="prvmail-subject" name="subject" value="{{$subjtxt}}" /> </div> {{/if}} - {{if $reply}} <input type="hidden" name="replyto" value="{{$parent}}" /> <input type="hidden" name="messageto" value="{{$recphash}}" /> <input type="hidden" name="subject" value="{{$subjtxt}}" /> {{/if}} - <div class="form-group"> <label for="prvmail-text">{{$yourmessage}}</label> <textarea class="form-control" id="prvmail-text" name="body">{{$text}}</textarea> </div> - <div id="prvmail-submit-wrapper" class="form-group"> - <div id="prvmail-submit" class="pull-right"> + <div id="prvmail-submit" class="pull-right btn-group"> + <button class="btn btn-default btn-sm" id="prvmail-preview" title="{{$preview}}" onclick="preview_mail(); return false;"><i class="fa fa-eye"></i></button> <button class="btn btn-primary btn-sm" type="submit" id="prvmail-submit" name="submit" value="{{$submit}}">{{$submit}}</button> </div> <div id="prvmail-tools" class="btn-toolbar pull-left"> @@ -78,7 +75,6 @@ {{/if}} </div> {{/if}} - <div class="btn-group visible-xs visible-sm"> <button type="button" id="more-tools" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false"> <i id="more-tools-icon" class="fa fa-caret-down jot-icons"></i> @@ -93,14 +89,13 @@ {{/if}} </ul> </div> - - </div> <div id="prvmail-rotator-wrapper" class="pull-left"> <div id="prvmail-rotator"></div> </div> <div class="clear"></div> </div> + <div id="mail-preview-content" style="display: none;"></div> </form> </div> {{if $new}} diff --git a/view/tpl/search_item.tpl b/view/tpl/search_item.tpl index 51fa8b8dc..a490cb473 100755 --- a/view/tpl/search_item.tpl +++ b/view/tpl/search_item.tpl @@ -74,13 +74,20 @@ <i class="fa fa-caret-down"></i> </button> <ul class="dropdown-menu"> - {{if $item.item_photo_menu}} - {{$item.item_photo_menu}} + {{if $item.thread_action_menu}} + {{foreach $item.thread_action_menu as $mitem}} + <li role="presentation"><a role="menuitem" {{if $mitem.href}}href="{{$mitem.href}}"{{/if}} {{if $mitem.action}}onclick="{{$mitem.action}}"{{/if}} {{if $mitem.title}}title="{{$mitem.title}}"{{/if}} ><i class="fa fa-{{$mitem.icon}}"></i> {{$mitem.title}}</a></li> + {{/foreach}} {{/if}} {{if $item.drop.dropping}} - <li role="presentation" class="divider"></li> <li><a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" title="{{$item.drop.delete}}" ><i class="fa fa-trash-o"></i> {{$item.drop.delete}}</a></li> {{/if}} + {{if $item.thread_author_menu}} + <li role="presentation" class="divider"></li> + {{foreach $item.thread_author_menu as $mitem}} + <li role="presentation"><a role="menuitem" {{if $mitem.href}}href="{{$mitem.href}}"{{/if}} {{if $mitem.action}}onclick="{{$mitem.action}}"{{/if}} {{if $mitem.title}}title="{{$mitem.title}}"{{/if}} >{{$mitem.title}}</a></li> + {{/foreach}} + {{/if}} </ul> </div> {{if $item.attachments}} diff --git a/view/tpl/settings.tpl b/view/tpl/settings.tpl index 0ec44e9ff..05e531ba7 100755 --- a/view/tpl/settings.tpl +++ b/view/tpl/settings.tpl @@ -112,6 +112,7 @@ {{include file="field_intcheckbox.tpl" field=$notify2}} {{include file="field_intcheckbox.tpl" field=$notify3}} {{include file="field_intcheckbox.tpl" field=$notify4}} + {{*include file="field_intcheckbox.tpl" field=$notify9*}} {{include file="field_intcheckbox.tpl" field=$notify5}} {{include file="field_intcheckbox.tpl" field=$notify6}} {{include file="field_intcheckbox.tpl" field=$notify7}} diff --git a/view/tpl/settings_nick_set.tpl b/view/tpl/settings_nick_set.tpl index 2460952fe..76fe7cd8d 100755 --- a/view/tpl/settings_nick_set.tpl +++ b/view/tpl/settings_nick_set.tpl @@ -1,4 +1,8 @@ <div id="settings-nick-wrapper" class="section-content-info-wrapper"> -<div id="settings-nickname-desc">{{$desc}} <strong>'{{$nickname}}@{{$basepath}}'</strong>{{$subdir}}</div> +<div id="settings-nickname-desc">{{$desc}} <strong>'{{$nickname}}@{{$basepath}}'</strong></div> +{{if $davpath}} +<br> +<div id="settings-dav-desc">{{$davdesc}} <strong>'{{$davpath}}'</strong></div> +{{/if}} </div> <div id="settings-nick-end" ></div> diff --git a/view/tpl/siteinfo.tpl b/view/tpl/siteinfo.tpl index e50284b9c..a5b99fd83 100755 --- a/view/tpl/siteinfo.tpl +++ b/view/tpl/siteinfo.tpl @@ -1,26 +1,41 @@ <div class="generic-content-wrapper-styled"> -<h3>{{$title}}</h3> -<p></p> -<p>{{$description}}</p> -{{if $version}} -<p>{{$version}}{{if $commit}}+{{$commit}}{{/if}}</p> +<h2>{{$title}}</h2> + +<h3>{{$sitenametxt}}</h3> + +<div>{{$sitename}}</div> + +<h3>{{$headline}}</h3> + +<div>{{if $site_about}}{{$site_about}}{{else}}--{{/if}}</div> + +<h3>{{$admin_headline}}</h3> + +<div>{{if $admin_about}}{{$admin_about}}{{else}}--{{/if}}</div> + +<br><br> +<div><a href="help/TermsOfService">{{$terms}}</a></div> + +<hr> + +<h2>{{$prj_header}}</h2> + +<div>{{$prj_name}} ({{$z_server_role}})</div> + +{{if $prj_version}} +<div>{{$prj_version}}</div> {{/if}} -{{if $tag}} -<p>{{$tag_txt}} {{$tag}}</p> -{{/if}} -{{if $polled}} -<p>{{$polled}} {{$lastpoll}}</p> -{{/if}} -<p>{{$load_average}} {{$loadavg_all}}</p> -<p>{{$web_location}}</p> -<p>{{$visit}}</p> -<p>{{$bug_text}} <a href="{{$bug_link_url}}">{{$bug_link_text}}</a></p> -<p>{{$adminlabel}}</p> -<p>{{$admininfo}}</p> -<p>{{$contact}}</p> -<p>{{$plugins_text}}</p> -{{if $plugins_list}} - <div style="margin-left: 25px; margin-right: 25px;">{{$plugins_list}}</div> -{{/if}} -<p>{{$donate}}</p> + + +<h3>{{$prj_linktxt}}</h3> + +<div>{{$prj_link}}</div> + +<h3>{{$prj_srctxt}}</h3> + +<div>{{$prj_src}}</div> + +<br><br> +<div>{{$prj_transport}} ({{$transport_link}})</div> + </div> diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl index 4eefb3189..8ad010168 100644 --- a/view/tpl/wiki.tpl +++ b/view/tpl/wiki.tpl @@ -1,169 +1,131 @@ -<style type="text/css" media="screen"> - #ace-editor { - position: relative; - width: 100%; - height: 500px; - } - .fade.in { - -webkit-transition: opacity 0.5s 0.5s ease; - -moz-transition: opacity 0.5s 0.5s ease; - -o-transition: opacity 0.5s 0.5s ease; - transition: opacity 0.5s 0.5s ease; - } -</style> -<div class="generic-content-wrapper"> - <div class="section-title-wrapper"> - - <div class="pull-right"> - {{if $showPageControls}} - <div class="btn-group"> +<div class="generic-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}> + <div class="section-title-wrapper"> + <div class="pull-right"> + {{if $showPageControls}} + <div id="page-tools" class="btn-group" style="display: none;"> <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-caret-down"></i> {{$tools_label}} </button> - <ul class="dropdown-menu"> - - <li class="nav-item"> - <a id="rename-page" class="nav-link" href="#"><i class="fa fa-edit"></i> Rename Page</a> - </li> + <ul class="dropdown-menu dropdown-menu-right"> + {{if $renamePage}} <li class="nav-item"> - <a id="delete-page" class="nav-link" href="#"><i class="fa fa-trash-o"></i> Delete Page</a> + <a class="nav-link rename-page" href="#"><i class="fa fa-edit"></i> {{$renamePage}}</a> </li> + {{/if}} <li class="nav-item"> <a id="embed-image" class="nav-link" href="#"><i class="fa fa-picture-o"></i> Embed Image</a> </li> - </ul> </div> - - {{/if}} - - <button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button> - <button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button> - </div> - <h2><span id="wiki-header-name">{{$wikiheaderName}}</span>: <span id="wiki-header-page">{{$wikiheaderPage}}</span></h2> - <div class="clear"></div> - </div> - - - <div id="new-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;"> - <form id="new-page-form" action="wiki/create/page" method="post" > - <div class="clear"></div> - {{include file="field_input.tpl" field=$pageName}} - <div class="btn-group pull-right"> - <button id="new-page-submit" class="btn btn-success" type="submit" name="submit" >Create Page</button> - </div> - </form> <div class="clear"></div> - <hr> - </div> - - <div id="rename-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;"> - <form id="rename-page-form" action="wiki/rename/page" method="post" > - <div class="clear"></div> - {{include file="field_input.tpl" field=$pageRename}} - <div class="btn-group pull-right"> - <button id="rename-page-submit" class="btn btn-warning" type="submit" name="submit" >Rename Page</button> - </div> - </form> <div class="clear"></div> - <hr> - </div> - - <div id="wiki-content-container" class="section-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}> - <ul class="nav nav-tabs" id="wiki-nav-tabs"> - <li id="edit-pane-tab"><a data-toggle="tab" href="#edit-pane">Edit</a></li> - <li class="active"><a data-toggle="tab" href="#preview-pane" id="wiki-get-preview">Preview</a></li> - <li {{if $hidePageHistory}}style="display: none;"{{/if}}><a data-toggle="tab" href="#page-history-pane" id="wiki-get-history">History</a></li> - - </ul> - - <div class="tab-content" id="wiki-page-tabs"> - - <div id="edit-pane" class="tab-pane fade"> - <div id="ace-editor"></div> - </div> - <div id="preview-pane" class="tab-pane fade in active"> - <div id="wiki-preview" class="section-content-wrapper"> - {{$renderedContent}} - </div> - </div> - <div id="page-history-pane" class="tab-pane fade" {{if $hidePageHistory}}style="display: none;"{{/if}}> - <div id="page-history-list" class="section-content-wrapper"> - </div> - </div> - - - </div> - </div> - {{if $showCommitMsg}} - {{if $showPageControls}} - <div class="section-content-wrapper"> - <div id="id_{{$commitMsg.0}}_wrapper" class='form-group field input'> - <label for='id_{{$commitMsg.0}}' id='label_{{$commitMsg.0}}'>{{$commitMsg.1}}{{if $commitMsg.4}}<span class="required"> {{$commitMsg.4}}</span>{{/if}}</label> - <span> - <input class="" style="width: 80%;" name='{{$commitMsg.0}}' id='id_{{$commitMsg.0}}' type="text" value="{{$commitMsg.2}}"{{if $commitMsg.5}} {{$commitMsg.5}}{{/if}}> - <a id="save-page" href="#" class="btn btn-primary btn-md">Save</a> - </span> - <span id='help_{{$commitMsg.0}}' class='help-block'>{{$commitMsg.3}}</span> - + {{/if}} + <button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(); adjustFullscreenEditorHeight();"><i class="fa fa-expand"></i></button> + <button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false); adjustInlineEditorHeight()"><i class="fa fa-compress"></i></button> + </div> + <h2> + <span id="wiki-header-name">{{$wikiheaderName}}</span>: + <span id="wiki-header-page">{{$wikiheaderPage}}</span> + </h2> <div class="clear"></div> </div> - </div> - {{/if}} - {{/if}} + <div id="rename-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;"> + <form id="rename-page-form" action="wiki/rename/page" method="post" > + {{include file="field_input.tpl" field=$pageRename}} + <div class="form-group"> + <div class="pull-right"> + <button id="rename-page-submit" class="btn btn-primary" type="submit" name="submit">Submit</button> + </div> + <div> + <button class="btn btn-default rename-page" type="button">Cancel</button> + </div> + <div class="clear"></div> + </div> + </form> + </div> + <div id="wiki-content-container" class="section-content-wrapper"> + <ul class="nav nav-tabs" id="wiki-nav-tabs"> + <li id="edit-pane-tab"><a data-toggle="tab" href="#edit-pane">{{$editOrSourceLabel}}</a></li> + <li class="active"><a data-toggle="tab" href="#preview-pane" id="wiki-get-preview">View</a></li> + <li><a data-toggle="tab" href="#page-history-pane" id="wiki-get-history">History</a></li> + </ul> + <div class="tab-content" id="wiki-page-tabs"> + <div id="edit-pane" class="tab-pane fade"> + {{if !$mimeType || $mimeType == 'text/markdown'}} + <div id="ace-editor"></div> + {{else}} + <div id="editor-wrapper"> + <textarea id="editor">{{$content}}</textarea> + </div> + {{/if}} + {{if $showPageControls}} + <div> + <div id="id_{{$commitMsg.0}}_wrapper" class="field input"> + <div class="input-group"> + <input class="widget-input" name="{{$commitMsg.0}}" id="id_{{$commitMsg.0}}" type="text" value="{{$commitMsg.2}}"{{if $commitMsg.5}} {{$commitMsg.5}}{{/if}}> + <div class="input-group-btn"> + <button id="save-page" type="button" class="btn btn-primary btn-sm disabled">Save</button> + </div> + </div> + </div> + </div> + {{/if}} + </div> + <div id="preview-pane" class="tab-pane fade in active"> + <div id="wiki-preview"> + {{$renderedContent}} + </div> + </div> + <div id="page-history-pane" class="tab-pane fade"> + <div id="page-history-list"></div> + </div> + </div> + </div> </div> {{$wikiModal}} - <div class="modal" id="embedPhotoModal" tabindex="-1" role="dialog" aria-labelledby="embedPhotoLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4> - </div> - <div class="modal-body" id="embedPhotoModalBody" > - <div id="embedPhotoModalBodyAlbumListDialog" class="hide"> - <div id="embedPhotoModalBodyAlbumList"></div> - </div> - <div id="embedPhotoModalBodyAlbumDialog" class="hide"> - </div> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal">{{$embedPhotosModalCancel}}</button> - <button id="embed-photo-OKButton" type="button" class="btn btn-primary">{{$embedPhotosModalOK}}</button> - </div> - </div><!-- /.modal-content --> - </div><!-- /.modal-dialog --> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4> + </div> + <div class="modal-body" id="embedPhotoModalBody" > + <div id="embedPhotoModalBodyAlbumListDialog" class="hide"> + <div id="embedPhotoModalBodyAlbumList"></div> + </div> + <div id="embedPhotoModalBodyAlbumDialog" class="hide"></div> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">{{$embedPhotosModalCancel}}</button> + <button id="embed-photo-OKButton" type="button" class="btn btn-primary">{{$embedPhotosModalOK}}</button> + </div> + </div><!-- /.modal-content --> + </div><!-- /.modal-dialog --> </div><!-- /.modal --> - <script> - window.wiki_resource_id = '{{$resource_id}}'; - window.wiki_page_name = '{{$page}}'; - window.wiki_page_content = {{$content}}; - window.wiki_page_commit = '{{$commit}}'; - - if (window.wiki_page_name === 'Home') { - $('#delete-page').hide(); - $('#rename-page').hide(); - } - - $("#generic-modal-ok-{{$wikiModalID}}").removeClass('btn-primary'); - $("#generic-modal-ok-{{$wikiModalID}}").addClass('btn-danger'); - - $('#rename-page').click(function (ev) { - $('#rename-page-form-wrapper').show(); - ev.preventDefault(); - }); - - $( "#rename-page-form" ).submit(function( event ) { - $.post("wiki/{{$channel}}/rename/page", - { - oldName: window.wiki_page_name, - newName: $('#id_pageRename').val(), - resource_id: window.wiki_resource_id - }, - function (data) { + window.wiki_resource_id = '{{$resource_id}}'; + window.wiki_page_name = '{{$page}}'; + window.wiki_page_content = {{if !$mimeType || $mimeType == 'text/markdown'}}{{$content}}{{else}}`{{$content}}`{{/if}}; + window.wiki_page_commit = '{{$commit}}'; + + $("#generic-modal-ok-{{$wikiModalID}}").removeClass('btn-primary'); + $("#generic-modal-ok-{{$wikiModalID}}").addClass('btn-danger'); + + $('.rename-page').click(function (ev) { + $('#rename-page-form-wrapper').toggle(); + ev.preventDefault(); + }); + + $( "#rename-page-form" ).submit(function( event ) { + $.post("wiki/{{$channel}}/rename/page", + { + oldName: window.wiki_page_name, + newName: $('#id_pageRename').val(), + resource_id: window.wiki_resource_id + }, + function (data) { if (data.success) { $('#rename-page-form-wrapper').hide(); window.console.log('data: ' + JSON.stringify(data)); @@ -173,46 +135,79 @@ } else { window.console.log('Error renaming page.'); } - }, 'json'); - event.preventDefault(); - }); - - var editor = ace.edit("ace-editor"); - editor.setOptions({ - theme: "ace/theme/github", - mode: "ace/mode/markdown", - - wrap: true, - - minLines: 30, - maxLines: Infinity, - - printMargin: false - }); - - editor.getSession().setValue(window.wiki_page_content); - window.editor = editor; // Store the editor in the window object so the anonymous function can use it. - - $('#edit-pane-tab').click(function (ev) { - setTimeout(function() {window.editor.focus();}, 500); // Return the focus to the editor allowing immediate text entry - }); + }, 'json'); + event.preventDefault(); + }); + + {{if !$mimeType || $mimeType == 'text/markdown'}} + var editor = ace.edit("ace-editor"); + editor.setOptions({ + theme: "ace/theme/github", + mode: "ace/mode/markdown", + + maxLines: Infinity, + minLines: 30, + + wrap: true, + + printMargin: false + }); + + editor.getSession().setValue(window.wiki_page_content); + window.editor = editor; // Store the editor in the window object so the anonymous function can use it. + {{else}} + window.editor = editor = $('#editor'); + {{/if}} + + {{if !$showPageControls}} + {{if !$mimeType || $mimeType == 'text/markdown'}} + editor.setReadOnly(true); // Disable editing if the viewer lacks edit permission + {{else}} + editor.prop('readonly', true); + {{/if}} + {{/if}} - $('#wiki-get-preview').click(function (ev) { - $.post("wiki/{{$channel}}/preview", {content: editor.getValue(), resource_id: window.wiki_resource_id}, function (data) { - if (data.success) { - $('#wiki-preview').html(data.html); - $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"}); - } else { - window.console.log('Error previewing page.'); + $('#edit-pane-tab').click(function (ev) { + setTimeout(function() { + window.editor.focus(); + if($('main').hasClass('fullscreen')) { + adjustFullscreenEditorHeight(); } - }, 'json'); - ev.preventDefault(); - }); + else { + adjustInlineEditorHeight(); + } + }, 500); // Return the focus to the editor allowing immediate text entry + $('#page-tools').show(); + }); + + $('#wiki-get-preview').click(function (ev) { + $.post("wiki/{{$channel}}/preview", { + {{if !$mimeType || $mimeType == 'text/markdown'}} + content: editor.getValue(), + {{else}} + content: editor.val(), + {{/if}} + resource_id: window.wiki_resource_id + }, + function (data) { + if (data.success) { + $('#wiki-preview').html(data.html); + {{if !$mimeType || $mimeType == 'text/markdown'}} + $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"}); + {{/if}} + $('#page-tools').hide(); + } else { + window.console.log('Error previewing page.'); + } + }, 'json'); + ev.preventDefault(); + }); - $('#wiki-get-history').click(function (ev) { - $.post("wiki/{{$channel}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) { + $('#wiki-get-history').click(function (ev) { + $.post("wiki/{{$channel}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) { if (data.success) { $('#page-history-list').html(data.historyHTML); + $('#page-tools').hide(); } else { window.console.log('Error getting page history.'); } @@ -220,162 +215,103 @@ ev.preventDefault(); }); - function wiki_delete_wiki(wikiHtmlName, resource_id) { - if(!confirm('Are you sure you want to delete the entire wiki: ' + JSON.stringify(wikiHtmlName))) { - return; + function wiki_refresh_page_list() { + if (window.wiki_resource_id === '') { + return false; } - $.post("wiki/{{$channel}}/delete/wiki", {resource_id: resource_id}, function (data) { + $.post("wiki/{{$channel}}/get/page/list/", {resource_id: window.wiki_resource_id}, function (data) { if (data.success) { - window.console.log('Wiki deleted'); - // Refresh list and redirect page as necessary - window.location = 'wiki/{{$channel}}'; + $('#wiki_page_list_container').html(data.pages); + $('#wiki_page_list_container').show(); } else { - alert('Error deleting wiki!'); - window.console.log('Error deleting wiki.'); + alert('Error fetching page list!'); + window.console.log('Error fetching page list!'); } - }, 'json'); - } - - - function wiki_download_wiki(resource_id) { - window.location = "wiki/{{$channel}}/download/wiki/" + resource_id; - } + }, 'json'); + return false; + } - $('#new-page-submit').click(function (ev) { - if (window.wiki_resource_id === '') { - window.console.log('You must have a wiki open in order to create pages.'); - ev.preventDefault(); - return false; - } - $.post("wiki/{{$channel}}/create/page", {name: $('#id_pageName').val(), resource_id: window.wiki_resource_id}, - function (data) { - if (data.success) { - window.location = data.url; - } else { - window.console.log('Error creating page.'); - } - }, 'json'); + $('#save-page').click(function (ev) { + if (window.wiki_resource_id === '' || window.wiki_page_name === '') { + window.console.log('You must have a wiki page open in order to edit pages.'); ev.preventDefault(); - }); - - function wiki_refresh_page_list() { - if (window.wiki_resource_id === '') { - return false; - } - $.post("wiki/{{$channel}}/get/page/list/", {resource_id: window.wiki_resource_id}, function (data) { - if (data.success) { - $('#wiki_page_list_container').html(data.pages); - $('#wiki_page_list_container').show(); - {{if $showNewPageButton}} - $('#new-page-button').show(); - {{else}} - $('#new-page-button').hide(); - {{/if}} - } else { - alert('Error fetching page list!'); - window.console.log('Error fetching page list!'); - } - }, 'json'); return false; } + {{if !$mimeType || $mimeType == 'text/markdown'}} + var currentContent = editor.getValue(); + {{else}} + var currentContent = editor.val(); + {{/if}} - $('#save-page').click(function (ev) { - if (window.wiki_resource_id === '' || window.wiki_page_name === '') { - window.console.log('You must have a wiki page open in order to edit pages.'); - ev.preventDefault(); - return false; - } - var currentContent = editor.getValue(); - if (window.wiki_page_content === currentContent) { + if (window.wiki_page_content === currentContent) { + $('#save-page').addClass('disabled'); // Disable the save button window.console.log('No edits to save.'); ev.preventDefault(); return false; - } - $.post("wiki/{{$channel}}/save/page", - { content: currentContent, - commitMsg: $('#id_commitMsg').val(), - name: window.wiki_page_name, - resource_id: window.wiki_resource_id - }, - function (data) { - if (data.success) { + } + $.post("wiki/{{$channel}}/save/page", { + content: currentContent, + commitMsg: $('#id_commitMsg').val(), + name: window.wiki_page_name, + resource_id: window.wiki_resource_id + }, + function (data) { + if (data.success) { window.console.log('Page saved successfully.'); window.wiki_page_content = currentContent; $('#id_commitMsg').val(''); // Clear the commit message box - $('#wiki-get-history').click(); - } else { + $('#save-page').addClass('disabled'); // Disable the save button + {{if !$mimeType || $mimeType == 'text/markdown'}} + window.editor.getSession().getUndoManager().markClean(); // Reset the undo history for the editor + {{/if}} + + window.editor.focus(); // Return focus to the editor for continued editing + // $('#wiki-get-history').click(); + } else { alert('Error saving page.'); // TODO: Replace alerts with auto-timeout popups window.console.log('Error saving page.'); - } - }, 'json'); - ev.preventDefault(); - }); - - $('#delete-page').click(function (ev) { - if (window.wiki_resource_id === '' || window.wiki_page_name === '' || window.wiki_page_name === 'Home') { - window.console.log('You must have a wiki page open in order to delete pages.'); - ev.preventDefault(); - return false; } - if(!confirm('Are you sure you want to delete the page: ' + window.wiki_page_name)) { - ev.preventDefault(); - return; - } - $.post("wiki/{{$channel}}/delete/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, - function (data) { - if (data.success) { - window.console.log('Page deleted successfully.'); - var url = window.location.href; - if (url.substr(-1) == '/') url = url.substr(0, url.length - 2); - url = url.split('/'); - url.pop(); - window.location = url.join('/'); - } else { - alert('Error deleting page.'); // TODO: Replace alerts with auto-timeout popups - window.console.log('Error deleting page.'); - } - }, 'json'); - ev.preventDefault(); - }); + }, 'json'); + ev.preventDefault(); + }); - function wiki_revert_page(commitHash) { - if (window.wiki_resource_id === '' || window.wiki_page_name === '') { + function wiki_revert_page(commitHash) { + if (window.wiki_resource_id === '' || window.wiki_page_name === '') { window.console.log('You must have a wiki page open in order to revert pages.'); return false; - } - $.post("wiki/{{$channel}}/revert/page", {commitHash: commitHash, name: window.wiki_page_name, resource_id: window.wiki_resource_id}, - function (data) { - if (data.success) { - $('button[id^=revert-]').removeClass('btn-success'); - $('button[id^=revert-]').addClass('btn-danger'); - $('button[id^=revert-]').html('Revert'); - $('#revert-'+commitHash).removeClass('btn-danger'); - $('#revert-'+commitHash).addClass('btn-success'); - $('#revert-'+commitHash).html('Page reverted<br>but not saved'); - window.wiki_page_commit = commitHash; - // put contents in editor - editor.getSession().setValue(data.content); - } else { - window.console.log('Error reverting page.'); - } - }, 'json'); } + $.post("wiki/{{$channel}}/revert/page", {commitHash: commitHash, name: window.wiki_page_name, resource_id: window.wiki_resource_id}, + function (data) { + if (data.success) { + $('button[id^=revert-]').removeClass('btn-success'); + $('button[id^=revert-]').addClass('btn-danger'); + $('button[id^=revert-]').html('Revert'); + $('#revert-'+commitHash).removeClass('btn-danger'); + $('#revert-'+commitHash).addClass('btn-success'); + $('#revert-'+commitHash).html('Page reverted<br>but not saved'); + window.wiki_page_commit = commitHash; + // put contents in editor + editor.getSession().setValue(data.content); + } else { + window.console.log('Error reverting page.'); + } + }, 'json'); + } - function wiki_compare_page(compareCommit) { - if (window.wiki_resource_id === '' || window.wiki_page_name === '' || window.wiki_page_commit === '') { + function wiki_compare_page(compareCommit) { + if (window.wiki_resource_id === '' || window.wiki_page_name === '' || window.wiki_page_commit === '') { window.console.log('You must have a wiki page open in order to revert pages.'); return false; - } - $.post("wiki/{{$channel}}/compare/page", - { - compareCommit: compareCommit, - currentCommit: window.wiki_page_commit, - name: window.wiki_page_name, - resource_id: window.wiki_resource_id - }, - function (data) { - console.log(data); - if (data.success) { + } + $.post("wiki/{{$channel}}/compare/page", { + compareCommit: compareCommit, + currentCommit: window.wiki_page_commit, + name: window.wiki_page_name, + resource_id: window.wiki_resource_id + }, + function (data) { + console.log(data); + if (data.success) { var modalBody = $('#generic-modal-body-{{$wikiModalID}}'); modalBody.html('<div class="descriptive-text">'+data.diff+'</div>'); $('.modal-dialog').addClass('modal-lg'); @@ -385,134 +321,152 @@ $('#generic-modal-{{$wikiModalID}}').modal('hide'); }); $('#generic-modal-{{$wikiModalID}}').modal(); - } else { + } else { window.console.log('Error comparing page.'); - } - }, 'json'); - } + } + }, 'json'); + } - $('#embed-image').click(function (ev) { - initializeEmbedPhotoDialog(); - ev.preventDefault(); + function adjustFullscreenEditorHeight() { + $('#editor, #ace-editor').height($(window).height() - $('#id_commitMsg_wrapper').outerHeight(true) - $('.section-title-wrapper').outerHeight(true) - $('#wiki-nav-tabs').outerHeight(true) - 17); + {{if !$mimeType || $mimeType == 'text/markdown'}} + editor.setOptions({ + maxLines: null, + minLines: null }); + editor.resize(); + {{/if}} + } + function adjustInlineEditorHeight() { + {{if !$mimeType || $mimeType == 'text/markdown'}} + editor.setOptions({ + maxLines: Infinity, + minLines: 30 + }); + editor.resize(); + {{else}} + editor.height(editor[0].scrollHeight); + {{/if}} + } - var initializeEmbedPhotoDialog = function () { - $('.embed-photo-selected-photo').each(function (index) { - $(this).removeClass('embed-photo-selected-photo'); - }); - getPhotoAlbumList(); - $('#embedPhotoModalBodyAlbumDialog').off('click'); - $('#embedPhotoModal').modal(); - }; + $('#embed-image').click(function (ev) { + initializeEmbedPhotoDialog(); + ev.preventDefault(); + }); - var choosePhotoFromAlbum = function (album) { - $.post("embedphotos/album", {name: album}, - function(data) { - if (data['status']) { - $('#embedPhotoModalLabel').html('{{$modalchooseimages}}'); - $('#embedPhotoModalBodyAlbumDialog').html('\ - <div><ul class="nav">\n\ - <li><a href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\ - <i class="fa fa-chevron-left"></i> \n\ - {{$modaldiffalbum}}\n\ - </a>\n\ - </li>\n\ - </ul><br></div>') - $('#embedPhotoModalBodyAlbumDialog').append(data['content']); - $('#embedPhotoModalBodyAlbumDialog').click(function (evt) { - evt.preventDefault(); - var image = document.getElementById(evt.target.id); - if (typeof($(image).parent()[0]) !== 'undefined') { - var imageparent = document.getElementById($(image).parent()[0].id); - $(imageparent).toggleClass('embed-photo-selected-photo'); - } - }); - $('#embedPhotoModalBodyAlbumListDialog').addClass('hide'); - $('#embedPhotoModalBodyAlbumDialog').removeClass('hide'); - $('#embed-photo-OKButton').click(function () { - $('.embed-photo-selected-photo').each(function (index) { - var href = $(this).attr('href'); - $.post("embedphotos/photolink", {href: href}, - function(ddata) { - if (ddata['status']) { - var imgURL = ddata['photolink'].replace( /\[.*\]\[.*\](.*)\[.*\]\[.*\]/, '\n![image]($1)' ) - editor.getSession().insert(editor.getCursorPosition(), imgURL) - } else { - window.console.log('{{$modalerrorlink}}' + ':' + ddata['errormsg']); - } - return false; - }, - 'json'); - }); - $('#embedPhotoModalBodyAlbumDialog').html(''); - $('#embedPhotoModalBodyAlbumDialog').off('click'); - $('#embedPhotoModal').modal('hide'); - }); - } else { - window.console.log('{{$modalerroralbum}} ' + JSON.stringify(album) + ':' + data['errormsg']); - } - return false; - }, - 'json'); - }; - - var getPhotoAlbumList = function () { - $.post("embedphotos/albumlist", {}, - function(data) { - if (data['status']) { - var albums = data['albumlist']; //JSON.parse(data['albumlist']); - $('#embedPhotoModalLabel').html('{{$modalchoosealbum}}'); - $('#embedPhotoModalBodyAlbumList').html('<ul class="nav"></ul>'); - for(var i=0; i<albums.length; i++) { - var albumName = albums[i].text; - var albumLink = '<li>'; - albumLink += '<a href="#" onclick="choosePhotoFromAlbum(\'' + albumName + '\');return false;">' + albumName + '</a>'; - albumLink += '</li>'; - $('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink); + var initializeEmbedPhotoDialog = function () { + $('.embed-photo-selected-photo').each(function (index) { + $(this).removeClass('embed-photo-selected-photo'); + }); + getPhotoAlbumList(); + $('#embedPhotoModalBodyAlbumDialog').off('click'); + $('#embedPhotoModal').modal(); + }; + + var choosePhotoFromAlbum = function (album) { + $.post("embedphotos/album", {name: album}, + function(data) { + if (data['status']) { + $('#embedPhotoModalLabel').html("{{$modalchooseimages}}"); + $('#embedPhotoModalBodyAlbumDialog').html('\ + <div><ul class="nav">\n\ + <li><a href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\ + <i class="fa fa-chevron-left"></i> \n\ + {{$modaldiffalbum}}\n\ + </a>\n\ + </li>\n\ + </ul><br></div>') + $('#embedPhotoModalBodyAlbumDialog').append(data['content']); + $('#embedPhotoModalBodyAlbumDialog').click(function (evt) { + evt.preventDefault(); + var image = document.getElementById(evt.target.id); + if (typeof($(image).parent()[0]) !== 'undefined') { + var imageparent = document.getElementById($(image).parent()[0].id); + $(imageparent).toggleClass('embed-photo-selected-photo'); } - $('#embedPhotoModalBodyAlbumDialog').addClass('hide'); - $('#embedPhotoModalBodyAlbumListDialog').removeClass('hide'); - } else { - window.console.log('{{$modalerrorlist}}' + ':' + data['errormsg']); + }); + $('#embedPhotoModalBodyAlbumListDialog').addClass('hide'); + $('#embedPhotoModalBodyAlbumDialog').removeClass('hide'); + $('#embed-photo-OKButton').click(function () { + $('.embed-photo-selected-photo').each(function (index) { + var href = $(this).attr('href'); + $.post("embedphotos/photolink", {href: href}, + function(ddata) { + if (ddata['status']) { + {{if !$mimeType || $mimeType == 'text/markdown'}} + var imgURL = ddata['photolink'].replace( /\[.*\]\[.*\](.*)\[.*\]\[.*\]/, '\n![image]($1)' ) + editor.getSession().insert(editor.getCursorPosition(), imgURL) + {{else}} + var currentContent = $('#editor').val(); + $('#editor').val(currentContent + ddata['photolink']); + {{/if}} + } else { + window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']); + } + return false; + }, + 'json'); + }); + $('#embedPhotoModalBodyAlbumDialog').html(''); + $('#embedPhotoModalBodyAlbumDialog').off('click'); + $('#embedPhotoModal').modal('hide'); + }); + } else { + window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']); + } + return false; + }, + 'json'); + }; + + var getPhotoAlbumList = function () { + $.post("embedphotos/albumlist", {}, + function(data) { + if (data['status']) { + var albums = data['albumlist']; //JSON.parse(data['albumlist']); + $('#embedPhotoModalLabel').html("{{$modalchoosealbum}}"); + $('#embedPhotoModalBodyAlbumList').html('<ul class="nav"></ul>'); + for(var i=0; i<albums.length; i++) { + var albumName = albums[i].text; + var albumLink = '<li>'; + albumLink += '<a href="#" onclick="choosePhotoFromAlbum("' + albumName + '");return false;">' + albumName + '</a>'; + albumLink += '</li>'; + $('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink); } - return false; - }, - 'json'); - }; - - function wiki_show_new_wiki_form() { - $('#new-page-form-wrapper').hide(); - $('#edit-wiki-form-wrapper').hide(); - $('#new-wiki-form-wrapper').toggle(); - return false; - } - - function wiki_show_new_page_form() { - $('#edit-wiki-form-wrapper').hide(); - $('#new-wiki-form-wrapper').hide(); - $('#new-page-form-wrapper').toggle(); - return false; - } + $('#embedPhotoModalBodyAlbumDialog').addClass('hide'); + $('#embedPhotoModalBodyAlbumListDialog').removeClass('hide'); + } else { + window.console.log("{{$modalerrorlist}}" + ':' + data['errormsg']); + } + return false; + }, + 'json'); + }; + + $(document).ready(function () { + wiki_refresh_page_list(); + + {{if !$mimeType || $mimeType == 'text/markdown'}} + $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"}); + window.editor.on("input", function() { + if(window.editor.getSession().getUndoManager().isClean()) { + $('#save-page').addClass('disabled'); + } else { + $('#save-page').removeClass('disabled'); + } + }); + {{else}} + window.editor.on("input", function() { + $('#save-page').removeClass('disabled'); + }); + window.editor.bbco_autocomplete('bbcode'); + {{/if}} + }); - function wiki_show_edit_wiki_form(wiki_title, wiki_resource_id) { - window.wiki_resource_id = wiki_resource_id; - window.wiki_title = wiki_title; - $('#new-page-form-wrapper').hide(); - $('#new-wiki-form-wrapper').hide(); - $('#edit-wiki-form-wrapper').toggle(); - return false; + $(window).resize(function () { + if($('main').hasClass('fullscreen')) { + adjustFullscreenEditorHeight(); } - - $(document).ready(function () { - wiki_refresh_page_list(); - $("#wiki-toc").toc({content: "#wiki-preview", headings: "h1,h2,h3,h4"}); - // Show Edit tab first. Otherwise the Ace editor does not load. - $("#wiki-nav-tabs li:eq(1) a").tab('show'); - {{if $showNewWikiButton}} - $('#new-wiki-button').show(); - {{else}} - $('#new-wiki-button').hide(); - {{/if}} - }); + }); </script> diff --git a/view/tpl/wiki_page_history.tpl b/view/tpl/wiki_page_history.tpl index 9a313f767..ca16e8333 100644 --- a/view/tpl/wiki_page_history.tpl +++ b/view/tpl/wiki_page_history.tpl @@ -1,6 +1,7 @@ <style> .diff { width:100%; + word-break: break-all; } .diff td{ @@ -44,8 +45,10 @@ <table id="rev-{{$commit.hash}}" onclick="$('#details-{{$commit.hash}}').show()" width="100%"> <tr><td width="10%">Date</td><td width="70%">{{$commit.date}}</td> <td rowspan="3" width="20%" align="right"> + {{if $permsWrite}} <button id="revert-{{$commit.hash}}" class="btn btn-danger btn-xs" onclick="wiki_revert_page('{{$commit.hash}}')">Revert</button> <br><br> + {{/if}} <button id="compare-{{$commit.hash}}" class="btn btn-warning btn-xs" onclick="wiki_compare_page('{{$commit.hash}}')">Compare</button> </td></tr> <tr><td>Name</td><td>{{$commit.name}} <{{$commit.email}}></td></tr> diff --git a/view/tpl/wiki_page_list.tpl b/view/tpl/wiki_page_list.tpl index c020f2520..ef2b41490 100644 --- a/view/tpl/wiki_page_list.tpl +++ b/view/tpl/wiki_page_list.tpl @@ -1,14 +1,75 @@ {{if $not_refresh}}<div id="wiki_page_list_container" {{if $hide}} style="display: none;" {{/if}}>{{/if}} <div id="wiki_page_list" class="widget" > <h3>{{$header}}</h3> - <ul class="nav nav-pills nav-stacked"> {{if $pages}} {{foreach $pages as $page}} - <li><a href="/wiki/{{$channel}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a></li> + <li id="{{$page.link_id}}"> + {{if $page.resource_id && $canadd}} + <i class="widget-nav-pills-icons fa fa-trash-o drop-icons" onclick="wiki_delete_page('{{$page.title}}', '{{$page.url}}', '{{$page.resource_id}}', '{{$page.link_id}}')"></i> + {{/if}} + <a href="/wiki/{{$channel}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a> + </li> {{/foreach}} {{/if}} - {{if $canadd}}<li><a href="#" onclick="wiki_show_new_page_form(); return false;"><i class="fa fa-plus-circle"></i> {{$addnew}}</a></li>{{/if}} + {{if $canadd}} + <li><a href="#" onclick="wiki_show_new_page_form(); return false;"><i class="fa fa-plus-circle"></i> {{$addnew}}</a></li> + {{/if}} </ul> + {{if $canadd}} + <div id="new-page-form-wrapper" class="sub-menu" style="display:none;"> + <form id="new-page-form" action="wiki/{{$channel}}/create/page" method="post" > + {{include file="field_input.tpl" field=$pageName}} + <button id="new-page-submit" class="btn btn-primary" type="submit" name="submit" >Submit</button> + </form> + </div> + {{/if}} </div> {{if $not_refresh}}</div>{{/if}} + +<script> + $('#new-page-submit').click(function (ev) { + $.post("wiki/{{$channel}}/create/page", {name: $('#id_pageName').val(), resource_id: window.wiki_resource_id}, + function(data) { + if(data.success) { + window.location = data.url; + } else { + window.console.log('Error creating page.'); + } + }, 'json'); + ev.preventDefault(); + }); + + function wiki_delete_page(wiki_page_name, wiki_page_url, wiki_resource_id, wiki_link_id) { + if(!confirm('Are you sure you want to delete the page: ' + wiki_page_name)) { + return; + } + $.post("wiki/{{$channel}}/delete/page", {name: wiki_page_url, resource_id: wiki_resource_id}, + function (data) { + if (data.success) { + window.console.log('Page deleted successfully.'); + if(wiki_page_url == window.wiki_page_name) { + var url = window.location.href; + if(url.substr(-1) == '/') + url = url.substr(0, url.length - 2); + url = url.split('/'); + url.pop(); + window.location = url.join('/'); + } + else { + $('#' + wiki_link_id).remove(); + } + } else { + alert('Error deleting page.'); // TODO: Replace alerts with auto-timeout popups + window.console.log('Error deleting page.'); + } + }, 'json'); + return false; + } + + function wiki_show_new_page_form() { + $('#new-page-form-wrapper').toggle(); + $('#id_pageName').focus(); + return false; + } +</script> diff --git a/view/tpl/wikilist.tpl b/view/tpl/wikilist.tpl index d3c6b867f..eeaf7cd7e 100644 --- a/view/tpl/wikilist.tpl +++ b/view/tpl/wikilist.tpl @@ -1,49 +1,78 @@ -<div id="wiki_list" class="widget"> - <h3>{{$header}}</h3> - <ul class="nav nav-pills nav-stacked"> - {{if $wikis}} - {{foreach $wikis as $wiki}} - <li>{{if $owner}}<a href="#" onclick="$('div[id^=\'edit-wiki-form-wrapper\']').hide(); $('div[id^=\'new-wiki-form-wrapper\']').hide(); openClose('edit-wiki-form-wrapper-{{$wiki.resource_id}}'); return false;" class="pull-right wikilist" title="{{$edit}}"><i class="fa fa-pencil"></i></a>{{/if}} - <a href="#" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;" title="{{$download}}" class="pull-right wikilist"><i class="fa fa-download"></i></a> - <a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}"{{if $wiki.active}} class="active"{{/if}}>{{$wiki.title}}</a> - {{if $owner}} - <div id="edit-wiki-form-wrapper-{{$wiki.resource_id}}" class="section-content-tools-wrapper" style="display:none;"> - <form id="edit-wiki-form" action="wiki/edit/wiki" method="post" > - <div class="clear"></div> - <div class="btn-group pull-right"> - <button class="btn btn-xs btn-danger" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"><i class="fa fa-trash-o"></i> Delete Wiki</button> - </div> - </form> - <div class="clear"></div> - </div> - {{/if}} - </li> - {{/foreach}} - {{/if}} +<div class="generic-content-wrapper"> + <div class="section-title-wrapper"> {{if $owner}} - <li><a href="#" class="fakelink" onclick="$('div[id^=\'edit-wiki-form-wrapper\']').hide(); openClose('new-wiki-form-wrapper'); return false;"><i id="new-wiki-button" class="fa fa-plus-circle"></i> {{$addnew}}</a></li> + <button type="button" class="btn btn-success btn-xs pull-right acl-form-trigger" onclick="openClose('new-wiki-form-wrapper');" data-form_id="new-wiki-form"><i class="fa fa-plus-circle"></i> {{$create}}</button> {{/if}} - </ul> + <h2>{{$header}}</h2> + </div> {{if $owner}} - <div id="new-wiki-form-wrapper" class="sub-menu" style="display:none;"> + <div id="new-wiki-form-wrapper" class="section-content-tools-wrapper"> <form id="new-wiki-form" action="wiki/{{$channel}}/create/wiki" method="post" class="acl-form" data-form_id="new-wiki-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'> {{include file="field_input.tpl" field=$wikiName}} - <div id="post-visible-container" class="checkbox"> - <label> - <input name="postVisible" id="postVisible" value="0" type="checkbox">{{$notify}} - </label> - </div> + {{include file="field_select.tpl" field=$mimeType}} + {{include file="field_checkbox.tpl" field=$notify}} <div> - <div id="profile-jot-submit-right" class="btn-group"> + <div class="btn-group pull-right"> <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="Permission settings" onclick="return false;"> - <i id="jot-perms-icon" class="fa fa-{{$lockstate}} jot-icons"></i>{{$bang}} + <i id="jot-perms-icon" class="fa fa-{{$lockstate}} jot-icons"></i> </button> - <button id="new-wiki-submit" class="btn btn-primary btn-sm" type="submit" name="submit" >{{$create}}</button> + <button id="new-wiki-submit" class="btn btn-primary btn-sm" type="submit" name="submit" >{{$submit}}</button> </div> </div> </form> + {{$acl}} <div class="clear"></div> </div> {{/if}} + <div class="section-content-wrapper-np"> + <table id="wikis-index"> + <tr> + <th width="96%">{{$name}}</th> + <th width="1%">{{$type}}</th> + <th width="1%" class="wikis-index-tool"></th> + <th width="1%" class="wikis-index-tool"></th> + {{if $owner}} + <th width="1%"></th> + {{/if}} + </tr> + {{foreach $wikis as $wiki}} + <tr class="wikis-index-row"> + <td><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}"{{if $wiki.active}} class="active"{{/if}}>{{$wiki.title}}</a></td> + <td>{{$wiki.mimeType}}</td> + <td class="wiki-index-tool dropdown"> + {{if $wiki.lock}} + <i class="fa fa-lock dropdown-toggle lockview" data-toggle="dropdown" onclick="lockview('item',{{$wiki.id}});"></i></button> + <ul id="panel-{{$wiki.id}}" class="lockview-panel dropdown-menu dropdown-menu-right"></ul> + {{/if}} + </td> + <td class="wiki-index-tool"><i class="fa fa-download fakelink" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;"></i></td> + {{if $owner}} + <td><i class="fa fa-trash-o drop-icons" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"></i></td> + {{/if}} + </tr> + {{/foreach}} + </table> + </div> </div> -{{$acl}} +<script> + {{if $owner}} + function wiki_delete_wiki(wikiHtmlName, resource_id) { + if(!confirm('Are you sure you want to delete the entire wiki: ' + JSON.stringify(wikiHtmlName))) { + return; + } + $.post("wiki/{{$channel}}/delete/wiki", {resource_id: resource_id}, function (data) { + if (data.success) { + window.console.log('Wiki deleted'); + // Refresh list and redirect page as necessary + window.location = 'wiki/{{$channel}}'; + } else { + alert('Error deleting wiki!'); + window.console.log('Error deleting wiki.'); + } + }, 'json'); + } + {{/if}} + function wiki_download_wiki(resource_id) { + window.location = "wiki/{{$channel}}/download/wiki/" + resource_id; + } +</script> diff --git a/view/tpl/wikilist_widget.tpl b/view/tpl/wikilist_widget.tpl new file mode 100644 index 000000000..1f92b5807 --- /dev/null +++ b/view/tpl/wikilist_widget.tpl @@ -0,0 +1,8 @@ +<div id="wiki_list" class="widget"> + <h3>{{$header}}</h3> + <ul class="nav nav-pills nav-stacked"> + {{foreach $wikis as $wiki}} + <li><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}">{{$wiki.title}}</a></li> + {{/foreach}} + </ul> +</div> |