From: rabuzarus Date: Tue, 16 May 2017 15:31:06 +0000 (+0200) Subject: Merge pull request #3380 from fabrixxm/feature/frio/fixedaside2 X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=4a473611163a12b48d3bbad71dc54765be8789f9;hp=61e8147dafc4de022e2ae9d74d106a381030e4dc;p=friendica.git Merge pull request #3380 from fabrixxm/feature/frio/fixedaside2 Frio: better UX for aside bar --- diff --git a/boot.php b/boot.php index 2ef5853e00..e3fb320ac5 100644 --- a/boot.php +++ b/boot.php @@ -1,4 +1,5 @@ \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); - /** * @brief Image storage quality. * @@ -61,8 +62,8 @@ define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); * below about 50 * */ - define ( 'JPEG_QUALITY', 100 ); + /** * $a->config['system']['png_quality'] from 0 (uncompressed) to 9 */ @@ -86,12 +87,10 @@ define ( 'PNG_QUALITY', 8 ); */ define ( 'MAX_IMAGE_LENGTH', -1 ); - /** * Not yet used */ - -define ( 'DEFAULT_DB_ENGINE', 'MyISAM' ); +define ( 'DEFAULT_DB_ENGINE', 'InnoDB' ); /** * @name SSL Policy @@ -165,7 +164,6 @@ define ( 'UPDATE_SUCCESS', 0); define ( 'UPDATE_FAILED', 1); /** @}*/ - /** * @name page/profile types * @@ -218,6 +216,20 @@ define ( 'CP_USERS_ON_SERVER', 0 ); define ( 'CP_GLOBAL_COMMUNITY', 1 ); /** @}*/ +/** + * @name Protocols + * + * Different protocols that we are storing + * @{ + */ +define('PROTOCOL_UNKNOWN', 0); +define('PROTOCOL_DFRN', 1); +define('PROTOCOL_DIASPORA', 2); +define('PROTOCOL_OSTATUS_SALMON', 3); +define('PROTOCOL_OSTATUS_FEED', 4); +define('PROTOCOL_GS_CONVERSATION', 5); +/** @}*/ + /** * @name Network * @@ -277,20 +289,16 @@ $netgroup_ids = array( NETWORK_PHANTOM => (-127), ); - /** * Maximum number of "people who like (or don't like) this" that we will list by name */ - define ( 'MAX_LIKERS', 75); /** * Communication timeout */ - define ( 'ZCURL_TIMEOUT' , (-1)); - /** * @name Notify * @@ -331,8 +339,6 @@ define ( 'TERM_CONVERSATION', 7 ); define ( 'TERM_OBJ_POST', 1 ); define ( 'TERM_OBJ_PHOTO', 2 ); - - /** * @name Namespaces * @@ -354,6 +360,7 @@ define ( 'NAMESPACE_FEED', 'http://schemas.google.com/g/2010#updates- define ( 'NAMESPACE_OSTATUS', 'http://ostatus.org/schema/1.0' ); define ( 'NAMESPACE_STATUSNET', 'http://status.net/schema/api/1/' ); define ( 'NAMESPACE_ATOM1', 'http://www.w3.org/2005/Atom' ); +define ( 'NAMESPACE_MASTODON', 'http://mastodon.social/schema/1.0' ); /* @}*/ /** @@ -443,14 +450,13 @@ define('SR_SCOPE_TAGS', 'tags'); /** * Lowest possible date time value */ - define ('NULL_DATE', '0001-01-01 00:00:00'); - // Normally this constant is defined - but not if "pcntl" isn't installed if (!defined("SIGTERM")) { define("SIGTERM", 15); } + /** * * Reverse the effect of magic_quotes_gpc if it is enabled. @@ -458,9 +464,7 @@ if (!defined("SIGTERM")) { * See http://php.net/manual/en/security.magicquotes.disabling.php * */ - function startup() { - error_reporting(E_ERROR | E_WARNING | E_PARSE); set_time_limit(0); @@ -468,7 +472,6 @@ function startup() { // This has to be quite large to deal with embedded private photos ini_set('pcre.backtrack_limit', 500000); - if (get_magic_quotes_gpc()) { $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); while (list($key, $val) = each($process)) { @@ -484,946 +487,6 @@ function startup() { } unset($process); } - -} - -/** - * - * class: App - * - * @brief Our main application structure for the life of this page. - * - * Primarily deals with the URL that got us here - * and tries to make some sense of it, and - * stores our page contents and config storage - * and anything else that might need to be passed around - * before we spit the page out. - * - */ -class App { - - /// @TODO decide indending as a colorful mixure is ahead ... - public $module_loaded = false; - public $query_string; - public $config; - public $page; - public $profile; - public $profile_uid; - public $user; - public $cid; - public $contact; - public $contacts; - public $page_contact; - public $content; - public $data = array(); - public $error = false; - public $cmd; - public $argv; - public $argc; - public $module; - public $pager; - public $strings; - public $path; - public $hooks; - public $timezone; - public $interactive = true; - public $plugins; - public $apps = array(); - public $identities; - public $is_mobile = false; - public $is_tablet = false; - public $is_friendica_app; - public $performance = array(); - public $callstack = array(); - public $theme_info = array(); - public $backend = true; - - public $nav_sel; - - public $category; - - - // Allow themes to control internal parameters - // by changing App values in theme.php - - public $sourcename = ''; - public $videowidth = 425; - public $videoheight = 350; - public $force_max_items = 0; - public $theme_thread_allow = true; - public $theme_events_in_profile = true; - - /** - * @brief An array for all theme-controllable parameters - * - * Mostly unimplemented yet. Only options 'template_engine' and - * beyond are used. - */ - public $theme = array( - 'sourcename' => '', - 'videowidth' => 425, - 'videoheight' => 350, - 'force_max_items' => 0, - 'thread_allow' => true, - 'stylesheet' => '', - 'template_engine' => 'smarty3', - ); - - /** - * @brief An array of registered template engines ('name'=>'class name') - */ - public $template_engines = array(); - /** - * @brief An array of instanced template engines ('name'=>'instance') - */ - public $template_engine_instance = array(); - - public $process_id; - - private $ldelim = array( - 'internal' => '', - 'smarty3' => '{{' - ); - private $rdelim = array( - 'internal' => '', - 'smarty3' => '}}' - ); - - private $scheme; - private $hostname; - private $db; - - private $curl_code; - private $curl_content_type; - private $curl_headers; - - private $cached_profile_image; - private $cached_profile_picdate; - - private static $a; - - /** - * @brief App constructor. - */ - function __construct() { - - global $default_timezone; - - $hostname = ""; - - if (file_exists(".htpreconfig.php")) { - include ".htpreconfig.php"; - } - - $this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC'); - - date_default_timezone_set($this->timezone); - - $this->performance["start"] = microtime(true); - $this->performance["database"] = 0; - $this->performance["database_write"] = 0; - $this->performance["network"] = 0; - $this->performance["file"] = 0; - $this->performance["rendering"] = 0; - $this->performance["parser"] = 0; - $this->performance["marktime"] = 0; - $this->performance["markstart"] = microtime(true); - - $this->callstack["database"] = array(); - $this->callstack["database_write"] = array(); - $this->callstack["network"] = array(); - $this->callstack["file"] = array(); - $this->callstack["rendering"] = array(); - $this->callstack["parser"] = array(); - - $this->config = array(); - $this->page = array(); - $this->pager= array(); - - $this->query_string = ''; - - $this->process_id = uniqid("log", true); - - startup(); - - set_include_path( - get_include_path() . PATH_SEPARATOR - . 'include' . PATH_SEPARATOR - . 'library' . PATH_SEPARATOR - . 'library/langdet' . PATH_SEPARATOR - . '.' ); - - $this->scheme = 'http'; - - if ((x($_SERVER, 'HTTPS') && $_SERVER['HTTPS']) || - (x($_SERVER, 'HTTP_FORWARDED') && preg_match("/proto=https/", $_SERVER['HTTP_FORWARDED'])) || - (x($_SERVER, 'HTTP_X_FORWARDED_PROTO') && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || - (x($_SERVER, 'HTTP_X_FORWARDED_SSL') && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') || - (x($_SERVER, 'FRONT_END_HTTPS') && $_SERVER['FRONT_END_HTTPS'] == 'on') || - (x($_SERVER, 'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) // XXX: reasonable assumption, but isn't this hardcoding too much? - ) { - $this->scheme = 'https'; - } - - if (x($_SERVER, 'SERVER_NAME')) { - $this->hostname = $_SERVER['SERVER_NAME']; - - if (x($_SERVER, 'SERVER_PORT') && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) { - $this->hostname .= ':' . $_SERVER['SERVER_PORT']; - } - /* - * Figure out if we are running at the top of a domain - * or in a sub-directory and adjust accordingly - */ - - /// @TODO This kind of escaping breaks syntax-highlightning on CoolEdit (Midnight Commander) - $path = trim(dirname($_SERVER['SCRIPT_NAME']), '/\\'); - if (isset($path) && strlen($path) && ($path != $this->path)) { - $this->path = $path; - } - } - - if ($hostname != "") { - $this->hostname = $hostname; - } - - if (is_array($_SERVER["argv"]) && $_SERVER["argc"] > 1 && substr(end($_SERVER["argv"]), 0, 4) == "http" ) { - $this->set_baseurl(array_pop($_SERVER["argv"])); - $_SERVER["argc"] --; - } - - if ((x($_SERVER, 'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 9) === "pagename=") { - $this->query_string = substr($_SERVER['QUERY_STRING'], 9); - - // removing trailing / - maybe a nginx problem - $this->query_string = ltrim($this->query_string, '/'); - } elseif ((x($_SERVER, 'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 2) === "q=") { - $this->query_string = substr($_SERVER['QUERY_STRING'], 2); - - // removing trailing / - maybe a nginx problem - $this->query_string = ltrim($this->query_string, '/'); - } - - if (x($_GET, 'pagename')) { - $this->cmd = trim($_GET['pagename'], '/\\'); - } elseif (x($_GET, 'q')) { - $this->cmd = trim($_GET['q'], '/\\'); - } - - - // fix query_string - $this->query_string = str_replace($this->cmd . "&", $this->cmd . "?", $this->query_string); - - // unix style "homedir" - if (substr($this->cmd, 0, 1) === '~') { - $this->cmd = 'profile/' . substr($this->cmd, 1); - } - - // Diaspora style profile url - if (substr($this->cmd, 0, 2) === 'u/') { - $this->cmd = 'profile/' . substr($this->cmd, 2); - } - - - /* - * Break the URL path into C style argc/argv style arguments for our - * modules. Given "http://example.com/module/arg1/arg2", $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". - */ - - $this->argv = explode('/', $this->cmd); - $this->argc = count($this->argv); - if ((array_key_exists('0', $this->argv)) && strlen($this->argv[0])) { - $this->module = str_replace(".", "_", $this->argv[0]); - $this->module = str_replace("-", "_", $this->module); - } else { - $this->argc = 1; - $this->argv = array('home'); - $this->module = 'home'; - } - - /* - * See if there is any page number information, and initialise - * pagination - */ - - $this->pager['page'] = ((x($_GET, 'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1); - $this->pager['itemspage'] = 50; - $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; - - if ($this->pager['start'] < 0) { - $this->pager['start'] = 0; - } - $this->pager['total'] = 0; - - /* - * Detect mobile devices - */ - - $mobile_detect = new Mobile_Detect(); - $this->is_mobile = $mobile_detect->isMobile(); - $this->is_tablet = $mobile_detect->isTablet(); - - // Friendica-Client - $this->is_friendica_app = ($_SERVER['HTTP_USER_AGENT'] == "Apache-HttpClient/UNAVAILABLE (java 1.4)"); - - /* - * register template engines - */ - $dc = get_declared_classes(); - foreach ($dc as $k) { - if (in_array("ITemplateEngine", class_implements($k))){ - $this->register_template_engine($k); - } - } - - self::$a = $this; - - } - - public static function get_basepath() { - - $basepath = get_config("system", "basepath"); - - if ($basepath == "") { - $basepath = dirname(__FILE__); - } - - if ($basepath == "") { - $basepath = $_SERVER["DOCUMENT_ROOT"]; - } - - if ($basepath == "") { - $basepath = $_SERVER["PWD"]; - } - - return $basepath; - } - - function get_scheme() { - return $this->scheme; - } - - /** - * @brief Retrieves the Friendica instance base URL - * - * This function assembles the base URL from multiple parts: - * - Protocol is determined either by the request or a combination of - * system.ssl_policy and the $ssl parameter. - * - Host name is determined either by system.hostname or inferred from request - * - Path is inferred from SCRIPT_NAME - * - * Note: $ssl parameter value doesn't directly correlate with the resulting protocol - * - * @param bool $ssl Whether to append http or https under SSL_POLICY_SELFSIGN - * @return string Friendica server base URL - */ - function get_baseurl($ssl = false) { - - // Is the function called statically? - if (!(isset($this) && get_class($this) == __CLASS__)) { - return self::$a->get_baseurl($ssl); - } - - $scheme = $this->scheme; - - if (Config::get('system', 'ssl_policy') == SSL_POLICY_FULL) { - $scheme = 'https'; - } - - // Basically, we have $ssl = true on any links which can only be seen by a logged in user - // (and also the login link). Anything seen by an outsider will have it turned off. - - if (Config::get('system', 'ssl_policy') == SSL_POLICY_SELFSIGN) { - if ($ssl) { - $scheme = 'https'; - } else { - $scheme = 'http'; - } - } - - if (Config::get('config', 'hostname') != '') { - $this->hostname = Config::get('config', 'hostname'); - } - - return $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' ); - } - - /** - * @brief Initializes the baseurl components - * - * Clears the baseurl cache to prevent inconstistencies - * - * @param string $url - */ - function set_baseurl($url) { - $parsed = @parse_url($url); - - if ($parsed) { - $this->scheme = $parsed['scheme']; - - $hostname = $parsed['host']; - if (x($parsed, 'port')) { - $hostname .= ':' . $parsed['port']; - } - if (x($parsed, 'path')) { - $this->path = trim($parsed['path'], '\\/'); - } - - if (file_exists(".htpreconfig.php")) { - include ".htpreconfig.php"; - } - - if (get_config('config', 'hostname') != '') { - $this->hostname = get_config('config', 'hostname'); - } - - if (!isset($this->hostname) OR ($this->hostname == '')) { - $this->hostname = $hostname; - } - } - } - - function get_hostname() { - if (get_config('config', 'hostname') != "") { - $this->hostname = get_config('config', 'hostname'); - } - - return $this->hostname; - } - - function set_hostname($h) { - $this->hostname = $h; - } - - function set_path($p) { - $this->path = trim(trim($p), '/'); - } - - function get_path() { - return $this->path; - } - - function set_pager_total($n) { - $this->pager['total'] = intval($n); - } - - function set_pager_itemspage($n) { - $this->pager['itemspage'] = ((intval($n) > 0) ? intval($n) : 0); - $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; - } - - function set_pager_page($n) { - $this->pager['page'] = $n; - $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; - } - - function init_pagehead() { - $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 40000); - - // If the update is "deactivated" set it to the highest integer number (~24 days) - if ($interval < 0) { - $interval = 2147483647; - } - - if ($interval < 10000) { - $interval = 40000; - } - - // compose the page title from the sitename and the - // current module called - if (!$this->module == '') { - $this->page['title'] = $this->config['sitename'] . ' (' . $this->module . ')'; - } else { - $this->page['title'] = $this->config['sitename']; - } - - /* put the head template at the beginning of page['htmlhead'] - * since the code added by the modules frequently depends on it - * being first - */ - if (!isset($this->page['htmlhead'])) { - $this->page['htmlhead'] = ''; - } - - // If we're using Smarty, then doing replace_macros() will replace - // any unrecognized variables with a blank string. Since we delay - // replacing $stylesheet until later, we need to replace it now - // with another variable name - if ($this->theme['template_engine'] === 'smarty3') { - $stylesheet = $this->get_template_ldelim('smarty3') . '$stylesheet' . $this->get_template_rdelim('smarty3'); - } else { - $stylesheet = '$stylesheet'; - } - - $shortcut_icon = get_config("system", "shortcut_icon"); - if ($shortcut_icon == "") { - $shortcut_icon = "images/friendica-32.png"; - } - - $touch_icon = get_config("system", "touch_icon"); - if ($touch_icon == "") { - $touch_icon = "images/friendica-128.png"; - } - - // get data wich is needed for infinite scroll on the network page - $invinite_scroll = infinite_scroll_data($this->module); - - $tpl = get_markup_template('head.tpl'); - $this->page['htmlhead'] = replace_macros($tpl,array( - '$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!! - '$local_user' => local_user(), - '$generator' => 'Friendica' . ' ' . FRIENDICA_VERSION, - '$delitem' => t('Delete this item?'), - '$showmore' => t('show more'), - '$showfewer' => t('show fewer'), - '$update_interval' => $interval, - '$shortcut_icon' => $shortcut_icon, - '$touch_icon' => $touch_icon, - '$stylesheet' => $stylesheet, - '$infinite_scroll' => $invinite_scroll, - )) . $this->page['htmlhead']; - } - - function init_page_end() { - if (!isset($this->page['end'])) { - $this->page['end'] = ''; - } - $tpl = get_markup_template('end.tpl'); - $this->page['end'] = replace_macros($tpl,array( - '$baseurl' => $this->get_baseurl() // FIXME for z_path!!!! - )) . $this->page['end']; - } - - function set_curl_code($code) { - $this->curl_code = $code; - } - - function get_curl_code() { - return $this->curl_code; - } - - function set_curl_content_type($content_type) { - $this->curl_content_type = $content_type; - } - - function get_curl_content_type() { - return $this->curl_content_type; - } - - function set_curl_headers($headers) { - $this->curl_headers = $headers; - } - - function get_curl_headers() { - return $this->curl_headers; - } - - function get_cached_avatar_image($avatar_image){ - return $avatar_image; - } - - - /** - * @brief Removes the baseurl from an url. This avoids some mixed content problems. - * - * @param string $orig_url - * - * @return string The cleaned url - */ - function remove_baseurl($orig_url){ - - // Is the function called statically? - if (!(isset($this) && get_class($this) == __CLASS__)) { - return self::$a->remove_baseurl($orig_url); - } - - // Remove the hostname from the url if it is an internal link - $nurl = normalise_link($orig_url); - $base = normalise_link($this->get_baseurl()); - $url = str_replace($base."/", "", $nurl); - - // if it is an external link return the orignal value - if ($url == normalise_link($orig_url)) { - return $orig_url; - } else { - return $url; - } - } - - /** - * @brief Register template engine class - * - * If $name is "", is used class static property $class::$name - * - * @param string $class - * @param string $name - */ - function register_template_engine($class, $name = '') { - /// @TODO Really === and not just == ? - if ($name === "") { - $v = get_class_vars( $class ); - if (x($v,"name")) $name = $v['name']; - } - if ($name === "") { - echo "template engine $class cannot be registered without a name.\n"; - killme(); - } - $this->template_engines[$name] = $class; - } - - /** - * @brief Return template engine instance. - * - * If $name is not defined, return engine defined by theme, - * or default - * - * @param strin $name Template engine name - * @return object Template Engine instance - */ - function template_engine($name = '') { - /// @TODO really type-check included? - if ($name !== "") { - $template_engine = $name; - } else { - $template_engine = 'smarty3'; - if (x($this->theme, 'template_engine')) { - $template_engine = $this->theme['template_engine']; - } - } - - if (isset($this->template_engines[$template_engine])){ - if (isset($this->template_engine_instance[$template_engine])){ - return $this->template_engine_instance[$template_engine]; - } else { - $class = $this->template_engines[$template_engine]; - $obj = new $class; - $this->template_engine_instance[$template_engine] = $obj; - return $obj; - } - } - - echo "template engine $template_engine is not registered!\n"; killme(); - } - - /** - * @brief Returns the active template engine. - * - * @return string - */ - function get_template_engine() { - return $this->theme['template_engine']; - } - - function set_template_engine($engine = 'smarty3') { - $this->theme['template_engine'] = $engine; - } - - function get_template_ldelim($engine = 'smarty3') { - return $this->ldelim[$engine]; - } - - function get_template_rdelim($engine = 'smarty3') { - return $this->rdelim[$engine]; - } - - function save_timestamp($stamp, $value) { - if (!isset($this->config['system']['profiler']) || !$this->config['system']['profiler']) { - return; - } - - $duration = (float)(microtime(true)-$stamp); - - if (!isset($this->performance[$value])) { - // Prevent ugly E_NOTICE - $this->performance[$value] = 0; - } - - $this->performance[$value] += (float)$duration; - $this->performance["marktime"] += (float)$duration; - - $callstack = $this->callstack(); - - if (!isset($this->callstack[$value][$callstack])) { - // Prevent ugly E_NOTICE - $this->callstack[$value][$callstack] = 0; - } - - $this->callstack[$value][$callstack] += (float)$duration; - - } - - /** - * @brief Log active processes into the "process" table - */ - function start_process() { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1); - - $command = basename($trace[0]["file"]); - - $this->remove_inactive_processes(); - - q("START TRANSACTION"); - - $r = q("SELECT `pid` FROM `process` WHERE `pid` = %d", intval(getmypid())); - if (!dbm::is_result($r)) { - q("INSERT INTO `process` (`pid`,`command`,`created`) VALUES (%d, '%s', '%s')", - intval(getmypid()), - dbesc($command), - dbesc(datetime_convert())); - } - q("COMMIT"); - } - - /** - * @brief Remove inactive processes - */ - function remove_inactive_processes() { - q("START TRANSACTION"); - - $r = q("SELECT `pid` FROM `process`"); - if (dbm::is_result($r)) { - foreach ($r AS $process) { - if (!posix_kill($process["pid"], 0)) { - q("DELETE FROM `process` WHERE `pid` = %d", intval($process["pid"])); - } - } - } - q("COMMIT"); - } - - /** - * @brief Remove the active process from the "process" table - */ - function end_process() { - q("DELETE FROM `process` WHERE `pid` = %d", intval(getmypid())); - } - - /** - * @brief Returns a string with a callstack. Can be used for logging. - * - * @return string - */ - function callstack() { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 6); - - // We remove the first two items from the list since they contain data that we don't need. - array_shift($trace); - array_shift($trace); - - $callstack = array(); - foreach ($trace AS $func) { - $callstack[] = $func["function"]; - } - - return implode(", ", $callstack); - } - - function get_useragent() { - return - FRIENDICA_PLATFORM . " '" . - FRIENDICA_CODENAME . "' " . - FRIENDICA_VERSION . "-" . - DB_UPDATE_VERSION . "; " . - $this->get_baseurl(); - } - - function is_friendica_app() { - return $this->is_friendica_app; - } - - /** - * @brief Checks if the site is called via a backend process - * - * This isn't a perfect solution. But we need this check very early. - * So we cannot wait until the modules are loaded. - * - * @return bool Is it a known backend? - */ - function is_backend() { - static $backends = array(); - $backends[] = "_well_known"; - $backends[] = "api"; - $backends[] = "dfrn_notify"; - $backends[] = "fetch"; - $backends[] = "hcard"; - $backends[] = "hostxrd"; - $backends[] = "nodeinfo"; - $backends[] = "noscrape"; - $backends[] = "p"; - $backends[] = "poco"; - $backends[] = "post"; - $backends[] = "proxy"; - $backends[] = "pubsub"; - $backends[] = "pubsubhubbub"; - $backends[] = "receive"; - $backends[] = "rsd_xml"; - $backends[] = "salmon"; - $backends[] = "statistics_json"; - $backends[] = "xrd"; - - // Check if current module is in backend or backend flag is set - return (in_array($this->module, $backends) || $this->backend); - } - - /** - * @brief Checks if the maximum number of database processes is reached - * - * @return bool Is the limit reached? - */ - function max_processes_reached() { - - if ($this->is_backend()) { - $process = "backend"; - $max_processes = get_config('system', 'max_processes_backend'); - if (intval($max_processes) == 0) { - $max_processes = 5; - } - } else { - $process = "frontend"; - $max_processes = get_config('system', 'max_processes_frontend'); - if (intval($max_processes) == 0) { - $max_processes = 20; - } - } - - $processlist = dbm::processlist(); - if ($processlist["list"] != "") { - logger("Processcheck: Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG); - - if ($processlist["amount"] > $max_processes) { - logger("Processcheck: Maximum number of processes for ".$process." tasks (".$max_processes.") reached.", LOGGER_DEBUG); - return true; - } - } - return false; - } - - /** - * @brief Checks if the maximum load is reached - * - * @return bool Is the load reached? - */ - function maxload_reached() { - - if ($this->is_backend()) { - $process = "backend"; - $maxsysload = intval(get_config('system', 'maxloadavg')); - if ($maxsysload < 1) { - $maxsysload = 50; - } - } else { - $process = "frontend"; - $maxsysload = intval(get_config('system','maxloadavg_frontend')); - if ($maxsysload < 1) { - $maxsysload = 50; - } - } - - $load = current_load(); - if ($load) { - if (intval($load) > $maxsysload) { - logger('system: load '.$load.' for '.$process.' tasks ('.$maxsysload.') too high.'); - return true; - } - } - return false; - } - - function proc_run($args) { - - if (!function_exists("proc_open")) { - return; - } - - // If the last worker fork was less than 10 seconds before then don't fork another one. - // This should prevent the forking of masses of workers. - $cachekey = "app:proc_run:started"; - $result = Cache::get($cachekey); - - if (!is_null($result) AND (time() - $result) < 10) { - return; - } - - // Set the timestamp of the last proc_run - Cache::set($cachekey, time(), CACHE_MINUTE); - - array_unshift($args, ((x($this->config,'php_path')) && (strlen($this->config['php_path'])) ? $this->config['php_path'] : 'php')); - - // add baseurl to args. cli scripts can't construct it - $args[] = $this->get_baseurl(); - - for ($x = 0; $x < count($args); $x ++) { - $args[$x] = escapeshellarg($args[$x]); - } - - $cmdline = implode($args, " "); - - if (get_config('system', 'proc_windows')) { - $resource = proc_open('cmd /c start /b ' . $cmdline, array(), $foo, dirname(__FILE__)); - } else { - $resource = proc_open($cmdline . " &", array(), $foo, dirname(__FILE__)); - } - if (!is_resource($resource)) { - logger('We got no resource for command '.$cmdline, LOGGER_DEBUG); - return; - } - proc_close($resource); - } - - /** - * @brief Returns the system user that is executing the script - * - * This mostly returns something like "www-data". - * - * @return string system username - */ - static function systemuser() { - if (!function_exists('posix_getpwuid') OR !function_exists('posix_geteuid')) { - return ''; - } - - $processUser = posix_getpwuid(posix_geteuid()); - return $processUser['name']; - } - - /** - * @brief Checks if a given directory is usable for the system - * - * @return boolean the directory is usable - */ - static function directory_usable($directory) { - - if ($directory == '') { - logger("Directory is empty. This shouldn't happen.", LOGGER_DEBUG); - return false; - } - - if (!file_exists($directory)) { - logger('Path "'.$directory.'" does not exist for user '.self::systemuser(), LOGGER_DEBUG); - return false; - } - if (is_file($directory)) { - logger('Path "'.$directory.'" is a file for user '.self::systemuser(), LOGGER_DEBUG); - return false; - } - if (!is_dir($directory)) { - logger('Path "'.$directory.'" is not a directory for user '.self::systemuser(), LOGGER_DEBUG); - return false; - } - if (!is_writable($directory)) { - logger('Path "'.$directory.'" is not writable for user '.self::systemuser(), LOGGER_DEBUG); - return false; - } - return true; - } } /** @@ -1436,7 +499,6 @@ function get_app() { return $a; } - /** * @brief Multi-purpose function to check variable state. * @@ -1451,7 +513,7 @@ function get_app() { * * @return bool|int */ -function x($s,$k = NULL) { +function x($s, $k = NULL) { if ($k != NULL) { if ((is_array($s)) && (array_key_exists($k, $s))) { if ($s[$k]) { @@ -1471,7 +533,6 @@ function x($s,$k = NULL) { } } - /** * @brief Called from db initialisation if db is dead. */ @@ -1481,7 +542,6 @@ function system_unavailable() { killme(); } - function clean_urls() { $a = get_app(); return true; @@ -1490,7 +550,7 @@ function clean_urls() { function z_path() { $base = App::get_baseurl(); - if (! clean_urls()) { + if (!clean_urls()) { $base .= '/?q='; } @@ -1517,7 +577,7 @@ function z_root() { * @return string */ function absurl($path) { - if (strpos($path,'/') === 0) { + if (strpos($path, '/') === 0) { return z_path() . $path; } return $path; @@ -1534,25 +594,23 @@ function is_ajax() { function check_db() { - $build = get_config('system','build'); - if (! x($build)) { - set_config('system','build',DB_UPDATE_VERSION); + $build = get_config('system', 'build'); + if (!x($build)) { + set_config('system', 'build', DB_UPDATE_VERSION); $build = DB_UPDATE_VERSION; } if ($build != DB_UPDATE_VERSION) { proc_run(PRIORITY_CRITICAL, 'include/dbupdate.php'); } - } - /** * Sets the base url for use in cmdline programs which don't have * $_SERVER variables */ function check_url(App $a) { - $url = get_config('system','url'); + $url = get_config('system', 'url'); // if the url isn't set or the stored url is radically different // than the currently visited url, store the current value accordingly. @@ -1560,24 +618,23 @@ function check_url(App $a) { // and www.example.com vs example.com. // We will only change the url to an ip address if there is no existing setting - if (! x($url)) { - $url = set_config('system','url',App::get_baseurl()); + if (!x($url)) { + $url = set_config('system', 'url', App::get_baseurl()); } - if ((! link_compare($url,App::get_baseurl())) && (! preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$a->get_hostname))) { - $url = set_config('system','url',App::get_baseurl()); + if ((!link_compare($url, App::get_baseurl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname))) { + $url = set_config('system', 'url', App::get_baseurl()); } return; } - /** * @brief Automatic database updates */ function update_db(App $a) { - $build = get_config('system','build'); - if (! x($build)) { - $build = set_config('system','build',DB_UPDATE_VERSION); + $build = get_config('system', 'build'); + if (!x($build)) { + $build = set_config('system', 'build', DB_UPDATE_VERSION); } if ($build != DB_UPDATE_VERSION) { @@ -1588,7 +645,6 @@ function update_db(App $a) { // We're reporting a different version than what is currently installed. // Run any existing update scripts to bring the database up to current. - // make sure that boot.php and update.php are the same release, we might be // updating right this very second and the correct version of the update.php // file may not be here yet. This can happen on a very busy site. @@ -1596,12 +652,12 @@ function update_db(App $a) { if (DB_UPDATE_VERSION == UPDATE_VERSION) { // Compare the current structure with the defined structure - $t = get_config('database','dbupdate_'.DB_UPDATE_VERSION); + $t = get_config('database', 'dbupdate_' . DB_UPDATE_VERSION); if ($t !== false) { return; } - set_config('database','dbupdate_'.DB_UPDATE_VERSION, time()); + set_config('database', 'dbupdate_' . DB_UPDATE_VERSION, time()); // run old update routine (wich could modify the schema and // conflits with new routine) @@ -1625,7 +681,7 @@ function update_db(App $a) { ); return; } else { - set_config('database','dbupdate_'.DB_UPDATE_VERSION, 'success'); + set_config('database', 'dbupdate_' . DB_UPDATE_VERSION, 'success'); } // run any left update_nnnn functions in update.php @@ -1649,15 +705,14 @@ function run_update_function($x) { // We want exactly one process to run the update command. // So store the fact that we're taking responsibility // after first checking to see if somebody else already has. - // If the update fails or times-out completely you may need to // delete the config entry to try again. - $t = get_config('database','update_' . $x); + $t = get_config('database', 'update_' . $x); if ($t !== false) { return false; } - set_config('database','update_' . $x, time()); + set_config('database', 'update_' . $x, time()); // call the specific update @@ -1672,13 +727,13 @@ function run_update_function($x) { ); return false; } else { - set_config('database','update_' . $x, 'success'); - set_config('system','build', $x + 1); + set_config('database', 'update_' . $x, 'success'); + set_config('system', 'build', $x + 1); return true; } } else { - set_config('database','update_' . $x, 'success'); - set_config('system','build', $x + 1); + set_config('database', 'update_' . $x, 'success'); + set_config('system', 'build', $x + 1); return true; } return true; @@ -1707,11 +762,11 @@ function check_plugins(App $a) { $installed = array(); } - $plugins = get_config('system','addon'); + $plugins = get_config('system', 'addon'); $plugins_arr = array(); if ($plugins) { - $plugins_arr = explode(',',str_replace(' ', '',$plugins)); + $plugins_arr = explode(',', str_replace(' ', '', $plugins)); } $a->plugins = $plugins_arr; @@ -1720,7 +775,7 @@ function check_plugins(App $a) { if (count($installed)) { foreach ($installed as $i) { - if (! in_array($i['name'],$plugins_arr)) { + if (!in_array($i['name'], $plugins_arr)) { uninstall_plugin($i['name']); } else { $installed_arr[] = $i['name']; @@ -1730,20 +785,18 @@ function check_plugins(App $a) { if (count($plugins_arr)) { foreach ($plugins_arr as $p) { - if (! in_array($p,$installed_arr)) { + if (!in_array($p, $installed_arr)) { install_plugin($p); } } } - load_hooks(); return; } -function get_guid($size=16, $prefix = "") { - +function get_guid($size = 16, $prefix = "") { if ($prefix == "") { $a = get_app(); $prefix = hash("crc32", $a->get_hostname()); @@ -1776,7 +829,7 @@ function get_guid($size=16, $prefix = "") { * @hooks 'login_hook' * string $o */ -function login($register = false, $hiddens=false) { +function login($register = false, $hiddens = false) { $a = get_app(); $o = ""; $reg = false; @@ -1787,14 +840,14 @@ function login($register = false, $hiddens=false) { ); } - $noid = get_config('system','no_openid'); + $noid = get_config('system', 'no_openid'); $dest_url = $a->query_string; if (local_user()) { $tpl = get_markup_template("logout.tpl"); } else { - $a->page['htmlhead'] .= replace_macros(get_markup_template("login_head.tpl"),array( + $a->page['htmlhead'] .= replace_macros(get_markup_template("login_head.tpl"), array( '$baseurl' => $a->get_baseurl(true) )); @@ -1828,10 +881,9 @@ function login($register = false, $hiddens=false) { '$privacytitle' => t('Website Privacy Policy'), '$privacylink' => t('privacy policy'), - )); - call_hooks('login_hook',$o); + call_hooks('login_hook', $o); return $o; } @@ -1840,7 +892,6 @@ function login($register = false, $hiddens=false) { * @brief Used to end the current process, after saving session state. */ function killme() { - if (!get_app()->is_backend()) { session_write_close(); } @@ -1853,14 +904,13 @@ function killme() { */ function goaway($s) { if (!strstr(normalise_link($s), "http://")) { - $s = App::get_baseurl()."/".$s; + $s = App::get_baseurl() . "/" . $s; } header("Location: $s"); killme(); } - /** * @brief Returns the user id of locally logged in user or false. * @@ -1902,7 +952,7 @@ function public_contact() { * @return int|bool visitor_id or false */ function remote_user() { - if ((x($_SESSION,'authenticated')) && (x($_SESSION,'visitor_id'))) { + if ((x($_SESSION, 'authenticated')) && (x($_SESSION, 'visitor_id'))) { return intval($_SESSION['visitor_id']); } return false; @@ -1917,7 +967,7 @@ function remote_user() { */ function notice($s) { $a = get_app(); - if (! x($_SESSION,'sysmsg')) { + if (!x($_SESSION, 'sysmsg')) { $_SESSION['sysmsg'] = array(); } if ($a->interactive) { @@ -1935,11 +985,11 @@ function notice($s) { function info($s) { $a = get_app(); - if (local_user() AND get_pconfig(local_user(),'system','ignore_info')) { + if (local_user() AND get_pconfig(local_user(), 'system', 'ignore_info')) { return; } - if (! x($_SESSION,'sysmsg_info')) { + if (!x($_SESSION, 'sysmsg_info')) { $_SESSION['sysmsg_info'] = array(); } if ($a->interactive) { @@ -1947,7 +997,6 @@ function info($s) { } } - /** * @brief Wrapper around config to limit the text length of an incoming message * @@ -1955,12 +1004,12 @@ function info($s) { */ function get_max_import_size() { $a = get_app(); - return ((x($a->config,'max_import_size')) ? $a->config['max_import_size'] : 0 ); + return ((x($a->config, 'max_import_size')) ? $a->config['max_import_size'] : 0 ); } /** * @brief Wrap calls to proc_close(proc_open()) and call hook - * so plugins can take part in process :) + * so plugins can take part in process :) * * @param (integer|array) priority or parameter array, $cmd atrings are deprecated and are ignored * @@ -1971,9 +1020,9 @@ function get_max_import_size() { * @note $cmd and string args are surrounded with "" * * @hooks 'proc_run' - * array $arr + * array $arr */ -function proc_run($cmd){ +function proc_run($cmd) { $a = get_app(); @@ -2006,7 +1055,7 @@ function proc_run($cmd){ $arr = array('args' => $args, 'run_cmd' => true); call_hooks("proc_run", $arr); - if (!$arr['run_cmd'] OR !count($args)) { + if (!$arr['run_cmd'] OR ! count($args)) { return; } @@ -2028,15 +1077,10 @@ function proc_run($cmd){ array_shift($argv); $parameters = json_encode($argv); - $found = q("SELECT `id` FROM `workerqueue` WHERE `parameter` = '%s'", - dbesc($parameters)); + $found = dba::select('workerqueue', array('id'), array('parameter' => $parameters), array('limit' => 1)); if (!dbm::is_result($found)) { - q("INSERT INTO `workerqueue` (`parameter`, `created`, `priority`) - VALUES ('%s', '%s', %d)", - dbesc($parameters), - dbesc(datetime_convert()), - intval($priority)); + dba::insert('workerqueue', array('parameter' => $parameters, 'created' => datetime_convert(), 'priority' => $priority)); } // Should we quit and wait for the poller to be called as a cronjob? @@ -2065,7 +1109,7 @@ function proc_run($cmd){ $a->proc_run($args); } -function current_theme(){ +function current_theme() { $app_base_themes = array('duepuntozero', 'dispy', 'quattro'); $a = get_app(); @@ -2087,7 +1131,7 @@ function current_theme(){ // This works only if the user is on the same server if ($page_theme && local_user() && (local_user() != $a->profile_uid)) { - if (get_pconfig(local_user(),'system','always_my_theme')) { + if (get_pconfig(local_user(), 'system', 'always_my_theme')) { $page_theme = null; } } @@ -2097,7 +1141,7 @@ function current_theme(){ $is_mobile = $a->is_mobile || $a->is_tablet; $standard_system_theme = Config::get('system', 'theme', ''); - $standard_theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $standard_system_theme); + $standard_theme_name = ((isset($_SESSION) && x($_SESSION, 'theme')) ? $_SESSION['theme'] : $standard_system_theme); if ($is_mobile) { if (isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) { @@ -2108,7 +1152,7 @@ function current_theme(){ if ($system_theme == '') { $system_theme = $standard_system_theme; } - $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); + $theme_name = ((isset($_SESSION) && x($_SESSION, 'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); if ($theme_name === '---') { // user has selected to have the mobile theme be the same as the normal one @@ -2130,21 +1174,21 @@ function current_theme(){ } if ($theme_name && - (file_exists('view/theme/' . $theme_name . '/style.css') || - file_exists('view/theme/' . $theme_name . '/style.php'))) { + (file_exists('view/theme/' . $theme_name . '/style.css') || + file_exists('view/theme/' . $theme_name . '/style.php'))) { return($theme_name); } foreach ($app_base_themes as $t) { if (file_exists('view/theme/' . $t . '/style.css') || - file_exists('view/theme/' . $t . '/style.php')) { + file_exists('view/theme/' . $t . '/style.php')) { return($t); } } - $fallback = array_merge(glob('view/theme/*/style.css'),glob('view/theme/*/style.php')); + $fallback = array_merge(glob('view/theme/*/style.css'), glob('view/theme/*/style.php')); if (count($fallback)) { - return (str_replace('view/theme/','', substr($fallback[0],0,-10))); + return (str_replace('view/theme/', '', substr($fallback[0], 0, -10))); } /// @TODO No final return statement? @@ -2164,13 +1208,13 @@ function current_theme_url() { $opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : ''); if (file_exists('view/theme/' . $t . '/style.php')) { - return('view/theme/'.$t.'/style.pcss'.$opts); + return('view/theme/' . $t . '/style.pcss' . $opts); } - return('view/theme/'.$t.'/style.css'); + return('view/theme/' . $t . '/style.css'); } -function feed_birthday($uid,$tz) { +function feed_birthday($uid, $tz) { /** * @@ -2190,11 +1234,9 @@ function feed_birthday($uid,$tz) { * 6:00PM the day before, but that will correspond to midnight to the birthday person. * */ - - $birthday = ''; - if (! strlen($tz)) { + if (!strlen($tz)) { $tz = 'UTC'; } @@ -2203,16 +1245,16 @@ function feed_birthday($uid,$tz) { ); if (dbm::is_result($p)) { - $tmp_dob = substr($p[0]['dob'],5); + $tmp_dob = substr($p[0]['dob'], 5); if (intval($tmp_dob)) { - $y = datetime_convert($tz,$tz,'now','Y'); + $y = datetime_convert($tz, $tz, 'now', 'Y'); $bd = $y . '-' . $tmp_dob . ' 00:00'; $t_dob = strtotime($bd); - $now = strtotime(datetime_convert($tz,$tz,'now')); + $now = strtotime(datetime_convert($tz, $tz, 'now')); if ($t_dob < $now) { $bd = $y + 1 . '-' . $tmp_dob . ' 00:00'; } - $birthday = datetime_convert($tz,'UTC',$bd,ATOM_TIME); + $birthday = datetime_convert($tz, 'UTC', $bd, ATOM_TIME); } } @@ -2230,7 +1272,7 @@ function is_site_admin() { $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email'])); //if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email'])) - if (local_user() && x($a->user,'email') && x($a->config,'admin_email') && in_array($a->user['email'], $adminlist)) { + if (local_user() && x($a->user, 'email') && x($a->config, 'admin_email') && in_array($a->user['email'], $adminlist)) { return true; } return false; @@ -2252,7 +1294,7 @@ function build_querystring($params, $name = null) { if ($name == null) { $ret .= build_querystring($val, $key); } else { - $ret .= build_querystring($val, $name."[$key]"); + $ret .= build_querystring($val, $name . "[$key]"); } } else { $val = urlencode($val); @@ -2300,10 +1342,10 @@ function explode_querystring($query) { } /** -* Returns the complete URL of the current page, e.g.: http(s)://something.com/network -* -* Taken from http://webcheatsheet.com/php/get_current_page_url.php -*/ + * Returns the complete URL of the current page, e.g.: http(s)://something.com/network + * + * Taken from http://webcheatsheet.com/php/get_current_page_url.php + */ function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") { @@ -2313,9 +1355,9 @@ function curPageURL() { $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") { - $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; + $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { - $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; + $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } return $pageURL; } @@ -2324,7 +1366,7 @@ function random_digits($digits) { $rn = ''; for ($i = 0; $i < $digits; $i++) { /// @TODO rand() is different to mt_rand() and maybe lesser "random" - $rn .= rand(0,9); + $rn .= rand(0, 9); } return $rn; } @@ -2342,7 +1384,7 @@ function get_server() { function get_cachefile($file, $writemode = true) { $cache = get_itemcachepath(); - if ((! $cache) || (! is_dir($cache))) { + if ((!$cache) || (!is_dir($cache))) { return(""); } @@ -2375,15 +1417,15 @@ function clear_cache($basepath = "", $path = "") { return; } - $cachetime = (int)get_config('system','itemcache_duration'); + $cachetime = (int) get_config('system', 'itemcache_duration'); if ($cachetime == 0) { $cachetime = 86400; } - if (is_writable($path)){ + if (is_writable($path)) { if ($dh = opendir($path)) { while (($file = readdir($dh)) !== false) { - $fullpath = $path."/".$file; + $fullpath = $path . "/" . $file; if ((filetype($fullpath) == "dir") and ($file != ".") and ($file != "..")) { clear_cache($basepath, $fullpath); } @@ -2398,12 +1440,12 @@ function clear_cache($basepath = "", $path = "") { function get_itemcachepath() { // Checking, if the cache is deactivated - $cachetime = (int)get_config('system','itemcache_duration'); + $cachetime = (int) get_config('system', 'itemcache_duration'); if ($cachetime < 0) { return ""; } - $itemcache = get_config('system','itemcache'); + $itemcache = get_config('system', 'itemcache'); if (($itemcache != "") AND App::directory_usable($itemcache)) { return $itemcache; } @@ -2411,7 +1453,7 @@ function get_itemcachepath() { $temppath = get_temppath(); if ($temppath != "") { - $itemcache = $temppath."/itemcache"; + $itemcache = $temppath . "/itemcache"; if (!file_exists($itemcache) && !is_dir($itemcache)) { mkdir($itemcache); } @@ -2430,7 +1472,7 @@ function get_itemcachepath() { * @return string Spool path */ function get_spoolpath() { - $spoolpath = get_config('system','spoolpath'); + $spoolpath = get_config('system', 'spoolpath'); if (($spoolpath != "") AND App::directory_usable($spoolpath)) { // We have a spool path and it is usable return $spoolpath; @@ -2441,7 +1483,7 @@ function get_spoolpath() { if ($temppath != "") { // To avoid any interferences with other systems we create our own directory - $spoolpath = $temppath."/spool"; + $spoolpath = $temppath . "/spool"; if (!is_dir($spoolpath)) { mkdir($spoolpath); } @@ -2477,7 +1519,7 @@ function get_temppath() { // Check if it is usable if (($temppath != "") AND App::directory_usable($temppath)) { // To avoid any interferences with other systems we create our own directory - $new_temppath = $temppath."/".$a->get_hostname(); + $new_temppath = $temppath . "/" . $a->get_hostname(); if (!is_dir($new_temppath)) { /// @TODO There is a mkdir()+chmod() upwards, maybe generalize this (+ configurable) into a function/method? mkdir($new_temppath); @@ -2523,7 +1565,7 @@ function validate_include(&$file) { return false; } - $file = str_replace(getcwd()."/", "", $file, $count); + $file = str_replace(getcwd() . "/", "", $file, $count); if ($count != 1) { return false; } @@ -2575,7 +1617,7 @@ function argc() { * @return string Value of the argv key */ function argv($x) { - if (array_key_exists($x,get_app()->argv)) { + if (array_key_exists($x, get_app()->argv)) { return get_app()->argv[$x]; } @@ -2592,12 +1634,12 @@ function argv($x) { * * @param string $module The name of the module (e.g. "network") * @return array Of infinite scroll data - * 'pageno' => $pageno The number of the actual page - * 'reload_uri' => $reload_uri The URI of the content we have to load + * 'pageno' => $pageno The number of the actual page + * 'reload_uri' => $reload_uri The URI of the content we have to load */ function infinite_scroll_data($module) { - if (get_pconfig(local_user(),'system','infinite_scroll') + if (get_pconfig(local_user(), 'system', 'infinite_scroll') AND ($module == "network") AND ($_GET["mode"] != "minimal")) { // get the page number @@ -2616,7 +1658,7 @@ function infinite_scroll_data($module) { } } - if (($a->page_offset != "") AND !strstr($reload_uri, "&offset=")) { + if (($a->page_offset != "") AND ! strstr($reload_uri, "&offset=")) { $reload_uri .= "&offset=" . urlencode($a->page_offset); } diff --git a/composer.lock b/composer.lock index b46614f6e3..f057d0cec7 100644 --- a/composer.lock +++ b/composer.lock @@ -226,10 +226,10 @@ }, { "name": "pear-pear.php.net/PEAR", - "version": "1.10.3", + "version": "1.10.4", "dist": { "type": "file", - "url": "https://pear.php.net/get/PEAR-1.10.3.tgz", + "url": "https://pear.php.net/get/PEAR-1.10.4.tgz", "reference": null, "shasum": null }, @@ -247,7 +247,7 @@ "pear-pear.php.net/pear_frontend_web": "<=0.4.0.0" }, "replace": { - "pear-pear/pear": "== 1.10.3.0" + "pear-pear/pear": "== 1.10.4.0" }, "type": "pear-library", "autoload": { diff --git a/database.sql b/database.sql index 69da511b03..73547b3058 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 3.5.2-dev (Asparagus) --- DB_UPDATE_VERSION 1219 +-- DB_UPDATE_VERSION 1221 -- ------------------------------------------ @@ -174,13 +174,13 @@ CREATE TABLE IF NOT EXISTS `contact` ( `fetch_further_information` tinyint(1) NOT NULL DEFAULT 0, `ffi_keyword_blacklist` text, PRIMARY KEY(`id`), - INDEX `uid_name` (`uid`,`name`), + INDEX `uid_name` (`uid`,`name`(190)), INDEX `self_uid` (`self`,`uid`), INDEX `alias_uid` (`alias`(32),`uid`), INDEX `pending_uid` (`pending`,`uid`), INDEX `blocked_uid` (`blocked`,`uid`), - INDEX `uid_rel_network_poll` (`uid`,`rel`,`network`,`poll`(64),`archive`), - INDEX `uid_network_batch` (`uid`,`network`,`batch`(64)), + INDEX `uid_rel_network_poll` (`uid`,`rel`,`network`(4),`poll`(64),`archive`), + INDEX `uid_network_batch` (`uid`,`network`(4),`batch`(64)), INDEX `addr_uid` (`addr`(32),`uid`), INDEX `nurl_uid` (`nurl`(32),`uid`), INDEX `nick_uid` (`nick`(32),`uid`), @@ -204,6 +204,21 @@ CREATE TABLE IF NOT EXISTS `conv` ( INDEX `uid` (`uid`) ) DEFAULT COLLATE utf8mb4_general_ci; +-- +-- TABLE conversation +-- +CREATE TABLE IF NOT EXISTS `conversation` ( + `item-uri` varbinary(255) NOT NULL, + `reply-to-uri` varbinary(255) NOT NULL DEFAULT '', + `conversation-uri` varbinary(255) NOT NULL DEFAULT '', + `conversation-href` varbinary(255) NOT NULL DEFAULT '', + `protocol` tinyint(1) unsigned NOT NULL DEFAULT 0, + `source` mediumtext, + `received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + PRIMARY KEY(`item-uri`), + INDEX `conversation-uri` (`conversation-uri`) +) DEFAULT COLLATE utf8mb4_general_ci; + -- -- TABLE event -- @@ -344,7 +359,7 @@ CREATE TABLE IF NOT EXISTS `gcontact` ( INDEX `name` (`name`(64)), INDEX `nick` (`nick`(32)), INDEX `addr` (`addr`(64)), - INDEX `hide_network_updated` (`hide`,`network`,`updated`), + INDEX `hide_network_updated` (`hide`,`network`(4),`updated`), INDEX `updated` (`updated`) ) DEFAULT COLLATE utf8mb4_general_ci; @@ -523,22 +538,22 @@ CREATE TABLE IF NOT EXISTS `item` ( INDEX `uid_contactid_id` (`uid`,`contact-id`,`id`), INDEX `uid_created` (`uid`,`created`), INDEX `uid_unseen_contactid` (`uid`,`unseen`,`contact-id`), - INDEX `uid_network_received` (`uid`,`network`,`received`), - INDEX `uid_network_commented` (`uid`,`network`,`commented`), - INDEX `uid_thrparent` (`uid`,`thr-parent`), - INDEX `uid_parenturi` (`uid`,`parent-uri`), + INDEX `uid_network_received` (`uid`,`network`(4),`received`), + INDEX `uid_network_commented` (`uid`,`network`(4),`commented`), + INDEX `uid_thrparent` (`uid`,`thr-parent`(190)), + INDEX `uid_parenturi` (`uid`,`parent-uri`(190)), INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`), INDEX `authorid_created` (`author-id`,`created`), - INDEX `uid_uri` (`uid`,`uri`), + INDEX `uid_uri` (`uid`,`uri`(190)), INDEX `resource-id` (`resource-id`), INDEX `contactid_allowcid_allowpid_denycid_denygid` (`contact-id`,`allow_cid`(10),`allow_gid`(10),`deny_cid`(10),`deny_gid`(10)), - INDEX `uid_type_changed` (`uid`,`type`,`changed`), - INDEX `contactid_verb` (`contact-id`,`verb`), + INDEX `uid_type_changed` (`uid`,`type`(190),`changed`), + INDEX `contactid_verb` (`contact-id`,`verb`(190)), INDEX `deleted_changed` (`deleted`,`changed`), INDEX `uid_wall_changed` (`uid`,`wall`,`changed`), INDEX `uid_eventid` (`uid`,`event-id`), - INDEX `uid_authorlink` (`uid`,`author-link`), - INDEX `uid_ownerlink` (`uid`,`owner-link`) + INDEX `uid_authorlink` (`uid`,`author-link`(190)), + INDEX `uid_ownerlink` (`uid`,`owner-link`(190)) ) DEFAULT COLLATE utf8mb4_general_ci; -- @@ -652,7 +667,7 @@ CREATE TABLE IF NOT EXISTS `notify` ( INDEX `hash_uid` (`hash`,`uid`), INDEX `seen_uid_date` (`seen`,`uid`,`date`), INDEX `uid_date` (`uid`,`date`), - INDEX `uid_type_link` (`uid`,`type`,`link`) + INDEX `uid_type_link` (`uid`,`type`,`link`(190)) ) DEFAULT COLLATE utf8mb4_general_ci; -- @@ -963,7 +978,7 @@ CREATE TABLE IF NOT EXISTS `term` ( `aid` int(10) unsigned NOT NULL DEFAULT 0, `uid` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`tid`), - INDEX `oid_otype_type_term` (`oid`,`otype`,`type`,`term`), + INDEX `oid_otype_type_term` (`oid`,`otype`,`type`,`term`(32)), INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`(32),`global`,`created`), INDEX `uid_otype_type_url` (`uid`,`otype`,`type`,`url`(64)), INDEX `guid` (`guid`(64)) diff --git a/doc/Composer.md b/doc/Composer.md index 8310baf3f0..02ce61639c 100644 --- a/doc/Composer.md +++ b/doc/Composer.md @@ -113,3 +113,8 @@ For Composer, this would be: ```` $> COMPOSER_HOME=/var/tmp/composer sudo -u [web user] util/composer.phar [mode] ```` + +## Related + +* [Class autoloading](help/autoloader) +* [How To Move Classes to `src`](help/Developer-How-To-Move-Classes-to-src) diff --git a/doc/Developer-How-To-Move-Classes-to-src.md b/doc/Developer-How-To-Move-Classes-to-src.md new file mode 100644 index 0000000000..25eb393721 --- /dev/null +++ b/doc/Developer-How-To-Move-Classes-to-src.md @@ -0,0 +1,108 @@ +How To Move Classes to `src` +============== + +* [Home](help) + * [Developer Intro](help/Developers-Intro) + +Friendica uses [Composer](help/Composer) to manage autoloading. +This means that all the PHP class files moved to the `src` folder will be [automatically included](help/autoloader) when the class it defines is first used in the flow. +This is an improvement over the current `require` usage since files will be included on an actual usage basis instead of the presence of a `require` call. + +However, there are a significant number of items to check when moving a class file from the `include` folder to the `src` folder, and this page is there to list them. + +## Decide the namespace + +This isn't the most technical decision of them all, but it has long lasting consequences as it will be the name that will be used to refer to this class from now on. +There is [a shared Ethercalc sheet](https://ethercalc.org/friendica_classes) to suggest namespace/class names that lists all the already moved class files for inspiration. + +A few pointers though: +* `Friendica` is the base namespace for all classes in the `src` folder +* Namespaces match the directory structure, with `Friendica` namespace being the base `src` directory. The `Config` class set in the `Friendica\Core` namespace is expected to be found at `src/Core/Config.php`. +* Namespaces can help group classes with a similar purpose or relevant to a particular feature + +When you're done deciding the namespace, it's time to use it. +Let's say we choose `Friendica\Core` for the `Config` class. + +## Use the namespace + +To declare the namespace, the file `src/Core/Config.php` must start with the following statement: + +````php +namespace Friendica\Core; +```` + +From now on, the `Config` class can be referred to as `Friendica\Core\Config`, however it isn't very practical, especially when the class was previously used as `Config`. +Thankfully, PHP provides namespace shortcuts through `use`. + +This language construct just provides a different naming scheme for a namespace or a class, but doesn't trigger the autoload mechanism on its own. +Here are the different ways you can use `use`: + +````php +// No use +$config = new Friendica\Core\Config(); +```` +````php +// Namespace shortcut +use Friendica\Core; + +$config = new Core\Config(); +```` +````php +// Class name shortcut +use Friendica\Core\Config; + +$config = new Config(); +```` +````php +// Aliasing +use Friendica\Core\Config as Cfg; + +$config = new Cfg(); +```` + +Whatever the style chosen, a repository-wide search has to be done to find all the class name usage and either use the fully-qualified class name (including the namespace) or add a `use` statement at the start of each relevant file. + +## Escape non-namespace classes + +The class file you just moved is now in the `Friendica` namespace, but it probably isn't the case for all the classes referenced in this file. +Since we added a `namespace Friendica\Core;` to the file, all the class names still declared in `include` will be implicitly understood as `Friendica\Core\ClassName`, which is rarely what we expect. + +To avoid `Class Friendica\Core\ClassName not found` errors, all the `include`-declared class names have to be prepended with a `\`, it tells the autoloader not to look for the class in the namespace but in the global space where non-namespaced classes are set. +If there are only a handful of references to a single non-namespaced class, just prepending `\` is enough. However, if there are many instance, we can use `use` again. + +````php +namespace Friendica\Core; +... +if (\dbm::is_result($r)) { + ... +} +```` +````php +namespace Friendica\Core; + +use \dbm; + +if (dbm::is_result($r)) { + ... +} +```` + +## Remove any useless `require` + +Now that you successfully moved your class to the autoloaded `src` folder, there's no need to include this file anywhere in the app ever again. +Please remove all the `require_once` mentions of the former file, as they will provoke a Fatal Error even if the class isn't used. + +## Miscellaneous tips + +When you are done with moving the class, please run `php util/typo.php` from the Friendica base directory to check for obvious mistakes. +Howevever, this tool isn't bullet-proof, and a staging install of Friendica is recommended to test your class move without impairing your production server if you host one. + +Most of Friendica processes are run in the background, so make sure to turn on your debug log to check for errors that wouldn't show up while simply browsing Friendica. + +Check the class file for any magic constant `__FILE__` or `__DIR__`, as their value changed since you moved the class in the file tree. +Most of the time it's used for debugging purposes but there can be instances where it's used to create cache folders for example. + +## Related + +* [Class autoloading](help/autoloader) +* [Using Composer](help/Composer) \ No newline at end of file diff --git a/doc/Developers-Intro.md b/doc/Developers-Intro.md index 5568afeb5d..3cda8ab466 100644 --- a/doc/Developers-Intro.md +++ b/doc/Developers-Intro.md @@ -52,7 +52,9 @@ Friendica uses [Composer](https://getcomposer.org) to manage dependencies librar It's a command-line tool that downloads required libraries into the `vendor` folder and makes any namespaced class in `src` available through the whole application through `boot.php`. +* [Class autoloading](help/autoloader) * [Using Composer](help/Composer) +* [How To Move Classes to `src`](help/Developer-How-To-Move-Classes-to-src) ###Coding standards diff --git a/doc/Home.md b/doc/Home.md index 5490d171f8..4cecec44e3 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -36,21 +36,25 @@ Friendica Documentation and Resources **Developer Manual** -* [Where to get started?](help/Developers-Intro) -* [Help on Github](help/Github) -* [Help on Vagrant](help/Vagrant) -* [How to translate Friendica](help/translations) -* [Bugs and Issues](help/Bugs-and-Issues) -* [Plugin Development](help/Plugins) -* [Theme Development](help/themes) -* [Smarty 3 Templates](help/smarty3-templates) -* [Protocol Documentation](help/Protocol) -* [Database schema documantation](help/database) -* [Class Autoloading](help/autoloader) -* [Using Composer](help/Composer) -* [Code - Reference(Doxygen generated - sets cookies)](doc/html/) -* [Twitter/GNU Social API Functions](help/api) - +* [Get started](help/Developers-Intro) +* Set up development environment + * [Help on Github](help/Github) + * [Help on Vagrant](help/Vagrant) + * [Bugs and Issues](help/Bugs-and-Issues) +* Code structure + * [Plugin Development](help/Plugins) + * [Theme Development](help/themes) + * [Smarty 3 Templates](help/smarty3-templates) +* How To + * [Translate Friendica](help/translations) + * [Use Composer](help/Composer) + * [Move classes to `src`](help/Developer-How-To-Move-Classes-to-src) +* Reference + * [Twitter/GNU Social API Functions](help/api) + * [Code (Doxygen generated - sets cookies)](doc/html/) + * [Protocol Documentation](help/Protocol) + * [Database schema documantation](help/database) + * [Class Autoloading](help/autoloader) **External Resources** diff --git a/doc/Install.md b/doc/Install.md index b817339bb0..a8ea2c0503 100644 --- a/doc/Install.md +++ b/doc/Install.md @@ -28,7 +28,7 @@ Requirements * Apache with mod-rewrite enabled and "Options All" so you can use a local .htaccess file * PHP 5.4+. * PHP *command line* access with register_argc_argv set to true in the php.ini file -* curl, gd, mysql, hash and openssl extensions +* Curl, GD, PDO, MySQLi, hash and OpenSSL extensions * some form of email server or email gateway such that PHP mail() works * Mysql 5.5.3+ or an equivalant alternative for MySQL (MariaDB, Percona Server etc.) * the ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks (Windows) (Note: other options are presented in Section 7 of this document.) diff --git a/doc/Settings.md b/doc/Settings.md index 13424a5a48..e84418a453 100644 --- a/doc/Settings.md +++ b/doc/Settings.md @@ -242,6 +242,12 @@ The receiving end might be off-line, there might be a high system load and so on Don't panic! Friendica will not queue messages for all time but will sort out *dead* nodes automatically after a while and remove messages from the queue then. +## Server Blocklist + +This page allows to block all communications (inbound and outbound) with a specific domain name. +Each blocked domain entry requires a reason that will be displayed on the [friendica](/friendica) page. +Matching is exact, blocking a domain doesn't block subdomains. + ## Federation Statistics The federation statistics page gives you a short summery of the nodes/servers/pods of the decentralized social network federation your node knows. diff --git a/doc/api.md b/doc/api.md index b759b4697c..04abaa5632 100644 --- a/doc/api.md +++ b/doc/api.md @@ -1,885 +1,1004 @@ -Friendica API -=== - -* [Home](help) - -The Friendica API aims to be compatible to the [GNU Social API](http://wiki.gnusocial.de/gnusocial:api) and the [Twitter API](https://dev.twitter.com/rest/public). - -Please refer to the linked documentation for further information. - -## Implemented API calls - -### General -#### HTTP Method - -API endpoints can restrict the method used to request them. -Using an invalid method results in HTTP error 405 "Method Not Allowed". - -In this document, the required method is listed after the endpoint name. "*" means every method can be used. - -#### Auth - -Friendica supports basic http auth and OAuth 1 to authenticate the user to the api. - -OAuth settings can be added by the user in web UI under /settings/oauth/ - -In this document, endpoints which requires auth are marked with "AUTH" after endpoint name - -#### Unsupported parameters -* cursor: Not implemented in GNU Social -* trim_user: Not implemented in GNU Social -* contributor_details: Not implemented in GNU Social -* place_id: Not implemented in GNU Social -* display_coordinates: Not implemented in GNU Social -* include_rts: To-Do -* include_my_retweet: Retweets in Friendica are implemented in a different way - -#### Different behaviour -* screen_name: The nick name in friendica is only unique in each network but not for all networks. The users are searched in the following priority: Friendica, StatusNet/GNU Social, Diaspora, pump.io, Twitter. If no contact was found by this way, then the first contact is taken. -* include_entities: Default is "false". If set to "true" then the plain text is formatted so that links are having descriptions. - -#### Return values -* cid: Contact id of the user (important for "contact_allow" and "contact_deny") -* network: network of the user - -#### Errors -When an error occour in API call, an HTTP error code is returned, with an error message -Usually: -- 400 Bad Request: if parameter are missing or items can't be found -- 403 Forbidden: if authenticated user is missing -- 405 Method Not Allowed: if API was called with invalid method, eg. GET when API require POST -- 501 Not Implemented: if requested API doesn't exists -- 500 Internal Server Error: on other error contitions - -Error body is - -json: -``` - { - "error": "Specific error message", - "request": "API path requested", - "code": "HTTP error code" - } -``` - -xml: -``` - - Specific error message - API path requested - HTTP error code - -``` - ---- -### account/rate_limit_status (*; AUTH) - ---- -### account/verify_credentials (*; AUTH) -#### Parameters - -* skip_status: Don't show the "status" field. (Default: false) -* include_entities: "true" shows entities for pictures and links (Default: false) - ---- -### conversation/show (*; AUTH) -Unofficial Twitter command. It shows all direct answers (excluding the original post) to a given id. - -#### Parameter -* id: id of the post -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* include_rts -* trim_user -* contributor_details - ---- -### direct_messages (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* getText: Defines the format of the status field. Can be "html" or "plain" -* include_entities: "true" shows entities for pictures and links (Default: false) -* friendica_verbose: "true" enables different error returns (default: "false") - -#### Unsupported parameters -* skip_status - ---- -### direct_messages/all (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* getText: Defines the format of the status field. Can be "html" or "plain" -* friendica_verbose: "true" enables different error returns (default: "false") - ---- -### direct_messages/conversation (*; AUTH) -Shows all direct messages of a conversation -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* getText: Defines the format of the status field. Can be "html" or "plain" -* uri: URI of the conversation -* friendica_verbose: "true" enables different error returns (default: "false") - ---- -### direct_messages/sent (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* getText: Defines the format of the status field. Can be "html" or "plain" -* include_entities: "true" shows entities for pictures and links (Default: false) -* friendica_verbose: "true" enables different error returns (default: "false") - ---- -### direct_messages/new (POST,PUT; AUTH) -#### Parameters -* user_id: id of the user -* screen_name: screen name (for technical reasons, this value is not unique!) -* text: The message -* replyto: ID of the replied direct message -* title: Title of the direct message - ---- -### direct_messages/destroy (POST,DELETE; AUTH) -#### Parameters -* id: id of the message to be deleted -* include_entities: optional, currently not yet implemented -* friendica_parenturi: optional, can be used for increased safety to delete only intended messages -* friendica_verbose: "true" enables different error returns (default: "false") - -#### Return values - -On success: -* JSON return as defined for Twitter API not yet implemented -* on friendica_verbose=true: JSON return {"result":"ok","message":"message deleted"} - -On error: -HTTP 400 BadRequest -* on friendica_verbose=true: different JSON returns {"result":"error","message":"xyz"} - ---- -### favorites (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* user_id -* screen_name - -Favorites aren't displayed to other users, so "user_id" and "screen_name" are unsupported. -Set this values will result in an empty array. - ---- -### favorites/create (POST,PUT; AUTH) -#### Parameters -* id -* include_entities: "true" shows entities for pictures and links (Default: false) - ---- -### favorites/destroy (POST,DELETE; AUTH) -#### Parameters -* id -* include_entities: "true" shows entities for pictures and links (Default: false) - ---- -### followers/ids (*; AUTH) -#### Parameters -* stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false) - -#### Unsupported parameters -* user_id -* screen_name -* cursor - -Friendica doesn't allow showing followers of other users. - ---- -### friends/ids (*; AUTH) -#### Parameters -* stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false) - -#### Unsupported parameters -* user_id -* screen_name -* cursor - -Friendica doesn't allow showing friends of other users. - ---- -### help/test (*) - ---- -### media/upload (POST,PUT; AUTH) -#### Parameters -* media: image data - ---- -### oauth/request_token (*) -#### Parameters -* oauth_callback - -#### Unsupported parameters -* x_auth_access_type - ---- -### oauth/access_token (*) -#### Parameters -* oauth_verifier - -#### Unsupported parameters -* x_auth_password -* x_auth_username -* x_auth_mode - ---- -### statuses/destroy (POST,DELETE; AUTH) -#### Parameters -* id: message number -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* trim_user - ---- -### statuses/followers (*; AUTH) - -#### Parameters - -* include_entities: "true" shows entities for pictures and links (Default: false) - ---- -### statuses/friends (*; AUTH) - -#### Parameters - -* include_entities: "true" shows entities for pictures and links (Default: false) - ---- -### statuses/friends_timeline (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* exclude_replies: don't show replies (default: false) -* conversation_id: Shows all statuses of a given conversation. -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* include_rts -* trim_user -* contributor_details - ---- -### statuses/home_timeline (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* exclude_replies: don't show replies (default: false) -* conversation_id: Shows all statuses of a given conversation. -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* include_rts -* trim_user -* contributor_details - ---- -### statuses/mentions (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* include_rts -* trim_user -* contributor_details - ---- -### statuses/public_timeline (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* exclude_replies: don't show replies (default: false) -* conversation_id: Shows all statuses of a given conversation. -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* trim_user - ---- -### statuses/replies (*; AUTH) -#### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* include_rts -* trim_user -* contributor_details - ---- -### statuses/retweet (POST,PUT; AUTH) -#### Parameters -* id: message number -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* trim_user - ---- -### statuses/show (*; AUTH) -#### Parameters -* id: message number -* conversation: if set to "1" show all messages of the conversation with the given id -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* include_my_retweet -* trim_user - ---- -### statuses/update, statuses/update_with_media -#### Parameters -* title: Title of the status -* status: Status in text format -* htmlstatus: Status in HTML format -* in_reply_to_status_id -* lat: latitude -* long: longitude -* media: image data -* source: Application name -* group_allow -* contact_allow -* group_deny -* contact_deny -* network -* include_entities: "true" shows entities for pictures and links (Default: false) -* media_ids: (By now only a single value, no array) - -#### Unsupported parameters -* trim_user -* place_id -* display_coordinates - ---- -### statuses/user_timeline (*; AUTH) -#### Parameters -* user_id: id of the user -* screen_name: screen name (for technical reasons, this value is not unique!) -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* exclude_replies: don't show replies (default: false) -* conversation_id: Shows all statuses of a given conversation. -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters - -* include_rts -* trim_user -* contributor_details - ---- -### statusnet/config (*) - ---- -### statusnet/conversation (*; AUTH) -It shows all direct answers (excluding the original post) to a given id. - -#### Parameter -* id: id of the post -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* include_entities: "true" shows entities for pictures and links (Default: false) - ---- -### statusnet/version (*) - -#### Unsupported parameters -* user_id -* screen_name -* cursor - -Friendica doesn't allow showing followers of other users. - ---- -### users/search (*) -#### Parameters -* q: name of the user - -#### Unsupported parameters -* page -* count -* include_entities - ---- -### users/show (*) -#### Parameters -* user_id: id of the user -* screen_name: screen name (for technical reasons, this value is not unique!) -* include_entities: "true" shows entities for pictures and links (Default: false) - -#### Unsupported parameters -* user_id -* screen_name -* cursor - -Friendica doesn't allow showing friends of other users. - - -## Implemented API calls (not compatible with other APIs) - - ---- -### friendica/activity/ -#### parameters -* id: item id - -Add or remove an activity from an item. -'verb' can be one of: - -- like -- dislike -- attendyes -- attendno -- attendmaybe - -To remove an activity, prepend the verb with "un", eg. "unlike" or "undislike" -Attend verbs disable eachother: that means that if "attendyes" was added to an item, adding "attendno" remove previous "attendyes". -Attend verbs should be used only with event-related items (there is no check at the moment) - -#### Return values - -On success: -json -```"ok"``` - -xml -```true``` - -On error: -HTTP 400 BadRequest - ---- -### friendica/group_show (*; AUTH) -Return all or a specified group of the user with the containing contacts as array. - -#### Parameters -* gid: optional, if not given, API returns all groups of the user - -#### Return values -Array of: - -* name: name of the group -* gid: id of the group -* user: array of group members (return from api_get_user() function for each member) - - ---- -### friendica/group_delete (POST,DELETE; AUTH) -delete the specified group of contacts; API call need to include the correct gid AND name of the group to be deleted. - -#### Parameters -* gid: id of the group to be deleted -* name: name of the group to be deleted - -#### Return values -Array of: - -* success: true if successfully deleted -* gid: gid of the deleted group -* name: name of the deleted group -* status: „deleted“ if successfully deleted -* wrong users: empty array - - ---- -### friendica/group_create (POST,PUT; AUTH) -Create the group with the posted array of contacts as members. - -#### Parameters -* name: name of the group to be created - -#### POST data -JSON data as Array like the result of "users/group_show": - -* gid -* name -* array of users - -#### Return values -Array of: - -* success: true if successfully created or reactivated -* gid: gid of the created group -* name: name of the created group -* status: „missing user“ | „reactivated“ | „ok“ -* wrong users: array of users, which were not available in the contact table - - ---- -### friendica/group_update (POST) -Update the group with the posted array of contacts as members (post all members of the group to the call; function will remove members not posted). - -#### Parameters -* gid: id of the group to be changed -* name: name of the group to be changed - -#### POST data -JSON data as array like the result of „users/group_show“: - -* gid -* name -* array of users - -#### Return values -Array of: - -* success: true if successfully updated -* gid: gid of the changed group -* name: name of the changed group -* status: „missing user“ | „ok“ -* wrong users: array of users, which were not available in the contact table - - - ---- -### friendica/notifications (GET) -Return last 50 notification for current user, ordered by date with unseen item on top - -#### Parameters -none - -#### Return values -Array of: - -* id: id of the note -* type: type of notification as int (see NOTIFY_* constants in boot.php) -* name: full name of the contact subject of the note -* url: contact's profile url -* photo: contact's profile photo -* date: datetime string of the note -* timestamp: timestamp of the node -* date_rel: relative date of the note (eg. "1 hour ago") -* msg: note message in bbcode -* msg_html: note message in html -* msg_plain: note message in plain text -* link: link to note -* seen: seen state: 0 or 1 - - ---- -### friendica/notifications/seen (POST) -Set note as seen, returns item object if possible - -#### Parameters -id: id of the note to set seen - -#### Return values -If the note is linked to an item, the item is returned, just like one of the "statuses/*_timeline" api. - -If the note is not linked to an item, a success status is returned: - -* "success" (json) | "<status>success</status>" (xml) - - ---- -### friendica/photo (*; AUTH) -#### Parameters -* photo_id: Resource id of a photo. -* scale: (optional) scale value of the photo - -Returns data of a picture with the given resource. -If 'scale' isn't provided, returned data include full url to each scale of the photo. -If 'scale' is set, returned data include image data base64 encoded. - -possibile scale value are: - -* 0: original or max size by server settings -* 1: image with or height at <= 640 -* 2: image with or height at <= 320 -* 3: thumbnail 160x160 -* 4: Profile image at 175x175 -* 5: Profile image at 80x80 -* 6: Profile image at 48x48 - -An image used as profile image has only scale 4-6, other images only 0-3 - -#### Return values - -json -``` - { - "id": "photo id" - "created": "date(YYYY-MM-GG HH:MM:SS)", - "edited": "date(YYYY-MM-GG HH:MM:SS)", - "title": "photo title", - "desc": "photo description", - "album": "album name", - "filename": "original file name", - "type": "mime type", - "height": "number", - "width": "number", - "profile": "1 if is profile photo", - "link": { - "": "url to image" - ... - }, - // if 'scale' is set - "datasize": "size in byte", - "data": "base64 encoded image data" - } -``` - -xml -``` - - photo id - date(YYYY-MM-GG HH:MM:SS) - date(YYYY-MM-GG HH:MM:SS) - photo title - photo description - album name - original file name - mime type - number - number - 1 if is profile photo - - - ... - - -``` - ---- -### friendica/photos/list (*; AUTH) - -Returns a list of all photo resources of the logged in user. - -#### Return values - -json -``` - [ - { - id: "resource_id", - album: "album name", - filename: "original file name", - type: "image mime type", - thumb: "url to thumb sized image" - }, - ... - ] -``` - -xml -``` - - - "url to thumb sized image" - - ... - -``` - ---- -### friendica/direct_messages_setseen (GET; AUTH) -#### Parameters -* id: id of the message to be updated as seen - -#### Return values - -On success: -* JSON return {"result":"ok","message":"message set to seen"} - -On error: -* different JSON returns {"result":"error","message":"xyz"} - ---- -### friendica/direct_messages_search (GET; AUTH) -#### Parameters -* searchstring: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored) - -#### Return values -Returns only tested with JSON, XML might work as well. - -On success: -* JSON return {"success":"true","search_results": array of found messages} -* JSOn return {"success":"false","search_results":"nothing found"} - -On error: -* different JSON returns {"result":"error","message":"searchstring not specified"} - ---- -### friendica/profile/show (GET; AUTH) -show data of all profiles or a single profile of the authenticated user - -#### Parameters -* profile_id: id of the profile to be returned (optional, if omitted all profiles are returned by default) - -#### Return values -On success: Array of: - -* multi_profiles: true if user has activated multi_profiles -* global_dir: URL of the global directory set in server settings -* friendica_owner: user data of the authenticated user -* profiles: array of the profile data - -On error: -HTTP 403 Forbidden: when no authentication provided -HTTP 400 Bad Request: if given profile_id is not in db or not assigned to authenticated user - -General description of profile data in API returns: -* profile_id -* profile_name -* is_default: true if this is the public profile -* hide_friends: true if friends are hidden -* profile_photo -* profile_thumb -* publish: true if published on the server's local directory -* net_publish: true if published to global_dir -* description ... homepage: different data fields from 'profile' table in database -* users: array with the users allowed to view this profile (empty if is_default=true) - - ---- -## Not Implemented API calls -The following API calls are implemented in GNU Social but not in Friendica: (incomplete) - -* statuses/retweets_of_me -* friendships/create -* friendships/destroy -* friendships/exists -* friendships/show -* account/update_profile_background_image -* account/update_profile_image -* blocks/create -* blocks/destroy - -The following API calls from the Twitter API aren't implemented neither in Friendica nor in GNU Social: - -* statuses/mentions_timeline -* statuses/retweets/:id -* statuses/oembed -* statuses/retweeters/ids -* statuses/lookup -* direct_messages/show -* search/tweets -* friendships/no_retweets/ids -* friendships/incoming -* friendships/outgoing -* friendships/update -* friends/list -* friendships/lookup -* account/settings -* account/update_delivery_device -* account/update_profile -* account/update_profile_background_image -* account/update_profile_image -* blocks/list -* blocks/ids -* users/lookup -* users/show -* users/search -* account/remove_profile_banner -* account/update_profile_banner -* users/profile_banner -* mutes/users/create -* mutes/users/destroy -* mutes/users/ids -* mutes/users/list -* users/suggestions/:slug -* users/suggestions -* users/suggestions/:slug/members -* favorites/list -* lists/list -* lists/statuses -* lists/members/destroy -* lists/memberships -* lists/subscribers -* lists/subscribers/create -* lists/subscribers/show -* lists/subscribers/destroy -* lists/members/create_all -* lists/members/show -* lists/members -* lists/members/create -* lists/destroy -* lists/update -* lists/create -* lists/show -* lists/subscriptions -* lists/members/destroy_all -* lists/ownerships -* saved_searches/list -* saved_searches/show/:id -* saved_searches/create -* saved_searches/destroy/:id -* geo/id/:place_id -* geo/reverse_geocode -* geo/search -* geo/place -* trends/place -* trends/available -* help/configuration -* help/languages -* help/privacy -* help/tos -* trends/closest -* users/report_spam - ---- - ---- - -## Usage Examples -### BASH / cURL -Betamax has documentated some example API usage from a [bash script](https://en.wikipedia.org/wiki/Bash_(Unix_shell) employing [curl](https://en.wikipedia.org/wiki/CURL) (see [his posting](https://betamax65.de/display/betamax65/43539)). - -/usr/bin/curl -u USER:PASS https://YOUR.FRIENDICA.TLD/api/statuses/update.xml -d source="some source id" -d status="the status you want to post" - -### Python -The [RSStoFriedika](https://github.com/pafcu/RSStoFriendika) code can be used as an example of how to use the API with python. The lines for posting are located at [line 21](https://github.com/pafcu/RSStoFriendika/blob/master/RSStoFriendika.py#L21) and following. - -def tweet(server, message, group_allow=None): -url = server + '/api/statuses/update' -urllib2.urlopen(url, urllib.urlencode({'status': message,'group_allow[]':group_allow}, doseq=True)) - -There is also a [module for python 3](https://bitbucket.org/tobiasd/python-friendica) for using the API. +Friendica API +=== + +* [Home](help) + +The Friendica API aims to be compatible to the [GNU Social API](http://wiki.gnusocial.de/gnusocial:api) and the [Twitter API](https://dev.twitter.com/rest/public). + +Please refer to the linked documentation for further information. + +## Implemented API calls + +### General +#### HTTP Method + +API endpoints can restrict the method used to request them. +Using an invalid method results in HTTP error 405 "Method Not Allowed". + +In this document, the required method is listed after the endpoint name. "*" means every method can be used. + +#### Auth + +Friendica supports basic http auth and OAuth 1 to authenticate the user to the api. + +OAuth settings can be added by the user in web UI under /settings/oauth/ + +In this document, endpoints which requires auth are marked with "AUTH" after endpoint name + +#### Unsupported parameters +* cursor: Not implemented in GNU Social +* trim_user: Not implemented in GNU Social +* contributor_details: Not implemented in GNU Social +* place_id: Not implemented in GNU Social +* display_coordinates: Not implemented in GNU Social +* include_rts: To-Do +* include_my_retweet: Retweets in Friendica are implemented in a different way + +#### Different behaviour +* screen_name: The nick name in friendica is only unique in each network but not for all networks. The users are searched in the following priority: Friendica, StatusNet/GNU Social, Diaspora, pump.io, Twitter. If no contact was found by this way, then the first contact is taken. +* include_entities: Default is "false". If set to "true" then the plain text is formatted so that links are having descriptions. + +#### Return values +* cid: Contact id of the user (important for "contact_allow" and "contact_deny") +* network: network of the user + +#### Errors +When an error occour in API call, an HTTP error code is returned, with an error message +Usually: +- 400 Bad Request: if parameter are missing or items can't be found +- 403 Forbidden: if authenticated user is missing +- 405 Method Not Allowed: if API was called with invalid method, eg. GET when API require POST +- 501 Not Implemented: if requested API doesn't exists +- 500 Internal Server Error: on other error contitions + +Error body is + +json: +``` + { + "error": "Specific error message", + "request": "API path requested", + "code": "HTTP error code" + } +``` + +xml: +``` + + Specific error message + API path requested + HTTP error code + +``` + +--- +### account/rate_limit_status (*; AUTH) + +--- +### account/verify_credentials (*; AUTH) +#### Parameters + +* skip_status: Don't show the "status" field. (Default: false) +* include_entities: "true" shows entities for pictures and links (Default: false) + +--- +### conversation/show (*; AUTH) +Unofficial Twitter command. It shows all direct answers (excluding the original post) to a given id. + +#### Parameter +* id: id of the post +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* include_rts +* trim_user +* contributor_details + +--- +### direct_messages (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* getText: Defines the format of the status field. Can be "html" or "plain" +* include_entities: "true" shows entities for pictures and links (Default: false) +* friendica_verbose: "true" enables different error returns (default: "false") + +#### Unsupported parameters +* skip_status + +--- +### direct_messages/all (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* getText: Defines the format of the status field. Can be "html" or "plain" +* friendica_verbose: "true" enables different error returns (default: "false") + +--- +### direct_messages/conversation (*; AUTH) +Shows all direct messages of a conversation +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* getText: Defines the format of the status field. Can be "html" or "plain" +* uri: URI of the conversation +* friendica_verbose: "true" enables different error returns (default: "false") + +--- +### direct_messages/sent (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* getText: Defines the format of the status field. Can be "html" or "plain" +* include_entities: "true" shows entities for pictures and links (Default: false) +* friendica_verbose: "true" enables different error returns (default: "false") + +--- +### direct_messages/new (POST,PUT; AUTH) +#### Parameters +* user_id: id of the user +* screen_name: screen name (for technical reasons, this value is not unique!) +* text: The message +* replyto: ID of the replied direct message +* title: Title of the direct message + +--- +### direct_messages/destroy (POST,DELETE; AUTH) +#### Parameters +* id: id of the message to be deleted +* include_entities: optional, currently not yet implemented +* friendica_parenturi: optional, can be used for increased safety to delete only intended messages +* friendica_verbose: "true" enables different error returns (default: "false") + +#### Return values + +On success: +* JSON return as defined for Twitter API not yet implemented +* on friendica_verbose=true: JSON return {"result":"ok","message":"message deleted"} + +On error: +HTTP 400 BadRequest +* on friendica_verbose=true: different JSON returns {"result":"error","message":"xyz"} + +--- +### externalprofile/show (*) +#### Parameters +* profileurl: profile url + +--- +### favorites (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* user_id +* screen_name + +Favorites aren't displayed to other users, so "user_id" and "screen_name" are unsupported. +Set this values will result in an empty array. + +--- +### favorites/create (POST,PUT; AUTH) +#### Parameters +* id +* include_entities: "true" shows entities for pictures and links (Default: false) + +--- +### favorites/destroy (POST,DELETE; AUTH) +#### Parameters +* id +* include_entities: "true" shows entities for pictures and links (Default: false) + +--- +### followers/ids (*; AUTH) +#### Parameters +* stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false) + +#### Unsupported parameters +* user_id +* screen_name +* cursor + +Friendica doesn't allow showing followers of other users. + +--- +### friends/ids (*; AUTH) +#### Parameters +* stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false) + +#### Unsupported parameters +* user_id +* screen_name +* cursor + +Friendica doesn't allow showing friends of other users. + +--- +### help/test (*) + +--- +### media/upload (POST,PUT; AUTH) +#### Parameters +* media: image data + +--- +### oauth/request_token (*) +#### Parameters +* oauth_callback + +#### Unsupported parameters +* x_auth_access_type + +--- +### oauth/access_token (*) +#### Parameters +* oauth_verifier + +#### Unsupported parameters +* x_auth_password +* x_auth_username +* x_auth_mode + +--- +### statuses/destroy (POST,DELETE; AUTH) +#### Parameters +* id: message number +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* trim_user + +--- +### statuses/followers (*; AUTH) + +#### Parameters + +* include_entities: "true" shows entities for pictures and links (Default: false) + +--- +### statuses/friends (*; AUTH) + +#### Parameters + +* include_entities: "true" shows entities for pictures and links (Default: false) + +--- +### statuses/friends_timeline (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* exclude_replies: don't show replies (default: false) +* conversation_id: Shows all statuses of a given conversation. +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* include_rts +* trim_user +* contributor_details + +--- +### statuses/home_timeline (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* exclude_replies: don't show replies (default: false) +* conversation_id: Shows all statuses of a given conversation. +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* include_rts +* trim_user +* contributor_details + +--- +### statuses/mentions (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* include_rts +* trim_user +* contributor_details + +--- +### statuses/public_timeline (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* exclude_replies: don't show replies (default: false) +* conversation_id: Shows all statuses of a given conversation. +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* trim_user + +--- +### statuses/replies (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* include_rts +* trim_user +* contributor_details + +--- +### statuses/retweet (POST,PUT; AUTH) +#### Parameters +* id: message number +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* trim_user + +--- +### statuses/show (*; AUTH) +#### Parameters +* id: message number +* conversation: if set to "1" show all messages of the conversation with the given id +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* include_my_retweet +* trim_user + +--- +### statuses/update, statuses/update_with_media +#### Parameters +* title: Title of the status +* status: Status in text format +* htmlstatus: Status in HTML format +* in_reply_to_status_id +* lat: latitude +* long: longitude +* media: image data +* source: Application name +* group_allow +* contact_allow +* group_deny +* contact_deny +* network +* include_entities: "true" shows entities for pictures and links (Default: false) +* media_ids: (By now only a single value, no array) + +#### Unsupported parameters +* trim_user +* place_id +* display_coordinates + +--- +### statuses/user_timeline (*; AUTH) +#### Parameters +* user_id: id of the user +* screen_name: screen name (for technical reasons, this value is not unique!) +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* exclude_replies: don't show replies (default: false) +* conversation_id: Shows all statuses of a given conversation. +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters + +* include_rts +* trim_user +* contributor_details + +--- +### statusnet/config (*) + +--- +### statusnet/conversation (*; AUTH) +It shows all direct answers (excluding the original post) to a given id. + +#### Parameter +* id: id of the post +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* include_entities: "true" shows entities for pictures and links (Default: false) + +--- +### statusnet/version (*) + +#### Unsupported parameters +* user_id +* screen_name +* cursor + +Friendica doesn't allow showing followers of other users. + +--- +### users/search (*) +#### Parameters +* q: name of the user + +#### Unsupported parameters +* page +* count +* include_entities + +--- +### users/show (*) +#### Parameters +* user_id: id of the user +* screen_name: screen name (for technical reasons, this value is not unique!) +* include_entities: "true" shows entities for pictures and links (Default: false) + +#### Unsupported parameters +* user_id +* screen_name +* cursor + +Friendica doesn't allow showing friends of other users. + + +--- +### account/update_profile_image (POST; AUTH) +#### Parameters +* image: image data as base64 (Twitter has a limit of 700kb, Friendica allows more) +* profile_id (optional): id of the profile for which the image should be used, default is changing the default profile + +uploads a new profile image (scales 4-6) to database, changes default or specified profile to the new photo + +#### Return values + +On success: +* JSON return: returns the updated user details (see account/verify_credentials) + +On error: +* 403 FORBIDDEN: if not authenticated +* 400 BADREQUEST: "no media data submitted", "profile_id not available" +* 500 INTERNALSERVERERROR: "image size exceeds PHP config settings, file was rejected by server", + "image size exceeds Friendica Config setting (uploaded size: x)", + "unable to process image data", + "image upload failed" + + +## Implemented API calls (not compatible with other APIs) + + +--- +### friendica/activity/ +#### parameters +* id: item id + +Add or remove an activity from an item. +'verb' can be one of: + +- like +- dislike +- attendyes +- attendno +- attendmaybe + +To remove an activity, prepend the verb with "un", eg. "unlike" or "undislike" +Attend verbs disable eachother: that means that if "attendyes" was added to an item, adding "attendno" remove previous "attendyes". +Attend verbs should be used only with event-related items (there is no check at the moment) + +#### Return values + +On success: +json +```"ok"``` + +xml +```true``` + +On error: +HTTP 400 BadRequest + +--- +### friendica/group_show (*; AUTH) +Return all or a specified group of the user with the containing contacts as array. + +#### Parameters +* gid: optional, if not given, API returns all groups of the user + +#### Return values +Array of: + +* name: name of the group +* gid: id of the group +* user: array of group members (return from api_get_user() function for each member) + + +--- +### friendica/group_delete (POST,DELETE; AUTH) +delete the specified group of contacts; API call need to include the correct gid AND name of the group to be deleted. + +#### Parameters +* gid: id of the group to be deleted +* name: name of the group to be deleted + +#### Return values +Array of: + +* success: true if successfully deleted +* gid: gid of the deleted group +* name: name of the deleted group +* status: „deleted“ if successfully deleted +* wrong users: empty array + + +--- +### friendica/group_create (POST,PUT; AUTH) +Create the group with the posted array of contacts as members. + +#### Parameters +* name: name of the group to be created + +#### POST data +JSON data as Array like the result of "users/group_show": + +* gid +* name +* array of users + +#### Return values +Array of: + +* success: true if successfully created or reactivated +* gid: gid of the created group +* name: name of the created group +* status: „missing user“ | „reactivated“ | „ok“ +* wrong users: array of users, which were not available in the contact table + + +--- +### friendica/group_update (POST) +Update the group with the posted array of contacts as members (post all members of the group to the call; function will remove members not posted). + +#### Parameters +* gid: id of the group to be changed +* name: name of the group to be changed + +#### POST data +JSON data as array like the result of „users/group_show“: + +* gid +* name +* array of users + +#### Return values +Array of: + +* success: true if successfully updated +* gid: gid of the changed group +* name: name of the changed group +* status: „missing user“ | „ok“ +* wrong users: array of users, which were not available in the contact table + + + +--- +### friendica/notifications (GET) +Return last 50 notification for current user, ordered by date with unseen item on top + +#### Parameters +none + +#### Return values +Array of: + +* id: id of the note +* type: type of notification as int (see NOTIFY_* constants in boot.php) +* name: full name of the contact subject of the note +* url: contact's profile url +* photo: contact's profile photo +* date: datetime string of the note +* timestamp: timestamp of the node +* date_rel: relative date of the note (eg. "1 hour ago") +* msg: note message in bbcode +* msg_html: note message in html +* msg_plain: note message in plain text +* link: link to note +* seen: seen state: 0 or 1 + + +--- +### friendica/notifications/seen (POST) +Set note as seen, returns item object if possible + +#### Parameters +id: id of the note to set seen + +#### Return values +If the note is linked to an item, the item is returned, just like one of the "statuses/*_timeline" api. + +If the note is not linked to an item, a success status is returned: + +* "success" (json) | "<status>success</status>" (xml) + + +--- +### friendica/photo (*; AUTH) +#### Parameters +* photo_id: Resource id of a photo. +* scale: (optional) scale value of the photo + +Returns data of a picture with the given resource. +If 'scale' isn't provided, returned data include full url to each scale of the photo. +If 'scale' is set, returned data include image data base64 encoded. + +possibile scale value are: + +* 0: original or max size by server settings +* 1: image with or height at <= 640 +* 2: image with or height at <= 320 +* 3: thumbnail 160x160 +* 4: Profile image at 175x175 +* 5: Profile image at 80x80 +* 6: Profile image at 48x48 + +An image used as profile image has only scale 4-6, other images only 0-3 + +#### Return values + +json +``` + { + "id": "photo id" + "created": "date(YYYY-MM-GG HH:MM:SS)", + "edited": "date(YYYY-MM-GG HH:MM:SS)", + "title": "photo title", + "desc": "photo description", + "album": "album name", + "filename": "original file name", + "type": "mime type", + "height": "number", + "width": "number", + "profile": "1 if is profile photo", + "link": { + "": "url to image" + ... + }, + // if 'scale' is set + "datasize": "size in byte", + "data": "base64 encoded image data" + } +``` + +xml +``` + + photo id + date(YYYY-MM-GG HH:MM:SS) + date(YYYY-MM-GG HH:MM:SS) + photo title + photo description + album name + original file name + mime type + number + number + 1 if is profile photo + + + ... + + +``` + +--- +### friendica/photos/list (*; AUTH) + +Returns a list of all photo resources of the logged in user. + +#### Return values + +json +``` + [ + { + id: "resource_id", + album: "album name", + filename: "original file name", + type: "image mime type", + thumb: "url to thumb sized image" + }, + ... + ] +``` + +xml +``` + + + "url to thumb sized image" + + ... + +``` + +--- +### friendica/photoalbum/delete (POST,DELETE; AUTH) +#### Parameters +* album: name of the album to be deleted + +deletes all images with the specified album name, is not reversible -> ensure that client is asking user for being sure to do this + +#### Return values + +On success: +* JSON return {"result":"deleted","message":"album 'xyz' with all containing photos has been deleted."} + +On error: +* 403 FORBIDDEN: if not authenticated +* 400 BADREQUEST: "no albumname specified", "album not available" +* 500 INTERNALSERVERERROR: "problem with deleting item occured", "unknown error - deleting from database failed" + + +--- +### friendica/photoalbum/update (POST,PUT; AUTH) +#### Parameters +* album: name of the album to be updated +* album_new: new name of the album + +changes the album name to album_new for all photos in album + +#### Return values + +On success: +* JSON return {"result":"updated","message":"album 'abc' with all containing photos has been renamed to 'xyz'."} + +On error: +* 403 FORBIDDEN: if not authenticated +* 400 BADREQUEST: "no albumname specified", "no new albumname specified", "album not available" +* 500 INTERNALSERVERERROR: "unknown error - updating in database failed" + + +--- +### friendica/photo/create (POST; AUTH) +### friendica/photo/update (POST; AUTH) +#### Parameters +* photo_id (optional): if specified the photo with this id will be updated +* media (optional): image data as base64, only optional if photo_id is specified (new upload must have media) +* desc (optional): description for the photo, updated when photo_id is specified +* album: name of the album to be deleted (always necessary) +* album_new (optional): can be used to change the album of a single photo if photo_id is specified +* allow_cid/allow_gid/deny_cid/deny_gid (optional): on create: empty string or omitting = public photo, specify in format '``````' for private photo; + on update: keys need to be present with empty values for setting a private photo now to public + +both calls point to one function for creating AND updating photos. +Saves data for the scales 0-2 to database (see above for scale description). +Call adds non-visible entries to items table to enable authenticated contacts to comment/like the photo. +Client should pay attention to the fact that updated access rights are not transferred to the contacts. i.e. public photos remain publicly visible if they have been commented/liked before setting visibility back to a limited group. +Currently it is best way to inform user that updating rights is not the best way, offer a solution to add photo as a new photo with the new rights. + +#### Return values + +On success: +* new photo uploaded: JSON return with photo data (see friendica/photo) +* photo updated - changed photo data: JSON return with photo data (see friendica/photo) +* photo updated - changed info: JSON return {"result":"updated","message":"Image id 'xyz' has been updated."} +* photo updated - nothing changed: JSON return {"result":"cancelled","message":"Nothing to update for image id 'xyz'."} + +On error: +* 403 FORBIDDEN: if not authenticated +* 400 BADREQUEST: "no albumname specified", "no media data submitted", "photo not available", "acl data invalid" +* 500 INTERNALSERVERERROR: "image size exceeds PHP config settings, file was rejected by server", + "image size exceeds Friendica Config setting (uploaded size: x)", + "unable to process image data", + "image upload failed", + "unknown error - uploading photo failed, see Friendica log for more information", + "unknown error - update photo entry in database failed", + "unknown error - this error on uploading or updating a photo should never happen" + + +--- +### friendica/photo/delete (DELETE; AUTH) +#### Parameters +* photo_id: id of the photo to be deleted + +deletes a single image with the specified id, is not reversible -> ensure that client is asking user for being sure to do this +Sets item table entries for this photo to deleted = 1 + +#### Return values + +On success: +* JSON return {"result":"deleted","message":"photo with id 'xyz' has been deleted from server."} + +On error: +* 403 FORBIDDEN: if not authenticated +* 400 BADREQUEST: "no photo_id specified", "photo not available" +* 500 INTERNALSERVERERROR: "unknown error on deleting photo", "problem with deleting items occurred" + + +--- +### friendica/direct_messages_setseen (GET; AUTH) +#### Parameters +* id: id of the message to be updated as seen + +#### Return values + +On success: +* JSON return {"result":"ok","message":"message set to seen"} + +On error: +* different JSON returns {"result":"error","message":"xyz"} + +--- +### friendica/direct_messages_search (GET; AUTH) +#### Parameters +* searchstring: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored) + +#### Return values +Returns only tested with JSON, XML might work as well. + +On success: +* JSON return {"success":"true","search_results": array of found messages} +* JSOn return {"success":"false","search_results":"nothing found"} + +On error: +* different JSON returns {"result":"error","message":"searchstring not specified"} + +--- +### friendica/profile/show (GET; AUTH) +show data of all profiles or a single profile of the authenticated user + +#### Parameters +* profile_id: id of the profile to be returned (optional, if omitted all profiles are returned by default) + +#### Return values +On success: Array of: + +* multi_profiles: true if user has activated multi_profiles +* global_dir: URL of the global directory set in server settings +* friendica_owner: user data of the authenticated user +* profiles: array of the profile data + +On error: +HTTP 403 Forbidden: when no authentication provided +HTTP 400 Bad Request: if given profile_id is not in db or not assigned to authenticated user + +General description of profile data in API returns: +* profile_id +* profile_name +* is_default: true if this is the public profile +* hide_friends: true if friends are hidden +* profile_photo +* profile_thumb +* publish: true if published on the server's local directory +* net_publish: true if published to global_dir +* description ... homepage: different data fields from 'profile' table in database +* users: array with the users allowed to view this profile (empty if is_default=true) + + +--- +## Not Implemented API calls +The following API calls are implemented in GNU Social but not in Friendica: (incomplete) + +* statuses/retweets_of_me +* friendships/create +* friendships/destroy +* friendships/exists +* friendships/show +* account/update_profile_background_image +* blocks/create +* blocks/destroy + +The following API calls from the Twitter API aren't implemented neither in Friendica nor in GNU Social: + +* statuses/mentions_timeline +* statuses/retweets/:id +* statuses/oembed +* statuses/retweeters/ids +* statuses/lookup +* direct_messages/show +* search/tweets +* friendships/no_retweets/ids +* friendships/incoming +* friendships/outgoing +* friendships/update +* friends/list +* friendships/lookup +* account/settings +* account/update_delivery_device +* account/update_profile +* account/update_profile_background_image +* blocks/list +* blocks/ids +* users/lookup +* users/show +* users/search +* account/remove_profile_banner +* account/update_profile_banner +* users/profile_banner +* mutes/users/create +* mutes/users/destroy +* mutes/users/ids +* mutes/users/list +* users/suggestions/:slug +* users/suggestions +* users/suggestions/:slug/members +* favorites/list +* lists/list +* lists/statuses +* lists/members/destroy +* lists/memberships +* lists/subscribers +* lists/subscribers/create +* lists/subscribers/show +* lists/subscribers/destroy +* lists/members/create_all +* lists/members/show +* lists/members +* lists/members/create +* lists/destroy +* lists/update +* lists/create +* lists/show +* lists/subscriptions +* lists/members/destroy_all +* lists/ownerships +* saved_searches/list +* saved_searches/show/:id +* saved_searches/create +* saved_searches/destroy/:id +* geo/id/:place_id +* geo/reverse_geocode +* geo/search +* geo/place +* trends/place +* trends/available +* help/configuration +* help/languages +* help/privacy +* help/tos +* trends/closest +* users/report_spam + +--- + +--- + +## Usage Examples +### BASH / cURL +Betamax has documentated some example API usage from a [bash script](https://en.wikipedia.org/wiki/Bash_(Unix_shell) employing [curl](https://en.wikipedia.org/wiki/CURL) (see [his posting](https://betamax65.de/display/betamax65/43539)). + +/usr/bin/curl -u USER:PASS https://YOUR.FRIENDICA.TLD/api/statuses/update.xml -d source="some source id" -d status="the status you want to post" + +### Python +The [RSStoFriedika](https://github.com/pafcu/RSStoFriendika) code can be used as an example of how to use the API with python. The lines for posting are located at [line 21](https://github.com/pafcu/RSStoFriendika/blob/master/RSStoFriendika.py#L21) and following. + +def tweet(server, message, group_allow=None): +url = server + '/api/statuses/update' +urllib2.urlopen(url, urllib.urlencode({'status': message,'group_allow[]':group_allow}, doseq=True)) + +There is also a [module for python 3](https://bitbucket.org/tobiasd/python-friendica) for using the API. diff --git a/doc/autoloader.md b/doc/autoloader.md index 83f1010440..5b894cb1a0 100644 --- a/doc/autoloader.md +++ b/doc/autoloader.md @@ -1,192 +1,197 @@ -Autoloader with Composer -========== - -* [Home](help) - * [Developer Intro](help/Developers-Intro) - -Friendica uses [Composer](https://getcomposer.org) to manage dependencies libraries and the class autoloader both for libraries and namespaced Friendica classes. - -It's a command-line tool that downloads required libraries into the `vendor` folder and makes any namespaced class in `src` available through the whole application through `boot.php`. - -* [Using Composer](help/Composer) - -## A quick introduction to class autoloading - -The autoloader dynamically includes the file defining a class when it is first referenced, either by instantiating an object or simply making sure that it is available, without the need to explicitly use "require_once". - -Once it is set up you don't have to directly use it, you can directly use any class that is covered by the autoloader (currently `vendor` and `src`) - -Under the hood, Composer registers a callback with [`spl_autoload_register()`](http://php.net/manual/en/function.spl-autoload-register.php) that receives a class name as an argument and includes the corresponding class definition file. -For more info about PHP autoloading, please refer to the [official PHP documentation](http://php.net/manual/en/language.oop5.autoload.php). - -### Example - -Let's say you have a PHP file in `src/` that define a very useful class: - -```php - // src/ItemsManager.php - getAll(); - - // pass $items to template - // return result - } -``` - -That's a quite simple example, but look: no `require()`! -If you need to use a class, you can simply use it and you don't need to do anything else. - -Going further: now we have a bunch of `*Manager` classes that cause some code duplication, let's define a `BaseManager` class, where we move all common code between all managers: - -```php - // src/BaseManager.php - getAll(); + + // pass $items to template + // return result +} +``` + +That's a quite simple example, but look: no `require()`! +If you need to use a class, you can simply use it and you don't need to do anything else. + +Going further: now we have a bunch of `*Manager` classes that cause some code duplication, let's define a `BaseManager` class, where we move all common code between all managers: + +```php +// src/BaseManager.php + diff --git a/include/Emailer.php b/include/Emailer.php index b0cdc3fe63..9df6ac36c9 100644 --- a/include/Emailer.php +++ b/include/Emailer.php @@ -81,4 +81,3 @@ class Emailer { return $res; } } -?> diff --git a/include/ForumManager.php b/include/ForumManager.php index c2a20df29f..8f38ed3a38 100644 --- a/include/ForumManager.php +++ b/include/ForumManager.php @@ -1,5 +1,7 @@ Notification identifier * int 'total' => Total number of available network notifications @@ -436,7 +436,7 @@ class NotificationsManager { } /** - * @brief Total number of system notifications + * @brief Total number of system notifications * @param int|string $seen * If 0 only include notifications into the query * which aren't marked as "seen" @@ -460,13 +460,13 @@ class NotificationsManager { /** * @brief Get system notifications - * + * * @param int|string $seen * If 0 only include notifications into the query * which aren't marked as "seen" * @param int $start Start the query at this point * @param int $limit Maximum number of query results - * + * * @return array with * string 'ident' => Notification identifier * int 'total' => Total number of available system notifications @@ -502,7 +502,7 @@ class NotificationsManager { /** * @brief Addional SQL query string for the personal notifications - * + * * @return string The additional sql query */ private function _personal_sql_extra() { @@ -520,7 +520,7 @@ class NotificationsManager { } /** - * @brief Total number of personal notifications + * @brief Total number of personal notifications * @param int|string $seen * If 0 only include notifications into the query * which aren't marked as "seen" @@ -550,13 +550,13 @@ class NotificationsManager { /** * @brief Get personal notifications - * + * * @param int|string $seen * If 0 only include notifications into the query * which aren't marked as "seen" * @param int $start Start the query at this point * @param int $limit Maximum number of query results - * + * * @return array with * string 'ident' => Notification identifier * int 'total' => Total number of available personal notifications @@ -573,13 +573,13 @@ class NotificationsManager { $sql_seen = " AND `item`.`unseen` = 1 "; $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`unseen`, - `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`, - `pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid` + `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object` AS `object`, + `pitem`.`author-name` AS `pname`, `pitem`.`author-link` AS `plink`, `pitem`.`guid` AS `pguid` FROM `item` INNER JOIN `item` AS `pitem` ON `pitem`.`id`=`item`.`parent` WHERE `item`.`visible` = 1 $sql_extra $sql_seen - AND `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0 + AND `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0 ORDER BY `item`.`created` DESC LIMIT %d, %d " , intval(local_user()), intval($start), @@ -588,7 +588,7 @@ class NotificationsManager { if (dbm::is_result($r)) $notifs = $this->formatNotifs($r, $ident); - + $arr = array ( 'notifications' => $notifs, 'ident' => $ident, @@ -599,7 +599,7 @@ class NotificationsManager { } /** - * @brief Total number of home notifications + * @brief Total number of home notifications * @param int|string $seen * If 0 only include notifications into the query * which aren't marked as "seen" @@ -626,13 +626,13 @@ class NotificationsManager { /** * @brief Get home notifications - * + * * @param int|string $seen * If 0 only include notifications into the query * which aren't marked as "seen" * @param int $start Start the query at this point * @param int $limit Maximum number of query results - * + * * @return array with * string 'ident' => Notification identifier * int 'total' => Total number of available home notifications @@ -673,7 +673,7 @@ class NotificationsManager { } /** - * @brief Total number of introductions + * @brief Total number of introductions * @param bool $all * If false only include introductions into the query * which aren't marked as ignored @@ -698,13 +698,13 @@ class NotificationsManager { /** * @brief Get introductions - * + * * @param bool $all * If false only include introductions into the query * which aren't marked as ignored * @param int $start Start the query at this point * @param int $limit Maximum number of query results - * + * * @return array with * string 'ident' => Notification identifier * int 'total' => Total number of available introductions @@ -749,7 +749,7 @@ class NotificationsManager { /** * @brief Format the notification query in an usable array - * + * * @param array $intros The array from the db query * @return array with the introductions */ diff --git a/include/Photo.php b/include/Photo.php index 828dce82d7..7341935767 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -4,6 +4,8 @@ * @brief This file contains the Photo class for image processing */ +use Friendica\App; + require_once("include/photos.php"); class Photo { @@ -68,7 +70,9 @@ class Photo { $this->image->destroy(); return; } - imagedestroy($this->image); + if (is_resource($this->image)) { + imagedestroy($this->image); + } } } @@ -324,6 +328,7 @@ class Photo { return; } + // if script dies at this point check memory_limit setting in php.ini $this->image = imagerotate($this->image,$degrees,0); $this->width = imagesx($this->image); $this->height = imagesy($this->image); @@ -620,7 +625,7 @@ class Photo { - public function store($uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { + public function store($uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '', $desc = '') { $r = q("SELECT `guid` FROM `photo` WHERE `resource-id` = '%s' AND `guid` != '' LIMIT 1", dbesc($rid) @@ -657,7 +662,8 @@ class Photo { `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', - `deny_gid` = '%s' + `deny_gid` = '%s', + `desc` = '%s' WHERE `id` = %d", intval($uid), @@ -679,12 +685,13 @@ class Photo { dbesc($allow_gid), dbesc($deny_cid), dbesc($deny_gid), + dbesc($desc), intval($x[0]['id']) ); } else { $r = q("INSERT INTO `photo` - (`uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `datasize`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`) - VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s')", + (`uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `datasize`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `desc`) + VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s', '%s')", intval($uid), intval($cid), dbesc($guid), @@ -703,7 +710,8 @@ class Photo { dbesc($allow_cid), dbesc($allow_gid), dbesc($deny_cid), - dbesc($deny_gid) + dbesc($deny_gid), + dbesc($desc) ); } diff --git a/include/Probe.php b/include/Probe.php deleted file mode 100644 index f67a821f9d..0000000000 --- a/include/Probe.php +++ /dev/null @@ -1,1222 +0,0 @@ - Link to LRDD endpoint - * 'lrdd-xml' => Link to LRDD endpoint in XML format - * 'lrdd-json' => Link to LRDD endpoint in JSON format - */ - private function xrd($host) { - - // Reset the static variable - self::$baseurl = ''; - - $ssl_url = "https://".$host."/.well-known/host-meta"; - $url = "http://".$host."/.well-known/host-meta"; - - $xrd_timeout = Config::get('system','xrd_timeout', 20); - $redirects = 0; - - $ret = z_fetch_url($ssl_url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml')); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $xml = $ret['body']; - - $xrd = parse_xml_string($xml, false); - - if (!is_object($xrd)) { - $ret = z_fetch_url($url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml')); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $xml = $ret['body']; - $xrd = parse_xml_string($xml, false); - } - if (!is_object($xrd)) - return false; - - $links = xml::element_to_array($xrd); - if (!isset($links["xrd"]["link"])) - return false; - - $xrd_data = array(); - - foreach ($links["xrd"]["link"] AS $value => $link) { - if (isset($link["@attributes"])) - $attributes = $link["@attributes"]; - elseif ($value == "@attributes") - $attributes = $link; - else - continue; - - if (($attributes["rel"] == "lrdd") AND - ($attributes["type"] == "application/xrd+xml")) - $xrd_data["lrdd-xml"] = $attributes["template"]; - elseif (($attributes["rel"] == "lrdd") AND - ($attributes["type"] == "application/json")) - $xrd_data["lrdd-json"] = $attributes["template"]; - elseif ($attributes["rel"] == "lrdd") - $xrd_data["lrdd"] = $attributes["template"]; - } - - self::$baseurl = "http://".$host; - - return $xrd_data; - } - - /** - * @brief Perform Webfinger lookup and return DFRN data - * - * Given an email style address, perform webfinger lookup and - * return the resulting DFRN profile URL, or if no DFRN profile URL - * is located, returns an OStatus subscription template (prefixed - * with the string 'stat:' to identify it as on OStatus template). - * If this isn't an email style address just return $webbie. - * Return an empty string if email-style addresses but webfinger fails, - * or if the resultant personal XRD doesn't contain a supported - * subscription/friend-request attribute. - * - * amended 7/9/2011 to return an hcard which could save potentially loading - * a lengthy content page to scrape dfrn attributes - * - * @param string $webbie Address that should be probed - * @param string $hcard Link to the hcard - is returned by reference - * - * @return string profile link - */ - - public static function webfinger_dfrn($webbie, &$hcard) { - - $profile_link = ''; - - $links = self::lrdd($webbie); - logger('webfinger_dfrn: '.$webbie.':'.print_r($links,true), LOGGER_DATA); - if (count($links)) { - foreach ($links as $link) { - if ($link['@attributes']['rel'] === NAMESPACE_DFRN) - $profile_link = $link['@attributes']['href']; - if (($link['@attributes']['rel'] === NAMESPACE_OSTATUSSUB) AND ($profile_link == "")) - $profile_link = 'stat:'.$link['@attributes']['template']; - if ($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard') - $hcard = $link['@attributes']['href']; - } - } - return $profile_link; - } - - /** - * @brief Check an URI for LRDD data - * - * this is a replacement for the "lrdd" function in include/network.php. - * It isn't used in this class and has some redundancies in the code. - * When time comes we can check the existing calls for "lrdd" if we can rework them. - * - * @param string $uri Address that should be probed - * - * @return array uri data - */ - public static function lrdd($uri) { - - $lrdd = self::xrd($uri); - - if (!$lrdd) { - $parts = @parse_url($uri); - if (!$parts) - return array(); - - $host = $parts["host"]; - - $path_parts = explode("/", trim($parts["path"], "/")); - - $nick = array_pop($path_parts); - - do { - $lrdd = self::xrd($host); - $host .= "/".array_shift($path_parts); - } while (!$lrdd AND (sizeof($path_parts) > 0)); - } - - if (!$lrdd) - return array(); - - foreach ($lrdd AS $key => $link) { - if ($webfinger) - continue; - - if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json"))) - continue; - - $path = str_replace('{uri}', urlencode($uri), $link); - $webfinger = self::webfinger($path); - - if (!$webfinger AND (strstr($uri, "@"))) { - $path = str_replace('{uri}', urlencode("acct:".$uri), $link); - $webfinger = self::webfinger($path); - } - - // Special treatment for Mastodon - // Problem is that Mastodon uses an URL format like http://domain.tld/@nick - // But the webfinger for this format fails. - if (!$webfinger AND isset($nick)) { - // Mastodon uses a "@" as prefix for usernames in their url format - $nick = ltrim($nick, '@'); - - $addr = $nick."@".$host; - - $path = str_replace('{uri}', urlencode("acct:".$addr), $link); - $webfinger = self::webfinger($path); - } - } - - if (!is_array($webfinger["links"])) - return false; - - $data = array(); - - foreach ($webfinger["links"] AS $link) - $data[] = array("@attributes" => $link); - - if (is_array($webfinger["aliases"])) - foreach ($webfinger["aliases"] AS $alias) - $data[] = array("@attributes" => - array("rel" => "alias", - "href" => $alias)); - - return $data; - } - - /** - * @brief Fetch information (protocol endpoints and user information) about a given uri - * - * @param string $uri Address that should be probed - * @param string $network Test for this specific network - * @param integer $uid User ID for the probe (only used for mails) - * @param boolean $cache Use cached values? - * - * @return array uri data - */ - public static function uri($uri, $network = "", $uid = 0, $cache = true) { - - if ($cache) { - $result = Cache::get("probe_url:".$network.":".$uri); - if (!is_null($result)) { - return $result; - } - } - - if ($uid == 0) - $uid = local_user(); - - $data = self::detect($uri, $network, $uid); - - if (!isset($data["url"])) - $data["url"] = $uri; - - if ($data["photo"] != "") - $data["baseurl"] = matching_url(normalise_link($data["baseurl"]), normalise_link($data["photo"])); - else - $data["photo"] = App::get_baseurl().'/images/person-175.jpg'; - - if (!isset($data["name"]) OR ($data["name"] == "")) { - if (isset($data["nick"])) - $data["name"] = $data["nick"]; - - if ($data["name"] == "") - $data["name"] = $data["url"]; - } - - if (!isset($data["nick"]) OR ($data["nick"] == "")) { - $data["nick"] = strtolower($data["name"]); - - if (strpos($data['nick'], ' ')) - $data['nick'] = trim(substr($data['nick'], 0, strpos($data['nick'], ' '))); - } - - if (self::$baseurl != "") { - $data["baseurl"] = self::$baseurl; - } - - if (!isset($data["network"])) { - $data["network"] = NETWORK_PHANTOM; - } - - $data = self::rearrange_data($data); - - // Only store into the cache if the value seems to be valid - if (!in_array($data['network'], array(NETWORK_PHANTOM, NETWORK_MAIL))) { - Cache::set("probe_url:".$network.":".$uri, $data, CACHE_DAY); - - /// @todo temporary fix - we need a real contact update function that updates only changing fields - /// The biggest problem is the avatar picture that could have a reduced image size. - /// It should only be updated if the existing picture isn't existing anymore. - if (($data['network'] != NETWORK_FEED) AND ($mode == PROBE_NORMAL) AND - $data["name"] AND $data["nick"] AND $data["url"] AND $data["addr"] AND $data["poll"]) - q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `url` = '%s', `addr` = '%s', - `notify` = '%s', `poll` = '%s', `alias` = '%s', `success_update` = '%s' - WHERE `nurl` = '%s' AND NOT `self` AND `uid` = 0", - dbesc($data["name"]), - dbesc($data["nick"]), - dbesc($data["url"]), - dbesc($data["addr"]), - dbesc($data["notify"]), - dbesc($data["poll"]), - dbesc($data["alias"]), - dbesc(datetime_convert()), - dbesc(normalise_link($data['url'])) - ); - } - - return $data; - } - - /** - * @brief Fetch information (protocol endpoints and user information) about a given uri - * - * This function is only called by the "uri" function that adds caching and rearranging of data. - * - * @param string $uri Address that should be probed - * @param string $network Test for this specific network - * @param integer $uid User ID for the probe (only used for mails) - * - * @return array uri data - */ - private function detect($uri, $network, $uid) { - $parts = parse_url($uri); - - if (isset($parts["scheme"]) AND isset($parts["host"]) AND isset($parts["path"])) { - - /// @todo: Ports? - $host = $parts["host"]; - - if ($host == 'twitter.com') { - return array("network" => NETWORK_TWITTER); - } - $lrdd = self::xrd($host); - - $path_parts = explode("/", trim($parts["path"], "/")); - - while (!$lrdd AND (sizeof($path_parts) > 1)) { - $host .= "/".array_shift($path_parts); - $lrdd = self::xrd($host); - } - if (!$lrdd) { - return self::feed($uri); - } - $nick = array_pop($path_parts); - - // Mastodon uses a "@" as prefix for usernames in their url format - $nick = ltrim($nick, '@'); - - $addr = $nick."@".$host; - } elseif (strstr($uri, '@')) { - // If the URI starts with "mailto:" then jump directly to the mail detection - if (strpos($url,'mailto:') !== false) { - $uri = str_replace('mailto:', '', $url); - return self::mail($uri, $uid); - } - - if ($network == NETWORK_MAIL) { - return self::mail($uri, $uid); - } - // Remove "acct:" from the URI - $uri = str_replace('acct:', '', $uri); - - $host = substr($uri,strpos($uri, '@') + 1); - $nick = substr($uri,0, strpos($uri, '@')); - - if (strpos($uri, '@twitter.com')) { - return array("network" => NETWORK_TWITTER); - } - $lrdd = self::xrd($host); - - if (!$lrdd) { - return self::mail($uri, $uid); - } - $addr = $uri; - } else { - return false; - } - - $webfinger = false; - - /// @todo Do we need the prefix "acct:" or "acct://"? - - foreach ($lrdd AS $key => $link) { - if ($webfinger) { - continue; - } - if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json"))) { - continue; - } - // At first try it with the given uri - $path = str_replace('{uri}', urlencode($uri), $link); - $webfinger = self::webfinger($path); - - // We cannot be sure that the detected address was correct, so we don't use the values - if ($webfinger AND ($uri != $addr)) { - $nick = ""; - $addr = ""; - } - - // Try webfinger with the address (user@domain.tld) - if (!$webfinger) { - $path = str_replace('{uri}', urlencode($addr), $link); - $webfinger = self::webfinger($path); - } - - // Mastodon needs to have it with "acct:" - if (!$webfinger) { - $path = str_replace('{uri}', urlencode("acct:".$addr), $link); - $webfinger = self::webfinger($path); - } - } - if (!$webfinger) { - return self::feed($uri); - } - - $result = false; - - logger("Probing ".$uri, LOGGER_DEBUG); - - if (in_array($network, array("", NETWORK_DFRN))) - $result = self::dfrn($webfinger); - if ((!$result AND ($network == "")) OR ($network == NETWORK_DIASPORA)) - $result = self::diaspora($webfinger); - if ((!$result AND ($network == "")) OR ($network == NETWORK_OSTATUS)) - $result = self::ostatus($webfinger); - if ((!$result AND ($network == "")) OR ($network == NETWORK_PUMPIO)) - $result = self::pumpio($webfinger); - if ((!$result AND ($network == "")) OR ($network == NETWORK_FEED)) - $result = self::feed($uri); - else { - // We overwrite the detected nick with our try if the previois routines hadn't detected it. - // Additionally it is overwritten when the nickname doesn't make sense (contains spaces). - if ((!isset($result["nick"]) OR ($result["nick"] == "") OR (strstr($result["nick"], " "))) AND ($nick != "")) - $result["nick"] = $nick; - - if ((!isset($result["addr"]) OR ($result["addr"] == "")) AND ($addr != "")) - $result["addr"] = $addr; - } - - logger($uri." is ".$result["network"], LOGGER_DEBUG); - - if (!isset($result["baseurl"]) OR ($result["baseurl"] == "")) { - $pos = strpos($result["url"], $host); - if ($pos) - $result["baseurl"] = substr($result["url"], 0, $pos).$host; - } - - return $result; - } - - /** - * @brief Perform a webfinger request. - * - * For details see RFC 7033: - * - * @param string $url Address that should be probed - * - * @return array webfinger data - */ - private function webfinger($url) { - - $xrd_timeout = Config::get('system','xrd_timeout', 20); - $redirects = 0; - - $ret = z_fetch_url($url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml')); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $data = $ret['body']; - - $xrd = parse_xml_string($data, false); - - if (!is_object($xrd)) { - // If it is not XML, maybe it is JSON - $webfinger = json_decode($data, true); - - if (!isset($webfinger["links"])) - return false; - - return $webfinger; - } - - $xrd_arr = xml::element_to_array($xrd); - if (!isset($xrd_arr["xrd"]["link"])) - return false; - - $webfinger = array(); - - if (isset($xrd_arr["xrd"]["subject"])) - $webfinger["subject"] = $xrd_arr["xrd"]["subject"]; - - if (isset($xrd_arr["xrd"]["alias"])) - $webfinger["aliases"] = $xrd_arr["xrd"]["alias"]; - - $webfinger["links"] = array(); - - foreach ($xrd_arr["xrd"]["link"] AS $value => $data) { - if (isset($data["@attributes"])) - $attributes = $data["@attributes"]; - elseif ($value == "@attributes") - $attributes = $data; - else - continue; - - $webfinger["links"][] = $attributes; - } - return $webfinger; - } - - /** - * @brief Poll the Friendica specific noscrape page. - * - * "noscrape" is a faster alternative to fetch the data from the hcard. - * This functionality was originally created for the directory. - * - * @param string $noscrape Link to the noscrape page - * @param array $data The already fetched data - * - * @return array noscrape data - */ - private function poll_noscrape($noscrape, $data) { - $ret = z_fetch_url($noscrape); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $content = $ret['body']; - if (!$content) { - return false; - } - - $json = json_decode($content, true); - if (!is_array($json)) - return false; - - if (isset($json["fn"])) - $data["name"] = $json["fn"]; - - if (isset($json["addr"])) - $data["addr"] = $json["addr"]; - - if (isset($json["nick"])) - $data["nick"] = $json["nick"]; - - if (isset($json["comm"])) - $data["community"] = $json["comm"]; - - if (isset($json["tags"])) { - $keywords = implode(" ", $json["tags"]); - if ($keywords != "") - $data["keywords"] = $keywords; - } - - $location = formatted_location($json); - if ($location) - $data["location"] = $location; - - if (isset($json["about"])) - $data["about"] = $json["about"]; - - if (isset($json["key"])) - $data["pubkey"] = $json["key"]; - - if (isset($json["photo"])) - $data["photo"] = $json["photo"]; - - if (isset($json["dfrn-request"])) - $data["request"] = $json["dfrn-request"]; - - if (isset($json["dfrn-confirm"])) - $data["confirm"] = $json["dfrn-confirm"]; - - if (isset($json["dfrn-notify"])) - $data["notify"] = $json["dfrn-notify"]; - - if (isset($json["dfrn-poll"])) - $data["poll"] = $json["dfrn-poll"]; - - return $data; - } - - /** - * @brief Check for valid DFRN data - * - * @param array $data DFRN data - * - * @return int Number of errors - */ - public static function valid_dfrn($data) { - $errors = 0; - if(!isset($data['key'])) - $errors ++; - if(!isset($data['dfrn-request'])) - $errors ++; - if(!isset($data['dfrn-confirm'])) - $errors ++; - if(!isset($data['dfrn-notify'])) - $errors ++; - if(!isset($data['dfrn-poll'])) - $errors ++; - return $errors; - } - - /** - * @brief Fetch data from a DFRN profile page and via "noscrape" - * - * @param string $profile Link to the profile page - * - * @return array profile data - */ - public static function profile($profile) { - - $data = array(); - - logger("Check profile ".$profile, LOGGER_DEBUG); - - // Fetch data via noscrape - this is faster - $noscrape = str_replace(array("/hcard/", "/profile/"), "/noscrape/", $profile); - $data = self::poll_noscrape($noscrape, $data); - - if (!isset($data["notify"]) OR !isset($data["confirm"]) OR - !isset($data["request"]) OR !isset($data["poll"]) OR - !isset($data["poco"]) OR !isset($data["name"]) OR - !isset($data["photo"])) - $data = self::poll_hcard($profile, $data, true); - - $prof_data = array(); - $prof_data["addr"] = $data["addr"]; - $prof_data["nick"] = $data["nick"]; - $prof_data["dfrn-request"] = $data["request"]; - $prof_data["dfrn-confirm"] = $data["confirm"]; - $prof_data["dfrn-notify"] = $data["notify"]; - $prof_data["dfrn-poll"] = $data["poll"]; - $prof_data["dfrn-poco"] = $data["poco"]; - $prof_data["photo"] = $data["photo"]; - $prof_data["fn"] = $data["name"]; - $prof_data["key"] = $data["pubkey"]; - - logger("Result for profile ".$profile.": ".print_r($prof_data, true), LOGGER_DEBUG); - - return $prof_data; - } - - /** - * @brief Check for DFRN contact - * - * @param array $webfinger Webfinger data - * - * @return array DFRN data - */ - private function dfrn($webfinger) { - - $hcard = ""; - $data = array(); - foreach ($webfinger["links"] AS $link) { - if (($link["rel"] == NAMESPACE_DFRN) AND ($link["href"] != "")) - $data["network"] = NETWORK_DFRN; - elseif (($link["rel"] == NAMESPACE_FEED) AND ($link["href"] != "")) - $data["poll"] = $link["href"]; - elseif (($link["rel"] == "http://webfinger.net/rel/profile-page") AND - ($link["type"] == "text/html") AND ($link["href"] != "")) - $data["url"] = $link["href"]; - elseif (($link["rel"] == "http://microformats.org/profile/hcard") AND ($link["href"] != "")) - $hcard = $link["href"]; - elseif (($link["rel"] == NAMESPACE_POCO) AND ($link["href"] != "")) - $data["poco"] = $link["href"]; - elseif (($link["rel"] == "http://webfinger.net/rel/avatar") AND ($link["href"] != "")) - $data["photo"] = $link["href"]; - - elseif (($link["rel"] == "http://joindiaspora.com/seed_location") AND ($link["href"] != "")) - $data["baseurl"] = trim($link["href"], '/'); - elseif (($link["rel"] == "http://joindiaspora.com/guid") AND ($link["href"] != "")) - $data["guid"] = $link["href"]; - elseif (($link["rel"] == "diaspora-public-key") AND ($link["href"] != "")) { - $data["pubkey"] = base64_decode($link["href"]); - - //if (strstr($data["pubkey"], 'RSA ') OR ($link["type"] == "RSA")) - if (strstr($data["pubkey"], 'RSA ')) - $data["pubkey"] = rsatopem($data["pubkey"]); - } - } - - if (!isset($data["network"]) OR ($hcard == "")) - return false; - - // Fetch data via noscrape - this is faster - $noscrape = str_replace("/hcard/", "/noscrape/", $hcard); - $data = self::poll_noscrape($noscrape, $data); - - if (isset($data["notify"]) AND isset($data["confirm"]) AND isset($data["request"]) AND - isset($data["poll"]) AND isset($data["name"]) AND isset($data["photo"])) - return $data; - - $data = self::poll_hcard($hcard, $data, true); - - return $data; - } - - /** - * @brief Poll the hcard page (Diaspora and Friendica specific) - * - * @param string $hcard Link to the hcard page - * @param array $data The already fetched data - * @param boolean $dfrn Poll DFRN specific data - * - * @return array hcard data - */ - private function poll_hcard($hcard, $data, $dfrn = false) { - $ret = z_fetch_url($hcard); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $content = $ret['body']; - if (!$content) { - return false; - } - - $doc = new DOMDocument(); - if (!@$doc->loadHTML($content)) - return false; - - $xpath = new DomXPath($doc); - - $vcards = $xpath->query("//div[contains(concat(' ', @class, ' '), ' vcard ')]"); - if (!is_object($vcards)) - return false; - - if ($vcards->length > 0) { - $vcard = $vcards->item(0); - - // We have to discard the guid from the hcard in favour of the guid from lrdd - // Reason: Hubzilla doesn't use the value "uid" in the hcard like Diaspora does. - $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' uid ')]", $vcard); // */ - if (($search->length > 0) AND ($data["guid"] == "")) - $data["guid"] = $search->item(0)->nodeValue; - - $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' nickname ')]", $vcard); // */ - if ($search->length > 0) - $data["nick"] = $search->item(0)->nodeValue; - - $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' fn ')]", $vcard); // */ - if ($search->length > 0) - $data["name"] = $search->item(0)->nodeValue; - - $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' searchable ')]", $vcard); // */ - if ($search->length > 0) - $data["searchable"] = $search->item(0)->nodeValue; - - $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' key ')]", $vcard); // */ - if ($search->length > 0) { - $data["pubkey"] = $search->item(0)->nodeValue; - if (strstr($data["pubkey"], 'RSA ')) - $data["pubkey"] = rsatopem($data["pubkey"]); - } - - $search = $xpath->query("//*[@id='pod_location']", $vcard); // */ - if ($search->length > 0) - $data["baseurl"] = trim($search->item(0)->nodeValue, "/"); - } - - $avatar = array(); - $photos = $xpath->query("//*[contains(concat(' ', @class, ' '), ' photo ') or contains(concat(' ', @class, ' '), ' avatar ')]", $vcard); // */ - foreach ($photos AS $photo) { - $attr = array(); - foreach ($photo->attributes as $attribute) { - $attr[$attribute->name] = trim($attribute->value); - } - - if (isset($attr["src"]) AND isset($attr["width"])) { - $avatar[$attr["width"]] = $attr["src"]; - } - - // We don't have a width. So we just take everything that we got. - // This is a Hubzilla workaround which doesn't send a width. - if ((sizeof($avatar) == 0) AND isset($attr["src"])) { - $avatar[] = $attr["src"]; - } - } - - if (sizeof($avatar)) { - ksort($avatar); - $data["photo"] = array_pop($avatar); - } - - if ($dfrn) { - // Poll DFRN specific data - $search = $xpath->query("//link[contains(concat(' ', @rel), ' dfrn-')]"); - if ($search->length > 0) { - foreach ($search AS $link) { - //$data["request"] = $search->item(0)->nodeValue; - $attr = array(); - foreach ($link->attributes as $attribute) - $attr[$attribute->name] = trim($attribute->value); - - $data[substr($attr["rel"], 5)] = $attr["href"]; - } - } - - // Older Friendica versions had used the "uid" field differently than newer versions - if ($data["nick"] == $data["guid"]) - unset($data["guid"]); - } - - - return $data; - } - - /** - * @brief Check for Diaspora contact - * - * @param array $webfinger Webfinger data - * - * @return array Diaspora data - */ - private function diaspora($webfinger) { - - $hcard = ""; - $data = array(); - foreach ($webfinger["links"] AS $link) { - if (($link["rel"] == "http://microformats.org/profile/hcard") AND ($link["href"] != "")) - $hcard = $link["href"]; - elseif (($link["rel"] == "http://joindiaspora.com/seed_location") AND ($link["href"] != "")) - $data["baseurl"] = trim($link["href"], '/'); - elseif (($link["rel"] == "http://joindiaspora.com/guid") AND ($link["href"] != "")) - $data["guid"] = $link["href"]; - elseif (($link["rel"] == "http://webfinger.net/rel/profile-page") AND - ($link["type"] == "text/html") AND ($link["href"] != "")) - $data["url"] = $link["href"]; - elseif (($link["rel"] == NAMESPACE_FEED) AND ($link["href"] != "")) - $data["poll"] = $link["href"]; - elseif (($link["rel"] == NAMESPACE_POCO) AND ($link["href"] != "")) - $data["poco"] = $link["href"]; - elseif (($link["rel"] == "salmon") AND ($link["href"] != "")) - $data["notify"] = $link["href"]; - elseif (($link["rel"] == "diaspora-public-key") AND ($link["href"] != "")) { - $data["pubkey"] = base64_decode($link["href"]); - - //if (strstr($data["pubkey"], 'RSA ') OR ($link["type"] == "RSA")) - if (strstr($data["pubkey"], 'RSA ')) - $data["pubkey"] = rsatopem($data["pubkey"]); - } - } - - if (!isset($data["url"]) OR ($hcard == "")) - return false; - - if (is_array($webfinger["aliases"])) - foreach ($webfinger["aliases"] AS $alias) - if (normalise_link($alias) != normalise_link($data["url"]) AND !strstr($alias, "@")) - $data["alias"] = $alias; - - // Fetch further information from the hcard - $data = self::poll_hcard($hcard, $data); - - if (!$data) - return false; - - if (isset($data["url"]) AND isset($data["guid"]) AND isset($data["baseurl"]) AND - isset($data["pubkey"]) AND ($hcard != "")) { - $data["network"] = NETWORK_DIASPORA; - - // The Diaspora handle must always be lowercase - $data["addr"] = strtolower($data["addr"]); - - // We have to overwrite the detected value for "notify" since Hubzilla doesn't send it - $data["notify"] = $data["baseurl"]."/receive/users/".$data["guid"]; - $data["batch"] = $data["baseurl"]."/receive/public"; - } else - return false; - - return $data; - } - - /** - * @brief Check for OStatus contact - * - * @param array $webfinger Webfinger data - * - * @return array OStatus data - */ - private function ostatus($webfinger) { - $data = array(); - if (is_array($webfinger["aliases"])) { - foreach ($webfinger["aliases"] AS $alias) { - if (strstr($alias, "@")) { - $data["addr"] = str_replace('acct:', '', $alias); - } - } - } - - if (is_string($webfinger["subject"]) AND strstr($webfinger["subject"], "@")) { - $data["addr"] = str_replace('acct:', '', $webfinger["subject"]); - } - $pubkey = ""; - foreach ($webfinger["links"] AS $link) { - if (($link["rel"] == "http://webfinger.net/rel/profile-page") AND - ($link["type"] == "text/html") AND ($link["href"] != "")) { - $data["url"] = $link["href"]; - } elseif (($link["rel"] == "salmon") AND ($link["href"] != "")) { - $data["notify"] = $link["href"]; - } elseif (($link["rel"] == NAMESPACE_FEED) AND ($link["href"] != "")) { - $data["poll"] = $link["href"]; - } elseif (($link["rel"] == "magic-public-key") AND ($link["href"] != "")) { - $pubkey = $link["href"]; - - if (substr($pubkey, 0, 5) === 'data:') { - if (strstr($pubkey, ',')) { - $pubkey = substr($pubkey, strpos($pubkey, ',') + 1); - } else { - $pubkey = substr($pubkey, 5); - } - } elseif (normalise_link($pubkey) == 'http://') { - $ret = z_fetch_url($pubkey); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $pubkey = $ret['body']; - } - - $key = explode(".", $pubkey); - - if (sizeof($key) >= 3) { - $m = base64url_decode($key[1]); - $e = base64url_decode($key[2]); - $data["pubkey"] = metopem($m,$e); - } - } - } - - if (isset($data["notify"]) AND isset($data["pubkey"]) AND - isset($data["poll"]) AND isset($data["url"])) { - $data["network"] = NETWORK_OSTATUS; - } else { - return false; - } - // Fetch all additional data from the feed - $ret = z_fetch_url($data["poll"]); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $feed = $ret['body']; - $feed_data = feed_import($feed,$dummy1,$dummy2, $dummy3, true); - if (!$feed_data) { - return false; - } - if ($feed_data["header"]["author-name"] != "") { - $data["name"] = $feed_data["header"]["author-name"]; - } - if ($feed_data["header"]["author-nick"] != "") { - $data["nick"] = $feed_data["header"]["author-nick"]; - } - if ($feed_data["header"]["author-avatar"] != "") { - $data["photo"] = ostatus::fix_avatar($feed_data["header"]["author-avatar"], $data["url"]); - } - if ($feed_data["header"]["author-id"] != "") { - $data["alias"] = $feed_data["header"]["author-id"]; - } - if ($feed_data["header"]["author-location"] != "") { - $data["location"] = $feed_data["header"]["author-location"]; - } - if ($feed_data["header"]["author-about"] != "") { - $data["about"] = $feed_data["header"]["author-about"]; - } - // OStatus has serious issues when the the url doesn't fit (ssl vs. non ssl) - // So we take the value that we just fetched, although the other one worked as well - if ($feed_data["header"]["author-link"] != "") { - $data["url"] = $feed_data["header"]["author-link"]; - } - /// @todo Fetch location and "about" from the feed as well - return $data; - } - - /** - * @brief Fetch data from a pump.io profile page - * - * @param string $profile Link to the profile page - * - * @return array profile data - */ - private function pumpio_profile_data($profile) { - - $doc = new DOMDocument(); - if (!@$doc->loadHTMLFile($profile)) - return false; - - $xpath = new DomXPath($doc); - - $data = array(); - - // This is ugly - but pump.io doesn't seem to know a better way for it - $data["name"] = trim($xpath->query("//h1[@class='media-header']")->item(0)->nodeValue); - $pos = strpos($data["name"], chr(10)); - if ($pos) - $data["name"] = trim(substr($data["name"], 0, $pos)); - - $avatar = $xpath->query("//img[@class='img-rounded media-object']")->item(0); - if ($avatar) - foreach ($avatar->attributes as $attribute) - if ($attribute->name == "src") - $data["photo"] = trim($attribute->value); - - $data["location"] = $xpath->query("//p[@class='location']")->item(0)->nodeValue; - $data["about"] = $xpath->query("//p[@class='summary']")->item(0)->nodeValue; - - return $data; - } - - /** - * @brief Check for pump.io contact - * - * @param array $webfinger Webfinger data - * - * @return array pump.io data - */ - private function pumpio($webfinger) { - - $data = array(); - foreach ($webfinger["links"] AS $link) { - if (($link["rel"] == "http://webfinger.net/rel/profile-page") AND - ($link["type"] == "text/html") AND ($link["href"] != "")) - $data["url"] = $link["href"]; - elseif (($link["rel"] == "activity-inbox") AND ($link["href"] != "")) - $data["notify"] = $link["href"]; - elseif (($link["rel"] == "activity-outbox") AND ($link["href"] != "")) - $data["poll"] = $link["href"]; - elseif (($link["rel"] == "dialback") AND ($link["href"] != "")) - $data["dialback"] = $link["href"]; - } - if (isset($data["poll"]) AND isset($data["notify"]) AND - isset($data["dialback"]) AND isset($data["url"])) { - - // by now we use these fields only for the network type detection - // So we unset all data that isn't used at the moment - unset($data["dialback"]); - - $data["network"] = NETWORK_PUMPIO; - } else - return false; - - $profile_data = self::pumpio_profile_data($data["url"]); - - if (!$profile_data) - return false; - - $data = array_merge($data, $profile_data); - - return $data; - } - - /** - * @brief Check page for feed link - * - * @param string $url Page link - * - * @return string feed link - */ - private function get_feed_link($url) { - $doc = new DOMDocument(); - - if (!@$doc->loadHTMLFile($url)) - return false; - - $xpath = new DomXPath($doc); - - //$feeds = $xpath->query("/html/head/link[@type='application/rss+xml']"); - $feeds = $xpath->query("/html/head/link[@type='application/rss+xml' and @rel='alternate']"); - if (!is_object($feeds)) - return false; - - if ($feeds->length == 0) - return false; - - $feed_url = ""; - - foreach ($feeds AS $feed) { - $attr = array(); - foreach ($feed->attributes as $attribute) - $attr[$attribute->name] = trim($attribute->value); - - if ($feed_url == "") - $feed_url = $attr["href"]; - } - - return $feed_url; - } - - /** - * @brief Check for feed contact - * - * @param string $url Profile link - * @param boolean $probe Do a probe if the page contains a feed link - * - * @return array feed data - */ - private function feed($url, $probe = true) { - $ret = z_fetch_url($url); - if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { - return false; - } - $feed = $ret['body']; - $feed_data = feed_import($feed, $dummy1, $dummy2, $dummy3, true); - - if (!$feed_data) { - if (!$probe) - return false; - - $feed_url = self::get_feed_link($url); - - if (!$feed_url) - return false; - - return self::feed($feed_url, false); - } - - if ($feed_data["header"]["author-name"] != "") - $data["name"] = $feed_data["header"]["author-name"]; - - if ($feed_data["header"]["author-nick"] != "") - $data["nick"] = $feed_data["header"]["author-nick"]; - - if ($feed_data["header"]["author-avatar"] != "") - $data["photo"] = $feed_data["header"]["author-avatar"]; - - if ($feed_data["header"]["author-id"] != "") - $data["alias"] = $feed_data["header"]["author-id"]; - - $data["url"] = $url; - $data["poll"] = $url; - - if ($feed_data["header"]["author-link"] != "") - $data["baseurl"] = $feed_data["header"]["author-link"]; - else - $data["baseurl"] = $data["url"]; - - $data["network"] = NETWORK_FEED; - - return $data; - } - - /** - * @brief Check for mail contact - * - * @param string $uri Profile link - * @param integer $uid User ID - * - * @return array mail data - */ - private function mail($uri, $uid) { - - if (!validate_email($uri)) - return false; - - $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid)); - - $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1", intval($uid)); - - if (dbm::is_result($x) && dbm::is_result($r)) { - $mailbox = construct_mailbox_name($r[0]); - $password = ''; - openssl_private_decrypt(hex2bin($r[0]['pass']), $password,$x[0]['prvkey']); - $mbox = email_connect($mailbox,$r[0]['user'], $password); - if(!mbox) - return false; - } - - $msgs = email_poll($mbox, $uri); - logger('searching '.$uri.', '.count($msgs).' messages found.', LOGGER_DEBUG); - - if (!count($msgs)) - return false; - - $data = array(); - - $data["addr"] = $uri; - $data["network"] = NETWORK_MAIL; - $data["name"] = substr($uri, 0, strpos($uri,'@')); - $data["nick"] = $data["name"]; - $data["photo"] = avatar_img($uri); - - $phost = substr($uri, strpos($uri,'@') + 1); - $data["url"] = 'http://'.$phost."/".$data["nick"]; - $data["notify"] = 'smtp '.random_string(); - $data["poll"] = 'email '.random_string(); - - $x = email_msg_meta($mbox, $msgs[0]); - if(stristr($x[0]->from, $uri)) - $adr = imap_rfc822_parse_adrlist($x[0]->from, ''); - elseif(stristr($x[0]->to, $uri)) - $adr = imap_rfc822_parse_adrlist($x[0]->to, ''); - if(isset($adr)) { - foreach($adr as $feadr) { - if((strcasecmp($feadr->mailbox, $data["name"]) == 0) - &&(strcasecmp($feadr->host, $phost) == 0) - && (strlen($feadr->personal))) { - - $personal = imap_mime_header_decode($feadr->personal); - $data["name"] = ""; - foreach($personal as $perspart) - if ($perspart->charset != "default") - $data["name"] .= iconv($perspart->charset, 'UTF-8//IGNORE', $perspart->text); - else - $data["name"] .= $perspart->text; - - $data["name"] = notags($data["name"]); - } - } - } - imap_close($mbox); - - return $data; - } -} -?> diff --git a/include/Scrape.php b/include/Scrape.php deleted file mode 100644 index bb9af60d70..0000000000 --- a/include/Scrape.php +++ /dev/null @@ -1,35 +0,0 @@ - smilie shortcut * 'icons' => icon in html - * + * * @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array) */ public static function get_list() { @@ -64,41 +66,41 @@ class Smilies { ); $icons = array( - '<3', - '</3', - '<\\3', - ':-)', - ';-)', - ':-(', - ':-P', - ':-p', - ':-\', - ':-\', - ':-x', - ':-X', - ':-D', - '8-|', - '8-O', - ':-O', - '\\o/', - 'o.O', - 'O.o', - 'o_O', - 'O_o', - ':\'(', - ':-!', - ':-/', - ':-[', - '8-)', - ':beer', - ':homebrew', - ':coffee', - ':facepalm', - ':like', - ':dislike', - '~friendica ~friendica', - 'redred#matrix', - 'redred#matrixmatrix' + '<3', + '</3', + '<\\3', + ':-)', + ';-)', + ':-(', + ':-P', + ':-p', + ':-\', + ':-\', + ':-x', + ':-X', + ':-D', + '8-|', + '8-O', + ':-O', + '\\o/', + 'o.O', + 'O.o', + 'o_O', + 'O_o', + ':\'(', + ':-!', + ':-/', + ':-[', + '8-)', + ':beer', + ':homebrew', + ':coffee', + ':facepalm', + ':like', + ':dislike', + '~friendica ~friendica', + 'redred#matrix', + 'redred#matrixmatrix' ); $params = array('texts' => $texts, 'icons' => $icons); @@ -121,7 +123,7 @@ class Smilies { * * @param string $s * @param boolean $sample - * + * * @return string HML Output of the Smilie */ public static function replace($s, $sample = false) { @@ -166,7 +168,7 @@ class Smilies { * * @param string $x * @return string HTML Output - * + * * @todo: Rework because it doesn't work correctly */ private function preg_heart($x) { @@ -174,7 +176,7 @@ class Smilies { return $x[0]; $t = ''; for($cnt = 0; $cnt < strlen($x[1]); $cnt ++) - $t .= '<3'; + $t .= '<3'; $r = str_replace($x[0],$t,$x[0]); return $r; } diff --git a/include/acl_selectors.php b/include/acl_selectors.php index f57af575af..c7c6bb206a 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -4,6 +4,8 @@ * @file include/acl_selectors.php */ +use Friendica\App; + require_once "include/contact_selectors.php"; require_once "include/contact_widgets.php"; require_once "include/DirSearch.php"; @@ -543,7 +545,7 @@ function acl_lookup(App $a, $out_type = 'json') { if ($type == '') { - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr`, `forum`, `prv` FROM `contact` WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != '' AND NOT (`network` IN ('%s', '%s')) $sql_extra2 @@ -552,7 +554,7 @@ function acl_lookup(App $a, $out_type = 'json') { dbesc(NETWORK_OSTATUS), dbesc(NETWORK_STATUSNET) ); } elseif ($type == 'c') { - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr`, `forum`, `prv` FROM `contact` WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != '' AND NOT (`network` IN ('%s')) $sql_extra2 @@ -562,7 +564,7 @@ function acl_lookup(App $a, $out_type = 'json') { ); } elseif ($type == 'm') { - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr` FROM `contact` WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `network` IN ('%s','%s','%s') $sql_extra2 @@ -573,7 +575,7 @@ function acl_lookup(App $a, $out_type = 'json') { dbesc(NETWORK_DIASPORA) ); } elseif ($type == 'a') { - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr`, `forum`, `prv` FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra2 ORDER BY `name` ASC ", @@ -617,6 +619,7 @@ function acl_lookup(App $a, $out_type = 'json') { 'network' => $g['network'], 'link' => $g['url'], 'nick' => htmlentities(($g['attag']) ? $g['attag'] : $g['nick']), + 'addr' => htmlentities(($g['addr']) ? $g['addr'] : $g['url']), 'forum' => ((x($g, 'forum') || x($g, 'prv')) ? 1 : 0), ); } @@ -661,6 +664,7 @@ function acl_lookup(App $a, $out_type = 'json') { 'network' => $contact['network'], 'link' => $contact['url'], 'nick' => htmlentities($contact['nick'] ? : $contact['addr']), + 'addr' => htmlentities(($contact['addr']) ? $contact['addr'] : $contact['url']), 'forum' => $contact['forum'] ); } diff --git a/include/api.php b/include/api.php index 97c09c20a9..67e1917258 100644 --- a/include/api.php +++ b/include/api.php @@ -6,7 +6,8 @@ * @todo Automatically detect if incoming data is HTML or BBCode */ -use \Friendica\Core\Config; +use Friendica\App; +use Friendica\Core\Config; require_once 'include/HTTPExceptions.php'; require_once 'include/bbcode.php'; @@ -525,6 +526,15 @@ $called_api = null; } } + if (is_null($user) && x($_GET, 'profileurl')) { + $user = dbesc(normalise_link($_GET['profileurl'])); + $nick = $user; + $extra_query = "AND `contact`.`nurl` = '%s' "; + if (api_user() !== false) { + $extra_query .= "AND `contact`.`uid`=".intval(api_user()); + } + } + if (is_null($user) AND ($a->argc > (count($called_api) - 1)) AND (count($called_api) > 0)) { $argid = count($called_api); list($user, $null) = explode(".", $a->argv[$argid]); @@ -1400,6 +1410,7 @@ $called_api = null; /// @TODO move to top of file or somewhere better api_register_func('api/users/show','api_users_show'); + api_register_func('api/externalprofile/show','api_users_show'); function api_users_search($type) { @@ -3276,14 +3287,117 @@ $called_api = null; api_register_func('api/oauth/request_token', 'api_oauth_request_token', false); api_register_func('api/oauth/access_token', 'api_oauth_access_token', false); - function api_fr_photos_list($type) { + + /** + * @brief delete a complete photoalbum with all containing photos from database through api + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_fr_photoalbum_delete($type) { + if (api_user() === false) { + throw new ForbiddenException(); + } + // input params + $album = (x($_REQUEST,'album') ? $_REQUEST['album'] : ""); + + // we do not allow calls without album string + if ($album == "") { + throw new BadRequestException("no albumname specified"); + } + // check if album is existing + $r = q("SELECT DISTINCT `resource-id` FROM `photo` WHERE `uid` = %d AND `album` = '%s'", + intval(api_user()), + dbesc($album)); + if (!dbm::is_result($r)) + throw new BadRequestException("album not available"); + + // function for setting the items to "deleted = 1" which ensures that comments, likes etc. are not shown anymore + // to the user and the contacts of the users (drop_items() performs the federation of the deletion to other networks + foreach ($r as $rr) { + $photo_item = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `resource-id` = '%s' AND `type` = 'photo'", + intval(local_user()), + dbesc($rr['resource-id']) + ); + + if (!dbm::is_result($photo_item)) { + throw new InternalServerErrorException("problem with deleting items occured"); + } + drop_item($photo_item[0]['id'],false); + } + + // now let's delete all photos from the album + $result = q("DELETE FROM `photo` WHERE `uid` = %d AND `album` = '%s'", + intval(api_user()), + dbesc($album)); + + // return success of deletion or error message + if ($result) { + $answer = array('result' => 'deleted', 'message' => 'album `' . $album . '` with all containing photos has been deleted.'); + return api_format_data("photoalbum_delete", $type, array('$result' => $answer)); + } else { + throw new InternalServerErrorException("unknown error - deleting from database failed"); + } + + } + + /** + * @brief update the name of the album for all photos of an album + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_fr_photoalbum_update($type) { if (api_user() === false) { throw new ForbiddenException(); } + // input params + $album = (x($_REQUEST,'album') ? $_REQUEST['album'] : ""); + $album_new = (x($_REQUEST,'album_new') ? $_REQUEST['album_new'] : ""); + + // we do not allow calls without album string + if ($album == "") { + throw new BadRequestException("no albumname specified"); + } + if ($album_new == "") { + throw new BadRequestException("no new albumname specified"); + } + // check if album is existing + $r = q("SELECT `id` FROM `photo` WHERE `uid` = %d AND `album` = '%s'", + intval(api_user()), + dbesc($album)); + if (!dbm::is_result($r)) { + throw new BadRequestException("album not available"); + } + // now let's update all photos to the albumname + $result = q("UPDATE `photo` SET `album` = '%s' WHERE `uid` = %d AND `album` = '%s'", + dbesc($album_new), + intval(api_user()), + dbesc($album)); + + // return success of updating or error message + if ($result) { + $answer = array('result' => 'updated', 'message' => 'album `' . $album . '` with all containing photos has been renamed to `' . $album_new . '`.'); + return api_format_data("photoalbum_update", $type, array('$result' => $answer)); + } else { + throw new InternalServerErrorException("unknown error - updating in database failed"); + } + } + - $r = q("SELECT `resource-id`, MAX(`scale`) AS `scale`, `album`, `filename`, `type` - FROM `photo` - WHERE `uid` = %d AND `album` != 'Contact Photos' GROUP BY `resource-id`, `album`, `filename`, `type`", + /** + * @brief list all photos of the authenticated user + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_fr_photos_list($type) { + if (api_user() === false) { + throw new ForbiddenException(); + } + $r = q("SELECT `resource-id`, MAX(scale) AS `scale`, `album`, `filename`, `type`, MAX(`created`) AS `created`, + MAX(`edited`) AS `edited`, MAX(`desc`) AS `desc` FROM `photo` + WHERE `uid` = %d AND `album` != 'Contact Photos' GROUP BY `resource-id`", intval(local_user()) ); $typetoext = array( @@ -3291,7 +3405,7 @@ $called_api = null; 'image/png' => 'png', 'image/gif' => 'gif' ); - $data = array('photo' => array()); + $data = array('photo'=>array()); if (dbm::is_result($r)) { foreach ($r as $rr) { $photo = array(); @@ -3300,6 +3414,9 @@ $called_api = null; $photo['filename'] = $rr['filename']; $photo['type'] = $rr['type']; $thumb = App::get_baseurl() . "/photo/" . $rr['resource-id'] . "-" . $rr['scale'] . "." . $typetoext[$rr['type']]; + $photo['created'] = $rr['created']; + $photo['edited'] = $rr['edited']; + $photo['desc'] = $rr['desc']; if ($type == "xml") { $data['photo'][] = array("@attributes" => $photo, "1" => $thumb); @@ -3312,26 +3429,563 @@ $called_api = null; return api_format_data("photos", $type, $data); } + /** + * @brief upload a new photo or change an existing photo + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_fr_photo_create_update($type) { + if (api_user() === false) { + throw new ForbiddenException(); + } + // input params + $photo_id = (x($_REQUEST, 'photo_id') ? $_REQUEST['photo_id'] : null); + $desc = (x($_REQUEST, 'desc') ? $_REQUEST['desc'] : (array_key_exists('desc', $_REQUEST) ? "" : null)); // extra check necessary to distinguish between 'not provided' and 'empty string' + $album = (x($_REQUEST,'album') ? $_REQUEST['album'] : null); + $album_new = (x($_REQUEST,'album_new') ? $_REQUEST['album_new'] : null); + $allow_cid = (x($_REQUEST, 'allow_cid') ? $_REQUEST['allow_cid'] : (array_key_exists('allow_cid', $_REQUEST) ? " " : null)); + $deny_cid = (x($_REQUEST, 'deny_cid') ? $_REQUEST['deny_cid'] : (array_key_exists('deny_cid', $_REQUEST) ? " " : null)); + $allow_gid = (x($_REQUEST, 'allow_gid') ? $_REQUEST['allow_gid'] : (array_key_exists('allow_gid', $_REQUEST) ? " " : null)); + $deny_gid = (x($_REQUEST, 'deny_gid') ? $_REQUEST['deny_gid'] : (array_key_exists('deny_gid', $_REQUEST) ? " " : null)); + $visibility = (x($_REQUEST, 'visibility') ? (($_REQUEST['visibility'] == "true" || $_REQUEST['visibility'] == 1) ? true : false) : false); + + // do several checks on input parameters + // we do not allow calls without album string + if ($album == null) { + throw new BadRequestException("no albumname specified"); + } + // if photo_id == null --> we are uploading a new photo + if ($photo_id == null) { + $mode = "create"; + + // error if no media posted in create-mode + if (!x($_FILES,'media')) { + // Output error + throw new BadRequestException("no media data submitted"); + } + + // album_new will be ignored in create-mode + $album_new = ""; + } else { + $mode = "update"; + + // check if photo is existing in database + $r = q("SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' AND `album` = '%s'", + intval(api_user()), + dbesc($photo_id), + dbesc($album)); + if (!dbm::is_result($r)) { + throw new BadRequestException("photo not available"); + } + } + + // checks on acl strings provided by clients + $acl_input_error = false; + $acl_input_error |= check_acl_input($allow_cid); + $acl_input_error |= check_acl_input($deny_cid); + $acl_input_error |= check_acl_input($allow_gid); + $acl_input_error |= check_acl_input($deny_gid); + if ($acl_input_error) { + throw new BadRequestException("acl data invalid"); + } + // now let's upload the new media in create-mode + if ($mode == "create") { + $media = $_FILES['media']; + $data = save_media_to_database("photo", $media, $type, $album, trim($allow_cid), trim($deny_cid), trim($allow_gid), trim($deny_gid), $desc, $visibility); + + // return success of updating or error message + if (!is_null($data)) { + return api_format_data("photo_create", $type, $data); + } else { + throw new InternalServerErrorException("unknown error - uploading photo failed, see Friendica log for more information"); + } + } + + // now let's do the changes in update-mode + if ($mode == "update") { + $sql_extra = ""; + + if (!is_null($desc)) { + $sql_extra .= (($sql_extra != "") ? " ," : "") . "`desc` = '$desc'"; + } + + if (!is_null($album_new)) { + $sql_extra .= (($sql_extra != "") ? " ," : "") . "`album` = '$album_new'"; + } + + if (!is_null($allow_cid)) { + $allow_cid = trim($allow_cid); + $sql_extra .= (($sql_extra != "") ? " ," : "") . "`allow_cid` = '$allow_cid'"; + } + + if (!is_null($deny_cid)) { + $deny_cid = trim($deny_cid); + $sql_extra .= (($sql_extra != "") ? " ," : "") . "`deny_cid` = '$deny_cid'"; + } + + if (!is_null($allow_gid)) { + $allow_gid = trim($allow_gid); + $sql_extra .= (($sql_extra != "") ? " ," : "") . "`allow_gid` = '$allow_gid'"; + } + + if (!is_null($deny_gid)) { + $deny_gid = trim($deny_gid); + $sql_extra .= (($sql_extra != "") ? " ," : "") . "`deny_gid` = '$deny_gid'"; + } + + $result = false; + if ($sql_extra != "") { + $nothingtodo = false; + $result = q("UPDATE `photo` SET %s, `edited`='%s' WHERE `uid` = %d AND `resource-id` = '%s' AND `album` = '%s'", + $sql_extra, + datetime_convert(), // update edited timestamp + intval(api_user()), + dbesc($photo_id), + dbesc($album)); + } else { + $nothingtodo = true; + } + + if (x($_FILES,'media')) { + $nothingtodo = false; + $media = $_FILES['media']; + $data = save_media_to_database("photo", $media, $type, $album, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $desc, 0, $visibility, $photo_id); + if (!is_null($data)) { + return api_format_data("photo_update", $type, $data); + } + } + + // return success of updating or error message + if ($result) { + $answer = array('result' => 'updated', 'message' => 'Image id `' . $photo_id . '` has been updated.'); + return api_format_data("photo_update", $type, array('$result' => $answer)); + } else { + if ($nothingtodo) { + $answer = array('result' => 'cancelled', 'message' => 'Nothing to update for image id `' . $photo_id . '`.'); + return api_format_data("photo_update", $type, array('$result' => $answer)); + } + throw new InternalServerErrorException("unknown error - update photo entry in database failed"); + } + } + throw new InternalServerErrorException("unknown error - this error on uploading or updating a photo should never happen"); + } + + + /** + * @brief delete a single photo from the database through api + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_fr_photo_delete($type) { + if (api_user() === false) { + throw new ForbiddenException(); + } + // input params + $photo_id = (x($_REQUEST, 'photo_id') ? $_REQUEST['photo_id'] : null); + + // do several checks on input parameters + // we do not allow calls without photo id + if ($photo_id == null) { + throw new BadRequestException("no photo_id specified"); + } + // check if photo is existing in database + $r = q("SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'", + intval(api_user()), + dbesc($photo_id) + ); + if (!dbm::is_result($r)) { + throw new BadRequestException("photo not available"); + } + // now we can perform on the deletion of the photo + $result = q("DELETE FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'", + intval(api_user()), + dbesc($photo_id)); + + // return success of deletion or error message + if ($result) { + // retrieve the id of the parent element (the photo element) + $photo_item = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `resource-id` = '%s' AND `type` = 'photo'", + intval(local_user()), + dbesc($photo_id) + ); + + if (!dbm::is_result($photo_item)) { + throw new InternalServerErrorException("problem with deleting items occured"); + } + // function for setting the items to "deleted = 1" which ensures that comments, likes etc. are not shown anymore + // to the user and the contacts of the users (drop_items() do all the necessary magic to avoid orphans in database and federate deletion) + drop_item($photo_item[0]['id'], false); + + $answer = array('result' => 'deleted', 'message' => 'photo with id `' . $photo_id . '` has been deleted from server.'); + return api_format_data("photo_delete", $type, array('$result' => $answer)); + } else { + throw new InternalServerErrorException("unknown error on deleting photo from database table"); + } + } + + + /** + * @brief returns the details of a specified photo id, if scale is given, returns the photo data in base 64 + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ function api_fr_photo_detail($type) { if (api_user() === false) { throw new ForbiddenException(); - } elseif (!x($_REQUEST, 'photo_id')) { + } + if (!x($_REQUEST, 'photo_id')) { throw new BadRequestException("No photo id."); } $scale = (x($_REQUEST, 'scale') ? intval($_REQUEST['scale']) : false); - $scale_sql = ($scale === false ? "" : sprintf("AND `scale`=%d",intval($scale))); - $data_sql = ($scale === false ? "" : "ANY_VALUE(`data`) AS data`,"); - - $r = q("SELECT %s ANY_VALUE(`resource-id`) AS `resource-id`, ANY_VALUE(`created`) AS `created`, - ANY_VALUE(`edited`) AS `edited`, ANY_VALUE(`title`) AS `title`, ANY_VALUE(`desc`) AS `desc`, - ANY_VALUE(`album`) AS `album`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`, - ANY_VALUE(`height`) AS `height`, ANY_VALUE(`width`) AS `width`, ANY_VALUE(`datasize`) AS `datasize`, - ANY_VALUE(`profile`) AS `profile`, min(`scale`) as minscale, max(`scale`) as maxscale - FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' %s", + $photo_id = $_REQUEST['photo_id']; + + // prepare json/xml output with data from database for the requested photo + $data = prepare_photo_data($type, $scale, $photo_id); + + return api_format_data("photo_detail", $type, $data); + } + + + /** + * @brief updates the profile image for the user (either a specified profile or the default profile) + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_account_update_profile_image($type) { + if (api_user() === false) { + throw new ForbiddenException(); + } + // input params + $profileid = (x($_REQUEST, 'profile_id') ? $_REQUEST['profile_id'] : 0); + + // error if image data is missing + if (!x($_FILES, 'image')) { + throw new BadRequestException("no media data submitted"); + } + + // check if specified profile id is valid + if ($profileid != 0) { + $r = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `id` = %d", + intval(api_user()), + intval($profileid)); + // error message if specified profile id is not in database + if (!dbm::is_result($r)) { + throw new BadRequestException("profile_id not available"); + } + $is_default_profile = $r['profile']; + } else { + $is_default_profile = 1; + } + + // get mediadata from image or media (Twitter call api/account/update_profile_image provides image) + $media = null; + if (x($_FILES, 'image')) { + $media = $_FILES['image']; + } elseif (x($_FILES, 'media')) { + $media = $_FILES['media']; + } + // save new profile image + $data = save_media_to_database("profileimage", $media, $type, t('Profile Photos'), "", "", "", "", "", $is_default_profile); + + // get filetype + if (is_array($media['type'])) { + $filetype = $media['type'][0]; + } else { + $filetype = $media['type']; + } + if ($filetype == "image/jpeg") { + $fileext = "jpg"; + } elseif ($filetype == "image/png") { + $fileext = "png"; + } + // change specified profile or all profiles to the new resource-id + if ($is_default_profile) { + $r = q("UPDATE `photo` SET `profile` = 0 WHERE `profile` = 1 AND `resource-id` != '%s' AND `uid` = %d", + dbesc($data['photo']['id']), + intval(local_user()) + ); + + $r = q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `self` AND `uid` = %d", + dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-4.' . $fileext), + dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-5.' . $fileext), + dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-6.' . $fileext), + intval(local_user()) + ); + } else { + $r = q("UPDATE `profile` SET `photo` = '%s', `thumb` = '%s' WHERE `id` = %d AND `uid` = %d", + dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-4.' . $filetype), + dbesc(App::get_baseurl() . '/photo/' . $data['photo']['id'] . '-5.' . $filetype), + intval($_REQUEST['profile']), + intval(local_user()) + ); + } + + // we'll set the updated profile-photo timestamp even if it isn't the default profile, + // so that browsers will do a cache update unconditionally + + $r = q("UPDATE `contact` SET `avatar-date` = '%s' WHERE `self` = 1 AND `uid` = %d", + dbesc(datetime_convert()), + intval(local_user()) + ); + + // Update global directory in background + //$user = api_get_user(get_app()); + $url = App::get_baseurl() . '/profile/' . get_app()->user['nickname']; + if ($url && strlen(get_config('system', 'directory'))) { + proc_run(PRIORITY_LOW, "include/directory.php", $url); + } + + require_once 'include/profile_update.php'; + profile_change(); + + // output for client + if ($data) { + return api_account_verify_credentials($type); + } else { + // SaveMediaToDatabase failed for some reason + throw new InternalServerErrorException("image upload failed"); + } + } + + // place api-register for photoalbum calls before 'api/friendica/photo', otherwise this function is never reached + api_register_func('api/friendica/photoalbum/delete', 'api_fr_photoalbum_delete', true, API_METHOD_DELETE); + api_register_func('api/friendica/photoalbum/update', 'api_fr_photoalbum_update', true, API_METHOD_POST); + api_register_func('api/friendica/photos/list', 'api_fr_photos_list', true); + api_register_func('api/friendica/photo/create', 'api_fr_photo_create_update', true, API_METHOD_POST); + api_register_func('api/friendica/photo/update', 'api_fr_photo_create_update', true, API_METHOD_POST); + api_register_func('api/friendica/photo/delete', 'api_fr_photo_delete', true, API_METHOD_DELETE); + api_register_func('api/friendica/photo', 'api_fr_photo_detail', true); + api_register_func('api/account/update_profile_image', 'api_account_update_profile_image', true, API_METHOD_POST); + + + function check_acl_input($acl_string) { + if ($acl_string == null || $acl_string == " ") { + return false; + } + $contact_not_found = false; + + // split into array of cid's + preg_match_all("/<[A-Za-z0-9]+>/", $acl_string, $array); + + // check for each cid if it is available on server + $cid_array = $array[0]; + foreach ($cid_array as $cid) { + $cid = str_replace("<", "", $cid); + $cid = str_replace(">", "", $cid); + $contact = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d", + intval($cid), + intval(api_user())); + $contact_not_found |= !dbm::is_result($contact); + } + return $contact_not_found; + } + + function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $desc, $profile = 0, $visibility = false, $photo_id = null) { + $visitor = 0; + $src = ""; + $filetype = ""; + $filename = ""; + $filesize = 0; + + if (is_array($media)) { + if (is_array($media['tmp_name'])) { + $src = $media['tmp_name'][0]; + } else { + $src = $media['tmp_name']; + } + if (is_array($media['name'])) { + $filename = basename($media['name'][0]); + } else { + $filename = basename($media['name']); + } + if (is_array($media['size'])) { + $filesize = intval($media['size'][0]); + } else { + $filesize = intval($media['size']); + } + if (is_array($media['type'])) { + $filetype = $media['type'][0]; + } else { + $filetype = $media['type']; + } + } + + if ($filetype == "") { + $filetype=guess_image_type($filename); + } + $imagedata = getimagesize($src); + if ($imagedata) { + $filetype = $imagedata['mime']; + } + logger("File upload src: " . $src . " - filename: " . $filename . + " - size: " . $filesize . " - type: " . $filetype, LOGGER_DEBUG); + + // check if there was a php upload error + if ($filesize == 0 && $media['error'] == 1) { + throw new InternalServerErrorException("image size exceeds PHP config settings, file was rejected by server"); + } + // check against max upload size within Friendica instance + $maximagesize = get_config('system', 'maximagesize'); + if (($maximagesize) && ($filesize > $maximagesize)) { + $formattedBytes = formatBytes($maximagesize); + throw new InternalServerErrorException("image size exceeds Friendica config setting (uploaded size: $formattedBytes)"); + } + + // create Photo instance with the data of the image + $imagedata = @file_get_contents($src); + $ph = new Photo($imagedata, $filetype); + if (! $ph->is_valid()) { + throw new InternalServerErrorException("unable to process image data"); + } + + // check orientation of image + $ph->orient($src); + @unlink($src); + + // check max length of images on server + $max_length = get_config('system', 'max_image_length'); + if (! $max_length) { + $max_length = MAX_IMAGE_LENGTH; + } + if ($max_length > 0) { + $ph->scaleImage($max_length); + logger("File upload: Scaling picture to new size " . $max_length, LOGGER_DEBUG); + } + $width = $ph->getWidth(); + $height = $ph->getHeight(); + + // create a new resource-id if not already provided + $hash = ($photo_id == null) ? photo_new_resource() : $photo_id; + + if ($mediatype == "photo") { + // upload normal image (scales 0, 1, 2) + logger("photo upload: starting new photo upload", LOGGER_DEBUG); + + $r =$ph->store(local_user(), $visitor, $hash, $filename, $album, 0, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc); + if (! $r) { + logger("photo upload: image upload with scale 0 (original size) failed"); + } + if($width > 640 || $height > 640) { + $ph->scaleImage(640); + $r = $ph->store(local_user(),$visitor, $hash, $filename, $album, 1, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc); + if (! $r) { + logger("photo upload: image upload with scale 1 (640x640) failed"); + } + } + + if ($width > 320 || $height > 320) { + $ph->scaleImage(320); + $r = $ph->store(local_user(), $visitor, $hash, $filename, $album, 2, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc); + if (! $r) { + logger("photo upload: image upload with scale 2 (320x320) failed"); + } + } + logger("photo upload: new photo upload ended", LOGGER_DEBUG); + } elseif ($mediatype == "profileimage") { + // upload profile image (scales 4, 5, 6) + logger("photo upload: starting new profile image upload", LOGGER_DEBUG); + + if ($width > 175 || $height > 175) { + $ph->scaleImage(175); + $r = $ph->store(local_user(),$visitor, $hash, $filename, $album, 4, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc); + if (! $r) { + logger("photo upload: profile image upload with scale 4 (175x175) failed"); + } + } + + if ($width > 80 || $height > 80) { + $ph->scaleImage(80); + $r = $ph->store(local_user(),$visitor, $hash, $filename, $album, 5, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc); + if (! $r) { + logger("photo upload: profile image upload with scale 5 (80x80) failed"); + } + } + + if ($width > 48 || $height > 48) { + $ph->scaleImage(48); + $r = $ph->store(local_user(), $visitor, $hash, $filename, $album, 6, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc); + if (! $r) { + logger("photo upload: profile image upload with scale 6 (48x48) failed"); + } + } + $ph->__destruct(); + logger("photo upload: new profile image upload ended", LOGGER_DEBUG); + } + + if ($r) { + // create entry in 'item'-table on new uploads to enable users to comment/like/dislike the photo + if ($photo_id == null && $mediatype == "photo") { + post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility); + } + // on success return image data in json/xml format (like /api/friendica/photo does when no scale is given) + return prepare_photo_data($type, false, $hash); + } else { + throw new InternalServerErrorException("image upload failed"); + } + } + + function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility = false) { + // get data about the api authenticated user + $uri = item_new_uri(get_app()->get_hostname(), intval(api_user())); + $owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user())); + + $arr = array(); + $arr['guid'] = get_guid(32); + $arr['uid'] = intval(api_user()); + $arr['uri'] = $uri; + $arr['parent-uri'] = $uri; + $arr['type'] = 'photo'; + $arr['wall'] = 1; + $arr['resource-id'] = $hash; + $arr['contact-id'] = $owner_record[0]['id']; + $arr['owner-name'] = $owner_record[0]['name']; + $arr['owner-link'] = $owner_record[0]['url']; + $arr['owner-avatar'] = $owner_record[0]['thumb']; + $arr['author-name'] = $owner_record[0]['name']; + $arr['author-link'] = $owner_record[0]['url']; + $arr['author-avatar'] = $owner_record[0]['thumb']; + $arr['title'] = ""; + $arr['allow_cid'] = $allow_cid; + $arr['allow_gid'] = $allow_gid; + $arr['deny_cid'] = $deny_cid; + $arr['deny_gid'] = $deny_gid; + $arr['last-child'] = 1; + $arr['visible'] = $visibility; + $arr['origin'] = 1; + + $typetoext = array( + 'image/jpeg' => 'jpg', + 'image/png' => 'png', + 'image/gif' => 'gif' + ); + + // adds link to the thumbnail scale photo + $arr['body'] = '[url=' . App::get_baseurl() . '/photos/' . $owner_record[0]['name'] . '/image/' . $hash . ']' + . '[img]' . App::get_baseurl() . '/photo/' . $hash . '-' . "2" . '.'. $typetoext[$filetype] . '[/img]' + . '[/url]'; + + // do the magic for storing the item in the database and trigger the federation to other contacts + item_store($arr); + } + + function prepare_photo_data($type, $scale, $photo_id) { + $scale_sql = ($scale === false ? "" : sprintf("and scale=%d", intval($scale))); + $data_sql = ($scale === false ? "" : "data, "); + + // added allow_cid, allow_gid, deny_cid, deny_gid to output as string like stored in database + // clients needs to convert this in their way for further processing + $r = q("SELECT %s `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`, + `type`, `height`, `width`, `datasize`, `profile`, `allow_cid`, `deny_cid`, `allow_gid`, `deny_gid`, + MIN(`scale`) AS `minscale`, MAX(`scale`) AS `maxscale` + FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' %s GROUP BY `resource-id`", $data_sql, intval(local_user()), - dbesc($_REQUEST['photo_id']), + dbesc($photo_id), $scale_sql ); @@ -3341,6 +3995,7 @@ $called_api = null; 'image/gif' => 'gif' ); + // prepare output data for photo if (dbm::is_result($r)) { $data = array('photo' => $r[0]); $data['photo']['id'] = $data['photo']['resource-id']; @@ -3353,13 +4008,16 @@ $called_api = null; $data['photo']['links'] = array(); for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) { $data['photo']['links'][$k . ":link"]["@attributes"] = array("type" => $data['photo']['type'], - "scale" => $k, - "href" => App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]); + "scale" => $k, + "href" => App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]); } } else { $data['photo']['link'] = array(); + // when we have profile images we could have only scales from 4 to 6, but index of array always needs to start with 0 + $i = 0; for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) { - $data['photo']['link'][$k] = App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]; + $data['photo']['link'][$i] = App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]; + $i++; } } unset($data['photo']['resource-id']); @@ -3370,12 +4028,53 @@ $called_api = null; throw new NotFoundException(); } - return api_format_data("photo_detail", $type, $data); - } + // retrieve item element for getting activities (like, dislike etc.) related to photo + $item = q("SELECT * FROM `item` WHERE `uid` = %d AND `resource-id` = '%s' AND `type` = 'photo'", + intval(local_user()), + dbesc($photo_id) + ); + $data['photo']['friendica_activities'] = api_format_items_activities($item[0], $type); - api_register_func('api/friendica/photos/list', 'api_fr_photos_list', true); - api_register_func('api/friendica/photo', 'api_fr_photo_detail', true); + // retrieve comments on photo + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`, + `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, + `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, + `contact`.`id` AS `cid` + FROM `item` + STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid` + AND (NOT `contact`.`blocked` OR `contact`.`pending`) + WHERE `item`.`parent` = %d AND `item`.`visible` + AND NOT `item`.`moderated` AND NOT `item`.`deleted` + AND `item`.`uid` = %d AND (`item`.`verb`='%s' OR `type`='photo')", + intval($item[0]['parent']), + intval(api_user()), + dbesc(ACTIVITY_POST) + ); + // prepare output of comments + $commentData = api_format_items($r, api_get_user(get_app()), false, $type); + $comments = array(); + if ($type == "xml") { + $k = 0; + foreach ($commentData as $comment) { + $comments[$k++ . ":comment"] = $comment; + } + } else { + foreach ($commentData as $comment) { + $comments[] = $comment; + } + } + $data['photo']['friendica_comments'] = $comments; + + // include info if rights on photo and rights on item are mismatching + $rights_mismatch = $data['photo']['allow_cid'] != $item[0]['allow_cid'] || + $data['photo']['deny_cid'] != $item[0]['deny_cid'] || + $data['photo']['allow_gid'] != $item[0]['allow_gid'] || + $data['photo']['deny_cid'] != $item[0]['deny_cid']; + $data['photo']['rights_mismatch'] = $rights_mismatch; + + return $data; + } /** @@ -4299,7 +4998,6 @@ friendships/exists friendships/show account/update_location account/update_profile_background_image -account/update_profile_image blocks/create blocks/destroy friendica/profile/update diff --git a/include/auth.php b/include/auth.php index c1a6120dbb..5dfe9d3e06 100644 --- a/include/auth.php +++ b/include/auth.php @@ -1,6 +1,7 @@ rLogFile); } } -?> diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index a07a583538..80ee1b50dc 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -1,12 +1,15 @@ 0.9)) { - $title2 = $data["url"]; - } - $text = sprintf('%s
', - $data["url"], $data["title"], $title2); + $text = style_url_for_mastodon($data["url"]); } elseif (($simplehtml != 4) AND ($simplehtml != 0)) { $text = sprintf('%s
', $data["url"], $data["title"]); } else { @@ -168,6 +159,54 @@ function cleancss($input) { return $cleaned; } +/** + * @brief Converts [url] BBCodes in a format that looks fine on Mastodon. (callback function) + * @param array $match Array with the matching values + * @return string reformatted link including HTML codes + */ +function bb_style_url($match) { + $url = $match[1]; + + if (isset($match[2]) AND ($match[1] != $match[2])) { + return $match[0]; + } + + $parts = parse_url($url); + if (!isset($parts['scheme'])) { + return $match[0]; + } + + return style_url_for_mastodon($url); +} + +/** + * @brief Converts [url] BBCodes in a format that looks fine on Mastodon and GNU Social. + * @param string $url URL that is about to be reformatted + * @return string reformatted link including HTML codes + */ +function style_url_for_mastodon($url) { + $styled_url = $url; + + $parts = parse_url($url); + $scheme = $parts['scheme'].'://'; + $styled_url = str_replace($scheme, '', $styled_url); + + $html = ''. + ''; + + if (strlen($styled_url) > 30) { + $html .= '%s'. + ''; + + $ellipsis = substr($styled_url, 0, 30); + $rest = substr($styled_url, 30); + return sprintf($html, $url, $scheme, $ellipsis, $rest); + } else { + $html .= '%s'; + return sprintf($html, $url, $scheme, $styled_url); + } +} + function stripcode_br_cb($s) { return '[code]' . str_replace('
', '', $s[1]) . '[/code]'; } @@ -940,7 +979,14 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $simplehtml = fa // if the HTML is used to generate plain text, then don't do this search, but replace all URL of that kind to text // if ($simplehtml != 7) { if (!$forplaintext) { - $Text = preg_replace("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1$2', $Text); + if ($simplehtml != 7) { + $Text = preg_replace("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1$2', $Text); + } else { + $Text = preg_replace("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url]$2[/url]', $Text); + + $Text = preg_replace_callback("/\[url\]([$URLSearchString]*)\[\/url\]/ism", 'bb_style_url', $Text); + $Text = preg_replace_callback("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", 'bb_style_url', $Text); + } } else { $Text = preg_replace("(\[url\]([$URLSearchString]*)\[\/url\])ism", " $1 ", $Text); $Text = preg_replace_callback("&\[url=([^\[\]]*)\]\[img\](.*)\[\/img\]\[\/url\]&Usi", 'bb_RemovePictureLinks', $Text); diff --git a/include/cache.php b/include/cache.php index 98799bcf40..b56906c544 100644 --- a/include/cache.php +++ b/include/cache.php @@ -5,8 +5,8 @@ * @brief Class for storing data for a short time */ -use \Friendica\Core\Config; -use \Friendica\Core\PConfig; +use Friendica\Core\Config; +use Friendica\Core\PConfig; class Cache { /** @@ -121,9 +121,9 @@ class Cache { /** * @brief Put data in the cache according to the key - * + * * The input $value can have multiple formats. - * + * * @param string $key The key to the cached data * @param mixed $valie The value that is about to be stored * @param integer $duration The cache lifespan diff --git a/include/cli_startup.php b/include/cli_startup.php index 557d08c288..01ee90f421 100644 --- a/include/cli_startup.php +++ b/include/cli_startup.php @@ -1,6 +1,7 @@ diff --git a/include/cron.php b/include/cron.php index c4299dd4c2..bac9c8a3d8 100644 --- a/include/cron.php +++ b/include/cron.php @@ -1,5 +1,6 @@ '%s' AND `account_expires_on` < UTC_TIMESTAMP()", dbesc(NULL_DATE)); - // delete user and contact records for recently removed accounts + // delete user records for recently removed accounts $r = q("SELECT * FROM `user` WHERE `account_removed` AND `account_expires_on` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); if (dbm::is_result($r)) { foreach ($r as $user) { - q("DELETE FROM `contact` WHERE `uid` = %d", intval($user['uid'])); - q("DELETE FROM `user` WHERE `uid` = %d", intval($user['uid'])); + dba::delete('user', array('uid' => $user['uid'])); } } } diff --git a/include/datetime.php b/include/datetime.php index a840aa0a58..3578698240 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -4,7 +4,7 @@ * @brief Some functions for date and time related tasks. */ -use \Friendica\Core\Config; +use Friendica\Core\Config; /** * @brief Two-level sort for timezones. @@ -34,7 +34,7 @@ function timezone_cmp($a, $b) { /** * @brief Emit a timezone selector grouped (primarily) by continent - * + * * @param string $current Timezone * @return string Parsed HTML output */ @@ -81,17 +81,17 @@ function select_timezone($current = 'America/Los_Angeles') { /** * @brief Generating a Timezone selector - * + * * Return a select using 'field_select_raw' template, with timezones * groupped (primarily) by continent * arguments follow convetion as other field_* template array: * 'name', 'label', $value, 'help' - * + * * @param string $name Name of the selector * @param string $label Label for the selector * @param string $current Timezone * @param string $help Help text - * + * * @return string Parsed HTML */ function field_timezone($name='timezone', $label='', $current = 'America/Los_Angeles', $help){ @@ -114,7 +114,7 @@ function field_timezone($name='timezone', $label='', $current = 'America/Los_Ang * @param string $s Some parseable date/time string * @param string $fmt Output format recognised from php's DateTime class * http://www.php.net/manual/en/datetime.format.php - * + * * @return string Formatted date according to given format */ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d H:i:s") { @@ -212,7 +212,7 @@ function dob($dob) { /** * @brief Returns a date selector - * + * * @param string $format * Format string, e.g. 'ymd' or 'mdy'. Not currently supported * @param string $min @@ -223,7 +223,7 @@ function dob($dob) { * Unix timestamp of default date * @param string $id * ID and name of datetimepicker (defaults to "datetimepicker") - * + * * @return string Parsed HTML output. */ function datesel($format, $min, $max, $default, $id = 'datepicker') { @@ -232,7 +232,7 @@ function datesel($format, $min, $max, $default, $id = 'datepicker') { /** * @brief Returns a time selector - * + * * @param string $format * Format string, e.g. 'ymd' or 'mdy'. Not currently supported * @param $h @@ -241,7 +241,7 @@ function datesel($format, $min, $max, $default, $id = 'datepicker') { * Already selected minute * @param string $id * ID and name of datetimepicker (defaults to "timepicker") - * + * * @return string Parsed HTML output. */ function timesel($format, $h, $m, $id = 'timepicker') { @@ -270,7 +270,7 @@ function timesel($format, $h, $m, $id = 'timepicker') { * @param $maxfrom * set maximum date from picker with id $maxfrom (none by default) * @param bool $required default false - * + * * @return string Parsed HTML output. * * @todo Once browser support is better this could probably be replaced with @@ -417,7 +417,7 @@ function relative_date($posted_date, $format = null) { * @param string $dob Date of Birth * @param string $owner_tz (optional) Timezone of the person of interest * @param string $viewer_tz (optional) Timezone of the person viewing - * + * * @return int Age in years */ function age($dob, $owner_tz = '', $viewer_tz = '') { @@ -452,7 +452,7 @@ function age($dob, $owner_tz = '', $viewer_tz = '') { * * @param int $y Year * @param int $m Month (1=January, 12=December) - * + * * @return int Number of days in the given month */ function get_dim($y, $m) { @@ -477,7 +477,7 @@ function get_dim($y, $m) { * * @param int $y Year * @param int $m Month (1=January, 12=December) - * + * * @return string day 0 = Sunday through 6 = Saturday */ function get_first_dim($y,$m) { @@ -498,7 +498,7 @@ function get_first_dim($y,$m) { * @param int $m Month * @param bool $links (default false) * @param string $class - * + * * @return string * * @todo Provide (prev,next) links, define class variations for different size calendars diff --git a/include/dba.php b/include/dba.php index 5066dcd56d..3af8522516 100644 --- a/include/dba.php +++ b/include/dba.php @@ -10,6 +10,7 @@ require_once('include/datetime.php'); * When logging, all binary info is converted to text and html entities are escaped so that * the debugging stream is safe to view within both terminals and web pages. * + * This class is for the low level database stuff that does driver specific things. */ class dba { @@ -21,12 +22,24 @@ class dba { public $connected = false; public $error = false; private $_server_info = ''; + private static $in_transaction = false; + private static $dbo; + private static $relation = array(); - function __construct($server, $user, $pass, $db, $install = false) { + function __construct($serveraddr, $user, $pass, $db, $install = false) { $a = get_app(); $stamp1 = microtime(true); + $serveraddr = trim($serveraddr); + + $serverdata = explode(':', $serveraddr); + $server = $serverdata[0]; + + if (count($serverdata) > 1) { + $port = trim($serverdata[1]); + } + $server = trim($server); $user = trim($user); $pass = trim($pass); @@ -52,6 +65,11 @@ class dba { if (class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) { $this->driver = 'pdo'; $connect = "mysql:host=".$server.";dbname=".$db; + + if (isset($port)) { + $connect .= ";port=".$port; + } + if (isset($a->config["system"]["db_charset"])) { $connect .= ";charset=".$a->config["system"]["db_charset"]; } @@ -61,7 +79,7 @@ class dba { } } elseif (class_exists('mysqli')) { $this->driver = 'mysqli'; - $this->db = @new mysqli($server,$user,$pass,$db); + $this->db = @new mysqli($server, $user, $pass, $db, $port); if (!mysqli_connect_errno()) { $this->connected = true; @@ -71,8 +89,8 @@ class dba { } } elseif (function_exists('mysql_connect')) { $this->driver = 'mysql'; - $this->db = mysql_connect($server,$user,$pass); - if ($this->db && mysql_select_db($db,$this->db)) { + $this->db = mysql_connect($serveraddr, $user, $pass); + if ($this->db && mysql_select_db($db, $this->db)) { $this->connected = true; if (isset($a->config["system"]["db_charset"])) { @@ -93,6 +111,8 @@ class dba { } } $a->save_timestamp($stamp1, "network"); + + self::$dbo = $this; } /** @@ -131,30 +151,6 @@ class dba { return $r[0]['db']; } - /** - * @brief Returns the number of rows - * - * @return integer - */ - public function num_rows() { - if (!$this->result) { - return 0; - } - - switch ($this->driver) { - case 'pdo': - $rows = $this->result->rowCount(); - break; - case 'mysqli': - $rows = $this->result->num_rows; - break; - case 'mysql': - $rows = mysql_num_rows($this->result); - break; - } - return $rows; - } - /** * @brief Analyze a database query and log this if some conditions are met. * @@ -249,7 +245,7 @@ class dba { break; } $stamp2 = microtime(true); - $duration = (float)($stamp2-$stamp1); + $duration = (float)($stamp2 - $stamp1); $a->save_timestamp($stamp1, "database"); @@ -379,41 +375,6 @@ class dba { return($r); } - public function qfetch() { - $x = false; - - if ($this->result) { - switch ($this->driver) { - case 'pdo': - $x = $this->result->fetch(PDO::FETCH_ASSOC); - break; - case 'mysqli': - $x = $this->result->fetch_array(MYSQLI_ASSOC); - break; - case 'mysql': - $x = mysql_fetch_array($this->result, MYSQL_ASSOC); - break; - } - } - return($x); - } - - public function qclose() { - if ($this->result) { - switch ($this->driver) { - case 'pdo': - $this->result->closeCursor(); - break; - case 'mysqli': - $this->result->free_result(); - break; - case 'mysql': - mysql_free_result($this->result); - break; - } - } - } - public function dbg($dbg) { $this->debug = $dbg; } @@ -497,6 +458,708 @@ class dba { } return $sql; } + + /** + * @brief Replaces the ? placeholders with the parameters in the $args array + * + * @param string $sql SQL query + * @param array $args The parameters that are to replace the ? placeholders + * @return string The replaced SQL query + */ + static private function replace_parameters($sql, $args) { + $offset = 0; + foreach ($args AS $param => $value) { + if (is_int($args[$param]) OR is_float($args[$param])) { + $replace = intval($args[$param]); + } else { + $replace = "'".self::$dbo->escape($args[$param])."'"; + } + + $pos = strpos($sql, '?', $offset); + if ($pos !== false) { + $sql = substr_replace($sql, $replace, $pos, 1); + } + $offset = $pos + strlen($replace); + } + return $sql; + } + + /** + * @brief Executes a prepared statement that returns data + * @usage Example: $r = p("SELECT * FROM `item` WHERE `guid` = ?", $guid); + * @param string $sql SQL statement + * @return object statement object + */ + static public function p($sql) { + $a = get_app(); + + $stamp1 = microtime(true); + + $args = func_get_args(); + unset($args[0]); + + // When the second function parameter is an array then use this as the parameter array + if ((count($args) > 0) AND (is_array($args[1]))) { + $params = $args[1]; + } else { + $params = $args; + } + + // Renumber the array keys to be sure that they fit + $i = 0; + $args = array(); + foreach ($params AS $param) { + $args[++$i] = $param; + } + + if (!self::$dbo OR !self::$dbo->connected) { + return false; + } + + if (substr_count($sql, '?') != count($args)) { + // Question: Should we continue or stop the query here? + logger('Parameter mismatch. Query "'.$sql.'" - Parameters '.print_r($args, true), LOGGER_DEBUG); + } + + $sql = self::$dbo->any_value_fallback($sql); + + if (x($a->config,'system') && x($a->config['system'], 'db_callstack')) { + $sql = "/*".$a->callstack()." */ ".$sql; + } + + self::$dbo->error = ''; + self::$dbo->errorno = 0; + + switch (self::$dbo->driver) { + case 'pdo': + if (!$stmt = self::$dbo->db->prepare($sql)) { + $errorInfo = self::$dbo->db->errorInfo(); + self::$dbo->error = $errorInfo[2]; + self::$dbo->errorno = $errorInfo[1]; + $retval = false; + break; + } + + foreach ($args AS $param => $value) { + $stmt->bindParam($param, $args[$param]); + } + + if (!$stmt->execute()) { + $errorInfo = $stmt->errorInfo(); + self::$dbo->error = $errorInfo[2]; + self::$dbo->errorno = $errorInfo[1]; + $retval = false; + } else { + $retval = $stmt; + } + break; + case 'mysqli': + $stmt = self::$dbo->db->stmt_init(); + + if (!$stmt->prepare($sql)) { + self::$dbo->error = $stmt->error; + self::$dbo->errorno = $stmt->errno; + $retval = false; + break; + } + + $params = ''; + $values = array(); + foreach ($args AS $param => $value) { + if (is_int($args[$param])) { + $params .= 'i'; + } elseif (is_float($args[$param])) { + $params .= 'd'; + } elseif (is_string($args[$param])) { + $params .= 's'; + } else { + $params .= 'b'; + } + $values[] = &$args[$param]; + } + + if (count($values) > 0) { + array_unshift($values, $params); + call_user_func_array(array($stmt, 'bind_param'), $values); + } + + if (!$stmt->execute()) { + self::$dbo->error = self::$dbo->db->error; + self::$dbo->errorno = self::$dbo->db->errno; + $retval = false; + } else { + $stmt->store_result(); + $retval = $stmt; + } + break; + case 'mysql': + // For the old "mysql" functions we cannot use prepared statements + $retval = mysql_query(self::replace_parameters($sql, $args), self::$dbo->db); + if (mysql_errno(self::$dbo->db)) { + self::$dbo->error = mysql_error(self::$dbo->db); + self::$dbo->errorno = mysql_errno(self::$dbo->db); + } + break; + } + + if (self::$dbo->errorno != 0) { + logger('DB Error '.self::$dbo->errorno.': '.self::$dbo->error."\n". + $a->callstack(8))."\n".self::replace_parameters($sql, $args); + } + + $a->save_timestamp($stamp1, 'database'); + + if (x($a->config,'system') && x($a->config['system'], 'db_log')) { + + $stamp2 = microtime(true); + $duration = (float)($stamp2 - $stamp1); + + if (($duration > $a->config["system"]["db_loglimit"])) { + $duration = round($duration, 3); + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + + @file_put_contents($a->config["system"]["db_log"], datetime_convert()."\t".$duration."\t". + basename($backtrace[1]["file"])."\t". + $backtrace[1]["line"]."\t".$backtrace[2]["function"]."\t". + substr(self::replace_parameters($sql, $args), 0, 2000)."\n", FILE_APPEND); + } + } + return $retval; + } + + /** + * @brief Executes a prepared statement like UPDATE or INSERT that doesn't return data + * + * @param string $sql SQL statement + * @return boolean Was the query successfull? False is returned only if an error occurred + */ + static public function e($sql) { + $a = get_app(); + + $stamp = microtime(true); + + $args = func_get_args(); + + $stmt = call_user_func_array('self::p', $args); + + if (is_bool($stmt)) { + $retval = $stmt; + } elseif (is_object($stmt)) { + $retval = true; + } else { + $retval = false; + } + + self::close($stmt); + + $a->save_timestamp($stamp, "database_write"); + + return $retval; + } + + /** + * @brief Check if data exists + * + * @param string $sql SQL statement + * @return boolean Are there rows for that query? + */ + static public function exists($sql) { + $args = func_get_args(); + + $stmt = call_user_func_array('self::p', $args); + + if (is_bool($stmt)) { + $retval = $stmt; + } else { + $retval = (self::num_rows($stmt) > 0); + } + + self::close($stmt); + + return $retval; + } + + /** + * @brief Fetches the first row + * + * @param string $sql SQL statement + * @return array first row of query + */ + static public function fetch_first($sql) { + $args = func_get_args(); + + $stmt = call_user_func_array('self::p', $args); + + if (is_bool($stmt)) { + $retval = $stmt; + } else { + $retval = self::fetch($stmt); + } + + self::close($stmt); + + return $retval; + } + + /** + * @brief Returns the number of rows of a statement + * + * @param object Statement object + * @return int Number of rows + */ + static public function num_rows($stmt) { + switch (self::$dbo->driver) { + case 'pdo': + return $stmt->rowCount(); + case 'mysqli': + return $stmt->num_rows; + case 'mysql': + return mysql_num_rows($stmt); + } + return 0; + } + + /** + * @brief Fetch a single row + * + * @param object $stmt statement object + * @return array current row + */ + static public function fetch($stmt) { + if (!is_object($stmt)) { + return false; + } + + switch (self::$dbo->driver) { + case 'pdo': + return $stmt->fetch(PDO::FETCH_ASSOC); + case 'mysqli': + // This code works, but is slow + + // Bind the result to a result array + $cols = array(); + + $cols_num = array(); + for ($x = 0; $x < $stmt->field_count; $x++) { + $cols[] = &$cols_num[$x]; + } + + call_user_func_array(array($stmt, 'bind_result'), $cols); + + if (!$stmt->fetch()) { + return false; + } + + // The slow part: + // We need to get the field names for the array keys + // It seems that there is no better way to do this. + $result = $stmt->result_metadata(); + $fields = $result->fetch_fields(); + + $columns = array(); + foreach ($cols_num AS $param => $col) { + $columns[$fields[$param]->name] = $col; + } + return $columns; + case 'mysql': + return mysql_fetch_array(self::$dbo->result, MYSQL_ASSOC); + } + } + + /** + * @brief Insert a row into a table + * + * @param string $table Table name + * @param array $param parameter array + * + * @return boolean was the insert successfull? + */ + static public function insert($table, $param) { + $sql = "INSERT INTO `".self::$dbo->escape($table)."` (`".implode("`, `", array_keys($param))."`) VALUES (". + substr(str_repeat("?, ", count($param)), 0, -2).");"; + + return self::e($sql, $param); + } + + /** + * @brief Starts a transaction + * + * @return boolean Was the command executed successfully? + */ + static public function transaction() { + if (!self::e('COMMIT')) { + return false; + } + if (!self::e('START TRANSACTION')) { + return false; + } + self::$in_transaction = true; + return true; + } + + /** + * @brief Does a commit + * + * @return boolean Was the command executed successfully? + */ + static public function commit() { + if (!self::e('COMMIT')) { + return false; + } + self::$in_transaction = false; + return true; + } + + /** + * @brief Does a rollback + * + * @return boolean Was the command executed successfully? + */ + static public function rollback() { + if (!self::e('ROLLBACK')) { + return false; + } + self::$in_transaction = false; + return true; + } + + /** + * @brief Build the array with the table relations + * + * The array is build from the database definitions in dbstructure.php + * + * This process must only be started once, since the value is cached. + */ + static private function build_relation_data() { + $definition = db_definition(); + + foreach ($definition AS $table => $structure) { + foreach ($structure['fields'] AS $field => $field_struct) { + if (isset($field_struct['relation'])) { + foreach ($field_struct['relation'] AS $rel_table => $rel_field) { + self::$relation[$rel_table][$rel_field][$table][] = $field; + } + } + } + } + } + + /** + * @brief Delete a row from a table + * + * @param string $table Table name + * @param array $param parameter array + * @param boolean $in_process Internal use: Only do a commit after the last delete + * @param array $callstack Internal use: prevent endless loops + * + * @return boolean|array was the delete successfull? When $in_process is set: deletion data + */ + static public function delete($table, $param, $in_process = false, &$callstack = array()) { + + $commands = array(); + + // Create a key for the loop prevention + $key = $table.':'.implode(':', array_keys($param)).':'.implode(':', $param); + + // We quit when this key already exists in the callstack. + if (isset($callstack[$key])) { + return $commands; + } + + $callstack[$key] = true; + + $table = self::$dbo->escape($table); + + $commands[$key] = array('table' => $table, 'param' => $param); + + // To speed up the whole process we cache the table relations + if (count(self::$relation) == 0) { + self::build_relation_data(); + } + + // Is there a relation entry for the table? + if (isset(self::$relation[$table])) { + // We only allow a simple "one field" relation. + $field = array_keys(self::$relation[$table])[0]; + $rel_def = array_values(self::$relation[$table])[0]; + + // Create a key for preventing double queries + $qkey = $field.'-'.$table.':'.implode(':', array_keys($param)).':'.implode(':', $param); + + // When the search field is the relation field, we don't need to fetch the rows + // This is useful when the leading record is already deleted in the frontend but the rest is done in the backend + if ((count($param) == 1) AND ($field == array_keys($param)[0])) { + foreach ($rel_def AS $rel_table => $rel_fields) { + foreach ($rel_fields AS $rel_field) { + $retval = self::delete($rel_table, array($rel_field => array_values($param)[0]), true, $callstack); + $commands = array_merge($commands, $retval); + } + } + // We quit when this key already exists in the callstack. + } elseif (!isset($callstack[$qkey])) { + + $callstack[$qkey] = true; + + // Fetch all rows that are to be deleted + $sql = "SELECT ".self::$dbo->escape($field)." FROM `".$table."` WHERE `". + implode("` = ? AND `", array_keys($param))."` = ?"; + + $data = self::p($sql, $param); + while ($row = self::fetch($data)) { + // Now we accumulate the delete commands + $retval = self::delete($table, array($field => $row[$field]), true, $callstack); + $commands = array_merge($commands, $retval); + } + + // Since we had split the delete command we don't need the original command anymore + unset($commands[$key]); + } + } + + if (!$in_process) { + // Now we finalize the process + $do_transaction = !self::$in_transaction; + + if ($do_transaction) { + self::transaction(); + } + + $compacted = array(); + $counter = array(); + foreach ($commands AS $command) { + if (count($command['param']) > 1) { + $sql = "DELETE FROM `".$command['table']."` WHERE `". + implode("` = ? AND `", array_keys($command['param']))."` = ?"; + + logger(dba::replace_parameters($sql, $command['param']), LOGGER_DATA); + + if (!self::e($sql, $command['param'])) { + if ($do_transaction) { + self::rollback(); + } + return false; + } + } else { + $key_table = $command['table']; + $key_param = array_keys($command['param'])[0]; + $value = array_values($command['param'])[0]; + + // Split the SQL queries in chunks of 100 values + // We do the $i stuff here to make the code better readable + $i = $counter[$key_table][$key_param]; + if (count($compacted[$key_table][$key_param][$i]) > 100) { + ++$i; + } + + $compacted[$key_table][$key_param][$i][$value] = $value; + $counter[$key_table][$key_param] = $i; + } + } + foreach ($compacted AS $table => $values) { + foreach ($values AS $field => $field_value_list) { + foreach ($field_value_list AS $field_values) { + $sql = "DELETE FROM `".$table."` WHERE `".$field."` IN (". + substr(str_repeat("?, ", count($field_values)), 0, -2).");"; + + logger(dba::replace_parameters($sql, $field_values), LOGGER_DATA); + + if (!self::e($sql, $field_values)) { + if ($do_transaction) { + self::rollback(); + } + return false; + } + } + } + } + if ($do_transaction) { + self::commit(); + } + return true; + } + + return $commands; + } + + /** + * @brief Updates rows + * + * Updates rows in the database. When $old_fields is set to an array, + * the system will only do an update if the fields in that array changed. + * + * Attention: + * Only the values in $old_fields are compared. + * This is an intentional behaviour. + * + * Example: + * We include the timestamp field in $fields but not in $old_fields. + * Then the row will only get the new timestamp when the other fields had changed. + * + * When $old_fields is set to a boolean value the system will do this compare itself. + * When $old_fields is set to "true" the system will do an insert if the row doesn't exists. + * + * Attention: + * Only set $old_fields to a boolean value when you are sure that you will update a single row. + * When you set $old_fields to "true" then $fields must contain all relevant fields! + * + * @param string $table Table name + * @param array $fields contains the fields that are updated + * @param array $condition condition array with the key values + * @param array|boolean $old_fields array with the old field values that are about to be replaced + * + * @return boolean was the update successfull? + */ + static public function update($table, $fields, $condition, $old_fields = array()) { + + /** @todo We may use MySQL specific functions here: + * INSERT INTO `config` (`cat`, `k`, `v`) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE `v` = '%s'" + * But I think that it doesn't make sense here. + */ + + $table = self::$dbo->escape($table); + + if (is_bool($old_fields)) { + $sql = "SELECT * FROM `".$table."` WHERE `". + implode("` = ? AND `", array_keys($condition))."` = ? LIMIT 1"; + + $params = array(); + foreach ($condition AS $value) { + $params[] = $value; + } + + $do_insert = $old_fields; + + $old_fields = self::fetch_first($sql, $params); + if (is_bool($old_fields)) { + if ($do_insert) { + return self::insert($table, $fields); + } + $old_fields = array(); + } + } + + $do_update = (count($old_fields) == 0); + + foreach ($old_fields AS $fieldname => $content) { + if (isset($fields[$fieldname])) { + if ($fields[$fieldname] == $content) { + unset($fields[$fieldname]); + } else { + $do_update = true; + } + } + } + + if (!$do_update OR (count($fields) == 0)) { + return true; + } + + $sql = "UPDATE `".$table."` SET `". + implode("` = ?, `", array_keys($fields))."` = ? WHERE `". + implode("` = ? AND `", array_keys($condition))."` = ?"; + + $params = array(); + foreach ($fields AS $value) { + $params[] = $value; + } + foreach ($condition AS $value) { + $params[] = $value; + } + + return self::e($sql, $params); + } + + /** + * @brief Select rows from a table + * + * @param string $table Table name + * @param array $fields array of selected fields + * @param array $condition array of fields for condition + * @param array $params array of several parameters + * + * @return boolean|object If "limit" is equal "1" only a single row is returned, else a query object is returned + * + * Example: + * $table = "item"; + * $fields = array("id", "uri", "uid", "network"); + * $condition = array("uid" => 1, "network" => 'dspr'); + * $params = array("order" => array("id", "received" => true), "limit" => 1); + * + * $data = dba::select($table, $fields, $condition, $params); + */ + static public function select($table, $fields = array(), $condition = array(), $params = array()) { + if ($table == '') { + return false; + } + + if (count($fields) > 0) { + $select_fields = "`".implode("`, `", array_values($fields))."`"; + } else { + $select_fields = "*"; + } + + if (count($condition) > 0) { + $condition_string = " WHERE `".implode("` = ? AND `", array_keys($condition))."` = ?"; + } else { + $condition_string = ""; + } + + $param_string = ''; + $single_row = false; + + if (isset($params['order'])) { + $param_string .= " ORDER BY "; + foreach ($params['order'] AS $fields => $order) { + if (!is_int($fields)) { + $param_string .= "`".$fields."` ".($order ? "DESC" : "ASC").", "; + } else { + $param_string .= "`".$order."`, "; + } + } + $param_string = substr($param_string, 0, -2); + } + + if (isset($params['limit'])) { + if (is_int($params['limit'])) { + $param_string .= " LIMIT ".$params['limit']; + $single_row =($params['limit'] == 1); + } + } + + $sql = "SELECT ".$select_fields." FROM `".$table."`".$condition_string.$param_string; + + $result = self::p($sql, $condition); + + if (is_bool($result) OR !$single_row) { + return $result; + } else { + $row = self::fetch($result); + self::close($result); + return $row; + } + } + + /** + * @brief Closes the current statement + * + * @param object $stmt statement object + * @return boolean was the close successfull? + */ + static public function close($stmt) { + if (!is_object($stmt)) { + return false; + } + + switch (self::$dbo->driver) { + case 'pdo': + return $stmt->closeCursor(); + case 'mysqli': + return $stmt->free_result(); + return $stmt->close(); + case 'mysql': + return mysql_free_result($stmt); + } + } } function printable($s) { diff --git a/include/dba_pdo.php b/include/dba_pdo.php index 56692fbb39..4549d7a0ce 100644 --- a/include/dba_pdo.php +++ b/include/dba_pdo.php @@ -1,8 +1,11 @@ getState()->get('PDOStatement'); $objQueue->getState()->update(array('result' => $objPDO)); - + # delete handler which closes the PDOStatement-cursor # this will be done manual if using this handler $objQueue->deleteHandler(QUEUE_CLOSE_CURSOR_POSITION); @@ -29,12 +32,12 @@ $objDDDBLResultHandler->add('PDOStatement', array('HANDLER' => $cloPDOStatementR * * For debugging, insert 'dbg(1);' anywhere in the program flow. * dbg(0); will turn it off. Logging is performed at LOGGER_DATA level. - * When logging, all binary info is converted to text and html entities are escaped so that + * When logging, all binary info is converted to text and html entities are escaped so that * the debugging stream is safe to view within both terminals and web pages. * */ - -if (! class_exists('dba')) { + +if (! class_exists('dba')) { class dba { private $debug = 0; @@ -45,9 +48,9 @@ class dba { function __construct($server,$user,$pass,$db,$install = false) { $a = get_app(); - + # work around, to store the database - configuration in DDDBL - $objDataObjectPool = new \DDDBL\DataObjectPool('Database-Definition'); + $objDataObjectPool = new DataObjectPool('Database-Definition'); $objDataObjectPool->add('DEFAULT', array('CONNECTION' => "mysql:host=$server;dbname=$db", 'USER' => $user, 'PASS' => $pass, @@ -78,13 +81,13 @@ class dba { } # etablish connection to database and store PDO object - \DDDBL\connect(); - $this->db = \DDDBL\getDB(); - - if (\DDDBL\isConnected()) { + DDDBL\connect(); + $this->db = DDDBL\getDB(); + + if (DDDBL\isConnected()) { $this->connected = true; } - + if (! $this->connected) { $this->db = null; if (! $install) @@ -102,12 +105,12 @@ class dba { $a = get_app(); $strHandler = (true === $onlyquery) ? 'PDOStatement' : 'MULTI'; - + $strQueryAlias = md5($sql); $strSQLType = strtoupper(strstr($sql, ' ', true)); - - $objPreparedQueryPool = new \DDDBL\DataObjectPool('Query-Definition'); - + + $objPreparedQueryPool = new DataObjectPool('Query-Definition'); + # check if query do not exists till now, if so create its definition if (!$objPreparedQueryPool->exists($strQueryAlias)) $objPreparedQueryPool->add($strQueryAlias, array('QUERY' => $sql, @@ -121,14 +124,14 @@ class dba { $stamp1 = microtime(true); try { - $r = \DDDBL\get($strQueryAlias); - + $r = DDDBL\get($strQueryAlias); + # bad workaround to emulate the bizzare behavior of mysql_query if (in_array($strSQLType, array('INSERT', 'UPDATE', 'DELETE', 'CREATE', 'DROP', 'SET'))) $result = true; $intErrorCode = false; - - } catch (\Exception $objException) { + + } catch (Exception $objException) { $result = false; $intErrorCode = $objPreparedQueryPool->get($strQueryAlias)->get('PDOStatement')->errorCode(); } @@ -166,7 +169,7 @@ class dba { $mesg = 'true'; else { # this needs fixing, but is a bug itself - #$mesg = mysql_num_rows($result) . ' results' . EOL; + #$mesg = mysql_num_rows($result) . ' results' . EOL; } $str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg @@ -190,13 +193,13 @@ class dba { if (isset($result) AND (($result === true) || ($result === false))) return $result; - + if ($onlyquery) { $this->result = $r; # this will store an PDOStatement Object in result $this->result->execute(); # execute the Statement, to get its result return true; } - + //$a->save_timestamp($stamp1, "database"); if ($this->debug) @@ -212,7 +215,7 @@ class dba { return $this->result->fetch(); } - + public function qclose() { if ($this->result) return $this->result->closeCursor(); @@ -228,13 +231,13 @@ class dba { # this workaround is needed, because quote creates "'" and the beginning and the end # of the string, which is correct. but until now the queries set this delimiter manually, # so we must remove them from here and wait until everything uses prepared statements - return mb_substr($strQuoted, 1, mb_strlen($strQuoted) - 2); + return mb_substr($strQuoted, 1, mb_strlen($strQuoted) - 2); } } function __destruct() { - if ($this->db) - \DDDBL\disconnect(); + if ($this->db) + DDDBL\disconnect(); } }} @@ -248,14 +251,14 @@ function printable($s) { }} // Procedural functions -if (! function_exists('dbg')) { +if (! function_exists('dbg')) { function dbg($state) { global $db; if ($db) $db->dbg($state); }} -if (! function_exists('dbesc')) { +if (! function_exists('dbesc')) { function dbesc($str) { global $db; if ($db && $db->connected) @@ -271,7 +274,7 @@ function dbesc($str) { // Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d", // 'user', 1); -if (! function_exists('q')) { +if (! function_exists('q')) { function q($sql) { global $db; @@ -288,12 +291,12 @@ function q($sql) { /** * - * This will happen occasionally trying to store the - * session data after abnormal program termination + * This will happen occasionally trying to store the + * session data after abnormal program termination * */ logger('dba: no database: ' . print_r($args,true)); - return false; + return false; }} @@ -303,7 +306,7 @@ function q($sql) { * */ -if (! function_exists('dbq')) { +if (! function_exists('dbq')) { function dbq($sql) { global $db; @@ -315,10 +318,10 @@ function dbq($sql) { }} -// Caller is responsible for ensuring that any integer arguments to +// Caller is responsible for ensuring that any integer arguments to // dbesc_array are actually integers and not malformed strings containing -// SQL injection vectors. All integer array elements should be specifically -// cast to int to avoid trouble. +// SQL injection vectors. All integer array elements should be specifically +// cast to int to avoid trouble. if (! function_exists('dbesc_array_cb')) { diff --git a/include/dbclean.php b/include/dbclean.php index bff4ff2a24..36f4f46e53 100644 --- a/include/dbclean.php +++ b/include/dbclean.php @@ -4,7 +4,7 @@ * @brief The script is called from time to time to clean the database entries and remove orphaned data. */ -use \Friendica\Core\Config; +use Friendica\Core\Config; function dbclean_run(&$argv, &$argc) { if (!Config::get('system', 'dbclean', false)) { @@ -18,13 +18,11 @@ function dbclean_run(&$argv, &$argc) { } if ($stage == 0) { - proc_run(PRIORITY_LOW, 'include/dbclean.php', 1); - proc_run(PRIORITY_LOW, 'include/dbclean.php', 2); - proc_run(PRIORITY_LOW, 'include/dbclean.php', 3); - proc_run(PRIORITY_LOW, 'include/dbclean.php', 4); - proc_run(PRIORITY_LOW, 'include/dbclean.php', 5); - proc_run(PRIORITY_LOW, 'include/dbclean.php', 6); - proc_run(PRIORITY_LOW, 'include/dbclean.php', 7); + for ($i = 1; $i <= 7; $i++) { + if (!Config::get('system', 'finished-dbclean-'.$i)) { + proc_run(PRIORITY_LOW, 'include/dbclean.php', $i); + } + } } else { remove_orphans($stage); } @@ -41,99 +39,136 @@ function remove_orphans($stage = 0) { // We split the deletion in many small tasks $limit = 1000; - if (($stage == 1) OR ($stage == 0)) { + if ($stage == 1) { logger("Deleting old global item entries from item table without user copy"); - if ($db->q("SELECT `id` FROM `item` WHERE `uid` = 0 + $r = dba::p("SELECT `id` FROM `item` WHERE `uid` = 0 AND NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0) - AND `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + AND `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found global item orphans: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `item` WHERE `id` = %d", intval($orphan["id"])); + while ($orphan = dba::fetch($r)) { + dba::delete('item', array('id' => $orphan["id"])); } - } - $db->qclose(); - logger("Done deleting old global item entries from item table without user copy"); - } + } else { + logger("No global item orphans found"); - if (($stage == 2) OR ($stage == 0)) { + } + dba::close($r); + logger("Done deleting ".$count." old global item entries from item table without user copy"); + + // We will eventually set this value when we found a good way to delete these items in another way. + // if ($count < $limit) { + // Config::set('system', 'finished-dbclean-1', true); + // } + } elseif ($stage == 2) { logger("Deleting items without parents"); - if ($db->q("SELECT `id` FROM `item` WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`) LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + $r = dba::p("SELECT `id` FROM `item` WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`) LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found item orphans without parents: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `item` WHERE `id` = %d", intval($orphan["id"])); + while ($orphan = dba::fetch($r)) { + dba::delete('item', array('id' => $orphan["id"])); } + } else { + logger("No item orphans without parents found"); } - $db->qclose(); - logger("Done deleting items without parents"); - } + dba::close($r); + logger("Done deleting ".$count." items without parents"); - if (($stage == 3) OR ($stage == 0)) { + if ($count < $limit) { + Config::set('system', 'finished-dbclean-2', true); + } + } elseif ($stage == 3) { logger("Deleting orphaned data from thread table"); - if ($db->q("SELECT `iid` FROM `thread` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`) LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + $r = dba::p("SELECT `iid` FROM `thread` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`) LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found thread orphans: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `thread` WHERE `iid` = %d", intval($orphan["iid"])); + while ($orphan = dba::fetch($r)) { + dba::delete('thread', array('iid' => $orphan["iid"])); } + } else { + logger("No thread orphans found"); } - $db->qclose(); - logger("Done deleting orphaned data from thread table"); - } + dba::close($r); + logger("Done deleting ".$count." orphaned data from thread table"); - if (($stage == 4) OR ($stage == 0)) { + if ($count < $limit) { + Config::set('system', 'finished-dbclean-3', true); + } + } elseif ($stage == 4) { logger("Deleting orphaned data from notify table"); - if ($db->q("SELECT `iid` FROM `notify` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`) LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + $r = dba::p("SELECT `iid` FROM `notify` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`) LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found notify orphans: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `notify` WHERE `iid` = %d", intval($orphan["iid"])); + while ($orphan = dba::fetch($r)) { + dba::delete('notify', array('iid' => $orphan["iid"])); } + } else { + logger("No notify orphans found"); } - $db->qclose(); - logger("Done deleting orphaned data from notify table"); - } + dba::close($r); + logger("Done deleting ".$count." orphaned data from notify table"); - if (($stage == 5) OR ($stage == 0)) { + if ($count < $limit) { + Config::set('system', 'finished-dbclean-4', true); + } + } elseif ($stage == 5) { logger("Deleting orphaned data from notify-threads table"); - if ($db->q("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + $r = dba::p("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found notify-threads orphans: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `notify-threads` WHERE `id` = %d", intval($orphan["id"])); + while ($orphan = dba::fetch($r)) { + dba::delete('notify-threads', array('id' => $orphan["id"])); } + } else { + logger("No notify-threads orphans found"); } - $db->qclose(); - logger("Done deleting orphaned data from notify-threads table"); - } - + dba::close($r); + logger("Done deleting ".$count." orphaned data from notify-threads table"); - if (($stage == 6) OR ($stage == 0)) { + if ($count < $limit) { + Config::set('system', 'finished-dbclean-5', true); + } + } elseif ($stage == 6) { logger("Deleting orphaned data from sign table"); - if ($db->q("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + $r = dba::p("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found sign orphans: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `sign` WHERE `iid` = %d", intval($orphan["iid"])); + while ($orphan = dba::fetch($r)) { + dba::delete('sign', array('iid' => $orphan["iid"])); } + } else { + logger("No sign orphans found"); } - $db->qclose(); - logger("Done deleting orphaned data from sign table"); - } + dba::close($r); + logger("Done deleting ".$count." orphaned data from sign table"); - - if (($stage == 7) OR ($stage == 0)) { + if ($count < $limit) { + Config::set('system', 'finished-dbclean-6', true); + } + } elseif ($stage == 7) { logger("Deleting orphaned data from term table"); - if ($db->q("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) LIMIT ".intval($limit), true)) { - $count = $db->num_rows(); + $r = dba::p("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) LIMIT ".intval($limit)); + $count = dba::num_rows($r); + if ($count > 0) { logger("found term orphans: ".$count); - while ($orphan = $db->qfetch()) { - q("DELETE FROM `term` WHERE `oid` = %d", intval($orphan["oid"])); + while ($orphan = dba::fetch($r)) { + dba::delete('term', array('oid' => $orphan["oid"])); } + } else { + logger("No term orphans found"); + } + dba::close($r); + logger("Done deleting ".$count." orphaned data from term table"); + + if ($count < $limit) { + Config::set('system', 'finished-dbclean-7', true); } - $db->qclose(); - logger("Done deleting orphaned data from term table"); } // Call it again if not all entries were purged @@ -142,4 +177,3 @@ function remove_orphans($stage = 0) { } } -?> diff --git a/include/dbm.php b/include/dbm.php index d28d49d63b..db50dae89c 100644 --- a/include/dbm.php +++ b/include/dbm.php @@ -2,6 +2,7 @@ /** * @brief This class contain functions for the database management * + * This class contains functions that doesn't need to know if pdo, mysqli or whatever is used. */ class dbm { /** @@ -47,6 +48,11 @@ class dbm { if (is_bool($array)) { return $array; } + + if (is_object($array)) { + return true; + } + return (is_array($array) && count($array) > 0); } @@ -104,4 +110,3 @@ class dbm { return date('Y-m-d H:i:s', $timestamp); } } -?> diff --git a/include/dbstructure.php b/include/dbstructure.php index 0d5c10f98d..6a14220c24 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -1,19 +1,45 @@ database_name())); + + if (!dbm::is_result($r)) { + echo t('There are no tables on MyISAM.')."\n"; + return; + } + + foreach ($r AS $table) { + $sql = sprintf("ALTER TABLE `%s` engine=InnoDB;", dbesc($table['TABLE_NAME'])); + echo $sql."\n"; + + $result = @$db->q($sql); + if (!dbm::is_result($result)) { + print_update_error($db, $sql); + } + } +} + /* * send the email and do what is needed to do on update fails * * @param update_id (int) number of failed update * @param error_message (str) error message */ -function update_fail($update_id, $error_message){ +function update_fail($update_id, $error_message) { //send the administrators an e-mail $admin_mail_list = "'".implode("','", array_map(dbesc, explode(",", str_replace(" ", "", $a->config['admin_email']))))."'"; $adminlist = q("SELECT uid, language, email FROM user WHERE email IN (%s)", @@ -95,10 +121,6 @@ function table_structure($table) { if (dbm::is_result($indexes)) foreach ($indexes AS $index) { - if ($index["Index_type"] == "FULLTEXT") { - continue; - } - if ($index['Key_name'] != 'PRIMARY' && $index['Non_unique'] == '0' && !isset($indexdata[$index["Key_name"]])) { $indexdata[$index["Key_name"]] = array('UNIQUE'); } @@ -279,6 +301,9 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { // Compare the field definition $field_definition = $database[$name]["fields"][$fieldname]; + // Remove the relation data that is used for the referential integrity + unset($parameters['relation']); + // We change the collation after the indexes had been changed. // This is done to avoid index length problems. // So here we always ensure that there is no need to change it. @@ -374,6 +399,14 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { $sql3 .= ";"; } + $field_list = ''; + if ($is_unique && $ignore == '') { + foreach ($structure['fields'] AS $fieldname => $parameters) { + $field_list .= 'ANY_VALUE(`' . $fieldname . '`),'; + } + $field_list = rtrim($field_list, ','); + } + if ($verbose) { // Ensure index conversion to unique removes duplicates if ($is_unique) { @@ -390,7 +423,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { echo "SET session old_alter_table=0;\n"; } else { - echo "INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";\n"; + echo "INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";\n"; echo "DROP TABLE `".$name."`;\n"; echo "RENAME TABLE `".$temp_name."` TO `".$name."`;\n"; } @@ -421,7 +454,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { $db->q("SET session old_alter_table=0;"); } else { - $r = $db->q("INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";"); + $r = $db->q("INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";"); if (!dbm::is_result($r)) { $errors .= print_update_error($db, $sql3); return $errors; @@ -460,7 +493,7 @@ function db_field_command($parameters, $create = true) { if ($parameters["not null"]) $fieldstruct .= " NOT NULL"; - if (isset($parameters["default"])){ + if (isset($parameters["default"])) { if (strpos(strtolower($parameters["type"]),"int")!==false) { $fieldstruct .= " DEFAULT ".$parameters["default"]; } else { @@ -487,7 +520,7 @@ function db_create_table($name, $fields, $verbose, $action, $indexes=null) { $primary_keys = array(); foreach ($fields AS $fieldname => $field) { $sql_rows[] = "`".dbesc($fieldname)."` ".db_field_command($field); - if (x($field,'primary') and $field['primary']!=''){ + if (x($field,'primary') and $field['primary']!='') { $primary_keys[] = $fieldname; } } @@ -606,7 +639,7 @@ function db_definition() { $database["attach"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "hash" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), "filename" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "filetype" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), @@ -626,7 +659,7 @@ function db_definition() { $database["auth_codes"] = array( "fields" => array( "id" => array("type" => "varchar(40)", "not null" => "1", "primary" => "1"), - "client_id" => array("type" => "varchar(20)", "not null" => "1", "default" => ""), + "client_id" => array("type" => "varchar(20)", "not null" => "1", "default" => "", "relation" => array("clients" => "client_id")), "redirect_uri" => array("type" => "varchar(200)", "not null" => "1", "default" => ""), "expires" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "scope" => array("type" => "varchar(250)", "not null" => "1", "default" => ""), @@ -667,7 +700,7 @@ function db_definition() { "redirect_uri" => array("type" => "varchar(200)", "not null" => "1", "default" => ""), "name" => array("type" => "text"), "icon" => array("type" => "text"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), ), "indexes" => array( "PRIMARY" => array("client_id"), @@ -688,7 +721,7 @@ function db_definition() { $database["contact"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "self" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "remote_self" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -777,7 +810,7 @@ function db_definition() { "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "guid" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), "recips" => array("type" => "text"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "creator" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "updated" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), @@ -788,12 +821,27 @@ function db_definition() { "uid" => array("uid"), ) ); + $database["conversation"] = array( + "fields" => array( + "item-uri" => array("type" => "varbinary(255)", "not null" => "1", "primary" => "1"), + "reply-to-uri" => array("type" => "varbinary(255)", "not null" => "1", "default" => ""), + "conversation-uri" => array("type" => "varbinary(255)", "not null" => "1", "default" => ""), + "conversation-href" => array("type" => "varbinary(255)", "not null" => "1", "default" => ""), + "protocol" => array("type" => "tinyint(1) unsigned", "not null" => "1", "default" => "0"), + "source" => array("type" => "mediumtext"), + "received" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), + ), + "indexes" => array( + "PRIMARY" => array("item-uri"), + "conversation-uri" => array("conversation-uri"), + ) + ); $database["event"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "guid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "uri" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "edited" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), @@ -839,15 +887,15 @@ function db_definition() { "indexes" => array( "PRIMARY" => array("id"), "addr" => array("addr(32)"), - "url" => array("url"), + "url" => array("UNIQUE", "url(190)"), ) ); $database["ffinder"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "cid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "fid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "cid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), + "fid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("fcontact" => "id")), ), "indexes" => array( "PRIMARY" => array("id"), @@ -868,8 +916,8 @@ function db_definition() { $database["fsuggest"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "request" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -884,8 +932,8 @@ function db_definition() { $database["gcign"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "gcid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "gcid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("gcontact" => "id")), ), "indexes" => array( "PRIMARY" => array("id"), @@ -924,7 +972,7 @@ function db_definition() { ), "indexes" => array( "PRIMARY" => array("id"), - "nurl" => array("nurl(64)"), + "nurl" => array("UNIQUE", "nurl(190)"), "name" => array("name(64)"), "nick" => array("nick(32)"), "addr" => array("addr(64)"), @@ -935,10 +983,10 @@ function db_definition() { $database["glink"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "gcid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "zcid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "gcid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("gcontact" => "id")), + "zcid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("gcontact" => "id")), "updated" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), ), "indexes" => array( @@ -950,7 +998,7 @@ function db_definition() { $database["group"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "visible" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "deleted" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -963,9 +1011,9 @@ function db_definition() { $database["group_member"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "gid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "contact-id" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "gid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("group" => "id")), + "contact-id" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), ), "indexes" => array( "PRIMARY" => array("id"), @@ -994,7 +1042,7 @@ function db_definition() { ), "indexes" => array( "PRIMARY" => array("id"), - "nurl" => array("nurl(32)"), + "nurl" => array("UNIQUE", "nurl(190)"), ) ); $database["hook"] = array( @@ -1013,9 +1061,9 @@ function db_definition() { $database["intro"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "fid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "contact-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "fid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("fcontact" => "id")), + "contact-id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "knowyou" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "duplex" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "note" => array("type" => "text"), @@ -1030,16 +1078,16 @@ function db_definition() { ); $database["item"] = array( "fields" => array( - "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), + "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "relation" => array("thread" => "iid")), "guid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "uri" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "contact-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "contact-id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), + "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("gcontact" => "id")), "type" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "wall" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "gravity" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), - "parent" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "parent" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), "parent-uri" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "extid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "thr-parent" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1048,11 +1096,11 @@ function db_definition() { "commented" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "received" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "changed" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), - "owner-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "owner-id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "owner-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "owner-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "owner-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "author-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "author-id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "author-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "author-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "author-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1067,7 +1115,7 @@ function db_definition() { "postopts" => array("type" => "text"), "plink" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "resource-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "event-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "event-id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("event" => "id")), "tag" => array("type" => "mediumtext"), "attach" => array("type" => "mediumtext"), "inform" => array("type" => "mediumtext"), @@ -1113,6 +1161,7 @@ function db_definition() { "uid_parenturi" => array("uid","parent-uri(190)"), "uid_contactid_created" => array("uid","contact-id","created"), "authorid_created" => array("author-id","created"), + "ownerid" => array("owner-id"), "uid_uri" => array("uid", "uri(190)"), "resource-id" => array("resource-id"), "contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"), // @@ -1128,8 +1177,8 @@ function db_definition() { $database["item_id"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "iid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "iid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "sid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "service" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), ), @@ -1155,13 +1204,13 @@ function db_definition() { $database["mail"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "guid" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), "from-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "from-photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "from-url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "contact-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "convid" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), + "contact-id" => array("type" => "varchar(255)", "not null" => "1", "default" => "", "relation" => array("contact" => "id")), + "convid" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("conv" => "id")), "title" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "body" => array("type" => "mediumtext"), "seen" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -1178,12 +1227,13 @@ function db_definition() { "convid" => array("convid"), "uri" => array("uri(64)"), "parent-uri" => array("parent-uri(64)"), + "contactid" => array("contact-id"), ) ); $database["mailacct"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "server" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "port" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "ssltype" => array("type" => "varchar(16)", "not null" => "1", "default" => ""), @@ -1203,8 +1253,8 @@ function db_definition() { $database["manage"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "mid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "mid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1221,10 +1271,10 @@ function db_definition() { "photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "date" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "msg" => array("type" => "mediumtext"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "iid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "parent" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "iid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), + "parent" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), "seen" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "verb" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "otype" => array("type" => "varchar(16)", "not null" => "1", "default" => ""), @@ -1242,10 +1292,10 @@ function db_definition() { $database["notify-threads"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "notify-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "master-parent-item" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "notify-id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("notify" => "id")), + "master-parent-item" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), "parent-item" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "receiver-uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "receiver-uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1278,7 +1328,7 @@ function db_definition() { $database["pconfig"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "cat" => array("type" => "varbinary(255)", "not null" => "1", "default" => ""), "k" => array("type" => "varbinary(255)", "not null" => "1", "default" => ""), "v" => array("type" => "mediumtext"), @@ -1291,8 +1341,8 @@ function db_definition() { $database["photo"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "contact-id" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "contact-id" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "guid" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), "resource-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), @@ -1315,6 +1365,7 @@ function db_definition() { ), "indexes" => array( "PRIMARY" => array("id"), + "contactid" => array("contact-id"), "uid_contactid" => array("uid", "contact-id"), "uid_profile" => array("uid", "profile"), "uid_album_scale_created" => array("uid", "album(32)", "scale", "created"), @@ -1325,7 +1376,7 @@ function db_definition() { $database["poll"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "q0" => array("type" => "text"), "q1" => array("type" => "text"), "q2" => array("type" => "text"), @@ -1345,7 +1396,7 @@ function db_definition() { $database["poll_result"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "poll_id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "poll_id" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("poll" => "id")), "choice" => array("type" => "int(11)", "not null" => "1", "default" => "0"), ), "indexes" => array( @@ -1368,7 +1419,7 @@ function db_definition() { $database["profile"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "profile-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "is-default" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "hide-friends" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -1418,8 +1469,8 @@ function db_definition() { $database["profile_check"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "cid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "cid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "dfrn_id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "sec" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "expire" => array("type" => "int(11)", "not null" => "1", "default" => "0"), @@ -1431,7 +1482,7 @@ function db_definition() { $database["push_subscriber"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "callback_url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "topic" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "nickname" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1446,7 +1497,7 @@ function db_definition() { $database["queue"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "cid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "network" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "last" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), @@ -1467,7 +1518,7 @@ function db_definition() { "id" => array("type" => "int(11) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "hash" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), - "uid" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "password" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "language" => array("type" => "varchar(16)", "not null" => "1", "default" => ""), "note" => array("type" => "text"), @@ -1479,7 +1530,7 @@ function db_definition() { $database["search"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "term" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), ), "indexes" => array( @@ -1503,7 +1554,7 @@ function db_definition() { $database["sign"] = array( "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), "signed_text" => array("type" => "mediumtext"), "signature" => array("type" => "text"), "signer" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1516,7 +1567,7 @@ function db_definition() { $database["spam"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), "spam" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "ham" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "term" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1533,7 +1584,7 @@ function db_definition() { $database["term"] = array( "fields" => array( "tid" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "oid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "oid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), "otype" => array("type" => "tinyint(3) unsigned", "not null" => "1", "default" => "0"), "type" => array("type" => "tinyint(3) unsigned", "not null" => "1", "default" => "0"), "term" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1543,7 +1594,7 @@ function db_definition() { "received" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "global" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "aid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), ), "indexes" => array( "PRIMARY" => array("tid"), @@ -1555,12 +1606,12 @@ function db_definition() { ); $database["thread"] = array( "fields" => array( - "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), - "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), - "owner-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), - "author-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), + "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "primary" => "1", "relation" => array("item" => "id")), + "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), + "contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), + "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("gcontact" => "id")), + "owner-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), + "author-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), "created" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "edited" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), "commented" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), @@ -1588,6 +1639,9 @@ function db_definition() { "uid_network_created" => array("uid","network","created"), "uid_contactid_commented" => array("uid","contact-id","commented"), "uid_contactid_created" => array("uid","contact-id","created"), + "contactid" => array("contact-id"), + "ownerid" => array("owner-id"), + "authorid" => array("author-id"), "uid_created" => array("uid","created"), "uid_commented" => array("uid","commented"), "uid_wall_created" => array("uid","wall","created"), @@ -1597,10 +1651,10 @@ function db_definition() { "fields" => array( "id" => array("type" => "varchar(40)", "not null" => "1", "primary" => "1"), "secret" => array("type" => "text"), - "client_id" => array("type" => "varchar(20)", "not null" => "1", "default" => ""), + "client_id" => array("type" => "varchar(20)", "not null" => "1", "default" => "", "relation" => array("clients" => "client_id")), "expires" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "scope" => array("type" => "varchar(200)", "not null" => "1", "default" => ""), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), + "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1691,8 +1745,8 @@ function db_definition() { function dbstructure_run(&$argv, &$argc) { global $a, $db; - if (is_null($a)){ - $a = new App; + if (is_null($a)) { + $a = new App(dirname(__DIR__)); } if (is_null($db)) { @@ -1730,6 +1784,9 @@ function dbstructure_run(&$argv, &$argc) { case "dumpsql": print_structure(db_definition()); return; + case "toinnodb": + convert_to_innodb(); + return; } } @@ -1741,11 +1798,12 @@ function dbstructure_run(&$argv, &$argc) { echo "dryrun show database update schema queries without running them\n"; echo "update update database schema\n"; echo "dumpsql dump database schema\n"; + echo "toinnodb convert all tables from MyISAM to InnoDB\n"; return; } -if (array_search(__file__,get_included_files())===0){ +if (array_search(__file__,get_included_files())===0) { dbstructure_run($_SERVER["argv"],$_SERVER["argc"]); killme(); } diff --git a/include/dbupdate.php b/include/dbupdate.php index 725eca7370..799ca262c8 100644 --- a/include/dbupdate.php +++ b/include/dbupdate.php @@ -1,6 +1,6 @@ setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS); $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET); - xml::add_element($doc, $root, "id", app::get_baseurl()."/profile/".$owner["nick"]); + xml::add_element($doc, $root, "id", App::get_baseurl()."/profile/".$owner["nick"]); xml::add_element($doc, $root, "title", $owner["name"]); $attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION); @@ -448,13 +450,13 @@ class dfrn { // DFRN itself doesn't uses this. But maybe someone else wants to subscribe to the public feed. ostatus::hublinks($doc, $root); - $attributes = array("rel" => "salmon", "href" => app::get_baseurl()."/salmon/".$owner["nick"]); + $attributes = array("rel" => "salmon", "href" => App::get_baseurl()."/salmon/".$owner["nick"]); xml::add_element($doc, $root, "link", "", $attributes); - $attributes = array("rel" => "http://salmon-protocol.org/ns/salmon-replies", "href" => app::get_baseurl()."/salmon/".$owner["nick"]); + $attributes = array("rel" => "http://salmon-protocol.org/ns/salmon-replies", "href" => App::get_baseurl()."/salmon/".$owner["nick"]); xml::add_element($doc, $root, "link", "", $attributes); - $attributes = array("rel" => "http://salmon-protocol.org/ns/salmon-mention", "href" => app::get_baseurl()."/salmon/".$owner["nick"]); + $attributes = array("rel" => "http://salmon-protocol.org/ns/salmon-mention", "href" => App::get_baseurl()."/salmon/".$owner["nick"]); xml::add_element($doc, $root, "link", "", $attributes); } @@ -511,7 +513,7 @@ class dfrn { } xml::add_element($doc, $author, "name", $owner["name"], $attributes); - xml::add_element($doc, $author, "uri", app::get_baseurl().'/profile/'.$owner["nickname"], $attributes); + xml::add_element($doc, $author, "uri", App::get_baseurl().'/profile/'.$owner["nickname"], $attributes); xml::add_element($doc, $author, "dfrn:handle", $owner["addr"], $attributes); $attributes = array("rel" => "photo", "type" => "image/jpeg", @@ -812,11 +814,33 @@ class dfrn { $parent = q("SELECT `guid` FROM `item` WHERE `id` = %d", intval($item["parent"])); $parent_item = (($item['thr-parent']) ? $item['thr-parent'] : $item['parent-uri']); $attributes = array("ref" => $parent_item, "type" => "text/html", - "href" => app::get_baseurl().'/display/'.$parent[0]['guid'], + "href" => App::get_baseurl().'/display/'.$parent[0]['guid'], "dfrn:diaspora_guid" => $parent[0]['guid']); xml::add_element($doc, $entry, "thr:in-reply-to", "", $attributes); } + // Add conversation data. This is used for OStatus + $conversation_href = App::get_baseurl()."/display/".$owner["nick"]."/".$item["parent"]; + $conversation_uri = $conversation_href; + + if (isset($parent_item)) { + $r = dba::fetch_first("SELECT `conversation-uri`, `conversation-href` FROM `conversation` WHERE `item-uri` = ?", $item['parent-uri']); + if (dbm::is_result($r)) { + if ($r['conversation-uri'] != '') { + $conversation_uri = $r['conversation-uri']; + } + if ($r['conversation-href'] != '') { + $conversation_href = $r['conversation-href']; + } + } + } + + $attributes = array( + "href" => $conversation_href, + "ref" => $conversation_uri); + + xml::add_element($doc, $entry, "ostatus:conversation", $conversation_uri, $attributes); + xml::add_element($doc, $entry, "id", $item["uri"]); xml::add_element($doc, $entry, "title", $item["title"]); @@ -832,7 +856,7 @@ class dfrn { // We save this value in "plink". Maybe we should read it from there as well? xml::add_element($doc, $entry, "link", "", array("rel" => "alternate", "type" => "text/html", - "href" => app::get_baseurl()."/display/".$item["guid"])); + "href" => App::get_baseurl()."/display/".$item["guid"])); // "comment-allow" is some old fashioned stuff for old Friendica versions. // It is included in the rewritten code for completeness @@ -2209,12 +2233,16 @@ class dfrn { * @param array $importer Record of the importer user mixed with contact of the content * @todo Add type-hints */ - private static function process_entry($header, $xpath, $entry, $importer) { + private static function process_entry($header, $xpath, $entry, $importer, $xml) { logger("Processing entries"); $item = $header; + $item["protocol"] = PROTOCOL_DFRN; + + $item["source"] = $xml; + // Get the uri $item["uri"] = $xpath->query("atom:id/text()", $entry)->item(0)->nodeValue; @@ -2373,6 +2401,20 @@ class dfrn { self::parse_links($links, $item); } + $item['conversation-uri'] = $xpath->query('ostatus:conversation/text()', $entry)->item(0)->nodeValue; + + $conv = $xpath->query('ostatus:conversation', $entry); + if (is_object($conv->item(0))) { + foreach ($conv->item(0)->attributes AS $attributes) { + if ($attributes->name == "ref") { + $item['conversation-uri'] = $attributes->textContent; + } + if ($attributes->name == "href") { + $item['conversation-href'] = $attributes->textContent; + } + } + } + // Is it a reply or a top level posting? $item["parent-uri"] = $item["uri"]; @@ -2801,7 +2843,7 @@ class dfrn { if (!$sort_by_date) { $entries = $xpath->query("/atom:feed/atom:entry"); foreach ($entries AS $entry) { - self::process_entry($header, $xpath, $entry, $importer); + self::process_entry($header, $xpath, $entry, $importer, $xml); } } else { $newentries = array(); @@ -2815,7 +2857,7 @@ class dfrn { ksort($newentries); foreach ($newentries AS $entry) { - self::process_entry($header, $xpath, $entry, $importer); + self::process_entry($header, $xpath, $entry, $importer, $xml); } } logger("Import done for user " . $importer["uid"] . " from contact " . $importer["id"], LOGGER_DEBUG); diff --git a/include/diaspora.php b/include/diaspora.php index b8eff62b11..820f8bd896 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -8,11 +8,12 @@ * This will change in the future. */ -use \Friendica\Core\Config; +use Friendica\App; +use Friendica\Core\Config; require_once 'include/items.php'; require_once 'include/bb2diaspora.php'; -require_once 'include/Scrape.php'; +require_once 'include/probe.php'; require_once 'include/Contact.php'; require_once 'include/Photo.php'; require_once 'include/socgraph.php'; @@ -187,7 +188,80 @@ class Diaspora { } /** - * @brief: Decodes incoming Diaspora message + * @brief: Decodes incoming Diaspora message in the new format + * + * @param array $importer Array of the importer user + * @param string $raw raw post message + * + * @return array + * 'message' -> decoded Diaspora XML message + * 'author' -> author diaspora handle + * 'key' -> author public key (converted to pkcs#8) + */ + public static function decode_raw($importer, $raw) { + $data = json_decode($raw); + + // Is it a private post? Then decrypt the outer Salmon + if (is_object($data)) { + $encrypted_aes_key_bundle = base64_decode($data->aes_key); + $ciphertext = base64_decode($data->encrypted_magic_envelope); + + $outer_key_bundle = ''; + @openssl_private_decrypt($encrypted_aes_key_bundle, $outer_key_bundle, $importer['prvkey']); + $j_outer_key_bundle = json_decode($outer_key_bundle); + + if (!is_object($j_outer_key_bundle)) { + logger('Outer Salmon did not verify. Discarding.'); + http_status_exit(400); + } + + $outer_iv = base64_decode($j_outer_key_bundle->iv); + $outer_key = base64_decode($j_outer_key_bundle->key); + + $xml = diaspora::aes_decrypt($outer_key, $outer_iv, $ciphertext); + } else { + $xml = $raw; + } + + $basedom = parse_xml_string($xml); + + if (!is_object($basedom)) { + logger('Received data does not seem to be an XML. Discarding.'); + http_status_exit(400); + } + + $base = $basedom->children(NAMESPACE_SALMON_ME); + + // Not sure if this cleaning is needed + $data = str_replace(array(" ", "\t", "\r", "\n"), array("", "", "", ""), $base->data); + + // Build the signed data + $type = $base->data[0]->attributes()->type[0]; + $encoding = $base->encoding; + $alg = $base->alg; + $signed_data = $data.'.'.base64url_encode($type).'.'.base64url_encode($encoding).'.'.base64url_encode($alg); + + // This is the signature + $signature = base64url_decode($base->sig); + + // Get the senders' public key + $key_id = $base->sig[0]->attributes()->key_id[0]; + $author_addr = base64_decode($key_id); + $key = diaspora::key($author_addr); + + $verify = rsa_verify($signed_data, $signature, $key); + if (!$verify) { + logger('Message did not verify. Discarding.'); + http_status_exit(400); + } + + return array('message' => (string)base64url_decode($base->data), + 'author' => unxmlify($author_addr), + 'key' => (string)$key); + } + + /** + * @brief: Decodes incoming Diaspora message in the deprecated format * * @param array $importer Array of the importer user * @param string $xml urldecoded Diaspora salmon @@ -202,9 +276,10 @@ class Diaspora { $public = false; $basedom = parse_xml_string($xml); - if (!is_object($basedom)) + if (!is_object($basedom)) { + logger("XML is not parseable."); return false; - + } $children = $basedom->children('https://joindiaspora.com/protocol'); if ($children->header) { @@ -333,6 +408,24 @@ class Diaspora { return false; } + if (!($postdata = self::valid_posting($msg))) { + logger("Invalid posting"); + return false; + } + + $fields = $postdata['fields']; + + // Is it a an action (comment, like, ...) for our own post? + if (isset($fields->parent_guid) AND !$postdata["relayed"]) { + $guid = notags(unxmlify($fields->parent_guid)); + $importer = self::importer_for_guid($guid); + if (is_array($importer)) { + logger("delivering to origin: ".$importer["name"]); + $message_id = self::dispatch($importer, $msg, $fields); + return $message_id; + } + } + // Now distribute it to the followers $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN (SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s') @@ -344,18 +437,14 @@ class Diaspora { if (dbm::is_result($r)) { foreach ($r as $rr) { logger("delivering to: ".$rr["username"]); - self::dispatch($rr,$msg); + self::dispatch($rr, $msg, $fields); } + } elseif (!Config::get('system', 'relay_subscribe', false)) { + logger("Unwanted message from ".$msg["author"]." send by ".$_SERVER["REMOTE_ADDR"]." with ".$_SERVER["HTTP_USER_AGENT"].": ".print_r($msg, true), LOGGER_DEBUG); } else { - $social_relay = (bool)Config::get('system', 'relay_subscribe', false); - // Use a dummy importer to import the data for the public copy - if ($social_relay) { - $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); - $message_id = self::dispatch($importer,$msg); - } else { - logger("Unwanted message from ".$msg["author"]." send by ".$_SERVER["REMOTE_ADDR"]." with ".$_SERVER["HTTP_USER_AGENT"].": ".print_r($msg, true), LOGGER_DEBUG); - } + $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); + $message_id = self::dispatch($importer, $msg, $fields); } return $message_id; @@ -366,18 +455,23 @@ class Diaspora { * * @param array $importer Array of the importer user * @param array $msg The post that will be dispatched + * @param object $fields SimpleXML object that contains the message * * @return int The message id of the generated message, "true" or "false" if there was an error */ - public static function dispatch($importer, $msg) { + public static function dispatch($importer, $msg, $fields = null) { // The sender is the handle of the contact that sent the message. // This will often be different with relayed messages (for example "like" and "comment") $sender = $msg["author"]; - if (!self::valid_posting($msg, $fields)) { - logger("Invalid posting"); - return false; + // This is only needed for private postings since this is already done for public ones before + if (is_null($fields)) { + if (!($postdata = self::valid_posting($msg))) { + logger("Invalid posting"); + return false; + } + $fields = $postdata['fields']; } $type = $fields->getName(); @@ -439,11 +533,10 @@ class Diaspora { * It also does the conversion between the old and the new diaspora format. * * @param array $msg Array with the XML, the sender handle and the sender signature - * @param object $fields SimpleXML object that contains the posting when it is valid * - * @return bool Is the posting valid? + * @return bool|array If the posting is valid then an array with an SimpleXML object is returned */ - private static function valid_posting($msg, &$fields) { + private static function valid_posting($msg) { $data = parse_xml_string($msg["message"], false); @@ -484,32 +577,38 @@ class Diaspora { foreach ($element->children() AS $fieldname => $entry) { if ($oldXML) { // Translation for the old XML structure - if ($fieldname == "diaspora_handle") + if ($fieldname == "diaspora_handle") { $fieldname = "author"; - - if ($fieldname == "participant_handles") + } + if ($fieldname == "participant_handles") { $fieldname = "participants"; - + } if (in_array($type, array("like", "participation"))) { - if ($fieldname == "target_type") + if ($fieldname == "target_type") { $fieldname = "parent_type"; + } } - - if ($fieldname == "sender_handle") + if ($fieldname == "sender_handle") { $fieldname = "author"; - - if ($fieldname == "recipient_handle") + } + if ($fieldname == "recipient_handle") { $fieldname = "recipient"; - - if ($fieldname == "root_diaspora_id") + } + if ($fieldname == "root_diaspora_id") { $fieldname = "root_author"; - + } + if ($type == "status_message") { + if ($fieldname == "raw_message") { + $fieldname = "text"; + } + } if ($type == "retraction") { - if ($fieldname == "post_guid") + if ($fieldname == "post_guid") { $fieldname = "target_guid"; - - if ($fieldname == "type") + } + if ($fieldname == "type") { $fieldname = "target_type"; + } } } @@ -538,9 +637,9 @@ class Diaspora { } // Only some message types have signatures. So we quit here for the other types. - if (!in_array($type, array("comment", "message", "like"))) - return true; - + if (!in_array($type, array("comment", "like"))) { + return array("fields" => $fields, "relayed" => false); + } // No author_signature? This is a must, so we quit. if (!isset($author_signature)) { logger("No author signature for type ".$type." - Message: ".$msg["message"], LOGGER_DEBUG); @@ -548,12 +647,16 @@ class Diaspora { } if (isset($parent_author_signature)) { + $relayed = true; + $key = self::key($msg["author"]); if (!rsa_verify($signed_data, $parent_author_signature, $key, "sha256")) { logger("No valid parent author signature for parent author ".$msg["author"]. " in type ".$type." - signed data: ".$signed_data." - Message: ".$msg["message"]." - Signature ".$parent_author_signature, LOGGER_DEBUG); return false; } + } else { + $relayed = false; } $key = self::key($fields->author); @@ -561,8 +664,9 @@ class Diaspora { if (!rsa_verify($signed_data, $author_signature, $key, "sha256")) { logger("No valid author signature for author ".$fields->author. " in type ".$type." - signed data: ".$signed_data." - Message: ".$msg["message"]." - Signature ".$author_signature, LOGGER_DEBUG); return false; - } else - return true; + } else { + return array("fields" => $fields, "relayed" => $relayed); + } } /** @@ -591,7 +695,7 @@ class Diaspora { * * @return array the queried data */ - private static function person_by_handle($handle) { + public static function person_by_handle($handle) { $r = q("SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1", dbesc(NETWORK_DIASPORA), @@ -828,17 +932,20 @@ class Diaspora { logger("defining user ".$contact["nick"]." as friend"); } - if (($contact["blocked"]) || ($contact["readonly"]) || ($contact["archive"])) + // We don't seem to like that person + if ($contact["blocked"] || $contact["readonly"] || $contact["archive"]) { return false; - if ($contact["rel"] == CONTACT_IS_SHARING || $contact["rel"] == CONTACT_IS_FRIEND) + // We are following this person? Then it is okay + } elseif (($contact["rel"] == CONTACT_IS_SHARING) || ($contact["rel"] == CONTACT_IS_FRIEND)) { return true; - if ($contact["rel"] == CONTACT_IS_FOLLOWER) - if (($importer["page-flags"] == PAGE_COMMUNITY) OR $is_comment) - return true; - - // Messages for the global users are always accepted - if ($importer["uid"] == 0) + // Is it a post to a community? That's good + } elseif (($contact["rel"] == CONTACT_IS_FOLLOWER) && ($importer["page-flags"] == PAGE_COMMUNITY)) { + return true; + } + // Messages for the global users and comments are always accepted + if (($importer["uid"] == 0) || $is_comment) { return true; + } return false; } @@ -856,7 +963,12 @@ class Diaspora { $contact = self::contact_by_handle($importer["uid"], $handle); if (!$contact) { logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found"); - return false; + // If a contact isn't found, we accept it anyway if it is a comment + if ($is_comment) { + return $importer; + } else { + return false; + } } if (!self::post_allow($importer, $contact, $is_comment)) { @@ -1111,9 +1223,9 @@ class Diaspora { $cid = $r[0]["id"]; $network = $r[0]["network"]; - // We are receiving content from a user that is about to be terminated + // We are receiving content from a user that possibly is about to be terminated // This means the user is vital, so we remove a possible termination date. - unmark_for_death($contact); + unmark_for_death($r[0]); } else { $cid = $contact["id"]; $network = NETWORK_DIASPORA; @@ -1227,6 +1339,26 @@ class Diaspora { } } + /** + * @brief Find the best importer for a comment, like, ... + * + * @param string $guid The guid of the item + * + * @return array|boolean the origin owner of that post - or false + */ + private static function importer_for_guid($guid) { + $item = dba::fetch_first("SELECT `uid` FROM `item` WHERE `origin` AND `guid` = ? LIMIT 1", $guid); + + if (dbm::is_result($item)) { + logger("Found user ".$item['uid']." as owner of item ".$guid, LOGGER_DEBUG); + $contact = dba::fetch_first("SELECT * FROM `contact` WHERE `self` AND `uid` = ?", $item['uid']); + if (dbm::is_result($contact)) { + return $contact; + } + } + return false; + } + /** * @brief Processes an incoming comment * @@ -1238,10 +1370,10 @@ class Diaspora { * @return int The message id of the generated comment or "false" if there was an error */ private static function receive_comment($importer, $sender, $data, $xml) { + $author = notags(unxmlify($data->author)); $guid = notags(unxmlify($data->guid)); $parent_guid = notags(unxmlify($data->parent_guid)); $text = unxmlify($data->text); - $author = notags(unxmlify($data->author)); if (isset($data->created_at)) { $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); @@ -1308,7 +1440,9 @@ class Diaspora { } $datarray["object-type"] = ACTIVITY_OBJ_COMMENT; - $datarray["object"] = $xml; + + $datarray["protocol"] = PROTOCOL_DIASPORA; + $datarray["source"] = $xml; $datarray["changed"] = $datarray["created"] = $datarray["edited"] = $created_at; @@ -1354,16 +1488,9 @@ class Diaspora { * @return bool "true" if it was successful */ private static function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation) { + $author = notags(unxmlify($data->author)); $guid = notags(unxmlify($data->guid)); $subject = notags(unxmlify($data->subject)); - $author = notags(unxmlify($data->author)); - - $msg_guid = notags(unxmlify($mesg->guid)); - $msg_parent_guid = notags(unxmlify($mesg->parent_guid)); - $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature)); - $msg_author_signature = notags(unxmlify($mesg->author_signature)); - $msg_text = unxmlify($mesg->text); - $msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at))); // "diaspora_handle" is the element name from the old version // "author" is the element name from the new version @@ -1375,7 +1502,10 @@ class Diaspora { return false; } + $msg_guid = notags(unxmlify($mesg->guid)); $msg_conversation_guid = notags(unxmlify($mesg->conversation_guid)); + $msg_text = unxmlify($mesg->text); + $msg_created_at = datetime_convert("UTC", "UTC", notags(unxmlify($mesg->created_at))); if ($msg_conversation_guid != $guid) { logger("message conversation guid does not belong to the current conversation."); @@ -1385,44 +1515,11 @@ class Diaspora { $body = diaspora2bb($msg_text); $message_uri = $msg_author.":".$msg_guid; - $author_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid; + $person = self::person_by_handle($msg_author); - $author_signature = base64_decode($msg_author_signature); - - if (strcasecmp($msg_author,$msg["author"]) == 0) { - $person = $contact; - $key = $msg["key"]; - } else { - $person = self::person_by_handle($msg_author); - - if (is_array($person) && x($person, "pubkey")) { - $key = $person["pubkey"]; - } else { - logger("unable to find author details"); - return false; - } - } - - if (!rsa_verify($author_signed_data, $author_signature, $key, "sha256")) { - logger("verification failed."); - return false; - } - - if ($msg_parent_author_signature) { - $owner_signed_data = $msg_guid.";".$msg_parent_guid.";".$msg_text.";".unxmlify($mesg->created_at).";".$msg_author.";".$msg_conversation_guid; - - $parent_author_signature = base64_decode($msg_parent_author_signature); - - $key = $msg["key"]; - - if (!rsa_verify($owner_signed_data, $parent_author_signature, $key, "sha256")) { - logger("owner verification failed."); - return false; - } - } - - $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' LIMIT 1", - dbesc($message_uri) + $r = q("SELECT `id` FROM `mail` WHERE `guid` = '%s' AND `uid` = %d LIMIT 1", + dbesc($msg_guid), + intval($importer["uid"]) ); if (dbm::is_result($r)) { logger("duplicate message already delivered.", LOGGER_DEBUG); @@ -1479,10 +1576,10 @@ class Diaspora { * @return bool Success */ private static function receive_conversation($importer, $msg, $data) { + $author = notags(unxmlify($data->author)); $guid = notags(unxmlify($data->guid)); $subject = notags(unxmlify($data->subject)); $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); - $author = notags(unxmlify($data->author)); $participants = notags(unxmlify($data->participants)); $messages = $data->message; @@ -1587,11 +1684,11 @@ class Diaspora { * @return int The message id of the generated like or "false" if there was an error */ private static function receive_like($importer, $sender, $data) { - $positive = notags(unxmlify($data->positive)); + $author = notags(unxmlify($data->author)); $guid = notags(unxmlify($data->guid)); - $parent_type = notags(unxmlify($data->parent_type)); $parent_guid = notags(unxmlify($data->parent_guid)); - $author = notags(unxmlify($data->author)); + $parent_type = notags(unxmlify($data->parent_type)); + $positive = notags(unxmlify($data->positive)); // likes on comments aren't supported by Diaspora - only on posts // But maybe this will be supported in the future, so we will accept it. @@ -1628,6 +1725,8 @@ class Diaspora { $datarray = array(); + $datarray["protocol"] = PROTOCOL_DIASPORA; + $datarray["uid"] = $importer["uid"]; $datarray["contact-id"] = $author_contact["cid"]; $datarray["network"] = $author_contact["network"]; @@ -1684,12 +1783,11 @@ class Diaspora { * @return bool Success? */ private static function receive_message($importer, $data) { + $author = notags(unxmlify($data->author)); $guid = notags(unxmlify($data->guid)); - $parent_guid = notags(unxmlify($data->parent_guid)); + $conversation_guid = notags(unxmlify($data->conversation_guid)); $text = unxmlify($data->text); $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); - $author = notags(unxmlify($data->author)); - $conversation_guid = notags(unxmlify($data->conversation_guid)); $contact = self::allowed_contact_by_handle($importer, $author, true); if (!$contact) { @@ -1717,8 +1815,8 @@ class Diaspora { return false; } - $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", - dbesc($message_uri), + $r = q("SELECT `id` FROM `mail` WHERE `guid` = '%s' AND `uid` = %d LIMIT 1", + dbesc($guid), intval($importer["uid"]) ); if (dbm::is_result($r)) { @@ -1744,7 +1842,7 @@ class Diaspora { 0, 1, dbesc($message_uri), - dbesc($author.":".$parent_guid), + dbesc($author.":".$conversation["guid"]), dbesc($created_at) ); @@ -1813,9 +1911,9 @@ class Diaspora { $name = unxmlify($data->first_name).((strlen($data->last_name)) ? " ".unxmlify($data->last_name) : ""); $image_url = unxmlify($data->image_url); $birthday = unxmlify($data->birthday); - $location = diaspora2bb(unxmlify($data->location)); - $about = diaspora2bb(unxmlify($data->bio)); $gender = unxmlify($data->gender); + $about = diaspora2bb(unxmlify($data->bio)); + $location = diaspora2bb(unxmlify($data->location)); $searchable = (unxmlify($data->searchable) == "true"); $nsfw = (unxmlify($data->nsfw) == "true"); $tags = unxmlify($data->tag_string); @@ -1919,6 +2017,7 @@ class Diaspora { if ($self && $contact["rel"] == CONTACT_IS_FOLLOWER) { $arr = array(); + $arr["protocol"] = PROTOCOL_DIASPORA; $arr["uri"] = $arr["parent-uri"] = item_new_uri($a->get_hostname(), $importer["uid"]); $arr["uid"] = $importer["uid"]; $arr["contact-id"] = $self[0]["id"]; @@ -2234,12 +2333,13 @@ class Diaspora { * @return int the message id */ private static function receive_reshare($importer, $data, $xml) { + $author = notags(unxmlify($data->author)); + $guid = notags(unxmlify($data->guid)); + $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); $root_author = notags(unxmlify($data->root_author)); $root_guid = notags(unxmlify($data->root_guid)); - $guid = notags(unxmlify($data->guid)); - $author = notags(unxmlify($data->author)); + /// @todo handle unprocessed property "provider_display_name" $public = notags(unxmlify($data->public)); - $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); $contact = self::allowed_contact_by_handle($importer, $author, false); if (!$contact) { @@ -2278,7 +2378,8 @@ class Diaspora { $datarray["verb"] = ACTIVITY_POST; $datarray["gravity"] = GRAVITY_PARENT; - $datarray["object"] = $xml; + $datarray["protocol"] = PROTOCOL_DIASPORA; + $datarray["source"] = $xml; $prefix = share_header($original_item["author-name"], $original_item["author-link"], $original_item["author-avatar"], $original_item["guid"], $original_item["created"], $orig_url); @@ -2313,9 +2414,9 @@ class Diaspora { * @return bool success */ private static function item_retraction($importer, $contact, $data) { - $target_type = notags(unxmlify($data->target_type)); - $target_guid = notags(unxmlify($data->target_guid)); $author = notags(unxmlify($data->author)); + $target_guid = notags(unxmlify($data->target_guid)); + $target_type = notags(unxmlify($data->target_type)); $person = self::person_by_handle($author); if (!is_array($person)) { @@ -2323,11 +2424,16 @@ class Diaspora { return false; } + if (!isset($contact["url"])) { + $contact["url"] = $person["url"]; + } + $r = q("SELECT `id`, `parent`, `parent-uri`, `author-link` FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1", dbesc($target_guid), intval($importer["uid"]) ); if (!$r) { + logger("Target guid ".$target_guid." was not found for user ".$importer["uid"]); return false; } @@ -2373,7 +2479,7 @@ class Diaspora { $target_type = notags(unxmlify($data->target_type)); $contact = self::contact_by_handle($importer["uid"], $sender); - if (!$contact) { + if (!$contact AND (in_array($target_type, array("Contact", "Person")))) { logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]); return false; } @@ -2386,7 +2492,7 @@ class Diaspora { case "Post": // "Post" will be supported in a future version case "Reshare": case "StatusMessage": - return self::item_retraction($importer, $contact, $data);; + return self::item_retraction($importer, $contact, $data); case "Contact": case "Person": @@ -2412,19 +2518,13 @@ class Diaspora { * @return int The message id of the newly created item */ private static function receive_status_message($importer, $data, $xml) { - $raw_message = unxmlify($data->raw_message); - $guid = notags(unxmlify($data->guid)); $author = notags(unxmlify($data->author)); - $public = notags(unxmlify($data->public)); + $guid = notags(unxmlify($data->guid)); $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at))); + $public = notags(unxmlify($data->public)); + $text = unxmlify($data->text); $provider_display_name = notags(unxmlify($data->provider_display_name)); - /// @todo enable support for polls - //if ($data->poll) { - // foreach ($data->poll AS $poll) - // print_r($poll); - // die("poll!\n"); - //} $contact = self::allowed_contact_by_handle($importer, $author, false); if (!$contact) { return false; @@ -2442,7 +2542,7 @@ class Diaspora { } } - $body = diaspora2bb($raw_message); + $body = diaspora2bb($text); $datarray = array(); @@ -2463,6 +2563,15 @@ class Diaspora { } } + /// @todo enable support for polls + //if ($data->poll) { + // foreach ($data->poll AS $poll) + // print_r($poll); + // die("poll!\n"); + //} + + /// @todo enable support for events + $datarray["uid"] = $importer["uid"]; $datarray["contact-id"] = $contact["id"]; $datarray["network"] = NETWORK_DIASPORA; @@ -2481,7 +2590,8 @@ class Diaspora { $datarray["verb"] = ACTIVITY_POST; $datarray["gravity"] = GRAVITY_PARENT; - $datarray["object"] = $xml; + $datarray["protocol"] = PROTOCOL_DIASPORA; + $datarray["source"] = $xml; $datarray["body"] = self::replace_people_guid($body, $contact["url"]); @@ -3711,4 +3821,3 @@ class Diaspora { return true; } } -?> diff --git a/include/directory.php b/include/directory.php index 41a3dd784c..e507a939f8 100644 --- a/include/directory.php +++ b/include/directory.php @@ -1,9 +1,9 @@ 1)) { for ($d = 1; $d < count($p); $d ++) { - q("DELETE FROM `notify` WHERE `id` = %d", - intval($p[$d]['id']) - ); + dba::delete('notify', array('id' => $p[$d]['id'])); } // only continue on if we stored the first one diff --git a/include/event.php b/include/event.php index 64b1ebddc3..089fe705db 100644 --- a/include/event.php +++ b/include/event.php @@ -4,6 +4,8 @@ * @brief functions specific to event handling */ +use Friendica\App; + require_once 'include/bbcode.php'; require_once 'include/map.php'; require_once 'include/datetime.php'; @@ -81,74 +83,6 @@ function format_event_html($ev, $simple = false) { return $o; } -/* -@TODO old-lost code found? -function parse_event($h) { - - require_once('include/Scrape.php'); - require_once('include/html2bbcode'); - - $h = '' . $h . ''; - - $ret = array(); - - - try { - $dom = HTML5_Parser::parse($h); - } catch (DOMException $e) { - logger('parse_event: parse error: ' . $e); - } - - if (! $dom) - return $ret; - - $items = $dom->getElementsByTagName('*'); - - foreach ($items as $item) { - if (attribute_contains($item->getAttribute('class'), 'vevent')) { - $level2 = $item->getElementsByTagName('*'); - foreach ($level2 as $x) { - if (attribute_contains($x->getAttribute('class'),'dtstart') && $x->getAttribute('title')) { - $ret['start'] = $x->getAttribute('title'); - if (! strpos($ret['start'],'Z')) - $ret['adjust'] = true; - } - if (attribute_contains($x->getAttribute('class'),'dtend') && $x->getAttribute('title')) - $ret['finish'] = $x->getAttribute('title'); - - if (attribute_contains($x->getAttribute('class'),'description')) - $ret['desc'] = $x->textContent; - if (attribute_contains($x->getAttribute('class'),'location')) - $ret['location'] = $x->textContent; - } - } - } - - // sanitise - - if ((x($ret,'desc')) && ((strpos($ret['desc'],'<') !== false) || (strpos($ret['desc'],'>') !== false))) { - $config = HTMLPurifier_Config::createDefault(); - $config->set('Cache.DefinitionImpl', null); - $purifier = new HTMLPurifier($config); - $ret['desc'] = html2bbcode($purifier->purify($ret['desc'])); - } - - if ((x($ret,'location')) && ((strpos($ret['location'],'<') !== false) || (strpos($ret['location'],'>') !== false))) { - $config = HTMLPurifier_Config::createDefault(); - $config->set('Cache.DefinitionImpl', null); - $purifier = new HTMLPurifier($config); - $ret['location'] = html2bbcode($purifier->purify($ret['location'])); - } - - if (x($ret,'start')) - $ret['start'] = datetime_convert('UTC','UTC',$ret['start']); - if (x($ret,'finish')) - $ret['finish'] = datetime_convert('UTC','UTC',$ret['finish']); - - return $ret; -} -*/ - function format_event_bbcode($ev) { $o = ''; @@ -535,7 +469,7 @@ function get_event_strings() { * * @param array $dates Array of possibly duplicated events * @return array Cleaned events - * + * * @todo We should replace this with a separate update function if there is some time left */ function event_remove_duplicates($dates) { diff --git a/include/expire.php b/include/expire.php index 098125a798..73bffb20dc 100644 --- a/include/expire.php +++ b/include/expire.php @@ -1,6 +1,6 @@ $row['id'])); + } + dba::close($r); + } // make this optional as it could have a performance impact on large sites diff --git a/include/feed.php b/include/feed.php index 32044e663e..cfef6d4ad0 100644 --- a/include/feed.php +++ b/include/feed.php @@ -366,4 +366,3 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) { return array("header" => $author, "items" => $items); } } -?> diff --git a/include/files.php b/include/files.php index c20a6d832d..0ac0078c85 100644 --- a/include/files.php +++ b/include/files.php @@ -47,4 +47,3 @@ function update_files_for_items() { create_files_from_item($message["id"]); } } -?> diff --git a/include/follow.php b/include/follow.php index 3045191077..cdeac6db2a 100644 --- a/include/follow.php +++ b/include/follow.php @@ -1,11 +1,14 @@ diff --git a/include/html2plain.php b/include/html2plain.php index dc2cb137c4..ed338ce710 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -233,4 +233,3 @@ function html2plain($html, $wraplength = 75, $compact = false) return(trim($message)); } -?> diff --git a/include/identity.php b/include/identity.php index 1fea5b25d6..3ab25cdc45 100644 --- a/include/identity.php +++ b/include/identity.php @@ -3,10 +3,12 @@ * @file include/identity.php */ -require_once('include/ForumManager.php'); -require_once('include/bbcode.php'); -require_once("mod/proxy.php"); -require_once('include/cache.php'); +use Friendica\App; + +require_once 'include/ForumManager.php'; +require_once 'include/bbcode.php'; +require_once 'mod/proxy.php'; +require_once 'include/cache.php'; /** * @@ -83,9 +85,9 @@ function profile_load(App $a, $nickname, $profile = 0, $profiledata = array()) { $a->set_template_engine(); // reset the template engine to the default in case the user's theme doesn't specify one - $theme_info_file = "view/theme/".current_theme()."/theme.php"; - if (file_exists($theme_info_file)){ - require_once($theme_info_file); + $theme_info_file = "view/theme/" . current_theme() . "/theme.php"; + if (file_exists($theme_info_file)) { + require_once $theme_info_file; } if (! (x($a->page,'aside'))) @@ -370,7 +372,7 @@ function profile_sidebar($profile, $block = 0) { else $diaspora = false; - if (!$block){ + if (!$block) { $contact_block = contact_block(); if (is_array($a->profile) AND !$a->profile['hide-friends']) { @@ -535,13 +537,13 @@ function get_birthdays() { function get_events() { - require_once('include/bbcode.php'); + require_once 'include/bbcode.php'; $a = get_app(); - if (! local_user() || $a->is_mobile || $a->is_tablet) + if (! local_user() || $a->is_mobile || $a->is_tablet) { return $o; - + } // $mobile_detect = new Mobile_Detect(); // $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet(); @@ -564,12 +566,14 @@ function get_events() { $now = strtotime('now'); $istoday = false; foreach ($r as $rr) { - if (strlen($rr['name'])) + if (strlen($rr['name'])) { $total ++; + } $strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start'],'Y-m-d'); - if ($strt === datetime_convert('UTC',$a->timezone,'now','Y-m-d')) + if ($strt === datetime_convert('UTC',$a->timezone,'now','Y-m-d')) { $istoday = true; + } } $classtoday = (($istoday) ? 'event-today' : ''); @@ -578,12 +582,14 @@ function get_events() { foreach ($r as &$rr) { $title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8')); - if (strlen($title) > 35) + if (strlen($title) > 35) { $title = substr($title,0,32) . '... '; + } $description = substr(strip_tags(bbcode($rr['desc'])),0,32) . '... '; - if (! $description) + if (! $description) { $description = t('[No description]'); + } $strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start']); @@ -630,7 +636,9 @@ function advanced_profile(App $a) { $profile['fullname'] = array( t('Full Name:'), $a->profile['name'] ) ; - if ($a->profile['gender']) $profile['gender'] = array( t('Gender:'), $a->profile['gender'] ); + if ($a->profile['gender']) { + $profile['gender'] = array( t('Gender:'), $a->profile['gender'] ); + } if (($a->profile['dob']) && ($a->profile['dob'] > '0001-01-01')) { $year_bd_format = t('j F, Y'); @@ -645,10 +653,13 @@ function advanced_profile(App $a) { } - if ($age = age($a->profile['dob'],$a->profile['timezone'],'')) $profile['age'] = array( t('Age:'), $age ); - + if ($age = age($a->profile['dob'],$a->profile['timezone'],'')) { + $profile['age'] = array( t('Age:'), $age ); + } - if ($a->profile['marital']) $profile['marital'] = array( t('Status:'), $a->profile['marital']); + if ($a->profile['marital']) { + $profile['marital'] = array( t('Status:'), $a->profile['marital']); + } /// @TODO Maybe use x() here, plus below? if ($a->profile['with']) { @@ -751,7 +762,7 @@ function advanced_profile(App $a) { return ''; } -function profile_tabs($a, $is_owner=False, $nickname=Null){ +function profile_tabs($a, $is_owner=False, $nickname=Null) { //echo "
"; var_dump($a->user); killme();
 
 	if (is_null($nickname)) {
@@ -768,7 +779,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 		array(
 			'label'=>t('Status'),
 			'url' => $url,
-			'sel' => ((!isset($tab) && $a->argv[0]=='profile')?'active':''),
+			'sel' => ((!isset($tab) && $a->argv[0]=='profile') ? 'active' : ''),
 			'title' => t('Status Messages and Posts'),
 			'id' => 'status-tab',
 			'accesskey' => 'm',
@@ -776,7 +787,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 		array(
 			'label' => t('Profile'),
 			'url' 	=> $url.'/?tab=profile',
-			'sel'	=> ((isset($tab) && $tab=='profile')?'active':''),
+			'sel'	=> ((isset($tab) && $tab=='profile') ? 'active' : ''),
 			'title' => t('Profile Details'),
 			'id' => 'profile-tab',
 			'accesskey' => 'r',
@@ -784,7 +795,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 		array(
 			'label' => t('Photos'),
 			'url'	=> App::get_baseurl() . '/photos/' . $nickname,
-			'sel'	=> ((!isset($tab) && $a->argv[0]=='photos')?'active':''),
+			'sel'	=> ((!isset($tab) && $a->argv[0]=='photos') ? 'active' : ''),
 			'title' => t('Photo Albums'),
 			'id' => 'photo-tab',
 			'accesskey' => 'h',
@@ -792,7 +803,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 		array(
 			'label' => t('Videos'),
 			'url'	=> App::get_baseurl() . '/videos/' . $nickname,
-			'sel'	=> ((!isset($tab) && $a->argv[0]=='videos')?'active':''),
+			'sel'	=> ((!isset($tab) && $a->argv[0]=='videos') ? 'active' : ''),
 			'title' => t('Videos'),
 			'id' => 'video-tab',
 			'accesskey' => 'v',
@@ -804,7 +815,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 			$tabs[] = array(
 				'label' => t('Events'),
 				'url'	=> App::get_baseurl() . '/events',
-				'sel' 	=>((!isset($tab) && $a->argv[0]=='events')?'active':''),
+				'sel' 	=>((!isset($tab) && $a->argv[0]=='events') ? 'active' : ''),
 				'title' => t('Events and Calendar'),
 				'id' => 'events-tab',
 				'accesskey' => 'e',
@@ -815,18 +826,18 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 		$tabs[] = array(
 				'label' => t('Events'),
 				'url'	=> App::get_baseurl() . '/cal/' . $nickname,
-				'sel' 	=>((!isset($tab) && $a->argv[0]=='cal')?'active':''),
+				'sel' 	=>((!isset($tab) && $a->argv[0]=='cal') ? 'active' : ''),
 				'title' => t('Events and Calendar'),
 				'id' => 'events-tab',
 				'accesskey' => 'e',
 			);
 	}
 
-	if ($is_owner){
+	if ($is_owner) {
 		$tabs[] = array(
 			'label' => t('Personal Notes'),
 			'url'	=> App::get_baseurl() . '/notes',
-			'sel' 	=>((!isset($tab) && $a->argv[0]=='notes')?'active':''),
+			'sel' 	=>((!isset($tab) && $a->argv[0]=='notes') ? 'active' : ''),
 			'title' => t('Only You Can See This'),
 			'id' => 'notes-tab',
 			'accesskey' => 't',
@@ -837,7 +848,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 		$tabs[] = array(
 			'label' => t('Contacts'),
 			'url'	=> App::get_baseurl() . '/viewcontacts/' . $nickname,
-			'sel'	=> ((!isset($tab) && $a->argv[0]=='viewcontacts')?'active':''),
+			'sel'	=> ((!isset($tab) && $a->argv[0]=='viewcontacts') ? 'active' : ''),
 			'title' => t('Contacts'),
 			'id' => 'viewcontacts-tab',
 			'accesskey' => 'k',
@@ -853,8 +864,9 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
 }
 
 function get_my_url() {
-	if (x($_SESSION,'my_url'))
+	if (x($_SESSION, 'my_url')) {
 		return $_SESSION['my_url'];
+	}
 	return false;
 }
 
@@ -866,33 +878,31 @@ function zrl_init(App $a) {
 		// The check fetches the cached value from gprobe to reduce the load for this system
 		$urlparts = parse_url($tmp_str);
 
-		$result = Cache::get("gprobe:".$urlparts["host"]);
-		if (!is_null($result)) {
-			if (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM))) {
-				logger("DDoS attempt detected for ".$urlparts["host"]." by ".$_SERVER["REMOTE_ADDR"].". server data: ".print_r($_SERVER, true), LOGGER_DEBUG);
-				return;
-			}
+		$result = Cache::get("gprobe:" . $urlparts["host"]);
+		if ((!is_null($result)) && (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))) {
+			logger("DDoS attempt detected for " . $urlparts["host"] . " by " . $_SERVER["REMOTE_ADDR"] . ". server data: " . print_r($_SERVER, true), LOGGER_DEBUG);
+			return;
 		}
 
-		proc_run(PRIORITY_LOW, 'include/gprobe.php',bin2hex($tmp_str));
+		proc_run(PRIORITY_LOW, 'include/gprobe.php', bin2hex($tmp_str));
 		$arr = array('zrl' => $tmp_str, 'url' => $a->cmd);
-		call_hooks('zrl_init',$arr);
+		call_hooks('zrl_init', $arr);
 	}
 }
 
-function zrl($s,$force = false) {
+function zrl($s, $force = false) {
 	if (! strlen($s)) {
 		return $s;
 	}
-	if ((! strpos($s,'/profile/')) && (! $force)) {
+	if ((! strpos($s, '/profile/')) && (! $force)) {
 		return $s;
 	}
-	if ($force && substr($s,-1,1) !== '/') {
+	if ($force && substr($s, -1, 1) !== '/') {
 		$s = $s . '/';
 	}
-	$achar = strpos($s,'?') ? '&' : '?';
+	$achar = strpos($s, '?') ? '&' : '?';
 	$mine = get_my_url();
-	if ($mine and ! link_compare($mine,$s)) {
+	if ($mine && ! link_compare($mine, $s)) {
 		return $s . $achar . 'zrl=' . urlencode($mine);
 	}
 	return $s;
@@ -914,10 +924,8 @@ function zrl($s,$force = false) {
  */
 function get_theme_uid() {
 	$uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0);
-	if (local_user()) {
-		if ((get_pconfig(local_user(),'system','always_my_theme')) || (! $uid)) {
-			return local_user();
-		}
+	if ((local_user()) && ((get_pconfig(local_user(),'system','always_my_theme')) || (! $uid))) {
+		return local_user();
 	}
 
 	return $uid;
diff --git a/include/items.php b/include/items.php
index 2500e08d54..c36b842b4b 100644
--- a/include/items.php
+++ b/include/items.php
@@ -4,7 +4,8 @@
  * @file include/items.php
  */
 
-use \Friendica\ParseUrl;
+use Friendica\App;
+use Friendica\ParseUrl;
 
 require_once 'include/bbcode.php';
 require_once 'include/oembed.php';
@@ -339,7 +340,7 @@ function add_page_info_to_body($body, $texturl = false, $no_photos = false) {
  * Adds a "lang" specification in a "postopts" element of given $arr,
  * if possible and not already present.
  * Expects "body" element to exist in $arr.
- * 
+ *
  * @todo Add a parameter to request forcing override
  */
 function item_add_language_opt(&$arr) {
@@ -410,7 +411,70 @@ function uri_to_guid($uri, $host = "") {
 	return $guid_prefix.$host_hash;
 }
 
-/// @TODO Maybe $arr must be called-by-reference? This function modifies it
+/**
+ * @brief Store the conversation data
+ *
+ * @param array $arr Item array with conversation data
+ * @return array Item array with removed conversation data
+ */
+function store_conversation($arr) {
+	if (in_array($arr['network'], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) {
+		$conversation = array('item-uri' => $arr['uri'], 'received' => dbm::date());
+
+		if (isset($arr['parent-uri']) AND ($arr['parent-uri'] != $arr['uri'])) {
+			$conversation['reply-to-uri'] = $arr['parent-uri'];
+		}
+		if (isset($arr['thr-parent']) AND ($arr['thr-parent'] != $arr['uri'])) {
+			$conversation['reply-to-uri'] = $arr['thr-parent'];
+		}
+
+		if (isset($arr['conversation-uri'])) {
+			$conversation['conversation-uri'] = $arr['conversation-uri'];
+		}
+
+		if (isset($arr['conversation-href'])) {
+			$conversation['conversation-href'] = $arr['conversation-href'];
+		}
+
+		if (isset($arr['protocol'])) {
+			$conversation['protocol'] = $arr['protocol'];
+		}
+
+		if (isset($arr['source'])) {
+			$conversation['source'] = $arr['source'];
+		}
+
+		$old_conv = dba::fetch_first("SELECT `item-uri`, `reply-to-uri`, `conversation-uri`, `conversation-href`, `protocol`, `source`
+				FROM `conversation` WHERE `item-uri` = ?", $conversation['item-uri']);
+		if (dbm::is_result($old_conv)) {
+			// Don't update when only the source has changed.
+			// Only do this when there had been no source before.
+			if ($old_conv['source'] != '') {
+				unset($old_conv['source']);
+			}
+			// Update structure data all the time but the source only when its from a better protocol.
+			if (($old_conv['protocol'] < $conversation['protocol']) AND ($old_conv['protocol'] != 0)) {
+				unset($conversation['protocol']);
+				unset($conversation['source']);
+			}
+			if (!dba::update('conversation', $conversation, array('item-uri' => $conversation['item-uri']), $old_conv)) {
+				logger('Conversation: update for '.$conversation['item-uri'].' from '.$conv['protocol'].' to '.$conversation['protocol'].' failed', LOGGER_DEBUG);
+			}
+		} else {
+			if (!dba::insert('conversation', $conversation)) {
+				logger('Conversation: insert for '.$conversation['item-uri'].' (protocol '.$conversation['protocol'].') failed', LOGGER_DEBUG);
+			}
+		}
+	}
+
+	unset($arr['conversation-uri']);
+	unset($arr['conversation-href']);
+	unset($arr['protocol']);
+	unset($arr['source']);
+
+	return $arr;
+}
+
 /// @TODO add type-hint array
 function item_store($arr, $force_parent = false, $notify = false, $dontcache = false) {
 
@@ -423,6 +487,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 		$arr['origin'] = 1;
 		$arr['last-child'] = 1;
 		$arr['network'] = NETWORK_DFRN;
+		$arr['protocol'] = PROTOCOL_DFRN;
 
 		// We have to avoid duplicates. So we create the GUID in form of a hash of the plink or uri.
 		// In difference to the call to "uri_to_guid" several lines below we add the hash of our own host.
@@ -436,6 +501,23 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 		}
 	}
 
+	if ($notify) {
+		$guid_prefix = "";
+	} elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
+		$arr['guid'] = uri_to_guid($arr['plink']);
+	} elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
+		$arr['guid'] = uri_to_guid($arr['uri']);
+	} else {
+		$parsed = parse_url($arr["author-link"]);
+		$guid_prefix = hash("crc32", $parsed["host"]);
+	}
+
+	$arr['guid']          = ((x($arr, 'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
+	$arr['uri']           = ((x($arr, 'uri'))           ? notags(trim($arr['uri']))           : item_new_uri($a->get_hostname(), $uid, $arr['guid']));
+
+	// Store conversation data
+	$arr = store_conversation($arr);
+
 	/*
 	 * If a Diaspora signature structure was passed in, pull it out of the
 	 * item array and set it aside for later storage.
@@ -517,20 +599,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 
 	item_add_language_opt($arr);
 
-	if ($notify) {
-		$guid_prefix = "";
-	} elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
-		$arr['guid'] = uri_to_guid($arr['plink']);
-	} elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
-		$arr['guid'] = uri_to_guid($arr['uri']);
-	} else {
-		$parsed = parse_url($arr["author-link"]);
-		$guid_prefix = hash("crc32", $parsed["host"]);
-	}
-
 	$arr['wall']          = ((x($arr, 'wall'))          ? intval($arr['wall'])                : 0);
-	$arr['guid']          = ((x($arr, 'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
-	$arr['uri']           = ((x($arr, 'uri'))           ? notags(trim($arr['uri']))           : item_new_uri($a->get_hostname(), $uid, $arr['guid']));
 	$arr['extid']         = ((x($arr, 'extid'))         ? notags(trim($arr['extid']))         : '');
 	$arr['author-name']   = ((x($arr, 'author-name'))   ? trim($arr['author-name'])   : '');
 	$arr['author-link']   = ((x($arr, 'author-link'))   ? notags(trim($arr['author-link']))   : '');
@@ -690,6 +759,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 	item_body_set_hashtags($arr);
 
 	$arr['thr-parent'] = $arr['parent-uri'];
+
 	if ($arr['parent-uri'] === $arr['uri']) {
 		$parent_id = 0;
 		$parent_deleted = 0;
@@ -882,8 +952,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 
 	logger('item_store: ' . print_r($arr,true), LOGGER_DATA);
 
-	q("COMMIT");
-	q("START TRANSACTION;");
+	dba::transaction();
 
 	$r = dbq("INSERT INTO `item` (`"
 			. implode("`, `", array_keys($arr))
@@ -905,7 +974,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 		}
 	} else {
 		// This can happen - for example - if there are locking timeouts.
-		q("ROLLBACK");
+		dba::rollback();
 
 		// Store the data into a spool file so that we can try again later.
 
@@ -930,7 +999,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 	if ($current_post == 0) {
 		// This is one of these error messages that never should occur.
 		logger("couldn't find created item - we better quit now.");
-		q("ROLLBACK");
+		dba::rollback();
 		return 0;
 	}
 
@@ -945,7 +1014,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 	if (!dbm::is_result($r)) {
 		// This shouldn't happen, since COUNT always works when the database connection is there.
 		logger("We couldn't count the stored entries. Very strange ...");
-		q("ROLLBACK");
+		dba::rollback();
 		return 0;
 	}
 
@@ -954,13 +1023,13 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 		logger('Duplicated post occurred. uri = ' . $arr['uri'] . ' uid = ' . $arr['uid']);
 
 		// Yes, we could do a rollback here - but we are having many users with MyISAM.
-		q("DELETE FROM `item` WHERE `id` = %d", intval($current_post));
-		q("COMMIT");
+		dba::delete('item', array('id' => $current_post));
+		dba::commit();
 		return 0;
 	} elseif ($r[0]["entries"] == 0) {
 		// This really should never happen since we quit earlier if there were problems.
 		logger("Something is terribly wrong. We haven't found our created entry.");
-		q("ROLLBACK");
+		dba::rollback();
 		return 0;
 	}
 
@@ -1040,7 +1109,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
 		update_thread($parent_id);
 	}
 
-	q("COMMIT");
+	dba::commit();
 
 	/*
 	 * Due to deadlock issues with the "term" table we are doing these steps after the commit.
@@ -1309,10 +1378,7 @@ function tag_deliver($uid, $item_id) {
 			// mmh.. no mention.. community page or private group... no wall.. no origin.. top-post (not a comment)
 			// delete it!
 			logger("tag_deliver: no-mention top-level post to communuty or private group. delete.");
-			q("DELETE FROM item WHERE id = %d and uid = %d",
-				intval($item_id),
-				intval($uid)
-			);
+			dba::delete('item', array('id' => $item_id));
 			return true;
 		}
 		return;
@@ -2168,23 +2234,6 @@ function drop_item($id, $interactive = true) {
 			// ignore the result
 		}
 
-
-		// clean up item_id and sign meta-data tables
-
-		/*
-		/// @TODO Old code - caused very long queries and warning entries in the mysql logfiles:
-
-		$r = q("DELETE FROM item_id where iid in (select id from item where parent = %d and uid = %d)",
-			intval($item['id']),
-			intval($item['uid'])
-		);
-
-		$r = q("DELETE FROM sign where iid in (select id from item where parent = %d and uid = %d)",
-			intval($item['id']),
-			intval($item['uid'])
-		);
-		*/
-
 		// The new code splits the queries since the mysql optimizer really has bad problems with subqueries
 
 		// Creating list of parents
diff --git a/include/like.php b/include/like.php
index a53b90c039..4f26002719 100644
--- a/include/like.php
+++ b/include/like.php
@@ -1,4 +1,7 @@
  $line) {
+	foreach ($arrbody as $i => $line) {
 		$currquotelevel = 0;
 		$currline = $line;
 		while ((strlen($currline)>0) and ((substr($currline, 0, 1) == '>')
@@ -187,7 +187,7 @@ function removelinebreak($message)
 				(substr(trim($nextline), 0, 7) == 'http://') or
 				(substr(trim($nextline), 0, 8) == 'https://'));
 
-		if (!$specialchars) 
+		if (!$specialchars)
 			$specialchars = ((substr(rtrim($line), -1) == '-') or
 					(substr(rtrim($line), -1) == '=') or
 					(substr(rtrim($line), -1) == '*') or
@@ -222,4 +222,3 @@ function removelinebreak($message)
 	return(implode("\n", $lines));
 
 }
-?>
diff --git a/include/nav.php b/include/nav.php
index fe4c50818e..3c7c932e28 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -1,5 +1,7 @@
 page,'nav')))
+	if (!(x($a->page,'nav')))
 		$a->page['nav'] = '';
 
 	$a->page['htmlhead'] .= replace_macros(get_markup_template('nav_head.tpl'), array());
@@ -86,9 +88,9 @@ function nav_info(App $a)
 		$nav['usermenu'][] = array('notes/', t('Personal notes'), '', t('Your personal notes'));
 
 		// user info
-		$r = q("SELECT `micro` FROM `contact` WHERE `uid` = %d AND `self` = 1", intval($a->user['uid']));
+		$r = dba::select('contact', array('micro'), array('uid' => $a->user['uid'], 'self' => true), array('limit' => 1));
 		$userinfo = array(
-			'icon' => (dbm::is_result($r) ? $a->remove_baseurl($r[0]['micro']) : 'images/person-48.jpg'),
+			'icon' => (dbm::is_result($r) ? $a->remove_baseurl($r['micro']) : 'images/person-48.jpg'),
 			'name' => $a->user['username'],
 		);
 	} else {
@@ -136,7 +138,7 @@ function nav_info(App $a)
 
 	if (strlen(get_config('system', 'singleuser'))) {
 		$gdir = get_config('system', 'directory');
-		if(strlen($gdir)) {
+		if (strlen($gdir)) {
 			$gdirpath = zrl($gdir, true);
 		}
 	} elseif (get_config('system', 'community_page_style') == CP_USERS_ON_SERVER) {
diff --git a/include/network.php b/include/network.php
index f9d35c52c3..7d8cf36118 100644
--- a/include/network.php
+++ b/include/network.php
@@ -4,10 +4,11 @@
  * @file include/network.php
  */
 
-use \Friendica\Core\Config;
+use Friendica\App;
+use Friendica\Core\Config;
+use Friendica\Network\Probe;
 
 require_once("include/xml.php");
-require_once('include/Probe.php');
 
 /**
  * @brief Curl wrapper
@@ -62,23 +63,27 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
  *    string 'header' => HTTP headers
  *    string 'body' => fetched content
  */
-function z_fetch_url($url,$binary = false, &$redirects = 0, $opts=array()) {
-
-	$ret = array('return_code' => 0, 'success' => false, 'header' => "", 'body' => "");
-
+function z_fetch_url($url, $binary = false, &$redirects = 0, $opts = array()) {
+	$ret = array('return_code' => 0, 'success' => false, 'header' => '', 'body' => '');
 
 	$stamp1 = microtime(true);
 
 	$a = get_app();
 
+	if (blocked_url($url)) {
+		logger('z_fetch_url: domain of ' . $url . ' is blocked', LOGGER_DATA);
+		return $ret;
+	}
+
 	$ch = @curl_init($url);
-	if(($redirects > 8) || (! $ch)) {
+
+	if (($redirects > 8) || (!$ch)) {
 		return $ret;
 	}
 
 	@curl_setopt($ch, CURLOPT_HEADER, true);
 
-	if(x($opts,"cookiejar")) {
+	if (x($opts, "cookiejar")) {
 		curl_setopt($ch, CURLOPT_COOKIEJAR, $opts["cookiejar"]);
 		curl_setopt($ch, CURLOPT_COOKIEFILE, $opts["cookiejar"]);
 	}
@@ -87,52 +92,61 @@ function z_fetch_url($url,$binary = false, &$redirects = 0, $opts=array()) {
 //	@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 //	@curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
 
-	if (x($opts,'accept_content')){
-		curl_setopt($ch,CURLOPT_HTTPHEADER, array (
-			"Accept: " . $opts['accept_content']
+	if (x($opts, 'accept_content')) {
+		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+			'Accept: ' . $opts['accept_content']
 		));
 	}
 
-	@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
+	@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 	@curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
 
 	$range = intval(Config::get('system', 'curl_range_bytes', 0));
+
 	if ($range > 0) {
-		@curl_setopt($ch, CURLOPT_RANGE, '0-'.$range);
+		@curl_setopt($ch, CURLOPT_RANGE, '0-' . $range);
 	}
 
-	if(x($opts,'headers')){
+	if (x($opts, 'headers')) {
 		@curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
 	}
-	if(x($opts,'nobody')){
+
+	if (x($opts, 'nobody')) {
 		@curl_setopt($ch, CURLOPT_NOBODY, $opts['nobody']);
 	}
-	if(x($opts,'timeout')){
+
+	if (x($opts, 'timeout')) {
 		@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));
 	}
 
 	// by default we will allow self-signed certs
 	// but you can override this
 
-	$check_cert = get_config('system','verifyssl');
+	$check_cert = get_config('system', 'verifyssl');
 	@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
+
 	if ($check_cert) {
 		@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
 	}
 
-	$prx = get_config('system','proxy');
-	if(strlen($prx)) {
+	$proxy = get_config('system', 'proxy');
+
+	if (strlen($proxy)) {
 		@curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
-		@curl_setopt($ch, CURLOPT_PROXY, $prx);
-		$prxusr = @get_config('system','proxyuser');
-		if(strlen($prxusr))
-			@curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr);
+		@curl_setopt($ch, CURLOPT_PROXY, $proxy);
+		$proxyuser = @get_config('system', 'proxyuser');
+
+		if (strlen($proxyuser)) {
+			@curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuser);
+		}
+	}
+
+	if ($binary) {
+		@curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
 	}
-	if($binary)
-		@curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
 
 	$a->set_curl_code(0);
 
@@ -140,8 +154,9 @@ function z_fetch_url($url,$binary = false, &$redirects = 0, $opts=array()) {
 	// if it throws any errors.
 
 	$s = @curl_exec($ch);
+
 	if (curl_errno($ch) !== CURLE_OK) {
-		logger('fetch_url error fetching '.$url.': '.curl_error($ch), LOGGER_NORMAL);
+		logger('fetch_url error fetching ' . $url . ': ' . curl_error($ch), LOGGER_NORMAL);
 	}
 
 	$ret['errno'] = curl_errno($ch);
@@ -150,136 +165,150 @@ function z_fetch_url($url,$binary = false, &$redirects = 0, $opts=array()) {
 	$curl_info = @curl_getinfo($ch);
 
 	$http_code = $curl_info['http_code'];
-	logger('fetch_url '.$url.': '.$http_code." ".$s, LOGGER_DATA);
+	logger('fetch_url ' . $url . ': ' . $http_code . " " . $s, LOGGER_DATA);
 	$header = '';
 
 	// Pull out multiple headers, e.g. proxy and continuation headers
 	// allow for HTTP/2.x without fixing code
 
-	while(preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/',$base)) {
-		$chunk = substr($base,0,strpos($base,"\r\n\r\n")+4);
+	while (preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/', $base)) {
+		$chunk = substr($base, 0, strpos($base,"\r\n\r\n") + 4);
 		$header .= $chunk;
-		$base = substr($base,strlen($chunk));
+		$base = substr($base, strlen($chunk));
 	}
 
 	$a->set_curl_code($http_code);
 	$a->set_curl_content_type($curl_info['content_type']);
 	$a->set_curl_headers($header);
 
-	if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
-		$new_location_info = @parse_url($curl_info["redirect_url"]);
-		$old_location_info = @parse_url($curl_info["url"]);
+	if ($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
+		$new_location_info = @parse_url($curl_info['redirect_url']);
+		$old_location_info = @parse_url($curl_info['url']);
 
-		$newurl = $curl_info["redirect_url"];
+		$newurl = $curl_info['redirect_url'];
 
-		if (($new_location_info["path"] == "") AND ($new_location_info["host"] != ""))
-			$newurl = $new_location_info["scheme"]."://".$new_location_info["host"].$old_location_info["path"];
+		if (($new_location_info['path'] == '') AND ( $new_location_info['host'] != '')) {
+			$newurl = $new_location_info['scheme'] . '://' . $new_location_info['host'] . $old_location_info['path'];
+		}
 
 		$matches = array();
+
 		if (preg_match('/(Location:|URI:)(.*?)\n/i', $header, $matches)) {
 			$newurl = trim(array_pop($matches));
 		}
-		if(strpos($newurl,'/') === 0)
+		if (strpos($newurl,'/') === 0) {
 			$newurl = $old_location_info["scheme"]."://".$old_location_info["host"].$newurl;
+		}
+
 		if (filter_var($newurl, FILTER_VALIDATE_URL)) {
 			$redirects++;
 			@curl_close($ch);
-			return z_fetch_url($newurl,$binary, $redirects, $opts);
+			return z_fetch_url($newurl, $binary, $redirects, $opts);
 		}
 	}
 
-
 	$a->set_curl_code($http_code);
 	$a->set_curl_content_type($curl_info['content_type']);
 
-	$body = substr($s,strlen($header));
-
-
+	$body = substr($s, strlen($header));
 
 	$rc = intval($http_code);
 	$ret['return_code'] = $rc;
 	$ret['success'] = (($rc >= 200 && $rc <= 299) ? true : false);
 	$ret['redirect_url'] = $url;
-	if(! $ret['success']) {
+
+	if (!$ret['success']) {
 		$ret['error'] = curl_error($ch);
 		$ret['debug'] = $curl_info;
 		logger('z_fetch_url: error: ' . $url . ': ' . $ret['error'], LOGGER_DEBUG);
-		logger('z_fetch_url: debug: ' . print_r($curl_info,true), LOGGER_DATA);
+		logger('z_fetch_url: debug: ' . print_r($curl_info, true), LOGGER_DATA);
 	}
-	$ret['body'] = substr($s,strlen($header));
+
+	$ret['body'] = substr($s, strlen($header));
 	$ret['header'] = $header;
-	if(x($opts,'debug')) {
+
+	if (x($opts, 'debug')) {
 		$ret['debug'] = $curl_info;
 	}
+
 	@curl_close($ch);
 
-	$a->save_timestamp($stamp1, "network");
+	$a->save_timestamp($stamp1, 'network');
 
 	return($ret);
-
 }
 
-// post request to $url. $params is an array of post variables.
-
 /**
- * @brief Post request to $url
+ * @brief Send POST request to $url
  *
  * @param string $url URL to post
- * @param mixed $params
+ * @param mixed $params array of POST variables
  * @param string $headers HTTP headers
  * @param integer $redirects Recursion counter for internal use - default = 0
  * @param integer $timeout The timeout in seconds, default system config value or 60 seconds
  *
  * @return string The content
  */
-function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0) {
+function post_url($url, $params, $headers = null, &$redirects = 0, $timeout = 0) {
 	$stamp1 = microtime(true);
 
+	if (blocked_url($url)) {
+		logger('post_url: domain of ' . $url . ' is blocked', LOGGER_DATA);
+		return false;
+	}
+
 	$a = get_app();
 	$ch = curl_init($url);
-	if(($redirects > 8) || (! $ch))
+
+	if (($redirects > 8) || (!$ch)) {
 		return false;
+	}
 
-	logger("post_url: start ".$url, LOGGER_DATA);
+	logger('post_url: start ' . $url, LOGGER_DATA);
 
 	curl_setopt($ch, CURLOPT_HEADER, true);
-	curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
-	curl_setopt($ch, CURLOPT_POST,1);
-	curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
+	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+	curl_setopt($ch, CURLOPT_POST, 1);
+	curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
 	curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
 
-	if(intval($timeout)) {
+	if (intval($timeout)) {
 		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
-	}
-	else {
-		$curl_time = intval(get_config('system','curl_timeout'));
+	} else {
+		$curl_time = intval(get_config('system', 'curl_timeout'));
 		curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60));
 	}
 
-	if(defined('LIGHTTPD')) {
-		if(!is_array($headers)) {
+	if (defined('LIGHTTPD')) {
+		if (!is_array($headers)) {
 			$headers = array('Expect:');
 		} else {
-			if(!in_array('Expect:', $headers)) {
+			if (!in_array('Expect:', $headers)) {
 				array_push($headers, 'Expect:');
 			}
 		}
 	}
-	if($headers)
+
+	if ($headers) {
 		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+	}
 
-	$check_cert = get_config('system','verifyssl');
+	$check_cert = get_config('system', 'verifyssl');
 	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
+
 	if ($check_cert) {
 		@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
 	}
-	$prx = get_config('system','proxy');
-	if(strlen($prx)) {
+
+	$proxy = get_config('system', 'proxy');
+
+	if (strlen($proxy)) {
 		curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
-		curl_setopt($ch, CURLOPT_PROXY, $prx);
-		$prxusr = get_config('system','proxyuser');
-		if(strlen($prxusr))
-			curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr);
+		curl_setopt($ch, CURLOPT_PROXY, $proxy);
+		$proxyuser = get_config('system', 'proxyuser');
+		if (strlen($proxyuser)) {
+			curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuser);
+		}
 	}
 
 	$a->set_curl_code(0);
@@ -293,44 +322,48 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
 	$curl_info = curl_getinfo($ch);
 	$http_code = $curl_info['http_code'];
 
-	logger("post_url: result ".$http_code." - ".$url, LOGGER_DATA);
+	logger('post_url: result ' . $http_code . ' - ' . $url, LOGGER_DATA);
 
 	$header = '';
 
 	// Pull out multiple headers, e.g. proxy and continuation headers
 	// allow for HTTP/2.x without fixing code
 
-	while(preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/',$base)) {
-		$chunk = substr($base,0,strpos($base,"\r\n\r\n")+4);
+	while (preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/', $base)) {
+		$chunk = substr($base, 0, strpos($base, "\r\n\r\n") + 4);
 		$header .= $chunk;
-		$base = substr($base,strlen($chunk));
+		$base = substr($base, strlen($chunk));
 	}
 
-	if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
+	if ($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
 		$matches = array();
 		preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
 		$newurl = trim(array_pop($matches));
-		if(strpos($newurl,'/') === 0)
+
+		if (strpos($newurl, '/') === 0) {
 			$newurl = $old_location_info["scheme"] . "://" . $old_location_info["host"] . $newurl;
+		}
+
 		if (filter_var($newurl, FILTER_VALIDATE_URL)) {
 			$redirects++;
-			logger("post_url: redirect ".$url." to ".$newurl);
-			return post_url($newurl,$params, $headers, $redirects, $timeout);
-			//return fetch_url($newurl,false,$redirects,$timeout);
+			logger('post_url: redirect ' . $url . ' to ' . $newurl);
+			return post_url($newurl, $params, $headers, $redirects, $timeout);
 		}
 	}
+
 	$a->set_curl_code($http_code);
-	$body = substr($s,strlen($header));
+
+	$body = substr($s, strlen($header));
 
 	$a->set_curl_headers($header);
 
 	curl_close($ch);
 
-	$a->save_timestamp($stamp1, "network");
+	$a->save_timestamp($stamp1, 'network');
 
-	logger("post_url: end ".$url, LOGGER_DATA);
+	logger('post_url: end ' . $url, LOGGER_DATA);
 
-	return($body);
+	return $body;
 }
 
 // Generic XML return
@@ -341,7 +374,7 @@ function xml_status($st, $message = '') {
 
 	$xml_message = ((strlen($message)) ? "\t" . xmlify($message) . "\r\n" : '');
 
-	if($st)
+	if ($st)
 		logger('xml_status returning non_zero: ' . $st . " message=" . $message);
 
 	header( "Content-type: text/xml" );
@@ -369,12 +402,12 @@ function xml_status($st, $message = '') {
  */
 function http_status_exit($val, $description = array()) {
 	$err = '';
-	if($val >= 400) {
+	if ($val >= 400) {
 		$err = 'Error';
 		if (!isset($description["title"]))
 			$description["title"] = $err." ".$val;
 	}
-	if($val >= 200 && $val < 300)
+	if ($val >= 200 && $val < 300)
 		$err = 'OK';
 
 	logger('http_status_exit ' . $val);
@@ -400,20 +433,20 @@ function http_status_exit($val, $description = array()) {
  * @return boolean True if it's a valid URL, fals if something wrong with it
  */
 function validate_url(&$url) {
-	if(get_config('system','disable_url_validation'))
+	if (get_config('system','disable_url_validation'))
 		return true;
 
 	// no naked subdomains (allow localhost for tests)
-	if(strpos($url,'.') === false && strpos($url,'/localhost/') === false)
+	if (strpos($url,'.') === false && strpos($url,'/localhost/') === false)
 		return false;
 
-	if(substr($url,0,4) != 'http')
+	if (substr($url,0,4) != 'http')
 		$url = 'http://' . $url;
 
 	/// @TODO Really supress function outcomes? Why not find them + debug them?
 	$h = @parse_url($url);
 
-	if((is_array($h)) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
+	if ((is_array($h)) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
 		return true;
 	}
 
@@ -428,14 +461,14 @@ function validate_url(&$url) {
  */
 function validate_email($addr) {
 
-	if(get_config('system','disable_email_validation'))
+	if (get_config('system','disable_email_validation'))
 		return true;
 
-	if(! strpos($addr,'@'))
+	if (! strpos($addr,'@'))
 		return false;
 	$h = substr($addr,strpos($addr,'@') + 1);
 
-	if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
+	if (($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
 		return true;
 	}
 	return false;
@@ -454,30 +487,31 @@ function allowed_url($url) {
 
 	$h = @parse_url($url);
 
-	if(! $h) {
+	if (! $h) {
 		return false;
 	}
 
-	$str_allowed = get_config('system','allowed_sites');
-	if(! $str_allowed)
+	$str_allowed = Config::get('system', 'allowed_sites');
+	if (! $str_allowed) {
 		return true;
+	}
 
 	$found = false;
 
 	$host = strtolower($h['host']);
 
 	// always allow our own site
-
-	if($host == strtolower($_SERVER['SERVER_NAME']))
+	if ($host == strtolower($_SERVER['SERVER_NAME'])) {
 		return true;
+	}
 
 	$fnmatch = function_exists('fnmatch');
-	$allowed = explode(',',$str_allowed);
+	$allowed = explode(',', $str_allowed);
 
-	if(count($allowed)) {
-		foreach($allowed as $a) {
+	if (count($allowed)) {
+		foreach ($allowed as $a) {
 			$pat = strtolower(trim($a));
-			if(($fnmatch && fnmatch($pat,$host)) || ($pat == $host)) {
+			if (($fnmatch && fnmatch($pat, $host)) || ($pat == $host)) {
 				$found = true;
 				break;
 			}
@@ -486,6 +520,36 @@ function allowed_url($url) {
 	return $found;
 }
 
+/**
+ * Checks if the provided url domain is on the domain blocklist.
+ * Returns true if it is or malformed URL, false if not.
+ *
+ * @param string $url The url to check the domain from
+ * @return boolean
+ */
+function blocked_url($url) {
+	$h = @parse_url($url);
+
+	if (! $h) {
+		return true;
+	}
+
+	$domain_blocklist = Config::get('system', 'blocklist', array());
+	if (! $domain_blocklist) {
+		return false;
+	}
+
+	$host = strtolower($h['host']);
+
+	foreach ($domain_blocklist as $domain_block) {
+		if (strtolower($domain_block['domain']) == $host) {
+			return true;
+		}
+	}
+
+	return false;
+}
+
 /**
  * @brief Check if email address is allowed to register here.
  *
@@ -497,24 +561,25 @@ function allowed_url($url) {
  */
 function allowed_email($email) {
 
-
 	$domain = strtolower(substr($email,strpos($email,'@') + 1));
-	if(! $domain)
+	if (! $domain) {
 		return false;
+	}
 
 	$str_allowed = get_config('system','allowed_email');
-	if(! $str_allowed)
+	if (! $str_allowed) {
 		return true;
+	}
 
 	$found = false;
 
 	$fnmatch = function_exists('fnmatch');
 	$allowed = explode(',',$str_allowed);
 
-	if(count($allowed)) {
-		foreach($allowed as $a) {
+	if (count($allowed)) {
+		foreach ($allowed as $a) {
 			$pat = strtolower(trim($a));
-			if(($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) {
+			if (($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) {
 				$found = true;
 				break;
 			}
@@ -543,8 +608,8 @@ function avatar_img($email) {
 
 function parse_xml_string($s,$strict = true) {
 	/// @todo Move this function to the xml class
-	if($strict) {
-		if(! strstr($s,' $contact['id']));
 	}
 }
 
diff --git a/include/notifier.php b/include/notifier.php
index 370611b4eb..4f9b34d014 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -1,13 +1,14 @@
 gen_token();
 		$sec = $this->gen_token();
-		
+
 		if ($consumer->key){
 			$k = $consumer->key;
 		} else {
 			$k = $consumer;
 		}
-		
+
 		$r = q("INSERT INTO tokens (id, secret, client_id, scope, expires) VALUES ('%s','%s','%s','%s', UNIX_TIMESTAMP()+%d)",
 				dbesc($key),
 				dbesc($sec),
@@ -80,19 +82,19 @@ class FKOAuthDataStore extends OAuthDataStore {
 
   function new_access_token($token, $consumer, $verifier = null) {
     logger(__function__.":".$token.", ". $consumer.", ". $verifier);
-    
+
     // return a new access token attached to this consumer
     // for the user associated with this token if the request token
     // is authorized
     // should also invalidate the request token
-    
+
     $ret=Null;
-    
+
     // get user for this verifier
     $uverifier = get_config("oauth", $verifier);
     logger(__function__.":".$verifier.",".$uverifier);
     if (is_null($verifier) || ($uverifier!==false)){
-		
+
 		$key = $this->gen_token();
 		$sec = $this->gen_token();
 		$r = q("INSERT INTO tokens (id, secret, client_id, scope, expires, uid) VALUES ('%s','%s','%s','%s', UNIX_TIMESTAMP()+%d, %d)",
@@ -103,13 +105,13 @@ class FKOAuthDataStore extends OAuthDataStore {
 				intval(ACCESS_TOKEN_DURATION),
 				intval($uverifier));
 		if ($r)
-			$ret = new OAuthToken($key,$sec);		
+			$ret = new OAuthToken($key,$sec);
 	}
-		
-		
+
+
 	q("DELETE FROM tokens WHERE id='%s'", $token->key);
-	
-	
+
+
 	if (!is_null($ret) && $uverifier!==false){
 		del_config("oauth", $verifier);
 	/*	$apps = get_pconfig($uverifier, "oauth", "apps");
@@ -117,9 +119,9 @@ class FKOAuthDataStore extends OAuthDataStore {
 		$apps[] = $consumer->key;
 		set_pconfig($uverifier, "oauth", "apps", $apps);*/
 	}
-		
+
     return $ret;
-    
+
   }
 }
 
@@ -155,7 +157,7 @@ class FKOAuth1 extends OAuthServer {
 		//notice( t("Welcome back ") . $record['username'] . EOL);
 		$a->user = $record;
 
-		if(strlen($a->user['timezone'])) {
+		if (strlen($a->user['timezone'])) {
 			date_default_timezone_set($a->user['timezone']);
 			$a->timezone = $a->user['timezone'];
 		}
@@ -172,9 +174,9 @@ class FKOAuth1 extends OAuthServer {
 			intval($_SESSION['uid'])
 		);
 
-		call_hooks('logged_in', $a->user);		
+		call_hooks('logged_in', $a->user);
 	}
-	
+
 }
 /*
 class FKOAuth2 extends OAuth2 {
@@ -190,13 +192,13 @@ class FKOAuth2 extends OAuth2 {
 			dbesc($client_secret),
 			dbesc($redirect_uri)
 		);
-		  
+
 		return $r;
 	}
 
 	protected function checkClientCredentials($client_id, $client_secret = NULL) {
 		$client_secret = $this->db_secret($client_secret);
-		
+
 		$r = q("SELECT pw FROM clients WHERE client_id = '%s'",
 			dbesc($client_id));
 
@@ -218,21 +220,21 @@ class FKOAuth2 extends OAuth2 {
 	protected function getAccessToken($oauth_token) {
 		$r = q("SELECT client_id, expires, scope FROM tokens WHERE id = '%s'",
 				dbesc($oauth_token));
-	
+
 		if (dbm::is_result($r))
 			return $r[0];
 		return null;
 	}
 
 
-	
+
 	protected function setAccessToken($oauth_token, $client_id, $expires, $scope = NULL) {
 		$r = q("INSERT INTO tokens (id, client_id, expires, scope) VALUES ('%s', '%s', %d, '%s')",
 				dbesc($oauth_token),
 				dbesc($client_id),
 				intval($expires),
 				dbesc($scope));
-				
+
 		return $r;
 	}
 
@@ -246,23 +248,23 @@ class FKOAuth2 extends OAuth2 {
 	protected function getAuthCode($code) {
 		$r = q("SELECT id, client_id, redirect_uri, expires, scope FROM auth_codes WHERE id = '%s'",
 				dbesc($code));
-		
+
 		if (dbm::is_result($r))
 			return $r[0];
 		return null;
 	}
 
 	protected function setAuthCode($code, $client_id, $redirect_uri, $expires, $scope = NULL) {
-		$r = q("INSERT INTO auth_codes 
-					(id, client_id, redirect_uri, expires, scope) VALUES 
+		$r = q("INSERT INTO auth_codes
+					(id, client_id, redirect_uri, expires, scope) VALUES
 					('%s', '%s', '%s', %d, '%s')",
 				dbesc($code),
 				dbesc($client_id),
 				dbesc($redirect_uri),
 				intval($expires),
 				dbesc($scope));
-		return $r;	  
-	}	
-	
+		return $r;
+	}
+
 }
 */
diff --git a/include/oembed.php b/include/oembed.php
index 0b8b713667..d28a97e322 100755
--- a/include/oembed.php
+++ b/include/oembed.php
@@ -4,8 +4,9 @@
  * @file include/oembed.php
  */
 
-use \Friendica\ParseUrl;
-use \Friendica\Core\Config;
+use Friendica\App;
+use Friendica\ParseUrl;
+use Friendica\Core\Config;
 
 function oembed_replacecb($matches){
 	$embedurl=$matches[1];
@@ -303,9 +304,11 @@ function oembed_html2bbcode($text) {
 		$entries = $xpath->query("//span[$xattr]");
 
 		$xattr = "@rel='oembed'";//oe_build_xpath("rel","oembed");
-		foreach($entries as $e) {
+		foreach ($entries as $e) {
 			$href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue;
-			if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[/embed]"), $e);
+			if (!is_null($href)) {
+				$e->parentNode->replaceChild(new DOMText("[embed]".$href."[/embed]"), $e);
+			}
 		}
 		return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) );
 	} else {
diff --git a/include/onepoll.php b/include/onepoll.php
index 5227b61a1a..cf5a1f576a 100644
--- a/include/onepoll.php
+++ b/include/onepoll.php
@@ -1,6 +1,6 @@
 ',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
+								}
 							}
 							$qstr = implode(',',$refs_arr);
 							$r = q("SELECT `uri` , `parent-uri` FROM `item` USE INDEX (`uid_uri`) WHERE `uri` IN ($qstr) AND `uid` = %d LIMIT 1",
 								intval($importer_uid)
 							);
-							if (dbm::is_result($r))
+							if (dbm::is_result($r)) {
 								$datarray['parent-uri'] = $r[0]['parent-uri'];  // Set the parent as the top-level item
-	//							$datarray['parent-uri'] = $r[0]['uri'];
+								//$datarray['parent-uri'] = $r[0]['uri'];
+							}
 						}
 
 						// Decoding the header
@@ -611,14 +613,17 @@ function onepoll_run(&$argv, &$argc){
 		consume_feed($xml,$importer,$contact,$hub,1,2);
 
 		$hubmode = 'subscribe';
-		if ($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
+		if ($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly']) {
 			$hubmode = 'unsubscribe';
+		}
 
-		if (($contact['network'] === NETWORK_OSTATUS ||  $contact['network'] == NETWORK_FEED) && (! $contact['hub-verify']))
+		if (($contact['network'] === NETWORK_OSTATUS ||  $contact['network'] == NETWORK_FEED) && (! $contact['hub-verify'])) {
 			$hub_update = true;
+		}
 
-		if ($force)
+		if ($force) {
 			$hub_update = true;
+		}
 
 		logger("Contact ".$contact['id']." returned hub: ".$hub." Network: ".$contact['network']." Relation: ".$contact['rel']." Update: ".$hub_update);
 
diff --git a/include/ostatus.php b/include/ostatus.php
index c1d730eb13..a1da94f6a7 100644
--- a/include/ostatus.php
+++ b/include/ostatus.php
@@ -3,20 +3,24 @@
  * @file include/ostatus.php
  */
 
-require_once("include/Contact.php");
-require_once("include/threads.php");
-require_once("include/html2bbcode.php");
-require_once("include/bbcode.php");
-require_once("include/items.php");
-require_once("mod/share.php");
-require_once("include/enotify.php");
-require_once("include/socgraph.php");
-require_once("include/Photo.php");
-require_once("include/Scrape.php");
-require_once("include/follow.php");
-require_once("include/api.php");
-require_once("mod/proxy.php");
-require_once("include/xml.php");
+use Friendica\App;
+use Friendica\Core\Config;
+use Friendica\Network\Probe;
+
+require_once 'include/Contact.php';
+require_once 'include/threads.php';
+require_once 'include/html2bbcode.php';
+require_once 'include/bbcode.php';
+require_once 'include/items.php';
+require_once 'mod/share.php';
+require_once 'include/enotify.php';
+require_once 'include/socgraph.php';
+require_once 'include/Photo.php';
+require_once 'include/probe.php';
+require_once 'include/follow.php';
+require_once 'include/api.php';
+require_once 'mod/proxy.php';
+require_once 'include/xml.php';
 
 /**
  * @brief This class contain functions for the OStatus protocol
@@ -27,42 +31,6 @@ class ostatus {
 	const OSTATUS_DEFAULT_POLL_TIMEFRAME = 1440; // given in minutes
 	const OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS = 14400; // given in minutes
 
-	/**
-	 * @brief Mix two paths together to possibly fix missing parts
-	 *
-	 * @param string $avatar Path to the avatar
-	 * @param string $base Another path that is hopefully complete
-	 *
-	 * @return string fixed avatar path
-	 */
-	public static function fix_avatar($avatar, $base) {
-		$base_parts = parse_url($base);
-
-		// Remove all parts that could create a problem
-		unset($base_parts['path']);
-		unset($base_parts['query']);
-		unset($base_parts['fragment']);
-
-		$avatar_parts = parse_url($avatar);
-
-		// Now we mix them
-		$parts = array_merge($base_parts, $avatar_parts);
-
-		// And put them together again
-		$scheme   = isset($parts['scheme']) ? $parts['scheme'] . '://' : '';
-		$host     = isset($parts['host']) ? $parts['host'] : '';
-		$port     = isset($parts['port']) ? ':' . $parts['port'] : '';
-		$path     = isset($parts['path']) ? $parts['path'] : '';
-		$query    = isset($parts['query']) ? '?' . $parts['query'] : '';
-		$fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : '';
-
-		$fixed = $scheme.$host.$port.$path.$query.$fragment;
-
-		logger('Base: '.$base.' - Avatar: '.$avatar.' - Fixed: '.$fixed, LOGGER_DATA);
-
-		return $fixed;
-	}
-
 	/**
 	 * @brief Fetches author data
 	 *
@@ -79,46 +47,72 @@ class ostatus {
 		$author = array();
 		$author["author-link"] = $xpath->evaluate('atom:author/atom:uri/text()', $context)->item(0)->nodeValue;
 		$author["author-name"] = $xpath->evaluate('atom:author/atom:name/text()', $context)->item(0)->nodeValue;
+		$addr = $xpath->evaluate('atom:author/atom:email/text()', $context)->item(0)->nodeValue;
 
 		$aliaslink = $author["author-link"];
 
 		$alternate = $xpath->query("atom:author/atom:link[@rel='alternate']", $context)->item(0)->attributes;
-		if (is_object($alternate))
-			foreach($alternate AS $attributes)
-				if ($attributes->name == "href")
+		if (is_object($alternate)) {
+			foreach ($alternate AS $attributes) {
+				if (($attributes->name == "href") AND ($attributes->textContent != "")) {
 					$author["author-link"] = $attributes->textContent;
+				}
+			}
+		}
 
-		$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` IN ('%s', '%s') AND `network` != '%s'",
-			intval($importer["uid"]), dbesc(normalise_link($author["author-link"])),
-			dbesc(normalise_link($aliaslink)), dbesc(NETWORK_STATUSNET));
-		if ($r) {
-			$contact = $r[0];
-			$author["contact-id"] = $r[0]["id"];
-		} else
-			$author["contact-id"] = $contact["id"];
+		$author["contact-id"] = $contact["id"];
+
+		if ($author["author-link"] != "") {
+			if ($aliaslink == "") {
+				$aliaslink = $author["author-link"];
+			}
+
+			$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` IN ('%s', '%s') AND `network` != '%s'",
+				intval($importer["uid"]), dbesc(normalise_link($author["author-link"])),
+				dbesc(normalise_link($aliaslink)), dbesc(NETWORK_STATUSNET));
+
+			if (dbm::is_result($r)) {
+				$contact = $r[0];
+				$author["contact-id"] = $r[0]["id"];
+				$author["author-link"] = $r[0]["url"];
+			}
+		} elseif ($addr != "") {
+			// Should not happen
+			$contact = dba::fetch_first("SELECT * FROM `contact` WHERE `uid` = ? AND `addr` = ? AND `network` != ?",
+					$importer["uid"], $addr, NETWORK_STATUSNET);
+
+			if (dbm::is_result($contact)) {
+				$author["contact-id"] = $contact["id"];
+				$author["author-link"] = $contact["url"];
+			}
+		}
 
 		$avatarlist = array();
 		$avatars = $xpath->query("atom:author/atom:link[@rel='avatar']", $context);
-		foreach($avatars AS $avatar) {
+		foreach ($avatars AS $avatar) {
 			$href = "";
 			$width = 0;
-			foreach($avatar->attributes AS $attributes) {
-				if ($attributes->name == "href")
+			foreach ($avatar->attributes AS $attributes) {
+				if ($attributes->name == "href") {
 					$href = $attributes->textContent;
-				if ($attributes->name == "width")
+				}
+				if ($attributes->name == "width") {
 					$width = $attributes->textContent;
+				}
 			}
-			if (($width > 0) AND ($href != ""))
+			if (($width > 0) AND ($href != "")) {
 				$avatarlist[$width] = $href;
+			}
 		}
 		if (count($avatarlist) > 0) {
 			krsort($avatarlist);
-			$author["author-avatar"] = self::fix_avatar(current($avatarlist), $author["author-link"]);
+			$author["author-avatar"] = Probe::fixAvatar(current($avatarlist), $author["author-link"]);
 		}
 
 		$displayname = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue;
-		if ($displayname != "")
+		if ($displayname != "") {
 			$author["author-name"] = $displayname;
+		}
 
 		$author["owner-name"] = $author["author-name"];
 		$author["owner-link"] = $author["author-link"];
@@ -312,8 +306,10 @@ class ostatus {
 
 		if ($first_child == "feed") {
 			$entries = $xpath->query('/atom:feed/atom:entry');
+			$header["protocol"] = PROTOCOL_OSTATUS_FEED;
 		} else {
 			$entries = $xpath->query('/atom:entry');
+			$header["protocol"] = PROTOCOL_OSTATUS_SALMON;
 		}
 		$conversation = "";
 		$conversationlist = array();
@@ -370,7 +366,7 @@ class ostatus {
 			} elseif ($item["object-type"] == ACTIVITY_OBJ_QUESTION) {
 				$item["title"] = $xpath->query('atom:title/text()', $entry)->item(0)->nodeValue;
 			}
-			$item["object"] = $xml;
+			$item["source"] = $xml;
 
 			/// @TODO
 			/// Delete a message
@@ -418,6 +414,19 @@ class ostatus {
 			$item["created"] = $xpath->query('atom:published/text()', $entry)->item(0)->nodeValue;
 			$item["edited"] = $xpath->query('atom:updated/text()', $entry)->item(0)->nodeValue;
 			$conversation = $xpath->query('ostatus:conversation/text()', $entry)->item(0)->nodeValue;
+			$item['conversation-uri'] = $conversation;
+
+			$conv = $xpath->query('ostatus:conversation', $entry);
+			if (is_object($conv->item(0))) {
+				foreach ($conv->item(0)->attributes AS $attributes) {
+					if ($attributes->name == "ref") {
+						$item['conversation-uri'] = $attributes->textContent;
+					}
+					if ($attributes->name == "href") {
+						$item['conversation-href'] = $attributes->textContent;
+					}
+				}
+			}
 
 			$related = "";
 
@@ -443,7 +452,7 @@ class ostatus {
 					foreach ($category->attributes AS $attributes) {
 						if ($attributes->name == "term") {
 							$term = $attributes->textContent;
-							if(strlen($item["tag"])) {
+							if (strlen($item["tag"])) {
 								$item["tag"] .= ',';
 							}
 							$item["tag"] .= "#[url=".App::get_baseurl()."/search?tag=".$term."]".$term."[/url]";
@@ -471,6 +480,10 @@ class ostatus {
 								break;
 							case "ostatus:conversation":
 								$conversation = $attribute['href'];
+								$item['conversation-href'] = $conversation;
+								if (!isset($item['conversation-uri'])) {
+									$item['conversation-uri'] = $item['conversation-href'];
+								}
 								break;
 							case "enclosure":
 								$enclosure = $attribute['href'];
@@ -897,6 +910,8 @@ class ostatus {
 			($item["verb"] == ACTIVITY_LIKE) OR ($conversation_url == "")) {
 			$item_stored = item_store($item, $all_threads);
 			return $item_stored;
+		} elseif (count($item) > 0) {
+			$item = store_conversation($item);
 		}
 
 		// Get the parent
@@ -1137,6 +1152,7 @@ class ostatus {
 				continue;
 			}
 
+			/// @TODO One statment is okay (until if () )
 			$arr = array();
 			$arr["network"] = $details["network"];
 			$arr["uri"] = $single_conv->id;
@@ -1153,13 +1169,17 @@ class ostatus {
 				$arr["owner-name"] = $single_conv->actor->portablecontacts_net->displayName;
 
 			$arr["owner-link"] = $actor;
-			$arr["owner-avatar"] = self::fix_avatar($single_conv->actor->image->url, $arr["owner-link"]);
+			$arr["owner-avatar"] = Probe::fixAvatar($single_conv->actor->image->url, $arr["owner-link"]);
 
 			$arr["author-name"] = $arr["owner-name"];
 			$arr["author-link"] = $arr["owner-link"];
 			$arr["author-avatar"] = $arr["owner-avatar"];
 			$arr["body"] = add_page_info_to_body(html2bbcode($single_conv->content));
 
+			if (isset($single_conv->status_net->conversation)) {
+				$arr['conversation-uri'] = $single_conv->status_net->conversation;
+			}
+
 			if (isset($single_conv->status_net->notice_info->source))
 				$arr["app"] = strip_tags($single_conv->status_net->notice_info->source);
 			elseif (isset($single_conv->statusnet->notice_info->source))
@@ -1172,7 +1192,9 @@ class ostatus {
 				$arr["app"] = "OStatus";
 
 
-			$arr["object"] = json_encode($single_conv);
+			$arr["source"] = json_encode($single_conv);
+			$arr["protocol"] = PROTOCOL_GS_CONVERSATION;
+
 			$arr["verb"] = $parent["verb"];
 			$arr["visible"] = $parent["visible"];
 			$arr["location"] = $single_conv->location->displayName;
@@ -1212,7 +1234,7 @@ class ostatus {
 					$arr["author-name"] = $single_conv->object->actor->contact->displayName;
 				}
 				$arr["author-link"] = $single_conv->object->actor->url;
-				$arr["author-avatar"] = self::fix_avatar($single_conv->object->actor->image->url, $arr["author-link"]);
+				$arr["author-avatar"] = Probe::fixAvatar($single_conv->object->actor->image->url, $arr["author-link"]);
 
 				$arr["app"] = $single_conv->object->provider->displayName."#";
 				//$arr["verb"] = $single_conv->object->verb;
@@ -1404,6 +1426,7 @@ class ostatus {
 		$root->setAttribute("xmlns:poco", NAMESPACE_POCO);
 		$root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
 		$root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
+		$root->setAttribute("xmlns:mastodon", NAMESPACE_MASTODON);
 
 		$attributes = array("uri" => "https://friendi.ca", "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION);
 		xml::add_element($doc, $root, "generator", FRIENDICA_PLATFORM, $attributes);
@@ -1542,14 +1565,16 @@ class ostatus {
 	 */
 	private function add_author($doc, $owner) {
 
-		$r = q("SELECT `homepage` FROM `profile` WHERE `uid` = %d AND `is-default` LIMIT 1", intval($owner["uid"]));
+		$r = q("SELECT `homepage`, `publish` FROM `profile` WHERE `uid` = %d AND `is-default` LIMIT 1", intval($owner["uid"]));
 		if ($r)
 			$profile = $r[0];
 
 		$author = $doc->createElement("author");
+		xml::add_element($doc, $author, "id", $owner["url"]);
 		xml::add_element($doc, $author, "activity:object-type", ACTIVITY_OBJ_PERSON);
 		xml::add_element($doc, $author, "uri", $owner["url"]);
-		xml::add_element($doc, $author, "name", $owner["name"]);
+		xml::add_element($doc, $author, "name", $owner["nick"]);
+		xml::add_element($doc, $author, "email", $owner["addr"]);
 		xml::add_element($doc, $author, "summary", bbcode($owner["about"], false, false, 7));
 
 		$attributes = array("rel" => "alternate", "type" => "text/html", "href" => $owner["url"]);
@@ -1596,6 +1621,9 @@ class ostatus {
 			xml::add_element($doc, $author, "statusnet:profile_info", "", array("local_id" => $owner["uid"]));
 		}
 
+		if ($profile["publish"]) {
+			xml::add_element($doc, $author, "mastodon:scope", "public");
+		}
 		return $author;
 	}
 
@@ -1769,7 +1797,7 @@ class ostatus {
 		self::entry_content($doc, $as_object, $repeated_item, $owner, "", "", false);
 
 		$author = self::add_author($doc, $contact);
-                $as_object->appendChild($author);
+		$as_object->appendChild($author);
 
 		$as_object2 = $doc->createElement("activity:object");
 
@@ -1991,6 +2019,7 @@ class ostatus {
 			$entry->setAttribute("xmlns:poco", NAMESPACE_POCO);
 			$entry->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
 			$entry->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
+			$entry->setAttribute("xmlns:mastodon", NAMESPACE_MASTODON);
 
 			$author = self::add_author($doc, $owner);
 			$entry->appendChild($author);
@@ -2057,39 +2086,54 @@ class ostatus {
 			$parent = q("SELECT `guid`, `author-link`, `owner-link` FROM `item` WHERE `id` = %d", intval($item["parent"]));
 			$parent_item = (($item['thr-parent']) ? $item['thr-parent'] : $item['parent-uri']);
 
+			$thrparent = q("SELECT `guid`, `author-link`, `owner-link`, `plink` FROM `item` WHERE `uid` = %d AND `uri` = '%s'",
+					intval($owner["uid"]),
+					dbesc($parent_item));
+			if ($thrparent) {
+				$mentioned[$thrparent[0]["author-link"]] = $thrparent[0]["author-link"];
+				$mentioned[$thrparent[0]["owner-link"]] = $thrparent[0]["owner-link"];
+				$parent_plink = $thrparent[0]["plink"];
+			} else {
+				$mentioned[$parent[0]["author-link"]] = $parent[0]["author-link"];
+				$mentioned[$parent[0]["owner-link"]] = $parent[0]["owner-link"];
+				$parent_plink = App::get_baseurl()."/display/".$parent[0]["guid"];
+			}
+
 			$attributes = array(
 					"ref" => $parent_item,
-					"type" => "text/html",
-					"href" => App::get_baseurl()."/display/".$parent[0]["guid"]);
+					"href" => $parent_plink);
 			xml::add_element($doc, $entry, "thr:in-reply-to", "", $attributes);
 
 			$attributes = array(
 					"rel" => "related",
-					"href" => App::get_baseurl()."/display/".$parent[0]["guid"]);
+					"href" => $parent_plink);
 			xml::add_element($doc, $entry, "link", "", $attributes);
+		}
 
-			$mentioned[$parent[0]["author-link"]] = $parent[0]["author-link"];
-			$mentioned[$parent[0]["owner-link"]] = $parent[0]["owner-link"];
+		if (intval($item["parent"]) > 0) {
+			$conversation_href = App::get_baseurl()."/display/".$owner["nick"]."/".$item["parent"];
+			$conversation_uri = $conversation_href;
 
-			$thrparent = q("SELECT `guid`, `author-link`, `owner-link` FROM `item` WHERE `uid` = %d AND `uri` = '%s'",
-					intval($owner["uid"]),
-					dbesc($parent_item));
-			if ($thrparent) {
-				$mentioned[$thrparent[0]["author-link"]] = $thrparent[0]["author-link"];
-				$mentioned[$thrparent[0]["owner-link"]] = $thrparent[0]["owner-link"];
+			if (isset($parent_item)) {
+				$r = dba::fetch_first("SELECT `conversation-uri`, `conversation-href` FROM `conversation` WHERE `item-uri` = ?", $parent_item);
+				if (dbm::is_result($r)) {
+					if ($r['conversation-uri'] != '') {
+						$conversation_uri = $r['conversation-uri'];
+					}
+					if ($r['conversation-href'] != '') {
+						$conversation_href = $r['conversation-href'];
+					}
+				}
 			}
-		}
 
-		if (intval($item["parent"]) > 0) {
-			$conversation = App::get_baseurl()."/display/".$owner["nick"]."/".$item["parent"];
-			xml::add_element($doc, $entry, "link", "", array("rel" => "ostatus:conversation", "href" => $conversation));
+			xml::add_element($doc, $entry, "link", "", array("rel" => "ostatus:conversation", "href" => $conversation_href));
 
 			$attributes = array(
-					"href" => $conversation,
+					"href" => $conversation_href,
 					"local_id" => $item["parent"],
-					"ref" => $conversation);
+					"ref" => $conversation_uri);
 
-			xml::add_element($doc, $entry, "ostatus:conversation", $conversation, $attributes);
+			xml::add_element($doc, $entry, "ostatus:conversation", $conversation_uri, $attributes);
 		}
 
 		$tags = item_getfeedtags($item);
@@ -2127,6 +2171,7 @@ class ostatus {
 			xml::add_element($doc, $entry, "link", "", array("rel" => "mentioned",
 									"ostatus:object-type" => "http://activitystrea.ms/schema/1.0/collection",
 									"href" => "http://activityschema.org/collection/public"));
+			xml::add_element($doc, $entry, "mastodon:scope", "public");
 		}
 
 		if(count($tags))
@@ -2156,7 +2201,7 @@ class ostatus {
 	/**
 	 * @brief Creates the XML feed for a given nickname
 	 *
-	 * @param app $a The application class
+	 * @param App $a The application class
 	 * @param string $owner_nick Nickname of the feed owner
 	 * @param string $last_update Date of the last update
 	 *
@@ -2173,7 +2218,7 @@ class ostatus {
 
 		$owner = $r[0];
 
-		if(!strlen($last_update))
+		if (!strlen($last_update))
 			$last_update = 'now -30 days';
 
 		$check_date = datetime_convert('UTC','UTC',$last_update,'Y-m-d H:i:s');
@@ -2218,6 +2263,9 @@ class ostatus {
 		$root = self::add_header($doc, $owner);
 
 		foreach ($items AS $item) {
+			if (Config::get('system', 'ostatus_debug')) {
+				$item['body'] .= '🍼';
+			}
 			$entry = self::entry($doc, $item, $owner);
 			$root->appendChild($entry);
 		}
@@ -2238,6 +2286,10 @@ class ostatus {
 		$doc = new DOMDocument('1.0', 'utf-8');
 		$doc->formatOutput = true;
 
+		if (Config::get('system', 'ostatus_debug')) {
+			$item['body'] .= '🐟';
+		}
+
 		$entry = self::entry($doc, $item, $owner, true);
 
 		$doc->appendChild($entry);
@@ -2245,4 +2297,3 @@ class ostatus {
 		return(trim($doc->saveXML()));
 	}
 }
-?>
diff --git a/include/pgettext.php b/include/pgettext.php
index b42dcec119..9b541e8e3c 100644
--- a/include/pgettext.php
+++ b/include/pgettext.php
@@ -10,7 +10,7 @@
  *
  */
 
-use \Friendica\Core\Config;
+use Friendica\Core\Config;
 
 require_once("include/dba.php");
 
diff --git a/include/photos.php b/include/photos.php
index e872532a48..38cda3f2ba 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -4,8 +4,8 @@
  * @brief Functions related to photo handling.
  */
 
-use \Friendica\Core\Config;
-use \Friendica\Core\PConfig;
+use Friendica\Core\Config;
+use Friendica\Core\PConfig;
 
 function getGps($exifCoord, $hemi) {
 	$degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
diff --git a/include/pidfile.php b/include/pidfile.php
index 3093e149ae..dda6b3e9c1 100644
--- a/include/pidfile.php
+++ b/include/pidfile.php
@@ -38,4 +38,3 @@ class pidfile {
 			return(posix_kill(file_get_contents($this->_file), SIGTERM));
 	}
 }
-?>
diff --git a/include/plaintext.php b/include/plaintext.php
index 6ab4ec77d6..215d9f3db7 100644
--- a/include/plaintext.php
+++ b/include/plaintext.php
@@ -4,7 +4,8 @@
  * @file include/plaintext.php
  */
 
-use \Friendica\ParseUrl;
+use Friendica\App;
+use Friendica\ParseUrl;
 
 require_once("include/Photo.php");
 require_once("include/bbcode.php");
@@ -431,4 +432,3 @@ function plaintext(App $a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2
 
 	return($post);
 }
-?>
diff --git a/include/plugin.php b/include/plugin.php
index 83f6f1ab95..336b213aa3 100644
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -1,10 +1,11 @@
 start_process();
 
+	if ($a->min_memory_reached()) {
+		return;
+	}
+
 	if (poller_max_connections_reached()) {
 		return;
 	}
@@ -67,6 +73,11 @@ function poller_run($argv, $argc){
 
 	while ($r = poller_worker_process()) {
 
+		// Check free memory
+		if ($a->min_memory_reached()) {
+			return;
+		}
+
 		// Count active workers and compare them with a maximum value that depends on the load
 		if (poller_too_much_workers()) {
 			return;
@@ -80,7 +91,6 @@ function poller_run($argv, $argc){
 		if (time() > ($starttime + 3600))
 			return;
 	}
-
 }
 
 /**
@@ -111,14 +121,10 @@ function poller_execute($queue) {
 		return false;
 	}
 
-	$upd = q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d AND `pid` = 0",
-		dbesc(datetime_convert()),
-		intval($mypid),
-		intval($queue["id"]));
-
-	if (!$upd) {
+	if (!dba::update('workerqueue', array('executed' => datetime_convert(), 'pid' => $mypid),
+			array('id' => $queue["id"], 'pid' => 0))) {
 		logger("Couldn't update queue entry ".$queue["id"]." - skip this execution", LOGGER_DEBUG);
-		q("COMMIT");
+		dba::commit();
 		return true;
 	}
 
@@ -126,18 +132,18 @@ function poller_execute($queue) {
 	$id = q("SELECT `pid`, `executed` FROM `workerqueue` WHERE `id` = %d", intval($queue["id"]));
 	if (!$id) {
 		logger("Queue item ".$queue["id"]." vanished - skip this execution", LOGGER_DEBUG);
-		q("COMMIT");
+		dba::commit();
 		return true;
 	} elseif ((strtotime($id[0]["executed"]) <= 0) OR ($id[0]["pid"] == 0)) {
 		logger("Entry for queue item ".$queue["id"]." wasn't stored - skip this execution", LOGGER_DEBUG);
-		q("COMMIT");
+		dba::commit();
 		return true;
 	} elseif ($id[0]["pid"] != $mypid) {
 		logger("Queue item ".$queue["id"]." is to be executed by process ".$id[0]["pid"]." and not by me (".$mypid.") - skip this execution", LOGGER_DEBUG);
-		q("COMMIT");
+		dba::commit();
 		return true;
 	}
-	q("COMMIT");
+	dba::commit();
 
 	$argv = json_decode($queue["parameter"]);
 
@@ -146,7 +152,7 @@ function poller_execute($queue) {
 
 	if (!validate_include($include)) {
 		logger("Include file ".$argv[0]." is not valid!");
-		q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($queue["id"]));
+		dba::delete('workerqueue', array('id' => $queue["id"]));
 		return true;
 	}
 
@@ -158,7 +164,7 @@ function poller_execute($queue) {
 
 		poller_exec_function($queue, $funcname, $argv);
 
-		q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($queue["id"]));
+		dba::delete('workerqueue', array('id' => $queue["id"]));
 	} else {
 		logger("Function ".$funcname." does not exist");
 	}
@@ -366,8 +372,8 @@ function poller_kill_stale_workers() {
 
 	foreach ($r AS $pid) {
 		if (!posix_kill($pid["pid"], 0)) {
-			q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = 0 WHERE `pid` = %d",
-				dbesc(NULL_DATE), intval($pid["pid"]));
+			dba::update('workerqueue', array('executed' => NULL_DATE, 'pid' => 0),
+					array('pid' => $pid["pid"]));
 		} else {
 			// Kill long running processes
 
@@ -391,12 +397,9 @@ function poller_kill_stale_workers() {
 				// We killed the stale process.
 				// To avoid a blocking situation we reschedule the process at the beginning of the queue.
 				// Additionally we are lowering the priority.
-				q("UPDATE `workerqueue` SET `executed` = '%s', `created` = '%s',
-							`priority` = %d, `pid` = 0 WHERE `pid` = %d",
-					dbesc(NULL_DATE),
-					dbesc(datetime_convert()),
-					intval(PRIORITY_NEGLIGIBLE),
-					intval($pid["pid"]));
+				dba::update('workerqueue',
+						array('executed' => NULL_DATE, 'created' => datetime_convert(), 'priority' => PRIORITY_NEGLIGIBLE, 'pid' => 0),
+						array('pid' => $pid["pid"]));
 			} else {
 				logger("Worker process ".$pid["pid"]." (".implode(" ", $argv).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG);
 			}
@@ -548,7 +551,7 @@ function poller_passing_slow(&$highest_priority) {
  */
 function poller_worker_process() {
 
-	q("START TRANSACTION;");
+	dba::transaction();
 
 	// Check if we should pass some low priority process
 	$highest_priority = 0;
@@ -678,4 +681,3 @@ if (array_search(__file__,get_included_files())===0){
 
 	killme();
 }
-?>
diff --git a/include/post_update.php b/include/post_update.php
index f9649961d9..9d18b27b4f 100644
--- a/include/post_update.php
+++ b/include/post_update.php
@@ -258,5 +258,3 @@ function post_update_1206() {
 	logger("Done", LOGGER_DEBUG);
 	return true;
 }
-
-?>
diff --git a/include/probe.php b/include/probe.php
new file mode 100644
index 0000000000..8cf703be80
--- /dev/null
+++ b/include/probe.php
@@ -0,0 +1,41 @@
+
diff --git a/include/redir.php b/include/redir.php
index 76e30a6eac..36f982b12c 100644
--- a/include/redir.php
+++ b/include/redir.php
@@ -1,5 +1,7 @@
  $id), array('limit' => 1));
 	if (dbm::is_result($r)) {
 		return;
 	}
 
-	q("DELETE FROM `item` WHERE `contact-id` = %d", intval($id));
-
-	q("DELETE FROM `photo` WHERE `contact-id` = %d", intval($id));
-
-	q("DELETE FROM `mail` WHERE `contact-id` = %d", intval($id));
-
-	q("DELETE FROM `event` WHERE `cid` = %d", intval($id));
-
-	q("DELETE FROM `queue` WHERE `cid` = %d", intval($id));
+	// Now we delete all the depending table entries
+	dba::delete('contact', array('id' => $id));
 }
-?>
diff --git a/include/salmon.php b/include/salmon.php
index 79fd4c10d9..6e08d0aaf2 100644
--- a/include/salmon.php
+++ b/include/salmon.php
@@ -1,7 +1,8 @@
 loadHTML($body);
-	$xpath = new \DomXPath($doc);
+	$xpath = new DomXPath($doc);
 
 	$list = $xpath->query("//meta[@name]");
 
@@ -1008,6 +1010,7 @@ function poco_check_server($server_url, $network = "", $force = false) {
 	if (dbm::is_result($servers) AND ($orig_server_url == $server_url) AND
 		($serverret['errno'] == CURLE_OPERATION_TIMEDOUT)) {
 		logger("Connection to server ".$server_url." timed out.", LOGGER_DEBUG);
+		dba::p("UPDATE `gserver` SET `last_failure` = ? WHERE `nurl` = ?", datetime_convert(), normalise_link($server_url));
 		return false;
 	}
 
@@ -1022,6 +1025,7 @@ function poco_check_server($server_url, $network = "", $force = false) {
 		// Quit if there is a timeout
 		if ($serverret['errno'] == CURLE_OPERATION_TIMEDOUT) {
 			logger("Connection to server ".$server_url." timed out.", LOGGER_DEBUG);
+			dba::p("UPDATE `gserver` SET `last_failure` = ? WHERE `nurl` = ?", datetime_convert(), normalise_link($server_url));
 			return false;
 		}
 
@@ -1031,12 +1035,10 @@ function poco_check_server($server_url, $network = "", $force = false) {
 	if (!$serverret["success"] OR ($serverret["body"] == "") OR (sizeof($xmlobj) == 0) OR !is_object($xmlobj)) {
 		// Workaround for bad configured servers (known nginx problem)
 		if (!in_array($serverret["debug"]["http_code"], array("403", "404"))) {
-			$last_failure = datetime_convert();
 			$failure = true;
 		}
 		$possible_failure = true;
-	} elseif ($network == NETWORK_DIASPORA)
-		$last_contact = datetime_convert();
+	}
 
 	// If the server has no possible failure we reset the cached data
 	if (!$possible_failure) {
@@ -1054,8 +1056,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 			$data = json_decode($serverret["body"]);
 			if (isset($data->totalResults)) {
 				$poco = $server_url."/poco";
-				$last_contact = datetime_convert();
-
 				$server = poco_detect_poco_data($data);
 				if ($server) {
 					$platform = $server['platform'];
@@ -1072,7 +1072,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 		$serverret = z_fetch_url($server_url);
 
 		if (!$serverret["success"] OR ($serverret["body"] == "")) {
-			$last_failure = datetime_convert();
 			$failure = true;
 		} else {
 			$server = poco_detect_server_type($serverret["body"]);
@@ -1081,7 +1080,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 				$network = $server['network'];
 				$version = $server['version'];
 				$site_name = $server['site_name'];
-				$last_contact = datetime_convert();
 			}
 
 			$lines = explode("\n",$serverret["header"]);
@@ -1095,15 +1093,11 @@ function poco_check_server($server_url, $network = "", $force = false) {
 						$network = NETWORK_DIASPORA;
 						$versionparts = explode("-", $version);
 						$version = $versionparts[0];
-						$last_contact = datetime_convert();
 					}
 
 					if(stristr($line,'Server: Mastodon')) {
 						$platform = "Mastodon";
 						$network = NETWORK_OSTATUS;
-						// Mastodon doesn't reveal version numbers
-						$version = "";
-						$last_contact = datetime_convert();
 					}
 				}
 			}
@@ -1122,7 +1116,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 			$version = str_replace(chr(239).chr(187).chr(191), "", $serverret["body"]);
 			$version = trim($version, '"');
 			$network = NETWORK_OSTATUS;
-			$last_contact = datetime_convert();
 		}
 
 		// Test for GNU Social
@@ -1134,7 +1127,19 @@ function poco_check_server($server_url, $network = "", $force = false) {
 			$version = str_replace(chr(239).chr(187).chr(191), "", $serverret["body"]);
 			$version = trim($version, '"');
 			$network = NETWORK_OSTATUS;
-			$last_contact = datetime_convert();
+		}
+
+		// Test for Mastodon
+		$serverret = z_fetch_url($server_url."/api/v1/instance");
+		if ($serverret["success"] AND ($serverret["body"] != '')) {
+			$data = json_decode($serverret["body"]);
+			if (isset($data->version)) {
+				$platform = "Mastodon";
+				$version = $data->version;
+				$site_name = $data->title;
+				$info = $data->description;
+				$network = NETWORK_OSTATUS;
+			}
 		}
 	}
 
@@ -1144,8 +1149,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 		if ($serverret["success"]) {
 			$data = json_decode($serverret["body"]);
 			if (isset($data->site->server)) {
-				$last_contact = datetime_convert();
-
 				if (isset($data->site->platform)) {
 					$platform = $data->site->platform->PLATFORM_NAME;
 					$version = $data->site->platform->STD_VERSION;
@@ -1192,7 +1195,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 		}
 	}
 
-
 	// Query statistics.json. Optional package for Diaspora, Friendica and Redmatrix
 	if (!$failure) {
 		$serverret = z_fetch_url($server_url."/statistics.json");
@@ -1220,9 +1222,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 			} else {
 				$register_policy = REGISTER_CLOSED;
 			}
-
-			if (isset($data->version))
-				$last_contact = datetime_convert();
 		}
 	}
 
@@ -1247,8 +1246,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 			if (isset($server['site_name'])) {
 				$site_name = $server['site_name'];
 			}
-
-			$last_contact = datetime_convert();
 		}
 	}
 
@@ -1264,7 +1261,6 @@ function poco_check_server($server_url, $network = "", $force = false) {
 			$data = json_decode($serverret["body"]);
 
 			if (isset($data->version)) {
-				$last_contact = datetime_convert();
 				$network = NETWORK_DFRN;
 
 				$noscrape = $data->no_scrape_url;
@@ -1290,13 +1286,14 @@ function poco_check_server($server_url, $network = "", $force = false) {
 	}
 
 	if ($possible_failure AND !$failure) {
-		$last_failure = datetime_convert();
 		$failure = true;
 	}
 
 	if ($failure) {
 		$last_contact = $orig_last_contact;
+		$last_failure = datetime_convert();
 	} else {
+		$last_contact = datetime_convert();
 		$last_failure = $orig_last_failure;
 	}
 
@@ -1430,7 +1427,7 @@ function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = fal
 	$r = q("SELECT `gcontact`.*
 		FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
 		where `glink`.`zcid` = %d
-		and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) 
+		and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 )
 		$sql_extra limit %d, %d",
 		intval($zcid),
 		intval($uid),
@@ -2345,4 +2342,3 @@ function poco_serverlist() {
 	}
 	return $r;
 }
-?>
diff --git a/include/spool_post.php b/include/spool_post.php
index f64b39e4b6..2b21e41965 100644
--- a/include/spool_post.php
+++ b/include/spool_post.php
@@ -4,7 +4,7 @@
  * @brief Posts items that wer spooled because they couldn't be posted.
  */
 
-use \Friendica\Core\Config;
+use Friendica\Core\Config;
 
 require_once("include/items.php");
 
@@ -55,4 +55,3 @@ function spool_post_run($argv, $argc) {
 		}
 	}
 }
-?>
diff --git a/include/tags.php b/include/tags.php
index 0a09438478..6067f3f4b9 100644
--- a/include/tags.php
+++ b/include/tags.php
@@ -1,4 +1,7 @@
 q("SELECT `oid`,`item`.`guid`, `item`.`created`, `item`.`received` FROM `term` INNER JOIN `item` ON `item`.`id`=`term`.`oid` WHERE `term`.`otype` = 1 AND `term`.`guid` = ''", true);
+	$messages = dba::p("SELECT `oid`,`item`.`guid`, `item`.`created`, `item`.`received` FROM `term` INNER JOIN `item` ON `item`.`id`=`term`.`oid` WHERE `term`.`otype` = 1 AND `term`.`guid` = ''");
 
-        logger("fetched messages: ".count($messages));
-        while ($message = $db->qfetch()) {
+	logger("fetched messages: ".dba::num_rows($messages));
+	while ($message = dba::fetch($messages)) {
 
 		if ($message["uid"] == 0) {
 			$global = true;
@@ -135,15 +137,14 @@ function update_items() {
 			intval($global), intval(TERM_OBJ_POST), intval($message["oid"]));
 	}
 
-        $db->qclose();
+	dba::close($messages);
 
-	$messages = $db->q("SELECT `guid` FROM `item` WHERE `uid` = 0", true);
+	$messages = dba::p("SELECT `guid` FROM `item` WHERE `uid` = 0");
 
-	logger("fetched messages: ".count($messages));
-	while ($message = $db->qfetch()) {
+	logger("fetched messages: ".dba::num_rows($messages));
+	while ($message = dba::fetch(messages)) {
 		q("UPDATE `item` SET `global` = 1 WHERE `guid` = '%s'", dbesc($message["guid"]));
 	}
 
-	$db->qclose();
+	dba::close($messages);
 }
-?>
diff --git a/include/text.php b/include/text.php
index 2919989331..c9babba940 100644
--- a/include/text.php
+++ b/include/text.php
@@ -1,12 +1,13 @@
 save_timestamp($stamp1, "file");
 }}
 
+/**
+ * @brief An alternative logger for development.
+ * Works largely as logger() but allows developers
+ * to isolate particular elements they are targetting
+ * personally without background noise
+ *
+ * log levels:
+ * LOGGER_NORMAL (default)
+ * LOGGER_TRACE
+ * LOGGER_DEBUG
+ * LOGGER_DATA
+ * LOGGER_ALL
+ *
+ * @global App $a
+ * @global dba $db
+ * @global array $LOGGER_LEVELS
+ * @param string $msg
+ * @param int $level
+ */
+
+function dlogger($msg, $level = 0) {
+	$a = get_app();
+	global $db;
+
+	// turn off logger in install mode
+	if (
+		$a->module == 'install'
+		|| ! ($db && $db->connected)
+	) {
+		return;
+	}
+
+	$logfile = get_config('system','dlogfile');
+
+	if (! $logfile) {
+		return;
+	}
+
+	if (count($LOGGER_LEVELS) == 0) {
+		foreach (get_defined_constants() as $k => $v) {
+			if (substr($k, 0, 7) == "LOGGER_") {
+				$LOGGER_LEVELS[$v] = substr($k, 7, 7);
+			}
+		}
+	}
+
+	$process_id = session_id();
+
+	if ($process_id == '') {
+		$process_id = get_app()->process_id;
+	}
+
+	$callers = debug_backtrace();
+	$logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
+			datetime_convert(),
+			$process_id,
+			basename($callers[0]['file']),
+			$callers[0]['line'],
+			$callers[1]['function'],
+			$msg
+		);
+
+	$stamp1 = microtime(true);
+	@file_put_contents($logfile, $logline, FILE_APPEND);
+	$a->save_timestamp($stamp1, "file");
+}
 
 if(! function_exists('activity_match')) {
 /**
diff --git a/include/threads.php b/include/threads.php
index c214cf2644..b0ba546840 100644
--- a/include/threads.php
+++ b/include/threads.php
@@ -1,4 +1,7 @@
  $itemuri, 'uid' => 0));
 			logger("delete_thread: Deleted shadow for item ".$itemuri." - ".print_r($result, true), LOGGER_DEBUG);
 		}
 	}
 }
 
 function update_threads() {
-	global $db;
-
 	logger("update_threads: start");
 
-	$messages = $db->q("SELECT `id` FROM `item` WHERE `id` = `parent`", true);
+	$messages = dba::p("SELECT `id` FROM `item` WHERE `id` = `parent`");
 
-	logger("update_threads: fetched messages: ".count($messages));
+	logger("update_threads: fetched messages: ".dba::num_rows($messages));
 
-	while ($message = $db->qfetch()) {
+	while ($message = dba::fetch($messages)) {
 		add_thread($message["id"]);
 		add_shadow_thread($message["id"]);
 	}
-	$db->qclose();
+	dba::close($messages);
 }
 
 function update_threads_mention() {
@@ -283,18 +282,15 @@ function update_threads_mention() {
 
 
 function update_shadow_copy() {
-	global $db;
-
 	logger("start");
 
-	$messages = $db->q(sprintf("SELECT `iid` FROM `thread` WHERE `uid` != 0 AND `network` IN ('', '%s', '%s', '%s')
-					AND `visible` AND NOT `deleted` AND NOT `moderated` AND NOT `private` ORDER BY `created`",
-				NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS), true);
+	$messages = dba::p("SELECT `iid` FROM `thread` WHERE `uid` != 0 AND `network` IN ('', ?, ?, ?)
+				AND `visible` AND NOT `deleted` AND NOT `moderated` AND NOT `private` ORDER BY `created`",
+				NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS);
 
-	logger("fetched messages: ".count($messages));
-	while ($message = $db->qfetch())
+	logger("fetched messages: ".dba::num_rows($messages));
+	while ($message = dba::fetch($messages))
 		add_shadow_thread($message["iid"]);
 
-	$db->qclose();
+	dba::close($messages);
 }
-?>
diff --git a/include/uimport.php b/include/uimport.php
index 4cc5b6c04b..b27f9dc126 100644
--- a/include/uimport.php
+++ b/include/uimport.php
@@ -1,291 +1,283 @@
-insert_id();
-}
-
-function last_error() {
-	global $db;
-	return $db->error;
-}
-
-/**
- * Remove columns from array $arr that aren't in table $table
- *
- * @param string $table Table name
- * @param array &$arr Column=>Value array from json (by ref)
- */
-function check_cols($table, &$arr) {
-	$query = sprintf("SHOW COLUMNS IN `%s`", dbesc($table));
-	logger("uimport: $query", LOGGER_DEBUG);
-	$r = q($query);
-	$tcols = array();
-	// get a plain array of column names
-	foreach ($r as $tcol) {
-		$tcols[] = $tcol['Field'];
-	}
-	// remove inexistent columns
-	foreach ($arr as $icol => $ival) {
-		if (!in_array($icol, $tcols)) {
-			unset($arr[$icol]);
-		}
-	}
-}
-
-/**
- * Import data into table $table
- *
- * @param string $table Table name
- * @param array $arr Column=>Value array from json
- */
-function db_import_assoc($table, $arr) {
-	if (isset($arr['id']))
-		unset($arr['id']);
-	check_cols($table, $arr);
-	$cols = implode("`,`", array_map('dbesc', array_keys($arr)));
-	$vals = implode("','", array_map('dbesc', array_values($arr)));
-	$query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')";
-	logger("uimport: $query", LOGGER_TRACE);
-	if (IMPORT_DEBUG)
-		return true;
-	return q($query);
-}
-
-function import_cleanup($newuid) {
-	q("DELETE FROM `user` WHERE uid = %d", $newuid);
-	q("DELETE FROM `contact` WHERE uid = %d", $newuid);
-	q("DELETE FROM `profile` WHERE uid = %d", $newuid);
-	q("DELETE FROM `photo` WHERE uid = %d", $newuid);
-	q("DELETE FROM `group` WHERE uid = %d", $newuid);
-	q("DELETE FROM `group_member` WHERE uid = %d", $newuid);
-	q("DELETE FROM `pconfig` WHERE uid = %d", $newuid);
-}
-
-function import_account(App $a, $file) {
-	logger("Start user import from " . $file['tmp_name']);
-	/*
-	  STEPS
-	  1. checks
-	  2. replace old baseurl with new baseurl
-	  3. import data (look at user id and contacts id)
-	  4. archive non-dfrn contacts
-	  5. send message to dfrn contacts
-	 */
-
-	$account = json_decode(file_get_contents($file['tmp_name']), true);
-	if ($account === null) {
-		notice(t("Error decoding account file"));
-		return;
-	}
-
-
-	if (!x($account, 'version')) {
-		notice(t("Error! No version data in file! This is not a Friendica account file?"));
-		return;
-	}
-
-	/*
-	// this is not required as we remove columns in json not in current db schema
-	if ($account['schema'] != DB_UPDATE_VERSION) {
-		notice(t("Error! I can't import this file: DB schema version is not compatible."));
-		return;
-	}
-	*/
-
-	// check for username
-	$r = q("SELECT uid FROM user WHERE nickname='%s'", $account['user']['nickname']);
-	if ($r === false) {
-		logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
-		notice(t('Error! Cannot check nickname'));
-		return;
-	}
-	if (dbm::is_result($r) > 0) {
-		notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
-		return;
-	}
-	// check if username matches deleted account
-	$r = q("SELECT id FROM userd WHERE username='%s'", $account['user']['nickname']);
-	if ($r === false) {
-		logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
-		notice(t('Error! Cannot check nickname'));
-		return;
-	}
-	if (dbm::is_result($r) > 0) {
-		notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
-		return;
-	}
-
-	$oldbaseurl = $account['baseurl'];
-	$newbaseurl = App::get_baseurl();
-	$olduid = $account['user']['uid'];
-
-        unset($account['user']['uid']);
-        unset($account['user']['account_expired']);
-        unset($account['user']['account_expires_on']);
-        unset($account['user']['expire_notification_sent']);
-	foreach ($account['user'] as $k => &$v) {
-		$v = str_replace($oldbaseurl, $newbaseurl, $v);
-	}
-
-
-	// import user
-	$r = db_import_assoc('user', $account['user']);
-	if ($r === false) {
-		//echo "
"; var_dump($r, $query, mysql_error()); killme();
-		logger("uimport:insert user : ERROR : " . last_error(), LOGGER_NORMAL);
-		notice(t("User creation error"));
-		return;
-	}
-	$newuid = last_insert_id();
-	//~ $newuid = 1;
-
-	// Generate a new guid for the account. Otherwise there will be problems with diaspora
-	q("UPDATE `user` SET `guid` = '%s' WHERE `uid` = %d",
-		dbesc(generate_user_guid()), intval($newuid));
-
-	foreach ($account['profile'] as &$profile) {
-		foreach ($profile as $k => &$v) {
-			$v = str_replace($oldbaseurl, $newbaseurl, $v);
-			foreach (array("profile", "avatar") as $k)
-				$v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
-		}
-		$profile['uid'] = $newuid;
-		$r = db_import_assoc('profile', $profile);
-		if ($r === false) {
-			logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
-			info(t("User profile creation error"));
-			import_cleanup($newuid);
-			return;
-		}
-	}
-
-	$errorcount = 0;
-	foreach ($account['contact'] as &$contact) {
-		if ($contact['uid'] == $olduid && $contact['self'] == '1') {
-			foreach ($contact as $k => &$v) {
-				$v = str_replace($oldbaseurl, $newbaseurl, $v);
-				foreach (array("profile", "avatar", "micro") as $k)
-					$v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
-			}
-		}
-		if ($contact['uid'] == $olduid && $contact['self'] == '0') {
-			// set contacts 'avatar-date' to NULL_DATE to let poller to update urls
-			$contact["avatar-date"] = NULL_DATE;
-
-
-			switch ($contact['network']) {
-				case NETWORK_DFRN:
-					//  send relocate message (below)
-					break;
-				case NETWORK_ZOT:
-					/// @TODO handle zot network
-					break;
-				case NETWORK_MAIL2:
-					/// @TODO ?
-					break;
-				case NETWORK_FEED:
-				case NETWORK_MAIL:
-					// Nothing to do
-					break;
-				default:
-					// archive other contacts
-					$contact['archive'] = "1";
-			}
-		}
-		$contact['uid'] = $newuid;
-		$r = db_import_assoc('contact', $contact);
-		if ($r === false) {
-			logger("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
-			$errorcount++;
-		} else {
-			$contact['newid'] = last_insert_id();
-		}
-	}
-	if ($errorcount > 0) {
-		notice(sprintf(tt("%d contact not imported", "%d contacts not imported", $errorcount), $errorcount));
-	}
-
-	foreach ($account['group'] as &$group) {
-		$group['uid'] = $newuid;
-		$r = db_import_assoc('group', $group);
-		if ($r === false) {
-			logger("uimport:insert group " . $group['name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
-		} else {
-			$group['newid'] = last_insert_id();
-		}
-	}
-
-	foreach ($account['group_member'] as &$group_member) {
-		$group_member['uid'] = $newuid;
-
-		$import = 0;
-		foreach ($account['group'] as $group) {
-			if ($group['id'] == $group_member['gid'] && isset($group['newid'])) {
-				$group_member['gid'] = $group['newid'];
-				$import++;
-				break;
-			}
-		}
-		foreach ($account['contact'] as $contact) {
-			if ($contact['id'] == $group_member['contact-id'] && isset($contact['newid'])) {
-				$group_member['contact-id'] = $contact['newid'];
-				$import++;
-				break;
-			}
-		}
-		if ($import == 2) {
-			$r = db_import_assoc('group_member', $group_member);
-			if ($r === false) {
-				logger("uimport:insert group member " . $group_member['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
-			}
-		}
-	}
-
-
-
-
-
-	foreach ($account['photo'] as &$photo) {
-		$photo['uid'] = $newuid;
-		$photo['data'] = hex2bin($photo['data']);
-
-		$p = new Photo($photo['data'], $photo['type']);
-		$r = $p->store(
-				$photo['uid'], $photo['contact-id'], //0
-				$photo['resource-id'], $photo['filename'], $photo['album'], $photo['scale'], $photo['profile'], //1
-				$photo['allow_cid'], $photo['allow_gid'], $photo['deny_cid'], $photo['deny_gid']
-		);
-
-		if ($r === false) {
-			logger("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
-		}
-	}
-
-	foreach ($account['pconfig'] as &$pconfig) {
-		$pconfig['uid'] = $newuid;
-		$r = db_import_assoc('pconfig', $pconfig);
-		if ($r === false) {
-			logger("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
-		}
-	}
-
-	// send relocate messages
-	proc_run(PRIORITY_HIGH, 'include/notifier.php', 'relocate', $newuid);
-
-	info(t("Done. You can now login with your username and password"));
-	goaway(App::get_baseurl() . "/login");
-}
+insert_id();
+}
+
+function last_error() {
+	global $db;
+	return $db->error;
+}
+
+/**
+ * Remove columns from array $arr that aren't in table $table
+ *
+ * @param string $table Table name
+ * @param array &$arr Column=>Value array from json (by ref)
+ */
+function check_cols($table, &$arr) {
+	$query = sprintf("SHOW COLUMNS IN `%s`", dbesc($table));
+	logger("uimport: $query", LOGGER_DEBUG);
+	$r = q($query);
+	$tcols = array();
+	// get a plain array of column names
+	foreach ($r as $tcol) {
+		$tcols[] = $tcol['Field'];
+	}
+	// remove inexistent columns
+	foreach ($arr as $icol => $ival) {
+		if (!in_array($icol, $tcols)) {
+			unset($arr[$icol]);
+		}
+	}
+}
+
+/**
+ * Import data into table $table
+ *
+ * @param string $table Table name
+ * @param array $arr Column=>Value array from json
+ */
+function db_import_assoc($table, $arr) {
+	if (isset($arr['id']))
+		unset($arr['id']);
+	check_cols($table, $arr);
+	$cols = implode("`,`", array_map('dbesc', array_keys($arr)));
+	$vals = implode("','", array_map('dbesc', array_values($arr)));
+	$query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')";
+	logger("uimport: $query", LOGGER_TRACE);
+	if (IMPORT_DEBUG) {
+		return true;
+	}
+	return q($query);
+}
+
+/**
+ * @brief Import account file exported from mod/uexport
+ *
+ * @param App $a Friendica App Class
+ * @param array $file array from $_FILES
+ */
+function import_account(App $a, $file) {
+	logger("Start user import from " . $file['tmp_name']);
+	/*
+	  STEPS
+	  1. checks
+	  2. replace old baseurl with new baseurl
+	  3. import data (look at user id and contacts id)
+	  4. archive non-dfrn contacts
+	  5. send message to dfrn contacts
+	 */
+
+	$account = json_decode(file_get_contents($file['tmp_name']), true);
+	if ($account === null) {
+		notice(t("Error decoding account file"));
+		return;
+	}
+
+
+	if (!x($account, 'version')) {
+		notice(t("Error! No version data in file! This is not a Friendica account file?"));
+		return;
+	}
+
+	/*
+	 * @TODO Old-lost code?
+	// this is not required as we remove columns in json not in current db schema
+	if ($account['schema'] != DB_UPDATE_VERSION) {
+		notice(t("Error! I can't import this file: DB schema version is not compatible."));
+		return;
+	}
+	*/
+
+	// check for username
+	$r = q("SELECT uid FROM user WHERE nickname='%s'", $account['user']['nickname']);
+	if ($r === false) {
+		logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
+		notice(t('Error! Cannot check nickname'));
+		return;
+	}
+	if (dbm::is_result($r) > 0) {
+		notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
+		return;
+	}
+	// check if username matches deleted account
+	$r = q("SELECT id FROM userd WHERE username='%s'", $account['user']['nickname']);
+	if ($r === false) {
+		logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
+		notice(t('Error! Cannot check nickname'));
+		return;
+	}
+	if (dbm::is_result($r) > 0) {
+		notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
+		return;
+	}
+
+	$oldbaseurl = $account['baseurl'];
+	$newbaseurl = App::get_baseurl();
+	$olduid = $account['user']['uid'];
+
+	unset($account['user']['uid']);
+	unset($account['user']['account_expired']);
+	unset($account['user']['account_expires_on']);
+	unset($account['user']['expire_notification_sent']);
+
+	foreach ($account['user'] as $k => &$v) {
+		$v = str_replace($oldbaseurl, $newbaseurl, $v);
+	}
+
+	// import user
+	$r = db_import_assoc('user', $account['user']);
+	if ($r === false) {
+		//echo "
"; var_dump($r, $query, mysql_error()); killme();
+		logger("uimport:insert user : ERROR : " . last_error(), LOGGER_NORMAL);
+		notice(t("User creation error"));
+		return;
+	}
+	$newuid = last_insert_id();
+	//~ $newuid = 1;
+
+	// Generate a new guid for the account. Otherwise there will be problems with diaspora
+	q("UPDATE `user` SET `guid` = '%s' WHERE `uid` = %d",
+		dbesc(generate_user_guid()), intval($newuid));
+
+	foreach ($account['profile'] as &$profile) {
+		foreach ($profile as $k => &$v) {
+			$v = str_replace($oldbaseurl, $newbaseurl, $v);
+			foreach (array("profile", "avatar") as $k) {
+				$v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
+			}
+		}
+		$profile['uid'] = $newuid;
+		$r = db_import_assoc('profile', $profile);
+		if ($r === false) {
+			logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+			info(t("User profile creation error"));
+			dba::delete('user', array('uid' => $newuid));
+			return;
+		}
+	}
+
+	$errorcount = 0;
+	foreach ($account['contact'] as &$contact) {
+		if ($contact['uid'] == $olduid && $contact['self'] == '1') {
+			foreach ($contact as $k => &$v) {
+				$v = str_replace($oldbaseurl, $newbaseurl, $v);
+				foreach (array("profile", "avatar", "micro") as $k) {
+					$v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
+				}
+			}
+		}
+		if ($contact['uid'] == $olduid && $contact['self'] == '0') {
+			// set contacts 'avatar-date' to NULL_DATE to let poller to update urls
+			$contact["avatar-date"] = NULL_DATE;
+
+			switch ($contact['network']) {
+				case NETWORK_DFRN:
+					//  send relocate message (below)
+					break;
+				case NETWORK_ZOT:
+					/// @TODO handle zot network
+					break;
+				case NETWORK_MAIL2:
+					/// @TODO ?
+					break;
+				case NETWORK_FEED:
+				case NETWORK_MAIL:
+					// Nothing to do
+					break;
+				default:
+					// archive other contacts
+					$contact['archive'] = "1";
+			}
+		}
+		$contact['uid'] = $newuid;
+		$r = db_import_assoc('contact', $contact);
+		if ($r === false) {
+			logger("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+			$errorcount++;
+		} else {
+			$contact['newid'] = last_insert_id();
+		}
+	}
+	if ($errorcount > 0) {
+		notice(sprintf(tt("%d contact not imported", "%d contacts not imported", $errorcount), $errorcount));
+	}
+
+	foreach ($account['group'] as &$group) {
+		$group['uid'] = $newuid;
+		$r = db_import_assoc('group', $group);
+		if ($r === false) {
+			logger("uimport:insert group " . $group['name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+		} else {
+			$group['newid'] = last_insert_id();
+		}
+	}
+
+	foreach ($account['group_member'] as &$group_member) {
+		$group_member['uid'] = $newuid;
+
+		$import = 0;
+		foreach ($account['group'] as $group) {
+			if ($group['id'] == $group_member['gid'] && isset($group['newid'])) {
+				$group_member['gid'] = $group['newid'];
+				$import++;
+				break;
+			}
+		}
+		foreach ($account['contact'] as $contact) {
+			if ($contact['id'] == $group_member['contact-id'] && isset($contact['newid'])) {
+				$group_member['contact-id'] = $contact['newid'];
+				$import++;
+				break;
+			}
+		}
+		if ($import == 2) {
+			$r = db_import_assoc('group_member', $group_member);
+			if ($r === false) {
+				logger("uimport:insert group member " . $group_member['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+			}
+		}
+	}
+
+	foreach ($account['photo'] as &$photo) {
+		$photo['uid'] = $newuid;
+		$photo['data'] = hex2bin($photo['data']);
+
+		$p = new Photo($photo['data'], $photo['type']);
+		$r = $p->store(
+				$photo['uid'], $photo['contact-id'], //0
+				$photo['resource-id'], $photo['filename'], $photo['album'], $photo['scale'], $photo['profile'], //1
+				$photo['allow_cid'], $photo['allow_gid'], $photo['deny_cid'], $photo['deny_gid']
+		);
+
+		if ($r === false) {
+			logger("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+		}
+	}
+
+	foreach ($account['pconfig'] as &$pconfig) {
+		$pconfig['uid'] = $newuid;
+		$r = db_import_assoc('pconfig', $pconfig);
+		if ($r === false) {
+			logger("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
+		}
+	}
+
+	// send relocate messages
+	proc_run(PRIORITY_HIGH, 'include/notifier.php', 'relocate', $newuid);
+
+	info(t("Done. You can now login with your username and password"));
+	goaway(App::get_baseurl() . "/login");
+}
diff --git a/include/update_gcontact.php b/include/update_gcontact.php
index 883a229895..d283bd2689 100644
--- a/include/update_gcontact.php
+++ b/include/update_gcontact.php
@@ -1,11 +1,11 @@
  1) && $newuid) {
 		$result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
-		q("DELETE FROM `user` WHERE `uid` = %d",
-			intval($newuid)
-		);
+		dba::delete('user', array('uid' => $newuid));
 		return $result;
 	}
 
@@ -248,8 +246,7 @@ function create_user($arr) {
 		if ($r === false) {
 			$result['message'] .=  t('An error occurred creating your default profile. Please try again.') . EOL;
 			// Start fresh next time.
-			$r = q("DELETE FROM `user` WHERE `uid` = %d",
-				intval($newuid));
+			dba::delete('user', array('uid' => $newuid));
 			return $result;
 		}
 
diff --git a/index.php b/index.php
index ebc65cdb01..2b26eb90f0 100644
--- a/index.php
+++ b/index.php
@@ -13,12 +13,13 @@
  *
  */
 
-use \Friendica\Core\Config;
+use Friendica\App;
+use Friendica\Core\Config;
 
-require_once('boot.php');
-require_once('object/BaseObject.php');
+require_once 'boot.php';
+require_once 'object/BaseObject.php';
 
-$a = new App;
+$a = new App(__DIR__);
 BaseObject::set_app($a);
 
 // We assume that the index.php is called by a frontend process
@@ -73,7 +74,7 @@ if (!$install) {
 		exit();
 	}
 
-	require_once("include/session.php");
+	require_once 'include/session.php';
 	load_hooks();
 	call_hooks('init_1');
 
@@ -112,9 +113,11 @@ if (!$a->is_backend()) {
  */
 if (x($_SESSION,'authenticated') && !x($_SESSION,'language')) {
 	// we didn't loaded user data yet, but we need user language
-	$r = q("SELECT language FROM user WHERE uid=%d", intval($_SESSION['uid']));
+	$r = dba::select('user', array('language'), array('uid' => $_SESSION['uid']), array('limit' => 1));
 	$_SESSION['language'] = $lang;
-	if (dbm::is_result($r)) $_SESSION['language'] = $r[0]['language'];
+	if (dbm::is_result($r)) {
+		$_SESSION['language'] = $r['language'];
+	}
 }
 
 if ((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) {
@@ -174,6 +177,10 @@ if (! x($_SESSION,'sysmsg_info')) {
 	$_SESSION['sysmsg_info'] = array();
 }
 
+// Array for informations about last received items
+if (! x($_SESSION,'last_updated')) {
+	$_SESSION['last_updated'] = array();
+}
 /*
  * check_config() is responsible for running update scripts. These automatically
  * update the DB schema whenever we push a new one out. It also checks to see if
@@ -482,7 +489,7 @@ header("X-Friendica-Version: " . FRIENDICA_VERSION);
 header("Content-type: text/html; charset=utf-8");
 
 /*
- * We use $_GET["mode"] for special page templates. So we will check if we have 
+ * We use $_GET["mode"] for special page templates. So we will check if we have
  * to load another page template than the default one.
  * The page templates are located in /view/php/ or in the theme directory.
  */
diff --git a/js/autocomplete.js b/js/autocomplete.js
index 3ed9fa30f9..58dde55a6d 100644
--- a/js/autocomplete.js
+++ b/js/autocomplete.js
@@ -78,22 +78,26 @@ function contact_format(item) {
 }
 
 function editor_replace(item) {
-	if(typeof item.replace !== 'undefined') {
+	if (typeof item.replace !== 'undefined') {
 		return '$1$2' + item.replace;
 	}
 
+	if (typeof item.addr !== 'undefined') {
+		return '$1$2' + item.addr + ' ';
+	}
+
 	// $2 ensures that prefix (@,@!) is preserved
 	var id = item.id;
 
 	// don't add the id if it is empty (the id empty eg. if there are unknow contacts in thread)
-	if(id.length < 1)
+	if (id.length < 1) {
 		return '$1$2' + item.nick.replace(' ', '') + ' ';
-
+	}
 	// 16 chars of hash should be enough. Full hash could be used if it can be done in a visually appealing way.
 	// 16 chars is also the minimum length in the backend (otherwise it's interpreted as a local id).
-	if(id.length > 16)
+	if (id.length > 16) {
 		id = item.id.substring(0,16);
-
+	}
 	return '$1$2' + item.nick.replace(' ', '') + '+' + id + ' ';
 }
 
diff --git a/mod/_well_known.php b/mod/_well_known.php
index 622d7fd93f..45c1da494c 100644
--- a/mod/_well_known.php
+++ b/mod/_well_known.php
@@ -1,6 +1,7 @@
 	array("admin/features/", t("Additional features") , "features"),
 		'dbsync' => 	array("admin/dbsync/", t('DB updates'), "dbsync"),
 		'queue'	 =>	array("admin/queue/", t('Inspect Queue'), "queue"),
+		'blocklist' => array("admin/blocklist/", t('Server Blocklist'), "blocklist"),
 		'federation' => array("admin/federation/", t('Federation Statistics'), "federation"),
 	);
 
@@ -236,6 +241,9 @@ function admin_content(App $a) {
 			case 'federation':
 				$o = admin_page_federation($a);
 				break;
+			case 'blocklist':
+				$o = admin_page_blocklist($a);
+				break;
 			default:
 				notice(t("Item not found."));
 		}
@@ -252,6 +260,94 @@ function admin_content(App $a) {
 	}
 }
 
+/**
+ * @brief Subpage to modify the server wide block list via the admin panel.
+ *
+ * This function generates the subpage of the admin panel to allow the
+ * modification of the node wide block/black list to block entire
+ * remote servers from communication with this node. The page allows
+ * adding, removing and editing of entries from the blocklist.
+ *
+ * @param App $a
+ * @return string
+ */
+function admin_page_blocklist(App $a) {
+	$blocklist = Config::get('system', 'blocklist');
+	$blocklistform = array();
+	if (is_array($blocklist)) {
+		foreach($blocklist as $id => $b) {
+			$blocklistform[] = array(
+				'domain' => array("domain[$id]", t('Blocked domain'), $b['domain'], '', t('The blocked domain'), 'required', '', ''),
+				'reason' => array("reason[$id]", t("Reason for the block"), $b['reason'], t('The reason why you blocked this domain.').'('.$b['domain'].')', 'required', '', ''),
+				'delete' => array("delete[$id]", t("Delete domain").' ('.$b['domain'].')', False , t("Check to delete this entry from the blocklist"))
+			);
+		}
+	}
+	$t = get_markup_template("admin_blocklist.tpl");
+	return replace_macros($t, array(
+		'$title' => t('Administration'),
+		'$page' => t('Server Blocklist'),
+		'$intro' => t('This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server.'),
+		'$public' => t('The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily.'),
+		'$addtitle' => t('Add new entry to block list'),
+		'$newdomain' => array('newentry_domain', t('Server Domain'), '', t('The domain of the new server to add to the block list. Do not include the protocol.'), 'required', '', ''),
+		'$newreason' => array('newentry_reason', t('Block reason'), '', t('The reason why you blocked this domain.'), 'required', '', ''),
+		'$submit' => t('Add Entry'),
+		'$savechanges' => t('Save changes to the blocklist'),
+		'$currenttitle' => t('Current Entries in the Blocklist'),
+		'$thurl' => t('Blocked domain'),
+		'$threason' => t('Reason for the block'),
+		'$delentry' => t('Delete entry from blocklist'),
+		'$entries' => $blocklistform,
+		'$baseurl' => App::get_baseurl(true),
+		'$confirm_delete' => t('Delete entry from blocklist?'),
+		'$form_security_token'	=> get_form_security_token("admin_blocklist")
+	));
+}
+
+/**
+ * @brief Process send data from Admin Blocklist Page
+ *
+ * @param App $a
+ */
+function admin_page_blocklist_post(App $a) {
+	if (!x($_POST,"page_blocklist_save") && (!x($_POST['page_blocklist_edit']))) {
+		return;
+	}
+
+	check_form_security_token_redirectOnErr('/admin/blocklist', 'admin_blocklist');
+
+	if (x($_POST['page_blocklist_save'])) {
+		//  Add new item to blocklist
+		$blocklist = get_config('system', 'blocklist');
+		$blocklist[] = array(
+			'domain' => notags(trim($_POST['newentry_domain'])),
+			'reason' => notags(trim($_POST['newentry_reason']))
+		);
+		Config::set('system', 'blocklist', $blocklist);
+		info(t('Server added to blocklist.').EOL);
+	} else {
+		// Edit the entries from blocklist
+		$blocklist = array();
+		foreach ($_POST['domain'] as $id => $domain) {
+			// Trimming whitespaces as well as any lingering slashes
+			$domain = notags(trim($domain, "\x00..\x1F/"));
+			$reason = notags(trim($_POST['reason'][$id]));
+			if (!x($_POST['delete'][$id])) {
+				$blocklist[] = array(
+					'domain' => $domain,
+					'reason' => $reason
+				);
+			}
+		}
+		Config::set('system', 'blocklist', $blocklist);
+		info(t('Site blocklist updated.').EOL);
+	}
+	goaway('admin/blocklist');
+
+	return; // NOTREACHED
+}
+
 /**
  * @brief Subpage with some stats about "the federation" network
  *
@@ -447,7 +543,7 @@ function admin_page_summary(App $a) {
 	$warningtext = array();
 	if (dbm::is_result($r)) {
 		$showwarning = true;
-		$warningtext[] = sprintf(t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the convert_innodb.sql in the /util directory of your Friendica installation.
'), 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html'); + $warningtext[] = sprintf(t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the command php include/dbstructure.php toinnodb of your Friendica installation for an automatic conversion.
'), 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html'); } // MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements if ((version_compare($db->server_info(), '5.7.4') >= 0) AND @@ -636,6 +732,7 @@ function admin_page_site_post(App $a) { $timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60); $maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50); $maxloadavg_frontend = ((x($_POST,'maxloadavg_frontend')) ? intval(trim($_POST['maxloadavg_frontend'])) : 50); + $min_memory = ((x($_POST,'min_memory')) ? intval(trim($_POST['min_memory'])) : 0); $optimize_max_tablesize = ((x($_POST,'optimize_max_tablesize')) ? intval(trim($_POST['optimize_max_tablesize'])): 100); $optimize_fragmentation = ((x($_POST,'optimize_fragmentation')) ? intval(trim($_POST['optimize_fragmentation'])): 30); $poco_completion = ((x($_POST,'poco_completion')) ? intval(trim($_POST['poco_completion'])) : false); @@ -721,6 +818,7 @@ function admin_page_site_post(App $a) { set_config('system','ssl_policy',$ssl_policy); set_config('system','maxloadavg',$maxloadavg); set_config('system','maxloadavg_frontend',$maxloadavg_frontend); + set_config('system','min_memory',$min_memory); set_config('system','optimize_max_tablesize',$optimize_max_tablesize); set_config('system','optimize_fragmentation',$optimize_fragmentation); set_config('system','poco_completion',$poco_completion); @@ -1018,6 +1116,7 @@ function admin_page_site(App $a) { '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")), '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), '$maxloadavg_frontend' => array('maxloadavg_frontend', t("Maximum Load Average (Frontend)"), ((intval(get_config('system','maxloadavg_frontend')) > 0)?get_config('system','maxloadavg_frontend'):50), t("Maximum system load before the frontend quits service - default 50.")), + '$min_memory' => array('min_memory', t("Minimal Memory"), ((intval(get_config('system','min_memory')) > 0)?get_config('system','min_memory'):0), t("Minimal free memory in MB for the poller. Needs access to /proc/meminfo - default 0 (deactivated).")), '$optimize_max_tablesize'=> array('optimize_max_tablesize', t("Maximum table size for optimization"), $optimize_max_tablesize, t("Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it.")), '$optimize_fragmentation'=> array('optimize_fragmentation', t("Minimum level of fragmentation"), ((intval(get_config('system','optimize_fragmentation')) > 0)?get_config('system','optimize_fragmentation'):30), t("Minimum fragmenation level to start the automatic optimization - default value is 30%.")), diff --git a/mod/allfriends.php b/mod/allfriends.php index f51070bbe8..fe3013a7c4 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -1,5 +1,7 @@ t('No'), )); - //echo "
"; var_dump($app); killme();
-
 		return $o;
 	}
 
diff --git a/mod/apps.php b/mod/apps.php
index 199ce0f918..0c0df76544 100644
--- a/mod/apps.php
+++ b/mod/apps.php
@@ -1,25 +1,25 @@
 apps)==0)
-		notice( t('No installed applications.') . EOL);
+	$title = t('Applications');
 
+	if (count($a->apps) == 0) {
+		notice(t('No installed applications.') . EOL);
+	}
 
-	$tpl = get_markup_template("apps.tpl");
+	$tpl = get_markup_template('apps.tpl');
 	return replace_macros($tpl, array(
 		'$title' => $title,
 		'$apps' => $a->apps,
 	));
-
-
-
 }
diff --git a/mod/attach.php b/mod/attach.php
index dd7154dfe1..6155a3f99e 100644
--- a/mod/attach.php
+++ b/mod/attach.php
@@ -1,5 +1,7 @@
  App::get_baseurl(true),
 		));
 
-		require_once('include/contact_selectors.php');
+		require_once 'include/contact_selectors.php';
 
 		$tpl = get_markup_template("contact_edit.tpl");
 
@@ -828,7 +831,7 @@ function contacts_content(App $a) {
  *
  * Available Pages are 'Status', 'Profile', 'Contacts' and 'Common Friends'
  *
- * @param app $a
+ * @param App $a
  * @param int $contact_id The ID of the contact
  * @param int $active_tab 1 if tab should be marked as active
  *
diff --git a/mod/content.php b/mod/content.php
index 43f3fc2ba6..a8c3130333 100644
--- a/mod/content.php
+++ b/mod/content.php
@@ -15,6 +15,7 @@
 // fast - e.g. one or two milliseconds to fetch parent items for the current content,
 // and 10-20 milliseconds to fetch all the child items.
 
+use Friendica\App;
 
 function content_content(App $a, $update = 0) {
 
diff --git a/mod/credits.php b/mod/credits.php
index f5c34b6105..e0e834388f 100644
--- a/mod/credits.php
+++ b/mod/credits.php
@@ -1,20 +1,23 @@
  t('Credits'),
-       '$thanks'		=> t('Friendica is a community project, that would not be possible without the help of many people. Here is a list of those who have contributed to the code or the translation of Friendica. Thank you all!'),
-       '$names'         => $arr,
-    ));
+use Friendica\App;
+
+function credits_content(App $a) {
+	/* fill the page with credits */
+	$f = fopen('util/credits.txt', 'r');
+	$names = fread($f, filesize('util/credits.txt'));
+	$arr = explode("\n", htmlspecialchars($names));
+	fclose($f);
+	$tpl = get_markup_template('credits.tpl');
+	return replace_macros($tpl, array(
+		'$title'  => t('Credits'),
+		'$thanks' => t('Friendica is a community project, that would not be possible without the help of many people. Here is a list of those who have contributed to the code or the translation of Friendica. Thank you all!'),
+		'$names'  => $arr,
+	));
 }
diff --git a/mod/crepair.php b/mod/crepair.php
index 902a129303..59ac620a37 100644
--- a/mod/crepair.php
+++ b/mod/crepair.php
@@ -1,4 +1,7 @@
 cmd);
+					return; // NOTREACHED
+				}
 
 				$parms = Probe::profile(($hcard) ? $hcard : $url);
 
@@ -530,7 +535,7 @@ function dfrn_request_post(App $a) {
 					if (! x($parms,'photo')) {
 						notice( t('Warning: profile location has no profile photo.') . EOL );
 					}
-					$invalid = Probe::valid_dfrn($parms);
+					$invalid = Probe::validDfrn($parms);
 					if ($invalid) {
 						notice( sprintf( tt("%d required parameter was not found at the given location",
 											"%d required parameters were not found at the given location",
@@ -760,7 +765,7 @@ function dfrn_request_content(App $a) {
 				}
 
 				if($auto_confirm) {
-					require_once('mod/dfrn_confirm.php');
+					require_once 'mod/dfrn_confirm.php';
 					$handsfree = array(
 						'uid'      => $r[0]['uid'],
 						'node'     => $r[0]['nickname'],
diff --git a/mod/directory.php b/mod/directory.php
index ba48bb3926..cb0b1f4cd1 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -1,5 +1,7 @@
 set_pager_itemspage(60);
 
@@ -9,24 +11,18 @@ function directory_init(App $a) {
 		$a->page['aside'] .= findpeople_widget();
 
 		$a->page['aside'] .= follow_widget();
-
 	}
 	else {
 		unset($_SESSION['theme']);
 		unset($_SESSION['mobile-theme']);
 	}
-
-
 }
 
-
 function directory_post(App $a) {
 	if(x($_POST,'search'))
 		$a->data['search'] = $_POST['search'];
 }
 
-
-
 function directory_content(App $a) {
 	global $db;
 
diff --git a/mod/dirfind.php b/mod/dirfind.php
index c5844d13df..a64a804ba8 100644
--- a/mod/dirfind.php
+++ b/mod/dirfind.php
@@ -1,9 +1,13 @@
 page['aside'] .= follow_widget();
 }
 
-
-
 function dirfind_content(App $a, $prefix = "") {
 
 	$community = false;
diff --git a/mod/display.php b/mod/display.php
index 1f1fd11204..ca6809eba1 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -1,5 +1,7 @@
 
  */
 
+use Friendica\App;
+
 require_once('include/Photo.php');
 
 /**
diff --git a/mod/fetch.php b/mod/fetch.php
index b87fc0e8e0..0afd7af107 100644
--- a/mod/fetch.php
+++ b/mod/fetch.php
@@ -2,6 +2,9 @@
 /*
 This file is part of the Diaspora protocol. It is used for fetching single public posts.
 */
+
+use Friendica\App;
+
 require_once("include/crypto.php");
 require_once("include/diaspora.php");
 require_once("include/xml.php");
diff --git a/mod/filer.php b/mod/filer.php
index 47c4aa5e4c..6259879de2 100644
--- a/mod/filer.php
+++ b/mod/filer.php
@@ -1,10 +1,11 @@
 argv[1]=="json"){
+	if ($a->argv[1] == "json"){
 		$register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
 
 		$sql_extra = '';
-		if(x($a->config,'admin_nickname')) {
-			$sql_extra = sprintf(" AND nickname = '%s' ",dbesc($a->config['admin_nickname']));
+		if (x($a->config,'admin_nickname')) {
+			$sql_extra = sprintf(" AND `nickname` = '%s' ", dbesc($a->config['admin_nickname']));
 		}
-		if (isset($a->config['admin_email']) && $a->config['admin_email']!=''){
-	                $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email']));
+		if (isset($a->config['admin_email']) && $a->config['admin_email']!='') {
+			$adminlist = explode(",", str_replace(" ", "", $a->config['admin_email']));
 
-			//$r = q("SELECT username, nickname FROM user WHERE email='%s' $sql_extra", dbesc($a->config['admin_email']));
-			$r = q("SELECT username, nickname FROM user WHERE email='%s' $sql_extra", dbesc($adminlist[0]));
+			$r = q("SELECT `username`, `nickname` FROM `user` WHERE `email` = '%s' $sql_extra", dbesc($adminlist[0]));
 			$admin = array(
 				'name' => $r[0]['username'],
-				'profile'=> App::get_baseurl().'/profile/'.$r[0]['nickname'],
+				'profile'=> App::get_baseurl() . '/profile/' . $r[0]['nickname'],
 			);
 		} else {
 			$admin = false;
 		}
 
 		$visible_plugins = array();
-		if(is_array($a->plugins) && count($a->plugins)) {
-			$r = q("select * from addon where hidden = 0");
-			if (dbm::is_result($r))
-				foreach($r as $rr)
+		if (is_array($a->plugins) && count($a->plugins)) {
+			$r = q("SELECT * FROM `addon` WHERE `hidden` = 0");
+			if (dbm::is_result($r)) {
+				foreach($r as $rr) {
 					$visible_plugins[] = $rr['name'];
+				}
+			}
 		}
 
 		Config::load('feature_lock');
 		$locked_features = array();
-		if(is_array($a->config['feature_lock']) && count($a->config['feature_lock'])) {
-			foreach($a->config['feature_lock'] as $k => $v) {
-				if($k === 'config_loaded')
+		if (is_array($a->config['feature_lock']) && count($a->config['feature_lock'])) {
+			foreach ($a->config['feature_lock'] as $k => $v) {
+				if ($k === 'config_loaded') {
 					continue;
+				}
+
 				$locked_features[$k] = intval($v);
 			}
 		}
 
 		$data = Array(
-			'version' => FRIENDICA_VERSION,
-			'url' => z_root(),
-			'plugins' => $visible_plugins,
+			'version'         => FRIENDICA_VERSION,
+			'url'             => z_root(),
+			'plugins'         => $visible_plugins,
 			'locked_features' => $locked_features,
 			'register_policy' =>  $register_policy[$a->config['register_policy']],
-			'admin' => $admin,
-			'site_name' => $a->config['sitename'],
-			'platform' => FRIENDICA_PLATFORM,
-			'info' => ((x($a->config,'info')) ? $a->config['info'] : ''),
-			'no_scrape_url' => App::get_baseurl().'/noscrape'
+			'admin'           => $admin,
+			'site_name'       => $a->config['sitename'],
+			'platform'        => FRIENDICA_PLATFORM,
+			'info'            => ((x($a->config,'info')) ? $a->config['info'] : ''),
+			'no_scrape_url'   => App::get_baseurl().'/noscrape'
 		);
 
 		echo json_encode($data);
@@ -59,53 +63,63 @@ function friendica_init(App $a) {
 	}
 }
 
-
-
 function friendica_content(App $a) {
-
-	$o = '';
-	$o .= '

Friendica

'; - - - $o .= '

'; - - $o .= t('This is Friendica, version') . ' ' . FRIENDICA_VERSION . ' '; - $o .= t('running at web location') . ' ' . z_root() . '

'; - - $o .= t('Please visit Friendica.com to learn more about the Friendica project.') . '

'; - - $o .= t('Bug reports and issues: please visit') . ' ' . ''.t('the bugtracker at github').'

'; - $o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendica - dot com') . '

'; - - $o .= '

'; + $o = '

Friendica

' . PHP_EOL; + $o .= '

'; + $o .= t('This is Friendica, version') . ' ' . FRIENDICA_VERSION . ' '; + $o .= t('running at web location') . ' ' . z_root(); + $o .= '

' . PHP_EOL; + + $o .= '

'; + $o .= t('Please visit Friendica.com to learn more about the Friendica project.') . PHP_EOL; + $o .= '

' . PHP_EOL; + + $o .= '

'; + $o .= t('Bug reports and issues: please visit') . ' ' . ''.t('the bugtracker at github').''; + $o .= '

' . PHP_EOL; + $o .= '

'; + $o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendica - dot com'); + $o .= '

' . PHP_EOL; $visible_plugins = array(); - if(is_array($a->plugins) && count($a->plugins)) { - $r = q("select * from addon where hidden = 0"); - if (dbm::is_result($r)) - foreach($r as $rr) + if (is_array($a->plugins) && count($a->plugins)) { + $r = q("SELECT * FROM `addon` WHERE `hidden` = 0"); + if (dbm::is_result($r)) { + foreach($r as $rr) { $visible_plugins[] = $rr['name']; + } + } } - - if(count($visible_plugins)) { - $o .= '

' . t('Installed plugins/addons/apps:') . '

'; + if (count($visible_plugins)) { + $o .= '

' . t('Installed plugins/addons/apps:') . '

' . PHP_EOL; $sorted = $visible_plugins; $s = ''; sort($sorted); - foreach($sorted as $p) { - if(strlen($p)) { - if(strlen($s)) $s .= ', '; + foreach ($sorted as $p) { + if (strlen($p)) { + if (strlen($s)) { + $s .= ', '; + } $s .= $p; } } - $o .= '
' . $s . '
'; + $o .= '
' . $s . '
' . PHP_EOL; + } else { + $o .= '

' . t('No installed plugins/addons/apps') . '

' . PHP_EOL; + } + + $blocklist = Config::get('system', 'blocklist'); + if (count($blocklist)) { + $o .= '

' . t('On this server the following remote servers are blocked.') . '

' . PHP_EOL; + $o .= '' . PHP_EOL; + foreach ($blocklist as $b) { + $o .= '' . PHP_EOL; + } + $o .= '
' . t('Blocked domain') . '' . t('Reason for the block') . '
' . $b['domain'] .'' . $b['reason'] . '
' . PHP_EOL; } - else - $o .= '

' . t('No installed plugins/addons/apps') . '

'; call_hooks('about_hook', $o); return $o; - } diff --git a/mod/fsuggest.php b/mod/fsuggest.php index b3d5439712..32ed63b4c2 100644 --- a/mod/fsuggest.php +++ b/mod/fsuggest.php @@ -1,5 +1,6 @@ page['aside'] = group_side('contacts','group','extended',(($a->argc > 1) ? intval($a->argv[1]) : 0)); + if (local_user()) { + require_once 'include/group.php'; + $a->page['aside'] = group_side('contacts', 'group', 'extended', (($a->argc > 1) ? intval($a->argv[1]) : 0)); } } - - function group_post(App $a) { if (! local_user()) { - notice( t('Permission denied.') . EOL); + notice(t('Permission denied.') . EOL); return; } - if(($a->argc == 2) && ($a->argv[1] === 'new')) { + if (($a->argc == 2) && ($a->argv[1] === 'new')) { check_form_security_token_redirectOnErr('/group/new', 'group_edit'); $name = notags(trim($_POST['groupname'])); - $r = group_add(local_user(),$name); + $r = group_add(local_user(), $name); if ($r) { - info( t('Group created.') . EOL ); - $r = group_byname(local_user(),$name); + info(t('Group created.') . EOL); + $r = group_byname(local_user(), $name); if ($r) { goaway(App::get_baseurl() . '/group/' . $r); } } else { - notice( t('Could not create group.') . EOL ); + notice(t('Could not create group.') . EOL); } goaway(App::get_baseurl() . '/group'); return; // NOTREACHED @@ -46,7 +47,7 @@ function group_post(App $a) { intval(local_user()) ); if (! dbm::is_result($r)) { - notice( t('Group not found.') . EOL ); + notice(t('Group not found.') . EOL); goaway(App::get_baseurl() . '/contacts'); return; // NOTREACHED } @@ -60,7 +61,7 @@ function group_post(App $a) { ); if ($r) { - info( t('Group name changed.') . EOL ); + info(t('Group name changed.') . EOL); } } @@ -73,17 +74,19 @@ function group_content(App $a) { $change = false; if (! local_user()) { - notice( t('Permission denied') . EOL); + notice(t('Permission denied') . EOL); return; } // Switch to text mode interface if we have more than 'n' contacts or group members - $switchtotext = get_pconfig(local_user(),'system','groupedit_image_limit'); - if($switchtotext === false) - $switchtotext = get_config('system','groupedit_image_limit'); - if($switchtotext === false) + $switchtotext = get_pconfig(local_user(), 'system', 'groupedit_image_limit'); + if ($switchtotext === false) { + $switchtotext = get_config('system', 'groupedit_image_limit'); + } + if ($switchtotext === false) { $switchtotext = 400; + } $tpl = get_markup_template('group_edit.tpl'); @@ -92,7 +95,6 @@ function group_content(App $a) { ); if (($a->argc == 2) && ($a->argv[1] === 'new')) { - return replace_macros($tpl, $context + array( '$title' => t('Create a group of contacts/friends.'), '$gname' => array('groupname', t('Group Name: '), '', ''), @@ -115,13 +117,13 @@ function group_content(App $a) { $result = null; if (dbm::is_result($r)) { - $result = group_rmv(local_user(),$r[0]['name']); + $result = group_rmv(local_user(), $r[0]['name']); } if ($result) { - info( t('Group removed.') . EOL); + info(t('Group removed.') . EOL); } else { - notice( t('Unable to remove group.') . EOL); + notice(t('Unable to remove group.') . EOL); } } goaway(App::get_baseurl() . '/group'); @@ -135,66 +137,75 @@ function group_content(App $a) { intval($a->argv[2]), intval(local_user()) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $change = intval($a->argv[2]); + } } if (($a->argc > 1) && (intval($a->argv[1]))) { + require_once 'include/acl_selectors.php'; + require_once 'mod/contacts.php'; - require_once('include/acl_selectors.php'); $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d AND `deleted` = 0 LIMIT 1", intval($a->argv[1]), intval(local_user()) ); + if (! dbm::is_result($r)) { - notice( t('Group not found.') . EOL ); + notice(t('Group not found.') . EOL); goaway(App::get_baseurl() . '/contacts'); } + $group = $r[0]; $members = group_get_members($group['id']); $preselected = array(); - if(count($members)) { - foreach($members as $member) + $entry = array(); + $id = 0; + + if (count($members)) { + foreach ($members as $member) { $preselected[] = $member['id']; + } } - if($change) { - if(in_array($change,$preselected)) { - group_rmv_member(local_user(),$group['name'],$change); - } - else { - group_add_member(local_user(),$group['name'],$change); + if ($change) { + if (in_array($change, $preselected)) { + group_rmv_member(local_user(), $group['name'], $change); + } else { + group_add_member(local_user(), $group['name'], $change); } $members = group_get_members($group['id']); $preselected = array(); - if(count($members)) { - foreach($members as $member) + if (count($members)) { + foreach ($members as $member) { $preselected[] = $member['id']; + } } } - $drop_tpl = get_markup_template('group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array( '$id' => $group['id'], - '$delete' => t('Delete'), + '$delete' => t('Delete Group'), '$form_security_token' => get_form_security_token("group_drop"), )); $context = $context + array( '$title' => t('Group Editor'), - '$gname' => array('groupname', t('Group Name: '),$group['name'], ''), + '$gname' => array('groupname', t('Group Name: '), $group['name'], ''), '$gid' => $group['id'], '$drop' => $drop_txt, '$form_security_token' => get_form_security_token('group_edit'), + '$edit_name' => t('Edit Group Name') ); } - if(! isset($group)) + if (! isset($group)) { return; + } $groupeditor = array( 'label_members' => t('Members'), @@ -205,14 +216,24 @@ function group_content(App $a) { ); $sec_token = addslashes(get_form_security_token('group_member_change')); - $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); - foreach($members as $member) { - if($member['url']) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; - $groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode); + + // Format the data of the group members + foreach ($members as $member) { + if ($member['url']) { + $entry = _contact_detail_for_template($member); + $entry['label'] = 'members'; + $entry['photo_menu'] = ''; + $entry['change_member'] = array( + 'title' => t("Remove Contact"), + 'gid' => $group['id'], + 'cid' => $member['id'], + 'sec_token' => $sec_token + ); + + $groupeditor['members'][] = $entry; + } else { + group_rmv_member(local_user(), $group['name'], $member['id']); } - else - group_rmv_member(local_user(),$group['name'],$member['id']); } $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND NOT `blocked` AND NOT `pending` AND NOT `self` ORDER BY `name` ASC", @@ -220,11 +241,20 @@ function group_content(App $a) { ); if (dbm::is_result($r)) { - $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); - foreach($r as $member) { - if(! in_array($member['id'],$preselected)) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; - $groupeditor['contacts'][] = micropro($member,true,'mpall', $textmode); + // Format the data of the contacts who aren't in the contact group + foreach ($r as $member) { + if (! in_array($member['id'], $preselected)) { + $entry = _contact_detail_for_template($member); + $entry['label'] = 'contacts'; + $entry['photo_menu'] = ''; + $entry['change_member'] = array( + 'title' => t("Add Contact"), + 'gid' => $group['id'], + 'cid' => $member['id'], + 'sec_token' => $sec_token + ); + + $groupeditor['contacts'][] = $entry; } } } @@ -232,7 +262,11 @@ function group_content(App $a) { $context['$groupeditor'] = $groupeditor; $context['$desc'] = t('Click on a contact to add or remove.'); - if($change) { + // If there are to many contacts we could provide an alternative view mode + $total = count($groupeditor['members']) + count($groupeditor['contacts']); + $context['$shortmode'] = (($switchtotext && ($total > $switchtotext)) ? true : false); + + if ($change) { $tpl = get_markup_template('groupeditor.tpl'); echo replace_macros($tpl, $context); killme(); diff --git a/mod/hcard.php b/mod/hcard.php index 07eb291510..229939a4a3 100644 --- a/mod/hcard.php +++ b/mod/hcard.php @@ -1,5 +1,7 @@ "; $html = implode("\n",$lines); - $a->page['aside'] = $toc.$a->page['aside']; + $a->page['aside'] = '
' . $toc . $a->page['aside'] . '
'; } $html = " diff --git a/mod/home.php b/mod/home.php index b1708d80a2..bd77a840d0 100644 --- a/mod/home.php +++ b/mod/home.php @@ -1,5 +1,7 @@ $cid), array('limit' => 1)); + $profileurl = ($r["nurl"] ? $r["nurl"] : ""); + $self = ($r["self"] ? $r["self"] : ""); } // if it's the url containing https it should be converted to http diff --git a/mod/ignored.php b/mod/ignored.php index 0065d51c58..a7c3ba6e1d 100644 --- a/mod/ignored.php +++ b/mod/ignored.php @@ -1,5 +1,6 @@ argc==2 && $a->argv[1]=="testrewrite") { + if ($a->argc == 2 && $a->argv[1] == "testrewrite") { echo "ok"; killme(); } @@ -18,7 +20,7 @@ function install_init(App $a) { $a->theme['stylesheet'] = App::get_baseurl()."/view/install/style.css"; global $install_wizard_pass; - if (x($_POST,'pass')) { + if (x($_POST, 'pass')) { $install_wizard_pass = intval($_POST['pass']); } @@ -43,27 +45,8 @@ function install_post(App $a) { require_once("include/dba.php"); unset($db); $db = new dba($dbhost, $dbuser, $dbpass, $dbdata, true); - /*if(get_db_errno()) { - unset($db); - $db = new dba($dbhost, $dbuser, $dbpass, '', true); - - if(! get_db_errno()) { - $r = q("CREATE DATABASE '%s' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci", - dbesc($dbdata) - ); - if ($r) { - unset($db); - $db = new dba($dbhost, $dbuser, $dbpass, $dbdata, true); - } else { - $a->data['db_create_failed']=true; - } - } else { - $a->data['db_conn_failed']=true; - return; - } - }*/ - if (get_db_errno()) { - $a->data['db_conn_failed']=true; + if (!$db->connected) { + $a->data['db_conn_failed'] = true; } return; @@ -117,14 +100,6 @@ function install_post(App $a) { } } -function get_db_errno() { - if (class_exists('mysqli')) { - return mysqli_connect_errno(); - } else { - return mysql_errno(); - } -} - function install_content(App $a) { global $install_wizard_pass, $db; @@ -134,30 +109,30 @@ function install_content(App $a) { - if (x($a->data,'db_conn_failed')) { + if (x($a->data, 'db_conn_failed')) { $install_wizard_pass = 2; - $wizard_status = t('Could not connect to database.'); + $wizard_status = t('Could not connect to database.'); } - if (x($a->data,'db_create_failed')) { + if (x($a->data, 'db_create_failed')) { $install_wizard_pass = 2; - $wizard_status = t('Could not create table.'); + $wizard_status = t('Could not create table.'); } - $db_return_text=""; - if (x($a->data,'db_installed')) { + $db_return_text = ""; + if (x($a->data, 'db_installed')) { $txt = '

'; $txt .= t('Your Friendica site database has been installed.') . EOL; $db_return_text .= $txt; } - if (x($a->data,'db_failed')) { + if (x($a->data, 'db_failed')) { $txt = t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL; - $txt .= t('Please see the file "INSTALL.txt".') . EOL ."


" ; - $txt .= "
".$a->data['db_failed'] . "
". EOL ; + $txt .= t('Please see the file "INSTALL.txt".') . EOL ."
"; + $txt .= "
".$a->data['db_failed'] . "
". EOL; $db_return_text .= $txt; } - if($db && $db->connected) { + if ($db && $db->connected) { $r = q("SELECT COUNT(*) as `total` FROM `user`"); if (dbm::is_result($r) && $r[0]['total']) { $tpl = get_markup_template('install.tpl'); @@ -170,11 +145,11 @@ function install_content(App $a) { } } - if (x($a->data,'txt') && strlen($a->data['txt'])) { + if (x($a->data, 'txt') && strlen($a->data['txt'])) { $db_return_text .= manual_config($a); } - if ($db_return_text!="") { + if ($db_return_text != "") { $tpl = get_markup_template('install.tpl'); return replace_macros($tpl, array( '$title' => $install_title, @@ -183,7 +158,7 @@ function install_content(App $a) { )); } - switch ($install_wizard_pass){ + switch ($install_wizard_pass) { case 1: { // System check @@ -199,7 +174,7 @@ function install_content(App $a) { check_keys($checks); - if (x($_POST,'phpath')) { + if (x($_POST, 'phpath')) { $phpath = notags(trim($_POST['phpath'])); } @@ -208,7 +183,7 @@ function install_content(App $a) { check_htaccess($checks); /// @TODO Maybe move this out? - function check_passed($v, $c){ + function check_passed($v, $c) { if ($c['required']) { $v = $v && $c['status']; } @@ -235,7 +210,7 @@ function install_content(App $a) { case 2: { // Database config - $dbhost = ((x($_POST,'dbhost')) ? notags(trim($_POST['dbhost'])) : 'localhost'); + $dbhost = ((x($_POST, 'dbhost')) ? notags(trim($_POST['dbhost'])) : 'localhost'); $dbuser = notags(trim($_POST['dbuser'])); $dbpass = notags(trim($_POST['dbpass'])); $dbdata = notags(trim($_POST['dbdata'])); @@ -273,14 +248,14 @@ function install_content(App $a) { }; break; case 3: { // Site settings require_once('include/datetime.php'); - $dbhost = ((x($_POST,'dbhost')) ? notags(trim($_POST['dbhost'])) : 'localhost'); + $dbhost = ((x($_POST, 'dbhost')) ? notags(trim($_POST['dbhost'])) : 'localhost'); $dbuser = notags(trim($_POST['dbuser'])); $dbpass = notags(trim($_POST['dbpass'])); $dbdata = notags(trim($_POST['dbdata'])); $phpath = notags(trim($_POST['phpath'])); $adminmail = notags(trim($_POST['adminmail'])); - $timezone = ((x($_POST,'timezone')) ? ($_POST['timezone']) : 'America/Los_Angeles'); + $timezone = ((x($_POST, 'timezone')) ? ($_POST['timezone']) : 'America/Los_Angeles'); /* Installed langs */ $lang_choices = get_available_languages(); @@ -322,7 +297,7 @@ function install_content(App $a) { * required : boolean * help : string optional */ -function check_add(&$checks, $title, $status, $required, $help){ +function check_add(&$checks, $title, $status, $required, $help) { $checks[] = array( 'title' => $title, 'status' => $status, @@ -333,7 +308,7 @@ function check_add(&$checks, $title, $status, $required, $help){ function check_php(&$phpath, &$checks) { $passed = $passed2 = $passed3 = false; - if (strlen($phpath)){ + if (strlen($phpath)) { $passed = file_exists($phpath); } else { $phpath = trim(shell_exec('which php')); @@ -342,24 +317,24 @@ function check_php(&$phpath, &$checks) { $help = ""; if (!$passed) { $help .= t('Could not find a command line version of PHP in the web server PATH.'). EOL; - $help .= t("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. See 'Setup the poller'") . EOL ; - $help .= EOL . EOL ; + $help .= t("If you don't have a command line version of PHP installed on server, you will not be able to run the background processing. See 'Setup the poller'") . EOL; + $help .= EOL . EOL; $tpl = get_markup_template('field_input.tpl'); $help .= replace_macros($tpl, array( '$field' => array('phpath', t('PHP executable path'), $phpath, t('Enter full path to php executable. You can leave this blank to continue the installation.')), )); - $phpath=""; + $phpath = ""; } check_add($checks, t('Command line PHP').($passed?" ($phpath)":""), $passed, false, $help); - if($passed) { + if ($passed) { $cmd = "$phpath -v"; $result = trim(shell_exec($cmd)); - $passed2 = ( strpos($result, "(cli)") !== false ); + $passed2 = ( strpos($result, "(cli)") !== false); list($result) = explode("\n", $result); $help = ""; - if(!$passed2) { + if (!$passed2) { $help .= t('PHP executable is not the php cli binary (could be cgi-fgci version)'). EOL; $help .= t('Found PHP version: ')."$result"; } @@ -373,7 +348,7 @@ function check_php(&$phpath, &$checks) { $result = trim(shell_exec($cmd)); $passed3 = $result == $str; $help = ""; - if(!$passed3) { + if (!$passed3) { $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.'); } @@ -413,12 +388,12 @@ function check_funcs(&$checks) { check_add($ck_funcs, t('libCurl PHP module'), true, true, ""); check_add($ck_funcs, t('GD graphics PHP module'), true, true, ""); check_add($ck_funcs, t('OpenSSL PHP module'), true, true, ""); - check_add($ck_funcs, t('mysqli PHP module'), true, true, ""); + check_add($ck_funcs, t('PDO or MySQLi PHP module'), true, true, ""); check_add($ck_funcs, t('mb_string PHP module'), true, true, ""); check_add($ck_funcs, t('XML PHP module'), true, true, ""); check_add($ck_funcs, t('iconv module'), true, true, ""); - if (function_exists('apache_get_modules')){ + if (function_exists('apache_get_modules')) { if (! in_array('mod_rewrite',apache_get_modules())) { check_add($ck_funcs, t('Apache mod_rewrite module'), false, true, t('Error: Apache webserver mod-rewrite module is required but not installed.')); } else { @@ -426,29 +401,33 @@ function check_funcs(&$checks) { } } - if (! function_exists('curl_init')){ - $ck_funcs[0]['status']= false; - $ck_funcs[0]['help']= t('Error: libCURL PHP module required but not installed.'); + if (! function_exists('curl_init')) { + $ck_funcs[0]['status'] = false; + $ck_funcs[0]['help'] = t('Error: libCURL PHP module required but not installed.'); } - if (! function_exists('imagecreatefromjpeg')){ - $ck_funcs[1]['status']= false; - $ck_funcs[1]['help']= t('Error: GD graphics PHP module with JPEG support required but not installed.'); + if (! function_exists('imagecreatefromjpeg')) { + $ck_funcs[1]['status'] = false; + $ck_funcs[1]['help'] = t('Error: GD graphics PHP module with JPEG support required but not installed.'); } if (! function_exists('openssl_public_encrypt')) { - $ck_funcs[2]['status']= false; - $ck_funcs[2]['help']= t('Error: openssl PHP module required but not installed.'); + $ck_funcs[2]['status'] = false; + $ck_funcs[2]['help'] = t('Error: openssl PHP module required but not installed.'); + } + if (! function_exists('mysqli_connect') && !class_exists('pdo')) { + $ck_funcs[3]['status'] = false; + $ck_funcs[3]['help'] = t('Error: PDO or MySQLi PHP module required but not installed.'); } - if (! function_exists('mysqli_connect')){ - $ck_funcs[3]['status']= false; - $ck_funcs[3]['help']= t('Error: mysqli PHP module required but not installed.'); + if (!function_exists('mysqli_connect') && class_exists('pdo') && !in_array('mysql', PDO::getAvailableDrivers())) { + $ck_funcs[3]['status'] = false; + $ck_funcs[3]['help'] = t('Error: The MySQL driver for PDO is not installed.'); } - if (! function_exists('mb_strlen')){ - $ck_funcs[4]['status']= false; - $ck_funcs[4]['help']= t('Error: mb_string PHP module required but not installed.'); + if (! function_exists('mb_strlen')) { + $ck_funcs[4]['status'] = false; + $ck_funcs[4]['help'] = t('Error: mb_string PHP module required but not installed.'); } - if (! function_exists('iconv_strlen')){ - $ck_funcs[7]['status']= false; - $ck_funcs[7]['help']= t('Error: iconv PHP module required but not installed.'); + if (! function_exists('iconv_strlen')) { + $ck_funcs[7]['status'] = false; + $ck_funcs[7]['help'] = t('Error: iconv PHP module required but not installed.'); } $checks = array_merge($checks, $ck_funcs); @@ -467,9 +446,9 @@ function check_htconfig(&$checks) { $status = true; $help = ""; if ((file_exists('.htconfig.php') && !is_writable('.htconfig.php')) || - (!file_exists('.htconfig.php') && !is_writable('.')) ) { + (!file_exists('.htconfig.php') && !is_writable('.'))) { - $status=false; + $status = false; $help = t('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.') .EOL; $help .= t('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.').EOL; $help .= t('At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder.').EOL; @@ -483,9 +462,9 @@ function check_htconfig(&$checks) { function check_smarty3(&$checks) { $status = true; $help = ""; - if (!is_writable('view/smarty3') ) { + if (!is_writable('view/smarty3')) { - $status=false; + $status = false; $help = t('Friendica uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL; $help .= t('In order to store these compiled templates, the web server needs to have write access to the directory view/smarty3/ under the Friendica top level 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; @@ -502,11 +481,11 @@ function check_htaccess(&$checks) { if (function_exists('curl_init')) { $test = fetch_url(App::get_baseurl()."/install/testrewrite"); - if ($test!="ok") { + if ($test != "ok") { $test = fetch_url(normalise_link(App::get_baseurl()."/install/testrewrite")); } - if ($test!="ok") { + if ($test != "ok") { $status = false; $help = t('Url rewrite in .htaccess is not working. Check your server configuration.'); } @@ -539,15 +518,15 @@ function check_imagik(&$checks) { } function manual_config(App $a) { - $data = htmlentities($a->data['txt'],ENT_COMPAT,'UTF-8'); + $data = htmlentities($a->data['txt'],ENT_COMPAT, 'UTF-8'); $o = t('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.'); $o .= ""; return $o; } -function load_database_rem($v, $i){ +function load_database_rem($v, $i) { $l = trim($i); - if (strlen($l)>1 && ($l[0]=="-" || ($l[0]=="/" && $l[1]=="*"))){ + if (strlen($l)>1 && ($l[0] == "-" || ($l[0] == "/" && $l[1] == "*"))) { return $v; } else { return $v."\n".$i; @@ -559,18 +538,6 @@ function load_database($db) { require_once("include/dbstructure.php"); $errors = update_structure(false, true); -/* $str = file_get_contents('database.sql'); - $arr = explode(';',$str); - $errors = false; - foreach($arr as $a) { - if(strlen(trim($a))) { - $r = @$db->q(trim($a)); - if(false === $r) { - $errors .= t('Errors encountered creating database tables.') . $a . EOL; - } - } - }*/ - return $errors; } @@ -584,5 +551,3 @@ function what_next() { .t("Go to your new Friendica node registration page and register as new user. Remember to use the same email you have entered as administrator email. This will allow you to enter the site admin panel.") ."

"; } - - diff --git a/mod/invite.php b/mod/invite.php index f5c60e1ed3..67cd23de74 100644 --- a/mod/invite.php +++ b/mod/invite.php @@ -7,6 +7,8 @@ * */ +use Friendica\App; + require_once('include/email.php'); function invite_post(App $a) { diff --git a/mod/item.php b/mod/item.php index 8bf922d97c..f696a96a7e 100644 --- a/mod/item.php +++ b/mod/item.php @@ -15,6 +15,8 @@ * posting categories go through item_store() instead of this function. */ +use Friendica\App; + require_once 'include/crypto.php'; require_once 'include/enotify.php'; require_once 'include/email.php'; @@ -23,7 +25,7 @@ require_once 'include/files.php'; require_once 'include/threads.php'; require_once 'include/text.php'; require_once 'include/items.php'; -require_once 'include/Scrape.php'; +require_once 'include/probe.php'; require_once 'include/diaspora.php'; require_once 'include/Contact.php'; @@ -142,7 +144,6 @@ function item_post(App $a) { $parent_contact = get_contact_details_by_url($thrparent[0]["author-link"]); if (!isset($parent_contact["nick"])) { - require_once 'include/Scrape.php'; $probed_contact = probe_url($thrparent[0]["author-link"]); if ($probed_contact["network"] != NETWORK_FEED) { $parent_contact = $probed_contact; @@ -723,6 +724,18 @@ function item_post(App $a) { $datarray['last-child'] = 1; $datarray['visible'] = 1; + $datarray['protocol'] = PROTOCOL_DFRN; + + $r = dba::fetch_first("SELECT `conversation-uri`, `conversation-href` FROM `conversation` WHERE `item-uri` = ?", $datarray['parent-uri']); + if (dbm::is_result($r)) { + if ($r['conversation-uri'] != '') { + $datarray['conversation-uri'] = $r['conversation-uri']; + } + if ($r['conversation-href'] != '') { + $datarray['conversation-href'] = $r['conversation-href']; + } + } + if ($orig_post) { $datarray['edit'] = true; } @@ -762,6 +775,8 @@ function item_post(App $a) { // Fill the cache field put_item_in_cache($datarray); + $datarray = store_conversation($datarray); + if ($orig_post) { $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `rendered-html` = '%s', `rendered-hash` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d", dbesc($datarray['title']), @@ -794,8 +809,7 @@ function item_post(App $a) { $post_id = 0; } - q("COMMIT"); - q("START TRANSACTION;"); + dba::transaction(); $r = q("INSERT INTO `item` (`guid`, `extid`, `uid`,`type`,`wall`,`gravity`, `network`, `contact-id`, `owner-name`,`owner-link`,`owner-avatar`, `owner-id`, @@ -885,7 +899,7 @@ function item_post(App $a) { } if ($post_id == 0) { - q("COMMIT"); + dba::commit(); logger('mod_item: unable to retrieve post that was just stored.'); notice(t('System error. Post not saved.') . EOL); goaway($return_path); @@ -1011,7 +1025,7 @@ function item_post(App $a) { update_thread($parent, true); } - q("COMMIT"); + dba::commit(); create_tags_from_item($post_id); create_files_from_item($post_id); @@ -1090,7 +1104,6 @@ function item_content(App $a) { * @return boolean true if replaced, false if not replaced */ function handle_tag(App $a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") { - require_once 'include/Scrape.php'; require_once 'include/socgraph.php'; $replaced = false; diff --git a/mod/like.php b/mod/like.php index 1f6a233f3d..c542a540ab 100755 --- a/mod/like.php +++ b/mod/like.php @@ -1,5 +1,7 @@ config['register_policy'] == REGISTER_CLOSED) ? false : true); + } + return login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); } diff --git a/mod/lostpass.php b/mod/lostpass.php index 455a9b1e2e..37ef3e2f82 100644 --- a/mod/lostpass.php +++ b/mod/lostpass.php @@ -1,5 +1,7 @@ App::get_baseurl(), - '$touch_icon' => $touch_icon, - '$title' => Config::get('config', 'sitename', 'Friendica'), - )); + $touch_icon = Config::get('system', 'touch_icon', 'images/friendica-128.png'); + if ($touch_icon == '') { + $touch_icon = 'images/friendica-128.png'; + } - echo $o; + $o = replace_macros($tpl, array( + '$baseurl' => App::get_baseurl(), + '$touch_icon' => $touch_icon, + '$title' => Config::get('config', 'sitename', 'Friendica'), + )); - killme(); + echo $o; - } -?> + killme(); +} diff --git a/mod/match.php b/mod/match.php index 44f5141ad8..4119bf8e84 100644 --- a/mod/match.php +++ b/mod/match.php @@ -1,5 +1,8 @@ ' . t('Welcome to Friendica') . ''; - $o .= '

' . t('New Member Checklist') . '

'; - $o .= '
'; - $o .= t('We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear.'); - $o .= '

' . t('Getting Started') . '

'; - $o .= '
    '; - $o .= '
  • ' . '' . t('Friendica Walk-Through') . '
    ' . t('On your Quick Start page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join.') . '
  • ' . EOL; - $o .= '
'; - $o .= '

' . t('Settings') . '

'; - $o .= '
    '; - $o .= '
  • ' . '' . t('Go to Your Settings') . '
    ' . t('On your Settings page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web.') . '
  • ' . EOL; - $o .= '
  • ' . t('Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you.') . '
  • ' . EOL; - $o .= '
'; - $o .= '

' . t('Profile') . '

'; - $o .= '
    '; - $o .= '
  • ' . '' . t('Upload Profile Photo') . '
    ' . t('Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not.') . '
  • ' . EOL; - $o .= '
  • ' . '' . t('Edit Your Profile') . '
    ' . t('Edit your default profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors.') . '
  • ' . EOL; - $o .= '
  • ' . '' . t('Profile Keywords') . '
    ' . t('Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships.') . '
  • ' . EOL; - $o .= '
'; - $o .= '

' . t('Connecting') . '

'; - $o .= '
    '; - $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1); + $mail_disabled = ((function_exists('imap_open') && (!get_config('system', 'imap_disabled'))) ? 0 : 1); - if(! $mail_disabled) + if (!$mail_disabled) { $o .= '
  • ' . '' . t('Importing Emails') . '
    ' . t('Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX') . '
  • ' . EOL; + } $o .= '
  • ' . '' . t('Go to Your Contacts Page') . '
    ' . t('Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the Add New Contact dialog.') . '
  • ' . EOL; - $o .= '
  • ' . '' . t("Go to Your Site's Directory") . '
    ' . t('The Directory page lets you find other people in this network or other federated sites. Look for a Connect or Follow link on their profile page. Provide your own Identity Address if requested.') . '
  • ' . EOL; - $o .= '
  • ' . '' . t('Finding New People') . '
    ' . t("On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours.") . '
  • ' . EOL; - $o .= '
'; - $o .= '

' . t('Groups') . '

'; - $o .= '
    '; - $o .= '
  • ' . '' . t('Group Your Contacts') . '
    ' . t('Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page.') . '
  • ' . EOL; - if(get_config('system', 'newuser_private')) { + if (get_config('system', 'newuser_private')) { $o .= '
  • ' . '' . t("Why Aren't My Posts Public?") . '
    ' . t("Friendica respects your privacy. By default, your posts will only show up to people you've added as friends. For more information, see the help section from the link above.") . '
  • ' . EOL; } $o .= '
'; - $o .= '

' . t('Getting Help') . '

'; - $o .= ''; - $o .= '
'; return $o; diff --git a/mod/nodeinfo.php b/mod/nodeinfo.php index 7f010cee41..5d8e8f2a20 100644 --- a/mod/nodeinfo.php +++ b/mod/nodeinfo.php @@ -5,7 +5,8 @@ * Documentation: http://nodeinfo.diaspora.software/schema.html */ -use \Friendica\Core\Config; +use Friendica\App; +use Friendica\Core\Config; require_once 'include/plugin.php'; @@ -251,5 +252,3 @@ function nodeinfo_cron() { logger('cron_end'); Config::set('nodeinfo', 'last_calucation', time()); } - -?> diff --git a/mod/nogroup.php b/mod/nogroup.php index 11b7bdc7aa..ecbfb9176e 100644 --- a/mod/nogroup.php +++ b/mod/nogroup.php @@ -1,5 +1,7 @@ argc > 1) diff --git a/mod/notes.php b/mod/notes.php index c7cfe8d70f..835627586c 100644 --- a/mod/notes.php +++ b/mod/notes.php @@ -1,5 +1,7 @@ friendica items permanent-url compatibility */ - function notice_init(App $a) { - $id = $a->argv[1]; - $r = q("SELECT user.nickname FROM user LEFT JOIN item ON item.uid=user.uid WHERE item.id=%d", - intval($id) - ); - if (dbm::is_result($r)){ - $nick = $r[0]['nickname']; - $url = App::get_baseurl()."/display/$nick/$id"; - goaway($url); - } else { - $a->error = 404; - notice( t('Item not found.') . EOL); +/* identi.ca -> friendica items permanent-url compatibility */ - } - return; +use Friendica\App; +function notice_init(App $a) { + + $id = $a->argv[1]; + $r = q("SELECT `user`.`nickname` FROM `user` LEFT JOIN `item` ON `item`.`uid` = `user`.`uid` WHERE `item`.`id` = %d", intval($id)); + if (dbm::is_result($r)) { + $nick = $r[0]['nickname']; + $url = App::get_baseurl() . "/display/$nick/$id"; + goaway($url); + } else { + $a->error = 404; + notice(t('Item not found.') . EOL); } + + return; +} diff --git a/mod/notifications.php b/mod/notifications.php index bab5fd6274..396361e91b 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -5,6 +5,8 @@ * @brief The notifications module */ +use Friendica\App; + require_once("include/NotificationsManager.php"); require_once("include/contact_selectors.php"); require_once("include/network.php"); @@ -223,6 +225,12 @@ function notifications_content(App $a) { $header .= " (".network_to_name($it['network'], $it['url']).")"; + if ($it['network'] != NETWORK_DIASPORA) { + $discard = t('Discard'); + } else { + $discard = ''; + } + $notif_content[] = replace_macros($tpl, array( '$header' => htmlentities($header), '$str_notifytype' => t('Notification type: '), @@ -255,7 +263,7 @@ function notifications_content(App $a) { '$approve' => t('Approve'), '$note' => $it['note'], '$ignore' => t('Ignore'), - '$discard' => t('Discard'), + '$discard' => $discard, )); break; diff --git a/mod/notify.php b/mod/notify.php index 0026f5ca6e..e380681934 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -1,4 +1,7 @@ argc > 1) && ($a->argv[1] === 'xrd')) { diff --git a/mod/openid.php b/mod/openid.php index b45cd97975..5707b1b728 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -1,9 +1,9 @@ App::get_baseurl(), - '$nodename' => $a->get_hostname(), - )); + $tpl = get_markup_template('opensearch.tpl'); - echo $o; + header("Content-type: application/opensearchdescription+xml"); - killme(); + $o = replace_macros($tpl, array( + '$baseurl' => App::get_baseurl(), + '$nodename' => $a->get_hostname(), + )); - } -?> \ No newline at end of file + echo $o; + + killme(); +} diff --git a/mod/ostatus_subscribe.php b/mod/ostatus_subscribe.php index a9f7c3a909..0b399acf29 100644 --- a/mod/ostatus_subscribe.php +++ b/mod/ostatus_subscribe.php @@ -1,7 +1,9 @@ data,'user')) { notice( t('No photos selected') . EOL ); diff --git a/mod/ping.php b/mod/ping.php index ba496a70bd..17180c74ee 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -1,5 +1,8 @@ argc > 1 && $a->argv[1] === '@server') { + require_once 'include/socgraph.php'; // List of all servers that this server knows $ret = poco_serverlist(); header('Content-type: application/json'); @@ -52,16 +55,16 @@ function poco_init(App $a) { $cid = intval($a->argv[4]); } - if (!$system_mode AND !$global) { - $r = q("SELECT `user`.*,`profile`.`hide-friends` from user left join profile on `user`.`uid` = `profile`.`uid` + if (! $system_mode AND ! $global) { + $users = q("SELECT `user`.*,`profile`.`hide-friends` from user left join profile on `user`.`uid` = `profile`.`uid` where `user`.`nickname` = '%s' and `profile`.`is-default` = 1 limit 1", dbesc($user) ); - if (! dbm::is_result($r) || $r[0]['hidewall'] || $r[0]['hide-friends']) { + if (! dbm::is_result($users) || $users[0]['hidewall'] || $users[0]['hide-friends']) { http_status_exit(404); } - $user = $r[0]; + $user = $users[0]; } if ($justme) { @@ -71,23 +74,23 @@ function poco_init(App $a) { // $sql_extra = " AND `contact`.`self` = 0 "; if ($cid) { - $sql_extra = sprintf(" AND `contact`.`id` = %d ",intval($cid)); + $sql_extra = sprintf(" AND `contact`.`id` = %d ", intval($cid)); } - if (x($_GET,'updatedSince')) { - $update_limit = date("Y-m-d H:i:s",strtotime($_GET['updatedSince'])); + if (x($_GET, 'updatedSince')) { + $update_limit = date("Y-m-d H:i:s", strtotime($_GET['updatedSince'])); } if ($global) { - $r = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `updated` >= '%s' AND `updated` >= `last_failure` AND NOT `hide` AND `network` IN ('%s', '%s', '%s')", + $contacts = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `updated` >= '%s' AND `updated` >= `last_failure` AND NOT `hide` AND `network` IN ('%s', '%s', '%s')", dbesc($update_limit), dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS) ); } elseif ($system_mode) { - $r = q("SELECT count(*) AS `total` FROM `contact` WHERE `self` = 1 + $contacts = q("SELECT count(*) AS `total` FROM `contact` WHERE `self` = 1 AND `uid` IN (SELECT `uid` FROM `pconfig` WHERE `cat` = 'system' AND `k` = 'suggestme' AND `v` = 1) "); } else { - $r = q("SELECT count(*) AS `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 + $contacts = q("SELECT count(*) AS `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 AND (`success_update` >= `failure_update` OR `last-item` >= `failure_update`) AND `network` IN ('%s', '%s', '%s', '%s') $sql_extra", intval($user['uid']), @@ -97,8 +100,8 @@ function poco_init(App $a) { dbesc(NETWORK_STATUSNET) ); } - if (dbm::is_result($r)) { - $totalResults = intval($r[0]['total']); + if (dbm::is_result($contacts)) { + $totalResults = intval($contacts[0]['total']); } else { $totalResults = 0; } @@ -106,11 +109,11 @@ function poco_init(App $a) { if (! $startIndex) { $startIndex = 0; } - $itemsPerPage = ((x($_GET,'count') && intval($_GET['count'])) ? intval($_GET['count']) : $totalResults); + $itemsPerPage = ((x($_GET, 'count') && intval($_GET['count'])) ? intval($_GET['count']) : $totalResults); if ($global) { logger("Start global query", LOGGER_DEBUG); - $r = q("SELECT * FROM `gcontact` WHERE `updated` > '%s' AND NOT `hide` AND `network` IN ('%s', '%s', '%s') AND `updated` > `last_failure` + $contacts = q("SELECT * FROM `gcontact` WHERE `updated` > '%s' AND NOT `hide` AND `network` IN ('%s', '%s', '%s') AND `updated` > `last_failure` ORDER BY `updated` DESC LIMIT %d, %d", dbesc($update_limit), dbesc(NETWORK_DFRN), @@ -121,7 +124,7 @@ function poco_init(App $a) { ); } elseif ($system_mode) { logger("Start system mode query", LOGGER_DEBUG); - $r = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`, + $contacts = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`, `profile`.`gender` AS `pgender`, `profile`.`address` AS `paddress`, `profile`.`region` AS `pregion`, `profile`.`postal-code` AS `ppostalcode`, `profile`.`country-name` AS `pcountry`, `user`.`account-type` FROM `contact` INNER JOIN `profile` ON `profile`.`uid` = `contact`.`uid` @@ -132,8 +135,8 @@ function poco_init(App $a) { intval($itemsPerPage) ); } else { - logger("Start query for user ".$user['nickname'], LOGGER_DEBUG); - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 + logger("Start query for user " . $user['nickname'], LOGGER_DEBUG); + $contacts = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 AND (`success_update` >= `failure_update` OR `last-item` >= `failure_update`) AND `network` IN ('%s', '%s', '%s', '%s') $sql_extra LIMIT %d, %d", intval($user['uid']), @@ -148,13 +151,13 @@ function poco_init(App $a) { logger("Query done", LOGGER_DEBUG); $ret = array(); - if (x($_GET,'sorted')) { + if (x($_GET, 'sorted')) { $ret['sorted'] = false; } - if (x($_GET,'filtered')) { + if (x($_GET, 'filtered')) { $ret['filtered'] = false; } - if (x($_GET,'updatedSince') AND !$global) { + if (x($_GET, 'updatedSince') AND ! $global) { $ret['updatedSince'] = false; } $ret['startIndex'] = (int) $startIndex; @@ -180,134 +183,135 @@ function poco_init(App $a) { 'generation' => false ); - if ((! x($_GET,'fields')) || ($_GET['fields'] === '@all')) { + if ((! x($_GET, 'fields')) || ($_GET['fields'] === '@all')) { foreach ($fields_ret as $k => $v) { $fields_ret[$k] = true; } } else { - $fields_req = explode(',',$_GET['fields']); + $fields_req = explode(',', $_GET['fields']); foreach ($fields_req as $f) { $fields_ret[trim($f)] = true; } } - if (is_array($r)) { - if (dbm::is_result($r)) { - foreach ($r as $rr) { - if (!isset($rr['generation'])) { + if (is_array($contacts)) { + if (dbm::is_result($contacts)) { + foreach ($contacts as $contact) { + if (! isset($contact['generation'])) { if ($global) { - $rr['generation'] = 3; + $contact['generation'] = 3; } elseif ($system_mode) { - $rr['generation'] = 1; + $contact['generation'] = 1; } else { - $rr['generation'] = 2; + $contact['generation'] = 2; } } - if (($rr['about'] == "") AND isset($rr['pabout'])) { - $rr['about'] = $rr['pabout']; + if (($contact['about'] == "") AND isset($contact['pabout'])) { + $contact['about'] = $contact['pabout']; } - if ($rr['location'] == "") { - if (isset($rr['plocation'])) { - $rr['location'] = $rr['plocation']; + if ($contact['location'] == "") { + if (isset($contact['plocation'])) { + $contact['location'] = $contact['plocation']; } - if (isset($rr['pregion']) AND ($rr['pregion'] != "")) { - if ($rr['location'] != "") { - $rr['location'] .= ", "; + if (isset($contact['pregion']) AND ( $contact['pregion'] != "")) { + if ($contact['location'] != "") { + $contact['location'] .= ", "; } - $rr['location'] .= $rr['pregion']; + $contact['location'] .= $contact['pregion']; } - if (isset($rr['pcountry']) AND ($rr['pcountry'] != "")) { - if ($rr['location'] != "") { - $rr['location'] .= ", "; + if (isset($contact['pcountry']) AND ( $contact['pcountry'] != "")) { + if ($contact['location'] != "") { + $contact['location'] .= ", "; } - $rr['location'] .= $rr['pcountry']; + $contact['location'] .= $contact['pcountry']; } } - if (($rr['gender'] == "") AND isset($rr['pgender'])) { - $rr['gender'] = $rr['pgender']; + if (($contact['gender'] == "") AND isset($contact['pgender'])) { + $contact['gender'] = $contact['pgender']; } - if (($rr['keywords'] == "") AND isset($rr['pub_keywords'])) { - $rr['keywords'] = $rr['pub_keywords']; + if (($contact['keywords'] == "") AND isset($contact['pub_keywords'])) { + $contact['keywords'] = $contact['pub_keywords']; } - if (isset($rr['account-type'])) { - $rr['contact-type'] = $rr['account-type']; + if (isset($contact['account-type'])) { + $contact['contact-type'] = $contact['account-type']; } - $about = Cache::get("about:".$rr['updated'].":".$rr['nurl']); + $about = Cache::get("about:" . $contact['updated'] . ":" . $contact['nurl']); if (is_null($about)) { - $about = bbcode($rr['about'], false, false); - Cache::set("about:".$rr['updated'].":".$rr['nurl'],$about); + require_once 'include/bbcode.php'; + $about = bbcode($contact['about'], false, false); + Cache::set("about:" . $contact['updated'] . ":" . $contact['nurl'], $about); } // Non connected persons can only see the keywords of a Diaspora account - if ($rr['network'] == NETWORK_DIASPORA) { - $rr['location'] = ""; + if ($contact['network'] == NETWORK_DIASPORA) { + $contact['location'] = ""; $about = ""; - $rr['gender'] = ""; + $contact['gender'] = ""; } $entry = array(); if ($fields_ret['id']) { - $entry['id'] = (int)$rr['id']; + $entry['id'] = (int)$contact['id']; } if ($fields_ret['displayName']) { - $entry['displayName'] = $rr['name']; + $entry['displayName'] = $contact['name']; } if ($fields_ret['aboutMe']) { $entry['aboutMe'] = $about; } if ($fields_ret['currentLocation']) { - $entry['currentLocation'] = $rr['location']; + $entry['currentLocation'] = $contact['location']; } if ($fields_ret['gender']) { - $entry['gender'] = $rr['gender']; + $entry['gender'] = $contact['gender']; } if ($fields_ret['generation']) { - $entry['generation'] = (int)$rr['generation']; + $entry['generation'] = (int)$contact['generation']; } if ($fields_ret['urls']) { - $entry['urls'] = array(array('value' => $rr['url'], 'type' => 'profile')); - if ($rr['addr'] && ($rr['network'] !== NETWORK_MAIL)) { - $entry['urls'][] = array('value' => 'acct:' . $rr['addr'], 'type' => 'webfinger'); + $entry['urls'] = array(array('value' => $contact['url'], 'type' => 'profile')); + if ($contact['addr'] && ($contact['network'] !== NETWORK_MAIL)) { + $entry['urls'][] = array('value' => 'acct:' . $contact['addr'], 'type' => 'webfinger'); } } if ($fields_ret['preferredUsername']) { - $entry['preferredUsername'] = $rr['nick']; + $entry['preferredUsername'] = $contact['nick']; } if ($fields_ret['updated']) { - if (!$global) { - $entry['updated'] = $rr['success_update']; + if (! $global) { + $entry['updated'] = $contact['success_update']; - if ($rr['name-date'] > $entry['updated']) { - $entry['updated'] = $rr['name-date']; + if ($contact['name-date'] > $entry['updated']) { + $entry['updated'] = $contact['name-date']; } - if ($rr['uri-date'] > $entry['updated']) { - $entry['updated'] = $rr['uri-date']; + if ($contact['uri-date'] > $entry['updated']) { + $entry['updated'] = $contact['uri-date']; } - if ($rr['avatar-date'] > $entry['updated']) { - $entry['updated'] = $rr['avatar-date']; + if ($contact['avatar-date'] > $entry['updated']) { + $entry['updated'] = $contact['avatar-date']; } } else { - $entry['updated'] = $rr['updated']; + $entry['updated'] = $contact['updated']; } $entry['updated'] = date("c", strtotime($entry['updated'])); } if ($fields_ret['photos']) { - $entry['photos'] = array(array('value' => $rr['photo'], 'type' => 'profile')); + $entry['photos'] = array(array('value' => $contact['photo'], 'type' => 'profile')); } if ($fields_ret['network']) { - $entry['network'] = $rr['network']; + $entry['network'] = $contact['network']; if ($entry['network'] == NETWORK_STATUSNET) { $entry['network'] = NETWORK_OSTATUS; } - if (($entry['network'] == "") AND ($rr['self'])) { + if (($entry['network'] == "") AND ($contact['self'])) { $entry['network'] = NETWORK_DFRN; } } if ($fields_ret['tags']) { - $tags = str_replace(","," ",$rr['keywords']); + $tags = str_replace(",", " ", $contact['keywords']); $tags = explode(" ", $tags); $cleaned = array(); @@ -327,23 +331,23 @@ function poco_init(App $a) { //if (isset($rr['paddress'])) // $entry['address']['streetAddress'] = $rr['paddress']; - if (isset($rr['plocation'])) { - $entry['address']['locality'] = $rr['plocation']; + if (isset($contact['plocation'])) { + $entry['address']['locality'] = $contact['plocation']; } - if (isset($rr['pregion'])) { - $entry['address']['region'] = $rr['pregion']; + if (isset($contact['pregion'])) { + $entry['address']['region'] = $contact['pregion']; } // See above //if (isset($rr['ppostalcode'])) // $entry['address']['postalCode'] = $rr['ppostalcode']; - if (isset($rr['pcountry'])) { - $entry['address']['country'] = $rr['pcountry']; + if (isset($contact['pcountry'])) { + $entry['address']['country'] = $contact['pcountry']; } } if ($fields_ret['contactType']) { - $entry['contactType'] = intval($rr['contact-type']); + $entry['contactType'] = intval($contact['contact-type']); } $ret['entry'][] = $entry; } @@ -357,7 +361,7 @@ function poco_init(App $a) { if ($format === 'xml') { header('Content-type: text/xml'); - echo replace_macros(get_markup_template('poco_xml.tpl'),array_xmlify(array('$response' => $ret))); + echo replace_macros(get_markup_template('poco_xml.tpl'), array_xmlify(array('$response' => $ret))); killme(); } if ($format === 'json') { diff --git a/mod/poke.php b/mod/poke.php index 5161129b31..83f3bf1c73 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -1,7 +1,6 @@ - get_theme_screenshot($theme), 'desc' => $desc, 'version' => $version, 'credits' => $credits)); } + killme(); } diff --git a/mod/probe.php b/mod/probe.php index 8c951a7fcf..abeccef446 100644 --- a/mod/probe.php +++ b/mod/probe.php @@ -1,31 +1,32 @@ t("Public access denied."), - "description" => t("Only logged in users are permitted to perform a probing."))); + http_status_exit(403, array("title" => t("Public access denied."), + "description" => t("Only logged in users are permitted to perform a probing."))); killme(); } $o .= '

Probe Diagnostic

'; $o .= '
'; - $o .= 'Lookup address: '; + $o .= 'Lookup address: '; $o .= '
'; $o .= '

'; - if(x($_GET,'addr')) { - + if (x($_GET, 'addr')) { $addr = trim($_GET['addr']); $res = probe_url($addr); $o .= '
';
-		$o .= str_replace("\n",'
',print_r($res,true)); + $o .= str_replace("\n", '
', print_r($res, true)); $o .= '
'; } + return $o; } diff --git a/mod/profile.php b/mod/profile.php index a83cb076f2..7a11e9bc6b 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -1,9 +1,10 @@ page,'aside')) @@ -149,6 +150,7 @@ function profile_content(App $a, $update = 0) { } $is_owner = ((local_user()) && (local_user() == $a->profile['profile_uid']) ? true : false); + $last_updated_key = "profile:" . $a->profile['profile_uid'] . ":" . local_user() . ":" . remote_user(); if ($a->profile['hidewall'] && (! $is_owner) && (! $remote_contact)) { notice( t('Access to this profile has been restricted.') . EOL); @@ -195,9 +197,9 @@ function profile_content(App $a, $update = 0) { 'visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'), 'profile_uid' => $a->profile['profile_uid'], 'acl_data' => ( $is_owner ? construct_acl_data($a, $a->user) : '' ), // For non-Javascript ACL selector - ); + ); - $o .= status_editor($a,$x); + $o .= status_editor($a,$x); } } @@ -209,6 +211,16 @@ function profile_content(App $a, $update = 0) { if ($update) { + $last_updated = (x($_SESSION['last_updated'], $last_updated_key) ? $_SESSION['last_updated'][$last_updated_key] : 0); + + // If the page user is the owner of the page we should query for unseen + // items. Otherwise use a timestamp of the last succesful update request. + if ($is_owner || !$last_updated) { + $sql_extra4 = " AND `item`.`unseen`"; + } else { + $gmupdate = gmdate("Y-m-d H:i:s", $last_updated); + $sql_extra4 = " AND `item`.`received` > '" . $gmupdate . "'"; + } $r = q("SELECT distinct(parent) AS `item_id`, `item`.`network` AS `item_network`, `item`.`created` FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` @@ -217,13 +229,18 @@ function profile_content(App $a, $update = 0) { (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "' OR item.verb = '" . ACTIVITY_ATTEND . "' OR item.verb = '" . ACTIVITY_ATTENDNO . "' OR item.verb = '" . ACTIVITY_ATTENDMAYBE . "') - AND `item`.`moderated` = 0 and `item`.`unseen` = 1 + AND `item`.`moderated` = 0 AND `item`.`wall` = 1 + $sql_extra4 $sql_extra ORDER BY `item`.`created` DESC", intval($a->profile['profile_uid']) ); + if (!dbm::is_result($r)) { + return ''; + } + } else { $sql_post_table = ""; @@ -283,11 +300,16 @@ function profile_content(App $a, $update = 0) { ORDER BY `thread`.`created` DESC $pager_sql", intval($a->profile['profile_uid']) ); + } $parents_arr = array(); $parents_str = ''; + // Set a time stamp for this page. We will make use of it when we + // search for new items (update routine) + $_SESSION['last_updated'][$last_updated_key] = time(); + if (dbm::is_result($r)) { foreach($r as $rr) $parents_arr[] = $rr['item_id']; diff --git a/mod/profile_photo.php b/mod/profile_photo.php index f9bf60cf54..b2bf6e3b15 100644 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -1,5 +1,7 @@ user['nickname']); - } - function profile_photo_post(App $a) { if (! local_user()) { diff --git a/mod/profiles.php b/mod/profiles.php index bd57f106d7..7d2bceec1a 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -1,6 +1,9 @@ page['htmlhead'] .= replace_macros(get_markup_template('profed_head.tpl'), array( diff --git a/mod/profperm.php b/mod/profperm.php index a414d8947b..c67a0202e0 100644 --- a/mod/profperm.php +++ b/mod/profperm.php @@ -1,5 +1,7 @@ +use Friendica\App; + define('PROXY_DEFAULT_TIME', 86400); // 1 Day define('PROXY_SIZE_MICRO', 'micro'); diff --git a/mod/pubsub.php b/mod/pubsub.php index 2ba1958a25..ba5e05b0ee 100644 --- a/mod/pubsub.php +++ b/mod/pubsub.php @@ -1,5 +1,7 @@ diff --git a/mod/qsearch.php b/mod/qsearch.php index 8512bea51e..ba62fce0d7 100644 --- a/mod/qsearch.php +++ b/mod/qsearch.php @@ -1,5 +1,7 @@ argc == 2) && ($a->argv[1] === 'public')) { + if (($a->argc == 2) && ($a->argv[1] === 'public')) { $public = true; - } - else { + } else { - if($a->argc != 3 || $a->argv[1] !== 'users') + if ($a->argc != 3 || $a->argv[1] !== 'users') { http_status_exit(500); - + } $guid = $a->argv[2]; - $r = q("SELECT * FROM `user` WHERE `guid` = '%s' AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1", - dbesc($guid) - ); - if (! dbm::is_result($r)) { + $importer = dba::select('user', array(), array('guid' => $guid, 'account_expired' => false, 'account_removed' => false), array('limit' => 1)); + if (!dbm::is_result($importer)) { http_status_exit(500); } - - $importer = $r[0]; } // It is an application/x-www-form-urlencoded @@ -47,29 +40,34 @@ function receive_post(App $a) { $xml = urldecode($_POST['xml']); - logger('mod-diaspora: new salmon ' . $xml, LOGGER_DATA); - - if(! $xml) - http_status_exit(500); - - logger('mod-diaspora: message is okay', LOGGER_DEBUG); + if (!$xml) { + $postdata = file_get_contents("php://input"); + if ($postdata == '') { + http_status_exit(500); + } - $msg = Diaspora::decode($importer,$xml); + logger('mod-diaspora: message is in the new format', LOGGER_DEBUG); + $msg = Diaspora::decode_raw($importer, $postdata); + } else { + logger('mod-diaspora: message is in the old format', LOGGER_DEBUG); + $msg = Diaspora::decode($importer, $xml); + } logger('mod-diaspora: decoded', LOGGER_DEBUG); - logger('mod-diaspora: decoded msg: ' . print_r($msg,true), LOGGER_DATA); + logger('mod-diaspora: decoded msg: ' . print_r($msg, true), LOGGER_DATA); - if(! is_array($msg)) + if (!is_array($msg)) { http_status_exit(500); + } logger('mod-diaspora: dispatching', LOGGER_DEBUG); $ret = 0; - if($public) { + if ($public) { Diaspora::dispatch_public($msg); } else { - $ret = Diaspora::dispatch($importer,$msg); + $ret = Diaspora::dispatch($importer, $msg); } http_status_exit(($ret) ? $ret : 200); diff --git a/mod/redir.php b/mod/redir.php index 12f53900a7..366c398867 100644 --- a/mod/redir.php +++ b/mod/redir.php @@ -1,5 +1,7 @@ $register[0]['uid'])); + dba::delete('register', array('hash' => $register[0]['hash'])); - $r = q("DELETE FROM `register` WHERE `hash` = '%s'", - dbesc($register[0]['hash']) - ); - notice( sprintf(t('Registration revoked for %s'), $user[0]['username']) . EOL); + notice(sprintf(t('Registration revoked for %s'), $user[0]['username']) . EOL); return true; } diff --git a/mod/removeme.php b/mod/removeme.php index 40033624d8..639c9be9f4 100644 --- a/mod/removeme.php +++ b/mod/removeme.php @@ -1,5 +1,7 @@ - - - Friendica - http://friendica.com/ - - - - http://status.net/wiki/TwitterCompatibleAPI - false - - - - - - '; -die(); + + + Friendica + http://friendica.com/ + + + + http://status.net/wiki/TwitterCompatibleAPI + false + + + + +'; + + killme(); } \ No newline at end of file diff --git a/mod/salmon.php b/mod/salmon.php index 10b1046b02..f42e05deaa 100644 --- a/mod/salmon.php +++ b/mod/salmon.php @@ -1,5 +1,7 @@ argc > 1) ? intval($a->argv[1]) : 0); diff --git a/mod/smilies.php b/mod/smilies.php index 4d8ab6bcaa..289ad887f9 100644 --- a/mod/smilies.php +++ b/mod/smilies.php @@ -3,19 +3,19 @@ /** * @file mod/smilies.php */ +use Friendica\App; require_once("include/Smilies.php"); function smilies_content(App $a) { - if ($a->argv[1]==="json"){ + if ($a->argv[1] === "json") { $tmp = Smilies::get_list(); $results = array(); - for($i = 0; $i < count($tmp['texts']); $i++) { + for ($i = 0; $i < count($tmp['texts']); $i++) { $results[] = array('text' => $tmp['texts'][$i], 'icon' => $tmp['icons'][$i]); } json_return_and_die($results); - } - else { - return Smilies::replace('',true); + } else { + return Smilies::replace('', true); } } diff --git a/mod/starred.php b/mod/starred.php index 46d3fcff66..e1b38cfc4c 100644 --- a/mod/starred.php +++ b/mod/starred.php @@ -1,5 +1,6 @@ $a->config["sitename"], - "network" => FRIENDICA_PLATFORM, - "version" => FRIENDICA_VERSION."-".DB_UPDATE_VERSION, - "registrations_open" => ($a->config['register_policy'] != 0), - "total_users" => get_config('nodeinfo','total_users'), - "active_users_halfyear" => get_config('nodeinfo','active_users_halfyear'), - "active_users_monthly" => get_config('nodeinfo','active_users_monthly'), - "local_posts" => get_config('nodeinfo','local_posts') - ); + "name" => $a->config["sitename"], + "network" => FRIENDICA_PLATFORM, + "version" => FRIENDICA_VERSION . "-" . DB_UPDATE_VERSION, + "registrations_open" => ($a->config['register_policy'] != 0), + "total_users" => get_config('nodeinfo', 'total_users'), + "active_users_halfyear" => get_config('nodeinfo', 'active_users_halfyear'), + "active_users_monthly" => get_config('nodeinfo', 'active_users_monthly'), + "local_posts" => get_config('nodeinfo', 'local_posts') + ); $statistics["services"] = array(); $statistics["services"]["appnet"] = plugin_enabled("appnet"); @@ -53,7 +56,7 @@ function statistics_json_init(App $a) { $statistics["wordpress"] = $statistics["services"]["wordpress"]; header("Content-Type: application/json"); - echo json_encode($statistics, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); - logger("statistics_init: printed ".print_r($statistics, true), LOGGER_DATA); + echo json_encode($statistics, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + logger("statistics_init: printed " . print_r($statistics, true), LOGGER_DATA); killme(); } diff --git a/mod/subthread.php b/mod/subthread.php index 646a4230c5..0745fc0eef 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -1,10 +1,11 @@ tab where wanted function uexport_content(App $a) { if ($a->argc > 1) { header("Content-type: application/json"); - header('Content-Disposition: attachment; filename="'.$a->user['nickname'].'.'.$a->argv[1].'"'); - switch($a->argv[1]) { + header('Content-Disposition: attachment; filename="' . $a->user['nickname'] . '.' . $a->argv[1] . '"'); + switch ($a->argv[1]) { case "backup": uexport_all($a); killme(); @@ -51,9 +52,9 @@ function _uexport_multirow($query) { $result = array(); $r = q($query); if (dbm::is_result($r)) { - foreach($r as $rr){ + foreach ($r as $rr) { $p = array(); - foreach($rr as $k => $v) { + foreach ($rr as $k => $v) { $p[$k] = $v; } $result[] = $p; @@ -66,8 +67,8 @@ function _uexport_row($query) { $result = array(); $r = q($query); if (dbm::is_result($r)) { - foreach($r as $rr) { - foreach($rr as $k => $v) { + foreach ($r as $rr) { + foreach ($rr as $k => $v) { $result[$k] = $v; } } @@ -75,39 +76,38 @@ function _uexport_row($query) { return $result; } - -function uexport_account($a){ +function uexport_account($a) { $user = _uexport_row( - sprintf( "SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval(local_user()) ) + sprintf("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval(local_user())) ); $contact = _uexport_multirow( - sprintf( "SELECT * FROM `contact` WHERE `uid` = %d ",intval(local_user()) ) + sprintf("SELECT * FROM `contact` WHERE `uid` = %d ", intval(local_user())) ); - $profile =_uexport_multirow( - sprintf( "SELECT * FROM `profile` WHERE `uid` = %d ", intval(local_user()) ) + $profile = _uexport_multirow( + sprintf("SELECT * FROM `profile` WHERE `uid` = %d ", intval(local_user())) ); $photo = _uexport_multirow( - sprintf( "SELECT * FROM `photo` WHERE uid = %d AND profile = 1", intval(local_user()) ) + sprintf("SELECT * FROM `photo` WHERE uid = %d AND profile = 1", intval(local_user())) ); foreach ($photo as &$p) { $p['data'] = bin2hex($p['data']); } $pconfig = _uexport_multirow( - sprintf( "SELECT * FROM `pconfig` WHERE uid = %d",intval(local_user()) ) + sprintf("SELECT * FROM `pconfig` WHERE uid = %d", intval(local_user())) ); $group = _uexport_multirow( - sprintf( "SELECT * FROM `group` WHERE uid = %d",intval(local_user()) ) + sprintf("SELECT * FROM `group` WHERE uid = %d", intval(local_user())) ); $group_member = _uexport_multirow( - sprintf( "SELECT * FROM `group_member` WHERE uid = %d",intval(local_user()) ) + sprintf("SELECT * FROM `group_member` WHERE uid = %d", intval(local_user())) ); $output = array( @@ -150,13 +150,8 @@ function uexport_all(App $a) { intval($x), intval(500) ); - /*if (dbm::is_result($r)) { - foreach($r as $rr) - foreach($rr as $k => $v) - $item[][$k] = $v; - }*/ $output = array('item' => $r); - echo json_encode($output)."\n"; + echo json_encode($output) . "\n"; } } diff --git a/mod/uimport.php b/mod/uimport.php index 336ec1c2dd..b9bde23880 100644 --- a/mod/uimport.php +++ b/mod/uimport.php @@ -1,75 +1,77 @@ -config['register_policy']) { - case REGISTER_OPEN: - $blocked = 0; - $verified = 1; - break; - - case REGISTER_APPROVE: - $blocked = 1; - $verified = 0; - break; - - default: - case REGISTER_CLOSED: - if ((! x($_SESSION,'authenticated') && (! x($_SESSION,'administrator')))) { - notice( t('Permission denied.') . EOL ); - return; - } - $blocked = 1; - $verified = 0; - break; - } - - if (x($_FILES,'accountfile')){ - /// @TODO Pass $blocked / $verified, send email to admin on REGISTER_APPROVE - import_account($a, $_FILES['accountfile']); - return; - } -} - -function uimport_content(App $a) { - - if ((! local_user()) && ($a->config['register_policy'] == REGISTER_CLOSED)) { - notice("Permission denied." . EOL); - return; - } - - $max_dailies = intval(get_config('system','max_daily_registrations')); - if ($max_dailies) { - $r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day"); - if ($r && $r[0]['total'] >= $max_dailies) { - logger('max daily registrations exceeded.'); - notice( t('This site has exceeded the number of allowed daily account registrations. Please try again tomorrow.') . EOL); - return; - } - } - - - if (x($_SESSION,'theme')) { - unset($_SESSION['theme']); - } - if (x($_SESSION,'mobile-theme')) { - unset($_SESSION['mobile-theme']); - } - - $tpl = get_markup_template("uimport.tpl"); - return replace_macros($tpl, array( - '$regbutt' => t('Import'), - '$import' => array( - 'title' => t("Move account"), - 'intro' => t("You can import an account from another Friendica server."), - 'instruct' => t("You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here."), - 'warn' => t("This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"), - 'field' => array('accountfile', t('Account file'),'', t('To export your account, go to "Settings->Export your personal data" and select "Export account"')), - ), - )); -} +config['register_policy']) { + case REGISTER_OPEN: + $blocked = 0; + $verified = 1; + break; + + case REGISTER_APPROVE: + $blocked = 1; + $verified = 0; + break; + + default: + case REGISTER_CLOSED: + if ((!x($_SESSION, 'authenticated') && (!x($_SESSION, 'administrator')))) { + notice(t('Permission denied.') . EOL); + return; + } + $blocked = 1; + $verified = 0; + break; + } + + if (x($_FILES, 'accountfile')) { + /// @TODO Pass $blocked / $verified, send email to admin on REGISTER_APPROVE + import_account($a, $_FILES['accountfile']); + return; + } +} + +function uimport_content(App $a) { + + if ((!local_user()) && ($a->config['register_policy'] == REGISTER_CLOSED)) { + notice("Permission denied." . EOL); + return; + } + + $max_dailies = intval(get_config('system', 'max_daily_registrations')); + if ($max_dailies) { + $r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day"); + if ($r && $r[0]['total'] >= $max_dailies) { + logger('max daily registrations exceeded.'); + notice(t('This site has exceeded the number of allowed daily account registrations. Please try again tomorrow.') . EOL); + return; + } + } + + + if (x($_SESSION, 'theme')) { + unset($_SESSION['theme']); + } + if (x($_SESSION, 'mobile-theme')) { + unset($_SESSION['mobile-theme']); + } + + $tpl = get_markup_template("uimport.tpl"); + return replace_macros($tpl, array( + '$regbutt' => t('Import'), + '$import' => array( + 'title' => t("Move account"), + 'intro' => t("You can import an account from another Friendica server."), + 'instruct' => t("You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here."), + 'warn' => t("This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"), + 'field' => array('accountfile', t('Account file'), '', t('To export your account, go to "Settings->Export your personal data" and select "Export account"')), + ), + )); +} diff --git a/mod/update_community.php b/mod/update_community.php index 9a39489dcf..f0e96af48c 100644 --- a/mod/update_community.php +++ b/mod/update_community.php @@ -2,6 +2,8 @@ // See update_profile.php for documentation +use Friendica\App; + require_once("mod/community.php"); function update_community_content(App $a) { diff --git a/mod/update_display.php b/mod/update_display.php index 86f4db8259..b8538a256b 100644 --- a/mod/update_display.php +++ b/mod/update_display.php @@ -2,6 +2,8 @@ // See update_profile.php for documentation +use Friendica\App; + require_once("mod/display.php"); require_once("include/group.php"); diff --git a/mod/update_network.php b/mod/update_network.php index 869973ace4..42172486d8 100644 --- a/mod/update_network.php +++ b/mod/update_network.php @@ -2,6 +2,8 @@ // See update_profile.php for documentation +use Friendica\App; + require_once("mod/network.php"); require_once("include/group.php"); diff --git a/mod/update_notes.php b/mod/update_notes.php index d27cc4ca96..9fc8861551 100644 --- a/mod/update_notes.php +++ b/mod/update_notes.php @@ -5,6 +5,8 @@ * Purpose: AJAX synchronisation of notes page */ +use Friendica\App; + require_once("mod/notes.php"); function update_notes_content(App $a) { diff --git a/mod/update_profile.php b/mod/update_profile.php index b77a9cdcfc..5b15f06d30 100644 --- a/mod/update_profile.php +++ b/mod/update_profile.php @@ -5,6 +5,8 @@ * Purpose: AJAX synchronisation of profile page */ +use Friendica\App; + require_once("mod/profile.php"); function update_profile_content(App $a) { diff --git a/mod/videos.php b/mod/videos.php index 269d537854..2ee73c211d 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -1,11 +1,13 @@ argc > 1) diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 5912f6cc77..f7bf912fdf 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -1,4 +1,7 @@ $name), array('limit' => 1)); if (! dbm::is_result($r)) { killme(); } - $salmon_key = salmon_key($r[0]['spubkey']); + $salmon_key = salmon_key($r['spubkey']); header('Access-Control-Allow-Origin: *'); header("Content-type: text/xml"); @@ -33,19 +33,19 @@ function xrd_init(App $a) { $tpl = get_markup_template('xrd_diaspora.tpl'); $dspr = replace_macros($tpl,array( '$baseurl' => App::get_baseurl(), - '$dspr_guid' => $r[0]['guid'], - '$dspr_key' => base64_encode(pemtorsa($r[0]['pubkey'])) + '$dspr_guid' => $r['guid'], + '$dspr_key' => base64_encode(pemtorsa($r['pubkey'])) )); $tpl = get_markup_template('xrd_person.tpl'); - $profile_url = App::get_baseurl().'/profile/'.$r[0]['nickname']; + $profile_url = App::get_baseurl().'/profile/'.$r['nickname']; if ($acct) { $alias = $profile_url; } else { - $alias = 'acct:'.$r[0]['nickname'].'@'.$a->get_hostname(); + $alias = 'acct:'.$r['nickname'].'@'.$a->get_hostname(); if ($a->get_path()) { $alias .= '/'.$a->get_path(); @@ -53,25 +53,25 @@ function xrd_init(App $a) { } $o = replace_macros($tpl, array( - '$nick' => $r[0]['nickname'], + '$nick' => $r['nickname'], '$accturi' => $uri, '$alias' => $alias, '$profile_url' => $profile_url, - '$hcard_url' => App::get_baseurl() . '/hcard/' . $r[0]['nickname'], - '$atom' => App::get_baseurl() . '/dfrn_poll/' . $r[0]['nickname'], - '$zot_post' => App::get_baseurl() . '/post/' . $r[0]['nickname'], - '$poco_url' => App::get_baseurl() . '/poco/' . $r[0]['nickname'], - '$photo' => App::get_baseurl() . '/photo/profile/' . $r[0]['uid'] . '.jpg', + '$hcard_url' => App::get_baseurl() . '/hcard/' . $r['nickname'], + '$atom' => App::get_baseurl() . '/dfrn_poll/' . $r['nickname'], + '$zot_post' => App::get_baseurl() . '/post/' . $r['nickname'], + '$poco_url' => App::get_baseurl() . '/poco/' . $r['nickname'], + '$photo' => App::get_baseurl() . '/photo/profile/' . $r['uid'] . '.jpg', '$dspr' => $dspr, - '$salmon' => App::get_baseurl() . '/salmon/' . $r[0]['nickname'], - '$salmen' => App::get_baseurl() . '/salmon/' . $r[0]['nickname'] . '/mention', + '$salmon' => App::get_baseurl() . '/salmon/' . $r['nickname'], + '$salmen' => App::get_baseurl() . '/salmon/' . $r['nickname'] . '/mention', '$subscribe' => App::get_baseurl() . '/follow?url={uri}', '$modexp' => 'data:application/magic-public-key,' . $salmon_key, - '$bigkey' => salmon_key($r[0]['pubkey']), + '$bigkey' => salmon_key($r['pubkey']), )); - $arr = array('user' => $r[0], 'xml' => $o); + $arr = array('user' => $r, 'xml' => $o); call_hooks('personal_xrd', $arr); echo $arr['xml']; diff --git a/object/BaseObject.php b/object/BaseObject.php index 2666dc1de5..15c7d8dc65 100644 --- a/object/BaseObject.php +++ b/object/BaseObject.php @@ -14,7 +14,7 @@ class BaseObject { /** * Get the app - * + * * Same as get_app from boot.php */ public function get_app() { @@ -33,4 +33,3 @@ class BaseObject { self::$app = $app; } } -?> diff --git a/object/Conversation.php b/object/Conversation.php index eb5b3b9b48..f03b3b1c1b 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -164,4 +164,3 @@ class Conversation extends BaseObject { return false; } } -?> diff --git a/object/Item.php b/object/Item.php index b693520b93..9e8b4738e2 100644 --- a/object/Item.php +++ b/object/Item.php @@ -112,7 +112,7 @@ class Item extends BaseObject { $conv = $this->get_conversation(); - $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) + $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') : false); @@ -242,17 +242,14 @@ class Item extends BaseObject { 'classundo' => (($item['starred']) ? "" : "hidden"), 'starred' => t('starred'), ); - $r = q("SELECT `ignored` FROM `thread` WHERE `uid` = %d AND `iid` = %d LIMIT 1", - intval($item['uid']), - intval($item['id']) - ); + $r = dba::select('thread', array('ignored'), array('uid' => $item['uid'], 'iid' => $item['id']), array('limit' => 1)); if (dbm::is_result($r)) { $ignore = array( 'do' => t("ignore thread"), 'undo' => t("unignore thread"), 'toggle' => t("toggle ignore status"), - 'classdo' => (($r[0]['ignored']) ? "hidden" : ""), - 'classundo' => (($r[0]['ignored']) ? "" : "hidden"), + 'classdo' => (($r['ignored']) ? "hidden" : ""), + 'classundo' => (($r['ignored']) ? "" : "hidden"), 'ignored' => t('ignored'), ); } @@ -754,20 +751,20 @@ class Item extends BaseObject { if ((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { // The author url doesn't match the owner (typically the contact) - // and also doesn't match the contact alias. - // The name match is a hack to catch several weird cases where URLs are + // and also doesn't match the contact alias. + // The name match is a hack to catch several weird cases where URLs are // all over the park. It can be tricked, but this prevents you from // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn - // well that it's the same Bob Smith. + // well that it's the same Bob Smith. - // But it could be somebody else with the same name. It just isn't highly likely. + // But it could be somebody else with the same name. It just isn't highly likely. $this->owner_photo = $this->get_data_value('owner-avatar'); $this->owner_name = $this->get_data_value('owner-name'); $this->wall_to_wall = true; // If it is our contact, use a friendly redirect link - if ((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url'))) + if ((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url'))) && ($this->get_data_value('network') === NETWORK_DFRN)) { $this->owner_url = $this->get_redirect_url(); } else { @@ -807,5 +804,3 @@ class Item extends BaseObject { } } -/// @TODO These are discouraged and should be removed: -?> diff --git a/src/App.php b/src/App.php new file mode 100644 index 0000000000..aaaf6b2451 --- /dev/null +++ b/src/App.php @@ -0,0 +1,987 @@ + '', + 'videowidth' => 425, + 'videoheight' => 350, + 'force_max_items' => 0, + 'thread_allow' => true, + 'stylesheet' => '', + 'template_engine' => 'smarty3', + ); + + /** + * @brief An array of registered template engines ('name'=>'class name') + */ + public $template_engines = array(); + + /** + * @brief An array of instanced template engines ('name'=>'instance') + */ + public $template_engine_instance = array(); + public $process_id; + private $ldelim = array( + 'internal' => '', + 'smarty3' => '{{' + ); + private $rdelim = array( + 'internal' => '', + 'smarty3' => '}}' + ); + private $scheme; + private $hostname; + private $db; + private $curl_code; + private $curl_content_type; + private $curl_headers; + private $cached_profile_image; + private $cached_profile_picdate; + private static $a; + + /** + * @brief App constructor. + * + * @param string $basepath Path to the app base folder + */ + function __construct($basepath) { + + global $default_timezone; + + $hostname = ''; + + if (file_exists('.htpreconfig.php')) { + include '.htpreconfig.php'; + } + + $this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC'); + + date_default_timezone_set($this->timezone); + + $this->performance['start'] = microtime(true); + $this->performance['database'] = 0; + $this->performance['database_write'] = 0; + $this->performance['network'] = 0; + $this->performance['file'] = 0; + $this->performance['rendering'] = 0; + $this->performance['parser'] = 0; + $this->performance['marktime'] = 0; + $this->performance['markstart'] = microtime(true); + + $this->callstack['database'] = array(); + $this->callstack['database_write'] = array(); + $this->callstack['network'] = array(); + $this->callstack['file'] = array(); + $this->callstack['rendering'] = array(); + $this->callstack['parser'] = array(); + + $this->config = array(); + $this->page = array(); + $this->pager = array(); + + $this->query_string = ''; + + $this->process_id = uniqid('log', true); + + startup(); + + $this->scheme = 'http'; + + if ((x($_SERVER, 'HTTPS') && $_SERVER['HTTPS']) || + (x($_SERVER, 'HTTP_FORWARDED') && preg_match('/proto=https/', $_SERVER['HTTP_FORWARDED'])) || + (x($_SERVER, 'HTTP_X_FORWARDED_PROTO') && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || + (x($_SERVER, 'HTTP_X_FORWARDED_SSL') && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') || + (x($_SERVER, 'FRONT_END_HTTPS') && $_SERVER['FRONT_END_HTTPS'] == 'on') || + (x($_SERVER, 'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) // XXX: reasonable assumption, but isn't this hardcoding too much? + ) { + $this->scheme = 'https'; + } + + if (x($_SERVER, 'SERVER_NAME')) { + $this->hostname = $_SERVER['SERVER_NAME']; + + if (x($_SERVER, 'SERVER_PORT') && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) { + $this->hostname .= ':' . $_SERVER['SERVER_PORT']; + } + /* + * Figure out if we are running at the top of a domain + * or in a sub-directory and adjust accordingly + */ + + /// @TODO This kind of escaping breaks syntax-highlightning on CoolEdit (Midnight Commander) + $path = trim(dirname($_SERVER['SCRIPT_NAME']), '/\\'); + if (isset($path) && strlen($path) && ($path != $this->path)) { + $this->path = $path; + } + } + + if ($hostname != '') { + $this->hostname = $hostname; + } + + if (! static::directory_usable($basepath, false)) { + throw new Exception('Basepath ' . $basepath . ' isn\'t usable.'); + } + + $this->basepath = rtrim($basepath, DIRECTORY_SEPARATOR); + + set_include_path( + get_include_path() . PATH_SEPARATOR + . $this->basepath . DIRECTORY_SEPARATOR . 'include' . PATH_SEPARATOR + . $this->basepath . DIRECTORY_SEPARATOR . 'library' . PATH_SEPARATOR + . $this->basepath . DIRECTORY_SEPARATOR . 'library/langdet' . PATH_SEPARATOR + . $this->basepath); + + + if (is_array($_SERVER['argv']) && $_SERVER['argc'] > 1 && substr(end($_SERVER['argv']), 0, 4) == 'http') { + $this->set_baseurl(array_pop($_SERVER['argv'])); + $_SERVER['argc'] --; + } + + if ((x($_SERVER, 'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 9) === 'pagename=') { + $this->query_string = substr($_SERVER['QUERY_STRING'], 9); + + // removing trailing / - maybe a nginx problem + $this->query_string = ltrim($this->query_string, '/'); + } elseif ((x($_SERVER, 'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 2) === 'q=') { + $this->query_string = substr($_SERVER['QUERY_STRING'], 2); + + // removing trailing / - maybe a nginx problem + $this->query_string = ltrim($this->query_string, '/'); + } + + if (x($_GET, 'pagename')) { + $this->cmd = trim($_GET['pagename'], '/\\'); + } elseif (x($_GET, 'q')) { + $this->cmd = trim($_GET['q'], '/\\'); + } + + // fix query_string + $this->query_string = str_replace($this->cmd . '&', $this->cmd . '?', $this->query_string); + + // unix style "homedir" + if (substr($this->cmd, 0, 1) === '~') { + $this->cmd = 'profile/' . substr($this->cmd, 1); + } + + // Diaspora style profile url + if (substr($this->cmd, 0, 2) === 'u/') { + $this->cmd = 'profile/' . substr($this->cmd, 2); + } + + /* + * Break the URL path into C style argc/argv style arguments for our + * modules. Given "http://example.com/module/arg1/arg2", $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". + */ + + $this->argv = explode('/', $this->cmd); + $this->argc = count($this->argv); + if ((array_key_exists('0', $this->argv)) && strlen($this->argv[0])) { + $this->module = str_replace('.', '_', $this->argv[0]); + $this->module = str_replace('-', '_', $this->module); + } else { + $this->argc = 1; + $this->argv = array('home'); + $this->module = 'home'; + } + + // See if there is any page number information, and initialise pagination + $this->pager['page'] = ((x($_GET, 'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1); + $this->pager['itemspage'] = 50; + $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; + + if ($this->pager['start'] < 0) { + $this->pager['start'] = 0; + } + $this->pager['total'] = 0; + + // Detect mobile devices + $mobile_detect = new MobileDetect(); + $this->is_mobile = $mobile_detect->isMobile(); + $this->is_tablet = $mobile_detect->isTablet(); + + // Friendica-Client + $this->is_friendica_app = ($_SERVER['HTTP_USER_AGENT'] == 'Apache-HttpClient/UNAVAILABLE (java 1.4)'); + + // Register template engines + $dc = get_declared_classes(); + foreach ($dc as $k) { + if (in_array('ITemplateEngine', class_implements($k))) { + $this->register_template_engine($k); + } + } + + self::$a = $this; + } + + /** + * @brief Returns the base filesystem path of the App + * + * It first checks for the internal variable, then for DOCUMENT_ROOT and + * finally for PWD + * + * @return string + */ + public static function get_basepath() { + if (isset($this)) { + $basepath = $this->basepath; + } + + if (! $basepath) { + $basepath = Config::get('system', 'basepath'); + } + + if (! $basepath && x($_SERVER, 'DOCUMENT_ROOT')) { + $basepath = $_SERVER['DOCUMENT_ROOT']; + } + + if (! $basepath && x($_SERVER, 'PWD')) { + $basepath = $_SERVER['PWD']; + } + + return $basepath; + } + + function get_scheme() { + return $this->scheme; + } + + /** + * @brief Retrieves the Friendica instance base URL + * + * This function assembles the base URL from multiple parts: + * - Protocol is determined either by the request or a combination of + * system.ssl_policy and the $ssl parameter. + * - Host name is determined either by system.hostname or inferred from request + * - Path is inferred from SCRIPT_NAME + * + * Note: $ssl parameter value doesn't directly correlate with the resulting protocol + * + * @param bool $ssl Whether to append http or https under SSL_POLICY_SELFSIGN + * @return string Friendica server base URL + */ + function get_baseurl($ssl = false) { + // Is the function called statically? + if (!(isset($this) && get_class($this) == __CLASS__)) { + return self::$a->get_baseurl($ssl); + } + + $scheme = $this->scheme; + + if (Config::get('system', 'ssl_policy') == SSL_POLICY_FULL) { + $scheme = 'https'; + } + + // Basically, we have $ssl = true on any links which can only be seen by a logged in user + // (and also the login link). Anything seen by an outsider will have it turned off. + + if (Config::get('system', 'ssl_policy') == SSL_POLICY_SELFSIGN) { + if ($ssl) { + $scheme = 'https'; + } else { + $scheme = 'http'; + } + } + + if (Config::get('config', 'hostname') != '') { + $this->hostname = Config::get('config', 'hostname'); + } + + return $scheme . '://' . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' ); + } + + /** + * @brief Initializes the baseurl components + * + * Clears the baseurl cache to prevent inconstistencies + * + * @param string $url + */ + function set_baseurl($url) { + $parsed = @parse_url($url); + + if ($parsed) { + $this->scheme = $parsed['scheme']; + + $hostname = $parsed['host']; + if (x($parsed, 'port')) { + $hostname .= ':' . $parsed['port']; + } + if (x($parsed, 'path')) { + $this->path = trim($parsed['path'], '\\/'); + } + + if (file_exists('.htpreconfig.php')) { + include '.htpreconfig.php'; + } + + if (Config::get('config', 'hostname') != '') { + $this->hostname = Config::get('config', 'hostname'); + } + + if (!isset($this->hostname) OR ( $this->hostname == '')) { + $this->hostname = $hostname; + } + } + } + + function get_hostname() { + if (Config::get('config', 'hostname') != '') { + $this->hostname = Config::get('config', 'hostname'); + } + + return $this->hostname; + } + + function set_hostname($h) { + $this->hostname = $h; + } + + function set_path($p) { + $this->path = trim(trim($p), '/'); + } + + function get_path() { + return $this->path; + } + + function set_pager_total($n) { + $this->pager['total'] = intval($n); + } + + function set_pager_itemspage($n) { + $this->pager['itemspage'] = ((intval($n) > 0) ? intval($n) : 0); + $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; + } + + function set_pager_page($n) { + $this->pager['page'] = $n; + $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; + } + + function init_pagehead() { + $interval = ((local_user()) ? PConfig::get(local_user(), 'system', 'update_interval') : 40000); + + // If the update is 'deactivated' set it to the highest integer number (~24 days) + if ($interval < 0) { + $interval = 2147483647; + } + + if ($interval < 10000) { + $interval = 40000; + } + + // compose the page title from the sitename and the + // current module called + if (!$this->module == '') { + $this->page['title'] = $this->config['sitename'] . ' (' . $this->module . ')'; + } else { + $this->page['title'] = $this->config['sitename']; + } + + /* put the head template at the beginning of page['htmlhead'] + * since the code added by the modules frequently depends on it + * being first + */ + if (!isset($this->page['htmlhead'])) { + $this->page['htmlhead'] = ''; + } + + // If we're using Smarty, then doing replace_macros() will replace + // any unrecognized variables with a blank string. Since we delay + // replacing $stylesheet until later, we need to replace it now + // with another variable name + if ($this->theme['template_engine'] === 'smarty3') { + $stylesheet = $this->get_template_ldelim('smarty3') . '$stylesheet' . $this->get_template_rdelim('smarty3'); + } else { + $stylesheet = '$stylesheet'; + } + + $shortcut_icon = Config::get('system', 'shortcut_icon'); + if ($shortcut_icon == '') { + $shortcut_icon = 'images/friendica-32.png'; + } + + $touch_icon = Config::get('system', 'touch_icon'); + if ($touch_icon == '') { + $touch_icon = 'images/friendica-128.png'; + } + + // get data wich is needed for infinite scroll on the network page + $invinite_scroll = infinite_scroll_data($this->module); + + $tpl = get_markup_template('head.tpl'); + $this->page['htmlhead'] = replace_macros($tpl, array( + '$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!! + '$local_user' => local_user(), + '$generator' => 'Friendica' . ' ' . FRIENDICA_VERSION, + '$delitem' => t('Delete this item?'), + '$showmore' => t('show more'), + '$showfewer' => t('show fewer'), + '$update_interval' => $interval, + '$shortcut_icon' => $shortcut_icon, + '$touch_icon' => $touch_icon, + '$stylesheet' => $stylesheet, + '$infinite_scroll' => $invinite_scroll, + )) . $this->page['htmlhead']; + } + + function init_page_end() { + if (!isset($this->page['end'])) { + $this->page['end'] = ''; + } + $tpl = get_markup_template('end.tpl'); + $this->page['end'] = replace_macros($tpl, array( + '$baseurl' => $this->get_baseurl() // FIXME for z_path!!!! + )) . $this->page['end']; + } + + function set_curl_code($code) { + $this->curl_code = $code; + } + + function get_curl_code() { + return $this->curl_code; + } + + function set_curl_content_type($content_type) { + $this->curl_content_type = $content_type; + } + + function get_curl_content_type() { + return $this->curl_content_type; + } + + function set_curl_headers($headers) { + $this->curl_headers = $headers; + } + + function get_curl_headers() { + return $this->curl_headers; + } + + function get_cached_avatar_image($avatar_image) { + return $avatar_image; + } + + /** + * @brief Removes the baseurl from an url. This avoids some mixed content problems. + * + * @param string $orig_url + * + * @return string The cleaned url + */ + function remove_baseurl($orig_url) { + + // Is the function called statically? + if (!(isset($this) && get_class($this) == __CLASS__)) { + return self::$a->remove_baseurl($orig_url); + } + + // Remove the hostname from the url if it is an internal link + $nurl = normalise_link($orig_url); + $base = normalise_link($this->get_baseurl()); + $url = str_replace($base . '/', '', $nurl); + + // if it is an external link return the orignal value + if ($url == normalise_link($orig_url)) { + return $orig_url; + } else { + return $url; + } + } + + /** + * @brief Register template engine class + * + * If $name is '', is used class static property $class::$name + * + * @param string $class + * @param string $name + */ + function register_template_engine($class, $name = '') { + /// @TODO Really === and not just == ? + if ($name === '') { + $v = get_class_vars($class); + if (x($v, 'name')) + $name = $v['name']; + } + if ($name === '') { + echo "template engine $class cannot be registered without a name.\n"; + killme(); + } + $this->template_engines[$name] = $class; + } + + /** + * @brief Return template engine instance. + * + * If $name is not defined, return engine defined by theme, + * or default + * + * @param strin $name Template engine name + * @return object Template Engine instance + */ + function template_engine($name = '') { + /// @TODO really type-check included? + if ($name !== '') { + $template_engine = $name; + } else { + $template_engine = 'smarty3'; + if (x($this->theme, 'template_engine')) { + $template_engine = $this->theme['template_engine']; + } + } + + if (isset($this->template_engines[$template_engine])) { + if (isset($this->template_engine_instance[$template_engine])) { + return $this->template_engine_instance[$template_engine]; + } else { + $class = $this->template_engines[$template_engine]; + $obj = new $class; + $this->template_engine_instance[$template_engine] = $obj; + return $obj; + } + } + + echo "template engine $template_engine is not registered!\n"; + killme(); + } + + /** + * @brief Returns the active template engine. + * + * @return string + */ + function get_template_engine() { + return $this->theme['template_engine']; + } + + function set_template_engine($engine = 'smarty3') { + $this->theme['template_engine'] = $engine; + } + + function get_template_ldelim($engine = 'smarty3') { + return $this->ldelim[$engine]; + } + + function get_template_rdelim($engine = 'smarty3') { + return $this->rdelim[$engine]; + } + + function save_timestamp($stamp, $value) { + if (!isset($this->config['system']['profiler']) || !$this->config['system']['profiler']) { + return; + } + + $duration = (float) (microtime(true) - $stamp); + + if (!isset($this->performance[$value])) { + // Prevent ugly E_NOTICE + $this->performance[$value] = 0; + } + + $this->performance[$value] += (float) $duration; + $this->performance['marktime'] += (float) $duration; + + $callstack = $this->callstack(); + + if (!isset($this->callstack[$value][$callstack])) { + // Prevent ugly E_NOTICE + $this->callstack[$value][$callstack] = 0; + } + + $this->callstack[$value][$callstack] += (float) $duration; + } + + /** + * @brief Log active processes into the "process" table + */ + function start_process() { + $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1); + + $command = basename($trace[0]['file']); + + $this->remove_inactive_processes(); + + q('START TRANSACTION'); + + $r = q('SELECT `pid` FROM `process` WHERE `pid` = %d', intval(getmypid())); + if (!dbm::is_result($r)) { + q("INSERT INTO `process` (`pid`,`command`,`created`) VALUES (%d, '%s', '%s')", intval(getmypid()), dbesc($command), dbesc(datetime_convert())); + } + q('COMMIT'); + } + + /** + * @brief Remove inactive processes + */ + function remove_inactive_processes() { + q('START TRANSACTION'); + + $r = q('SELECT `pid` FROM `process`'); + if (dbm::is_result($r)) { + foreach ($r AS $process) { + if (!posix_kill($process['pid'], 0)) { + q('DELETE FROM `process` WHERE `pid` = %d', intval($process['pid'])); + } + } + } + q('COMMIT'); + } + + /** + * @brief Remove the active process from the "process" table + */ + function end_process() { + q('DELETE FROM `process` WHERE `pid` = %d', intval(getmypid())); + } + + /** + * @brief Returns a string with a callstack. Can be used for logging. + * + * @return string + */ + function callstack($depth = 4) { + $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, $depth + 2); + + // We remove the first two items from the list since they contain data that we don't need. + array_shift($trace); + array_shift($trace); + + $callstack = array(); + foreach ($trace AS $func) { + $callstack[] = $func['function']; + } + + return implode(', ', $callstack); + } + + function get_useragent() { + return + FRIENDICA_PLATFORM . " '" . + FRIENDICA_CODENAME . "' " . + FRIENDICA_VERSION . '-' . + DB_UPDATE_VERSION . '; ' . + $this->get_baseurl(); + } + + function is_friendica_app() { + return $this->is_friendica_app; + } + + /** + * @brief Checks if the site is called via a backend process + * + * This isn't a perfect solution. But we need this check very early. + * So we cannot wait until the modules are loaded. + * + * @return bool Is it a known backend? + */ + function is_backend() { + static $backends = array(); + $backends[] = '_well_known'; + $backends[] = 'api'; + $backends[] = 'dfrn_notify'; + $backends[] = 'fetch'; + $backends[] = 'hcard'; + $backends[] = 'hostxrd'; + $backends[] = 'nodeinfo'; + $backends[] = 'noscrape'; + $backends[] = 'p'; + $backends[] = 'poco'; + $backends[] = 'post'; + $backends[] = 'proxy'; + $backends[] = 'pubsub'; + $backends[] = 'pubsubhubbub'; + $backends[] = 'receive'; + $backends[] = 'rsd_xml'; + $backends[] = 'salmon'; + $backends[] = 'statistics_json'; + $backends[] = 'xrd'; + + // Check if current module is in backend or backend flag is set + return (in_array($this->module, $backends) || $this->backend); + } + + /** + * @brief Checks if the maximum number of database processes is reached + * + * @return bool Is the limit reached? + */ + function max_processes_reached() { + + if ($this->is_backend()) { + $process = 'backend'; + $max_processes = Config::get('system', 'max_processes_backend'); + if (intval($max_processes) == 0) { + $max_processes = 5; + } + } else { + $process = 'frontend'; + $max_processes = Config::get('system', 'max_processes_frontend'); + if (intval($max_processes) == 0) { + $max_processes = 20; + } + } + + $processlist = dbm::processlist(); + if ($processlist['list'] != '') { + logger('Processcheck: Processes: ' . $processlist['amount'] . ' - Processlist: ' . $processlist['list'], LOGGER_DEBUG); + + if ($processlist['amount'] > $max_processes) { + logger('Processcheck: Maximum number of processes for ' . $process . ' tasks (' . $max_processes . ') reached.', LOGGER_DEBUG); + return true; + } + } + return false; + } + + /** + * @brief Checks if the minimal memory is reached + * + * @return bool Is the memory limit reached? + */ + public function min_memory_reached() { + $min_memory = Config::get('system', 'min_memory', 0); + if ($min_memory == 0) { + return false; + } + + if (!is_readable('/proc/meminfo')) { + return false; + } + + $memdata = explode("\n", file_get_contents('/proc/meminfo')); + + $meminfo = array(); + foreach ($memdata as $line) { + list($key, $val) = explode(':', $line); + $meminfo[$key] = (int) trim(str_replace('kB', '', $val)); + $meminfo[$key] = (int) ($meminfo[$key] / 1024); + } + + if (!isset($meminfo['MemAvailable']) OR ! isset($meminfo['MemFree'])) { + return false; + } + + $free = $meminfo['MemAvailable'] + $meminfo['MemFree']; + + $reached = ($free < $min_memory); + + if ($reached) { + logger('Minimal memory reached: ' . $free . '/' . $meminfo['MemTotal'] . ' - limit ' . $min_memory, LOGGER_DEBUG); + } + + return $reached; + } + + /** + * @brief Checks if the maximum load is reached + * + * @return bool Is the load reached? + */ + function maxload_reached() { + + if ($this->is_backend()) { + $process = 'backend'; + $maxsysload = intval(Config::get('system', 'maxloadavg')); + if ($maxsysload < 1) { + $maxsysload = 50; + } + } else { + $process = 'frontend'; + $maxsysload = intval(Config::get('system', 'maxloadavg_frontend')); + if ($maxsysload < 1) { + $maxsysload = 50; + } + } + + $load = current_load(); + if ($load) { + if (intval($load) > $maxsysload) { + logger('system: load ' . $load . ' for ' . $process . ' tasks (' . $maxsysload . ') too high.'); + return true; + } + } + return false; + } + + function proc_run($args) { + + if (!function_exists('proc_open')) { + return; + } + + // If the last worker fork was less than 10 seconds before then don't fork another one. + // This should prevent the forking of masses of workers. + $cachekey = 'app:proc_run:started'; + $result = Cache::get($cachekey); + + if (!is_null($result) AND ( time() - $result) < 10) { + return; + } + + // Set the timestamp of the last proc_run + Cache::set($cachekey, time(), CACHE_MINUTE); + + array_unshift($args, ((x($this->config, 'php_path')) && (strlen($this->config['php_path'])) ? $this->config['php_path'] : 'php')); + + // add baseurl to args. cli scripts can't construct it + $args[] = $this->get_baseurl(); + + for ($x = 0; $x < count($args); $x ++) { + $args[$x] = escapeshellarg($args[$x]); + } + + $cmdline = implode($args, ' '); + + if ($this->min_memory_reached()) { + return; + } + + if (Config::get('system', 'proc_windows')) { + $resource = proc_open('cmd /c start /b ' . $cmdline, array(), $foo, $this->get_basepath()); + } else { + $resource = proc_open($cmdline . ' &', array(), $foo, $this->get_basepath()); + } + if (!is_resource($resource)) { + logger('We got no resource for command ' . $cmdline, LOGGER_DEBUG); + return; + } + proc_close($resource); + } + + /** + * @brief Returns the system user that is executing the script + * + * This mostly returns something like "www-data". + * + * @return string system username + */ + static function systemuser() { + if (!function_exists('posix_getpwuid') OR ! function_exists('posix_geteuid')) { + return ''; + } + + $processUser = posix_getpwuid(posix_geteuid()); + return $processUser['name']; + } + + /** + * @brief Checks if a given directory is usable for the system + * + * @return boolean the directory is usable + */ + static function directory_usable($directory, $check_writable = true) { + if ($directory == '') { + logger('Directory is empty. This shouldn\'t happen.', LOGGER_DEBUG); + return false; + } + + if (!file_exists($directory)) { + logger('Path "' . $directory . '" does not exist for user ' . self::systemuser(), LOGGER_DEBUG); + return false; + } + if (is_file($directory)) { + logger('Path "' . $directory . '" is a file for user ' . self::systemuser(), LOGGER_DEBUG); + return false; + } + if (!is_dir($directory)) { + logger('Path "' . $directory . '" is not a directory for user ' . self::systemuser(), LOGGER_DEBUG); + return false; + } + if ($check_writable AND !is_writable($directory)) { + logger('Path "' . $directory . '" is not writable for user ' . self::systemuser(), LOGGER_DEBUG); + return false; + } + return true; + } +} diff --git a/src/Network/Probe.php b/src/Network/Probe.php new file mode 100644 index 0000000000..2901ead0e4 --- /dev/null +++ b/src/Network/Probe.php @@ -0,0 +1,1403 @@ + Link to LRDD endpoint + * 'lrdd-xml' => Link to LRDD endpoint in XML format + * 'lrdd-json' => Link to LRDD endpoint in JSON format + */ + private function xrd($host) { + + // Reset the static variable + self::$baseurl = ''; + + $ssl_url = "https://".$host."/.well-known/host-meta"; + $url = "http://".$host."/.well-known/host-meta"; + + $xrd_timeout = Config::get('system', 'xrd_timeout', 20); + $redirects = 0; + + $ret = z_fetch_url($ssl_url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml')); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $xml = $ret['body']; + + $xrd = parse_xml_string($xml, false); + + if (!is_object($xrd)) { + $ret = z_fetch_url($url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml')); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $xml = $ret['body']; + $xrd = parse_xml_string($xml, false); + } + if (!is_object($xrd)) { + return false; + } + + $links = xml::element_to_array($xrd); + if (!isset($links["xrd"]["link"])) { + return false; + } + + $xrd_data = array(); + + foreach ($links["xrd"]["link"] as $value => $link) { + if (isset($link["@attributes"])) { + $attributes = $link["@attributes"]; + } elseif ($value == "@attributes") { + $attributes = $link; + } else { + continue; + } + + if (($attributes["rel"] == "lrdd") + AND ($attributes["type"] == "application/xrd+xml") + ) { + $xrd_data["lrdd-xml"] = $attributes["template"]; + } elseif (($attributes["rel"] == "lrdd") + AND ($attributes["type"] == "application/json") + ) { + $xrd_data["lrdd-json"] = $attributes["template"]; + } elseif ($attributes["rel"] == "lrdd") { + $xrd_data["lrdd"] = $attributes["template"]; + } + } + + self::$baseurl = "http://".$host; + + return $xrd_data; + } + + /** + * @brief Perform Webfinger lookup and return DFRN data + * + * Given an email style address, perform webfinger lookup and + * return the resulting DFRN profile URL, or if no DFRN profile URL + * is located, returns an OStatus subscription template (prefixed + * with the string 'stat:' to identify it as on OStatus template). + * If this isn't an email style address just return $webbie. + * Return an empty string if email-style addresses but webfinger fails, + * or if the resultant personal XRD doesn't contain a supported + * subscription/friend-request attribute. + * + * amended 7/9/2011 to return an hcard which could save potentially loading + * a lengthy content page to scrape dfrn attributes + * + * @param string $webbie Address that should be probed + * @param string $hcard_url Link to the hcard - is returned by reference + * + * @return string profile link + */ + + public static function webfingerDfrn($webbie, &$hcard_url) { + + $profile_link = ''; + + $links = self::lrdd($webbie); + logger('webfingerDfrn: '.$webbie.':'.print_r($links, true), LOGGER_DATA); + if (count($links)) { + foreach ($links as $link) { + if ($link['@attributes']['rel'] === NAMESPACE_DFRN) { + $profile_link = $link['@attributes']['href']; + } + if (($link['@attributes']['rel'] === NAMESPACE_OSTATUSSUB) AND ($profile_link == "")) { + $profile_link = 'stat:'.$link['@attributes']['template']; + } + if ($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard') { + $hcard_url = $link['@attributes']['href']; + } + } + } + return $profile_link; + } + + /** + * @brief Check an URI for LRDD data + * + * this is a replacement for the "lrdd" function in include/network.php. + * It isn't used in this class and has some redundancies in the code. + * When time comes we can check the existing calls for "lrdd" if we can rework them. + * + * @param string $uri Address that should be probed + * + * @return array uri data + */ + public static function lrdd($uri) { + + $lrdd = self::xrd($uri); + $webfinger = null; + + if (!$lrdd) { + $parts = @parse_url($uri); + if (!$parts) { + return array(); + } + + $host = $parts["host"]; + if (isset($parts["port"])) { + $host .= ':'.$parts["port"]; + } + + $path_parts = explode("/", trim($parts["path"], "/")); + + $nick = array_pop($path_parts); + + do { + $lrdd = self::xrd($host); + $host .= "/".array_shift($path_parts); + } while (!$lrdd AND (sizeof($path_parts) > 0)); + } + + if (!$lrdd) { + return array(); + } + + foreach ($lrdd as $key => $link) { + if ($webfinger) { + continue; + } + + if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json"))) { + continue; + } + + $path = str_replace('{uri}', urlencode($uri), $link); + $webfinger = self::webfinger($path); + + if (!$webfinger AND (strstr($uri, "@"))) { + $path = str_replace('{uri}', urlencode("acct:".$uri), $link); + $webfinger = self::webfinger($path); + } + + // Special treatment for Mastodon + // Problem is that Mastodon uses an URL format like http://domain.tld/@nick + // But the webfinger for this format fails. + if (!$webfinger AND isset($nick)) { + // Mastodon uses a "@" as prefix for usernames in their url format + $nick = ltrim($nick, '@'); + + $addr = $nick."@".$host; + + $path = str_replace('{uri}', urlencode("acct:".$addr), $link); + $webfinger = self::webfinger($path); + } + } + + if (!is_array($webfinger["links"])) { + return false; + } + + $data = array(); + + foreach ($webfinger["links"] as $link) { + $data[] = array("@attributes" => $link); + } + + if (is_array($webfinger["aliases"])) { + foreach ($webfinger["aliases"] as $alias) { + $data[] = array("@attributes" => + array("rel" => "alias", + "href" => $alias)); + } + } + + return $data; + } + + /** + * @brief Fetch information (protocol endpoints and user information) about a given uri + * + * @param string $uri Address that should be probed + * @param string $network Test for this specific network + * @param integer $uid User ID for the probe (only used for mails) + * @param boolean $cache Use cached values? + * + * @return array uri data + */ + public static function uri($uri, $network = "", $uid = 0, $cache = true) { + + if ($cache) { + $result = Cache::get("probe_url:".$network.":".$uri); + if (!is_null($result)) { + return $result; + } + } + + if ($uid == 0) { + $uid = local_user(); + } + + $data = self::detect($uri, $network, $uid); + + if (!isset($data["url"])) { + $data["url"] = $uri; + } + + if ($data["photo"] != "") { + $data["baseurl"] = matching_url(normalise_link($data["baseurl"]), normalise_link($data["photo"])); + } else { + $data["photo"] = App::get_baseurl().'/images/person-175.jpg'; + } + + if (!isset($data["name"]) OR ($data["name"] == "")) { + if (isset($data["nick"])) { + $data["name"] = $data["nick"]; + } + + if ($data["name"] == "") { + $data["name"] = $data["url"]; + } + } + + if (!isset($data["nick"]) OR ($data["nick"] == "")) { + $data["nick"] = strtolower($data["name"]); + + if (strpos($data['nick'], ' ')) { + $data['nick'] = trim(substr($data['nick'], 0, strpos($data['nick'], ' '))); + } + } + + if (self::$baseurl != "") { + $data["baseurl"] = self::$baseurl; + } + + if (!isset($data["network"])) { + $data["network"] = NETWORK_PHANTOM; + } + + $data = self::rearrangeData($data); + + // Only store into the cache if the value seems to be valid + if (!in_array($data['network'], array(NETWORK_PHANTOM, NETWORK_MAIL))) { + Cache::set("probe_url:".$network.":".$uri, $data, CACHE_DAY); + + /// @todo temporary fix - we need a real contact update function that updates only changing fields + /// The biggest problem is the avatar picture that could have a reduced image size. + /// It should only be updated if the existing picture isn't existing anymore. + /// We only update the contact when it is no probing for a specific network. + if (($data['network'] != NETWORK_FEED) + AND ($network == "") + AND $data["name"] + AND $data["nick"] + AND $data["url"] + AND $data["addr"] + AND $data["poll"] + ) { + q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `url` = '%s', `addr` = '%s', + `notify` = '%s', `poll` = '%s', `alias` = '%s', `success_update` = '%s' + WHERE `nurl` = '%s' AND NOT `self` AND `uid` = 0", + dbesc($data["name"]), + dbesc($data["nick"]), + dbesc($data["url"]), + dbesc($data["addr"]), + dbesc($data["notify"]), + dbesc($data["poll"]), + dbesc($data["alias"]), + dbesc(datetime_convert()), + dbesc(normalise_link($data['url'])) + ); + } + } + + return $data; + } + + /** + * @brief Fetch information (protocol endpoints and user information) about a given uri + * + * This function is only called by the "uri" function that adds caching and rearranging of data. + * + * @param string $uri Address that should be probed + * @param string $network Test for this specific network + * @param integer $uid User ID for the probe (only used for mails) + * + * @return array uri data + */ + private function detect($uri, $network, $uid) { + $parts = parse_url($uri); + + if (isset($parts["scheme"]) AND isset($parts["host"]) AND isset($parts["path"])) { + $host = $parts["host"]; + if (isset($parts["port"])) { + $host .= ':'.$parts["port"]; + } + + if ($host == 'twitter.com') { + return array("network" => NETWORK_TWITTER); + } + $lrdd = self::xrd($host); + + $path_parts = explode("/", trim($parts["path"], "/")); + + while (!$lrdd AND (sizeof($path_parts) > 1)) { + $host .= "/".array_shift($path_parts); + $lrdd = self::xrd($host); + } + if (!$lrdd) { + return self::feed($uri); + } + $nick = array_pop($path_parts); + + // Mastodon uses a "@" as prefix for usernames in their url format + $nick = ltrim($nick, '@'); + + $addr = $nick."@".$host; + + } elseif (strstr($uri, '@')) { + // If the URI starts with "mailto:" then jump directly to the mail detection + if (strpos($uri, 'mailto:') !== false) { + $uri = str_replace('mailto:', '', $uri); + return self::mail($uri, $uid); + } + + if ($network == NETWORK_MAIL) { + return self::mail($uri, $uid); + } + // Remove "acct:" from the URI + $uri = str_replace('acct:', '', $uri); + + $host = substr($uri, strpos($uri, '@') + 1); + $nick = substr($uri, 0, strpos($uri, '@')); + + if (strpos($uri, '@twitter.com')) { + return array("network" => NETWORK_TWITTER); + } + $lrdd = self::xrd($host); + + if (!$lrdd) { + return self::mail($uri, $uid); + } + $addr = $uri; + + } else { + return false; + } + + $webfinger = false; + + /// @todo Do we need the prefix "acct:" or "acct://"? + + foreach ($lrdd as $key => $link) { + if ($webfinger) { + continue; + } + if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json"))) { + continue; + } + // At first try it with the given uri + $path = str_replace('{uri}', urlencode($uri), $link); + $webfinger = self::webfinger($path); + + // We cannot be sure that the detected address was correct, so we don't use the values + if ($webfinger AND ($uri != $addr)) { + $nick = ""; + $addr = ""; + } + + // Try webfinger with the address (user@domain.tld) + if (!$webfinger) { + $path = str_replace('{uri}', urlencode($addr), $link); + $webfinger = self::webfinger($path); + } + + // Mastodon needs to have it with "acct:" + if (!$webfinger) { + $path = str_replace('{uri}', urlencode("acct:".$addr), $link); + $webfinger = self::webfinger($path); + } + } + if (!$webfinger) { + return self::feed($uri); + } + + $result = false; + + logger("Probing ".$uri, LOGGER_DEBUG); + + if (in_array($network, array("", NETWORK_DFRN))) { + $result = self::dfrn($webfinger); + } + if ((!$result AND ($network == "")) OR ($network == NETWORK_DIASPORA)) { + $result = self::diaspora($webfinger); + } + if ((!$result AND ($network == "")) OR ($network == NETWORK_OSTATUS)) { + $result = self::ostatus($webfinger); + } + if ((!$result AND ($network == "")) OR ($network == NETWORK_PUMPIO)) { + $result = self::pumpio($webfinger); + } + if ((!$result AND ($network == "")) OR ($network == NETWORK_FEED)) { + $result = self::feed($uri); + } else { + // We overwrite the detected nick with our try if the previois routines hadn't detected it. + // Additionally it is overwritten when the nickname doesn't make sense (contains spaces). + if ((!isset($result["nick"]) OR ($result["nick"] == "") OR (strstr($result["nick"], " "))) AND ($nick != "")) { + $result["nick"] = $nick; + } + + if ((!isset($result["addr"]) OR ($result["addr"] == "")) AND ($addr != "")) { + $result["addr"] = $addr; + } + } + + logger($uri." is ".$result["network"], LOGGER_DEBUG); + + if (!isset($result["baseurl"]) OR ($result["baseurl"] == "")) { + $pos = strpos($result["url"], $host); + if ($pos) { + $result["baseurl"] = substr($result["url"], 0, $pos).$host; + } + } + + return $result; + } + + /** + * @brief Perform a webfinger request. + * + * For details see RFC 7033: + * + * @param string $url Address that should be probed + * + * @return array webfinger data + */ + private function webfinger($url) { + + $xrd_timeout = Config::get('system', 'xrd_timeout', 20); + $redirects = 0; + + $ret = z_fetch_url($url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml')); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $data = $ret['body']; + + $xrd = parse_xml_string($data, false); + + if (!is_object($xrd)) { + // If it is not XML, maybe it is JSON + $webfinger = json_decode($data, true); + + if (!isset($webfinger["links"])) { + return false; + } + + return $webfinger; + } + + $xrd_arr = xml::element_to_array($xrd); + if (!isset($xrd_arr["xrd"]["link"])) { + return false; + } + + $webfinger = array(); + + if (isset($xrd_arr["xrd"]["subject"])) { + $webfinger["subject"] = $xrd_arr["xrd"]["subject"]; + } + + if (isset($xrd_arr["xrd"]["alias"])) { + $webfinger["aliases"] = $xrd_arr["xrd"]["alias"]; + } + + $webfinger["links"] = array(); + + foreach ($xrd_arr["xrd"]["link"] as $value => $data) { + if (isset($data["@attributes"])) { + $attributes = $data["@attributes"]; + } elseif ($value == "@attributes") { + $attributes = $data; + } else { + continue; + } + + $webfinger["links"][] = $attributes; + } + return $webfinger; + } + + /** + * @brief Poll the Friendica specific noscrape page. + * + * "noscrape" is a faster alternative to fetch the data from the hcard. + * This functionality was originally created for the directory. + * + * @param string $noscrape_url Link to the noscrape page + * @param array $data The already fetched data + * + * @return array noscrape data + */ + private function pollNoscrape($noscrape_url, $data) { + $ret = z_fetch_url($noscrape_url); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $content = $ret['body']; + if (!$content) { + return false; + } + + $json = json_decode($content, true); + if (!is_array($json)) { + return false; + } + + if (isset($json["fn"])) { + $data["name"] = $json["fn"]; + } + + if (isset($json["addr"])) { + $data["addr"] = $json["addr"]; + } + + if (isset($json["nick"])) { + $data["nick"] = $json["nick"]; + } + + if (isset($json["comm"])) { + $data["community"] = $json["comm"]; + } + + if (isset($json["tags"])) { + $keywords = implode(" ", $json["tags"]); + if ($keywords != "") { + $data["keywords"] = $keywords; + } + } + + $location = formatted_location($json); + if ($location) { + $data["location"] = $location; + } + + if (isset($json["about"])) { + $data["about"] = $json["about"]; + } + + if (isset($json["key"])) { + $data["pubkey"] = $json["key"]; + } + + if (isset($json["photo"])) { + $data["photo"] = $json["photo"]; + } + + if (isset($json["dfrn-request"])) { + $data["request"] = $json["dfrn-request"]; + } + + if (isset($json["dfrn-confirm"])) { + $data["confirm"] = $json["dfrn-confirm"]; + } + + if (isset($json["dfrn-notify"])) { + $data["notify"] = $json["dfrn-notify"]; + } + + if (isset($json["dfrn-poll"])) { + $data["poll"] = $json["dfrn-poll"]; + } + + return $data; + } + + /** + * @brief Check for valid DFRN data + * + * @param array $data DFRN data + * + * @return int Number of errors + */ + public static function validDfrn($data) { + $errors = 0; + if (!isset($data['key'])) { + $errors ++; + } + if (!isset($data['dfrn-request'])) { + $errors ++; + } + if (!isset($data['dfrn-confirm'])) { + $errors ++; + } + if (!isset($data['dfrn-notify'])) { + $errors ++; + } + if (!isset($data['dfrn-poll'])) { + $errors ++; + } + return $errors; + } + + /** + * @brief Fetch data from a DFRN profile page and via "noscrape" + * + * @param string $profile_link Link to the profile page + * + * @return array profile data + */ + public static function profile($profile_link) { + + $data = array(); + + logger("Check profile ".$profile_link, LOGGER_DEBUG); + + // Fetch data via noscrape - this is faster + $noscrape_url = str_replace(array("/hcard/", "/profile/"), "/noscrape/", $profile_link); + $data = self::pollNoscrape($noscrape_url, $data); + + if (!isset($data["notify"]) + OR !isset($data["confirm"]) + OR !isset($data["request"]) + OR !isset($data["poll"]) + OR !isset($data["poco"]) + OR !isset($data["name"]) + OR !isset($data["photo"]) + ) { + $data = self::pollHcard($profile_link, $data, true); + } + + $prof_data = array(); + $prof_data["addr"] = $data["addr"]; + $prof_data["nick"] = $data["nick"]; + $prof_data["dfrn-request"] = $data["request"]; + $prof_data["dfrn-confirm"] = $data["confirm"]; + $prof_data["dfrn-notify"] = $data["notify"]; + $prof_data["dfrn-poll"] = $data["poll"]; + $prof_data["dfrn-poco"] = $data["poco"]; + $prof_data["photo"] = $data["photo"]; + $prof_data["fn"] = $data["name"]; + $prof_data["key"] = $data["pubkey"]; + + logger("Result for profile ".$profile_link.": ".print_r($prof_data, true), LOGGER_DEBUG); + + return $prof_data; + } + + /** + * @brief Check for DFRN contact + * + * @param array $webfinger Webfinger data + * + * @return array DFRN data + */ + private function dfrn($webfinger) { + + $hcard_url = ""; + $data = array(); + foreach ($webfinger["links"] as $link) { + if (($link["rel"] == NAMESPACE_DFRN) AND ($link["href"] != "")) { + $data["network"] = NETWORK_DFRN; + } elseif (($link["rel"] == NAMESPACE_FEED) AND ($link["href"] != "")) { + $data["poll"] = $link["href"]; + } elseif (($link["rel"] == "http://webfinger.net/rel/profile-page") AND ($link["type"] == "text/html") AND ($link["href"] != "")) { + $data["url"] = $link["href"]; + } elseif (($link["rel"] == "http://microformats.org/profile/hcard") AND ($link["href"] != "")) { + $hcard_url = $link["href"]; + } elseif (($link["rel"] == NAMESPACE_POCO) AND ($link["href"] != "")) { + $data["poco"] = $link["href"]; + } elseif (($link["rel"] == "http://webfinger.net/rel/avatar") AND ($link["href"] != "")) { + $data["photo"] = $link["href"]; + } elseif (($link["rel"] == "http://joindiaspora.com/seed_location") AND ($link["href"] != "")) { + $data["baseurl"] = trim($link["href"], '/'); + } elseif (($link["rel"] == "http://joindiaspora.com/guid") AND ($link["href"] != "")) { + $data["guid"] = $link["href"]; + } elseif (($link["rel"] == "diaspora-public-key") AND ($link["href"] != "")) { + $data["pubkey"] = base64_decode($link["href"]); + + //if (strstr($data["pubkey"], 'RSA ') OR ($link["type"] == "RSA")) + if (strstr($data["pubkey"], 'RSA ')) { + $data["pubkey"] = rsatopem($data["pubkey"]); + } + } + } + + if (!isset($data["network"]) OR ($hcard_url == "")) { + return false; + } + + // Fetch data via noscrape - this is faster + $noscrape_url = str_replace("/hcard/", "/noscrape/", $hcard_url); + $data = self::pollNoscrape($noscrape_url, $data); + + if (isset($data["notify"]) + AND isset($data["confirm"]) + AND isset($data["request"]) + AND isset($data["poll"]) + AND isset($data["name"]) + AND isset($data["photo"]) + ) { + return $data; + } + + $data = self::pollHcard($hcard_url, $data, true); + + return $data; + } + + /** + * @brief Poll the hcard page (Diaspora and Friendica specific) + * + * @param string $hcard_url Link to the hcard page + * @param array $data The already fetched data + * @param boolean $dfrn Poll DFRN specific data + * + * @return array hcard data + */ + private function pollHcard($hcard_url, $data, $dfrn = false) { + $ret = z_fetch_url($hcard_url); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $content = $ret['body']; + if (!$content) { + return false; + } + + $doc = new DOMDocument(); + if (!@$doc->loadHTML($content)) { + return false; + } + + $xpath = new DomXPath($doc); + + $vcards = $xpath->query("//div[contains(concat(' ', @class, ' '), ' vcard ')]"); + if (!is_object($vcards)) { + return false; + } + + if ($vcards->length > 0) { + $vcard = $vcards->item(0); + + // We have to discard the guid from the hcard in favour of the guid from lrdd + // Reason: Hubzilla doesn't use the value "uid" in the hcard like Diaspora does. + $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' uid ')]", $vcard); // */ + if (($search->length > 0) AND ($data["guid"] == "")) { + $data["guid"] = $search->item(0)->nodeValue; + } + + $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' nickname ')]", $vcard); // */ + if ($search->length > 0) { + $data["nick"] = $search->item(0)->nodeValue; + } + + $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' fn ')]", $vcard); // */ + if ($search->length > 0) { + $data["name"] = $search->item(0)->nodeValue; + } + + $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' searchable ')]", $vcard); // */ + if ($search->length > 0) { + $data["searchable"] = $search->item(0)->nodeValue; + } + + $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' key ')]", $vcard); // */ + if ($search->length > 0) { + $data["pubkey"] = $search->item(0)->nodeValue; + if (strstr($data["pubkey"], 'RSA ')) { + $data["pubkey"] = rsatopem($data["pubkey"]); + } + } + + $search = $xpath->query("//*[@id='pod_location']", $vcard); // */ + if ($search->length > 0) { + $data["baseurl"] = trim($search->item(0)->nodeValue, "/"); + } + } + + $avatar = array(); + $photos = $xpath->query("//*[contains(concat(' ', @class, ' '), ' photo ') or contains(concat(' ', @class, ' '), ' avatar ')]", $vcard); // */ + foreach ($photos as $photo) { + $attr = array(); + foreach ($photo->attributes as $attribute) { + $attr[$attribute->name] = trim($attribute->value); + } + + if (isset($attr["src"]) AND isset($attr["width"])) { + $avatar[$attr["width"]] = $attr["src"]; + } + + // We don't have a width. So we just take everything that we got. + // This is a Hubzilla workaround which doesn't send a width. + if ((sizeof($avatar) == 0) AND isset($attr["src"])) { + $avatar[] = $attr["src"]; + } + } + + if (sizeof($avatar)) { + ksort($avatar); + $data["photo"] = self::fixAvatar(array_pop($avatar), $data["baseurl"]); + } + + if ($dfrn) { + // Poll DFRN specific data + $search = $xpath->query("//link[contains(concat(' ', @rel), ' dfrn-')]"); + if ($search->length > 0) { + foreach ($search as $link) { + //$data["request"] = $search->item(0)->nodeValue; + $attr = array(); + foreach ($link->attributes as $attribute) { + $attr[$attribute->name] = trim($attribute->value); + } + + $data[substr($attr["rel"], 5)] = $attr["href"]; + } + } + + // Older Friendica versions had used the "uid" field differently than newer versions + if ($data["nick"] == $data["guid"]) { + unset($data["guid"]); + } + } + + + return $data; + } + + /** + * @brief Check for Diaspora contact + * + * @param array $webfinger Webfinger data + * + * @return array Diaspora data + */ + private function diaspora($webfinger) { + + $hcard_url = ""; + $data = array(); + foreach ($webfinger["links"] as $link) { + if (($link["rel"] == "http://microformats.org/profile/hcard") AND ($link["href"] != "")) { + $hcard_url = $link["href"]; + } elseif (($link["rel"] == "http://joindiaspora.com/seed_location") AND ($link["href"] != "")) { + $data["baseurl"] = trim($link["href"], '/'); + } elseif (($link["rel"] == "http://joindiaspora.com/guid") AND ($link["href"] != "")) { + $data["guid"] = $link["href"]; + } elseif (($link["rel"] == "http://webfinger.net/rel/profile-page") AND ($link["type"] == "text/html") AND ($link["href"] != "")) { + $data["url"] = $link["href"]; + } elseif (($link["rel"] == NAMESPACE_FEED) AND ($link["href"] != "")) { + $data["poll"] = $link["href"]; + } elseif (($link["rel"] == NAMESPACE_POCO) AND ($link["href"] != "")) { + $data["poco"] = $link["href"]; + } elseif (($link["rel"] == "salmon") AND ($link["href"] != "")) { + $data["notify"] = $link["href"]; + } elseif (($link["rel"] == "diaspora-public-key") AND ($link["href"] != "")) { + $data["pubkey"] = base64_decode($link["href"]); + + //if (strstr($data["pubkey"], 'RSA ') OR ($link["type"] == "RSA")) + if (strstr($data["pubkey"], 'RSA ')) { + $data["pubkey"] = rsatopem($data["pubkey"]); + } + } + } + + if (!isset($data["url"]) OR ($hcard_url == "")) { + return false; + } + + if (is_array($webfinger["aliases"])) { + foreach ($webfinger["aliases"] as $alias) { + if (normalise_link($alias) != normalise_link($data["url"]) AND ! strstr($alias, "@")) { + $data["alias"] = $alias; + } + } + } + + // Fetch further information from the hcard + $data = self::pollHcard($hcard_url, $data); + + if (!$data) { + return false; + } + + if (isset($data["url"]) + AND isset($data["guid"]) + AND isset($data["baseurl"]) + AND isset($data["pubkey"]) + AND ($hcard_url != "") + ) { + $data["network"] = NETWORK_DIASPORA; + + // The Diaspora handle must always be lowercase + $data["addr"] = strtolower($data["addr"]); + + // We have to overwrite the detected value for "notify" since Hubzilla doesn't send it + $data["notify"] = $data["baseurl"] . "/receive/users/" . $data["guid"]; + $data["batch"] = $data["baseurl"] . "/receive/public"; + } else { + return false; + } + + return $data; + } + + /** + * @brief Check for OStatus contact + * + * @param array $webfinger Webfinger data + * + * @return array OStatus data + */ + private function ostatus($webfinger) { + $data = array(); + if (is_array($webfinger["aliases"])) { + foreach ($webfinger["aliases"] as $alias) { + if (strstr($alias, "@")) { + $data["addr"] = str_replace('acct:', '', $alias); + } + } + } + + if (is_string($webfinger["subject"]) AND strstr($webfinger["subject"], "@")) { + $data["addr"] = str_replace('acct:', '', $webfinger["subject"]); + } + $pubkey = ""; + foreach ($webfinger["links"] as $link) { + if (($link["rel"] == "http://webfinger.net/rel/profile-page") + AND ($link["type"] == "text/html") + AND ($link["href"] != "") + ) { + $data["url"] = $link["href"]; + } elseif (($link["rel"] == "salmon") AND ($link["href"] != "")) { + $data["notify"] = $link["href"]; + } elseif (($link["rel"] == NAMESPACE_FEED) AND ($link["href"] != "")) { + $data["poll"] = $link["href"]; + } elseif (($link["rel"] == "magic-public-key") AND ($link["href"] != "")) { + $pubkey = $link["href"]; + + if (substr($pubkey, 0, 5) === 'data:') { + if (strstr($pubkey, ',')) { + $pubkey = substr($pubkey, strpos($pubkey, ',') + 1); + } else { + $pubkey = substr($pubkey, 5); + } + } elseif (normalise_link($pubkey) == 'http://') { + $ret = z_fetch_url($pubkey); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $pubkey = $ret['body']; + } + + $key = explode(".", $pubkey); + + if (sizeof($key) >= 3) { + $m = base64url_decode($key[1]); + $e = base64url_decode($key[2]); + $data["pubkey"] = metopem($m, $e); + } + } + } + + if (isset($data["notify"]) AND isset($data["pubkey"]) + AND isset($data["poll"]) + AND isset($data["url"]) + ) { + $data["network"] = NETWORK_OSTATUS; + } else { + return false; + } + // Fetch all additional data from the feed + $ret = z_fetch_url($data["poll"]); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $feed = $ret['body']; + $feed_data = feed_import($feed, $dummy1, $dummy2, $dummy3, true); + if (!$feed_data) { + return false; + } + if ($feed_data["header"]["author-name"] != "") { + $data["name"] = $feed_data["header"]["author-name"]; + } + if ($feed_data["header"]["author-nick"] != "") { + $data["nick"] = $feed_data["header"]["author-nick"]; + } + if ($feed_data["header"]["author-avatar"] != "") { + $data["photo"] = self::fixAvatar($feed_data["header"]["author-avatar"], $data["url"]); + } + if ($feed_data["header"]["author-id"] != "") { + $data["alias"] = $feed_data["header"]["author-id"]; + } + if ($feed_data["header"]["author-location"] != "") { + $data["location"] = $feed_data["header"]["author-location"]; + } + if ($feed_data["header"]["author-about"] != "") { + $data["about"] = $feed_data["header"]["author-about"]; + } + // OStatus has serious issues when the the url doesn't fit (ssl vs. non ssl) + // So we take the value that we just fetched, although the other one worked as well + if ($feed_data["header"]["author-link"] != "") { + $data["url"] = $feed_data["header"]["author-link"]; + } + /// @todo Fetch location and "about" from the feed as well + return $data; + } + + /** + * @brief Fetch data from a pump.io profile page + * + * @param string $profile_link Link to the profile page + * + * @return array profile data + */ + private function pumpioProfileData($profile_link) { + + $doc = new DOMDocument(); + if (!@$doc->loadHTMLFile($profile_link)) { + return false; + } + + $xpath = new DomXPath($doc); + + $data = array(); + + // This is ugly - but pump.io doesn't seem to know a better way for it + $data["name"] = trim($xpath->query("//h1[@class='media-header']")->item(0)->nodeValue); + $pos = strpos($data["name"], chr(10)); + if ($pos) { + $data["name"] = trim(substr($data["name"], 0, $pos)); + } + + $avatar = $xpath->query("//img[@class='img-rounded media-object']")->item(0); + if ($avatar) { + foreach ($avatar->attributes as $attribute) { + if ($attribute->name == "src") { + $data["photo"] = trim($attribute->value); + } + } + } + + $data["location"] = $xpath->query("//p[@class='location']")->item(0)->nodeValue; + $data["about"] = $xpath->query("//p[@class='summary']")->item(0)->nodeValue; + + return $data; + } + + /** + * @brief Check for pump.io contact + * + * @param array $webfinger Webfinger data + * + * @return array pump.io data + */ + private function pumpio($webfinger) { + + $data = array(); + foreach ($webfinger["links"] as $link) { + if (($link["rel"] == "http://webfinger.net/rel/profile-page") + AND ($link["type"] == "text/html") + AND ($link["href"] != "") + ) { + $data["url"] = $link["href"]; + } elseif (($link["rel"] == "activity-inbox") AND ($link["href"] != "")) { + $data["notify"] = $link["href"]; + } elseif (($link["rel"] == "activity-outbox") AND ($link["href"] != "")) { + $data["poll"] = $link["href"]; + } elseif (($link["rel"] == "dialback") AND ($link["href"] != "")) { + $data["dialback"] = $link["href"]; + } + } + if (isset($data["poll"]) AND isset($data["notify"]) + AND isset($data["dialback"]) + AND isset($data["url"]) + ) { + // by now we use these fields only for the network type detection + // So we unset all data that isn't used at the moment + unset($data["dialback"]); + + $data["network"] = NETWORK_PUMPIO; + } else { + return false; + } + + $profile_data = self::pumpioProfileData($data["url"]); + + if (!$profile_data) { + return false; + } + + $data = array_merge($data, $profile_data); + + return $data; + } + + /** + * @brief Check page for feed link + * + * @param string $url Page link + * + * @return string feed link + */ + private function getFeedLink($url) { + $doc = new DOMDocument(); + + if (!@$doc->loadHTMLFile($url)) { + return false; + } + + $xpath = new DomXPath($doc); + + //$feeds = $xpath->query("/html/head/link[@type='application/rss+xml']"); + $feeds = $xpath->query("/html/head/link[@type='application/rss+xml' and @rel='alternate']"); + if (!is_object($feeds)) { + return false; + } + + if ($feeds->length == 0) { + return false; + } + + $feed_url = ""; + + foreach ($feeds as $feed) { + $attr = array(); + foreach ($feed->attributes as $attribute) { + $attr[$attribute->name] = trim($attribute->value); + } + + if ($feed_url == "") { + $feed_url = $attr["href"]; + } + } + + return $feed_url; + } + + /** + * @brief Check for feed contact + * + * @param string $url Profile link + * @param boolean $probe Do a probe if the page contains a feed link + * + * @return array feed data + */ + private function feed($url, $probe = true) { + $ret = z_fetch_url($url); + if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) { + return false; + } + $feed = $ret['body']; + $feed_data = feed_import($feed, $dummy1, $dummy2, $dummy3, true); + + if (!$feed_data) { + if (!$probe) { + return false; + } + + $feed_url = self::getFeedLink($url); + + if (!$feed_url) { + return false; + } + + return self::feed($feed_url, false); + } + + if ($feed_data["header"]["author-name"] != "") { + $data["name"] = $feed_data["header"]["author-name"]; + } + + if ($feed_data["header"]["author-nick"] != "") { + $data["nick"] = $feed_data["header"]["author-nick"]; + } + + if ($feed_data["header"]["author-avatar"] != "") { + $data["photo"] = $feed_data["header"]["author-avatar"]; + } + + if ($feed_data["header"]["author-id"] != "") { + $data["alias"] = $feed_data["header"]["author-id"]; + } + + $data["url"] = $url; + $data["poll"] = $url; + + if ($feed_data["header"]["author-link"] != "") { + $data["baseurl"] = $feed_data["header"]["author-link"]; + } else { + $data["baseurl"] = $data["url"]; + } + + $data["network"] = NETWORK_FEED; + + return $data; + } + + /** + * @brief Check for mail contact + * + * @param string $uri Profile link + * @param integer $uid User ID + * + * @return array mail data + */ + private function mail($uri, $uid) { + + if (!validate_email($uri)) { + return false; + } + + $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid)); + + $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1", intval($uid)); + + if (dbm::is_result($x) && dbm::is_result($r)) { + $mailbox = construct_mailbox_name($r[0]); + $password = ''; + openssl_private_decrypt(hex2bin($r[0]['pass']), $password, $x[0]['prvkey']); + $mbox = email_connect($mailbox, $r[0]['user'], $password); + if (!mbox) { + return false; + } + } + + $msgs = email_poll($mbox, $uri); + logger('searching '.$uri.', '.count($msgs).' messages found.', LOGGER_DEBUG); + + if (!count($msgs)) { + return false; + } + + $phost = substr($uri, strpos($uri, '@') + 1); + + $data = array(); + $data["addr"] = $uri; + $data["network"] = NETWORK_MAIL; + $data["name"] = substr($uri, 0, strpos($uri, '@')); + $data["nick"] = $data["name"]; + $data["photo"] = avatar_img($uri); + $data["url"] = 'http://'.$phost."/".$data["nick"]; + $data["notify"] = 'smtp '.random_string(); + $data["poll"] = 'email '.random_string(); + + $x = email_msg_meta($mbox, $msgs[0]); + if (stristr($x[0]->from, $uri)) { + $adr = imap_rfc822_parse_adrlist($x[0]->from, ''); + } elseif (stristr($x[0]->to, $uri)) { + $adr = imap_rfc822_parse_adrlist($x[0]->to, ''); + } + if (isset($adr)) { + foreach ($adr as $feadr) { + if ((strcasecmp($feadr->mailbox, $data["name"]) == 0) + &&(strcasecmp($feadr->host, $phost) == 0) + && (strlen($feadr->personal)) + ) { + $personal = imap_mime_header_decode($feadr->personal); + $data["name"] = ""; + foreach ($personal as $perspart) { + if ($perspart->charset != "default") { + $data["name"] .= iconv($perspart->charset, 'UTF-8//IGNORE', $perspart->text); + } else { + $data["name"] .= $perspart->text; + } + } + + $data["name"] = notags($data["name"]); + } + } + } + imap_close($mbox); + + return $data; + } + + /** + * @brief Mix two paths together to possibly fix missing parts + * + * @param string $avatar Path to the avatar + * @param string $base Another path that is hopefully complete + * + * @return string fixed avatar path + */ + public static function fixAvatar($avatar, $base) { + $base_parts = parse_url($base); + + // Remove all parts that could create a problem + unset($base_parts['path']); + unset($base_parts['query']); + unset($base_parts['fragment']); + + $avatar_parts = parse_url($avatar); + + // Now we mix them + $parts = array_merge($base_parts, $avatar_parts); + + // And put them together again + $scheme = isset($parts['scheme']) ? $parts['scheme'] . '://' : ''; + $host = isset($parts['host']) ? $parts['host'] : ''; + $port = isset($parts['port']) ? ':' . $parts['port'] : ''; + $path = isset($parts['path']) ? $parts['path'] : ''; + $query = isset($parts['query']) ? '?' . $parts['query'] : ''; + $fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : ''; + + $fixed = $scheme.$host.$port.$path.$query.$fragment; + + logger('Base: '.$base.' - Avatar: '.$avatar.' - Fixed: '.$fixed, LOGGER_DATA); + + return $fixed; + } +} diff --git a/src/ParseUrl.php b/src/ParseUrl.php index e9ac527a1a..e8b58806d9 100644 --- a/src/ParseUrl.php +++ b/src/ParseUrl.php @@ -7,7 +7,12 @@ namespace Friendica; -use \Friendica\Core\Config; +use Friendica\Core\Config; + +use xml; + +use DomXPath; +use DOMDocument; require_once("include/network.php"); require_once("include/Photo.php"); @@ -223,22 +228,22 @@ class ParseUrl { $body = mb_convert_encoding($body, 'HTML-ENTITIES', "UTF-8"); - $doc = new \DOMDocument(); + $doc = new DOMDocument(); @$doc->loadHTML($body); - \xml::deleteNode($doc, "style"); - \xml::deleteNode($doc, "script"); - \xml::deleteNode($doc, "option"); - \xml::deleteNode($doc, "h1"); - \xml::deleteNode($doc, "h2"); - \xml::deleteNode($doc, "h3"); - \xml::deleteNode($doc, "h4"); - \xml::deleteNode($doc, "h5"); - \xml::deleteNode($doc, "h6"); - \xml::deleteNode($doc, "ol"); - \xml::deleteNode($doc, "ul"); - - $xpath = new \DomXPath($doc); + xml::deleteNode($doc, "style"); + xml::deleteNode($doc, "script"); + xml::deleteNode($doc, "option"); + xml::deleteNode($doc, "h1"); + xml::deleteNode($doc, "h2"); + xml::deleteNode($doc, "h3"); + xml::deleteNode($doc, "h4"); + xml::deleteNode($doc, "h5"); + xml::deleteNode($doc, "h6"); + xml::deleteNode($doc, "ol"); + xml::deleteNode($doc, "ul"); + + $xpath = new DomXPath($doc); $list = $xpath->query("//meta[@content]"); foreach ($list as $node) { diff --git a/tests/xss_filter_test.php b/tests/xss_filter_test.php index 3fb6ac3109..5bc8e0ad3f 100644 --- a/tests/xss_filter_test.php +++ b/tests/xss_filter_test.php @@ -1,7 +1,7 @@ I want to break\n this!11!"; - $xml=xmlify($text); + $xml=xmlify($text); $retext=unxmlify($text); $this->assertEquals($text, $retext); } - - /** - * xmlify and put in a document - */ - public function testXmlifyDocument() { - $tag="I want to break"; + + /** + * xmlify and put in a document + */ + public function testXmlifyDocument() { + $tag="I want to break"; $xml=xmlify($tag); - $text=''.$xml.''; - - $xml_parser=xml_parser_create(); + $text=''.$xml.''; + + $xml_parser=xml_parser_create(); //should be possible to parse it - $values=array(); $index=array(); - $this->assertEquals(1, xml_parse_into_struct($xml_parser, $text, $values, $index)); - - $this->assertEquals(array('TEXT'=>array(0)), - $index); - $this->assertEquals(array(array('tag'=>'TEXT', 'type'=>'complete', 'level'=>1, 'value'=>$tag)), + $values=array(); $index=array(); + $this->assertEquals(1, xml_parse_into_struct($xml_parser, $text, $values, $index)); + + $this->assertEquals(array('TEXT'=>array(0)), + $index); + $this->assertEquals(array(array('tag'=>'TEXT', 'type'=>'complete', 'level'=>1, 'value'=>$tag)), $values); - - xml_parser_free($xml_parser); + + xml_parser_free($xml_parser); } /** @@ -68,4 +68,3 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { //get_mentions //get_contact_block, bis Zeile 538 } -?> diff --git a/update.php b/update.php index 8da76336fc..e3b1c31b33 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ diff --git a/util/credits.txt b/util/credits.txt index 31ec44bc0a..92d8aca92c 100644 --- a/util/credits.txt +++ b/util/credits.txt @@ -43,6 +43,7 @@ Daria Początek David David Martín Miranda David Rabel +Denis Chenu Devlon Duthie Diego Souza Domovoy diff --git a/util/daemon.php b/util/daemon.php index 266ddcd754..4accef3960 100644 --- a/util/daemon.php +++ b/util/daemon.php @@ -98,4 +98,3 @@ while (true) { // Now sleep for 5 minutes sleep(300); } -?> diff --git a/util/db_update.php b/util/db_update.php index 32b44e6d00..1e717e9875 100644 --- a/util/db_update.php +++ b/util/db_update.php @@ -1,14 +1,17 @@ \n" "Language-Team: LANGUAGE \n" @@ -18,154 +18,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: boot.php:976 -msgid "Delete this item?" -msgstr "" - -#: boot.php:977 include/ForumManager.php:119 include/contact_widgets.php:253 -#: include/items.php:2254 mod/content.php:624 object/Item.php:420 -#: view/theme/vier/theme.php:255 -msgid "show more" -msgstr "" - -#: boot.php:978 -msgid "show fewer" -msgstr "" - -#: boot.php:1667 -#, php-format -msgid "Update %s failed. See error logs." -msgstr "" - -#: boot.php:1779 -msgid "Create a New Account" -msgstr "" - -#: boot.php:1780 include/nav.php:109 mod/register.php:289 -msgid "Register" -msgstr "" - -#: boot.php:1804 include/nav.php:78 view/theme/frio/theme.php:243 -msgid "Logout" -msgstr "" - -#: boot.php:1805 include/nav.php:95 mod/bookmarklet.php:12 -msgid "Login" -msgstr "" - -#: boot.php:1807 mod/lostpass.php:161 -msgid "Nickname or Email: " -msgstr "" - -#: boot.php:1808 -msgid "Password: " -msgstr "" - -#: boot.php:1809 -msgid "Remember me" -msgstr "" - -#: boot.php:1812 -msgid "Or login using OpenID: " -msgstr "" - -#: boot.php:1818 -msgid "Forgot your password?" -msgstr "" - -#: boot.php:1819 mod/lostpass.php:110 -msgid "Password Reset" -msgstr "" - -#: boot.php:1821 -msgid "Website Terms of Service" -msgstr "" - -#: boot.php:1822 -msgid "terms of service" -msgstr "" - -#: boot.php:1824 -msgid "Website Privacy Policy" -msgstr "" - -#: boot.php:1825 -msgid "privacy policy" -msgstr "" - -#: include/Contact.php:387 include/Contact.php:400 include/Contact.php:445 -#: include/conversation.php:970 include/conversation.php:986 -#: mod/allfriends.php:68 mod/directory.php:157 mod/dirfind.php:209 -#: mod/match.php:73 mod/suggest.php:82 -msgid "View Profile" -msgstr "" - -#: include/Contact.php:401 include/contact_widgets.php:32 -#: include/conversation.php:983 mod/allfriends.php:69 mod/contacts.php:610 -#: mod/dirfind.php:210 mod/follow.php:106 mod/match.php:74 mod/suggest.php:83 -msgid "Connect/Follow" -msgstr "" - -#: include/Contact.php:444 include/conversation.php:969 -msgid "View Status" -msgstr "" - -#: include/Contact.php:446 include/conversation.php:971 -msgid "View Photos" -msgstr "" - -#: include/Contact.php:447 include/conversation.php:972 -msgid "Network Posts" -msgstr "" - -#: include/Contact.php:448 include/conversation.php:973 -msgid "View Contact" -msgstr "" - -#: include/Contact.php:449 -msgid "Drop Contact" -msgstr "" - -#: include/Contact.php:450 include/conversation.php:974 -msgid "Send PM" -msgstr "" - -#: include/Contact.php:451 include/conversation.php:978 -msgid "Poke" -msgstr "" - -#: include/Contact.php:828 -msgid "Organisation" -msgstr "" - -#: include/Contact.php:831 -msgid "News" -msgstr "" - -#: include/Contact.php:834 -msgid "Forum" -msgstr "" - -#: include/ForumManager.php:114 include/nav.php:131 include/text.php:1027 -#: view/theme/vier/theme.php:250 +#: include/ForumManager.php:114 include/nav.php:131 include/text.php:1093 +#: view/theme/vier/theme.php:254 msgid "Forums" msgstr "" -#: include/ForumManager.php:116 view/theme/vier/theme.php:252 +#: include/ForumManager.php:116 view/theme/vier/theme.php:256 msgid "External link to forum" msgstr "" +#: include/ForumManager.php:119 include/contact_widgets.php:269 +#: include/items.php:2450 mod/content.php:624 object/Item.php:420 +#: view/theme/vier/theme.php:259 boot.php:1000 +msgid "show more" +msgstr "" + #: include/NotificationsManager.php:153 msgid "System" msgstr "" -#: include/NotificationsManager.php:160 include/nav.php:158 mod/admin.php:421 +#: include/NotificationsManager.php:160 include/nav.php:158 mod/admin.php:517 #: view/theme/frio/theme.php:253 msgid "Network" msgstr "" -#: include/NotificationsManager.php:167 mod/network.php:829 -#: mod/profiles.php:695 +#: include/NotificationsManager.php:167 mod/network.php:832 +#: mod/profiles.php:696 msgid "Personal" msgstr "" @@ -231,2771 +109,2513 @@ msgid "New Follower" msgstr "" #: include/Photo.php:1038 include/Photo.php:1054 include/Photo.php:1062 -#: include/Photo.php:1087 include/message.php:146 mod/item.php:462 -#: mod/wall_upload.php:216 mod/wall_upload.php:230 mod/wall_upload.php:237 +#: include/Photo.php:1087 include/message.php:146 mod/wall_upload.php:249 +#: mod/item.php:467 msgid "Wall Photos" msgstr "" -#: include/acl_selectors.php:341 -msgid "Post to Email" +#: include/delivery.php:427 +msgid "(no subject)" msgstr "" -#: include/acl_selectors.php:346 -#, php-format -msgid "Connectors disabled, since \"%s\" is enabled." +#: include/delivery.php:439 include/enotify.php:43 +msgid "noreply" msgstr "" -#: include/acl_selectors.php:347 mod/settings.php:1188 -msgid "Hide your profile details from unknown viewers?" +#: include/like.php:27 include/conversation.php:153 include/diaspora.php:1576 +#, php-format +msgid "%1$s likes %2$s's %3$s" msgstr "" -#: include/acl_selectors.php:352 -msgid "Visible to everybody" +#: include/like.php:31 include/like.php:36 include/conversation.php:156 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" msgstr "" -#: include/acl_selectors.php:353 view/theme/vier/config.php:108 -msgid "show" +#: include/like.php:41 +#, php-format +msgid "%1$s is attending %2$s's %3$s" msgstr "" -#: include/acl_selectors.php:354 view/theme/vier/config.php:108 -msgid "don't show" +#: include/like.php:46 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" msgstr "" -#: include/acl_selectors.php:360 mod/editpost.php:123 -msgid "CC: email addresses" +#: include/like.php:51 +#, php-format +msgid "%1$s may attend %2$s's %3$s" msgstr "" -#: include/acl_selectors.php:361 mod/editpost.php:130 -msgid "Example: bob@example.com, mary@example.com" +#: include/like.php:178 include/conversation.php:141 +#: include/conversation.php:293 include/text.php:1872 mod/subthread.php:88 +#: mod/tagger.php:62 +msgid "photo" msgstr "" -#: include/acl_selectors.php:363 mod/events.php:516 mod/photos.php:1176 -#: mod/photos.php:1558 -msgid "Permissions" +#: include/like.php:178 include/conversation.php:136 +#: include/conversation.php:146 include/conversation.php:288 +#: include/conversation.php:297 include/diaspora.php:1580 mod/subthread.php:88 +#: mod/tagger.php:62 +msgid "status" msgstr "" -#: include/acl_selectors.php:364 -msgid "Close" +#: include/like.php:180 include/conversation.php:133 +#: include/conversation.php:285 include/text.php:1870 +msgid "event" msgstr "" -#: include/api.php:1021 -#, php-format -msgid "Daily posting limit of %d posts reached. The post was rejected." +#: include/message.php:15 include/message.php:169 +msgid "[no subject]" msgstr "" -#: include/api.php:1041 -#, php-format -msgid "Weekly posting limit of %d posts reached. The post was rejected." +#: include/nav.php:35 mod/navigation.php:19 +msgid "Nothing new here" msgstr "" -#: include/api.php:1062 -#, php-format -msgid "Monthly posting limit of %d posts reached. The post was rejected." +#: include/nav.php:39 mod/navigation.php:23 +msgid "Clear notifications" msgstr "" -#: include/auth.php:45 -msgid "Logged out." +#: include/nav.php:40 include/text.php:1083 +msgid "@name, !forum, #tags, content" msgstr "" -#: include/auth.php:116 include/auth.php:178 mod/openid.php:110 -msgid "Login failed." +#: include/nav.php:78 view/theme/frio/theme.php:243 boot.php:1867 +msgid "Logout" msgstr "" -#: include/auth.php:132 include/user.php:75 -msgid "" -"We encountered a problem while logging in with the OpenID you provided. " -"Please check the correct spelling of the ID." +#: include/nav.php:78 view/theme/frio/theme.php:243 +msgid "End this session" msgstr "" -#: include/auth.php:132 include/user.php:75 -msgid "The error message was:" +#: include/nav.php:81 include/identity.php:769 mod/contacts.php:645 +#: mod/contacts.php:841 view/theme/frio/theme.php:246 +msgid "Status" msgstr "" -#: include/bb2diaspora.php:199 include/event.php:16 mod/localtime.php:12 -msgid "l F d, Y \\@ g:i A" +#: include/nav.php:81 include/nav.php:161 view/theme/frio/theme.php:246 +msgid "Your posts and conversations" msgstr "" -#: include/bb2diaspora.php:205 include/event.php:33 include/event.php:51 -#: include/event.php:488 -msgid "Starts:" +#: include/nav.php:82 include/identity.php:622 include/identity.php:744 +#: include/identity.php:777 mod/contacts.php:647 mod/contacts.php:849 +#: mod/newmember.php:32 mod/profperm.php:105 view/theme/frio/theme.php:247 +msgid "Profile" msgstr "" -#: include/bb2diaspora.php:213 include/event.php:36 include/event.php:57 -#: include/event.php:489 -msgid "Finishes:" +#: include/nav.php:82 view/theme/frio/theme.php:247 +msgid "Your profile page" msgstr "" -#: include/bb2diaspora.php:221 include/event.php:39 include/event.php:63 -#: include/event.php:490 include/identity.php:331 mod/contacts.php:636 -#: mod/directory.php:139 mod/events.php:501 mod/notifications.php:238 -msgid "Location:" +#: include/nav.php:83 include/identity.php:785 mod/fbrowser.php:31 +#: view/theme/frio/theme.php:248 +msgid "Photos" msgstr "" -#: include/bbcode.php:350 include/bbcode.php:1055 include/bbcode.php:1056 -msgid "Image/photo" +#: include/nav.php:83 view/theme/frio/theme.php:248 +msgid "Your photos" msgstr "" -#: include/bbcode.php:467 -#, php-format -msgid "%2$s %3$s" +#: include/nav.php:84 include/identity.php:793 include/identity.php:796 +#: view/theme/frio/theme.php:249 +msgid "Videos" msgstr "" -#: include/bbcode.php:1015 include/bbcode.php:1035 -msgid "$1 wrote:" +#: include/nav.php:84 view/theme/frio/theme.php:249 +msgid "Your videos" msgstr "" -#: include/bbcode.php:1064 include/bbcode.php:1065 -msgid "Encrypted content" +#: include/nav.php:85 include/nav.php:149 include/identity.php:805 +#: include/identity.php:816 mod/cal.php:270 mod/events.php:374 +#: view/theme/frio/theme.php:250 view/theme/frio/theme.php:254 +msgid "Events" msgstr "" -#: include/bbcode.php:1169 -msgid "Invalid source protocol" +#: include/nav.php:85 view/theme/frio/theme.php:250 +msgid "Your events" msgstr "" -#: include/bbcode.php:1179 -msgid "Invalid link protocol" +#: include/nav.php:86 +msgid "Personal notes" msgstr "" -#: include/contact_selectors.php:32 -msgid "Unknown | Not categorised" +#: include/nav.php:86 +msgid "Your personal notes" msgstr "" -#: include/contact_selectors.php:33 -msgid "Block immediately" +#: include/nav.php:95 mod/bookmarklet.php:12 boot.php:1868 +msgid "Login" msgstr "" -#: include/contact_selectors.php:34 -msgid "Shady, spammer, self-marketer" +#: include/nav.php:95 +msgid "Sign in" msgstr "" -#: include/contact_selectors.php:35 -msgid "Known to me, but no opinion" +#: include/nav.php:105 +msgid "Home Page" msgstr "" -#: include/contact_selectors.php:36 -msgid "OK, probably harmless" +#: include/nav.php:109 mod/register.php:289 boot.php:1844 +msgid "Register" msgstr "" -#: include/contact_selectors.php:37 -msgid "Reputable, has my trust" +#: include/nav.php:109 +msgid "Create an account" msgstr "" -#: include/contact_selectors.php:56 mod/admin.php:893 -msgid "Frequently" +#: include/nav.php:115 mod/help.php:47 view/theme/vier/theme.php:297 +msgid "Help" msgstr "" -#: include/contact_selectors.php:57 mod/admin.php:894 -msgid "Hourly" +#: include/nav.php:115 +msgid "Help and documentation" msgstr "" -#: include/contact_selectors.php:58 mod/admin.php:895 -msgid "Twice daily" +#: include/nav.php:119 +msgid "Apps" msgstr "" -#: include/contact_selectors.php:59 mod/admin.php:896 -msgid "Daily" +#: include/nav.php:119 +msgid "Addon applications, utilities, games" msgstr "" -#: include/contact_selectors.php:60 -msgid "Weekly" +#: include/nav.php:123 include/text.php:1080 mod/search.php:149 +msgid "Search" msgstr "" -#: include/contact_selectors.php:61 -msgid "Monthly" +#: include/nav.php:123 +msgid "Search site content" msgstr "" -#: include/contact_selectors.php:76 mod/dfrn_request.php:881 -msgid "Friendica" +#: include/nav.php:126 include/text.php:1088 +msgid "Full Text" msgstr "" -#: include/contact_selectors.php:77 -msgid "OStatus" +#: include/nav.php:127 include/text.php:1089 +msgid "Tags" msgstr "" -#: include/contact_selectors.php:78 -msgid "RSS/Atom" +#: include/nav.php:128 include/nav.php:192 include/identity.php:838 +#: include/identity.php:841 include/text.php:1090 mod/contacts.php:800 +#: mod/contacts.php:861 mod/viewcontacts.php:121 view/theme/frio/theme.php:257 +msgid "Contacts" msgstr "" -#: include/contact_selectors.php:79 include/contact_selectors.php:86 -#: mod/admin.php:1405 mod/admin.php:1418 mod/admin.php:1431 mod/admin.php:1449 -msgid "Email" +#: include/nav.php:143 include/nav.php:145 mod/community.php:32 +msgid "Community" msgstr "" -#: include/contact_selectors.php:80 mod/dfrn_request.php:883 -#: mod/settings.php:848 -msgid "Diaspora" +#: include/nav.php:143 +msgid "Conversations on this site" msgstr "" -#: include/contact_selectors.php:81 -msgid "Facebook" +#: include/nav.php:145 +msgid "Conversations on the network" msgstr "" -#: include/contact_selectors.php:82 -msgid "Zot!" +#: include/nav.php:149 include/identity.php:808 include/identity.php:819 +#: view/theme/frio/theme.php:254 +msgid "Events and Calendar" msgstr "" -#: include/contact_selectors.php:83 -msgid "LinkedIn" +#: include/nav.php:152 +msgid "Directory" msgstr "" -#: include/contact_selectors.php:84 -msgid "XMPP/IM" +#: include/nav.php:152 +msgid "People directory" msgstr "" -#: include/contact_selectors.php:85 -msgid "MySpace" +#: include/nav.php:154 +msgid "Information" msgstr "" -#: include/contact_selectors.php:87 -msgid "Google+" +#: include/nav.php:154 +msgid "Information about this friendica instance" msgstr "" -#: include/contact_selectors.php:88 -msgid "pump.io" +#: include/nav.php:158 view/theme/frio/theme.php:253 +msgid "Conversations from your friends" msgstr "" -#: include/contact_selectors.php:89 -msgid "Twitter" +#: include/nav.php:159 +msgid "Network Reset" msgstr "" -#: include/contact_selectors.php:90 -msgid "Diaspora Connector" +#: include/nav.php:159 +msgid "Load Network page with no filters" msgstr "" -#: include/contact_selectors.php:91 -msgid "GNU Social" +#: include/nav.php:166 +msgid "Friend Requests" msgstr "" -#: include/contact_selectors.php:92 -msgid "pnut" +#: include/nav.php:169 mod/notifications.php:96 +msgid "Notifications" msgstr "" -#: include/contact_selectors.php:93 -msgid "App.net" +#: include/nav.php:170 +msgid "See all notifications" msgstr "" -#: include/contact_selectors.php:104 -msgid "Hubzilla/Redmatrix" +#: include/nav.php:171 mod/settings.php:906 +msgid "Mark as seen" msgstr "" -#: include/contact_widgets.php:6 -msgid "Add New Contact" +#: include/nav.php:171 +msgid "Mark all system notifications seen" msgstr "" -#: include/contact_widgets.php:7 -msgid "Enter address or web location" +#: include/nav.php:175 mod/message.php:179 view/theme/frio/theme.php:255 +msgid "Messages" msgstr "" -#: include/contact_widgets.php:8 -msgid "Example: bob@example.com, http://example.com/barbara" +#: include/nav.php:175 view/theme/frio/theme.php:255 +msgid "Private mail" msgstr "" -#: include/contact_widgets.php:10 include/identity.php:219 -#: mod/allfriends.php:85 mod/dirfind.php:207 mod/match.php:89 -#: mod/suggest.php:101 -msgid "Connect" +#: include/nav.php:176 +msgid "Inbox" msgstr "" -#: include/contact_widgets.php:24 -#, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "" -msgstr[1] "" +#: include/nav.php:177 +msgid "Outbox" +msgstr "" -#: include/contact_widgets.php:30 -msgid "Find People" +#: include/nav.php:178 mod/message.php:16 +msgid "New Message" msgstr "" -#: include/contact_widgets.php:31 -msgid "Enter name or interest" +#: include/nav.php:181 +msgid "Manage" msgstr "" -#: include/contact_widgets.php:33 -msgid "Examples: Robert Morgenstein, Fishing" +#: include/nav.php:181 +msgid "Manage other pages" msgstr "" -#: include/contact_widgets.php:34 mod/contacts.php:806 mod/directory.php:206 -msgid "Find" +#: include/nav.php:184 mod/settings.php:81 +msgid "Delegations" msgstr "" -#: include/contact_widgets.php:35 mod/suggest.php:114 -#: view/theme/vier/theme.php:198 -msgid "Friend Suggestions" +#: include/nav.php:184 mod/delegate.php:130 +msgid "Delegate Page Management" msgstr "" -#: include/contact_widgets.php:36 view/theme/vier/theme.php:197 -msgid "Similar Interests" +#: include/nav.php:186 mod/newmember.php:22 mod/settings.php:111 +#: mod/admin.php:1618 mod/admin.php:1894 view/theme/frio/theme.php:256 +msgid "Settings" msgstr "" -#: include/contact_widgets.php:37 -msgid "Random Profile" +#: include/nav.php:186 view/theme/frio/theme.php:256 +msgid "Account settings" msgstr "" -#: include/contact_widgets.php:38 view/theme/vier/theme.php:199 -msgid "Invite Friends" +#: include/nav.php:189 include/identity.php:290 +msgid "Profiles" msgstr "" -#: include/contact_widgets.php:115 -msgid "Networks" +#: include/nav.php:189 +msgid "Manage/Edit Profiles" msgstr "" -#: include/contact_widgets.php:118 -msgid "All Networks" +#: include/nav.php:192 view/theme/frio/theme.php:257 +msgid "Manage/edit friends and contacts" msgstr "" -#: include/contact_widgets.php:150 include/features.php:104 -msgid "Saved Folders" +#: include/nav.php:197 mod/admin.php:196 +msgid "Admin" msgstr "" -#: include/contact_widgets.php:153 include/contact_widgets.php:187 -msgid "Everything" +#: include/nav.php:197 +msgid "Site setup and configuration" msgstr "" -#: include/contact_widgets.php:184 -msgid "Categories" +#: include/nav.php:200 +msgid "Navigation" msgstr "" -#: include/contact_widgets.php:248 -#, php-format -msgid "%d contact in common" -msgid_plural "%d contacts in common" -msgstr[0] "" -msgstr[1] "" +#: include/nav.php:200 +msgid "Site map" +msgstr "" -#: include/conversation.php:122 include/conversation.php:258 -#: include/like.php:180 include/text.php:1804 -msgid "event" +#: include/plugin.php:530 include/plugin.php:532 +msgid "Click here to upgrade." msgstr "" -#: include/conversation.php:125 include/conversation.php:134 -#: include/conversation.php:261 include/conversation.php:270 -#: include/diaspora.php:1530 include/like.php:178 mod/subthread.php:88 -#: mod/tagger.php:62 -msgid "status" +#: include/plugin.php:538 +msgid "This action exceeds the limits set by your subscription plan." msgstr "" -#: include/conversation.php:130 include/conversation.php:266 -#: include/like.php:178 include/text.php:1806 mod/subthread.php:88 -#: mod/tagger.php:62 -msgid "photo" +#: include/plugin.php:543 +msgid "This action is not available under your subscription plan." msgstr "" -#: include/conversation.php:141 include/diaspora.php:1526 include/like.php:27 -#, php-format -msgid "%1$s likes %2$s's %3$s" +#: include/profile_selectors.php:6 +msgid "Male" msgstr "" -#: include/conversation.php:144 include/like.php:31 include/like.php:36 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" +#: include/profile_selectors.php:6 +msgid "Female" msgstr "" -#: include/conversation.php:147 -#, php-format -msgid "%1$s attends %2$s's %3$s" +#: include/profile_selectors.php:6 +msgid "Currently Male" msgstr "" -#: include/conversation.php:150 -#, php-format -msgid "%1$s doesn't attend %2$s's %3$s" +#: include/profile_selectors.php:6 +msgid "Currently Female" msgstr "" -#: include/conversation.php:153 -#, php-format -msgid "%1$s attends maybe %2$s's %3$s" +#: include/profile_selectors.php:6 +msgid "Mostly Male" msgstr "" -#: include/conversation.php:185 mod/dfrn_confirm.php:478 -#, php-format -msgid "%1$s is now friends with %2$s" +#: include/profile_selectors.php:6 +msgid "Mostly Female" msgstr "" -#: include/conversation.php:219 -#, php-format -msgid "%1$s poked %2$s" +#: include/profile_selectors.php:6 +msgid "Transgender" msgstr "" -#: include/conversation.php:239 mod/mood.php:63 -#, php-format -msgid "%1$s is currently %2$s" +#: include/profile_selectors.php:6 +msgid "Intersex" msgstr "" -#: include/conversation.php:278 mod/tagger.php:95 -#, php-format -msgid "%1$s tagged %2$s's %3$s with %4$s" +#: include/profile_selectors.php:6 +msgid "Transsexual" msgstr "" -#: include/conversation.php:303 -msgid "post/item" +#: include/profile_selectors.php:6 +msgid "Hermaphrodite" msgstr "" -#: include/conversation.php:304 -#, php-format -msgid "%1$s marked %2$s's %3$s as favorite" +#: include/profile_selectors.php:6 +msgid "Neuter" msgstr "" -#: include/conversation.php:587 mod/content.php:372 mod/photos.php:1629 -#: mod/profiles.php:346 -msgid "Likes" +#: include/profile_selectors.php:6 +msgid "Non-specific" msgstr "" -#: include/conversation.php:587 mod/content.php:372 mod/photos.php:1629 -#: mod/profiles.php:350 -msgid "Dislikes" +#: include/profile_selectors.php:6 +msgid "Other" msgstr "" -#: include/conversation.php:588 include/conversation.php:1473 -#: mod/content.php:373 mod/photos.php:1630 -msgid "Attending" -msgid_plural "Attending" +#: include/profile_selectors.php:6 include/conversation.php:1547 +msgid "Undecided" +msgid_plural "Undecided" msgstr[0] "" msgstr[1] "" -#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1630 -msgid "Not attending" +#: include/profile_selectors.php:23 +msgid "Males" msgstr "" -#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1630 -msgid "Might attend" +#: include/profile_selectors.php:23 +msgid "Females" msgstr "" -#: include/conversation.php:710 mod/content.php:453 mod/content.php:759 -#: mod/photos.php:1703 object/Item.php:137 -msgid "Select" +#: include/profile_selectors.php:23 +msgid "Gay" msgstr "" -#: include/conversation.php:711 mod/admin.php:1423 mod/contacts.php:816 -#: mod/contacts.php:1015 mod/content.php:454 mod/content.php:760 -#: mod/group.php:181 mod/photos.php:1704 mod/settings.php:744 -#: object/Item.php:138 -msgid "Delete" +#: include/profile_selectors.php:23 +msgid "Lesbian" msgstr "" -#: include/conversation.php:755 mod/content.php:487 mod/content.php:915 -#: mod/content.php:916 object/Item.php:356 object/Item.php:357 -#, php-format -msgid "View %s's profile @ %s" +#: include/profile_selectors.php:23 +msgid "No Preference" msgstr "" -#: include/conversation.php:767 object/Item.php:344 -msgid "Categories:" +#: include/profile_selectors.php:23 +msgid "Bisexual" msgstr "" -#: include/conversation.php:768 object/Item.php:345 -msgid "Filed under:" +#: include/profile_selectors.php:23 +msgid "Autosexual" msgstr "" -#: include/conversation.php:775 mod/content.php:497 mod/content.php:928 -#: object/Item.php:370 -#, php-format -msgid "%s from %s" +#: include/profile_selectors.php:23 +msgid "Abstinent" msgstr "" -#: include/conversation.php:791 mod/content.php:513 -msgid "View in context" +#: include/profile_selectors.php:23 +msgid "Virgin" msgstr "" -#: include/conversation.php:793 include/conversation.php:1256 -#: mod/content.php:515 mod/content.php:953 mod/editpost.php:114 -#: mod/message.php:337 mod/message.php:522 mod/photos.php:1592 -#: mod/wallmessage.php:140 object/Item.php:395 -msgid "Please wait" +#: include/profile_selectors.php:23 +msgid "Deviant" msgstr "" -#: include/conversation.php:872 -msgid "remove" +#: include/profile_selectors.php:23 +msgid "Fetish" msgstr "" -#: include/conversation.php:876 -msgid "Delete Selected Items" +#: include/profile_selectors.php:23 +msgid "Oodles" msgstr "" -#: include/conversation.php:968 -msgid "Follow Thread" +#: include/profile_selectors.php:23 +msgid "Nonsexual" msgstr "" -#: include/conversation.php:1100 -#, php-format -msgid "%s likes this." +#: include/profile_selectors.php:42 +msgid "Single" msgstr "" -#: include/conversation.php:1103 -#, php-format -msgid "%s doesn't like this." +#: include/profile_selectors.php:42 +msgid "Lonely" msgstr "" -#: include/conversation.php:1106 -#, php-format -msgid "%s attends." +#: include/profile_selectors.php:42 +msgid "Available" msgstr "" -#: include/conversation.php:1109 -#, php-format -msgid "%s doesn't attend." +#: include/profile_selectors.php:42 +msgid "Unavailable" msgstr "" -#: include/conversation.php:1112 -#, php-format -msgid "%s attends maybe." +#: include/profile_selectors.php:42 +msgid "Has crush" msgstr "" -#: include/conversation.php:1122 -msgid "and" +#: include/profile_selectors.php:42 +msgid "Infatuated" msgstr "" -#: include/conversation.php:1128 -#, php-format -msgid ", and %d other people" +#: include/profile_selectors.php:42 +msgid "Dating" msgstr "" -#: include/conversation.php:1137 -#, php-format -msgid "%2$d people like this" +#: include/profile_selectors.php:42 +msgid "Unfaithful" msgstr "" -#: include/conversation.php:1138 -#, php-format -msgid "%s like this." +#: include/profile_selectors.php:42 +msgid "Sex Addict" msgstr "" -#: include/conversation.php:1141 -#, php-format -msgid "%2$d people don't like this" +#: include/profile_selectors.php:42 include/user.php:263 include/user.php:267 +msgid "Friends" msgstr "" -#: include/conversation.php:1142 -#, php-format -msgid "%s don't like this." +#: include/profile_selectors.php:42 +msgid "Friends/Benefits" msgstr "" -#: include/conversation.php:1145 -#, php-format -msgid "%2$d people attend" +#: include/profile_selectors.php:42 +msgid "Casual" msgstr "" -#: include/conversation.php:1146 -#, php-format -msgid "%s attend." +#: include/profile_selectors.php:42 +msgid "Engaged" msgstr "" -#: include/conversation.php:1149 -#, php-format -msgid "%2$d people don't attend" +#: include/profile_selectors.php:42 +msgid "Married" msgstr "" -#: include/conversation.php:1150 -#, php-format -msgid "%s don't attend." +#: include/profile_selectors.php:42 +msgid "Imaginarily married" msgstr "" -#: include/conversation.php:1153 -#, php-format -msgid "%2$d people attend maybe" +#: include/profile_selectors.php:42 +msgid "Partners" msgstr "" -#: include/conversation.php:1154 -#, php-format -msgid "%s anttend maybe." +#: include/profile_selectors.php:42 +msgid "Cohabiting" msgstr "" -#: include/conversation.php:1184 include/conversation.php:1200 -msgid "Visible to everybody" +#: include/profile_selectors.php:42 +msgid "Common law" msgstr "" -#: include/conversation.php:1185 include/conversation.php:1201 -#: mod/message.php:271 mod/message.php:278 mod/message.php:418 -#: mod/message.php:425 mod/wallmessage.php:114 mod/wallmessage.php:121 -msgid "Please enter a link URL:" +#: include/profile_selectors.php:42 +msgid "Happy" msgstr "" -#: include/conversation.php:1186 include/conversation.php:1202 -msgid "Please enter a video link/URL:" +#: include/profile_selectors.php:42 +msgid "Not looking" msgstr "" -#: include/conversation.php:1187 include/conversation.php:1203 -msgid "Please enter an audio link/URL:" +#: include/profile_selectors.php:42 +msgid "Swinger" msgstr "" -#: include/conversation.php:1188 include/conversation.php:1204 -msgid "Tag term:" +#: include/profile_selectors.php:42 +msgid "Betrayed" msgstr "" -#: include/conversation.php:1189 include/conversation.php:1205 -#: mod/filer.php:30 -msgid "Save to Folder:" +#: include/profile_selectors.php:42 +msgid "Separated" msgstr "" -#: include/conversation.php:1190 include/conversation.php:1206 -msgid "Where are you right now?" +#: include/profile_selectors.php:42 +msgid "Unstable" msgstr "" -#: include/conversation.php:1191 -msgid "Delete item(s)?" +#: include/profile_selectors.php:42 +msgid "Divorced" msgstr "" -#: include/conversation.php:1237 -msgid "Share" +#: include/profile_selectors.php:42 +msgid "Imaginarily divorced" msgstr "" -#: include/conversation.php:1238 mod/editpost.php:100 mod/message.php:335 -#: mod/message.php:519 mod/wallmessage.php:138 -msgid "Upload photo" +#: include/profile_selectors.php:42 +msgid "Widowed" msgstr "" -#: include/conversation.php:1239 mod/editpost.php:101 -msgid "upload photo" +#: include/profile_selectors.php:42 +msgid "Uncertain" msgstr "" -#: include/conversation.php:1240 mod/editpost.php:102 -msgid "Attach file" +#: include/profile_selectors.php:42 +msgid "It's complicated" msgstr "" -#: include/conversation.php:1241 mod/editpost.php:103 -msgid "attach file" +#: include/profile_selectors.php:42 +msgid "Don't care" msgstr "" -#: include/conversation.php:1242 mod/editpost.php:104 mod/message.php:336 -#: mod/message.php:520 mod/wallmessage.php:139 -msgid "Insert web link" +#: include/profile_selectors.php:42 +msgid "Ask me" msgstr "" -#: include/conversation.php:1243 mod/editpost.php:105 -msgid "web link" +#: include/security.php:61 +msgid "Welcome " msgstr "" -#: include/conversation.php:1244 mod/editpost.php:106 -msgid "Insert video link" +#: include/security.php:62 +msgid "Please upload a profile photo." msgstr "" -#: include/conversation.php:1245 mod/editpost.php:107 -msgid "video link" +#: include/security.php:65 +msgid "Welcome back " msgstr "" -#: include/conversation.php:1246 mod/editpost.php:108 -msgid "Insert audio link" +#: include/security.php:429 +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/conversation.php:1247 mod/editpost.php:109 -msgid "audio link" +#: include/uimport.php:91 +msgid "Error decoding account file" msgstr "" -#: include/conversation.php:1248 mod/editpost.php:110 -msgid "Set your location" +#: include/uimport.php:97 +msgid "Error! No version data in file! This is not a Friendica account file?" msgstr "" -#: include/conversation.php:1249 mod/editpost.php:111 -msgid "set location" +#: include/uimport.php:113 include/uimport.php:124 +msgid "Error! Cannot check nickname" msgstr "" -#: include/conversation.php:1250 mod/editpost.php:112 -msgid "Clear browser location" +#: include/uimport.php:117 include/uimport.php:128 +#, php-format +msgid "User '%s' already exists on this server!" msgstr "" -#: include/conversation.php:1251 mod/editpost.php:113 -msgid "clear location" +#: include/uimport.php:150 +msgid "User creation error" msgstr "" -#: include/conversation.php:1253 mod/editpost.php:127 -msgid "Set title" +#: include/uimport.php:170 +msgid "User profile creation error" msgstr "" -#: include/conversation.php:1255 mod/editpost.php:129 -msgid "Categories (comma-separated list)" -msgstr "" +#: include/uimport.php:219 +#, php-format +msgid "%d contact not imported" +msgid_plural "%d contacts not imported" +msgstr[0] "" +msgstr[1] "" -#: include/conversation.php:1257 mod/editpost.php:115 -msgid "Permission settings" +#: include/uimport.php:289 +msgid "Done. You can now login with your username and password" msgstr "" -#: include/conversation.php:1258 mod/editpost.php:144 -msgid "permissions" +#: include/Contact.php:395 include/Contact.php:408 include/Contact.php:453 +#: include/conversation.php:1004 include/conversation.php:1020 +#: mod/allfriends.php:68 mod/directory.php:157 mod/match.php:73 +#: mod/suggest.php:82 mod/dirfind.php:209 +msgid "View Profile" msgstr "" -#: include/conversation.php:1266 mod/editpost.php:124 -msgid "Public post" +#: include/Contact.php:409 include/contact_widgets.php:32 +#: include/conversation.php:1017 mod/allfriends.php:69 mod/contacts.php:610 +#: mod/match.php:74 mod/suggest.php:83 mod/dirfind.php:210 mod/follow.php:106 +msgid "Connect/Follow" msgstr "" -#: include/conversation.php:1271 mod/content.php:737 mod/editpost.php:135 -#: mod/events.php:511 mod/photos.php:1613 mod/photos.php:1661 -#: mod/photos.php:1747 object/Item.php:714 -msgid "Preview" +#: include/Contact.php:452 include/conversation.php:1003 +msgid "View Status" msgstr "" -#: include/conversation.php:1275 include/items.php:1983 mod/contacts.php:455 -#: mod/dfrn_request.php:889 mod/editpost.php:138 mod/fbrowser.php:100 -#: mod/fbrowser.php:135 mod/follow.php:124 mod/message.php:209 -#: mod/photos.php:240 mod/photos.php:331 mod/settings.php:682 -#: mod/settings.php:708 mod/suggest.php:32 mod/tagrm.php:11 mod/tagrm.php:96 -#: mod/videos.php:132 -msgid "Cancel" +#: include/Contact.php:454 include/conversation.php:1005 +msgid "View Photos" msgstr "" -#: include/conversation.php:1281 -msgid "Post to Groups" +#: include/Contact.php:455 include/conversation.php:1006 +msgid "Network Posts" msgstr "" -#: include/conversation.php:1282 -msgid "Post to Contacts" +#: include/Contact.php:456 include/conversation.php:1007 +msgid "View Contact" msgstr "" -#: include/conversation.php:1283 -msgid "Private post" +#: include/Contact.php:457 +msgid "Drop Contact" msgstr "" -#: include/conversation.php:1288 include/identity.php:259 mod/editpost.php:142 -msgid "Message" +#: include/Contact.php:458 include/conversation.php:1008 +msgid "Send PM" msgstr "" -#: include/conversation.php:1289 mod/editpost.php:143 -msgid "Browser" +#: include/Contact.php:459 include/conversation.php:1012 +msgid "Poke" msgstr "" -#: include/conversation.php:1445 -msgid "View all" +#: include/Contact.php:840 +msgid "Organisation" msgstr "" -#: include/conversation.php:1467 -msgid "Like" -msgid_plural "Likes" -msgstr[0] "" -msgstr[1] "" +#: include/Contact.php:843 +msgid "News" +msgstr "" -#: include/conversation.php:1470 -msgid "Dislike" -msgid_plural "Dislikes" -msgstr[0] "" -msgstr[1] "" +#: include/Contact.php:846 +msgid "Forum" +msgstr "" -#: include/conversation.php:1476 -msgid "Not Attending" -msgid_plural "Not Attending" -msgstr[0] "" -msgstr[1] "" +#: include/acl_selectors.php:353 +msgid "Post to Email" +msgstr "" -#: include/conversation.php:1479 include/profile_selectors.php:6 -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "" -msgstr[1] "" +#: include/acl_selectors.php:358 +#, php-format +msgid "Connectors disabled, since \"%s\" is enabled." +msgstr "" -#: include/datetime.php:58 include/datetime.php:60 mod/profiles.php:697 -msgid "Miscellaneous" +#: include/acl_selectors.php:359 mod/settings.php:1188 +msgid "Hide your profile details from unknown viewers?" msgstr "" -#: include/datetime.php:184 include/identity.php:641 -msgid "Birthday:" +#: include/acl_selectors.php:365 +msgid "Visible to everybody" msgstr "" -#: include/datetime.php:186 mod/profiles.php:720 -msgid "Age: " +#: include/acl_selectors.php:366 view/theme/vier/config.php:108 +msgid "show" msgstr "" -#: include/datetime.php:188 -msgid "YYYY-MM-DD or MM-DD" +#: include/acl_selectors.php:367 view/theme/vier/config.php:108 +msgid "don't show" msgstr "" -#: include/datetime.php:343 -msgid "never" +#: include/acl_selectors.php:373 mod/editpost.php:123 +msgid "CC: email addresses" msgstr "" -#: include/datetime.php:349 -msgid "less than a second ago" +#: include/acl_selectors.php:374 mod/editpost.php:130 +msgid "Example: bob@example.com, mary@example.com" msgstr "" -#: include/datetime.php:352 -msgid "year" +#: include/acl_selectors.php:376 mod/events.php:508 mod/photos.php:1196 +#: mod/photos.php:1593 +msgid "Permissions" msgstr "" -#: include/datetime.php:352 -msgid "years" +#: include/acl_selectors.php:377 +msgid "Close" msgstr "" -#: include/datetime.php:353 include/event.php:481 mod/cal.php:279 -#: mod/events.php:396 -msgid "month" +#: include/api.php:1089 +#, php-format +msgid "Daily posting limit of %d posts reached. The post was rejected." msgstr "" -#: include/datetime.php:353 -msgid "months" +#: include/api.php:1110 +#, php-format +msgid "Weekly posting limit of %d posts reached. The post was rejected." msgstr "" -#: include/datetime.php:354 include/event.php:482 mod/cal.php:280 -#: mod/events.php:397 -msgid "week" +#: include/api.php:1131 +#, php-format +msgid "Monthly posting limit of %d posts reached. The post was rejected." msgstr "" -#: include/datetime.php:354 -msgid "weeks" +#: include/auth.php:51 +msgid "Logged out." msgstr "" -#: include/datetime.php:355 include/event.php:483 mod/cal.php:281 -#: mod/events.php:398 -msgid "day" +#: include/auth.php:122 include/auth.php:184 mod/openid.php:110 +msgid "Login failed." msgstr "" -#: include/datetime.php:355 -msgid "days" +#: include/auth.php:138 include/user.php:75 +msgid "" +"We encountered a problem while logging in with the OpenID you provided. " +"Please check the correct spelling of the ID." msgstr "" -#: include/datetime.php:356 -msgid "hour" +#: include/auth.php:138 include/user.php:75 +msgid "The error message was:" msgstr "" -#: include/datetime.php:356 -msgid "hours" +#: include/bb2diaspora.php:230 include/event.php:17 mod/localtime.php:12 +msgid "l F d, Y \\@ g:i A" msgstr "" -#: include/datetime.php:357 -msgid "minute" +#: include/bb2diaspora.php:236 include/event.php:34 include/event.php:54 +#: include/event.php:525 +msgid "Starts:" msgstr "" -#: include/datetime.php:357 -msgid "minutes" +#: include/bb2diaspora.php:244 include/event.php:37 include/event.php:60 +#: include/event.php:526 +msgid "Finishes:" msgstr "" -#: include/datetime.php:358 -msgid "second" +#: include/bb2diaspora.php:253 include/event.php:41 include/event.php:67 +#: include/event.php:527 include/identity.php:336 mod/contacts.php:636 +#: mod/directory.php:139 mod/events.php:493 mod/notifications.php:244 +msgid "Location:" msgstr "" -#: include/datetime.php:358 -msgid "seconds" +#: include/bbcode.php:380 include/bbcode.php:1132 include/bbcode.php:1133 +msgid "Image/photo" msgstr "" -#: include/datetime.php:367 +#: include/bbcode.php:497 #, php-format -msgid "%1$d %2$s ago" +msgid "%2$s %3$s" msgstr "" -#: include/datetime.php:585 -#, php-format -msgid "%s's birthday" +#: include/bbcode.php:1089 include/bbcode.php:1111 +msgid "$1 wrote:" msgstr "" -#: include/datetime.php:586 include/dfrn.php:1131 -#, php-format -msgid "Happy Birthday %s" +#: include/bbcode.php:1141 include/bbcode.php:1142 +msgid "Encrypted content" msgstr "" -#: include/dba.php:43 include/dba_pdo.php:72 -#, php-format -msgid "Cannot locate DNS info for database server '%s'" +#: include/bbcode.php:1257 +msgid "Invalid source protocol" msgstr "" -#: include/dbstructure.php:36 -#, php-format -msgid "" -"\n" -"\t\t\tThe friendica developers released update %s recently,\n" -"\t\t\tbut when I tried to install it, something went terribly wrong.\n" -"\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n" -"\t\t\tfriendica developer if you can not help me on your own. My database " -"might be invalid." +#: include/bbcode.php:1267 +msgid "Invalid link protocol" msgstr "" -#: include/dbstructure.php:41 -#, php-format -msgid "" -"The error message is\n" -"[pre]%s[/pre]" +#: include/contact_selectors.php:32 +msgid "Unknown | Not categorised" msgstr "" -#: include/dbstructure.php:199 -msgid "Errors encountered creating database tables." +#: include/contact_selectors.php:33 +msgid "Block immediately" msgstr "" -#: include/dbstructure.php:333 include/dbstructure.php:341 -#: include/dbstructure.php:349 include/dbstructure.php:354 -#: include/dbstructure.php:359 -msgid "Errors encountered performing database changes." +#: include/contact_selectors.php:34 +msgid "Shady, spammer, self-marketer" msgstr "" -#: include/delivery.php:427 -msgid "(no subject)" +#: include/contact_selectors.php:35 +msgid "Known to me, but no opinion" msgstr "" -#: include/delivery.php:439 include/enotify.php:43 -msgid "noreply" +#: include/contact_selectors.php:36 +msgid "OK, probably harmless" msgstr "" -#: include/dfrn.php:1130 -#, php-format -msgid "%s\\'s birthday" +#: include/contact_selectors.php:37 +msgid "Reputable, has my trust" msgstr "" -#: include/diaspora.php:2087 -msgid "Sharing notification from Diaspora network" +#: include/contact_selectors.php:56 mod/admin.php:980 +msgid "Frequently" msgstr "" -#: include/diaspora.php:3096 -msgid "Attachments:" +#: include/contact_selectors.php:57 mod/admin.php:981 +msgid "Hourly" msgstr "" -#: include/enotify.php:24 -msgid "Friendica Notification" +#: include/contact_selectors.php:58 mod/admin.php:982 +msgid "Twice daily" msgstr "" -#: include/enotify.php:27 -msgid "Thank You," +#: include/contact_selectors.php:59 mod/admin.php:983 +msgid "Daily" msgstr "" -#: include/enotify.php:30 -#, php-format -msgid "%s Administrator" +#: include/contact_selectors.php:60 +msgid "Weekly" msgstr "" -#: include/enotify.php:32 -#, php-format -msgid "%1$s, %2$s Administrator" +#: include/contact_selectors.php:61 +msgid "Monthly" msgstr "" -#: include/enotify.php:70 -#, php-format -msgid "%s " +#: include/contact_selectors.php:76 mod/dfrn_request.php:886 +msgid "Friendica" msgstr "" -#: include/enotify.php:83 -#, php-format -msgid "[Friendica:Notify] New mail received at %s" +#: include/contact_selectors.php:77 +msgid "OStatus" msgstr "" -#: include/enotify.php:85 -#, php-format -msgid "%1$s sent you a new private message at %2$s." +#: include/contact_selectors.php:78 +msgid "RSS/Atom" msgstr "" -#: include/enotify.php:86 -#, php-format -msgid "%1$s sent you %2$s." +#: include/contact_selectors.php:79 include/contact_selectors.php:86 +#: mod/admin.php:1490 mod/admin.php:1503 mod/admin.php:1516 mod/admin.php:1534 +msgid "Email" msgstr "" -#: include/enotify.php:86 -msgid "a private message" +#: include/contact_selectors.php:80 mod/dfrn_request.php:888 +#: mod/settings.php:848 +msgid "Diaspora" msgstr "" -#: include/enotify.php:88 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." +#: include/contact_selectors.php:81 +msgid "Facebook" msgstr "" -#: include/enotify.php:134 -#, php-format -msgid "%1$s commented on [url=%2$s]a %3$s[/url]" +#: include/contact_selectors.php:82 +msgid "Zot!" msgstr "" -#: include/enotify.php:141 -#, php-format -msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" +#: include/contact_selectors.php:83 +msgid "LinkedIn" msgstr "" -#: include/enotify.php:149 -#, php-format -msgid "%1$s commented on [url=%2$s]your %3$s[/url]" +#: include/contact_selectors.php:84 +msgid "XMPP/IM" msgstr "" -#: include/enotify.php:159 -#, php-format -msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" +#: include/contact_selectors.php:85 +msgid "MySpace" msgstr "" -#: include/enotify.php:161 -#, php-format -msgid "%s commented on an item/conversation you have been following." +#: include/contact_selectors.php:87 +msgid "Google+" msgstr "" -#: include/enotify.php:164 include/enotify.php:178 include/enotify.php:192 -#: include/enotify.php:206 include/enotify.php:224 include/enotify.php:238 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." +#: include/contact_selectors.php:88 +msgid "pump.io" msgstr "" -#: include/enotify.php:171 -#, php-format -msgid "[Friendica:Notify] %s posted to your profile wall" +#: include/contact_selectors.php:89 +msgid "Twitter" msgstr "" -#: include/enotify.php:173 -#, php-format -msgid "%1$s posted to your profile wall at %2$s" +#: include/contact_selectors.php:90 +msgid "Diaspora Connector" msgstr "" -#: include/enotify.php:174 -#, php-format -msgid "%1$s posted to [url=%2$s]your wall[/url]" +#: include/contact_selectors.php:91 +msgid "GNU Social Connector" msgstr "" -#: include/enotify.php:185 -#, php-format -msgid "[Friendica:Notify] %s tagged you" +#: include/contact_selectors.php:92 +msgid "pnut" msgstr "" -#: include/enotify.php:187 -#, php-format -msgid "%1$s tagged you at %2$s" +#: include/contact_selectors.php:93 +msgid "App.net" msgstr "" -#: include/enotify.php:188 -#, php-format -msgid "%1$s [url=%2$s]tagged you[/url]." +#: include/contact_widgets.php:6 +msgid "Add New Contact" msgstr "" -#: include/enotify.php:199 -#, php-format -msgid "[Friendica:Notify] %s shared a new post" +#: include/contact_widgets.php:7 +msgid "Enter address or web location" msgstr "" -#: include/enotify.php:201 -#, php-format -msgid "%1$s shared a new post at %2$s" +#: include/contact_widgets.php:8 +msgid "Example: bob@example.com, http://example.com/barbara" msgstr "" -#: include/enotify.php:202 -#, php-format -msgid "%1$s [url=%2$s]shared a post[/url]." +#: include/contact_widgets.php:10 include/identity.php:224 +#: mod/allfriends.php:85 mod/match.php:89 mod/suggest.php:101 +#: mod/dirfind.php:207 +msgid "Connect" msgstr "" -#: include/enotify.php:213 +#: include/contact_widgets.php:24 #, php-format -msgid "[Friendica:Notify] %1$s poked you" -msgstr "" +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "" +msgstr[1] "" -#: include/enotify.php:215 -#, php-format -msgid "%1$s poked you at %2$s" +#: include/contact_widgets.php:30 +msgid "Find People" msgstr "" -#: include/enotify.php:216 -#, php-format -msgid "%1$s [url=%2$s]poked you[/url]." +#: include/contact_widgets.php:31 +msgid "Enter name or interest" msgstr "" -#: include/enotify.php:231 -#, php-format -msgid "[Friendica:Notify] %s tagged your post" +#: include/contact_widgets.php:33 +msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: include/enotify.php:233 -#, php-format -msgid "%1$s tagged your post at %2$s" +#: include/contact_widgets.php:34 mod/contacts.php:806 mod/directory.php:206 +msgid "Find" msgstr "" -#: include/enotify.php:234 -#, php-format -msgid "%1$s tagged [url=%2$s]your post[/url]" +#: include/contact_widgets.php:35 mod/suggest.php:114 +#: view/theme/vier/theme.php:201 +msgid "Friend Suggestions" msgstr "" -#: include/enotify.php:245 -msgid "[Friendica:Notify] Introduction received" +#: include/contact_widgets.php:36 view/theme/vier/theme.php:200 +msgid "Similar Interests" msgstr "" -#: include/enotify.php:247 -#, php-format -msgid "You've received an introduction from '%1$s' at %2$s" +#: include/contact_widgets.php:37 +msgid "Random Profile" msgstr "" -#: include/enotify.php:248 -#, php-format -msgid "You've received [url=%1$s]an introduction[/url] from %2$s." +#: include/contact_widgets.php:38 view/theme/vier/theme.php:202 +msgid "Invite Friends" msgstr "" -#: include/enotify.php:252 include/enotify.php:295 -#, php-format -msgid "You may visit their profile at %s" +#: include/contact_widgets.php:125 +msgid "Networks" msgstr "" -#: include/enotify.php:254 -#, php-format -msgid "Please visit %s to approve or reject the introduction." +#: include/contact_widgets.php:128 +msgid "All Networks" msgstr "" -#: include/enotify.php:262 -msgid "[Friendica:Notify] A new person is sharing with you" +#: include/contact_widgets.php:160 include/features.php:104 +msgid "Saved Folders" msgstr "" -#: include/enotify.php:264 include/enotify.php:265 -#, php-format -msgid "%1$s is sharing with you at %2$s" +#: include/contact_widgets.php:163 include/contact_widgets.php:198 +msgid "Everything" msgstr "" -#: include/enotify.php:271 -msgid "[Friendica:Notify] You have a new follower" +#: include/contact_widgets.php:195 +msgid "Categories" msgstr "" -#: include/enotify.php:273 include/enotify.php:274 +#: include/contact_widgets.php:264 #, php-format -msgid "You have a new follower at %2$s : %1$s" -msgstr "" +msgid "%d contact in common" +msgid_plural "%d contacts in common" +msgstr[0] "" +msgstr[1] "" -#: include/enotify.php:285 -msgid "[Friendica:Notify] Friend suggestion received" +#: include/conversation.php:159 +#, php-format +msgid "%1$s attends %2$s's %3$s" msgstr "" -#: include/enotify.php:287 +#: include/conversation.php:162 #, php-format -msgid "You've received a friend suggestion from '%1$s' at %2$s" +msgid "%1$s doesn't attend %2$s's %3$s" msgstr "" -#: include/enotify.php:288 +#: include/conversation.php:165 #, php-format -msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." +msgid "%1$s attends maybe %2$s's %3$s" msgstr "" -#: include/enotify.php:293 -msgid "Name:" +#: include/conversation.php:198 mod/dfrn_confirm.php:478 +#, php-format +msgid "%1$s is now friends with %2$s" msgstr "" -#: include/enotify.php:294 -msgid "Photo:" +#: include/conversation.php:239 +#, php-format +msgid "%1$s poked %2$s" msgstr "" -#: include/enotify.php:297 +#: include/conversation.php:260 mod/mood.php:63 #, php-format -msgid "Please visit %s to approve or reject the suggestion." +msgid "%1$s is currently %2$s" msgstr "" -#: include/enotify.php:305 include/enotify.php:319 -msgid "[Friendica:Notify] Connection accepted" +#: include/conversation.php:307 mod/tagger.php:95 +#, php-format +msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: include/enotify.php:307 include/enotify.php:321 -#, php-format -msgid "'%1$s' has accepted your connection request at %2$s" +#: include/conversation.php:334 +msgid "post/item" msgstr "" -#: include/enotify.php:308 include/enotify.php:322 +#: include/conversation.php:335 #, php-format -msgid "%2$s has accepted your [url=%1$s]connection request[/url]." +msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: include/enotify.php:312 -msgid "" -"You are now mutual friends and may exchange status updates, photos, and " -"email without restriction." +#: include/conversation.php:614 mod/content.php:372 mod/photos.php:1662 +#: mod/profiles.php:340 +msgid "Likes" msgstr "" -#: include/enotify.php:314 -#, php-format -msgid "Please visit %s if you wish to make any changes to this relationship." +#: include/conversation.php:614 mod/content.php:372 mod/photos.php:1662 +#: mod/profiles.php:344 +msgid "Dislikes" msgstr "" -#: include/enotify.php:326 -#, php-format -msgid "" -"'%1$s' has chosen to accept you a \"fan\", which restricts some forms of " -"communication - such as private messaging and some profile interactions. If " -"this is a celebrity or community page, these settings were applied " -"automatically." -msgstr "" +#: include/conversation.php:615 include/conversation.php:1541 +#: mod/content.php:373 mod/photos.php:1663 +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "" +msgstr[1] "" -#: include/enotify.php:328 -#, php-format -msgid "" -"'%1$s' may choose to extend this into a two-way or more permissive " -"relationship in the future." +#: include/conversation.php:615 mod/content.php:373 mod/photos.php:1663 +msgid "Not attending" msgstr "" -#: include/enotify.php:330 -#, php-format -msgid "Please visit %s if you wish to make any changes to this relationship." +#: include/conversation.php:615 mod/content.php:373 mod/photos.php:1663 +msgid "Might attend" msgstr "" -#: include/enotify.php:340 -msgid "[Friendica System:Notify] registration request" +#: include/conversation.php:747 mod/content.php:453 mod/content.php:759 +#: mod/photos.php:1728 object/Item.php:137 +msgid "Select" msgstr "" -#: include/enotify.php:342 -#, php-format -msgid "You've received a registration request from '%1$s' at %2$s" +#: include/conversation.php:748 mod/contacts.php:816 mod/contacts.php:1015 +#: mod/content.php:454 mod/content.php:760 mod/photos.php:1729 +#: mod/settings.php:744 mod/admin.php:1508 object/Item.php:138 +msgid "Delete" msgstr "" -#: include/enotify.php:343 +#: include/conversation.php:791 mod/content.php:487 mod/content.php:915 +#: mod/content.php:916 object/Item.php:356 object/Item.php:357 #, php-format -msgid "You've received a [url=%1$s]registration request[/url] from %2$s." +msgid "View %s's profile @ %s" msgstr "" -#: include/enotify.php:347 -#, php-format -msgid "Full Name:\t%1$s\\nSite Location:\t%2$s\\nLogin Name:\t%3$s (%4$s)" +#: include/conversation.php:803 object/Item.php:344 +msgid "Categories:" msgstr "" -#: include/enotify.php:350 -#, php-format -msgid "Please visit %s to approve or reject the request." +#: include/conversation.php:804 object/Item.php:345 +msgid "Filed under:" msgstr "" -#: include/event.php:442 -msgid "Sun" +#: include/conversation.php:811 mod/content.php:497 mod/content.php:928 +#: object/Item.php:370 +#, php-format +msgid "%s from %s" msgstr "" -#: include/event.php:443 -msgid "Mon" +#: include/conversation.php:827 mod/content.php:513 +msgid "View in context" msgstr "" -#: include/event.php:444 -msgid "Tue" +#: include/conversation.php:829 include/conversation.php:1298 +#: mod/content.php:515 mod/content.php:953 mod/editpost.php:114 +#: mod/wallmessage.php:140 mod/message.php:337 mod/message.php:522 +#: mod/photos.php:1627 object/Item.php:395 +msgid "Please wait" msgstr "" -#: include/event.php:445 -msgid "Wed" +#: include/conversation.php:906 +msgid "remove" msgstr "" -#: include/event.php:446 -msgid "Thu" +#: include/conversation.php:910 +msgid "Delete Selected Items" msgstr "" -#: include/event.php:447 -msgid "Fri" +#: include/conversation.php:1002 +msgid "Follow Thread" msgstr "" -#: include/event.php:448 -msgid "Sat" +#: include/conversation.php:1139 +#, php-format +msgid "%s likes this." msgstr "" -#: include/event.php:449 include/text.php:1132 mod/settings.php:981 -msgid "Sunday" +#: include/conversation.php:1142 +#, php-format +msgid "%s doesn't like this." msgstr "" -#: include/event.php:450 include/text.php:1132 mod/settings.php:981 -msgid "Monday" +#: include/conversation.php:1145 +#, php-format +msgid "%s attends." msgstr "" -#: include/event.php:451 include/text.php:1132 -msgid "Tuesday" +#: include/conversation.php:1148 +#, php-format +msgid "%s doesn't attend." msgstr "" -#: include/event.php:452 include/text.php:1132 -msgid "Wednesday" +#: include/conversation.php:1151 +#, php-format +msgid "%s attends maybe." msgstr "" -#: include/event.php:453 include/text.php:1132 -msgid "Thursday" +#: include/conversation.php:1162 +msgid "and" msgstr "" -#: include/event.php:454 include/text.php:1132 -msgid "Friday" +#: include/conversation.php:1168 +#, php-format +msgid ", and %d other people" msgstr "" -#: include/event.php:455 include/text.php:1132 -msgid "Saturday" +#: include/conversation.php:1177 +#, php-format +msgid "%2$d people like this" msgstr "" -#: include/event.php:456 -msgid "Jan" +#: include/conversation.php:1178 +#, php-format +msgid "%s like this." msgstr "" -#: include/event.php:457 -msgid "Feb" +#: include/conversation.php:1181 +#, php-format +msgid "%2$d people don't like this" msgstr "" -#: include/event.php:458 -msgid "Mar" +#: include/conversation.php:1182 +#, php-format +msgid "%s don't like this." msgstr "" -#: include/event.php:459 -msgid "Apr" +#: include/conversation.php:1185 +#, php-format +msgid "%2$d people attend" msgstr "" -#: include/event.php:460 include/event.php:472 include/text.php:1136 -msgid "May" +#: include/conversation.php:1186 +#, php-format +msgid "%s attend." msgstr "" -#: include/event.php:461 -msgid "Jun" +#: include/conversation.php:1189 +#, php-format +msgid "%2$d people don't attend" msgstr "" -#: include/event.php:462 -msgid "Jul" +#: include/conversation.php:1190 +#, php-format +msgid "%s don't attend." msgstr "" -#: include/event.php:463 -msgid "Aug" +#: include/conversation.php:1193 +#, php-format +msgid "%2$d people attend maybe" msgstr "" -#: include/event.php:464 -msgid "Sept" +#: include/conversation.php:1194 +#, php-format +msgid "%s anttend maybe." msgstr "" -#: include/event.php:465 -msgid "Oct" +#: include/conversation.php:1223 include/conversation.php:1239 +msgid "Visible to everybody" msgstr "" -#: include/event.php:466 -msgid "Nov" +#: include/conversation.php:1224 include/conversation.php:1240 +#: mod/wallmessage.php:114 mod/wallmessage.php:121 mod/message.php:271 +#: mod/message.php:278 mod/message.php:418 mod/message.php:425 +msgid "Please enter a link URL:" msgstr "" -#: include/event.php:467 -msgid "Dec" +#: include/conversation.php:1225 include/conversation.php:1241 +msgid "Please enter a video link/URL:" msgstr "" -#: include/event.php:468 include/text.php:1136 -msgid "January" +#: include/conversation.php:1226 include/conversation.php:1242 +msgid "Please enter an audio link/URL:" msgstr "" -#: include/event.php:469 include/text.php:1136 -msgid "February" +#: include/conversation.php:1227 include/conversation.php:1243 +msgid "Tag term:" msgstr "" -#: include/event.php:470 include/text.php:1136 -msgid "March" +#: include/conversation.php:1228 include/conversation.php:1244 +#: mod/filer.php:30 +msgid "Save to Folder:" msgstr "" -#: include/event.php:471 include/text.php:1136 -msgid "April" +#: include/conversation.php:1229 include/conversation.php:1245 +msgid "Where are you right now?" msgstr "" -#: include/event.php:473 include/text.php:1136 -msgid "June" +#: include/conversation.php:1230 +msgid "Delete item(s)?" msgstr "" -#: include/event.php:474 include/text.php:1136 -msgid "July" +#: include/conversation.php:1279 +msgid "Share" msgstr "" -#: include/event.php:475 include/text.php:1136 -msgid "August" +#: include/conversation.php:1280 mod/editpost.php:100 mod/wallmessage.php:138 +#: mod/message.php:335 mod/message.php:519 +msgid "Upload photo" msgstr "" -#: include/event.php:476 include/text.php:1136 -msgid "September" +#: include/conversation.php:1281 mod/editpost.php:101 +msgid "upload photo" msgstr "" -#: include/event.php:477 include/text.php:1136 -msgid "October" +#: include/conversation.php:1282 mod/editpost.php:102 +msgid "Attach file" msgstr "" -#: include/event.php:478 include/text.php:1136 -msgid "November" +#: include/conversation.php:1283 mod/editpost.php:103 +msgid "attach file" msgstr "" -#: include/event.php:479 include/text.php:1136 -msgid "December" +#: include/conversation.php:1284 mod/editpost.php:104 mod/wallmessage.php:139 +#: mod/message.php:336 mod/message.php:520 +msgid "Insert web link" msgstr "" -#: include/event.php:480 mod/cal.php:278 mod/events.php:395 -msgid "today" +#: include/conversation.php:1285 mod/editpost.php:105 +msgid "web link" msgstr "" -#: include/event.php:484 -msgid "all-day" +#: include/conversation.php:1286 mod/editpost.php:106 +msgid "Insert video link" msgstr "" -#: include/event.php:486 -msgid "No events to display" +#: include/conversation.php:1287 mod/editpost.php:107 +msgid "video link" msgstr "" -#: include/event.php:596 -msgid "l, F j" +#: include/conversation.php:1288 mod/editpost.php:108 +msgid "Insert audio link" msgstr "" -#: include/event.php:615 -msgid "Edit event" +#: include/conversation.php:1289 mod/editpost.php:109 +msgid "audio link" msgstr "" -#: include/event.php:637 include/text.php:1534 include/text.php:1541 -msgid "link to source" +#: include/conversation.php:1290 mod/editpost.php:110 +msgid "Set your location" msgstr "" -#: include/event.php:872 -msgid "Export" +#: include/conversation.php:1291 mod/editpost.php:111 +msgid "set location" msgstr "" -#: include/event.php:873 -msgid "Export calendar as ical" +#: include/conversation.php:1292 mod/editpost.php:112 +msgid "Clear browser location" msgstr "" -#: include/event.php:874 -msgid "Export calendar as csv" +#: include/conversation.php:1293 mod/editpost.php:113 +msgid "clear location" msgstr "" -#: include/features.php:65 -msgid "General Features" +#: include/conversation.php:1295 mod/editpost.php:127 +msgid "Set title" msgstr "" -#: include/features.php:67 -msgid "Multiple Profiles" +#: include/conversation.php:1297 mod/editpost.php:129 +msgid "Categories (comma-separated list)" msgstr "" -#: include/features.php:67 -msgid "Ability to create multiple profiles" +#: include/conversation.php:1299 mod/editpost.php:115 +msgid "Permission settings" msgstr "" -#: include/features.php:68 -msgid "Photo Location" +#: include/conversation.php:1300 mod/editpost.php:144 +msgid "permissions" msgstr "" -#: include/features.php:68 -msgid "" -"Photo metadata is normally stripped. This extracts the location (if present) " -"prior to stripping metadata and links it to a map." +#: include/conversation.php:1308 mod/editpost.php:124 +msgid "Public post" msgstr "" -#: include/features.php:69 -msgid "Export Public Calendar" +#: include/conversation.php:1313 mod/content.php:737 mod/editpost.php:135 +#: mod/events.php:503 mod/photos.php:1647 mod/photos.php:1689 +#: mod/photos.php:1769 object/Item.php:714 +msgid "Preview" msgstr "" -#: include/features.php:69 -msgid "Ability for visitors to download the public calendar" +#: include/conversation.php:1317 include/items.php:2167 mod/contacts.php:455 +#: mod/editpost.php:138 mod/fbrowser.php:100 mod/fbrowser.php:135 +#: mod/suggest.php:32 mod/tagrm.php:11 mod/tagrm.php:96 +#: mod/dfrn_request.php:894 mod/follow.php:124 mod/message.php:209 +#: mod/photos.php:245 mod/photos.php:337 mod/settings.php:682 +#: mod/settings.php:708 mod/videos.php:132 +msgid "Cancel" msgstr "" -#: include/features.php:74 -msgid "Post Composition Features" +#: include/conversation.php:1323 +msgid "Post to Groups" msgstr "" -#: include/features.php:75 -msgid "Post Preview" +#: include/conversation.php:1324 +msgid "Post to Contacts" msgstr "" -#: include/features.php:75 -msgid "Allow previewing posts and comments before publishing them" +#: include/conversation.php:1325 +msgid "Private post" msgstr "" -#: include/features.php:76 -msgid "Auto-mention Forums" +#: include/conversation.php:1330 include/identity.php:264 mod/editpost.php:142 +msgid "Message" msgstr "" -#: include/features.php:76 -msgid "" -"Add/remove mention when a forum page is selected/deselected in ACL window." +#: include/conversation.php:1331 mod/editpost.php:143 +msgid "Browser" msgstr "" -#: include/features.php:81 -msgid "Network Sidebar Widgets" +#: include/conversation.php:1513 +msgid "View all" msgstr "" -#: include/features.php:82 -msgid "Search by Date" -msgstr "" +#: include/conversation.php:1535 +msgid "Like" +msgid_plural "Likes" +msgstr[0] "" +msgstr[1] "" -#: include/features.php:82 -msgid "Ability to select posts by date ranges" -msgstr "" +#: include/conversation.php:1538 +msgid "Dislike" +msgid_plural "Dislikes" +msgstr[0] "" +msgstr[1] "" -#: include/features.php:83 include/features.php:113 -msgid "List Forums" -msgstr "" +#: include/conversation.php:1544 +msgid "Not Attending" +msgid_plural "Not Attending" +msgstr[0] "" +msgstr[1] "" -#: include/features.php:83 -msgid "Enable widget to display the forums your are connected with" +#: include/datetime.php:66 include/datetime.php:68 mod/profiles.php:698 +msgid "Miscellaneous" msgstr "" -#: include/features.php:84 -msgid "Group Filter" +#: include/datetime.php:196 include/identity.php:644 +msgid "Birthday:" msgstr "" -#: include/features.php:84 -msgid "Enable widget to display Network posts only from selected group" +#: include/datetime.php:198 mod/profiles.php:721 +msgid "Age: " msgstr "" -#: include/features.php:85 -msgid "Network Filter" +#: include/datetime.php:200 +msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: include/features.php:85 -msgid "Enable widget to display Network posts only from selected network" +#: include/datetime.php:370 +msgid "never" msgstr "" -#: include/features.php:86 mod/network.php:199 mod/search.php:34 -msgid "Saved Searches" +#: include/datetime.php:376 +msgid "less than a second ago" msgstr "" -#: include/features.php:86 -msgid "Save search terms for re-use" +#: include/datetime.php:379 +msgid "year" msgstr "" -#: include/features.php:91 -msgid "Network Tabs" +#: include/datetime.php:379 +msgid "years" msgstr "" -#: include/features.php:92 -msgid "Network Personal Tab" +#: include/datetime.php:380 include/event.php:519 mod/cal.php:279 +#: mod/events.php:384 +msgid "month" msgstr "" -#: include/features.php:92 -msgid "Enable tab to display only Network posts that you've interacted on" +#: include/datetime.php:380 +msgid "months" msgstr "" -#: include/features.php:93 -msgid "Network New Tab" +#: include/datetime.php:381 include/event.php:520 mod/cal.php:280 +#: mod/events.php:385 +msgid "week" msgstr "" -#: include/features.php:93 -msgid "Enable tab to display only new Network posts (from the last 12 hours)" +#: include/datetime.php:381 +msgid "weeks" msgstr "" -#: include/features.php:94 -msgid "Network Shared Links Tab" +#: include/datetime.php:382 include/event.php:521 mod/cal.php:281 +#: mod/events.php:386 +msgid "day" msgstr "" -#: include/features.php:94 -msgid "Enable tab to display only Network posts with links in them" +#: include/datetime.php:382 +msgid "days" msgstr "" -#: include/features.php:99 -msgid "Post/Comment Tools" +#: include/datetime.php:383 +msgid "hour" msgstr "" -#: include/features.php:100 -msgid "Multiple Deletion" +#: include/datetime.php:383 +msgid "hours" msgstr "" -#: include/features.php:100 -msgid "Select and delete multiple posts/comments at once" +#: include/datetime.php:384 +msgid "minute" msgstr "" -#: include/features.php:101 -msgid "Edit Sent Posts" +#: include/datetime.php:384 +msgid "minutes" msgstr "" -#: include/features.php:101 -msgid "Edit and correct posts and comments after sending" +#: include/datetime.php:385 +msgid "second" msgstr "" -#: include/features.php:102 -msgid "Tagging" +#: include/datetime.php:385 +msgid "seconds" msgstr "" -#: include/features.php:102 -msgid "Ability to tag existing posts" +#: include/datetime.php:394 +#, php-format +msgid "%1$d %2$s ago" msgstr "" -#: include/features.php:103 -msgid "Post Categories" +#: include/datetime.php:620 +#, php-format +msgid "%s's birthday" msgstr "" -#: include/features.php:103 -msgid "Add categories to your posts" +#: include/datetime.php:621 include/dfrn.php:1252 +#, php-format +msgid "Happy Birthday %s" msgstr "" -#: include/features.php:104 -msgid "Ability to file posts under folders" -msgstr "" - -#: include/features.php:105 -msgid "Dislike Posts" +#: include/dba_pdo.php:72 include/dba.php:47 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" msgstr "" -#: include/features.php:105 -msgid "Ability to dislike posts/comments" +#: include/enotify.php:24 +msgid "Friendica Notification" msgstr "" -#: include/features.php:106 -msgid "Star Posts" +#: include/enotify.php:27 +msgid "Thank You," msgstr "" -#: include/features.php:106 -msgid "Ability to mark special posts with a star indicator" +#: include/enotify.php:30 +#, php-format +msgid "%s Administrator" msgstr "" -#: include/features.php:107 -msgid "Mute Post Notifications" +#: include/enotify.php:32 +#, php-format +msgid "%1$s, %2$s Administrator" msgstr "" -#: include/features.php:107 -msgid "Ability to mute notifications for a thread" +#: include/enotify.php:70 +#, php-format +msgid "%s " msgstr "" -#: include/features.php:112 -msgid "Advanced Profile Settings" +#: include/enotify.php:83 +#, php-format +msgid "[Friendica:Notify] New mail received at %s" msgstr "" -#: include/features.php:113 -msgid "Show visitors public community forums at the Advanced Profile Page" +#: include/enotify.php:85 +#, php-format +msgid "%1$s sent you a new private message at %2$s." msgstr "" -#: include/follow.php:81 mod/dfrn_request.php:512 -msgid "Disallowed profile URL." +#: include/enotify.php:86 +#, php-format +msgid "%1$s sent you %2$s." msgstr "" -#: include/follow.php:86 -msgid "Connect URL missing." +#: include/enotify.php:86 +msgid "a private message" msgstr "" -#: include/follow.php:114 -msgid "" -"This site is not configured to allow communications with other networks." +#: include/enotify.php:88 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." msgstr "" -#: include/follow.php:115 include/follow.php:129 -msgid "No compatible communication protocols or feeds were discovered." +#: include/enotify.php:134 +#, php-format +msgid "%1$s commented on [url=%2$s]a %3$s[/url]" msgstr "" -#: include/follow.php:127 -msgid "The profile address specified does not provide adequate information." +#: include/enotify.php:141 +#, php-format +msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" msgstr "" -#: include/follow.php:132 -msgid "An author or name was not found." +#: include/enotify.php:149 +#, php-format +msgid "%1$s commented on [url=%2$s]your %3$s[/url]" msgstr "" -#: include/follow.php:135 -msgid "No browser URL could be matched to this address." +#: include/enotify.php:159 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: include/follow.php:138 -msgid "" -"Unable to match @-style Identity Address with a known protocol or email " -"contact." +#: include/enotify.php:161 +#, php-format +msgid "%s commented on an item/conversation you have been following." msgstr "" -#: include/follow.php:139 -msgid "Use mailto: in front of address to force email check." +#: include/enotify.php:164 include/enotify.php:178 include/enotify.php:192 +#: include/enotify.php:206 include/enotify.php:224 include/enotify.php:238 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." msgstr "" -#: include/follow.php:145 -msgid "" -"The profile address specified belongs to a network which has been disabled " -"on this site." +#: include/enotify.php:171 +#, php-format +msgid "[Friendica:Notify] %s posted to your profile wall" msgstr "" -#: include/follow.php:150 -msgid "" -"Limited profile. This person will be unable to receive direct/personal " -"notifications from you." +#: include/enotify.php:173 +#, php-format +msgid "%1$s posted to your profile wall at %2$s" msgstr "" -#: include/follow.php:251 -msgid "Unable to retrieve contact information." +#: include/enotify.php:174 +#, php-format +msgid "%1$s posted to [url=%2$s]your wall[/url]" msgstr "" -#: include/group.php:25 -msgid "" -"A deleted group with this name was revived. Existing item permissions " -"may apply to this group and any future members. If this is " -"not what you intended, please create another group with a different name." +#: include/enotify.php:185 +#, php-format +msgid "[Friendica:Notify] %s tagged you" msgstr "" -#: include/group.php:210 -msgid "Default privacy group for new contacts" +#: include/enotify.php:187 +#, php-format +msgid "%1$s tagged you at %2$s" msgstr "" -#: include/group.php:243 -msgid "Everybody" +#: include/enotify.php:188 +#, php-format +msgid "%1$s [url=%2$s]tagged you[/url]." msgstr "" -#: include/group.php:266 -msgid "edit" +#: include/enotify.php:199 +#, php-format +msgid "[Friendica:Notify] %s shared a new post" msgstr "" -#: include/group.php:287 mod/newmember.php:61 -msgid "Groups" +#: include/enotify.php:201 +#, php-format +msgid "%1$s shared a new post at %2$s" msgstr "" -#: include/group.php:289 -msgid "Edit groups" +#: include/enotify.php:202 +#, php-format +msgid "%1$s [url=%2$s]shared a post[/url]." msgstr "" -#: include/group.php:291 -msgid "Edit group" +#: include/enotify.php:213 +#, php-format +msgid "[Friendica:Notify] %1$s poked you" msgstr "" -#: include/group.php:292 -msgid "Create a new group" +#: include/enotify.php:215 +#, php-format +msgid "%1$s poked you at %2$s" msgstr "" -#: include/group.php:293 mod/group.php:98 mod/group.php:188 -msgid "Group Name: " +#: include/enotify.php:216 +#, php-format +msgid "%1$s [url=%2$s]poked you[/url]." msgstr "" -#: include/group.php:295 -msgid "Contacts not in any group" +#: include/enotify.php:231 +#, php-format +msgid "[Friendica:Notify] %s tagged your post" msgstr "" -#: include/group.php:297 mod/network.php:200 -msgid "add" +#: include/enotify.php:233 +#, php-format +msgid "%1$s tagged your post at %2$s" msgstr "" -#: include/identity.php:43 -msgid "Requested account is not available." +#: include/enotify.php:234 +#, php-format +msgid "%1$s tagged [url=%2$s]your post[/url]" msgstr "" -#: include/identity.php:52 mod/profile.php:21 -msgid "Requested profile is not available." +#: include/enotify.php:245 +msgid "[Friendica:Notify] Introduction received" msgstr "" -#: include/identity.php:96 include/identity.php:314 include/identity.php:737 -msgid "Edit profile" +#: include/enotify.php:247 +#, php-format +msgid "You've received an introduction from '%1$s' at %2$s" msgstr "" -#: include/identity.php:254 -msgid "Atom feed" +#: include/enotify.php:248 +#, php-format +msgid "You've received [url=%1$s]an introduction[/url] from %2$s." msgstr "" -#: include/identity.php:285 include/nav.php:189 -msgid "Profiles" +#: include/enotify.php:252 include/enotify.php:295 +#, php-format +msgid "You may visit their profile at %s" msgstr "" -#: include/identity.php:285 -msgid "Manage/edit profiles" +#: include/enotify.php:254 +#, php-format +msgid "Please visit %s to approve or reject the introduction." msgstr "" -#: include/identity.php:290 include/identity.php:316 mod/profiles.php:789 -msgid "Change profile photo" +#: include/enotify.php:262 +msgid "[Friendica:Notify] A new person is sharing with you" msgstr "" -#: include/identity.php:291 mod/profiles.php:790 -msgid "Create New Profile" +#: include/enotify.php:264 include/enotify.php:265 +#, php-format +msgid "%1$s is sharing with you at %2$s" msgstr "" -#: include/identity.php:301 mod/profiles.php:779 -msgid "Profile Image" +#: include/enotify.php:271 +msgid "[Friendica:Notify] You have a new follower" msgstr "" -#: include/identity.php:304 mod/profiles.php:781 -msgid "visible to everybody" +#: include/enotify.php:273 include/enotify.php:274 +#, php-format +msgid "You have a new follower at %2$s : %1$s" msgstr "" -#: include/identity.php:305 mod/profiles.php:683 mod/profiles.php:782 -msgid "Edit visibility" +#: include/enotify.php:285 +msgid "[Friendica:Notify] Friend suggestion received" msgstr "" -#: include/identity.php:333 include/identity.php:628 mod/directory.php:141 -#: mod/notifications.php:244 -msgid "Gender:" +#: include/enotify.php:287 +#, php-format +msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: include/identity.php:336 include/identity.php:648 mod/directory.php:143 -msgid "Status:" +#: include/enotify.php:288 +#, php-format +msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." msgstr "" -#: include/identity.php:338 include/identity.php:664 mod/directory.php:145 -msgid "Homepage:" +#: include/enotify.php:293 +msgid "Name:" msgstr "" -#: include/identity.php:340 include/identity.php:684 mod/contacts.php:640 -#: mod/directory.php:147 mod/notifications.php:240 -msgid "About:" +#: include/enotify.php:294 +msgid "Photo:" msgstr "" -#: include/identity.php:342 mod/contacts.php:638 -msgid "XMPP:" +#: include/enotify.php:297 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." msgstr "" -#: include/identity.php:428 mod/contacts.php:55 mod/notifications.php:252 -msgid "Network:" +#: include/enotify.php:305 include/enotify.php:319 +msgid "[Friendica:Notify] Connection accepted" msgstr "" -#: include/identity.php:457 include/identity.php:547 -msgid "g A l F d" +#: include/enotify.php:307 include/enotify.php:321 +#, php-format +msgid "'%1$s' has accepted your connection request at %2$s" msgstr "" -#: include/identity.php:458 include/identity.php:548 -msgid "F d" +#: include/enotify.php:308 include/enotify.php:322 +#, php-format +msgid "%2$s has accepted your [url=%1$s]connection request[/url]." msgstr "" -#: include/identity.php:509 include/identity.php:594 -msgid "[today]" +#: include/enotify.php:312 +msgid "" +"You are now mutual friends and may exchange status updates, photos, and " +"email without restriction." msgstr "" -#: include/identity.php:521 -msgid "Birthday Reminders" +#: include/enotify.php:314 +#, php-format +msgid "Please visit %s if you wish to make any changes to this relationship." msgstr "" -#: include/identity.php:522 -msgid "Birthdays this week:" +#: include/enotify.php:326 +#, php-format +msgid "" +"'%1$s' has chosen to accept you a \"fan\", which restricts some forms of " +"communication - such as private messaging and some profile interactions. If " +"this is a celebrity or community page, these settings were applied " +"automatically." msgstr "" -#: include/identity.php:581 -msgid "[No description]" +#: include/enotify.php:328 +#, php-format +msgid "" +"'%1$s' may choose to extend this into a two-way or more permissive " +"relationship in the future." msgstr "" -#: include/identity.php:605 -msgid "Event Reminders" +#: include/enotify.php:330 +#, php-format +msgid "Please visit %s if you wish to make any changes to this relationship." msgstr "" -#: include/identity.php:606 -msgid "Events this week:" +#: include/enotify.php:340 +msgid "[Friendica System:Notify] registration request" msgstr "" -#: include/identity.php:617 include/identity.php:741 include/identity.php:774 -#: include/nav.php:82 mod/contacts.php:647 mod/contacts.php:849 -#: mod/newmember.php:32 mod/profperm.php:105 view/theme/frio/theme.php:247 -msgid "Profile" +#: include/enotify.php:342 +#, php-format +msgid "You've received a registration request from '%1$s' at %2$s" msgstr "" -#: include/identity.php:626 mod/settings.php:1286 -msgid "Full Name:" +#: include/enotify.php:343 +#, php-format +msgid "You've received a [url=%1$s]registration request[/url] from %2$s." msgstr "" -#: include/identity.php:633 -msgid "j F, Y" +#: include/enotify.php:347 +#, php-format +msgid "Full Name:\t%1$s\\nSite Location:\t%2$s\\nLogin Name:\t%3$s (%4$s)" msgstr "" -#: include/identity.php:634 -msgid "j F" +#: include/enotify.php:350 +#, php-format +msgid "Please visit %s to approve or reject the request." msgstr "" -#: include/identity.php:645 -msgid "Age:" +#: include/event.php:474 +msgid "all-day" msgstr "" -#: include/identity.php:656 -#, php-format -msgid "for %1$d %2$s" +#: include/event.php:476 +msgid "Sun" msgstr "" -#: include/identity.php:660 mod/profiles.php:702 -msgid "Sexual Preference:" +#: include/event.php:477 +msgid "Mon" msgstr "" -#: include/identity.php:668 mod/profiles.php:729 -msgid "Hometown:" +#: include/event.php:478 +msgid "Tue" msgstr "" -#: include/identity.php:672 mod/contacts.php:642 mod/follow.php:137 -#: mod/notifications.php:242 -msgid "Tags:" +#: include/event.php:479 +msgid "Wed" msgstr "" -#: include/identity.php:676 mod/profiles.php:730 -msgid "Political Views:" +#: include/event.php:480 +msgid "Thu" msgstr "" -#: include/identity.php:680 -msgid "Religion:" +#: include/event.php:481 +msgid "Fri" msgstr "" -#: include/identity.php:688 -msgid "Hobbies/Interests:" +#: include/event.php:482 +msgid "Sat" msgstr "" -#: include/identity.php:692 mod/profiles.php:734 -msgid "Likes:" +#: include/event.php:484 include/text.php:1198 mod/settings.php:981 +msgid "Sunday" msgstr "" -#: include/identity.php:696 mod/profiles.php:735 -msgid "Dislikes:" +#: include/event.php:485 include/text.php:1198 mod/settings.php:981 +msgid "Monday" msgstr "" -#: include/identity.php:700 -msgid "Contact information and Social Networks:" +#: include/event.php:486 include/text.php:1198 +msgid "Tuesday" msgstr "" -#: include/identity.php:704 -msgid "Musical interests:" +#: include/event.php:487 include/text.php:1198 +msgid "Wednesday" msgstr "" -#: include/identity.php:708 -msgid "Books, literature:" +#: include/event.php:488 include/text.php:1198 +msgid "Thursday" msgstr "" -#: include/identity.php:712 -msgid "Television:" +#: include/event.php:489 include/text.php:1198 +msgid "Friday" msgstr "" -#: include/identity.php:716 -msgid "Film/dance/culture/entertainment:" +#: include/event.php:490 include/text.php:1198 +msgid "Saturday" msgstr "" -#: include/identity.php:720 -msgid "Love/Romance:" +#: include/event.php:492 +msgid "Jan" msgstr "" -#: include/identity.php:724 -msgid "Work/employment:" +#: include/event.php:493 +msgid "Feb" msgstr "" -#: include/identity.php:728 -msgid "School/education:" +#: include/event.php:494 +msgid "Mar" msgstr "" -#: include/identity.php:733 -msgid "Forums:" +#: include/event.php:495 +msgid "Apr" msgstr "" -#: include/identity.php:742 mod/events.php:514 -msgid "Basic" +#: include/event.php:496 include/event.php:509 include/text.php:1202 +msgid "May" msgstr "" -#: include/identity.php:743 mod/admin.php:972 mod/contacts.php:878 -#: mod/events.php:515 -msgid "Advanced" +#: include/event.php:497 +msgid "Jun" msgstr "" -#: include/identity.php:766 include/nav.php:81 mod/contacts.php:645 -#: mod/contacts.php:841 view/theme/frio/theme.php:246 -msgid "Status" +#: include/event.php:498 +msgid "Jul" msgstr "" -#: include/identity.php:769 mod/contacts.php:844 mod/follow.php:145 -msgid "Status Messages and Posts" +#: include/event.php:499 +msgid "Aug" msgstr "" -#: include/identity.php:777 mod/contacts.php:852 -msgid "Profile Details" +#: include/event.php:500 +msgid "Sept" msgstr "" -#: include/identity.php:782 include/nav.php:83 mod/fbrowser.php:31 -#: view/theme/frio/theme.php:248 -msgid "Photos" +#: include/event.php:501 +msgid "Oct" msgstr "" -#: include/identity.php:785 mod/photos.php:89 -msgid "Photo Albums" +#: include/event.php:502 +msgid "Nov" msgstr "" -#: include/identity.php:790 include/identity.php:793 include/nav.php:84 -#: view/theme/frio/theme.php:249 -msgid "Videos" +#: include/event.php:503 +msgid "Dec" msgstr "" -#: include/identity.php:802 include/identity.php:813 include/nav.php:85 -#: include/nav.php:149 mod/cal.php:270 mod/events.php:386 -#: view/theme/frio/theme.php:250 view/theme/frio/theme.php:254 -msgid "Events" +#: include/event.php:505 include/text.php:1202 +msgid "January" msgstr "" -#: include/identity.php:805 include/identity.php:816 include/nav.php:149 -#: view/theme/frio/theme.php:254 -msgid "Events and Calendar" +#: include/event.php:506 include/text.php:1202 +msgid "February" msgstr "" -#: include/identity.php:824 mod/notes.php:47 -msgid "Personal Notes" +#: include/event.php:507 include/text.php:1202 +msgid "March" msgstr "" -#: include/identity.php:827 -msgid "Only You Can See This" +#: include/event.php:508 include/text.php:1202 +msgid "April" msgstr "" -#: include/identity.php:835 include/identity.php:838 include/nav.php:128 -#: include/nav.php:192 include/text.php:1024 mod/contacts.php:800 -#: mod/contacts.php:861 mod/viewcontacts.php:121 view/theme/frio/theme.php:257 -msgid "Contacts" +#: include/event.php:510 include/text.php:1202 +msgid "June" msgstr "" -#: include/items.php:1584 mod/dfrn_confirm.php:735 mod/dfrn_request.php:754 -msgid "[Name Withheld]" +#: include/event.php:511 include/text.php:1202 +msgid "July" msgstr "" -#: include/items.php:1939 mod/admin.php:240 mod/admin.php:1480 -#: mod/admin.php:1731 mod/display.php:103 mod/display.php:279 -#: mod/display.php:484 mod/notice.php:15 mod/viewsrc.php:15 -msgid "Item not found." +#: include/event.php:512 include/text.php:1202 +msgid "August" msgstr "" -#: include/items.php:1978 -msgid "Do you really want to delete this item?" +#: include/event.php:513 include/text.php:1202 +msgid "September" msgstr "" -#: include/items.php:1980 mod/api.php:105 mod/contacts.php:452 -#: mod/dfrn_request.php:875 mod/follow.php:113 mod/message.php:206 -#: mod/profiles.php:640 mod/profiles.php:643 mod/profiles.php:669 -#: mod/register.php:245 mod/settings.php:1171 mod/settings.php:1177 -#: mod/settings.php:1184 mod/settings.php:1188 mod/settings.php:1193 -#: mod/settings.php:1198 mod/settings.php:1203 mod/settings.php:1208 -#: mod/settings.php:1234 mod/settings.php:1235 mod/settings.php:1236 -#: mod/settings.php:1237 mod/settings.php:1238 mod/suggest.php:29 -msgid "Yes" +#: include/event.php:514 include/text.php:1202 +msgid "October" msgstr "" -#: include/items.php:2143 index.php:407 mod/allfriends.php:12 mod/api.php:26 -#: mod/api.php:31 mod/attach.php:33 mod/cal.php:299 mod/common.php:18 -#: mod/contacts.php:360 mod/crepair.php:102 mod/delegate.php:12 -#: mod/dfrn_confirm.php:61 mod/dirfind.php:11 mod/display.php:481 -#: mod/editpost.php:10 mod/events.php:195 mod/follow.php:11 mod/follow.php:74 -#: mod/follow.php:158 mod/fsuggest.php:79 mod/group.php:19 mod/invite.php:15 -#: mod/invite.php:103 mod/item.php:193 mod/item.php:205 mod/manage.php:98 -#: mod/message.php:46 mod/message.php:171 mod/mood.php:115 mod/network.php:4 -#: mod/nogroup.php:27 mod/notes.php:23 mod/notifications.php:71 -#: mod/ostatus_subscribe.php:9 mod/photos.php:161 mod/photos.php:1092 -#: mod/poke.php:154 mod/profile_photo.php:19 mod/profile_photo.php:180 -#: mod/profile_photo.php:191 mod/profile_photo.php:204 mod/profiles.php:166 -#: mod/profiles.php:607 mod/register.php:42 mod/regmod.php:113 -#: mod/repair_ostatus.php:9 mod/settings.php:22 mod/settings.php:130 -#: mod/settings.php:668 mod/suggest.php:58 mod/uimport.php:24 -#: mod/viewcontacts.php:46 mod/wall_attach.php:67 mod/wall_attach.php:70 -#: mod/wall_upload.php:77 mod/wall_upload.php:80 mod/wallmessage.php:9 -#: mod/wallmessage.php:33 mod/wallmessage.php:73 mod/wallmessage.php:97 -msgid "Permission denied." +#: include/event.php:515 include/text.php:1202 +msgid "November" msgstr "" -#: include/items.php:2248 -msgid "Archives" +#: include/event.php:516 include/text.php:1202 +msgid "December" msgstr "" -#: include/like.php:41 -#, php-format -msgid "%1$s is attending %2$s's %3$s" +#: include/event.php:518 mod/cal.php:278 mod/events.php:383 +msgid "today" msgstr "" -#: include/like.php:46 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" +#: include/event.php:523 +msgid "No events to display" msgstr "" -#: include/like.php:51 -#, php-format -msgid "%1$s may attend %2$s's %3$s" +#: include/event.php:636 +msgid "l, F j" msgstr "" -#: include/message.php:15 include/message.php:169 -msgid "[no subject]" +#: include/event.php:658 +msgid "Edit event" msgstr "" -#: include/nav.php:35 mod/navigation.php:19 -msgid "Nothing new here" +#: include/event.php:659 +msgid "Delete event" msgstr "" -#: include/nav.php:39 mod/navigation.php:23 -msgid "Clear notifications" +#: include/event.php:685 include/text.php:1600 include/text.php:1607 +msgid "link to source" msgstr "" -#: include/nav.php:40 include/text.php:1017 -msgid "@name, !forum, #tags, content" +#: include/event.php:939 +msgid "Export" msgstr "" -#: include/nav.php:78 view/theme/frio/theme.php:243 -msgid "End this session" +#: include/event.php:940 +msgid "Export calendar as ical" msgstr "" -#: include/nav.php:81 include/nav.php:161 view/theme/frio/theme.php:246 -msgid "Your posts and conversations" +#: include/event.php:941 +msgid "Export calendar as csv" msgstr "" -#: include/nav.php:82 view/theme/frio/theme.php:247 -msgid "Your profile page" +#: include/features.php:65 +msgid "General Features" msgstr "" -#: include/nav.php:83 view/theme/frio/theme.php:248 -msgid "Your photos" +#: include/features.php:67 +msgid "Multiple Profiles" msgstr "" -#: include/nav.php:84 view/theme/frio/theme.php:249 -msgid "Your videos" +#: include/features.php:67 +msgid "Ability to create multiple profiles" msgstr "" -#: include/nav.php:85 view/theme/frio/theme.php:250 -msgid "Your events" +#: include/features.php:68 +msgid "Photo Location" msgstr "" -#: include/nav.php:86 -msgid "Personal notes" +#: include/features.php:68 +msgid "" +"Photo metadata is normally stripped. This extracts the location (if present) " +"prior to stripping metadata and links it to a map." msgstr "" -#: include/nav.php:86 -msgid "Your personal notes" +#: include/features.php:69 +msgid "Export Public Calendar" msgstr "" -#: include/nav.php:95 -msgid "Sign in" +#: include/features.php:69 +msgid "Ability for visitors to download the public calendar" msgstr "" -#: include/nav.php:105 -msgid "Home Page" +#: include/features.php:74 +msgid "Post Composition Features" msgstr "" -#: include/nav.php:109 -msgid "Create an account" +#: include/features.php:75 +msgid "Post Preview" msgstr "" -#: include/nav.php:115 mod/help.php:47 view/theme/vier/theme.php:293 -msgid "Help" +#: include/features.php:75 +msgid "Allow previewing posts and comments before publishing them" msgstr "" -#: include/nav.php:115 -msgid "Help and documentation" +#: include/features.php:76 +msgid "Auto-mention Forums" msgstr "" -#: include/nav.php:119 -msgid "Apps" +#: include/features.php:76 +msgid "" +"Add/remove mention when a forum page is selected/deselected in ACL window." msgstr "" -#: include/nav.php:119 -msgid "Addon applications, utilities, games" +#: include/features.php:81 +msgid "Network Sidebar Widgets" msgstr "" -#: include/nav.php:123 include/text.php:1014 mod/search.php:149 -msgid "Search" +#: include/features.php:82 +msgid "Search by Date" msgstr "" -#: include/nav.php:123 -msgid "Search site content" +#: include/features.php:82 +msgid "Ability to select posts by date ranges" msgstr "" -#: include/nav.php:126 include/text.php:1022 -msgid "Full Text" +#: include/features.php:83 include/features.php:113 +msgid "List Forums" msgstr "" -#: include/nav.php:127 include/text.php:1023 -msgid "Tags" +#: include/features.php:83 +msgid "Enable widget to display the forums your are connected with" msgstr "" -#: include/nav.php:143 include/nav.php:145 mod/community.php:36 -msgid "Community" +#: include/features.php:84 +msgid "Group Filter" msgstr "" -#: include/nav.php:143 -msgid "Conversations on this site" +#: include/features.php:84 +msgid "Enable widget to display Network posts only from selected group" msgstr "" -#: include/nav.php:145 -msgid "Conversations on the network" +#: include/features.php:85 +msgid "Network Filter" msgstr "" -#: include/nav.php:152 -msgid "Directory" +#: include/features.php:85 +msgid "Enable widget to display Network posts only from selected network" msgstr "" -#: include/nav.php:152 -msgid "People directory" +#: include/features.php:86 mod/network.php:206 mod/search.php:34 +msgid "Saved Searches" msgstr "" -#: include/nav.php:154 -msgid "Information" +#: include/features.php:86 +msgid "Save search terms for re-use" msgstr "" -#: include/nav.php:154 -msgid "Information about this friendica instance" +#: include/features.php:91 +msgid "Network Tabs" msgstr "" -#: include/nav.php:158 view/theme/frio/theme.php:253 -msgid "Conversations from your friends" +#: include/features.php:92 +msgid "Network Personal Tab" msgstr "" -#: include/nav.php:159 -msgid "Network Reset" +#: include/features.php:92 +msgid "Enable tab to display only Network posts that you've interacted on" msgstr "" -#: include/nav.php:159 -msgid "Load Network page with no filters" +#: include/features.php:93 +msgid "Network New Tab" msgstr "" -#: include/nav.php:166 -msgid "Friend Requests" +#: include/features.php:93 +msgid "Enable tab to display only new Network posts (from the last 12 hours)" msgstr "" -#: include/nav.php:169 mod/notifications.php:96 -msgid "Notifications" +#: include/features.php:94 +msgid "Network Shared Links Tab" msgstr "" -#: include/nav.php:170 -msgid "See all notifications" +#: include/features.php:94 +msgid "Enable tab to display only Network posts with links in them" msgstr "" -#: include/nav.php:171 mod/settings.php:906 -msgid "Mark as seen" +#: include/features.php:99 +msgid "Post/Comment Tools" msgstr "" -#: include/nav.php:171 -msgid "Mark all system notifications seen" -msgstr "" +#: include/features.php:100 +msgid "Multiple Deletion" +msgstr "" -#: include/nav.php:175 mod/message.php:179 view/theme/frio/theme.php:255 -msgid "Messages" +#: include/features.php:100 +msgid "Select and delete multiple posts/comments at once" msgstr "" -#: include/nav.php:175 view/theme/frio/theme.php:255 -msgid "Private mail" +#: include/features.php:101 +msgid "Edit Sent Posts" msgstr "" -#: include/nav.php:176 -msgid "Inbox" +#: include/features.php:101 +msgid "Edit and correct posts and comments after sending" msgstr "" -#: include/nav.php:177 -msgid "Outbox" +#: include/features.php:102 +msgid "Tagging" msgstr "" -#: include/nav.php:178 mod/message.php:16 -msgid "New Message" +#: include/features.php:102 +msgid "Ability to tag existing posts" msgstr "" -#: include/nav.php:181 -msgid "Manage" +#: include/features.php:103 +msgid "Post Categories" msgstr "" -#: include/nav.php:181 -msgid "Manage other pages" +#: include/features.php:103 +msgid "Add categories to your posts" msgstr "" -#: include/nav.php:184 mod/settings.php:81 -msgid "Delegations" +#: include/features.php:104 +msgid "Ability to file posts under folders" msgstr "" -#: include/nav.php:184 mod/delegate.php:130 -msgid "Delegate Page Management" +#: include/features.php:105 +msgid "Dislike Posts" msgstr "" -#: include/nav.php:186 mod/admin.php:1533 mod/admin.php:1809 -#: mod/newmember.php:22 mod/settings.php:111 view/theme/frio/theme.php:256 -msgid "Settings" +#: include/features.php:105 +msgid "Ability to dislike posts/comments" msgstr "" -#: include/nav.php:186 view/theme/frio/theme.php:256 -msgid "Account settings" +#: include/features.php:106 +msgid "Star Posts" msgstr "" -#: include/nav.php:189 -msgid "Manage/Edit Profiles" +#: include/features.php:106 +msgid "Ability to mark special posts with a star indicator" msgstr "" -#: include/nav.php:192 view/theme/frio/theme.php:257 -msgid "Manage/edit friends and contacts" +#: include/features.php:107 +msgid "Mute Post Notifications" msgstr "" -#: include/nav.php:197 mod/admin.php:192 -msgid "Admin" +#: include/features.php:107 +msgid "Ability to mute notifications for a thread" msgstr "" -#: include/nav.php:197 -msgid "Site setup and configuration" +#: include/features.php:112 +msgid "Advanced Profile Settings" msgstr "" -#: include/nav.php:200 -msgid "Navigation" +#: include/features.php:113 +msgid "Show visitors public community forums at the Advanced Profile Page" msgstr "" -#: include/nav.php:200 -msgid "Site map" +#: include/follow.php:81 mod/dfrn_request.php:512 +msgid "Disallowed profile URL." msgstr "" -#: include/network.php:622 -msgid "view full size" +#: include/follow.php:86 mod/dfrn_request.php:518 mod/friendica.php:114 +#: mod/admin.php:279 mod/admin.php:297 +msgid "Blocked domain" msgstr "" -#: include/oembed.php:266 -msgid "Embedded content" +#: include/follow.php:91 +msgid "Connect URL missing." msgstr "" -#: include/oembed.php:274 -msgid "Embedding disabled" +#: include/follow.php:119 +msgid "" +"This site is not configured to allow communications with other networks." msgstr "" -#: include/ostatus.php:1832 -#, php-format -msgid "%s is now following %s." +#: include/follow.php:120 include/follow.php:134 +msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: include/ostatus.php:1833 -msgid "following" +#: include/follow.php:132 +msgid "The profile address specified does not provide adequate information." msgstr "" -#: include/ostatus.php:1836 -#, php-format -msgid "%s stopped following %s." +#: include/follow.php:137 +msgid "An author or name was not found." msgstr "" -#: include/ostatus.php:1837 -msgid "stopped following" +#: include/follow.php:140 +msgid "No browser URL could be matched to this address." msgstr "" -#: include/photos.php:57 include/photos.php:67 mod/fbrowser.php:40 -#: mod/fbrowser.php:61 mod/photos.php:182 mod/photos.php:1106 -#: mod/photos.php:1231 mod/photos.php:1252 mod/photos.php:1817 -#: mod/photos.php:1829 -msgid "Contact Photos" +#: include/follow.php:143 +msgid "" +"Unable to match @-style Identity Address with a known protocol or email " +"contact." msgstr "" -#: include/plugin.php:530 include/plugin.php:532 -msgid "Click here to upgrade." +#: include/follow.php:144 +msgid "Use mailto: in front of address to force email check." msgstr "" -#: include/plugin.php:538 -msgid "This action exceeds the limits set by your subscription plan." +#: include/follow.php:150 +msgid "" +"The profile address specified belongs to a network which has been disabled " +"on this site." msgstr "" -#: include/plugin.php:543 -msgid "This action is not available under your subscription plan." +#: include/follow.php:155 +msgid "" +"Limited profile. This person will be unable to receive direct/personal " +"notifications from you." msgstr "" -#: include/profile_selectors.php:6 -msgid "Male" +#: include/follow.php:256 +msgid "Unable to retrieve contact information." msgstr "" -#: include/profile_selectors.php:6 -msgid "Female" +#: include/group.php:25 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"may apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." msgstr "" -#: include/profile_selectors.php:6 -msgid "Currently Male" +#: include/group.php:210 +msgid "Default privacy group for new contacts" msgstr "" -#: include/profile_selectors.php:6 -msgid "Currently Female" +#: include/group.php:243 +msgid "Everybody" msgstr "" -#: include/profile_selectors.php:6 -msgid "Mostly Male" +#: include/group.php:266 +msgid "edit" msgstr "" -#: include/profile_selectors.php:6 -msgid "Mostly Female" +#: include/group.php:287 mod/newmember.php:61 +msgid "Groups" msgstr "" -#: include/profile_selectors.php:6 -msgid "Transgender" +#: include/group.php:289 +msgid "Edit groups" msgstr "" -#: include/profile_selectors.php:6 -msgid "Intersex" +#: include/group.php:291 +msgid "Edit group" msgstr "" -#: include/profile_selectors.php:6 -msgid "Transsexual" +#: include/group.php:292 +msgid "Create a new group" msgstr "" -#: include/profile_selectors.php:6 -msgid "Hermaphrodite" +#: include/group.php:293 mod/group.php:99 mod/group.php:196 +msgid "Group Name: " msgstr "" -#: include/profile_selectors.php:6 -msgid "Neuter" +#: include/group.php:295 +msgid "Contacts not in any group" msgstr "" -#: include/profile_selectors.php:6 -msgid "Non-specific" +#: include/group.php:297 mod/network.php:207 +msgid "add" msgstr "" -#: include/profile_selectors.php:6 -msgid "Other" +#: include/identity.php:43 +msgid "Requested account is not available." msgstr "" -#: include/profile_selectors.php:23 -msgid "Males" +#: include/identity.php:52 mod/profile.php:21 +msgid "Requested profile is not available." msgstr "" -#: include/profile_selectors.php:23 -msgid "Females" +#: include/identity.php:96 include/identity.php:319 include/identity.php:740 +msgid "Edit profile" msgstr "" -#: include/profile_selectors.php:23 -msgid "Gay" +#: include/identity.php:259 +msgid "Atom feed" msgstr "" -#: include/profile_selectors.php:23 -msgid "Lesbian" +#: include/identity.php:290 +msgid "Manage/edit profiles" msgstr "" -#: include/profile_selectors.php:23 -msgid "No Preference" +#: include/identity.php:295 include/identity.php:321 mod/profiles.php:787 +msgid "Change profile photo" msgstr "" -#: include/profile_selectors.php:23 -msgid "Bisexual" +#: include/identity.php:296 mod/profiles.php:788 +msgid "Create New Profile" msgstr "" -#: include/profile_selectors.php:23 -msgid "Autosexual" +#: include/identity.php:306 mod/profiles.php:777 +msgid "Profile Image" msgstr "" -#: include/profile_selectors.php:23 -msgid "Abstinent" +#: include/identity.php:309 mod/profiles.php:779 +msgid "visible to everybody" msgstr "" -#: include/profile_selectors.php:23 -msgid "Virgin" +#: include/identity.php:310 mod/profiles.php:684 mod/profiles.php:780 +msgid "Edit visibility" msgstr "" -#: include/profile_selectors.php:23 -msgid "Deviant" +#: include/identity.php:338 include/identity.php:633 mod/directory.php:141 +#: mod/notifications.php:250 +msgid "Gender:" msgstr "" -#: include/profile_selectors.php:23 -msgid "Fetish" +#: include/identity.php:341 include/identity.php:651 mod/directory.php:143 +msgid "Status:" msgstr "" -#: include/profile_selectors.php:23 -msgid "Oodles" +#: include/identity.php:343 include/identity.php:667 mod/directory.php:145 +msgid "Homepage:" msgstr "" -#: include/profile_selectors.php:23 -msgid "Nonsexual" +#: include/identity.php:345 include/identity.php:687 mod/contacts.php:640 +#: mod/directory.php:147 mod/notifications.php:246 +msgid "About:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Single" +#: include/identity.php:347 mod/contacts.php:638 +msgid "XMPP:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Lonely" +#: include/identity.php:433 mod/contacts.php:55 mod/notifications.php:258 +msgid "Network:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Available" +#: include/identity.php:462 include/identity.php:552 +msgid "g A l F d" msgstr "" -#: include/profile_selectors.php:42 -msgid "Unavailable" +#: include/identity.php:463 include/identity.php:553 +msgid "F d" msgstr "" -#: include/profile_selectors.php:42 -msgid "Has crush" +#: include/identity.php:514 include/identity.php:599 +msgid "[today]" msgstr "" -#: include/profile_selectors.php:42 -msgid "Infatuated" +#: include/identity.php:526 +msgid "Birthday Reminders" msgstr "" -#: include/profile_selectors.php:42 -msgid "Dating" +#: include/identity.php:527 +msgid "Birthdays this week:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Unfaithful" +#: include/identity.php:586 +msgid "[No description]" msgstr "" -#: include/profile_selectors.php:42 -msgid "Sex Addict" +#: include/identity.php:610 +msgid "Event Reminders" msgstr "" -#: include/profile_selectors.php:42 include/user.php:280 include/user.php:284 -msgid "Friends" +#: include/identity.php:611 +msgid "Events this week:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Friends/Benefits" +#: include/identity.php:631 mod/settings.php:1286 +msgid "Full Name:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Casual" +#: include/identity.php:636 +msgid "j F, Y" msgstr "" -#: include/profile_selectors.php:42 -msgid "Engaged" +#: include/identity.php:637 +msgid "j F" msgstr "" -#: include/profile_selectors.php:42 -msgid "Married" +#: include/identity.php:648 +msgid "Age:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Imaginarily married" +#: include/identity.php:659 +#, php-format +msgid "for %1$d %2$s" msgstr "" -#: include/profile_selectors.php:42 -msgid "Partners" +#: include/identity.php:663 mod/profiles.php:703 +msgid "Sexual Preference:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Cohabiting" +#: include/identity.php:671 mod/profiles.php:730 +msgid "Hometown:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Common law" +#: include/identity.php:675 mod/contacts.php:642 mod/follow.php:137 +#: mod/notifications.php:248 +msgid "Tags:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Happy" +#: include/identity.php:679 mod/profiles.php:731 +msgid "Political Views:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Not looking" +#: include/identity.php:683 +msgid "Religion:" msgstr "" -#: include/profile_selectors.php:42 -msgid "Swinger" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Betrayed" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Separated" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Unstable" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Divorced" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Imaginarily divorced" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Widowed" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Uncertain" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "It's complicated" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Don't care" -msgstr "" - -#: include/profile_selectors.php:42 -msgid "Ask me" -msgstr "" - -#: include/security.php:61 -msgid "Welcome " -msgstr "" - -#: include/security.php:62 -msgid "Please upload a profile photo." -msgstr "" - -#: include/security.php:65 -msgid "Welcome back " -msgstr "" - -#: include/security.php:429 -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/text.php:307 -msgid "newer" -msgstr "" - -#: include/text.php:308 -msgid "older" -msgstr "" - -#: include/text.php:313 -msgid "first" -msgstr "" - -#: include/text.php:314 -msgid "prev" -msgstr "" - -#: include/text.php:348 -msgid "next" -msgstr "" - -#: include/text.php:349 -msgid "last" -msgstr "" - -#: include/text.php:403 -msgid "Loading more entries..." -msgstr "" - -#: include/text.php:404 -msgid "The end" -msgstr "" - -#: include/text.php:889 -msgid "No contacts" -msgstr "" - -#: include/text.php:914 -#, php-format -msgid "%d Contact" -msgid_plural "%d Contacts" -msgstr[0] "" -msgstr[1] "" - -#: include/text.php:927 -msgid "View Contacts" -msgstr "" - -#: include/text.php:1015 mod/editpost.php:99 mod/filer.php:31 mod/notes.php:62 -msgid "Save" -msgstr "" - -#: include/text.php:1078 -msgid "poke" -msgstr "" - -#: include/text.php:1078 -msgid "poked" -msgstr "" - -#: include/text.php:1079 -msgid "ping" -msgstr "" - -#: include/text.php:1079 -msgid "pinged" -msgstr "" - -#: include/text.php:1080 -msgid "prod" -msgstr "" - -#: include/text.php:1080 -msgid "prodded" -msgstr "" - -#: include/text.php:1081 -msgid "slap" -msgstr "" - -#: include/text.php:1081 -msgid "slapped" -msgstr "" - -#: include/text.php:1082 -msgid "finger" -msgstr "" - -#: include/text.php:1082 -msgid "fingered" -msgstr "" - -#: include/text.php:1083 -msgid "rebuff" -msgstr "" - -#: include/text.php:1083 -msgid "rebuffed" -msgstr "" - -#: include/text.php:1097 -msgid "happy" -msgstr "" - -#: include/text.php:1098 -msgid "sad" -msgstr "" - -#: include/text.php:1099 -msgid "mellow" -msgstr "" - -#: include/text.php:1100 -msgid "tired" -msgstr "" - -#: include/text.php:1101 -msgid "perky" -msgstr "" - -#: include/text.php:1102 -msgid "angry" -msgstr "" - -#: include/text.php:1103 -msgid "stupified" -msgstr "" - -#: include/text.php:1104 -msgid "puzzled" -msgstr "" - -#: include/text.php:1105 -msgid "interested" -msgstr "" - -#: include/text.php:1106 -msgid "bitter" -msgstr "" - -#: include/text.php:1107 -msgid "cheerful" -msgstr "" - -#: include/text.php:1108 -msgid "alive" -msgstr "" - -#: include/text.php:1109 -msgid "annoyed" +#: include/identity.php:691 +msgid "Hobbies/Interests:" msgstr "" -#: include/text.php:1110 -msgid "anxious" +#: include/identity.php:695 mod/profiles.php:735 +msgid "Likes:" msgstr "" -#: include/text.php:1111 -msgid "cranky" +#: include/identity.php:699 mod/profiles.php:736 +msgid "Dislikes:" msgstr "" -#: include/text.php:1112 -msgid "disturbed" +#: include/identity.php:703 +msgid "Contact information and Social Networks:" msgstr "" -#: include/text.php:1113 -msgid "frustrated" +#: include/identity.php:707 +msgid "Musical interests:" msgstr "" -#: include/text.php:1114 -msgid "motivated" +#: include/identity.php:711 +msgid "Books, literature:" msgstr "" -#: include/text.php:1115 -msgid "relaxed" +#: include/identity.php:715 +msgid "Television:" msgstr "" -#: include/text.php:1116 -msgid "surprised" +#: include/identity.php:719 +msgid "Film/dance/culture/entertainment:" msgstr "" -#: include/text.php:1326 mod/videos.php:384 -msgid "View Video" +#: include/identity.php:723 +msgid "Love/Romance:" msgstr "" -#: include/text.php:1358 -msgid "bytes" +#: include/identity.php:727 +msgid "Work/employment:" msgstr "" -#: include/text.php:1390 include/text.php:1402 -msgid "Click to open/close" +#: include/identity.php:731 +msgid "School/education:" msgstr "" -#: include/text.php:1528 -msgid "View on separate page" +#: include/identity.php:736 +msgid "Forums:" msgstr "" -#: include/text.php:1529 -msgid "view on separate page" +#: include/identity.php:745 mod/events.php:506 +msgid "Basic" msgstr "" -#: include/text.php:1808 -msgid "activity" +#: include/identity.php:746 mod/contacts.php:878 mod/events.php:507 +#: mod/admin.php:1059 +msgid "Advanced" msgstr "" -#: include/text.php:1810 mod/content.php:623 object/Item.php:419 -#: object/Item.php:431 -msgid "comment" -msgid_plural "comments" -msgstr[0] "" -msgstr[1] "" - -#: include/text.php:1811 -msgid "post" +#: include/identity.php:772 mod/contacts.php:844 mod/follow.php:145 +msgid "Status Messages and Posts" msgstr "" -#: include/text.php:1979 -msgid "Item filed" +#: include/identity.php:780 mod/contacts.php:852 +msgid "Profile Details" msgstr "" -#: include/uimport.php:91 -msgid "Error decoding account file" +#: include/identity.php:788 mod/photos.php:93 +msgid "Photo Albums" msgstr "" -#: include/uimport.php:97 -msgid "Error! No version data in file! This is not a Friendica account file?" +#: include/identity.php:827 mod/notes.php:47 +msgid "Personal Notes" msgstr "" -#: include/uimport.php:113 include/uimport.php:124 -msgid "Error! Cannot check nickname" +#: include/identity.php:830 +msgid "Only You Can See This" msgstr "" -#: include/uimport.php:117 include/uimport.php:128 -#, php-format -msgid "User '%s' already exists on this server!" +#: include/network.php:687 +msgid "view full size" msgstr "" -#: include/uimport.php:150 -msgid "User creation error" +#: include/oembed.php:255 +msgid "Embedded content" msgstr "" -#: include/uimport.php:170 -msgid "User profile creation error" +#: include/oembed.php:263 +msgid "Embedding disabled" msgstr "" -#: include/uimport.php:219 -#, php-format -msgid "%d contact not imported" -msgid_plural "%d contacts not imported" -msgstr[0] "" -msgstr[1] "" - -#: include/uimport.php:289 -msgid "Done. You can now login with your username and password" +#: include/photos.php:57 include/photos.php:66 mod/fbrowser.php:40 +#: mod/fbrowser.php:61 mod/photos.php:187 mod/photos.php:1123 +#: mod/photos.php:1256 mod/photos.php:1277 mod/photos.php:1839 +#: mod/photos.php:1853 +msgid "Contact Photos" msgstr "" #: include/user.php:39 mod/settings.php:375 @@ -3026,61 +2646,62 @@ msgstr "" msgid "Name too short." msgstr "" -#: include/user.php:113 +#: include/user.php:106 msgid "That doesn't appear to be your full (First Last) name." msgstr "" -#: include/user.php:118 +#: include/user.php:111 msgid "Your email domain is not among those allowed on this site." msgstr "" -#: include/user.php:121 +#: include/user.php:114 msgid "Not a valid email address." msgstr "" -#: include/user.php:134 +#: include/user.php:127 msgid "Cannot use that email." msgstr "" -#: include/user.php:140 +#: include/user.php:133 msgid "Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"." msgstr "" -#: include/user.php:147 include/user.php:245 +#: include/user.php:140 include/user.php:228 msgid "Nickname is already registered. Please choose another." msgstr "" -#: include/user.php:157 +#: include/user.php:150 msgid "" "Nickname was once registered here and may not be re-used. Please choose " "another." msgstr "" -#: include/user.php:173 +#: include/user.php:166 msgid "SERIOUS ERROR: Generation of security keys failed." msgstr "" -#: include/user.php:231 +#: include/user.php:214 msgid "An error occurred during registration. Please try again." msgstr "" -#: include/user.php:256 view/theme/duepuntozero/config.php:43 +#: include/user.php:239 view/theme/duepuntozero/config.php:43 msgid "default" msgstr "" -#: include/user.php:266 +#: include/user.php:249 msgid "An error occurred creating your default profile. Please try again." msgstr "" -#: include/user.php:326 include/user.php:334 include/user.php:342 -#: mod/photos.php:68 mod/photos.php:182 mod/photos.php:768 mod/photos.php:1231 -#: mod/photos.php:1252 mod/photos.php:1839 mod/profile_photo.php:74 -#: mod/profile_photo.php:82 mod/profile_photo.php:90 mod/profile_photo.php:215 -#: mod/profile_photo.php:310 mod/profile_photo.php:320 +#: include/user.php:309 include/user.php:317 include/user.php:325 +#: mod/profile_photo.php:74 mod/profile_photo.php:82 mod/profile_photo.php:90 +#: mod/profile_photo.php:215 mod/profile_photo.php:310 +#: mod/profile_photo.php:320 mod/photos.php:71 mod/photos.php:187 +#: mod/photos.php:774 mod/photos.php:1256 mod/photos.php:1277 +#: mod/photos.php:1863 msgid "Profile Photos" msgstr "" -#: include/user.php:417 +#: include/user.php:400 #, php-format msgid "" "\n" @@ -3090,12 +2711,12 @@ msgid "" "\t" msgstr "" -#: include/user.php:427 +#: include/user.php:410 #, php-format msgid "Registration at %s" msgstr "" -#: include/user.php:437 +#: include/user.php:420 #, php-format msgid "" "\n" @@ -3104,7 +2725,7 @@ msgid "" "\t" msgstr "" -#: include/user.php:441 +#: include/user.php:424 #, php-format msgid "" "\n" @@ -3139,2221 +2760,2110 @@ msgid "" "\t\tThank you and welcome to %2$s." msgstr "" -#: include/user.php:473 mod/admin.php:1223 +#: include/user.php:456 mod/admin.php:1308 #, php-format msgid "Registration details for %s" msgstr "" -#: index.php:248 mod/apps.php:7 -msgid "You must be logged in to use addons. " -msgstr "" - -#: index.php:292 mod/fetch.php:12 mod/fetch.php:39 mod/fetch.php:48 -#: mod/help.php:53 mod/p.php:16 mod/p.php:43 mod/p.php:52 -msgid "Not Found" -msgstr "" - -#: index.php:295 mod/help.php:56 -msgid "Page not found." +#: include/dbstructure.php:20 +msgid "There are no tables on MyISAM." msgstr "" -#: index.php:406 mod/group.php:76 mod/profperm.php:20 -msgid "Permission denied" +#: include/dbstructure.php:61 +#, php-format +msgid "" +"\n" +"\t\t\tThe friendica developers released update %s recently,\n" +"\t\t\tbut when I tried to install it, something went terribly wrong.\n" +"\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n" +"\t\t\tfriendica developer if you can not help me on your own. My database " +"might be invalid." msgstr "" -#: index.php:457 -msgid "toggle mobile" +#: include/dbstructure.php:66 +#, php-format +msgid "" +"The error message is\n" +"[pre]%s[/pre]" msgstr "" -#: mod/admin.php:96 -msgid "Theme settings updated." +#: include/dbstructure.php:190 +#, php-format +msgid "" +"\n" +"Error %d occurred during database update:\n" +"%s\n" msgstr "" -#: mod/admin.php:162 mod/admin.php:967 -msgid "Site" +#: include/dbstructure.php:193 +msgid "Errors encountered performing database changes: " msgstr "" -#: mod/admin.php:163 mod/admin.php:901 mod/admin.php:1413 mod/admin.php:1429 -msgid "Users" +#: include/dbstructure.php:201 +msgid ": Database update" msgstr "" -#: mod/admin.php:164 mod/admin.php:1531 mod/admin.php:1594 mod/settings.php:74 -msgid "Plugins" +#: include/dbstructure.php:425 +#, php-format +msgid "%s: updating %s table." msgstr "" -#: mod/admin.php:165 mod/admin.php:1807 mod/admin.php:1857 -msgid "Themes" +#: include/dfrn.php:1251 +#, php-format +msgid "%s\\'s birthday" msgstr "" -#: mod/admin.php:166 mod/settings.php:52 -msgid "Additional features" +#: include/diaspora.php:2137 +msgid "Sharing notification from Diaspora network" msgstr "" -#: mod/admin.php:167 -msgid "DB updates" +#: include/diaspora.php:3146 +msgid "Attachments:" msgstr "" -#: mod/admin.php:168 mod/admin.php:416 -msgid "Inspect Queue" +#: include/items.php:1738 mod/dfrn_confirm.php:736 mod/dfrn_request.php:759 +msgid "[Name Withheld]" msgstr "" -#: mod/admin.php:169 mod/admin.php:382 -msgid "Federation Statistics" +#: include/items.php:2123 mod/display.php:103 mod/display.php:279 +#: mod/display.php:484 mod/notice.php:15 mod/viewsrc.php:15 mod/admin.php:247 +#: mod/admin.php:1565 mod/admin.php:1816 +msgid "Item not found." msgstr "" -#: mod/admin.php:183 mod/admin.php:194 mod/admin.php:1931 -msgid "Logs" +#: include/items.php:2162 +msgid "Do you really want to delete this item?" msgstr "" -#: mod/admin.php:184 mod/admin.php:1999 -msgid "View Logs" +#: include/items.php:2164 mod/api.php:105 mod/contacts.php:452 +#: mod/suggest.php:29 mod/dfrn_request.php:880 mod/follow.php:113 +#: mod/message.php:206 mod/profiles.php:640 mod/profiles.php:643 +#: mod/profiles.php:670 mod/register.php:245 mod/settings.php:1171 +#: mod/settings.php:1177 mod/settings.php:1184 mod/settings.php:1188 +#: mod/settings.php:1193 mod/settings.php:1198 mod/settings.php:1203 +#: mod/settings.php:1208 mod/settings.php:1234 mod/settings.php:1235 +#: mod/settings.php:1236 mod/settings.php:1237 mod/settings.php:1238 +msgid "Yes" msgstr "" -#: mod/admin.php:185 -msgid "probe address" +#: include/items.php:2327 mod/allfriends.php:12 mod/api.php:26 mod/api.php:31 +#: mod/attach.php:33 mod/common.php:18 mod/contacts.php:360 +#: mod/crepair.php:102 mod/delegate.php:12 mod/display.php:481 +#: mod/editpost.php:10 mod/fsuggest.php:79 mod/invite.php:15 +#: mod/invite.php:103 mod/mood.php:115 mod/nogroup.php:27 mod/notes.php:23 +#: mod/ostatus_subscribe.php:9 mod/poke.php:154 mod/profile_photo.php:19 +#: mod/profile_photo.php:180 mod/profile_photo.php:191 +#: mod/profile_photo.php:204 mod/regmod.php:113 mod/repair_ostatus.php:9 +#: mod/suggest.php:58 mod/uimport.php:24 mod/viewcontacts.php:46 +#: mod/wall_attach.php:67 mod/wall_attach.php:70 mod/wallmessage.php:9 +#: mod/wallmessage.php:33 mod/wallmessage.php:73 mod/wallmessage.php:97 +#: mod/cal.php:299 mod/dfrn_confirm.php:61 mod/dirfind.php:11 +#: mod/events.php:185 mod/follow.php:11 mod/follow.php:74 mod/follow.php:158 +#: mod/group.php:19 mod/manage.php:102 mod/message.php:46 mod/message.php:171 +#: mod/network.php:4 mod/photos.php:166 mod/photos.php:1109 +#: mod/profiles.php:168 mod/profiles.php:607 mod/register.php:42 +#: mod/settings.php:22 mod/settings.php:130 mod/settings.php:668 +#: mod/wall_upload.php:101 mod/wall_upload.php:104 mod/item.php:196 +#: mod/item.php:208 mod/notifications.php:71 index.php:407 +msgid "Permission denied." msgstr "" -#: mod/admin.php:186 -msgid "check webfinger" +#: include/items.php:2444 +msgid "Archives" msgstr "" -#: mod/admin.php:193 -msgid "Plugin Features" +#: include/ostatus.php:1947 +#, php-format +msgid "%s is now following %s." msgstr "" -#: mod/admin.php:195 -msgid "diagnostics" +#: include/ostatus.php:1948 +msgid "following" msgstr "" -#: mod/admin.php:196 -msgid "User registrations waiting for confirmation" +#: include/ostatus.php:1951 +#, php-format +msgid "%s stopped following %s." msgstr "" -#: mod/admin.php:312 -msgid "unknown" +#: include/ostatus.php:1952 +msgid "stopped following" msgstr "" -#: mod/admin.php:375 -msgid "" -"This page offers you some numbers to the known part of the federated social " -"network your Friendica node is part of. These numbers are not complete but " -"only reflect the part of the network your node is aware of." +#: include/text.php:307 +msgid "newer" msgstr "" -#: mod/admin.php:376 -msgid "" -"The Auto Discovered Contact Directory feature is not enabled, it " -"will improve the data displayed here." +#: include/text.php:308 +msgid "older" msgstr "" -#: mod/admin.php:381 mod/admin.php:415 mod/admin.php:493 mod/admin.php:966 -#: mod/admin.php:1412 mod/admin.php:1530 mod/admin.php:1593 mod/admin.php:1806 -#: mod/admin.php:1856 mod/admin.php:1930 mod/admin.php:1998 -msgid "Administration" +#: include/text.php:313 +msgid "first" msgstr "" -#: mod/admin.php:388 -#, php-format -msgid "Currently this node is aware of %d nodes from the following platforms:" +#: include/text.php:314 +msgid "prev" msgstr "" -#: mod/admin.php:418 -msgid "ID" +#: include/text.php:348 +msgid "next" msgstr "" -#: mod/admin.php:419 -msgid "Recipient Name" +#: include/text.php:349 +msgid "last" msgstr "" -#: mod/admin.php:420 -msgid "Recipient Profile" +#: include/text.php:403 +msgid "Loading more entries..." msgstr "" -#: mod/admin.php:422 -msgid "Created" +#: include/text.php:404 +msgid "The end" msgstr "" -#: mod/admin.php:423 -msgid "Last Tried" +#: include/text.php:955 +msgid "No contacts" msgstr "" -#: mod/admin.php:424 -msgid "" -"This page lists the content of the queue for outgoing postings. These are " -"postings the initial delivery failed for. They will be resend later and " -"eventually deleted if the delivery fails permanently." +#: include/text.php:980 +#, php-format +msgid "%d Contact" +msgid_plural "%d Contacts" +msgstr[0] "" +msgstr[1] "" + +#: include/text.php:993 +msgid "View Contacts" msgstr "" -#: mod/admin.php:449 -#, php-format -msgid "" -"Your DB still runs with MyISAM tables. You should change the engine type to " -"InnoDB. As Friendica will use InnoDB only features in the future, you should " -"change this! See here for a guide that may be helpful " -"converting the table engines. You may also use the convert_innodb.sql in the /util directory of your Friendica installation.
" +#: include/text.php:1081 mod/editpost.php:99 mod/filer.php:31 mod/notes.php:62 +msgid "Save" msgstr "" -#: mod/admin.php:454 -msgid "" -"You are using a MySQL version which does not support all features that " -"Friendica uses. You should consider switching to MariaDB." +#: include/text.php:1144 +msgid "poke" msgstr "" -#: mod/admin.php:458 mod/admin.php:1362 -msgid "Normal Account" +#: include/text.php:1144 +msgid "poked" msgstr "" -#: mod/admin.php:459 mod/admin.php:1363 -msgid "Soapbox Account" +#: include/text.php:1145 +msgid "ping" msgstr "" -#: mod/admin.php:460 mod/admin.php:1364 -msgid "Community/Celebrity Account" +#: include/text.php:1145 +msgid "pinged" msgstr "" -#: mod/admin.php:461 mod/admin.php:1365 -msgid "Automatic Friend Account" +#: include/text.php:1146 +msgid "prod" msgstr "" -#: mod/admin.php:462 -msgid "Blog Account" +#: include/text.php:1146 +msgid "prodded" msgstr "" -#: mod/admin.php:463 -msgid "Private Forum" +#: include/text.php:1147 +msgid "slap" msgstr "" -#: mod/admin.php:488 -msgid "Message queues" +#: include/text.php:1147 +msgid "slapped" msgstr "" -#: mod/admin.php:494 -msgid "Summary" +#: include/text.php:1148 +msgid "finger" msgstr "" -#: mod/admin.php:496 -msgid "Registered users" +#: include/text.php:1148 +msgid "fingered" msgstr "" -#: mod/admin.php:498 -msgid "Pending registrations" +#: include/text.php:1149 +msgid "rebuff" msgstr "" -#: mod/admin.php:499 -msgid "Version" +#: include/text.php:1149 +msgid "rebuffed" msgstr "" -#: mod/admin.php:504 -msgid "Active plugins" +#: include/text.php:1163 +msgid "happy" msgstr "" -#: mod/admin.php:529 -msgid "Can not parse base url. Must have at least ://" +#: include/text.php:1164 +msgid "sad" msgstr "" -#: mod/admin.php:819 -msgid "RINO2 needs mcrypt php extension to work." +#: include/text.php:1165 +msgid "mellow" msgstr "" -#: mod/admin.php:827 -msgid "Site settings updated." +#: include/text.php:1166 +msgid "tired" msgstr "" -#: mod/admin.php:855 mod/settings.php:943 -msgid "No special theme for mobile devices" +#: include/text.php:1167 +msgid "perky" msgstr "" -#: mod/admin.php:884 -msgid "No community page" +#: include/text.php:1168 +msgid "angry" msgstr "" -#: mod/admin.php:885 -msgid "Public postings from users of this site" +#: include/text.php:1169 +msgid "stupified" msgstr "" -#: mod/admin.php:886 -msgid "Global community page" +#: include/text.php:1170 +msgid "puzzled" msgstr "" -#: mod/admin.php:891 mod/contacts.php:538 -msgid "Never" +#: include/text.php:1171 +msgid "interested" msgstr "" -#: mod/admin.php:892 -msgid "At post arrival" +#: include/text.php:1172 +msgid "bitter" msgstr "" -#: mod/admin.php:900 mod/contacts.php:565 -msgid "Disabled" +#: include/text.php:1173 +msgid "cheerful" msgstr "" -#: mod/admin.php:902 -msgid "Users, Global Contacts" +#: include/text.php:1174 +msgid "alive" msgstr "" -#: mod/admin.php:903 -msgid "Users, Global Contacts/fallback" +#: include/text.php:1175 +msgid "annoyed" msgstr "" -#: mod/admin.php:907 -msgid "One month" +#: include/text.php:1176 +msgid "anxious" msgstr "" -#: mod/admin.php:908 -msgid "Three months" +#: include/text.php:1177 +msgid "cranky" msgstr "" -#: mod/admin.php:909 -msgid "Half a year" +#: include/text.php:1178 +msgid "disturbed" msgstr "" -#: mod/admin.php:910 -msgid "One year" +#: include/text.php:1179 +msgid "frustrated" msgstr "" -#: mod/admin.php:915 -msgid "Multi user instance" +#: include/text.php:1180 +msgid "motivated" msgstr "" -#: mod/admin.php:938 -msgid "Closed" +#: include/text.php:1181 +msgid "relaxed" msgstr "" -#: mod/admin.php:939 -msgid "Requires approval" +#: include/text.php:1182 +msgid "surprised" msgstr "" -#: mod/admin.php:940 -msgid "Open" +#: include/text.php:1392 mod/videos.php:386 +msgid "View Video" msgstr "" -#: mod/admin.php:944 -msgid "No SSL policy, links will track page SSL state" +#: include/text.php:1424 +msgid "bytes" msgstr "" -#: mod/admin.php:945 -msgid "Force all links to use SSL" +#: include/text.php:1456 include/text.php:1468 +msgid "Click to open/close" msgstr "" -#: mod/admin.php:946 -msgid "Self-signed certificate, use SSL for local links only (discouraged)" +#: include/text.php:1594 +msgid "View on separate page" msgstr "" -#: mod/admin.php:968 mod/admin.php:1595 mod/admin.php:1858 mod/admin.php:1932 -#: mod/admin.php:2085 mod/settings.php:681 mod/settings.php:792 -#: mod/settings.php:841 mod/settings.php:908 mod/settings.php:1005 -#: mod/settings.php:1271 -msgid "Save Settings" +#: include/text.php:1595 +msgid "view on separate page" msgstr "" -#: mod/admin.php:969 mod/register.php:272 -msgid "Registration" +#: include/text.php:1874 +msgid "activity" msgstr "" -#: mod/admin.php:970 -msgid "File upload" +#: include/text.php:1876 mod/content.php:623 object/Item.php:419 +#: object/Item.php:431 +msgid "comment" +msgid_plural "comments" +msgstr[0] "" +msgstr[1] "" + +#: include/text.php:1877 +msgid "post" msgstr "" -#: mod/admin.php:971 -msgid "Policies" +#: include/text.php:2045 +msgid "Item filed" msgstr "" -#: mod/admin.php:973 -msgid "Auto Discovered Contact Directory" +#: mod/allfriends.php:46 +msgid "No friends to display." msgstr "" -#: mod/admin.php:974 -msgid "Performance" +#: mod/api.php:76 mod/api.php:102 +msgid "Authorize application connection" msgstr "" -#: mod/admin.php:975 -msgid "Worker" +#: mod/api.php:77 +msgid "Return to your app and insert this Securty Code:" msgstr "" -#: mod/admin.php:976 -msgid "" -"Relocate - WARNING: advanced function. Could make this server unreachable." +#: mod/api.php:89 +msgid "Please login to continue." msgstr "" -#: mod/admin.php:979 -msgid "Site name" +#: mod/api.php:104 +msgid "" +"Do you want to authorize this application to access your posts and contacts, " +"and/or create new posts for you?" msgstr "" -#: mod/admin.php:980 -msgid "Host name" +#: mod/api.php:106 mod/dfrn_request.php:880 mod/follow.php:113 +#: mod/profiles.php:640 mod/profiles.php:644 mod/profiles.php:670 +#: mod/register.php:246 mod/settings.php:1171 mod/settings.php:1177 +#: mod/settings.php:1184 mod/settings.php:1188 mod/settings.php:1193 +#: mod/settings.php:1198 mod/settings.php:1203 mod/settings.php:1208 +#: mod/settings.php:1234 mod/settings.php:1235 mod/settings.php:1236 +#: mod/settings.php:1237 mod/settings.php:1238 +msgid "No" msgstr "" -#: mod/admin.php:981 -msgid "Sender Email" +#: mod/apps.php:7 index.php:254 +msgid "You must be logged in to use addons. " msgstr "" -#: mod/admin.php:981 -msgid "" -"The email address your server shall use to send notification emails from." +#: mod/apps.php:11 +msgid "Applications" msgstr "" -#: mod/admin.php:982 -msgid "Banner/Logo" +#: mod/apps.php:14 +msgid "No installed applications." msgstr "" -#: mod/admin.php:983 -msgid "Shortcut icon" +#: mod/attach.php:8 +msgid "Item not available." msgstr "" -#: mod/admin.php:983 -msgid "Link to an icon that will be used for browsers." +#: mod/attach.php:20 +msgid "Item was not found." msgstr "" -#: mod/admin.php:984 -msgid "Touch icon" +#: mod/bookmarklet.php:41 +msgid "The post was created" msgstr "" -#: mod/admin.php:984 -msgid "Link to an icon that will be used for tablets and mobiles." +#: mod/common.php:91 +msgid "No contacts in common." msgstr "" -#: mod/admin.php:985 -msgid "Additional Info" +#: mod/common.php:141 mod/contacts.php:871 +msgid "Common Friends" msgstr "" -#: mod/admin.php:985 +#: mod/contacts.php:134 #, php-format -msgid "" -"For public servers: you can add additional information here that will be " -"listed at %s/siteinfo." -msgstr "" +msgid "%d contact edited." +msgid_plural "%d contacts edited." +msgstr[0] "" +msgstr[1] "" -#: mod/admin.php:986 -msgid "System language" +#: mod/contacts.php:169 mod/contacts.php:378 +msgid "Could not access contact record." msgstr "" -#: mod/admin.php:987 -msgid "System theme" +#: mod/contacts.php:183 +msgid "Could not locate selected profile." msgstr "" -#: mod/admin.php:987 -msgid "" -"Default system theme - may be over-ridden by user profiles - change theme settings" +#: mod/contacts.php:216 +msgid "Contact updated." msgstr "" -#: mod/admin.php:988 -msgid "Mobile system theme" +#: mod/contacts.php:218 mod/dfrn_request.php:593 +msgid "Failed to update contact record." msgstr "" -#: mod/admin.php:988 -msgid "Theme for mobile devices" +#: mod/contacts.php:399 +msgid "Contact has been blocked" msgstr "" -#: mod/admin.php:989 -msgid "SSL link policy" +#: mod/contacts.php:399 +msgid "Contact has been unblocked" msgstr "" -#: mod/admin.php:989 -msgid "Determines whether generated links should be forced to use SSL" +#: mod/contacts.php:410 +msgid "Contact has been ignored" msgstr "" -#: mod/admin.php:990 -msgid "Force SSL" +#: mod/contacts.php:410 +msgid "Contact has been unignored" msgstr "" -#: mod/admin.php:990 -msgid "" -"Force all Non-SSL requests to SSL - Attention: on some systems it could lead " -"to endless loops." +#: mod/contacts.php:422 +msgid "Contact has been archived" msgstr "" -#: mod/admin.php:991 -msgid "Hide help entry from navigation menu" +#: mod/contacts.php:422 +msgid "Contact has been unarchived" msgstr "" -#: mod/admin.php:991 -msgid "" -"Hides the menu entry for the Help pages from the navigation menu. You can " -"still access it calling /help directly." +#: mod/contacts.php:447 +msgid "Drop contact" msgstr "" -#: mod/admin.php:992 -msgid "Single user instance" +#: mod/contacts.php:450 mod/contacts.php:809 +msgid "Do you really want to delete this contact?" msgstr "" -#: mod/admin.php:992 -msgid "Make this instance multi-user or single-user for the named user" +#: mod/contacts.php:469 +msgid "Contact has been removed." msgstr "" -#: mod/admin.php:993 -msgid "Maximum image size" +#: mod/contacts.php:506 +#, php-format +msgid "You are mutual friends with %s" msgstr "" -#: mod/admin.php:993 -msgid "" -"Maximum size in bytes of uploaded images. Default is 0, which means no " -"limits." +#: mod/contacts.php:510 +#, php-format +msgid "You are sharing with %s" msgstr "" -#: mod/admin.php:994 -msgid "Maximum image length" +#: mod/contacts.php:515 +#, php-format +msgid "%s is sharing with you" msgstr "" -#: mod/admin.php:994 -msgid "" -"Maximum length in pixels of the longest side of uploaded images. Default is " -"-1, which means no limits." +#: mod/contacts.php:535 +msgid "Private communications are not available for this contact." msgstr "" -#: mod/admin.php:995 -msgid "JPEG image quality" +#: mod/contacts.php:538 mod/admin.php:978 +msgid "Never" msgstr "" -#: mod/admin.php:995 -msgid "" -"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " -"100, which is full quality." +#: mod/contacts.php:542 +msgid "(Update was successful)" msgstr "" -#: mod/admin.php:997 -msgid "Register policy" +#: mod/contacts.php:542 +msgid "(Update was not successful)" msgstr "" -#: mod/admin.php:998 -msgid "Maximum Daily Registrations" +#: mod/contacts.php:544 mod/contacts.php:972 +msgid "Suggest friends" msgstr "" -#: mod/admin.php:998 -msgid "" -"If registration is permitted above, this sets the maximum number of new user " -"registrations to accept per day. If register is set to closed, this setting " -"has no effect." +#: mod/contacts.php:548 +#, php-format +msgid "Network type: %s" msgstr "" -#: mod/admin.php:999 -msgid "Register text" +#: mod/contacts.php:561 +msgid "Communications lost with this contact!" msgstr "" -#: mod/admin.php:999 -msgid "Will be displayed prominently on the registration page." +#: mod/contacts.php:564 +msgid "Fetch further information for feeds" msgstr "" -#: mod/admin.php:1000 -msgid "Accounts abandoned after x days" +#: mod/contacts.php:565 mod/admin.php:987 +msgid "Disabled" msgstr "" -#: mod/admin.php:1000 -msgid "" -"Will not waste system resources polling external sites for abandonded " -"accounts. Enter 0 for no time limit." +#: mod/contacts.php:565 +msgid "Fetch information" msgstr "" -#: mod/admin.php:1001 -msgid "Allowed friend domains" +#: mod/contacts.php:565 +msgid "Fetch information and keywords" msgstr "" -#: mod/admin.php:1001 -msgid "" -"Comma separated list of domains which are allowed to establish friendships " -"with this site. Wildcards are accepted. Empty to allow any domains" +#: mod/contacts.php:583 +msgid "Contact" msgstr "" -#: mod/admin.php:1002 -msgid "Allowed email domains" +#: mod/contacts.php:585 mod/content.php:728 mod/crepair.php:156 +#: mod/fsuggest.php:108 mod/invite.php:142 mod/localtime.php:45 +#: mod/mood.php:138 mod/poke.php:203 mod/events.php:505 mod/manage.php:155 +#: mod/message.php:338 mod/message.php:521 mod/photos.php:1141 +#: mod/photos.php:1271 mod/photos.php:1597 mod/photos.php:1646 +#: mod/photos.php:1688 mod/photos.php:1768 mod/profiles.php:681 +#: mod/install.php:242 mod/install.php:282 object/Item.php:705 +#: view/theme/duepuntozero/config.php:61 view/theme/frio/config.php:64 +#: view/theme/quattro/config.php:67 view/theme/vier/config.php:112 +msgid "Submit" msgstr "" -#: mod/admin.php:1002 -msgid "" -"Comma separated list of domains which are allowed in email addresses for " -"registrations to this site. Wildcards are accepted. Empty to allow any " -"domains" +#: mod/contacts.php:586 +msgid "Profile Visibility" msgstr "" -#: mod/admin.php:1003 -msgid "Block public" +#: mod/contacts.php:587 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." msgstr "" -#: mod/admin.php:1003 -msgid "" -"Check to block public access to all otherwise public personal pages on this " -"site unless you are currently logged in." +#: mod/contacts.php:588 +msgid "Contact Information / Notes" msgstr "" -#: mod/admin.php:1004 -msgid "Force publish" +#: mod/contacts.php:589 +msgid "Edit contact notes" msgstr "" -#: mod/admin.php:1004 -msgid "" -"Check to force all profiles on this site to be listed in the site directory." +#: mod/contacts.php:594 mod/contacts.php:938 mod/nogroup.php:43 +#: mod/viewcontacts.php:102 +#, php-format +msgid "Visit %s's profile [%s]" msgstr "" -#: mod/admin.php:1005 -msgid "Global directory URL" +#: mod/contacts.php:595 +msgid "Block/Unblock contact" msgstr "" -#: mod/admin.php:1005 -msgid "" -"URL to the global directory. If this is not set, the global directory is " -"completely unavailable to the application." +#: mod/contacts.php:596 +msgid "Ignore contact" msgstr "" -#: mod/admin.php:1006 -msgid "Allow threaded items" +#: mod/contacts.php:597 +msgid "Repair URL settings" msgstr "" -#: mod/admin.php:1006 -msgid "Allow infinite level threading for items on this site." +#: mod/contacts.php:598 +msgid "View conversations" msgstr "" -#: mod/admin.php:1007 -msgid "Private posts by default for new users" +#: mod/contacts.php:604 +msgid "Last update:" msgstr "" -#: mod/admin.php:1007 -msgid "" -"Set default post permissions for all new members to the default privacy " -"group rather than public." +#: mod/contacts.php:606 +msgid "Update public posts" msgstr "" -#: mod/admin.php:1008 -msgid "Don't include post content in email notifications" +#: mod/contacts.php:608 mod/contacts.php:982 +msgid "Update now" msgstr "" -#: mod/admin.php:1008 -msgid "" -"Don't include the content of a post/comment/private message/etc. in the " -"email notifications that are sent out from this site, as a privacy measure." +#: mod/contacts.php:613 mod/contacts.php:813 mod/contacts.php:991 +#: mod/admin.php:1510 +msgid "Unblock" msgstr "" -#: mod/admin.php:1009 -msgid "Disallow public access to addons listed in the apps menu." +#: mod/contacts.php:613 mod/contacts.php:813 mod/contacts.php:991 +#: mod/admin.php:1509 +msgid "Block" msgstr "" -#: mod/admin.php:1009 -msgid "" -"Checking this box will restrict addons listed in the apps menu to members " -"only." +#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 +msgid "Unignore" msgstr "" -#: mod/admin.php:1010 -msgid "Don't embed private images in posts" +#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 +#: mod/notifications.php:60 mod/notifications.php:179 +#: mod/notifications.php:263 +msgid "Ignore" msgstr "" -#: mod/admin.php:1010 -msgid "" -"Don't replace locally-hosted private photos in posts with an embedded copy " -"of the image. This means that contacts who receive posts containing private " -"photos will have to authenticate and load each image, which may take a while." +#: mod/contacts.php:618 +msgid "Currently blocked" msgstr "" -#: mod/admin.php:1011 -msgid "Allow Users to set remote_self" +#: mod/contacts.php:619 +msgid "Currently ignored" msgstr "" -#: mod/admin.php:1011 -msgid "" -"With checking this, every user is allowed to mark every contact as a " -"remote_self in the repair contact dialog. Setting this flag on a contact " -"causes mirroring every posting of that contact in the users stream." +#: mod/contacts.php:620 +msgid "Currently archived" msgstr "" -#: mod/admin.php:1012 -msgid "Block multiple registrations" +#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:251 +msgid "Hide this contact from others" msgstr "" -#: mod/admin.php:1012 -msgid "Disallow users to register additional accounts for use as pages." +#: mod/contacts.php:621 +msgid "" +"Replies/likes to your public posts may still be visible" msgstr "" -#: mod/admin.php:1013 -msgid "OpenID support" +#: mod/contacts.php:622 +msgid "Notification for new posts" msgstr "" -#: mod/admin.php:1013 -msgid "OpenID support for registration and logins." +#: mod/contacts.php:622 +msgid "Send a notification of every new post of this contact" msgstr "" -#: mod/admin.php:1014 -msgid "Fullname check" +#: mod/contacts.php:625 +msgid "Blacklisted keywords" msgstr "" -#: mod/admin.php:1014 +#: mod/contacts.php:625 msgid "" -"Force users to register with a space between firstname and lastname in Full " -"name, as an antispam measure" +"Comma separated list of keywords that should not be converted to hashtags, " +"when \"Fetch information and keywords\" is selected" msgstr "" -#: mod/admin.php:1015 -msgid "UTF-8 Regular expressions" +#: mod/contacts.php:632 mod/follow.php:129 mod/notifications.php:255 +msgid "Profile URL" msgstr "" -#: mod/admin.php:1015 -msgid "Use PHP UTF8 regular expressions" +#: mod/contacts.php:643 +msgid "Actions" msgstr "" -#: mod/admin.php:1016 -msgid "Community Page Style" +#: mod/contacts.php:646 +msgid "Contact Settings" msgstr "" -#: mod/admin.php:1016 -msgid "" -"Type of community page to show. 'Global community' shows every public " -"posting from an open distributed network that arrived on this server." +#: mod/contacts.php:692 +msgid "Suggestions" msgstr "" -#: mod/admin.php:1017 -msgid "Posts per user on community page" +#: mod/contacts.php:695 +msgid "Suggest potential friends" msgstr "" -#: mod/admin.php:1017 -msgid "" -"The maximum number of posts per user on the community page. (Not valid for " -"'Global Community')" +#: mod/contacts.php:700 mod/group.php:212 +msgid "All Contacts" msgstr "" -#: mod/admin.php:1018 -msgid "Enable OStatus support" +#: mod/contacts.php:703 +msgid "Show all contacts" msgstr "" -#: mod/admin.php:1018 -msgid "" -"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " -"communications in OStatus are public, so privacy warnings will be " -"occasionally displayed." +#: mod/contacts.php:708 +msgid "Unblocked" msgstr "" -#: mod/admin.php:1019 -msgid "OStatus conversation completion interval" +#: mod/contacts.php:711 +msgid "Only show unblocked contacts" msgstr "" -#: mod/admin.php:1019 -msgid "" -"How often shall the poller check for new entries in OStatus conversations? " -"This can be a very ressource task." +#: mod/contacts.php:717 +msgid "Blocked" msgstr "" -#: mod/admin.php:1020 -msgid "Only import OStatus threads from our contacts" +#: mod/contacts.php:720 +msgid "Only show blocked contacts" msgstr "" -#: mod/admin.php:1020 -msgid "" -"Normally we import every content from our OStatus contacts. With this option " -"we only store threads that are started by a contact that is known on our " -"system." +#: mod/contacts.php:726 +msgid "Ignored" msgstr "" -#: mod/admin.php:1021 -msgid "OStatus support can only be enabled if threading is enabled." +#: mod/contacts.php:729 +msgid "Only show ignored contacts" msgstr "" -#: mod/admin.php:1023 -msgid "" -"Diaspora support can't be enabled because Friendica was installed into a sub " -"directory." +#: mod/contacts.php:735 +msgid "Archived" msgstr "" -#: mod/admin.php:1024 -msgid "Enable Diaspora support" +#: mod/contacts.php:738 +msgid "Only show archived contacts" msgstr "" -#: mod/admin.php:1024 -msgid "Provide built-in Diaspora network compatibility." +#: mod/contacts.php:744 +msgid "Hidden" msgstr "" -#: mod/admin.php:1025 -msgid "Only allow Friendica contacts" +#: mod/contacts.php:747 +msgid "Only show hidden contacts" msgstr "" -#: mod/admin.php:1025 -msgid "" -"All contacts must use Friendica protocols. All other built-in communication " -"protocols disabled." +#: mod/contacts.php:804 +msgid "Search your contacts" msgstr "" -#: mod/admin.php:1026 -msgid "Verify SSL" +#: mod/contacts.php:805 mod/network.php:151 mod/search.php:227 +#, php-format +msgid "Results for: %s" msgstr "" -#: mod/admin.php:1026 -msgid "" -"If you wish, you can turn on strict certificate checking. This will mean you " -"cannot connect (at all) to self-signed SSL sites." +#: mod/contacts.php:812 mod/settings.php:160 mod/settings.php:707 +msgid "Update" msgstr "" -#: mod/admin.php:1027 -msgid "Proxy user" +#: mod/contacts.php:815 mod/contacts.php:1007 +msgid "Archive" msgstr "" -#: mod/admin.php:1028 -msgid "Proxy URL" +#: mod/contacts.php:815 mod/contacts.php:1007 +msgid "Unarchive" msgstr "" -#: mod/admin.php:1029 -msgid "Network timeout" +#: mod/contacts.php:818 +msgid "Batch Actions" msgstr "" -#: mod/admin.php:1029 -msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +#: mod/contacts.php:864 +msgid "View all contacts" msgstr "" -#: mod/admin.php:1030 -msgid "Maximum Load Average" +#: mod/contacts.php:874 +msgid "View all common friends" msgstr "" -#: mod/admin.php:1030 -msgid "" -"Maximum system load before delivery and poll processes are deferred - " -"default 50." +#: mod/contacts.php:881 +msgid "Advanced Contact Settings" msgstr "" -#: mod/admin.php:1031 -msgid "Maximum Load Average (Frontend)" +#: mod/contacts.php:915 +msgid "Mutual Friendship" msgstr "" -#: mod/admin.php:1031 -msgid "Maximum system load before the frontend quits service - default 50." +#: mod/contacts.php:919 +msgid "is a fan of yours" msgstr "" -#: mod/admin.php:1032 -msgid "Maximum table size for optimization" +#: mod/contacts.php:923 +msgid "you are a fan of" msgstr "" -#: mod/admin.php:1032 -msgid "" -"Maximum table size (in MB) for the automatic optimization - default 100 MB. " -"Enter -1 to disable it." +#: mod/contacts.php:939 mod/nogroup.php:44 +msgid "Edit contact" msgstr "" -#: mod/admin.php:1033 -msgid "Minimum level of fragmentation" +#: mod/contacts.php:993 +msgid "Toggle Blocked status" msgstr "" -#: mod/admin.php:1033 -msgid "" -"Minimum fragmenation level to start the automatic optimization - default " -"value is 30%." +#: mod/contacts.php:1001 +msgid "Toggle Ignored status" msgstr "" -#: mod/admin.php:1035 -msgid "Periodical check of global contacts" +#: mod/contacts.php:1009 +msgid "Toggle Archive status" msgstr "" -#: mod/admin.php:1035 -msgid "" -"If enabled, the global contacts are checked periodically for missing or " -"outdated data and the vitality of the contacts and servers." +#: mod/contacts.php:1017 +msgid "Delete contact" msgstr "" -#: mod/admin.php:1036 -msgid "Days between requery" +#: mod/content.php:119 mod/network.php:475 +msgid "No such group" msgstr "" -#: mod/admin.php:1036 -msgid "Number of days after which a server is requeried for his contacts." +#: mod/content.php:130 mod/group.php:213 mod/network.php:502 +msgid "Group is empty" msgstr "" -#: mod/admin.php:1037 -msgid "Discover contacts from other servers" +#: mod/content.php:135 mod/network.php:506 +#, php-format +msgid "Group: %s" msgstr "" -#: mod/admin.php:1037 -msgid "" -"Periodically query other servers for contacts. You can choose between " -"'users': the users on the remote system, 'Global Contacts': active contacts " -"that are known on the system. The fallback is meant for Redmatrix servers " -"and older friendica servers, where global contacts weren't available. The " -"fallback increases the server load, so the recommened setting is 'Users, " -"Global Contacts'." +#: mod/content.php:325 object/Item.php:96 +msgid "This entry was edited" msgstr "" -#: mod/admin.php:1038 -msgid "Timeframe for fetching global contacts" +#: mod/content.php:621 object/Item.php:417 +#, php-format +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "" +msgstr[1] "" + +#: mod/content.php:638 mod/photos.php:1429 object/Item.php:117 +msgid "Private Message" msgstr "" -#: mod/admin.php:1038 -msgid "" -"When the discovery is activated, this value defines the timeframe for the " -"activity of the global contacts that are fetched from other servers." +#: mod/content.php:702 mod/photos.php:1625 object/Item.php:274 +msgid "I like this (toggle)" msgstr "" -#: mod/admin.php:1039 -msgid "Search the local directory" +#: mod/content.php:702 object/Item.php:274 +msgid "like" msgstr "" -#: mod/admin.php:1039 -msgid "" -"Search the local directory instead of the global directory. When searching " -"locally, every search will be executed on the global directory in the " -"background. This improves the search results when the search is repeated." +#: mod/content.php:703 mod/photos.php:1626 object/Item.php:275 +msgid "I don't like this (toggle)" msgstr "" -#: mod/admin.php:1041 -msgid "Publish server information" +#: mod/content.php:703 object/Item.php:275 +msgid "dislike" msgstr "" -#: mod/admin.php:1041 -msgid "" -"If enabled, general server and usage data will be published. The data " -"contains the name and version of the server, number of users with public " -"profiles, number of posts and the activated protocols and connectors. See the-federation.info for details." +#: mod/content.php:705 object/Item.php:278 +msgid "Share this" msgstr "" -#: mod/admin.php:1043 -msgid "Use MySQL full text engine" +#: mod/content.php:705 object/Item.php:278 +msgid "share" msgstr "" -#: mod/admin.php:1043 -msgid "" -"Activates the full text engine. Speeds up search - but can only search for " -"four and more characters." +#: mod/content.php:725 mod/photos.php:1643 mod/photos.php:1685 +#: mod/photos.php:1765 object/Item.php:702 +msgid "This is you" msgstr "" -#: mod/admin.php:1044 -msgid "Suppress Tags" +#: mod/content.php:727 mod/content.php:950 mod/photos.php:1645 +#: mod/photos.php:1687 mod/photos.php:1767 object/Item.php:392 +#: object/Item.php:704 +msgid "Comment" msgstr "" -#: mod/admin.php:1044 -msgid "Suppress showing a list of hashtags at the end of the posting." +#: mod/content.php:729 object/Item.php:706 +msgid "Bold" msgstr "" -#: mod/admin.php:1045 -msgid "Path to item cache" +#: mod/content.php:730 object/Item.php:707 +msgid "Italic" msgstr "" -#: mod/admin.php:1045 -msgid "The item caches buffers generated bbcode and external images." +#: mod/content.php:731 object/Item.php:708 +msgid "Underline" msgstr "" -#: mod/admin.php:1046 -msgid "Cache duration in seconds" +#: mod/content.php:732 object/Item.php:709 +msgid "Quote" msgstr "" -#: mod/admin.php:1046 -msgid "" -"How long should the cache files be hold? Default value is 86400 seconds (One " -"day). To disable the item cache, set the value to -1." +#: mod/content.php:733 object/Item.php:710 +msgid "Code" msgstr "" -#: mod/admin.php:1047 -msgid "Maximum numbers of comments per post" +#: mod/content.php:734 object/Item.php:711 +msgid "Image" msgstr "" -#: mod/admin.php:1047 -msgid "How much comments should be shown for each post? Default value is 100." +#: mod/content.php:735 object/Item.php:712 +msgid "Link" msgstr "" -#: mod/admin.php:1048 -msgid "Temp path" +#: mod/content.php:736 object/Item.php:713 +msgid "Video" msgstr "" -#: mod/admin.php:1048 -msgid "" -"If you have a restricted system where the webserver can't access the system " -"temp path, enter another path here." +#: mod/content.php:746 mod/settings.php:743 object/Item.php:122 +#: object/Item.php:124 +msgid "Edit" msgstr "" -#: mod/admin.php:1049 -msgid "Base path to installation" +#: mod/content.php:772 object/Item.php:238 +msgid "add star" msgstr "" -#: mod/admin.php:1049 -msgid "" -"If the system cannot detect the correct path to your installation, enter the " -"correct path here. This setting should only be set if you are using a " -"restricted system and symbolic links to your webroot." +#: mod/content.php:773 object/Item.php:239 +msgid "remove star" msgstr "" -#: mod/admin.php:1050 -msgid "Disable picture proxy" +#: mod/content.php:774 object/Item.php:240 +msgid "toggle star status" msgstr "" -#: mod/admin.php:1050 -msgid "" -"The picture proxy increases performance and privacy. It shouldn't be used on " -"systems with very low bandwith." +#: mod/content.php:777 object/Item.php:243 +msgid "starred" msgstr "" -#: mod/admin.php:1051 -msgid "Only search in tags" +#: mod/content.php:778 mod/content.php:800 object/Item.php:263 +msgid "add tag" msgstr "" -#: mod/admin.php:1051 -msgid "On large systems the text search can slow down the system extremely." +#: mod/content.php:789 object/Item.php:251 +msgid "ignore thread" msgstr "" -#: mod/admin.php:1053 -msgid "New base url" +#: mod/content.php:790 object/Item.php:252 +msgid "unignore thread" msgstr "" -#: mod/admin.php:1053 -msgid "" -"Change base url for this server. Sends relocate message to all DFRN contacts " -"of all users." +#: mod/content.php:791 object/Item.php:253 +msgid "toggle ignore status" msgstr "" -#: mod/admin.php:1055 -msgid "RINO Encryption" +#: mod/content.php:794 mod/ostatus_subscribe.php:73 object/Item.php:256 +msgid "ignored" msgstr "" -#: mod/admin.php:1055 -msgid "Encryption layer between nodes." +#: mod/content.php:805 object/Item.php:141 +msgid "save to folder" msgstr "" -#: mod/admin.php:1056 -msgid "Embedly API key" +#: mod/content.php:853 object/Item.php:212 +msgid "I will attend" msgstr "" -#: mod/admin.php:1056 -msgid "" -"Embedly is used to fetch additional data for " -"web pages. This is an optional parameter." +#: mod/content.php:853 object/Item.php:212 +msgid "I will not attend" msgstr "" -#: mod/admin.php:1058 -msgid "Maximum number of parallel workers" +#: mod/content.php:853 object/Item.php:212 +msgid "I might attend" msgstr "" -#: mod/admin.php:1058 -msgid "" -"On shared hosters set this to 2. On larger systems, values of 10 are great. " -"Default value is 4." +#: mod/content.php:917 object/Item.php:358 +msgid "to" msgstr "" -#: mod/admin.php:1059 -msgid "Don't use 'proc_open' with the worker" +#: mod/content.php:918 object/Item.php:360 +msgid "Wall-to-Wall" msgstr "" -#: mod/admin.php:1059 -msgid "" -"Enable this if your system doesn't allow the use of 'proc_open'. This can " -"happen on shared hosters. If this is enabled you should increase the " -"frequency of poller calls in your crontab." +#: mod/content.php:919 object/Item.php:361 +msgid "via Wall-To-Wall:" msgstr "" -#: mod/admin.php:1060 -msgid "Enable fastlane" +#: mod/credits.php:16 +msgid "Credits" msgstr "" -#: mod/admin.php:1060 +#: mod/credits.php:17 msgid "" -"When enabed, the fastlane mechanism starts an additional worker if processes " -"with higher priority are blocked by processes of lower priority." +"Friendica is a community project, that would not be possible without the " +"help of many people. Here is a list of those who have contributed to the " +"code or the translation of Friendica. Thank you all!" msgstr "" -#: mod/admin.php:1061 -msgid "Enable frontend worker" +#: mod/crepair.php:89 +msgid "Contact settings applied." msgstr "" -#: mod/admin.php:1061 -msgid "" -"When enabled the Worker process is triggered when backend access is " -"performed (e.g. messages being delivered). On smaller sites you might want " -"to call yourdomain.tld/worker on a regular basis via an external cron job. " -"You should only enable this option if you cannot utilize cron/scheduled jobs " -"on your server. The worker background process needs to be activated for this." +#: mod/crepair.php:91 +msgid "Contact update failed." msgstr "" -#: mod/admin.php:1091 -msgid "Update has been marked successful" +#: mod/crepair.php:116 mod/fsuggest.php:21 mod/fsuggest.php:93 +#: mod/dfrn_confirm.php:126 +msgid "Contact not found." msgstr "" -#: mod/admin.php:1099 -#, php-format -msgid "Database structure update %s was successfully applied." +#: mod/crepair.php:122 +msgid "" +"WARNING: This is highly advanced and if you enter incorrect " +"information your communications with this contact may stop working." msgstr "" -#: mod/admin.php:1102 -#, php-format -msgid "Executing of database structure update %s failed with error: %s" +#: mod/crepair.php:123 +msgid "" +"Please use your browser 'Back' button now if you are " +"uncertain what to do on this page." msgstr "" -#: mod/admin.php:1116 -#, php-format -msgid "Executing %s failed with error: %s" +#: mod/crepair.php:136 mod/crepair.php:138 +msgid "No mirroring" msgstr "" -#: mod/admin.php:1119 -#, php-format -msgid "Update %s was successfully applied." +#: mod/crepair.php:136 +msgid "Mirror as forwarded posting" msgstr "" -#: mod/admin.php:1122 -#, php-format -msgid "Update %s did not return a status. Unknown if it succeeded." +#: mod/crepair.php:136 mod/crepair.php:138 +msgid "Mirror as my own posting" msgstr "" -#: mod/admin.php:1125 -#, php-format -msgid "There was no additional update function %s that needed to be called." +#: mod/crepair.php:152 +msgid "Return to contact editor" msgstr "" -#: mod/admin.php:1145 -msgid "No failed updates." +#: mod/crepair.php:154 +msgid "Refetch contact data" msgstr "" -#: mod/admin.php:1146 -msgid "Check database structure" +#: mod/crepair.php:158 +msgid "Remote Self" msgstr "" -#: mod/admin.php:1151 -msgid "Failed Updates" +#: mod/crepair.php:161 +msgid "Mirror postings from this contact" msgstr "" -#: mod/admin.php:1152 +#: mod/crepair.php:163 msgid "" -"This does not include updates prior to 1139, which did not return a status." +"Mark this contact as remote_self, this will cause friendica to repost new " +"entries from this contact." msgstr "" -#: mod/admin.php:1153 -msgid "Mark success (if update was manually applied)" +#: mod/crepair.php:167 mod/settings.php:683 mod/settings.php:709 +#: mod/admin.php:1490 mod/admin.php:1503 mod/admin.php:1516 mod/admin.php:1532 +msgid "Name" msgstr "" -#: mod/admin.php:1154 -msgid "Attempt to execute this update step automatically" +#: mod/crepair.php:168 +msgid "Account Nickname" msgstr "" -#: mod/admin.php:1188 -#, php-format -msgid "" -"\n" -"\t\t\tDear %1$s,\n" -"\t\t\t\tthe administrator of %2$s has set up an account for you." +#: mod/crepair.php:169 +msgid "@Tagname - overrides Name/Nickname" msgstr "" -#: mod/admin.php:1191 -#, php-format -msgid "" -"\n" -"\t\t\tThe login details are as follows:\n" -"\n" -"\t\t\tSite Location:\t%1$s\n" -"\t\t\tLogin Name:\t\t%2$s\n" -"\t\t\tPassword:\t\t%3$s\n" -"\n" -"\t\t\tYou may change your password from your account \"Settings\" page after " -"logging\n" -"\t\t\tin.\n" -"\n" -"\t\t\tPlease take a few moments to review the other account settings on that " -"page.\n" -"\n" -"\t\t\tYou may also wish to add some basic information to your default " -"profile\n" -"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" -"\n" -"\t\t\tWe recommend setting your full name, adding a profile photo,\n" -"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - " -"and\n" -"\t\t\tperhaps what country you live in; if you do not wish to be more " -"specific\n" -"\t\t\tthan that.\n" -"\n" -"\t\t\tWe fully respect your right to privacy, and none of these items are " -"necessary.\n" -"\t\t\tIf you are new and do not know anybody here, they may help\n" -"\t\t\tyou to make some new and interesting friends.\n" -"\n" -"\t\t\tThank you and welcome to %4$s." +#: mod/crepair.php:170 +msgid "Account URL" msgstr "" -#: mod/admin.php:1235 -#, php-format -msgid "%s user blocked/unblocked" -msgid_plural "%s users blocked/unblocked" -msgstr[0] "" -msgstr[1] "" - -#: mod/admin.php:1242 -#, php-format -msgid "%s user deleted" -msgid_plural "%s users deleted" -msgstr[0] "" -msgstr[1] "" - -#: mod/admin.php:1289 -#, php-format -msgid "User '%s' deleted" +#: mod/crepair.php:171 +msgid "Friend Request URL" msgstr "" -#: mod/admin.php:1297 -#, php-format -msgid "User '%s' unblocked" +#: mod/crepair.php:172 +msgid "Friend Confirm URL" msgstr "" -#: mod/admin.php:1297 -#, php-format -msgid "User '%s' blocked" +#: mod/crepair.php:173 +msgid "Notification Endpoint URL" msgstr "" -#: mod/admin.php:1405 mod/admin.php:1418 mod/admin.php:1431 mod/admin.php:1447 -#: mod/crepair.php:167 mod/settings.php:683 mod/settings.php:709 -msgid "Name" +#: mod/crepair.php:174 +msgid "Poll/Feed URL" msgstr "" -#: mod/admin.php:1405 mod/admin.php:1431 -msgid "Register date" +#: mod/crepair.php:175 +msgid "New photo from this URL" msgstr "" -#: mod/admin.php:1405 mod/admin.php:1431 -msgid "Last login" +#: mod/delegate.php:101 +msgid "No potential page delegates located." msgstr "" -#: mod/admin.php:1405 mod/admin.php:1431 -msgid "Last item" +#: mod/delegate.php:132 +msgid "" +"Delegates are able to manage all aspects of this account/page except for " +"basic account settings. Please do not delegate your personal account to " +"anybody that you do not trust completely." msgstr "" -#: mod/admin.php:1405 mod/settings.php:43 -msgid "Account" +#: mod/delegate.php:133 +msgid "Existing Page Managers" msgstr "" -#: mod/admin.php:1414 -msgid "Add User" +#: mod/delegate.php:135 +msgid "Existing Page Delegates" msgstr "" -#: mod/admin.php:1415 -msgid "select all" +#: mod/delegate.php:137 +msgid "Potential Delegates" msgstr "" -#: mod/admin.php:1416 -msgid "User registrations waiting for confirm" +#: mod/delegate.php:139 mod/tagrm.php:95 +msgid "Remove" msgstr "" -#: mod/admin.php:1417 -msgid "User waiting for permanent deletion" +#: mod/delegate.php:140 +msgid "Add" msgstr "" -#: mod/admin.php:1418 -msgid "Request date" +#: mod/delegate.php:141 +msgid "No entries." msgstr "" -#: mod/admin.php:1419 -msgid "No registrations." +#: mod/dfrn_poll.php:104 mod/dfrn_poll.php:539 +#, php-format +msgid "%1$s welcomes %2$s" msgstr "" -#: mod/admin.php:1420 -msgid "Note from the user" +#: mod/directory.php:37 mod/display.php:200 mod/viewcontacts.php:36 +#: mod/community.php:18 mod/dfrn_request.php:804 mod/photos.php:979 +#: mod/probe.php:9 mod/search.php:93 mod/search.php:99 mod/videos.php:198 +#: mod/webfinger.php:8 +msgid "Public access denied." msgstr "" -#: mod/admin.php:1421 mod/notifications.php:176 mod/notifications.php:255 -msgid "Approve" +#: mod/directory.php:199 view/theme/vier/theme.php:199 +msgid "Global Directory" msgstr "" -#: mod/admin.php:1422 -msgid "Deny" +#: mod/directory.php:201 +msgid "Find on this site" msgstr "" -#: mod/admin.php:1424 mod/contacts.php:613 mod/contacts.php:813 -#: mod/contacts.php:991 -msgid "Block" +#: mod/directory.php:203 +msgid "Results for:" msgstr "" -#: mod/admin.php:1425 mod/contacts.php:613 mod/contacts.php:813 -#: mod/contacts.php:991 -msgid "Unblock" +#: mod/directory.php:205 +msgid "Site Directory" msgstr "" -#: mod/admin.php:1426 -msgid "Site admin" +#: mod/directory.php:212 +msgid "No entries (some entries may be hidden)." msgstr "" -#: mod/admin.php:1427 -msgid "Account expired" +#: mod/display.php:328 mod/cal.php:143 mod/profile.php:155 +msgid "Access to this profile has been restricted." msgstr "" -#: mod/admin.php:1430 -msgid "New User" +#: mod/display.php:479 +msgid "Item has been removed." msgstr "" -#: mod/admin.php:1431 -msgid "Deleted since" +#: mod/editpost.php:17 mod/editpost.php:27 +msgid "Item not found" msgstr "" -#: mod/admin.php:1436 -msgid "" -"Selected users will be deleted!\\n\\nEverything these users had posted on " -"this site will be permanently deleted!\\n\\nAre you sure?" +#: mod/editpost.php:32 +msgid "Edit post" msgstr "" -#: mod/admin.php:1437 -msgid "" -"The user {0} will be deleted!\\n\\nEverything this user has posted on this " -"site will be permanently deleted!\\n\\nAre you sure?" +#: mod/fbrowser.php:132 +msgid "Files" msgstr "" -#: mod/admin.php:1447 -msgid "Name of the new user." +#: mod/fetch.php:12 mod/fetch.php:39 mod/fetch.php:48 mod/help.php:53 +#: mod/p.php:16 mod/p.php:43 mod/p.php:52 index.php:298 +msgid "Not Found" msgstr "" -#: mod/admin.php:1448 -msgid "Nickname" +#: mod/filer.php:30 +msgid "- select -" msgstr "" -#: mod/admin.php:1448 -msgid "Nickname of the new user." +#: mod/fsuggest.php:64 +msgid "Friend suggestion sent." msgstr "" -#: mod/admin.php:1449 -msgid "Email address of the new user." +#: mod/fsuggest.php:98 +msgid "Suggest Friends" msgstr "" -#: mod/admin.php:1492 +#: mod/fsuggest.php:100 #, php-format -msgid "Plugin %s disabled." +msgid "Suggest a friend for %s" msgstr "" -#: mod/admin.php:1496 -#, php-format -msgid "Plugin %s enabled." +#: mod/hcard.php:11 +msgid "No profile" msgstr "" -#: mod/admin.php:1507 mod/admin.php:1759 -msgid "Disable" +#: mod/help.php:41 +msgid "Help:" msgstr "" -#: mod/admin.php:1509 mod/admin.php:1761 -msgid "Enable" +#: mod/help.php:56 index.php:301 +msgid "Page not found." msgstr "" -#: mod/admin.php:1532 mod/admin.php:1808 -msgid "Toggle" +#: mod/home.php:39 +#, php-format +msgid "Welcome to %s" msgstr "" -#: mod/admin.php:1540 mod/admin.php:1817 -msgid "Author: " +#: mod/invite.php:28 +msgid "Total invitation limit exceeded." msgstr "" -#: mod/admin.php:1541 mod/admin.php:1818 -msgid "Maintainer: " +#: mod/invite.php:51 +#, php-format +msgid "%s : Not a valid email address." msgstr "" -#: mod/admin.php:1596 -msgid "Reload active plugins" +#: mod/invite.php:76 +msgid "Please join us on Friendica" msgstr "" -#: mod/admin.php:1601 -#, php-format -msgid "" -"There are currently no plugins available on your node. You can find the " -"official plugin repository at %1$s and might find other interesting plugins " -"in the open plugin registry at %2$s" +#: mod/invite.php:87 +msgid "Invitation limit exceeded. Please contact your site administrator." msgstr "" -#: mod/admin.php:1720 -msgid "No themes found." +#: mod/invite.php:91 +#, php-format +msgid "%s : Message delivery failed." msgstr "" -#: mod/admin.php:1799 -msgid "Screenshot" -msgstr "" +#: mod/invite.php:95 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "" +msgstr[1] "" -#: mod/admin.php:1859 -msgid "Reload active themes" +#: mod/invite.php:114 +msgid "You have no more invitations available" msgstr "" -#: mod/admin.php:1864 +#: mod/invite.php:122 #, php-format -msgid "No themes found on the system. They should be paced in %1$s" +msgid "" +"Visit %s for a list of public sites that you can join. Friendica members on " +"other sites can all connect with each other, as well as with members of many " +"other social networks." msgstr "" -#: mod/admin.php:1865 -msgid "[Experimental]" +#: mod/invite.php:124 +#, php-format +msgid "" +"To accept this invitation, please visit and register at %s or any other " +"public Friendica website." msgstr "" -#: mod/admin.php:1866 -msgid "[Unsupported]" +#: mod/invite.php:125 +#, php-format +msgid "" +"Friendica sites all inter-connect to create a huge privacy-enhanced social " +"web that is owned and controlled by its members. They can also connect with " +"many traditional social networks. See %s for a list of alternate Friendica " +"sites you can join." msgstr "" -#: mod/admin.php:1890 -msgid "Log settings updated." +#: mod/invite.php:128 +msgid "" +"Our apologies. This system is not currently configured to connect with other " +"public sites or invite members." msgstr "" -#: mod/admin.php:1922 -msgid "PHP log currently enabled." +#: mod/invite.php:134 +msgid "Send invitations" msgstr "" -#: mod/admin.php:1924 -msgid "PHP log currently disabled." +#: mod/invite.php:135 +msgid "Enter email addresses, one per line:" msgstr "" -#: mod/admin.php:1933 -msgid "Clear" +#: mod/invite.php:136 mod/wallmessage.php:135 mod/message.php:332 +#: mod/message.php:515 +msgid "Your message:" msgstr "" -#: mod/admin.php:1938 -msgid "Enable Debugging" +#: mod/invite.php:137 +msgid "" +"You are cordially invited to join me and other close friends on Friendica - " +"and help us to create a better social web." msgstr "" -#: mod/admin.php:1939 -msgid "Log file" +#: mod/invite.php:139 +msgid "You will need to supply this invitation code: $invite_code" msgstr "" -#: mod/admin.php:1939 +#: mod/invite.php:139 msgid "" -"Must be writable by web server. Relative to your Friendica top-level " -"directory." +"Once you have registered, please connect with me via my profile page at:" msgstr "" -#: mod/admin.php:1940 -msgid "Log level" +#: mod/invite.php:141 +msgid "" +"For more information about the Friendica project and why we feel it is " +"important, please visit http://friendica.com" msgstr "" -#: mod/admin.php:1943 -msgid "PHP logging" +#: mod/localtime.php:24 +msgid "Time Conversion" msgstr "" -#: mod/admin.php:1944 +#: mod/localtime.php:26 msgid "" -"To enable logging of PHP errors and warnings you can add the following to " -"the .htconfig.php file of your installation. The filename set in the " -"'error_log' line is relative to the friendica top-level directory and must " -"be writeable by the web server. The option '1' for 'log_errors' and " -"'display_errors' is to enable these options, set to '0' to disable them." +"Friendica provides this service for sharing events with other networks and " +"friends in unknown timezones." msgstr "" -#: mod/admin.php:2074 mod/admin.php:2075 mod/settings.php:782 -msgid "Off" +#: mod/localtime.php:30 +#, php-format +msgid "UTC time: %s" msgstr "" -#: mod/admin.php:2074 mod/admin.php:2075 mod/settings.php:782 -msgid "On" +#: mod/localtime.php:33 +#, php-format +msgid "Current timezone: %s" msgstr "" -#: mod/admin.php:2075 +#: mod/localtime.php:36 #, php-format -msgid "Lock feature %s" +msgid "Converted localtime: %s" msgstr "" -#: mod/admin.php:2083 -msgid "Manage Additional Features" +#: mod/localtime.php:41 +msgid "Please select your timezone:" msgstr "" -#: mod/allfriends.php:46 -msgid "No friends to display." +#: mod/lockview.php:32 mod/lockview.php:40 +msgid "Remote privacy information not available." msgstr "" -#: mod/api.php:76 mod/api.php:102 -msgid "Authorize application connection" +#: mod/lockview.php:49 +msgid "Visible to:" msgstr "" -#: mod/api.php:77 -msgid "Return to your app and insert this Securty Code:" +#: mod/lostpass.php:19 +msgid "No valid account found." msgstr "" -#: mod/api.php:89 -msgid "Please login to continue." +#: mod/lostpass.php:35 +msgid "Password reset request issued. Check your email." msgstr "" -#: mod/api.php:104 +#: mod/lostpass.php:41 +#, php-format msgid "" -"Do you want to authorize this application to access your posts and contacts, " -"and/or create new posts for you?" +"\n" +"\t\tDear %1$s,\n" +"\t\t\tA request was recently received at \"%2$s\" to reset your account\n" +"\t\tpassword. In order to confirm this request, please select the " +"verification link\n" +"\t\tbelow or paste it into your web browser address bar.\n" +"\n" +"\t\tIf you did NOT request this change, please DO NOT follow the link\n" +"\t\tprovided and ignore and/or delete this email.\n" +"\n" +"\t\tYour password will not be changed unless we can verify that you\n" +"\t\tissued this request." msgstr "" -#: mod/api.php:106 mod/dfrn_request.php:875 mod/follow.php:113 -#: mod/profiles.php:640 mod/profiles.php:644 mod/profiles.php:669 -#: mod/register.php:246 mod/settings.php:1171 mod/settings.php:1177 -#: mod/settings.php:1184 mod/settings.php:1188 mod/settings.php:1193 -#: mod/settings.php:1198 mod/settings.php:1203 mod/settings.php:1208 -#: mod/settings.php:1234 mod/settings.php:1235 mod/settings.php:1236 -#: mod/settings.php:1237 mod/settings.php:1238 -msgid "No" +#: mod/lostpass.php:52 +#, php-format +msgid "" +"\n" +"\t\tFollow this link to verify your identity:\n" +"\n" +"\t\t%1$s\n" +"\n" +"\t\tYou will then receive a follow-up message containing the new password.\n" +"\t\tYou may change that password from your account settings page after " +"logging in.\n" +"\n" +"\t\tThe login details are as follows:\n" +"\n" +"\t\tSite Location:\t%2$s\n" +"\t\tLogin Name:\t%3$s" msgstr "" -#: mod/apps.php:11 -msgid "Applications" +#: mod/lostpass.php:71 +#, php-format +msgid "Password reset requested at %s" msgstr "" -#: mod/apps.php:14 -msgid "No installed applications." +#: mod/lostpass.php:91 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." msgstr "" -#: mod/attach.php:8 -msgid "Item not available." +#: mod/lostpass.php:110 boot.php:1882 +msgid "Password Reset" msgstr "" -#: mod/attach.php:20 -msgid "Item was not found." +#: mod/lostpass.php:111 +msgid "Your password has been reset as requested." msgstr "" -#: mod/babel.php:17 -msgid "Source (bbcode) text:" +#: mod/lostpass.php:112 +msgid "Your new password is" msgstr "" -#: mod/babel.php:23 -msgid "Source (Diaspora) text to convert to BBcode:" +#: mod/lostpass.php:113 +msgid "Save or copy your new password - and then" msgstr "" -#: mod/babel.php:31 -msgid "Source input: " +#: mod/lostpass.php:114 +msgid "click here to login" msgstr "" -#: mod/babel.php:35 -msgid "bb2html (raw HTML): " +#: mod/lostpass.php:115 +msgid "" +"Your password may be changed from the Settings page after " +"successful login." msgstr "" -#: mod/babel.php:39 -msgid "bb2html: " +#: mod/lostpass.php:125 +#, php-format +msgid "" +"\n" +"\t\t\t\tDear %1$s,\n" +"\t\t\t\t\tYour password has been changed as requested. Please retain this\n" +"\t\t\t\tinformation for your records (or change your password immediately " +"to\n" +"\t\t\t\tsomething that you will remember).\n" +"\t\t\t" msgstr "" -#: mod/babel.php:43 -msgid "bb2html2bb: " +#: mod/lostpass.php:131 +#, php-format +msgid "" +"\n" +"\t\t\t\tYour login details are as follows:\n" +"\n" +"\t\t\t\tSite Location:\t%1$s\n" +"\t\t\t\tLogin Name:\t%2$s\n" +"\t\t\t\tPassword:\t%3$s\n" +"\n" +"\t\t\t\tYou may change that password from your account settings page after " +"logging in.\n" +"\t\t\t" msgstr "" -#: mod/babel.php:47 -msgid "bb2md: " +#: mod/lostpass.php:147 +#, php-format +msgid "Your password has been changed at %s" msgstr "" -#: mod/babel.php:51 -msgid "bb2md2html: " +#: mod/lostpass.php:159 +msgid "Forgot your Password?" msgstr "" -#: mod/babel.php:55 -msgid "bb2dia2bb: " +#: mod/lostpass.php:160 +msgid "" +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." msgstr "" -#: mod/babel.php:59 -msgid "bb2md2html2bb: " +#: mod/lostpass.php:161 boot.php:1870 +msgid "Nickname or Email: " msgstr "" -#: mod/babel.php:69 -msgid "Source input (Diaspora format): " +#: mod/lostpass.php:162 +msgid "Reset" msgstr "" -#: mod/babel.php:74 -msgid "diaspora2bb: " +#: mod/maintenance.php:20 +msgid "System down for maintenance" msgstr "" -#: mod/bookmarklet.php:41 -msgid "The post was created" +#: mod/match.php:35 +msgid "No keywords to match. Please add keywords to your default profile." msgstr "" -#: mod/cal.php:143 mod/display.php:328 mod/profile.php:154 -msgid "Access to this profile has been restricted." +#: mod/match.php:88 +msgid "is interested in:" msgstr "" -#: mod/cal.php:271 mod/events.php:387 -msgid "View" +#: mod/match.php:102 +msgid "Profile Match" msgstr "" -#: mod/cal.php:272 mod/events.php:389 -msgid "Previous" +#: mod/match.php:109 mod/dirfind.php:245 +msgid "No matches" msgstr "" -#: mod/cal.php:273 mod/events.php:390 mod/install.php:235 -msgid "Next" +#: mod/mood.php:134 +msgid "Mood" msgstr "" -#: mod/cal.php:282 mod/events.php:399 -msgid "list" +#: mod/mood.php:135 +msgid "Set your current mood and tell your friends" msgstr "" -#: mod/cal.php:292 -msgid "User not found" +#: mod/newmember.php:6 +msgid "Welcome to Friendica" msgstr "" -#: mod/cal.php:308 -msgid "This calendar format is not supported" +#: mod/newmember.php:8 +msgid "New Member Checklist" msgstr "" -#: mod/cal.php:310 -msgid "No exportable data found" +#: mod/newmember.php:12 +msgid "" +"We would like to offer some tips and links to help make your experience " +"enjoyable. Click any item to visit the relevant page. A link to this page " +"will be visible from your home page for two weeks after your initial " +"registration and then will quietly disappear." msgstr "" -#: mod/cal.php:325 -msgid "calendar" +#: mod/newmember.php:14 +msgid "Getting Started" msgstr "" -#: mod/common.php:91 -msgid "No contacts in common." +#: mod/newmember.php:18 +msgid "Friendica Walk-Through" msgstr "" -#: mod/common.php:141 mod/contacts.php:871 -msgid "Common Friends" +#: mod/newmember.php:18 +msgid "" +"On your Quick Start page - find a brief introduction to your " +"profile and network tabs, make some new connections, and find some groups to " +"join." msgstr "" -#: mod/community.php:22 mod/dfrn_request.php:799 mod/directory.php:37 -#: mod/display.php:200 mod/photos.php:964 mod/search.php:93 mod/search.php:99 -#: mod/videos.php:198 mod/viewcontacts.php:36 -msgid "Public access denied." +#: mod/newmember.php:26 +msgid "Go to Your Settings" msgstr "" -#: mod/community.php:27 -msgid "Not available." +#: mod/newmember.php:26 +msgid "" +"On your Settings page - change your initial password. Also make a " +"note of your Identity Address. This looks just like an email address - and " +"will be useful in making friends on the free social web." msgstr "" -#: mod/community.php:54 mod/search.php:224 -msgid "No results." +#: mod/newmember.php:28 +msgid "" +"Review the other settings, particularly the privacy settings. An unpublished " +"directory listing is like having an unlisted phone number. In general, you " +"should probably publish your listing - unless all of your friends and " +"potential friends know exactly how to find you." msgstr "" -#: mod/contacts.php:134 -#, php-format -msgid "%d contact edited." -msgid_plural "%d contacts edited." -msgstr[0] "" -msgstr[1] "" - -#: mod/contacts.php:169 mod/contacts.php:378 -msgid "Could not access contact record." +#: mod/newmember.php:36 mod/profile_photo.php:256 mod/profiles.php:700 +msgid "Upload Profile Photo" msgstr "" -#: mod/contacts.php:183 -msgid "Could not locate selected profile." +#: mod/newmember.php:36 +msgid "" +"Upload a profile photo if you have not done so already. Studies have shown " +"that people with real photos of themselves are ten times more likely to make " +"friends than people who do not." msgstr "" -#: mod/contacts.php:216 -msgid "Contact updated." +#: mod/newmember.php:38 +msgid "Edit Your Profile" msgstr "" -#: mod/contacts.php:218 mod/dfrn_request.php:588 -msgid "Failed to update contact record." +#: mod/newmember.php:38 +msgid "" +"Edit your default profile to your liking. Review the " +"settings for hiding your list of friends and hiding the profile from unknown " +"visitors." msgstr "" -#: mod/contacts.php:399 -msgid "Contact has been blocked" +#: mod/newmember.php:40 +msgid "Profile Keywords" msgstr "" -#: mod/contacts.php:399 -msgid "Contact has been unblocked" +#: mod/newmember.php:40 +msgid "" +"Set some public keywords for your default profile which describe your " +"interests. We may be able to find other people with similar interests and " +"suggest friendships." msgstr "" -#: mod/contacts.php:410 -msgid "Contact has been ignored" +#: mod/newmember.php:44 +msgid "Connecting" msgstr "" -#: mod/contacts.php:410 -msgid "Contact has been unignored" +#: mod/newmember.php:51 +msgid "Importing Emails" msgstr "" -#: mod/contacts.php:422 -msgid "Contact has been archived" +#: mod/newmember.php:51 +msgid "" +"Enter your email access information on your Connector Settings page if you " +"wish to import and interact with friends or mailing lists from your email " +"INBOX" msgstr "" -#: mod/contacts.php:422 -msgid "Contact has been unarchived" +#: mod/newmember.php:53 +msgid "Go to Your Contacts Page" msgstr "" -#: mod/contacts.php:447 -msgid "Drop contact" +#: mod/newmember.php:53 +msgid "" +"Your Contacts page is your gateway to managing friendships and connecting " +"with friends on other networks. Typically you enter their address or site " +"URL in the Add New Contact dialog." msgstr "" -#: mod/contacts.php:450 mod/contacts.php:809 -msgid "Do you really want to delete this contact?" +#: mod/newmember.php:55 +msgid "Go to Your Site's Directory" msgstr "" -#: mod/contacts.php:469 -msgid "Contact has been removed." +#: mod/newmember.php:55 +msgid "" +"The Directory page lets you find other people in this network or other " +"federated sites. Look for a Connect or Follow link on " +"their profile page. Provide your own Identity Address if requested." msgstr "" -#: mod/contacts.php:506 -#, php-format -msgid "You are mutual friends with %s" +#: mod/newmember.php:57 +msgid "Finding New People" msgstr "" -#: mod/contacts.php:510 -#, php-format -msgid "You are sharing with %s" +#: mod/newmember.php:57 +msgid "" +"On the side panel of the Contacts page are several tools to find new " +"friends. We can match people by interest, look up people by name or " +"interest, and provide suggestions based on network relationships. On a brand " +"new site, friend suggestions will usually begin to be populated within 24 " +"hours." msgstr "" -#: mod/contacts.php:515 -#, php-format -msgid "%s is sharing with you" +#: mod/newmember.php:65 +msgid "Group Your Contacts" msgstr "" -#: mod/contacts.php:535 -msgid "Private communications are not available for this contact." +#: mod/newmember.php:65 +msgid "" +"Once you have made some friends, organize them into private conversation " +"groups from the sidebar of your Contacts page and then you can interact with " +"each group privately on your Network page." msgstr "" -#: mod/contacts.php:542 -msgid "(Update was successful)" +#: mod/newmember.php:68 +msgid "Why Aren't My Posts Public?" msgstr "" -#: mod/contacts.php:542 -msgid "(Update was not successful)" +#: mod/newmember.php:68 +msgid "" +"Friendica respects your privacy. By default, your posts will only show up to " +"people you've added as friends. For more information, see the help section " +"from the link above." msgstr "" -#: mod/contacts.php:544 mod/contacts.php:972 -msgid "Suggest friends" +#: mod/newmember.php:73 +msgid "Getting Help" msgstr "" -#: mod/contacts.php:548 -#, php-format -msgid "Network type: %s" +#: mod/newmember.php:77 +msgid "Go to the Help Section" msgstr "" -#: mod/contacts.php:561 -msgid "Communications lost with this contact!" +#: mod/newmember.php:77 +msgid "" +"Our help pages may be consulted for detail on other program " +"features and resources." msgstr "" -#: mod/contacts.php:564 -msgid "Fetch further information for feeds" +#: mod/nogroup.php:65 +msgid "Contacts who are not members of a group" msgstr "" -#: mod/contacts.php:565 -msgid "Fetch information" +#: mod/notify.php:65 +msgid "No more system notifications." msgstr "" -#: mod/contacts.php:565 -msgid "Fetch information and keywords" +#: mod/notify.php:69 mod/notifications.php:111 +msgid "System Notifications" msgstr "" -#: mod/contacts.php:583 -msgid "Contact" +#: mod/oexchange.php:21 +msgid "Post successful." msgstr "" -#: mod/contacts.php:585 mod/content.php:728 mod/crepair.php:156 -#: mod/events.php:513 mod/fsuggest.php:108 mod/install.php:276 -#: mod/install.php:316 mod/invite.php:142 mod/localtime.php:45 -#: mod/manage.php:145 mod/message.php:338 mod/message.php:521 mod/mood.php:138 -#: mod/photos.php:1124 mod/photos.php:1246 mod/photos.php:1562 -#: mod/photos.php:1612 mod/photos.php:1660 mod/photos.php:1746 -#: mod/poke.php:203 mod/profiles.php:680 object/Item.php:705 -#: view/theme/duepuntozero/config.php:61 view/theme/frio/config.php:64 -#: view/theme/quattro/config.php:67 view/theme/vier/config.php:112 -msgid "Submit" +#: mod/ostatus_subscribe.php:14 +msgid "Subscribing to OStatus contacts" msgstr "" -#: mod/contacts.php:586 -msgid "Profile Visibility" +#: mod/ostatus_subscribe.php:25 +msgid "No contact provided." msgstr "" -#: mod/contacts.php:587 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." +#: mod/ostatus_subscribe.php:31 +msgid "Couldn't fetch information for contact." msgstr "" -#: mod/contacts.php:588 -msgid "Contact Information / Notes" +#: mod/ostatus_subscribe.php:40 +msgid "Couldn't fetch friends for contact." msgstr "" -#: mod/contacts.php:589 -msgid "Edit contact notes" +#: mod/ostatus_subscribe.php:54 mod/repair_ostatus.php:44 +msgid "Done" msgstr "" -#: mod/contacts.php:594 mod/contacts.php:938 mod/nogroup.php:43 -#: mod/viewcontacts.php:102 -#, php-format -msgid "Visit %s's profile [%s]" +#: mod/ostatus_subscribe.php:68 +msgid "success" msgstr "" -#: mod/contacts.php:595 -msgid "Block/Unblock contact" +#: mod/ostatus_subscribe.php:70 +msgid "failed" msgstr "" -#: mod/contacts.php:596 -msgid "Ignore contact" +#: mod/ostatus_subscribe.php:78 mod/repair_ostatus.php:50 +msgid "Keep this window open until done." msgstr "" -#: mod/contacts.php:597 -msgid "Repair URL settings" +#: mod/p.php:9 +msgid "Not Extended" msgstr "" -#: mod/contacts.php:598 -msgid "View conversations" +#: mod/poke.php:196 +msgid "Poke/Prod" msgstr "" -#: mod/contacts.php:604 -msgid "Last update:" +#: mod/poke.php:197 +msgid "poke, prod or do other things to somebody" msgstr "" -#: mod/contacts.php:606 -msgid "Update public posts" +#: mod/poke.php:198 +msgid "Recipient" msgstr "" -#: mod/contacts.php:608 mod/contacts.php:982 -msgid "Update now" +#: mod/poke.php:199 +msgid "Choose what you wish to do to recipient" msgstr "" -#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 -msgid "Unignore" +#: mod/poke.php:202 +msgid "Make this post private" msgstr "" -#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 -#: mod/notifications.php:60 mod/notifications.php:179 -#: mod/notifications.php:257 -msgid "Ignore" +#: mod/profile_photo.php:44 +msgid "Image uploaded but image cropping failed." msgstr "" -#: mod/contacts.php:618 -msgid "Currently blocked" +#: mod/profile_photo.php:77 mod/profile_photo.php:85 mod/profile_photo.php:93 +#: mod/profile_photo.php:323 +#, php-format +msgid "Image size reduction [%s] failed." msgstr "" -#: mod/contacts.php:619 -msgid "Currently ignored" +#: mod/profile_photo.php:127 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." msgstr "" -#: mod/contacts.php:620 -msgid "Currently archived" +#: mod/profile_photo.php:137 +msgid "Unable to process image" msgstr "" -#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:245 -msgid "Hide this contact from others" +#: mod/profile_photo.php:156 mod/photos.php:813 mod/wall_upload.php:181 +#, php-format +msgid "Image exceeds size limit of %s" msgstr "" -#: mod/contacts.php:621 -msgid "" -"Replies/likes to your public posts may still be visible" +#: mod/profile_photo.php:165 mod/photos.php:854 mod/wall_upload.php:218 +msgid "Unable to process image." msgstr "" -#: mod/contacts.php:622 -msgid "Notification for new posts" +#: mod/profile_photo.php:254 +msgid "Upload File:" msgstr "" -#: mod/contacts.php:622 -msgid "Send a notification of every new post of this contact" +#: mod/profile_photo.php:255 +msgid "Select a profile:" msgstr "" -#: mod/contacts.php:625 -msgid "Blacklisted keywords" +#: mod/profile_photo.php:257 +msgid "Upload" msgstr "" -#: mod/contacts.php:625 -msgid "" -"Comma separated list of keywords that should not be converted to hashtags, " -"when \"Fetch information and keywords\" is selected" +#: mod/profile_photo.php:260 +msgid "or" msgstr "" -#: mod/contacts.php:632 mod/follow.php:129 mod/notifications.php:249 -msgid "Profile URL" +#: mod/profile_photo.php:260 +msgid "skip this step" msgstr "" -#: mod/contacts.php:643 -msgid "Actions" +#: mod/profile_photo.php:260 +msgid "select a photo from your photo albums" msgstr "" -#: mod/contacts.php:646 -msgid "Contact Settings" +#: mod/profile_photo.php:274 +msgid "Crop Image" msgstr "" -#: mod/contacts.php:692 -msgid "Suggestions" +#: mod/profile_photo.php:275 +msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: mod/contacts.php:695 -msgid "Suggest potential friends" +#: mod/profile_photo.php:277 +msgid "Done Editing" msgstr "" -#: mod/contacts.php:700 mod/group.php:202 -msgid "All Contacts" +#: mod/profile_photo.php:313 +msgid "Image uploaded successfully." msgstr "" -#: mod/contacts.php:703 -msgid "Show all contacts" +#: mod/profile_photo.php:315 mod/photos.php:883 mod/wall_upload.php:257 +msgid "Image upload failed." msgstr "" -#: mod/contacts.php:708 -msgid "Unblocked" +#: mod/profperm.php:20 mod/group.php:76 index.php:406 +msgid "Permission denied" msgstr "" -#: mod/contacts.php:711 -msgid "Only show unblocked contacts" +#: mod/profperm.php:26 mod/profperm.php:57 +msgid "Invalid profile identifier." msgstr "" -#: mod/contacts.php:717 -msgid "Blocked" +#: mod/profperm.php:103 +msgid "Profile Visibility Editor" msgstr "" -#: mod/contacts.php:720 -msgid "Only show blocked contacts" +#: mod/profperm.php:107 mod/group.php:262 +msgid "Click on a contact to add or remove." msgstr "" -#: mod/contacts.php:726 -msgid "Ignored" +#: mod/profperm.php:116 +msgid "Visible To" msgstr "" -#: mod/contacts.php:729 -msgid "Only show ignored contacts" +#: mod/profperm.php:132 +msgid "All Contacts (with secure profile access)" msgstr "" -#: mod/contacts.php:735 -msgid "Archived" +#: mod/regmod.php:58 +msgid "Account approved." msgstr "" -#: mod/contacts.php:738 -msgid "Only show archived contacts" +#: mod/regmod.php:95 +#, php-format +msgid "Registration revoked for %s" msgstr "" -#: mod/contacts.php:744 -msgid "Hidden" +#: mod/regmod.php:107 +msgid "Please login." msgstr "" -#: mod/contacts.php:747 -msgid "Only show hidden contacts" +#: mod/removeme.php:52 mod/removeme.php:55 +msgid "Remove My Account" msgstr "" -#: mod/contacts.php:804 -msgid "Search your contacts" +#: mod/removeme.php:53 +msgid "" +"This will completely remove your account. Once this has been done it is not " +"recoverable." msgstr "" -#: mod/contacts.php:805 mod/network.php:145 mod/search.php:232 -#, php-format -msgid "Results for: %s" +#: mod/removeme.php:54 +msgid "Please enter your password for verification:" msgstr "" -#: mod/contacts.php:812 mod/settings.php:160 mod/settings.php:707 -msgid "Update" +#: mod/repair_ostatus.php:14 +msgid "Resubscribing to OStatus contacts" msgstr "" -#: mod/contacts.php:815 mod/contacts.php:1007 -msgid "Archive" +#: mod/repair_ostatus.php:30 +msgid "Error" msgstr "" -#: mod/contacts.php:815 mod/contacts.php:1007 -msgid "Unarchive" +#: mod/subthread.php:104 +#, php-format +msgid "%1$s is following %2$s's %3$s" msgstr "" -#: mod/contacts.php:818 -msgid "Batch Actions" +#: mod/suggest.php:27 +msgid "Do you really want to delete this suggestion?" msgstr "" -#: mod/contacts.php:864 -msgid "View all contacts" +#: mod/suggest.php:71 +msgid "" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." msgstr "" -#: mod/contacts.php:874 -msgid "View all common friends" +#: mod/suggest.php:84 mod/suggest.php:104 +msgid "Ignore/Hide" msgstr "" -#: mod/contacts.php:881 -msgid "Advanced Contact Settings" +#: mod/tagrm.php:43 +msgid "Tag removed" msgstr "" -#: mod/contacts.php:915 -msgid "Mutual Friendship" +#: mod/tagrm.php:82 +msgid "Remove Item Tag" msgstr "" -#: mod/contacts.php:919 -msgid "is a fan of yours" +#: mod/tagrm.php:84 +msgid "Select a tag to remove: " msgstr "" -#: mod/contacts.php:923 -msgid "you are a fan of" +#: mod/uimport.php:51 mod/register.php:198 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." msgstr "" -#: mod/contacts.php:939 mod/nogroup.php:44 -msgid "Edit contact" +#: mod/uimport.php:66 mod/register.php:295 +msgid "Import" msgstr "" -#: mod/contacts.php:993 -msgid "Toggle Blocked status" +#: mod/uimport.php:68 +msgid "Move account" msgstr "" -#: mod/contacts.php:1001 -msgid "Toggle Ignored status" +#: mod/uimport.php:69 +msgid "You can import an account from another Friendica server." msgstr "" -#: mod/contacts.php:1009 -msgid "Toggle Archive status" +#: mod/uimport.php:70 +msgid "" +"You need to export your account from the old server and upload it here. We " +"will recreate your old account here with all your contacts. We will try also " +"to inform your friends that you moved here." msgstr "" -#: mod/contacts.php:1017 -msgid "Delete contact" +#: mod/uimport.php:71 +msgid "" +"This feature is experimental. We can't import contacts from the OStatus " +"network (GNU Social/Statusnet) or from Diaspora" msgstr "" -#: mod/content.php:119 mod/network.php:468 -msgid "No such group" +#: mod/uimport.php:72 +msgid "Account file" msgstr "" -#: mod/content.php:130 mod/group.php:203 mod/network.php:495 -msgid "Group is empty" +#: mod/uimport.php:72 +msgid "" +"To export your account, go to \"Settings->Export your personal data\" and " +"select \"Export account\"" msgstr "" -#: mod/content.php:135 mod/network.php:499 -#, php-format -msgid "Group: %s" +#: mod/update_community.php:19 mod/update_display.php:23 +#: mod/update_network.php:27 mod/update_notes.php:36 mod/update_profile.php:35 +msgid "[Embedded content - reload page to view]" msgstr "" -#: mod/content.php:325 object/Item.php:96 -msgid "This entry was edited" +#: mod/viewcontacts.php:75 +msgid "No contacts." msgstr "" -#: mod/content.php:621 object/Item.php:417 -#, php-format -msgid "%d comment" -msgid_plural "%d comments" -msgstr[0] "" -msgstr[1] "" +#: mod/viewsrc.php:7 +msgid "Access denied." +msgstr "" -#: mod/content.php:638 mod/photos.php:1402 object/Item.php:117 -msgid "Private Message" +#: mod/wall_attach.php:17 mod/wall_attach.php:25 mod/wall_attach.php:76 +#: mod/wall_upload.php:36 mod/wall_upload.php:52 mod/wall_upload.php:110 +#: mod/wall_upload.php:150 mod/wall_upload.php:153 +msgid "Invalid request." msgstr "" -#: mod/content.php:702 mod/photos.php:1590 object/Item.php:274 -msgid "I like this (toggle)" +#: mod/wall_attach.php:94 +msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" msgstr "" -#: mod/content.php:702 object/Item.php:274 -msgid "like" +#: mod/wall_attach.php:94 +msgid "Or - did you try to upload an empty file?" msgstr "" -#: mod/content.php:703 mod/photos.php:1591 object/Item.php:275 -msgid "I don't like this (toggle)" +#: mod/wall_attach.php:105 +#, php-format +msgid "File exceeds size limit of %s" msgstr "" -#: mod/content.php:703 object/Item.php:275 -msgid "dislike" +#: mod/wall_attach.php:158 mod/wall_attach.php:174 +msgid "File upload failed." msgstr "" -#: mod/content.php:705 object/Item.php:278 -msgid "Share this" +#: mod/wallmessage.php:42 mod/wallmessage.php:106 +#, php-format +msgid "Number of daily wall messages for %s exceeded. Message failed." msgstr "" -#: mod/content.php:705 object/Item.php:278 -msgid "share" +#: mod/wallmessage.php:50 mod/message.php:60 +msgid "No recipient selected." msgstr "" -#: mod/content.php:725 mod/photos.php:1609 mod/photos.php:1657 -#: mod/photos.php:1743 object/Item.php:702 -msgid "This is you" +#: mod/wallmessage.php:53 +msgid "Unable to check your home location." msgstr "" -#: mod/content.php:727 mod/content.php:950 mod/photos.php:1611 -#: mod/photos.php:1659 mod/photos.php:1745 object/Item.php:392 -#: object/Item.php:704 -msgid "Comment" +#: mod/wallmessage.php:56 mod/message.php:67 +msgid "Message could not be sent." msgstr "" -#: mod/content.php:729 object/Item.php:706 -msgid "Bold" +#: mod/wallmessage.php:59 mod/message.php:70 +msgid "Message collection failure." msgstr "" -#: mod/content.php:730 object/Item.php:707 -msgid "Italic" +#: mod/wallmessage.php:62 mod/message.php:73 +msgid "Message sent." msgstr "" -#: mod/content.php:731 object/Item.php:708 -msgid "Underline" +#: mod/wallmessage.php:80 mod/wallmessage.php:89 +msgid "No recipient." msgstr "" -#: mod/content.php:732 object/Item.php:709 -msgid "Quote" +#: mod/wallmessage.php:126 mod/message.php:322 +msgid "Send Private Message" msgstr "" -#: mod/content.php:733 object/Item.php:710 -msgid "Code" +#: mod/wallmessage.php:127 +#, php-format +msgid "" +"If you wish for %s to respond, please check that the privacy settings on " +"your site allow private mail from unknown senders." msgstr "" -#: mod/content.php:734 object/Item.php:711 -msgid "Image" +#: mod/wallmessage.php:128 mod/message.php:323 mod/message.php:510 +msgid "To:" msgstr "" -#: mod/content.php:735 object/Item.php:712 -msgid "Link" -msgstr "" - -#: mod/content.php:736 object/Item.php:713 -msgid "Video" -msgstr "" - -#: mod/content.php:746 mod/settings.php:743 object/Item.php:122 -#: object/Item.php:124 -msgid "Edit" -msgstr "" - -#: mod/content.php:772 object/Item.php:238 -msgid "add star" -msgstr "" - -#: mod/content.php:773 object/Item.php:239 -msgid "remove star" -msgstr "" - -#: mod/content.php:774 object/Item.php:240 -msgid "toggle star status" -msgstr "" - -#: mod/content.php:777 object/Item.php:243 -msgid "starred" -msgstr "" - -#: mod/content.php:778 mod/content.php:800 object/Item.php:263 -msgid "add tag" -msgstr "" - -#: mod/content.php:789 object/Item.php:251 -msgid "ignore thread" -msgstr "" - -#: mod/content.php:790 object/Item.php:252 -msgid "unignore thread" -msgstr "" - -#: mod/content.php:791 object/Item.php:253 -msgid "toggle ignore status" -msgstr "" - -#: mod/content.php:794 mod/ostatus_subscribe.php:73 object/Item.php:256 -msgid "ignored" -msgstr "" - -#: mod/content.php:805 object/Item.php:141 -msgid "save to folder" -msgstr "" - -#: mod/content.php:853 object/Item.php:212 -msgid "I will attend" -msgstr "" - -#: mod/content.php:853 object/Item.php:212 -msgid "I will not attend" -msgstr "" - -#: mod/content.php:853 object/Item.php:212 -msgid "I might attend" -msgstr "" - -#: mod/content.php:917 object/Item.php:358 -msgid "to" -msgstr "" - -#: mod/content.php:918 object/Item.php:360 -msgid "Wall-to-Wall" -msgstr "" - -#: mod/content.php:919 object/Item.php:361 -msgid "via Wall-To-Wall:" -msgstr "" - -#: mod/credits.php:16 -msgid "Credits" -msgstr "" - -#: mod/credits.php:17 -msgid "" -"Friendica is a community project, that would not be possible without the " -"help of many people. Here is a list of those who have contributed to the " -"code or the translation of Friendica. Thank you all!" -msgstr "" - -#: mod/crepair.php:89 -msgid "Contact settings applied." -msgstr "" - -#: mod/crepair.php:91 -msgid "Contact update failed." -msgstr "" - -#: mod/crepair.php:116 mod/dfrn_confirm.php:126 mod/fsuggest.php:21 -#: mod/fsuggest.php:93 -msgid "Contact not found." -msgstr "" - -#: mod/crepair.php:122 -msgid "" -"WARNING: This is highly advanced and if you enter incorrect " -"information your communications with this contact may stop working." -msgstr "" - -#: mod/crepair.php:123 -msgid "" -"Please use your browser 'Back' button now if you are " -"uncertain what to do on this page." -msgstr "" - -#: mod/crepair.php:136 mod/crepair.php:138 -msgid "No mirroring" -msgstr "" - -#: mod/crepair.php:136 -msgid "Mirror as forwarded posting" +#: mod/wallmessage.php:129 mod/message.php:328 mod/message.php:512 +msgid "Subject:" msgstr "" -#: mod/crepair.php:136 mod/crepair.php:138 -msgid "Mirror as my own posting" +#: mod/babel.php:16 +msgid "Source (bbcode) text:" msgstr "" -#: mod/crepair.php:152 -msgid "Return to contact editor" +#: mod/babel.php:23 +msgid "Source (Diaspora) text to convert to BBcode:" msgstr "" -#: mod/crepair.php:154 -msgid "Refetch contact data" +#: mod/babel.php:31 +msgid "Source input: " msgstr "" -#: mod/crepair.php:158 -msgid "Remote Self" +#: mod/babel.php:35 +msgid "bb2html (raw HTML): " msgstr "" -#: mod/crepair.php:161 -msgid "Mirror postings from this contact" +#: mod/babel.php:39 +msgid "bb2html: " msgstr "" -#: mod/crepair.php:163 -msgid "" -"Mark this contact as remote_self, this will cause friendica to repost new " -"entries from this contact." +#: mod/babel.php:43 +msgid "bb2html2bb: " msgstr "" -#: mod/crepair.php:168 -msgid "Account Nickname" +#: mod/babel.php:47 +msgid "bb2md: " msgstr "" -#: mod/crepair.php:169 -msgid "@Tagname - overrides Name/Nickname" +#: mod/babel.php:51 +msgid "bb2md2html: " msgstr "" -#: mod/crepair.php:170 -msgid "Account URL" +#: mod/babel.php:55 +msgid "bb2dia2bb: " msgstr "" -#: mod/crepair.php:171 -msgid "Friend Request URL" +#: mod/babel.php:59 +msgid "bb2md2html2bb: " msgstr "" -#: mod/crepair.php:172 -msgid "Friend Confirm URL" +#: mod/babel.php:65 +msgid "Source input (Diaspora format): " msgstr "" -#: mod/crepair.php:173 -msgid "Notification Endpoint URL" +#: mod/babel.php:69 +msgid "diaspora2bb: " msgstr "" -#: mod/crepair.php:174 -msgid "Poll/Feed URL" +#: mod/cal.php:271 mod/events.php:375 +msgid "View" msgstr "" -#: mod/crepair.php:175 -msgid "New photo from this URL" +#: mod/cal.php:272 mod/events.php:377 +msgid "Previous" msgstr "" -#: mod/delegate.php:101 -msgid "No potential page delegates located." +#: mod/cal.php:273 mod/events.php:378 mod/install.php:201 +msgid "Next" msgstr "" -#: mod/delegate.php:132 -msgid "" -"Delegates are able to manage all aspects of this account/page except for " -"basic account settings. Please do not delegate your personal account to " -"anybody that you do not trust completely." +#: mod/cal.php:282 mod/events.php:387 +msgid "list" msgstr "" -#: mod/delegate.php:133 -msgid "Existing Page Managers" +#: mod/cal.php:292 +msgid "User not found" msgstr "" -#: mod/delegate.php:135 -msgid "Existing Page Delegates" +#: mod/cal.php:308 +msgid "This calendar format is not supported" msgstr "" -#: mod/delegate.php:137 -msgid "Potential Delegates" +#: mod/cal.php:310 +msgid "No exportable data found" msgstr "" -#: mod/delegate.php:139 mod/tagrm.php:95 -msgid "Remove" +#: mod/cal.php:325 +msgid "calendar" msgstr "" -#: mod/delegate.php:140 -msgid "Add" +#: mod/community.php:23 +msgid "Not available." msgstr "" -#: mod/delegate.php:141 -msgid "No entries." +#: mod/community.php:50 mod/search.php:219 +msgid "No results." msgstr "" -#: mod/dfrn_confirm.php:70 mod/profiles.php:19 mod/profiles.php:134 -#: mod/profiles.php:180 mod/profiles.php:619 +#: mod/dfrn_confirm.php:70 mod/profiles.php:19 mod/profiles.php:135 +#: mod/profiles.php:182 mod/profiles.php:619 msgid "Profile not found." msgstr "" @@ -5404,56 +4914,51 @@ msgstr "" msgid "Empty site URL was provided or URL could not be decrypted by us." msgstr "" -#: mod/dfrn_confirm.php:601 +#: mod/dfrn_confirm.php:602 msgid "Contact record was not found for you on our site." msgstr "" -#: mod/dfrn_confirm.php:615 +#: mod/dfrn_confirm.php:616 #, php-format msgid "Site public key not available in contact record for URL %s." msgstr "" -#: mod/dfrn_confirm.php:635 +#: mod/dfrn_confirm.php:636 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." msgstr "" -#: mod/dfrn_confirm.php:646 +#: mod/dfrn_confirm.php:647 msgid "Unable to set your contact credentials on our system." msgstr "" -#: mod/dfrn_confirm.php:708 +#: mod/dfrn_confirm.php:709 msgid "Unable to update your contact profile details on our system" msgstr "" -#: mod/dfrn_confirm.php:780 +#: mod/dfrn_confirm.php:781 #, php-format msgid "%1$s has joined %2$s" msgstr "" -#: mod/dfrn_poll.php:104 mod/dfrn_poll.php:539 -#, php-format -msgid "%1$s welcomes %2$s" -msgstr "" - #: mod/dfrn_request.php:101 msgid "This introduction has already been accepted." msgstr "" -#: mod/dfrn_request.php:124 mod/dfrn_request.php:523 +#: mod/dfrn_request.php:124 mod/dfrn_request.php:528 msgid "Profile location is not valid or does not contain profile information." msgstr "" -#: mod/dfrn_request.php:129 mod/dfrn_request.php:528 +#: mod/dfrn_request.php:129 mod/dfrn_request.php:533 msgid "Warning: profile location has no identifiable owner name." msgstr "" -#: mod/dfrn_request.php:132 mod/dfrn_request.php:531 +#: mod/dfrn_request.php:132 mod/dfrn_request.php:536 msgid "Warning: profile location has no profile photo." msgstr "" -#: mod/dfrn_request.php:136 mod/dfrn_request.php:535 +#: mod/dfrn_request.php:136 mod/dfrn_request.php:540 #, 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" @@ -5510,119 +5015,99 @@ msgstr "" msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:609 +#: mod/dfrn_request.php:614 msgid "Your introduction has been sent." msgstr "" -#: mod/dfrn_request.php:651 +#: mod/dfrn_request.php:656 msgid "" "Remote subscription can't be done for your network. Please subscribe " "directly on your system." msgstr "" -#: mod/dfrn_request.php:672 +#: mod/dfrn_request.php:677 msgid "Please login to confirm introduction." msgstr "" -#: mod/dfrn_request.php:682 +#: mod/dfrn_request.php:687 msgid "" "Incorrect identity currently logged in. Please login to this profile." msgstr "" -#: mod/dfrn_request.php:696 mod/dfrn_request.php:713 +#: mod/dfrn_request.php:701 mod/dfrn_request.php:718 msgid "Confirm" msgstr "" -#: mod/dfrn_request.php:708 +#: mod/dfrn_request.php:713 msgid "Hide this contact" msgstr "" -#: mod/dfrn_request.php:711 +#: mod/dfrn_request.php:716 #, php-format msgid "Welcome home %s." msgstr "" -#: mod/dfrn_request.php:712 +#: mod/dfrn_request.php:717 #, php-format msgid "Please confirm your introduction/connection request to %s." msgstr "" -#: mod/dfrn_request.php:843 +#: mod/dfrn_request.php:848 msgid "" "Please enter your 'Identity Address' from one of the following supported " "communications networks:" msgstr "" -#: mod/dfrn_request.php:867 +#: mod/dfrn_request.php:872 #, php-format msgid "" "If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today." msgstr "" -#: mod/dfrn_request.php:872 +#: mod/dfrn_request.php:877 msgid "Friend/Connection Request" msgstr "" -#: mod/dfrn_request.php:873 +#: mod/dfrn_request.php:878 msgid "" "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " "testuser@identi.ca" msgstr "" -#: mod/dfrn_request.php:874 mod/follow.php:112 +#: mod/dfrn_request.php:879 mod/follow.php:112 msgid "Please answer the following:" msgstr "" -#: mod/dfrn_request.php:875 mod/follow.php:113 +#: mod/dfrn_request.php:880 mod/follow.php:113 #, php-format msgid "Does %s know you?" msgstr "" -#: mod/dfrn_request.php:879 mod/follow.php:114 +#: mod/dfrn_request.php:884 mod/follow.php:114 msgid "Add a personal note:" msgstr "" -#: mod/dfrn_request.php:882 +#: mod/dfrn_request.php:887 msgid "StatusNet/Federated Social Web" msgstr "" -#: mod/dfrn_request.php:884 +#: mod/dfrn_request.php:889 #, php-format msgid "" " - please do not use this form. Instead, enter %s into your Diaspora search " "bar." msgstr "" -#: mod/dfrn_request.php:885 mod/follow.php:120 +#: mod/dfrn_request.php:890 mod/follow.php:120 msgid "Your Identity Address:" msgstr "" -#: mod/dfrn_request.php:888 mod/follow.php:19 +#: mod/dfrn_request.php:893 mod/follow.php:19 msgid "Submit Request" msgstr "" -#: mod/directory.php:199 view/theme/vier/theme.php:196 -msgid "Global Directory" -msgstr "" - -#: mod/directory.php:201 -msgid "Find on this site" -msgstr "" - -#: mod/directory.php:203 -msgid "Results for:" -msgstr "" - -#: mod/directory.php:205 -msgid "Site Directory" -msgstr "" - -#: mod/directory.php:212 -msgid "No entries (some entries may be hidden)." -msgstr "" - #: mod/dirfind.php:37 #, php-format msgid "People Search - %s" @@ -5633,80 +5118,64 @@ msgstr "" msgid "Forum Search - %s" msgstr "" -#: mod/dirfind.php:245 mod/match.php:109 -msgid "No matches" -msgstr "" - -#: mod/display.php:479 -msgid "Item has been removed." -msgstr "" - -#: mod/editpost.php:17 mod/editpost.php:27 -msgid "Item not found" -msgstr "" - -#: mod/editpost.php:32 -msgid "Edit post" -msgstr "" - -#: mod/events.php:100 mod/events.php:102 +#: mod/events.php:93 mod/events.php:95 msgid "Event can not end before it has started." msgstr "" -#: mod/events.php:109 mod/events.php:111 +#: mod/events.php:102 mod/events.php:104 msgid "Event title and start time are required." msgstr "" -#: mod/events.php:388 +#: mod/events.php:376 msgid "Create New Event" msgstr "" -#: mod/events.php:489 +#: mod/events.php:481 msgid "Event details" msgstr "" -#: mod/events.php:490 +#: mod/events.php:482 msgid "Starting date and Title are required." msgstr "" -#: mod/events.php:491 mod/events.php:492 +#: mod/events.php:483 mod/events.php:484 msgid "Event Starts:" msgstr "" -#: mod/events.php:491 mod/events.php:503 mod/profiles.php:708 +#: mod/events.php:483 mod/events.php:495 mod/profiles.php:709 msgid "Required" msgstr "" -#: mod/events.php:493 mod/events.php:509 +#: mod/events.php:485 mod/events.php:501 msgid "Finish date/time is not known or not relevant" msgstr "" -#: mod/events.php:495 mod/events.php:496 +#: mod/events.php:487 mod/events.php:488 msgid "Event Finishes:" msgstr "" -#: mod/events.php:497 mod/events.php:510 +#: mod/events.php:489 mod/events.php:502 msgid "Adjust for viewer timezone" msgstr "" -#: mod/events.php:499 +#: mod/events.php:491 msgid "Description:" msgstr "" -#: mod/events.php:503 mod/events.php:505 +#: mod/events.php:495 mod/events.php:497 msgid "Title:" msgstr "" -#: mod/events.php:506 mod/events.php:507 +#: mod/events.php:498 mod/events.php:499 msgid "Share this event" msgstr "" -#: mod/fbrowser.php:132 -msgid "Files" +#: mod/events.php:528 +msgid "Failed to remove event" msgstr "" -#: mod/filer.php:30 -msgid "- select -" +#: mod/events.php:530 +msgid "Event removed" msgstr "" #: mod/follow.php:30 @@ -5729,15 +5198,15 @@ msgstr "" msgid "Contact added" msgstr "" -#: mod/friendica.php:72 +#: mod/friendica.php:68 msgid "This is Friendica, version" msgstr "" -#: mod/friendica.php:73 +#: mod/friendica.php:69 msgid "running at web location" msgstr "" -#: mod/friendica.php:75 +#: mod/friendica.php:73 msgid "" "Please visit Friendica.com to learn " "more about the Friendica project." @@ -5751,31 +5220,26 @@ msgstr "" msgid "the bugtracker at github" msgstr "" -#: mod/friendica.php:78 +#: mod/friendica.php:80 msgid "" "Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - " "dot com" msgstr "" -#: mod/friendica.php:92 +#: mod/friendica.php:94 msgid "Installed plugins/addons/apps:" msgstr "" -#: mod/friendica.php:105 +#: mod/friendica.php:108 msgid "No installed plugins/addons/apps" msgstr "" -#: mod/fsuggest.php:64 -msgid "Friend suggestion sent." +#: mod/friendica.php:113 +msgid "On this server the following remote servers are blocked." msgstr "" -#: mod/fsuggest.php:98 -msgid "Suggest Friends" -msgstr "" - -#: mod/fsuggest.php:100 -#, php-format -msgid "Suggest a friend for %s" +#: mod/friendica.php:114 mod/admin.php:280 mod/admin.php:298 +msgid "Reason for the block" msgstr "" #: mod/group.php:29 @@ -5786,7 +5250,7 @@ msgstr "" msgid "Could not create group." msgstr "" -#: mod/group.php:49 mod/group.php:150 +#: mod/group.php:49 mod/group.php:154 msgid "Group not found." msgstr "" @@ -5794,2882 +5258,3466 @@ msgstr "" msgid "Group name changed." msgstr "" -#: mod/group.php:91 +#: mod/group.php:93 msgid "Save Group" msgstr "" -#: mod/group.php:97 +#: mod/group.php:98 msgid "Create a group of contacts/friends." msgstr "" -#: mod/group.php:122 +#: mod/group.php:123 msgid "Group removed." msgstr "" -#: mod/group.php:124 +#: mod/group.php:125 msgid "Unable to remove group." msgstr "" -#: mod/group.php:187 +#: mod/group.php:189 +msgid "Delete Group" +msgstr "" + +#: mod/group.php:195 msgid "Group Editor" msgstr "" #: mod/group.php:200 -msgid "Members" +msgid "Edit Group Name" msgstr "" -#: mod/group.php:233 mod/profperm.php:107 -msgid "Click on a contact to add or remove." +#: mod/group.php:210 +msgid "Members" msgstr "" -#: mod/hcard.php:11 -msgid "No profile" +#: mod/group.php:226 +msgid "Remove Contact" msgstr "" -#: mod/help.php:41 -msgid "Help:" +#: mod/group.php:250 +msgid "Add Contact" msgstr "" -#: mod/home.php:39 -#, php-format -msgid "Welcome to %s" +#: mod/manage.php:151 +msgid "Manage Identities and/or Pages" msgstr "" -#: mod/install.php:140 -msgid "Friendica Communications Server - Setup" +#: mod/manage.php:152 +msgid "" +"Toggle between different identities or community/group pages which share " +"your account details or which you have been granted \"manage\" permissions" msgstr "" -#: mod/install.php:146 -msgid "Could not connect to database." +#: mod/manage.php:153 +msgid "Select an identity to manage: " msgstr "" -#: mod/install.php:150 -msgid "Could not create table." +#: mod/message.php:64 +msgid "Unable to locate contact information." msgstr "" -#: mod/install.php:156 -msgid "Your Friendica site database has been installed." +#: mod/message.php:204 +msgid "Do you really want to delete this message?" msgstr "" -#: mod/install.php:161 -msgid "" -"You may need to import the file \"database.sql\" manually using phpmyadmin " -"or mysql." +#: mod/message.php:224 +msgid "Message deleted." msgstr "" -#: mod/install.php:162 mod/install.php:234 mod/install.php:609 -msgid "Please see the file \"INSTALL.txt\"." +#: mod/message.php:255 +msgid "Conversation removed." msgstr "" -#: mod/install.php:174 -msgid "Database already in use." +#: mod/message.php:364 +msgid "No messages." msgstr "" -#: mod/install.php:231 -msgid "System check" +#: mod/message.php:403 +msgid "Message not available." msgstr "" -#: mod/install.php:236 -msgid "Check again" +#: mod/message.php:477 +msgid "Delete message" msgstr "" -#: mod/install.php:255 -msgid "Database connection" +#: mod/message.php:503 mod/message.php:591 +msgid "Delete conversation" msgstr "" -#: mod/install.php:256 +#: mod/message.php:505 msgid "" -"In order to install Friendica we need to know how to connect to your " -"database." +"No secure communications available. You may be able to " +"respond from the sender's profile page." msgstr "" -#: mod/install.php:257 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." +#: mod/message.php:509 +msgid "Send Reply" msgstr "" -#: mod/install.php:258 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." +#: mod/message.php:561 +#, php-format +msgid "Unknown sender - %s" msgstr "" -#: mod/install.php:262 -msgid "Database Server Name" +#: mod/message.php:563 +#, php-format +msgid "You and %s" msgstr "" -#: mod/install.php:263 -msgid "Database Login Name" +#: mod/message.php:565 +#, php-format +msgid "%s and You" msgstr "" -#: mod/install.php:264 -msgid "Database Login Password" +#: mod/message.php:594 +msgid "D, d M Y - g:i A" msgstr "" -#: mod/install.php:264 -msgid "For security reasons the password must not be empty" +#: mod/message.php:597 +#, php-format +msgid "%d message" +msgid_plural "%d messages" +msgstr[0] "" +msgstr[1] "" + +#: mod/network.php:197 mod/search.php:25 +msgid "Remove term" msgstr "" -#: mod/install.php:265 -msgid "Database Name" +#: mod/network.php:404 +#, php-format +msgid "" +"Warning: This group contains %s member from a network that doesn't allow non " +"public messages." +msgid_plural "" +"Warning: This group contains %s members from a network that doesn't allow " +"non public messages." +msgstr[0] "" +msgstr[1] "" + +#: mod/network.php:407 +msgid "Messages in this group won't be send to these receivers." msgstr "" -#: mod/install.php:266 mod/install.php:307 -msgid "Site administrator email address" +#: mod/network.php:535 +msgid "Private messages to this person are at risk of public disclosure." msgstr "" -#: mod/install.php:266 mod/install.php:307 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." +#: mod/network.php:540 +msgid "Invalid contact." msgstr "" -#: mod/install.php:270 mod/install.php:310 -msgid "Please select a default timezone for your website" +#: mod/network.php:813 +msgid "Commented Order" msgstr "" -#: mod/install.php:297 -msgid "Site settings" +#: mod/network.php:816 +msgid "Sort by Comment Date" msgstr "" -#: mod/install.php:311 -msgid "System Language:" +#: mod/network.php:821 +msgid "Posted Order" msgstr "" -#: mod/install.php:311 -msgid "" -"Set the default language for your Friendica installation interface and to " -"send emails." +#: mod/network.php:824 +msgid "Sort by Post Date" msgstr "" -#: mod/install.php:351 -msgid "Could not find a command line version of PHP in the web server PATH." +#: mod/network.php:835 +msgid "Posts that mention or involve you" msgstr "" -#: mod/install.php:352 -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. See 'Setup the poller'" +#: mod/network.php:843 +msgid "New" msgstr "" -#: mod/install.php:356 -msgid "PHP executable path" +#: mod/network.php:846 +msgid "Activity Stream - by date" msgstr "" -#: mod/install.php:356 -msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." +#: mod/network.php:854 +msgid "Shared Links" msgstr "" -#: mod/install.php:361 -msgid "Command line PHP" +#: mod/network.php:857 +msgid "Interesting Links" msgstr "" -#: mod/install.php:370 -msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" +#: mod/network.php:865 +msgid "Starred" msgstr "" -#: mod/install.php:371 -msgid "Found PHP version: " +#: mod/network.php:868 +msgid "Favourite Posts" msgstr "" -#: mod/install.php:373 -msgid "PHP cli binary" +#: mod/openid.php:24 +msgid "OpenID protocol error. No ID returned." msgstr "" -#: mod/install.php:384 +#: mod/openid.php:60 msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." +"Account not found and OpenID registration is not permitted on this site." msgstr "" -#: mod/install.php:385 -msgid "This is required for message delivery to work." +#: mod/photos.php:94 mod/photos.php:1900 +msgid "Recent Photos" msgstr "" -#: mod/install.php:387 -msgid "PHP register_argc_argv" +#: mod/photos.php:97 mod/photos.php:1328 mod/photos.php:1902 +msgid "Upload New Photos" msgstr "" -#: mod/install.php:410 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" +#: mod/photos.php:112 mod/settings.php:36 +msgid "everybody" msgstr "" -#: mod/install.php:411 -msgid "" -"If running under Windows, please see \"http://www.php.net/manual/en/openssl." -"installation.php\"." +#: mod/photos.php:176 +msgid "Contact information unavailable" msgstr "" -#: mod/install.php:413 -msgid "Generate encryption keys" +#: mod/photos.php:197 +msgid "Album not found." msgstr "" -#: mod/install.php:420 -msgid "libCurl PHP module" +#: mod/photos.php:230 mod/photos.php:242 mod/photos.php:1272 +msgid "Delete Album" msgstr "" -#: mod/install.php:421 -msgid "GD graphics PHP module" +#: mod/photos.php:240 +msgid "Do you really want to delete this photo album and all its photos?" msgstr "" -#: mod/install.php:422 -msgid "OpenSSL PHP module" +#: mod/photos.php:323 mod/photos.php:334 mod/photos.php:1598 +msgid "Delete Photo" msgstr "" -#: mod/install.php:423 -msgid "mysqli PHP module" +#: mod/photos.php:332 +msgid "Do you really want to delete this photo?" msgstr "" -#: mod/install.php:424 -msgid "mb_string PHP module" +#: mod/photos.php:713 +#, php-format +msgid "%1$s was tagged in %2$s by %3$s" msgstr "" -#: mod/install.php:425 -msgid "mcrypt PHP module" +#: mod/photos.php:713 +msgid "a photo" msgstr "" -#: mod/install.php:426 -msgid "XML PHP module" +#: mod/photos.php:821 +msgid "Image file is empty." msgstr "" -#: mod/install.php:427 -msgid "iconv module" +#: mod/photos.php:988 +msgid "No photos selected" msgstr "" -#: mod/install.php:431 mod/install.php:433 -msgid "Apache mod_rewrite module" +#: mod/photos.php:1091 mod/videos.php:309 +msgid "Access to this item is restricted." msgstr "" -#: mod/install.php:431 -msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." +#: mod/photos.php:1151 +#, php-format +msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." msgstr "" -#: mod/install.php:439 -msgid "Error: libCURL PHP module required but not installed." +#: mod/photos.php:1188 +msgid "Upload Photos" msgstr "" -#: mod/install.php:443 -msgid "" -"Error: GD graphics PHP module with JPEG support required but not installed." +#: mod/photos.php:1192 mod/photos.php:1267 +msgid "New album name: " msgstr "" -#: mod/install.php:447 -msgid "Error: openssl PHP module required but not installed." +#: mod/photos.php:1193 +msgid "or existing album name: " msgstr "" -#: mod/install.php:451 -msgid "Error: mysqli PHP module required but not installed." +#: mod/photos.php:1194 +msgid "Do not show a status post for this upload" msgstr "" -#: mod/install.php:455 -msgid "Error: mb_string PHP module required but not installed." +#: mod/photos.php:1205 mod/photos.php:1602 mod/settings.php:1307 +msgid "Show to Groups" msgstr "" -#: mod/install.php:459 -msgid "Error: mcrypt PHP module required but not installed." +#: mod/photos.php:1206 mod/photos.php:1603 mod/settings.php:1308 +msgid "Show to Contacts" msgstr "" -#: mod/install.php:463 -msgid "Error: iconv PHP module required but not installed." +#: mod/photos.php:1207 +msgid "Private Photo" msgstr "" -#: mod/install.php:472 -msgid "" -"If you are using php_cli, please make sure that mcrypt module is enabled in " -"its config file" +#: mod/photos.php:1208 +msgid "Public Photo" msgstr "" -#: mod/install.php:475 -msgid "" -"Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 " -"encryption layer." +#: mod/photos.php:1278 +msgid "Edit Album" msgstr "" -#: mod/install.php:477 -msgid "mcrypt_create_iv() function" +#: mod/photos.php:1283 +msgid "Show Newest First" msgstr "" -#: mod/install.php:485 -msgid "Error, XML PHP module required but not installed." +#: mod/photos.php:1285 +msgid "Show Oldest First" msgstr "" -#: mod/install.php:500 -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." +#: mod/photos.php:1314 mod/photos.php:1885 +msgid "View Photo" msgstr "" -#: mod/install.php:501 -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." +#: mod/photos.php:1359 +msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: mod/install.php:502 -msgid "" -"At the end of this procedure, we will give you a text to save in a file " -"named .htconfig.php in your Friendica top folder." +#: mod/photos.php:1361 +msgid "Photo not available" msgstr "" -#: mod/install.php:503 -msgid "" -"You can alternatively skip this procedure and perform a manual installation. " -"Please see the file \"INSTALL.txt\" for instructions." +#: mod/photos.php:1422 +msgid "View photo" msgstr "" -#: mod/install.php:506 -msgid ".htconfig.php is writable" +#: mod/photos.php:1422 +msgid "Edit photo" msgstr "" -#: mod/install.php:516 -msgid "" -"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." +#: mod/photos.php:1423 +msgid "Use as profile photo" msgstr "" -#: mod/install.php:517 -msgid "" -"In order to store these compiled templates, the web server needs to have " -"write access to the directory view/smarty3/ under the Friendica top level " -"folder." +#: mod/photos.php:1448 +msgid "View Full Size" msgstr "" -#: mod/install.php:518 -msgid "" -"Please ensure that the user that your web server runs as (e.g. www-data) has " -"write access to this folder." +#: mod/photos.php:1538 +msgid "Tags: " msgstr "" -#: mod/install.php:519 -msgid "" -"Note: as a security measure, you should give the web server write access to " -"view/smarty3/ only--not the template files (.tpl) that it contains." +#: mod/photos.php:1541 +msgid "[Remove any tag]" msgstr "" -#: mod/install.php:522 -msgid "view/smarty3 is writable" +#: mod/photos.php:1584 +msgid "New album name" msgstr "" -#: mod/install.php:538 -msgid "" -"Url rewrite in .htaccess is not working. Check your server configuration." +#: mod/photos.php:1585 +msgid "Caption" msgstr "" -#: mod/install.php:540 -msgid "Url rewrite is working" +#: mod/photos.php:1586 +msgid "Add a Tag" msgstr "" -#: mod/install.php:559 -msgid "ImageMagick PHP extension is not installed" +#: mod/photos.php:1586 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" -#: mod/install.php:561 -msgid "ImageMagick PHP extension is installed" +#: mod/photos.php:1587 +msgid "Do not rotate" msgstr "" -#: mod/install.php:563 -msgid "ImageMagick supports GIF" +#: mod/photos.php:1588 +msgid "Rotate CW (right)" msgstr "" -#: mod/install.php:570 -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." +#: mod/photos.php:1589 +msgid "Rotate CCW (left)" msgstr "" -#: mod/install.php:607 -msgid "

What next

" +#: mod/photos.php:1604 +msgid "Private photo" msgstr "" -#: mod/install.php:608 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the poller." +#: mod/photos.php:1605 +msgid "Public photo" msgstr "" -#: mod/invite.php:28 -msgid "Total invitation limit exceeded." +#: mod/photos.php:1814 +msgid "Map" msgstr "" -#: mod/invite.php:51 -#, php-format -msgid "%s : Not a valid email address." +#: mod/photos.php:1891 mod/videos.php:393 +msgid "View Album" msgstr "" -#: mod/invite.php:76 -msgid "Please join us on Friendica" +#: mod/probe.php:10 mod/webfinger.php:9 +msgid "Only logged in users are permitted to perform a probing." msgstr "" -#: mod/invite.php:87 -msgid "Invitation limit exceeded. Please contact your site administrator." +#: mod/profile.php:175 +msgid "Tips for New Members" msgstr "" -#: mod/invite.php:91 -#, php-format -msgid "%s : Message delivery failed." +#: mod/profiles.php:38 +msgid "Profile deleted." msgstr "" -#: mod/invite.php:95 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "" -msgstr[1] "" +#: mod/profiles.php:54 mod/profiles.php:90 +msgid "Profile-" +msgstr "" -#: mod/invite.php:114 -msgid "You have no more invitations available" +#: mod/profiles.php:73 mod/profiles.php:118 +msgid "New profile created." msgstr "" -#: mod/invite.php:122 -#, php-format -msgid "" -"Visit %s for a list of public sites that you can join. Friendica members on " -"other sites can all connect with each other, as well as with members of many " -"other social networks." +#: mod/profiles.php:96 +msgid "Profile unavailable to clone." msgstr "" -#: mod/invite.php:124 -#, php-format -msgid "" -"To accept this invitation, please visit and register at %s or any other " -"public Friendica website." +#: mod/profiles.php:192 +msgid "Profile Name is required." msgstr "" -#: mod/invite.php:125 -#, php-format -msgid "" -"Friendica sites all inter-connect to create a huge privacy-enhanced social " -"web that is owned and controlled by its members. They can also connect with " -"many traditional social networks. See %s for a list of alternate Friendica " -"sites you can join." +#: mod/profiles.php:332 +msgid "Marital Status" msgstr "" -#: mod/invite.php:128 -msgid "" -"Our apologies. This system is not currently configured to connect with other " -"public sites or invite members." +#: mod/profiles.php:336 +msgid "Romantic Partner" msgstr "" -#: mod/invite.php:134 -msgid "Send invitations" +#: mod/profiles.php:348 +msgid "Work/Employment" msgstr "" -#: mod/invite.php:135 -msgid "Enter email addresses, one per line:" +#: mod/profiles.php:351 +msgid "Religion" msgstr "" -#: mod/invite.php:136 mod/message.php:332 mod/message.php:515 -#: mod/wallmessage.php:135 -msgid "Your message:" +#: mod/profiles.php:355 +msgid "Political Views" msgstr "" -#: mod/invite.php:137 -msgid "" -"You are cordially invited to join me and other close friends on Friendica - " -"and help us to create a better social web." +#: mod/profiles.php:359 +msgid "Gender" msgstr "" -#: mod/invite.php:139 -msgid "You will need to supply this invitation code: $invite_code" +#: mod/profiles.php:363 +msgid "Sexual Preference" msgstr "" -#: mod/invite.php:139 -msgid "" -"Once you have registered, please connect with me via my profile page at:" +#: mod/profiles.php:367 +msgid "XMPP" msgstr "" -#: mod/invite.php:141 -msgid "" -"For more information about the Friendica project and why we feel it is " -"important, please visit http://friendica.com" +#: mod/profiles.php:371 +msgid "Homepage" msgstr "" -#: mod/item.php:118 -msgid "Unable to locate original post." +#: mod/profiles.php:375 mod/profiles.php:695 +msgid "Interests" msgstr "" -#: mod/item.php:336 -msgid "Empty post discarded." +#: mod/profiles.php:379 +msgid "Address" msgstr "" -#: mod/item.php:889 -msgid "System error. Post not saved." +#: mod/profiles.php:386 mod/profiles.php:691 +msgid "Location" msgstr "" -#: mod/item.php:979 -#, php-format -msgid "" -"This message was sent to you by %s, a member of the Friendica social network." +#: mod/profiles.php:471 +msgid "Profile updated." +msgstr "" + +#: mod/profiles.php:564 +msgid " and " +msgstr "" + +#: mod/profiles.php:573 +msgid "public profile" msgstr "" -#: mod/item.php:981 +#: mod/profiles.php:576 #, php-format -msgid "You may visit them online at %s" +msgid "%1$s changed %2$s to “%3$s”" msgstr "" -#: mod/item.php:982 -msgid "" -"Please contact the sender by replying to this post if you do not wish to " -"receive these messages." +#: mod/profiles.php:577 +#, php-format +msgid " - Visit %1$s's %2$s" msgstr "" -#: mod/item.php:986 +#: mod/profiles.php:579 #, php-format -msgid "%s posted an update." +msgid "%1$s has an updated %2$s, changing %3$s." msgstr "" -#: mod/localtime.php:24 -msgid "Time Conversion" +#: mod/profiles.php:637 +msgid "Hide contacts and friends:" msgstr "" -#: mod/localtime.php:26 -msgid "" -"Friendica provides this service for sharing events with other networks and " -"friends in unknown timezones." +#: mod/profiles.php:642 +msgid "Hide your contact/friend list from viewers of this profile?" msgstr "" -#: mod/localtime.php:30 -#, php-format -msgid "UTC time: %s" +#: mod/profiles.php:667 +msgid "Show more profile fields:" msgstr "" -#: mod/localtime.php:33 -#, php-format -msgid "Current timezone: %s" +#: mod/profiles.php:679 +msgid "Profile Actions" msgstr "" -#: mod/localtime.php:36 -#, php-format -msgid "Converted localtime: %s" +#: mod/profiles.php:680 +msgid "Edit Profile Details" msgstr "" -#: mod/localtime.php:41 -msgid "Please select your timezone:" +#: mod/profiles.php:682 +msgid "Change Profile Photo" msgstr "" -#: mod/lockview.php:32 mod/lockview.php:40 -msgid "Remote privacy information not available." +#: mod/profiles.php:683 +msgid "View this profile" msgstr "" -#: mod/lockview.php:49 -msgid "Visible to:" +#: mod/profiles.php:685 +msgid "Create a new profile using these settings" msgstr "" -#: mod/lostpass.php:19 -msgid "No valid account found." +#: mod/profiles.php:686 +msgid "Clone this profile" msgstr "" -#: mod/lostpass.php:35 -msgid "Password reset request issued. Check your email." +#: mod/profiles.php:687 +msgid "Delete this profile" msgstr "" -#: mod/lostpass.php:41 -#, php-format -msgid "" -"\n" -"\t\tDear %1$s,\n" -"\t\t\tA request was recently received at \"%2$s\" to reset your account\n" -"\t\tpassword. In order to confirm this request, please select the " -"verification link\n" -"\t\tbelow or paste it into your web browser address bar.\n" -"\n" -"\t\tIf you did NOT request this change, please DO NOT follow the link\n" -"\t\tprovided and ignore and/or delete this email.\n" -"\n" -"\t\tYour password will not be changed unless we can verify that you\n" -"\t\tissued this request." +#: mod/profiles.php:689 +msgid "Basic information" msgstr "" -#: mod/lostpass.php:52 -#, php-format -msgid "" -"\n" -"\t\tFollow this link to verify your identity:\n" -"\n" -"\t\t%1$s\n" -"\n" -"\t\tYou will then receive a follow-up message containing the new password.\n" -"\t\tYou may change that password from your account settings page after " -"logging in.\n" -"\n" -"\t\tThe login details are as follows:\n" -"\n" -"\t\tSite Location:\t%2$s\n" -"\t\tLogin Name:\t%3$s" +#: mod/profiles.php:690 +msgid "Profile picture" msgstr "" -#: mod/lostpass.php:71 -#, php-format -msgid "Password reset requested at %s" +#: mod/profiles.php:692 +msgid "Preferences" msgstr "" -#: mod/lostpass.php:91 -msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." +#: mod/profiles.php:693 +msgid "Status information" msgstr "" -#: mod/lostpass.php:111 -msgid "Your password has been reset as requested." +#: mod/profiles.php:694 +msgid "Additional information" msgstr "" -#: mod/lostpass.php:112 -msgid "Your new password is" +#: mod/profiles.php:697 +msgid "Relation" msgstr "" -#: mod/lostpass.php:113 -msgid "Save or copy your new password - and then" +#: mod/profiles.php:701 +msgid "Your Gender:" msgstr "" -#: mod/lostpass.php:114 -msgid "click here to login" +#: mod/profiles.php:702 +msgid " Marital Status:" msgstr "" -#: mod/lostpass.php:115 -msgid "" -"Your password may be changed from the Settings page after " -"successful login." +#: mod/profiles.php:704 +msgid "Example: fishing photography software" msgstr "" -#: mod/lostpass.php:125 -#, php-format -msgid "" -"\n" -"\t\t\t\tDear %1$s,\n" -"\t\t\t\t\tYour password has been changed as requested. Please retain this\n" -"\t\t\t\tinformation for your records (or change your password immediately " -"to\n" -"\t\t\t\tsomething that you will remember).\n" -"\t\t\t" +#: mod/profiles.php:709 +msgid "Profile Name:" msgstr "" -#: mod/lostpass.php:131 -#, php-format +#: mod/profiles.php:711 msgid "" -"\n" -"\t\t\t\tYour login details are as follows:\n" -"\n" -"\t\t\t\tSite Location:\t%1$s\n" -"\t\t\t\tLogin Name:\t%2$s\n" -"\t\t\t\tPassword:\t%3$s\n" -"\n" -"\t\t\t\tYou may change that password from your account settings page after " -"logging in.\n" -"\t\t\t" +"This is your public profile.
It may " +"be visible to anybody using the internet." +msgstr "" + +#: mod/profiles.php:712 +msgid "Your Full Name:" +msgstr "" + +#: mod/profiles.php:713 +msgid "Title/Description:" +msgstr "" + +#: mod/profiles.php:716 +msgid "Street Address:" +msgstr "" + +#: mod/profiles.php:717 +msgid "Locality/City:" +msgstr "" + +#: mod/profiles.php:718 +msgid "Region/State:" +msgstr "" + +#: mod/profiles.php:719 +msgid "Postal/Zip Code:" +msgstr "" + +#: mod/profiles.php:720 +msgid "Country:" +msgstr "" + +#: mod/profiles.php:724 +msgid "Who: (if applicable)" +msgstr "" + +#: mod/profiles.php:724 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "" + +#: mod/profiles.php:725 +msgid "Since [date]:" +msgstr "" + +#: mod/profiles.php:727 +msgid "Tell us about yourself..." +msgstr "" + +#: mod/profiles.php:728 +msgid "XMPP (Jabber) address:" +msgstr "" + +#: mod/profiles.php:728 +msgid "" +"The XMPP address will be propagated to your contacts so that they can follow " +"you." +msgstr "" + +#: mod/profiles.php:729 +msgid "Homepage URL:" +msgstr "" + +#: mod/profiles.php:732 +msgid "Religious Views:" +msgstr "" + +#: mod/profiles.php:733 +msgid "Public Keywords:" +msgstr "" + +#: mod/profiles.php:733 +msgid "(Used for suggesting potential friends, can be seen by others)" +msgstr "" + +#: mod/profiles.php:734 +msgid "Private Keywords:" +msgstr "" + +#: mod/profiles.php:734 +msgid "(Used for searching profiles, never shown to others)" +msgstr "" + +#: mod/profiles.php:737 +msgid "Musical interests" +msgstr "" + +#: mod/profiles.php:738 +msgid "Books, literature" +msgstr "" + +#: mod/profiles.php:739 +msgid "Television" +msgstr "" + +#: mod/profiles.php:740 +msgid "Film/dance/culture/entertainment" +msgstr "" + +#: mod/profiles.php:741 +msgid "Hobbies/Interests" +msgstr "" + +#: mod/profiles.php:742 +msgid "Love/romance" +msgstr "" + +#: mod/profiles.php:743 +msgid "Work/employment" +msgstr "" + +#: mod/profiles.php:744 +msgid "School/education" +msgstr "" + +#: mod/profiles.php:745 +msgid "Contact information and Social Networks" +msgstr "" + +#: mod/profiles.php:786 +msgid "Edit/Manage Profiles" +msgstr "" + +#: mod/register.php:93 +msgid "" +"Registration successful. Please check your email for further instructions." +msgstr "" + +#: mod/register.php:98 +#, php-format +msgid "" +"Failed to send email message. Here your accout details:
login: %s
" +"password: %s

You can change your password after login." +msgstr "" + +#: mod/register.php:105 +msgid "Registration successful." +msgstr "" + +#: mod/register.php:111 +msgid "Your registration can not be processed." +msgstr "" + +#: mod/register.php:160 +msgid "Your registration is pending approval by the site owner." +msgstr "" + +#: mod/register.php:226 +msgid "" +"You may (optionally) fill in this form via OpenID by supplying your OpenID " +"and clicking 'Register'." +msgstr "" + +#: mod/register.php:227 +msgid "" +"If you are not familiar with OpenID, please leave that field blank and fill " +"in the rest of the items." +msgstr "" + +#: mod/register.php:228 +msgid "Your OpenID (optional): " +msgstr "" + +#: mod/register.php:242 +msgid "Include your profile in member directory?" +msgstr "" + +#: mod/register.php:267 +msgid "Note for the admin" +msgstr "" + +#: mod/register.php:267 +msgid "Leave a message for the admin, why you want to join this node" +msgstr "" + +#: mod/register.php:268 +msgid "Membership on this site is by invitation only." +msgstr "" + +#: mod/register.php:269 +msgid "Your invitation ID: " +msgstr "" + +#: mod/register.php:272 mod/admin.php:1056 +msgid "Registration" +msgstr "" + +#: mod/register.php:280 +msgid "Your Full Name (e.g. Joe Smith, real or real-looking): " +msgstr "" + +#: mod/register.php:281 +msgid "Your Email Address: " +msgstr "" + +#: mod/register.php:283 mod/settings.php:1278 +msgid "New Password:" +msgstr "" + +#: mod/register.php:283 +msgid "Leave empty for an auto generated password." +msgstr "" + +#: mod/register.php:284 mod/settings.php:1279 +msgid "Confirm:" +msgstr "" + +#: mod/register.php:285 +msgid "" +"Choose a profile nickname. This must begin with a text character. Your " +"profile address on this site will then be 'nickname@$sitename'." +msgstr "" + +#: mod/register.php:286 +msgid "Choose a nickname: " +msgstr "" + +#: mod/register.php:296 +msgid "Import your profile to this friendica instance" +msgstr "" + +#: mod/search.php:100 +msgid "Only logged in users are permitted to perform a search." +msgstr "" + +#: mod/search.php:124 +msgid "Too Many Requests" +msgstr "" + +#: mod/search.php:125 +msgid "Only one search per minute is permitted for not logged in users." +msgstr "" + +#: mod/search.php:225 +#, php-format +msgid "Items tagged with: %s" +msgstr "" + +#: mod/settings.php:43 mod/admin.php:1490 +msgid "Account" +msgstr "" + +#: mod/settings.php:52 mod/admin.php:169 +msgid "Additional features" +msgstr "" + +#: mod/settings.php:60 +msgid "Display" +msgstr "" + +#: mod/settings.php:67 mod/settings.php:890 +msgid "Social Networks" +msgstr "" + +#: mod/settings.php:74 mod/admin.php:167 mod/admin.php:1616 mod/admin.php:1679 +msgid "Plugins" +msgstr "" + +#: mod/settings.php:88 +msgid "Connected apps" +msgstr "" + +#: mod/settings.php:95 mod/uexport.php:45 +msgid "Export personal data" +msgstr "" + +#: mod/settings.php:102 +msgid "Remove account" +msgstr "" + +#: mod/settings.php:157 +msgid "Missing some important data!" +msgstr "" + +#: mod/settings.php:271 +msgid "Failed to connect with email account using the settings provided." +msgstr "" + +#: mod/settings.php:276 +msgid "Email settings updated." +msgstr "" + +#: mod/settings.php:291 +msgid "Features updated" +msgstr "" + +#: mod/settings.php:361 +msgid "Relocate message has been send to your contacts" +msgstr "" + +#: mod/settings.php:380 +msgid "Empty passwords are not allowed. Password unchanged." +msgstr "" + +#: mod/settings.php:388 +msgid "Wrong password." +msgstr "" + +#: mod/settings.php:399 +msgid "Password changed." +msgstr "" + +#: mod/settings.php:401 +msgid "Password update failed. Please try again." +msgstr "" + +#: mod/settings.php:481 +msgid " Please use a shorter name." +msgstr "" + +#: mod/settings.php:483 +msgid " Name too short." +msgstr "" + +#: mod/settings.php:492 +msgid "Wrong Password" +msgstr "" + +#: mod/settings.php:497 +msgid " Not valid email." +msgstr "" + +#: mod/settings.php:503 +msgid " Cannot change to that email." +msgstr "" + +#: mod/settings.php:559 +msgid "Private forum has no privacy permissions. Using default privacy group." +msgstr "" + +#: mod/settings.php:563 +msgid "Private forum has no privacy permissions and no default privacy group." +msgstr "" + +#: mod/settings.php:603 +msgid "Settings updated." +msgstr "" + +#: mod/settings.php:680 mod/settings.php:706 mod/settings.php:742 +msgid "Add application" +msgstr "" + +#: mod/settings.php:681 mod/settings.php:792 mod/settings.php:841 +#: mod/settings.php:908 mod/settings.php:1005 mod/settings.php:1271 +#: mod/admin.php:1055 mod/admin.php:1680 mod/admin.php:1943 mod/admin.php:2017 +#: mod/admin.php:2170 +msgid "Save Settings" +msgstr "" + +#: mod/settings.php:684 mod/settings.php:710 +msgid "Consumer Key" +msgstr "" + +#: mod/settings.php:685 mod/settings.php:711 +msgid "Consumer Secret" +msgstr "" + +#: mod/settings.php:686 mod/settings.php:712 +msgid "Redirect" +msgstr "" + +#: mod/settings.php:687 mod/settings.php:713 +msgid "Icon url" +msgstr "" + +#: mod/settings.php:698 +msgid "You can't edit this application." +msgstr "" + +#: mod/settings.php:741 +msgid "Connected Apps" +msgstr "" + +#: mod/settings.php:745 +msgid "Client key starts with" +msgstr "" + +#: mod/settings.php:746 +msgid "No name" +msgstr "" + +#: mod/settings.php:747 +msgid "Remove authorization" +msgstr "" + +#: mod/settings.php:759 +msgid "No Plugin settings configured" +msgstr "" + +#: mod/settings.php:768 +msgid "Plugin Settings" +msgstr "" + +#: mod/settings.php:782 mod/admin.php:2159 mod/admin.php:2160 +msgid "Off" +msgstr "" + +#: mod/settings.php:782 mod/admin.php:2159 mod/admin.php:2160 +msgid "On" +msgstr "" + +#: mod/settings.php:790 +msgid "Additional Features" +msgstr "" + +#: mod/settings.php:800 mod/settings.php:804 +msgid "General Social Media Settings" +msgstr "" + +#: mod/settings.php:810 +msgid "Disable intelligent shortening" +msgstr "" + +#: mod/settings.php:812 +msgid "" +"Normally the system tries to find the best link to add to shortened posts. " +"If this option is enabled then every shortened post will always point to the " +"original friendica post." +msgstr "" + +#: mod/settings.php:818 +msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" +msgstr "" + +#: mod/settings.php:820 +msgid "" +"If you receive a message from an unknown OStatus user, this option decides " +"what to do. If it is checked, a new contact will be created for every " +"unknown user." +msgstr "" + +#: mod/settings.php:826 +msgid "Default group for OStatus contacts" +msgstr "" + +#: mod/settings.php:834 +msgid "Your legacy GNU Social account" +msgstr "" + +#: mod/settings.php:836 +msgid "" +"If you enter your old GNU Social/Statusnet account name here (in the format " +"user@domain.tld), your contacts will be added automatically. The field will " +"be emptied when done." +msgstr "" + +#: mod/settings.php:839 +msgid "Repair OStatus subscriptions" +msgstr "" + +#: mod/settings.php:848 mod/settings.php:849 +#, php-format +msgid "Built-in support for %s connectivity is %s" +msgstr "" + +#: mod/settings.php:848 mod/settings.php:849 +msgid "enabled" +msgstr "" + +#: mod/settings.php:848 mod/settings.php:849 +msgid "disabled" +msgstr "" + +#: mod/settings.php:849 +msgid "GNU Social (OStatus)" +msgstr "" + +#: mod/settings.php:883 +msgid "Email access is disabled on this site." +msgstr "" + +#: mod/settings.php:895 +msgid "Email/Mailbox Setup" +msgstr "" + +#: mod/settings.php:896 +msgid "" +"If you wish to communicate with email contacts using this service " +"(optional), please specify how to connect to your mailbox." +msgstr "" + +#: mod/settings.php:897 +msgid "Last successful email check:" +msgstr "" + +#: mod/settings.php:899 +msgid "IMAP server name:" +msgstr "" + +#: mod/settings.php:900 +msgid "IMAP port:" +msgstr "" + +#: mod/settings.php:901 +msgid "Security:" +msgstr "" + +#: mod/settings.php:901 mod/settings.php:906 +msgid "None" +msgstr "" + +#: mod/settings.php:902 +msgid "Email login name:" +msgstr "" + +#: mod/settings.php:903 +msgid "Email password:" +msgstr "" + +#: mod/settings.php:904 +msgid "Reply-to address:" +msgstr "" + +#: mod/settings.php:905 +msgid "Send public posts to all email contacts:" +msgstr "" + +#: mod/settings.php:906 +msgid "Action after import:" msgstr "" -#: mod/lostpass.php:147 -#, php-format -msgid "Your password has been changed at %s" +#: mod/settings.php:906 +msgid "Move to folder" msgstr "" -#: mod/lostpass.php:159 -msgid "Forgot your Password?" +#: mod/settings.php:907 +msgid "Move to folder:" msgstr "" -#: mod/lostpass.php:160 -msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." +#: mod/settings.php:943 mod/admin.php:942 +msgid "No special theme for mobile devices" msgstr "" -#: mod/lostpass.php:162 -msgid "Reset" +#: mod/settings.php:1003 +msgid "Display Settings" msgstr "" -#: mod/maintenance.php:20 -msgid "System down for maintenance" +#: mod/settings.php:1009 mod/settings.php:1032 +msgid "Display Theme:" msgstr "" -#: mod/manage.php:141 -msgid "Manage Identities and/or Pages" +#: mod/settings.php:1010 +msgid "Mobile Theme:" msgstr "" -#: mod/manage.php:142 -msgid "" -"Toggle between different identities or community/group pages which share " -"your account details or which you have been granted \"manage\" permissions" +#: mod/settings.php:1011 +msgid "Suppress warning of insecure networks" msgstr "" -#: mod/manage.php:143 -msgid "Select an identity to manage: " +#: mod/settings.php:1011 +msgid "" +"Should the system suppress the warning that the current group contains " +"members of networks that can't receive non public postings." msgstr "" -#: mod/match.php:35 -msgid "No keywords to match. Please add keywords to your default profile." +#: mod/settings.php:1012 +msgid "Update browser every xx seconds" msgstr "" -#: mod/match.php:88 -msgid "is interested in:" +#: mod/settings.php:1012 +msgid "Minimum of 10 seconds. Enter -1 to disable it." msgstr "" -#: mod/match.php:102 -msgid "Profile Match" +#: mod/settings.php:1013 +msgid "Number of items to display per page:" msgstr "" -#: mod/message.php:60 mod/wallmessage.php:50 -msgid "No recipient selected." +#: mod/settings.php:1013 mod/settings.php:1014 +msgid "Maximum of 100 items" msgstr "" -#: mod/message.php:64 -msgid "Unable to locate contact information." +#: mod/settings.php:1014 +msgid "Number of items to display per page when viewed from mobile device:" msgstr "" -#: mod/message.php:67 mod/wallmessage.php:56 -msgid "Message could not be sent." +#: mod/settings.php:1015 +msgid "Don't show emoticons" msgstr "" -#: mod/message.php:70 mod/wallmessage.php:59 -msgid "Message collection failure." +#: mod/settings.php:1016 +msgid "Calendar" msgstr "" -#: mod/message.php:73 mod/wallmessage.php:62 -msgid "Message sent." +#: mod/settings.php:1017 +msgid "Beginning of week:" msgstr "" -#: mod/message.php:204 -msgid "Do you really want to delete this message?" +#: mod/settings.php:1018 +msgid "Don't show notices" msgstr "" -#: mod/message.php:224 -msgid "Message deleted." +#: mod/settings.php:1019 +msgid "Infinite scroll" msgstr "" -#: mod/message.php:255 -msgid "Conversation removed." +#: mod/settings.php:1020 +msgid "Automatic updates only at the top of the network page" msgstr "" -#: mod/message.php:322 mod/wallmessage.php:126 -msgid "Send Private Message" +#: mod/settings.php:1021 +msgid "Bandwith Saver Mode" msgstr "" -#: mod/message.php:323 mod/message.php:510 mod/wallmessage.php:128 -msgid "To:" +#: mod/settings.php:1021 +msgid "" +"When enabled, embedded content is not displayed on automatic updates, they " +"only show on page reload." msgstr "" -#: mod/message.php:328 mod/message.php:512 mod/wallmessage.php:129 -msgid "Subject:" +#: mod/settings.php:1023 +msgid "General Theme Settings" msgstr "" -#: mod/message.php:364 -msgid "No messages." +#: mod/settings.php:1024 +msgid "Custom Theme Settings" msgstr "" -#: mod/message.php:403 -msgid "Message not available." +#: mod/settings.php:1025 +msgid "Content Settings" msgstr "" -#: mod/message.php:477 -msgid "Delete message" +#: mod/settings.php:1026 view/theme/duepuntozero/config.php:63 +#: view/theme/frio/config.php:66 view/theme/quattro/config.php:69 +#: view/theme/vier/config.php:114 +msgid "Theme settings" msgstr "" -#: mod/message.php:503 mod/message.php:583 -msgid "Delete conversation" +#: mod/settings.php:1110 +msgid "Account Types" msgstr "" -#: mod/message.php:505 -msgid "" -"No secure communications available. You may be able to " -"respond from the sender's profile page." +#: mod/settings.php:1111 +msgid "Personal Page Subtypes" msgstr "" -#: mod/message.php:509 -msgid "Send Reply" +#: mod/settings.php:1112 +msgid "Community Forum Subtypes" msgstr "" -#: mod/message.php:553 -#, php-format -msgid "Unknown sender - %s" +#: mod/settings.php:1119 +msgid "Personal Page" msgstr "" -#: mod/message.php:555 -#, php-format -msgid "You and %s" +#: mod/settings.php:1120 +msgid "This account is a regular personal profile" msgstr "" -#: mod/message.php:557 -#, php-format -msgid "%s and You" +#: mod/settings.php:1123 +msgid "Organisation Page" msgstr "" -#: mod/message.php:586 -msgid "D, d M Y - g:i A" +#: mod/settings.php:1124 +msgid "This account is a profile for an organisation" msgstr "" -#: mod/message.php:589 -#, php-format -msgid "%d message" -msgid_plural "%d messages" -msgstr[0] "" -msgstr[1] "" - -#: mod/mood.php:134 -msgid "Mood" +#: mod/settings.php:1127 +msgid "News Page" msgstr "" -#: mod/mood.php:135 -msgid "Set your current mood and tell your friends" +#: mod/settings.php:1128 +msgid "This account is a news account/reflector" msgstr "" -#: mod/network.php:190 mod/search.php:25 -msgid "Remove term" +#: mod/settings.php:1131 +msgid "Community Forum" msgstr "" -#: mod/network.php:397 -#, php-format +#: mod/settings.php:1132 msgid "" -"Warning: This group contains %s member from a network that doesn't allow non " -"public messages." -msgid_plural "" -"Warning: This group contains %s members from a network that doesn't allow " -"non public messages." -msgstr[0] "" -msgstr[1] "" +"This account is a community forum where people can discuss with each other" +msgstr "" -#: mod/network.php:400 -msgid "Messages in this group won't be send to these receivers." +#: mod/settings.php:1135 +msgid "Normal Account Page" msgstr "" -#: mod/network.php:528 -msgid "Private messages to this person are at risk of public disclosure." +#: mod/settings.php:1136 +msgid "This account is a normal personal profile" msgstr "" -#: mod/network.php:533 -msgid "Invalid contact." +#: mod/settings.php:1139 +msgid "Soapbox Page" msgstr "" -#: mod/network.php:810 -msgid "Commented Order" +#: mod/settings.php:1140 +msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "" -#: mod/network.php:813 -msgid "Sort by Comment Date" +#: mod/settings.php:1143 +msgid "Public Forum" msgstr "" -#: mod/network.php:818 -msgid "Posted Order" +#: mod/settings.php:1144 +msgid "Automatically approve all contact requests" msgstr "" -#: mod/network.php:821 -msgid "Sort by Post Date" +#: mod/settings.php:1147 +msgid "Automatic Friend Page" msgstr "" -#: mod/network.php:832 -msgid "Posts that mention or involve you" +#: mod/settings.php:1148 +msgid "Automatically approve all connection/friend requests as friends" msgstr "" -#: mod/network.php:840 -msgid "New" +#: mod/settings.php:1151 +msgid "Private Forum [Experimental]" msgstr "" -#: mod/network.php:843 -msgid "Activity Stream - by date" +#: mod/settings.php:1152 +msgid "Private forum - approved members only" msgstr "" -#: mod/network.php:851 -msgid "Shared Links" +#: mod/settings.php:1163 +msgid "OpenID:" msgstr "" -#: mod/network.php:854 -msgid "Interesting Links" +#: mod/settings.php:1163 +msgid "(Optional) Allow this OpenID to login to this account." msgstr "" -#: mod/network.php:862 -msgid "Starred" +#: mod/settings.php:1171 +msgid "Publish your default profile in your local site directory?" msgstr "" -#: mod/network.php:865 -msgid "Favourite Posts" +#: mod/settings.php:1171 +msgid "Your profile may be visible in public." msgstr "" -#: mod/newmember.php:6 -msgid "Welcome to Friendica" +#: mod/settings.php:1177 +msgid "Publish your default profile in the global social directory?" msgstr "" -#: mod/newmember.php:8 -msgid "New Member Checklist" +#: mod/settings.php:1184 +msgid "Hide your contact/friend list from viewers of your default profile?" msgstr "" -#: mod/newmember.php:12 +#: mod/settings.php:1188 msgid "" -"We would like to offer some tips and links to help make your experience " -"enjoyable. Click any item to visit the relevant page. A link to this page " -"will be visible from your home page for two weeks after your initial " -"registration and then will quietly disappear." +"If enabled, posting public messages to Diaspora and other networks isn't " +"possible." msgstr "" -#: mod/newmember.php:14 -msgid "Getting Started" +#: mod/settings.php:1193 +msgid "Allow friends to post to your profile page?" msgstr "" -#: mod/newmember.php:18 -msgid "Friendica Walk-Through" +#: mod/settings.php:1198 +msgid "Allow friends to tag your posts?" msgstr "" -#: mod/newmember.php:18 -msgid "" -"On your Quick Start page - find a brief introduction to your " -"profile and network tabs, make some new connections, and find some groups to " -"join." +#: mod/settings.php:1203 +msgid "Allow us to suggest you as a potential friend to new members?" msgstr "" -#: mod/newmember.php:26 -msgid "Go to Your Settings" +#: mod/settings.php:1208 +msgid "Permit unknown people to send you private mail?" msgstr "" -#: mod/newmember.php:26 -msgid "" -"On your Settings page - change your initial password. Also make a " -"note of your Identity Address. This looks just like an email address - and " -"will be useful in making friends on the free social web." +#: mod/settings.php:1216 +msgid "Profile is not published." +msgstr "" + +#: mod/settings.php:1224 +#, php-format +msgid "Your Identity Address is '%s' or '%s'." +msgstr "" + +#: mod/settings.php:1231 +msgid "Automatically expire posts after this many days:" +msgstr "" + +#: mod/settings.php:1231 +msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "" -#: mod/newmember.php:28 -msgid "" -"Review the other settings, particularly the privacy settings. An unpublished " -"directory listing is like having an unlisted phone number. In general, you " -"should probably publish your listing - unless all of your friends and " -"potential friends know exactly how to find you." +#: mod/settings.php:1232 +msgid "Advanced expiration settings" msgstr "" -#: mod/newmember.php:36 mod/profile_photo.php:256 mod/profiles.php:699 -msgid "Upload Profile Photo" +#: mod/settings.php:1233 +msgid "Advanced Expiration" msgstr "" -#: mod/newmember.php:36 -msgid "" -"Upload a profile photo if you have not done so already. Studies have shown " -"that people with real photos of themselves are ten times more likely to make " -"friends than people who do not." +#: mod/settings.php:1234 +msgid "Expire posts:" msgstr "" -#: mod/newmember.php:38 -msgid "Edit Your Profile" +#: mod/settings.php:1235 +msgid "Expire personal notes:" msgstr "" -#: mod/newmember.php:38 -msgid "" -"Edit your default profile to your liking. Review the " -"settings for hiding your list of friends and hiding the profile from unknown " -"visitors." +#: mod/settings.php:1236 +msgid "Expire starred posts:" msgstr "" -#: mod/newmember.php:40 -msgid "Profile Keywords" +#: mod/settings.php:1237 +msgid "Expire photos:" msgstr "" -#: mod/newmember.php:40 -msgid "" -"Set some public keywords for your default profile which describe your " -"interests. We may be able to find other people with similar interests and " -"suggest friendships." +#: mod/settings.php:1238 +msgid "Only expire posts by others:" msgstr "" -#: mod/newmember.php:44 -msgid "Connecting" +#: mod/settings.php:1269 +msgid "Account Settings" msgstr "" -#: mod/newmember.php:51 -msgid "Importing Emails" +#: mod/settings.php:1277 +msgid "Password Settings" msgstr "" -#: mod/newmember.php:51 -msgid "" -"Enter your email access information on your Connector Settings page if you " -"wish to import and interact with friends or mailing lists from your email " -"INBOX" +#: mod/settings.php:1279 +msgid "Leave password fields blank unless changing" msgstr "" -#: mod/newmember.php:53 -msgid "Go to Your Contacts Page" +#: mod/settings.php:1280 +msgid "Current Password:" msgstr "" -#: mod/newmember.php:53 -msgid "" -"Your Contacts page is your gateway to managing friendships and connecting " -"with friends on other networks. Typically you enter their address or site " -"URL in the Add New Contact dialog." +#: mod/settings.php:1280 mod/settings.php:1281 +msgid "Your current password to confirm the changes" msgstr "" -#: mod/newmember.php:55 -msgid "Go to Your Site's Directory" +#: mod/settings.php:1281 +msgid "Password:" msgstr "" -#: mod/newmember.php:55 -msgid "" -"The Directory page lets you find other people in this network or other " -"federated sites. Look for a Connect or Follow link on " -"their profile page. Provide your own Identity Address if requested." +#: mod/settings.php:1285 +msgid "Basic Settings" msgstr "" -#: mod/newmember.php:57 -msgid "Finding New People" +#: mod/settings.php:1287 +msgid "Email Address:" msgstr "" -#: mod/newmember.php:57 -msgid "" -"On the side panel of the Contacts page are several tools to find new " -"friends. We can match people by interest, look up people by name or " -"interest, and provide suggestions based on network relationships. On a brand " -"new site, friend suggestions will usually begin to be populated within 24 " -"hours." +#: mod/settings.php:1288 +msgid "Your Timezone:" msgstr "" -#: mod/newmember.php:65 -msgid "Group Your Contacts" +#: mod/settings.php:1289 +msgid "Your Language:" msgstr "" -#: mod/newmember.php:65 +#: mod/settings.php:1289 msgid "" -"Once you have made some friends, organize them into private conversation " -"groups from the sidebar of your Contacts page and then you can interact with " -"each group privately on your Network page." +"Set the language we use to show you friendica interface and to send you " +"emails" msgstr "" -#: mod/newmember.php:68 -msgid "Why Aren't My Posts Public?" +#: mod/settings.php:1290 +msgid "Default Post Location:" msgstr "" -#: mod/newmember.php:68 -msgid "" -"Friendica respects your privacy. By default, your posts will only show up to " -"people you've added as friends. For more information, see the help section " -"from the link above." +#: mod/settings.php:1291 +msgid "Use Browser Location:" msgstr "" -#: mod/newmember.php:73 -msgid "Getting Help" +#: mod/settings.php:1294 +msgid "Security and Privacy Settings" msgstr "" -#: mod/newmember.php:77 -msgid "Go to the Help Section" +#: mod/settings.php:1296 +msgid "Maximum Friend Requests/Day:" msgstr "" -#: mod/newmember.php:77 -msgid "" -"Our help pages may be consulted for detail on other program " -"features and resources." +#: mod/settings.php:1296 mod/settings.php:1326 +msgid "(to prevent spam abuse)" msgstr "" -#: mod/nogroup.php:65 -msgid "Contacts who are not members of a group" +#: mod/settings.php:1297 +msgid "Default Post Permissions" msgstr "" -#: mod/notifications.php:35 -msgid "Invalid request identifier." +#: mod/settings.php:1298 +msgid "(click to open/close)" msgstr "" -#: mod/notifications.php:44 mod/notifications.php:180 -#: mod/notifications.php:258 -msgid "Discard" +#: mod/settings.php:1309 +msgid "Default Private Post" msgstr "" -#: mod/notifications.php:105 -msgid "Network Notifications" +#: mod/settings.php:1310 +msgid "Default Public Post" msgstr "" -#: mod/notifications.php:111 mod/notify.php:69 -msgid "System Notifications" +#: mod/settings.php:1314 +msgid "Default Permissions for New Posts" msgstr "" -#: mod/notifications.php:117 -msgid "Personal Notifications" +#: mod/settings.php:1326 +msgid "Maximum private messages per day from unknown people:" msgstr "" -#: mod/notifications.php:123 -msgid "Home Notifications" +#: mod/settings.php:1329 +msgid "Notification Settings" msgstr "" -#: mod/notifications.php:152 -msgid "Show Ignored Requests" +#: mod/settings.php:1330 +msgid "By default post a status message when:" msgstr "" -#: mod/notifications.php:152 -msgid "Hide Ignored Requests" +#: mod/settings.php:1331 +msgid "accepting a friend request" msgstr "" -#: mod/notifications.php:164 mod/notifications.php:228 -msgid "Notification type: " +#: mod/settings.php:1332 +msgid "joining a forum/community" msgstr "" -#: mod/notifications.php:167 -#, php-format -msgid "suggested by %s" +#: mod/settings.php:1333 +msgid "making an interesting profile change" msgstr "" -#: mod/notifications.php:173 mod/notifications.php:246 -msgid "Post a new friend activity" +#: mod/settings.php:1334 +msgid "Send a notification email when:" msgstr "" -#: mod/notifications.php:173 mod/notifications.php:246 -msgid "if applicable" +#: mod/settings.php:1335 +msgid "You receive an introduction" msgstr "" -#: mod/notifications.php:195 -msgid "Claims to be known to you: " +#: mod/settings.php:1336 +msgid "Your introductions are confirmed" msgstr "" -#: mod/notifications.php:196 -msgid "yes" +#: mod/settings.php:1337 +msgid "Someone writes on your profile wall" msgstr "" -#: mod/notifications.php:196 -msgid "no" +#: mod/settings.php:1338 +msgid "Someone writes a followup comment" msgstr "" -#: mod/notifications.php:197 mod/notifications.php:202 -msgid "Shall your connection be bidirectional or not?" +#: mod/settings.php:1339 +msgid "You receive a private message" msgstr "" -#: mod/notifications.php:198 mod/notifications.php:203 -#, php-format -msgid "" -"Accepting %s as a friend allows %s to subscribe to your posts, and you will " -"also receive updates from them in your news feed." +#: mod/settings.php:1340 +msgid "You receive a friend suggestion" msgstr "" -#: mod/notifications.php:199 -#, php-format -msgid "" -"Accepting %s as a subscriber allows them to subscribe to your posts, but you " -"will not receive updates from them in your news feed." +#: mod/settings.php:1341 +msgid "You are tagged in a post" msgstr "" -#: mod/notifications.php:204 -#, php-format -msgid "" -"Accepting %s as a sharer allows them to subscribe to your posts, but you " -"will not receive updates from them in your news feed." +#: mod/settings.php:1342 +msgid "You are poked/prodded/etc. in a post" msgstr "" -#: mod/notifications.php:215 -msgid "Friend" +#: mod/settings.php:1344 +msgid "Activate desktop notifications" msgstr "" -#: mod/notifications.php:216 -msgid "Sharer" +#: mod/settings.php:1344 +msgid "Show desktop popup on new notifications" msgstr "" -#: mod/notifications.php:216 -msgid "Subscriber" +#: mod/settings.php:1346 +msgid "Text-only notification emails" msgstr "" -#: mod/notifications.php:266 -msgid "No introductions." +#: mod/settings.php:1348 +msgid "Send text only notification emails, without the html part" msgstr "" -#: mod/notifications.php:307 -msgid "Show unread" +#: mod/settings.php:1350 +msgid "Advanced Account/Page Type Settings" msgstr "" -#: mod/notifications.php:307 -msgid "Show all" +#: mod/settings.php:1351 +msgid "Change the behaviour of this account for special situations" msgstr "" -#: mod/notifications.php:313 -#, php-format -msgid "No more %s notifications." +#: mod/settings.php:1354 +msgid "Relocate" msgstr "" -#: mod/notify.php:65 -msgid "No more system notifications." +#: mod/settings.php:1355 +msgid "" +"If you have moved this profile from another server, and some of your " +"contacts don't receive your updates, try pushing this button." msgstr "" -#: mod/oexchange.php:21 -msgid "Post successful." +#: mod/settings.php:1356 +msgid "Resend relocate message to contacts" msgstr "" -#: mod/openid.php:24 -msgid "OpenID protocol error. No ID returned." +#: mod/uexport.php:37 +msgid "Export account" msgstr "" -#: mod/openid.php:60 +#: mod/uexport.php:37 msgid "" -"Account not found and OpenID registration is not permitted on this site." +"Export your account info and contacts. Use this to make a backup of your " +"account and/or to move it to another server." msgstr "" -#: mod/ostatus_subscribe.php:14 -msgid "Subscribing to OStatus contacts" +#: mod/uexport.php:38 +msgid "Export all" msgstr "" -#: mod/ostatus_subscribe.php:25 -msgid "No contact provided." +#: mod/uexport.php:38 +msgid "" +"Export your accout info, contacts and all your items as json. Could be a " +"very big file, and could take a lot of time. Use this to make a full backup " +"of your account (photos are not exported)" msgstr "" -#: mod/ostatus_subscribe.php:31 -msgid "Couldn't fetch information for contact." +#: mod/videos.php:124 +msgid "Do you really want to delete this video?" msgstr "" -#: mod/ostatus_subscribe.php:40 -msgid "Couldn't fetch friends for contact." +#: mod/videos.php:129 +msgid "Delete Video" msgstr "" -#: mod/ostatus_subscribe.php:54 mod/repair_ostatus.php:44 -msgid "Done" +#: mod/videos.php:208 +msgid "No videos selected" msgstr "" -#: mod/ostatus_subscribe.php:68 -msgid "success" +#: mod/videos.php:402 +msgid "Recent Videos" msgstr "" -#: mod/ostatus_subscribe.php:70 -msgid "failed" +#: mod/videos.php:404 +msgid "Upload New Videos" msgstr "" -#: mod/ostatus_subscribe.php:78 mod/repair_ostatus.php:50 -msgid "Keep this window open until done." +#: mod/install.php:106 +msgid "Friendica Communications Server - Setup" msgstr "" -#: mod/p.php:9 -msgid "Not Extended" +#: mod/install.php:112 +msgid "Could not connect to database." msgstr "" -#: mod/photos.php:90 mod/photos.php:1876 -msgid "Recent Photos" +#: mod/install.php:116 +msgid "Could not create table." msgstr "" -#: mod/photos.php:93 mod/photos.php:1303 mod/photos.php:1878 -msgid "Upload New Photos" +#: mod/install.php:122 +msgid "Your Friendica site database has been installed." msgstr "" -#: mod/photos.php:107 mod/settings.php:36 -msgid "everybody" +#: mod/install.php:127 +msgid "" +"You may need to import the file \"database.sql\" manually using phpmyadmin " +"or mysql." msgstr "" -#: mod/photos.php:171 -msgid "Contact information unavailable" +#: mod/install.php:128 mod/install.php:200 mod/install.php:547 +msgid "Please see the file \"INSTALL.txt\"." msgstr "" -#: mod/photos.php:192 -msgid "Album not found." +#: mod/install.php:140 +msgid "Database already in use." msgstr "" -#: mod/photos.php:225 mod/photos.php:237 mod/photos.php:1247 -msgid "Delete Album" +#: mod/install.php:197 +msgid "System check" msgstr "" -#: mod/photos.php:235 -msgid "Do you really want to delete this photo album and all its photos?" +#: mod/install.php:202 +msgid "Check again" msgstr "" -#: mod/photos.php:317 mod/photos.php:328 mod/photos.php:1563 -msgid "Delete Photo" +#: mod/install.php:221 +msgid "Database connection" msgstr "" -#: mod/photos.php:326 -msgid "Do you really want to delete this photo?" +#: mod/install.php:222 +msgid "" +"In order to install Friendica we need to know how to connect to your " +"database." msgstr "" -#: mod/photos.php:705 -#, php-format -msgid "%1$s was tagged in %2$s by %3$s" +#: mod/install.php:223 +msgid "" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." msgstr "" -#: mod/photos.php:705 -msgid "a photo" +#: mod/install.php:224 +msgid "" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." msgstr "" -#: mod/photos.php:803 mod/profile_photo.php:156 mod/wall_upload.php:151 -#, php-format -msgid "Image exceeds size limit of %s" +#: mod/install.php:228 +msgid "Database Server Name" msgstr "" -#: mod/photos.php:811 -msgid "Image file is empty." +#: mod/install.php:229 +msgid "Database Login Name" msgstr "" -#: mod/photos.php:844 mod/profile_photo.php:165 mod/wall_upload.php:186 -msgid "Unable to process image." +#: mod/install.php:230 +msgid "Database Login Password" msgstr "" -#: mod/photos.php:871 mod/profile_photo.php:315 mod/wall_upload.php:219 -msgid "Image upload failed." +#: mod/install.php:230 +msgid "For security reasons the password must not be empty" msgstr "" -#: mod/photos.php:974 -msgid "No photos selected" +#: mod/install.php:231 +msgid "Database Name" msgstr "" -#: mod/photos.php:1074 mod/videos.php:309 -msgid "Access to this item is restricted." +#: mod/install.php:232 mod/install.php:273 +msgid "Site administrator email address" msgstr "" -#: mod/photos.php:1134 -#, php-format -msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." +#: mod/install.php:232 mod/install.php:273 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." msgstr "" -#: mod/photos.php:1168 -msgid "Upload Photos" +#: mod/install.php:236 mod/install.php:276 +msgid "Please select a default timezone for your website" msgstr "" -#: mod/photos.php:1172 mod/photos.php:1242 -msgid "New album name: " +#: mod/install.php:263 +msgid "Site settings" msgstr "" -#: mod/photos.php:1173 -msgid "or existing album name: " +#: mod/install.php:277 +msgid "System Language:" msgstr "" -#: mod/photos.php:1174 -msgid "Do not show a status post for this upload" +#: mod/install.php:277 +msgid "" +"Set the default language for your Friendica installation interface and to " +"send emails." msgstr "" -#: mod/photos.php:1185 mod/photos.php:1567 mod/settings.php:1307 -msgid "Show to Groups" +#: mod/install.php:317 +msgid "Could not find a command line version of PHP in the web server PATH." msgstr "" -#: mod/photos.php:1186 mod/photos.php:1568 mod/settings.php:1308 -msgid "Show to Contacts" +#: mod/install.php:318 +msgid "" +"If you don't have a command line version of PHP installed on server, you " +"will not be able to run the background processing. See 'Setup the poller'" msgstr "" -#: mod/photos.php:1187 -msgid "Private Photo" +#: mod/install.php:322 +msgid "PHP executable path" msgstr "" -#: mod/photos.php:1188 -msgid "Public Photo" +#: mod/install.php:322 +msgid "" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." msgstr "" -#: mod/photos.php:1254 -msgid "Edit Album" +#: mod/install.php:327 +msgid "Command line PHP" msgstr "" -#: mod/photos.php:1260 -msgid "Show Newest First" +#: mod/install.php:336 +msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" msgstr "" -#: mod/photos.php:1262 -msgid "Show Oldest First" +#: mod/install.php:337 +msgid "Found PHP version: " msgstr "" -#: mod/photos.php:1289 mod/photos.php:1861 -msgid "View Photo" +#: mod/install.php:339 +msgid "PHP cli binary" msgstr "" -#: mod/photos.php:1335 -msgid "Permission denied. Access to this item may be restricted." +#: mod/install.php:350 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." msgstr "" -#: mod/photos.php:1337 -msgid "Photo not available" +#: mod/install.php:351 +msgid "This is required for message delivery to work." msgstr "" -#: mod/photos.php:1395 -msgid "View photo" +#: mod/install.php:353 +msgid "PHP register_argc_argv" msgstr "" -#: mod/photos.php:1395 -msgid "Edit photo" +#: mod/install.php:376 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" msgstr "" -#: mod/photos.php:1396 -msgid "Use as profile photo" +#: mod/install.php:377 +msgid "" +"If running under Windows, please see \"http://www.php.net/manual/en/openssl." +"installation.php\"." msgstr "" -#: mod/photos.php:1421 -msgid "View Full Size" +#: mod/install.php:379 +msgid "Generate encryption keys" msgstr "" -#: mod/photos.php:1507 -msgid "Tags: " +#: mod/install.php:386 +msgid "libCurl PHP module" msgstr "" -#: mod/photos.php:1510 -msgid "[Remove any tag]" +#: mod/install.php:387 +msgid "GD graphics PHP module" msgstr "" -#: mod/photos.php:1549 -msgid "New album name" +#: mod/install.php:388 +msgid "OpenSSL PHP module" msgstr "" -#: mod/photos.php:1550 -msgid "Caption" +#: mod/install.php:389 +msgid "PDO or MySQLi PHP module" msgstr "" -#: mod/photos.php:1551 -msgid "Add a Tag" +#: mod/install.php:390 +msgid "mb_string PHP module" msgstr "" -#: mod/photos.php:1551 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" +#: mod/install.php:391 +msgid "XML PHP module" msgstr "" -#: mod/photos.php:1552 -msgid "Do not rotate" +#: mod/install.php:392 +msgid "iconv module" msgstr "" -#: mod/photos.php:1553 -msgid "Rotate CW (right)" +#: mod/install.php:396 mod/install.php:398 +msgid "Apache mod_rewrite module" msgstr "" -#: mod/photos.php:1554 -msgid "Rotate CCW (left)" +#: mod/install.php:396 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." msgstr "" -#: mod/photos.php:1569 -msgid "Private photo" +#: mod/install.php:404 +msgid "Error: libCURL PHP module required but not installed." msgstr "" -#: mod/photos.php:1570 -msgid "Public photo" +#: mod/install.php:408 +msgid "" +"Error: GD graphics PHP module with JPEG support required but not installed." msgstr "" -#: mod/photos.php:1792 -msgid "Map" +#: mod/install.php:412 +msgid "Error: openssl PHP module required but not installed." msgstr "" -#: mod/photos.php:1867 mod/videos.php:391 -msgid "View Album" +#: mod/install.php:416 +msgid "Error: PDO or MySQLi PHP module required but not installed." msgstr "" -#: mod/ping.php:270 -msgid "{0} wants to be your friend" +#: mod/install.php:420 +msgid "Error: The MySQL driver for PDO is not installed." msgstr "" -#: mod/ping.php:285 -msgid "{0} sent you a message" +#: mod/install.php:424 +msgid "Error: mb_string PHP module required but not installed." msgstr "" -#: mod/ping.php:300 -msgid "{0} requested registration" +#: mod/install.php:428 +msgid "Error: iconv PHP module required but not installed." msgstr "" -#: mod/poke.php:196 -msgid "Poke/Prod" +#: mod/install.php:438 +msgid "Error, XML PHP module required but not installed." msgstr "" -#: mod/poke.php:197 -msgid "poke, prod or do other things to somebody" +#: mod/install.php:450 +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 "" -#: mod/poke.php:198 -msgid "Recipient" +#: mod/install.php:451 +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 "" -#: mod/poke.php:199 -msgid "Choose what you wish to do to recipient" +#: mod/install.php:452 +msgid "" +"At the end of this procedure, we will give you a text to save in a file " +"named .htconfig.php in your Friendica top folder." msgstr "" -#: mod/poke.php:202 -msgid "Make this post private" +#: mod/install.php:453 +msgid "" +"You can alternatively skip this procedure and perform a manual installation. " +"Please see the file \"INSTALL.txt\" for instructions." msgstr "" -#: mod/profile.php:174 -msgid "Tips for New Members" +#: mod/install.php:456 +msgid ".htconfig.php is writable" msgstr "" -#: mod/profile_photo.php:44 -msgid "Image uploaded but image cropping failed." +#: mod/install.php:466 +msgid "" +"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " +"compiles templates to PHP to speed up rendering." msgstr "" -#: mod/profile_photo.php:77 mod/profile_photo.php:85 mod/profile_photo.php:93 -#: mod/profile_photo.php:323 -#, php-format -msgid "Image size reduction [%s] failed." +#: mod/install.php:467 +msgid "" +"In order to store these compiled templates, the web server needs to have " +"write access to the directory view/smarty3/ under the Friendica top level " +"folder." msgstr "" -#: mod/profile_photo.php:127 +#: mod/install.php:468 msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." +"Please ensure that the user that your web server runs as (e.g. www-data) has " +"write access to this folder." msgstr "" -#: mod/profile_photo.php:137 -msgid "Unable to process image" +#: mod/install.php:469 +msgid "" +"Note: as a security measure, you should give the web server write access to " +"view/smarty3/ only--not the template files (.tpl) that it contains." msgstr "" -#: mod/profile_photo.php:254 -msgid "Upload File:" +#: mod/install.php:472 +msgid "view/smarty3 is writable" msgstr "" -#: mod/profile_photo.php:255 -msgid "Select a profile:" +#: mod/install.php:488 +msgid "" +"Url rewrite in .htaccess is not working. Check your server configuration." msgstr "" -#: mod/profile_photo.php:257 -msgid "Upload" +#: mod/install.php:490 +msgid "Url rewrite is working" msgstr "" -#: mod/profile_photo.php:260 -msgid "or" +#: mod/install.php:509 +msgid "ImageMagick PHP extension is not installed" msgstr "" -#: mod/profile_photo.php:260 -msgid "skip this step" +#: mod/install.php:511 +msgid "ImageMagick PHP extension is installed" msgstr "" -#: mod/profile_photo.php:260 -msgid "select a photo from your photo albums" +#: mod/install.php:513 +msgid "ImageMagick supports GIF" msgstr "" -#: mod/profile_photo.php:274 -msgid "Crop Image" +#: mod/install.php:520 +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 "" -#: mod/profile_photo.php:275 -msgid "Please adjust the image cropping for optimum viewing." +#: mod/install.php:545 +msgid "

What next

" msgstr "" -#: mod/profile_photo.php:277 -msgid "Done Editing" +#: mod/install.php:546 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the poller." msgstr "" -#: mod/profile_photo.php:313 -msgid "Image uploaded successfully." +#: mod/item.php:116 +msgid "Unable to locate original post." msgstr "" -#: mod/profiles.php:38 -msgid "Profile deleted." +#: mod/item.php:344 +msgid "Empty post discarded." msgstr "" -#: mod/profiles.php:56 mod/profiles.php:90 -msgid "Profile-" +#: mod/item.php:904 +msgid "System error. Post not saved." msgstr "" -#: mod/profiles.php:75 mod/profiles.php:118 -msgid "New profile created." +#: mod/item.php:995 +#, php-format +msgid "" +"This message was sent to you by %s, a member of the Friendica social network." msgstr "" -#: mod/profiles.php:96 -msgid "Profile unavailable to clone." +#: mod/item.php:997 +#, php-format +msgid "You may visit them online at %s" msgstr "" -#: mod/profiles.php:190 -msgid "Profile Name is required." +#: mod/item.php:998 +msgid "" +"Please contact the sender by replying to this post if you do not wish to " +"receive these messages." msgstr "" -#: mod/profiles.php:338 -msgid "Marital Status" +#: mod/item.php:1002 +#, php-format +msgid "%s posted an update." msgstr "" -#: mod/profiles.php:342 -msgid "Romantic Partner" +#: mod/notifications.php:35 +msgid "Invalid request identifier." msgstr "" -#: mod/profiles.php:354 -msgid "Work/Employment" +#: mod/notifications.php:44 mod/notifications.php:180 +#: mod/notifications.php:227 +msgid "Discard" msgstr "" -#: mod/profiles.php:357 -msgid "Religion" +#: mod/notifications.php:105 +msgid "Network Notifications" msgstr "" -#: mod/profiles.php:361 -msgid "Political Views" +#: mod/notifications.php:117 +msgid "Personal Notifications" msgstr "" -#: mod/profiles.php:365 -msgid "Gender" +#: mod/notifications.php:123 +msgid "Home Notifications" msgstr "" -#: mod/profiles.php:369 -msgid "Sexual Preference" +#: mod/notifications.php:152 +msgid "Show Ignored Requests" msgstr "" -#: mod/profiles.php:373 -msgid "XMPP" +#: mod/notifications.php:152 +msgid "Hide Ignored Requests" msgstr "" -#: mod/profiles.php:377 -msgid "Homepage" +#: mod/notifications.php:164 mod/notifications.php:234 +msgid "Notification type: " msgstr "" -#: mod/profiles.php:381 mod/profiles.php:694 -msgid "Interests" +#: mod/notifications.php:167 +#, php-format +msgid "suggested by %s" msgstr "" -#: mod/profiles.php:385 -msgid "Address" +#: mod/notifications.php:173 mod/notifications.php:252 +msgid "Post a new friend activity" msgstr "" -#: mod/profiles.php:392 mod/profiles.php:690 -msgid "Location" +#: mod/notifications.php:173 mod/notifications.php:252 +msgid "if applicable" msgstr "" -#: mod/profiles.php:477 -msgid "Profile updated." +#: mod/notifications.php:176 mod/notifications.php:261 mod/admin.php:1506 +msgid "Approve" msgstr "" -#: mod/profiles.php:565 -msgid " and " +#: mod/notifications.php:195 +msgid "Claims to be known to you: " msgstr "" -#: mod/profiles.php:573 -msgid "public profile" +#: mod/notifications.php:196 +msgid "yes" msgstr "" -#: mod/profiles.php:576 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" +#: mod/notifications.php:196 +msgid "no" msgstr "" -#: mod/profiles.php:577 -#, php-format -msgid " - Visit %1$s's %2$s" +#: mod/notifications.php:197 mod/notifications.php:202 +msgid "Shall your connection be bidirectional or not?" msgstr "" -#: mod/profiles.php:580 +#: mod/notifications.php:198 mod/notifications.php:203 #, php-format -msgid "%1$s has an updated %2$s, changing %3$s." +msgid "" +"Accepting %s as a friend allows %s to subscribe to your posts, and you will " +"also receive updates from them in your news feed." msgstr "" -#: mod/profiles.php:637 -msgid "Hide contacts and friends:" +#: mod/notifications.php:199 +#, php-format +msgid "" +"Accepting %s as a subscriber allows them to subscribe to your posts, but you " +"will not receive updates from them in your news feed." msgstr "" -#: mod/profiles.php:642 -msgid "Hide your contact/friend list from viewers of this profile?" +#: mod/notifications.php:204 +#, php-format +msgid "" +"Accepting %s as a sharer allows them to subscribe to your posts, but you " +"will not receive updates from them in your news feed." msgstr "" -#: mod/profiles.php:666 -msgid "Show more profile fields:" +#: mod/notifications.php:215 +msgid "Friend" msgstr "" -#: mod/profiles.php:678 -msgid "Profile Actions" +#: mod/notifications.php:216 +msgid "Sharer" msgstr "" -#: mod/profiles.php:679 -msgid "Edit Profile Details" +#: mod/notifications.php:216 +msgid "Subscriber" msgstr "" -#: mod/profiles.php:681 -msgid "Change Profile Photo" +#: mod/notifications.php:272 +msgid "No introductions." msgstr "" -#: mod/profiles.php:682 -msgid "View this profile" +#: mod/notifications.php:313 +msgid "Show unread" msgstr "" -#: mod/profiles.php:684 -msgid "Create a new profile using these settings" +#: mod/notifications.php:313 +msgid "Show all" msgstr "" -#: mod/profiles.php:685 -msgid "Clone this profile" +#: mod/notifications.php:319 +#, php-format +msgid "No more %s notifications." msgstr "" -#: mod/profiles.php:686 -msgid "Delete this profile" +#: mod/ping.php:270 +msgid "{0} wants to be your friend" msgstr "" -#: mod/profiles.php:688 -msgid "Basic information" +#: mod/ping.php:285 +msgid "{0} sent you a message" msgstr "" -#: mod/profiles.php:689 -msgid "Profile picture" +#: mod/ping.php:300 +msgid "{0} requested registration" msgstr "" -#: mod/profiles.php:691 -msgid "Preferences" +#: mod/admin.php:96 +msgid "Theme settings updated." msgstr "" -#: mod/profiles.php:692 -msgid "Status information" +#: mod/admin.php:165 mod/admin.php:1054 +msgid "Site" msgstr "" -#: mod/profiles.php:693 -msgid "Additional information" +#: mod/admin.php:166 mod/admin.php:988 mod/admin.php:1498 mod/admin.php:1514 +msgid "Users" msgstr "" -#: mod/profiles.php:696 -msgid "Relation" +#: mod/admin.php:168 mod/admin.php:1892 mod/admin.php:1942 +msgid "Themes" msgstr "" -#: mod/profiles.php:700 -msgid "Your Gender:" +#: mod/admin.php:170 +msgid "DB updates" msgstr "" -#: mod/profiles.php:701 -msgid " Marital Status:" +#: mod/admin.php:171 mod/admin.php:512 +msgid "Inspect Queue" msgstr "" -#: mod/profiles.php:703 -msgid "Example: fishing photography software" +#: mod/admin.php:172 mod/admin.php:288 +msgid "Server Blocklist" msgstr "" -#: mod/profiles.php:708 -msgid "Profile Name:" +#: mod/admin.php:173 mod/admin.php:478 +msgid "Federation Statistics" msgstr "" -#: mod/profiles.php:710 -msgid "" -"This is your public profile.
It may " -"be visible to anybody using the internet." +#: mod/admin.php:187 mod/admin.php:198 mod/admin.php:2016 +msgid "Logs" msgstr "" -#: mod/profiles.php:711 -msgid "Your Full Name:" +#: mod/admin.php:188 mod/admin.php:2084 +msgid "View Logs" msgstr "" -#: mod/profiles.php:712 -msgid "Title/Description:" +#: mod/admin.php:189 +msgid "probe address" msgstr "" -#: mod/profiles.php:715 -msgid "Street Address:" +#: mod/admin.php:190 +msgid "check webfinger" msgstr "" -#: mod/profiles.php:716 -msgid "Locality/City:" +#: mod/admin.php:197 +msgid "Plugin Features" msgstr "" -#: mod/profiles.php:717 -msgid "Region/State:" +#: mod/admin.php:199 +msgid "diagnostics" msgstr "" -#: mod/profiles.php:718 -msgid "Postal/Zip Code:" +#: mod/admin.php:200 +msgid "User registrations waiting for confirmation" msgstr "" -#: mod/profiles.php:719 -msgid "Country:" +#: mod/admin.php:279 +msgid "The blocked domain" msgstr "" -#: mod/profiles.php:723 -msgid "Who: (if applicable)" +#: mod/admin.php:280 mod/admin.php:293 +msgid "The reason why you blocked this domain." msgstr "" -#: mod/profiles.php:723 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +#: mod/admin.php:281 +msgid "Delete domain" msgstr "" -#: mod/profiles.php:724 -msgid "Since [date]:" +#: mod/admin.php:281 +msgid "Check to delete this entry from the blocklist" msgstr "" -#: mod/profiles.php:726 -msgid "Tell us about yourself..." +#: mod/admin.php:287 mod/admin.php:477 mod/admin.php:511 mod/admin.php:586 +#: mod/admin.php:1053 mod/admin.php:1497 mod/admin.php:1615 mod/admin.php:1678 +#: mod/admin.php:1891 mod/admin.php:1941 mod/admin.php:2015 mod/admin.php:2083 +msgid "Administration" msgstr "" -#: mod/profiles.php:727 -msgid "XMPP (Jabber) address:" +#: mod/admin.php:289 +msgid "" +"This page can be used to define a black list of servers from the federated " +"network that are not allowed to interact with your node. For all entered " +"domains you should also give a reason why you have blocked the remote server." msgstr "" -#: mod/profiles.php:727 +#: mod/admin.php:290 msgid "" -"The XMPP address will be propagated to your contacts so that they can follow " -"you." +"The list of blocked servers will be made publically available on the /" +"friendica page so that your users and people investigating communication " +"problems can find the reason easily." msgstr "" -#: mod/profiles.php:728 -msgid "Homepage URL:" +#: mod/admin.php:291 +msgid "Add new entry to block list" msgstr "" -#: mod/profiles.php:731 -msgid "Religious Views:" +#: mod/admin.php:292 +msgid "Server Domain" msgstr "" -#: mod/profiles.php:732 -msgid "Public Keywords:" +#: mod/admin.php:292 +msgid "" +"The domain of the new server to add to the block list. Do not include the " +"protocol." msgstr "" -#: mod/profiles.php:732 -msgid "(Used for suggesting potential friends, can be seen by others)" +#: mod/admin.php:293 +msgid "Block reason" msgstr "" -#: mod/profiles.php:733 -msgid "Private Keywords:" +#: mod/admin.php:294 +msgid "Add Entry" msgstr "" -#: mod/profiles.php:733 -msgid "(Used for searching profiles, never shown to others)" +#: mod/admin.php:295 +msgid "Save changes to the blocklist" msgstr "" -#: mod/profiles.php:736 -msgid "Musical interests" +#: mod/admin.php:296 +msgid "Current Entries in the Blocklist" msgstr "" -#: mod/profiles.php:737 -msgid "Books, literature" +#: mod/admin.php:299 +msgid "Delete entry from blocklist" msgstr "" -#: mod/profiles.php:738 -msgid "Television" +#: mod/admin.php:302 +msgid "Delete entry from blocklist?" msgstr "" -#: mod/profiles.php:739 -msgid "Film/dance/culture/entertainment" +#: mod/admin.php:327 +msgid "Server added to blocklist." msgstr "" -#: mod/profiles.php:740 -msgid "Hobbies/Interests" +#: mod/admin.php:343 +msgid "Site blocklist updated." msgstr "" -#: mod/profiles.php:741 -msgid "Love/romance" +#: mod/admin.php:408 +msgid "unknown" msgstr "" -#: mod/profiles.php:742 -msgid "Work/employment" +#: mod/admin.php:471 +msgid "" +"This page offers you some numbers to the known part of the federated social " +"network your Friendica node is part of. These numbers are not complete but " +"only reflect the part of the network your node is aware of." msgstr "" -#: mod/profiles.php:743 -msgid "School/education" +#: mod/admin.php:472 +msgid "" +"The Auto Discovered Contact Directory feature is not enabled, it " +"will improve the data displayed here." msgstr "" -#: mod/profiles.php:744 -msgid "Contact information and Social Networks" +#: mod/admin.php:484 +#, php-format +msgid "Currently this node is aware of %d nodes from the following platforms:" msgstr "" -#: mod/profiles.php:788 -msgid "Edit/Manage Profiles" +#: mod/admin.php:514 +msgid "ID" msgstr "" -#: mod/profperm.php:26 mod/profperm.php:57 -msgid "Invalid profile identifier." +#: mod/admin.php:515 +msgid "Recipient Name" msgstr "" -#: mod/profperm.php:103 -msgid "Profile Visibility Editor" +#: mod/admin.php:516 +msgid "Recipient Profile" msgstr "" -#: mod/profperm.php:116 -msgid "Visible To" +#: mod/admin.php:518 +msgid "Created" msgstr "" -#: mod/profperm.php:132 -msgid "All Contacts (with secure profile access)" +#: mod/admin.php:519 +msgid "Last Tried" msgstr "" -#: mod/register.php:93 +#: mod/admin.php:520 msgid "" -"Registration successful. Please check your email for further instructions." +"This page lists the content of the queue for outgoing postings. These are " +"postings the initial delivery failed for. They will be resend later and " +"eventually deleted if the delivery fails permanently." msgstr "" -#: mod/register.php:98 +#: mod/admin.php:545 #, php-format msgid "" -"Failed to send email message. Here your accout details:
login: %s
" -"password: %s

You can change your password after login." +"Your DB still runs with MyISAM tables. You should change the engine type to " +"InnoDB. As Friendica will use InnoDB only features in the future, you should " +"change this! See here for a guide that may be helpful " +"converting the table engines. You may also use the command php include/" +"dbstructure.php toinnodb of your Friendica installation for an " +"automatic conversion.
" msgstr "" -#: mod/register.php:105 -msgid "Registration successful." +#: mod/admin.php:550 +msgid "" +"You are using a MySQL version which does not support all features that " +"Friendica uses. You should consider switching to MariaDB." +msgstr "" + +#: mod/admin.php:554 mod/admin.php:1447 +msgid "Normal Account" msgstr "" -#: mod/register.php:111 -msgid "Your registration can not be processed." +#: mod/admin.php:555 mod/admin.php:1448 +msgid "Soapbox Account" msgstr "" -#: mod/register.php:160 -msgid "Your registration is pending approval by the site owner." +#: mod/admin.php:556 mod/admin.php:1449 +msgid "Community/Celebrity Account" msgstr "" -#: mod/register.php:198 mod/uimport.php:51 -msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." +#: mod/admin.php:557 mod/admin.php:1450 +msgid "Automatic Friend Account" msgstr "" -#: mod/register.php:226 -msgid "" -"You may (optionally) fill in this form via OpenID by supplying your OpenID " -"and clicking 'Register'." +#: mod/admin.php:558 +msgid "Blog Account" msgstr "" -#: mod/register.php:227 -msgid "" -"If you are not familiar with OpenID, please leave that field blank and fill " -"in the rest of the items." +#: mod/admin.php:559 +msgid "Private Forum" msgstr "" -#: mod/register.php:228 -msgid "Your OpenID (optional): " +#: mod/admin.php:581 +msgid "Message queues" msgstr "" -#: mod/register.php:242 -msgid "Include your profile in member directory?" +#: mod/admin.php:587 +msgid "Summary" msgstr "" -#: mod/register.php:267 -msgid "Note for the admin" +#: mod/admin.php:589 +msgid "Registered users" msgstr "" -#: mod/register.php:267 -msgid "Leave a message for the admin, why you want to join this node" +#: mod/admin.php:591 +msgid "Pending registrations" msgstr "" -#: mod/register.php:268 -msgid "Membership on this site is by invitation only." +#: mod/admin.php:592 +msgid "Version" msgstr "" -#: mod/register.php:269 -msgid "Your invitation ID: " +#: mod/admin.php:597 +msgid "Active plugins" msgstr "" -#: mod/register.php:280 -msgid "Your Full Name (e.g. Joe Smith, real or real-looking): " +#: mod/admin.php:622 +msgid "Can not parse base url. Must have at least ://" msgstr "" -#: mod/register.php:281 -msgid "Your Email Address: " +#: mod/admin.php:914 +msgid "Site settings updated." msgstr "" -#: mod/register.php:283 mod/settings.php:1278 -msgid "New Password:" +#: mod/admin.php:971 +msgid "No community page" msgstr "" -#: mod/register.php:283 -msgid "Leave empty for an auto generated password." +#: mod/admin.php:972 +msgid "Public postings from users of this site" msgstr "" -#: mod/register.php:284 mod/settings.php:1279 -msgid "Confirm:" +#: mod/admin.php:973 +msgid "Global community page" msgstr "" -#: mod/register.php:285 -msgid "" -"Choose a profile nickname. This must begin with a text character. Your " -"profile address on this site will then be 'nickname@$sitename'." +#: mod/admin.php:979 +msgid "At post arrival" msgstr "" -#: mod/register.php:286 -msgid "Choose a nickname: " +#: mod/admin.php:989 +msgid "Users, Global Contacts" msgstr "" -#: mod/register.php:295 mod/uimport.php:66 -msgid "Import" +#: mod/admin.php:990 +msgid "Users, Global Contacts/fallback" msgstr "" -#: mod/register.php:296 -msgid "Import your profile to this friendica instance" +#: mod/admin.php:994 +msgid "One month" msgstr "" -#: mod/regmod.php:58 -msgid "Account approved." +#: mod/admin.php:995 +msgid "Three months" msgstr "" -#: mod/regmod.php:95 -#, php-format -msgid "Registration revoked for %s" +#: mod/admin.php:996 +msgid "Half a year" msgstr "" -#: mod/regmod.php:107 -msgid "Please login." +#: mod/admin.php:997 +msgid "One year" msgstr "" -#: mod/removeme.php:52 mod/removeme.php:55 -msgid "Remove My Account" +#: mod/admin.php:1002 +msgid "Multi user instance" msgstr "" -#: mod/removeme.php:53 -msgid "" -"This will completely remove your account. Once this has been done it is not " -"recoverable." +#: mod/admin.php:1025 +msgid "Closed" msgstr "" -#: mod/removeme.php:54 -msgid "Please enter your password for verification:" +#: mod/admin.php:1026 +msgid "Requires approval" msgstr "" -#: mod/repair_ostatus.php:14 -msgid "Resubscribing to OStatus contacts" +#: mod/admin.php:1027 +msgid "Open" msgstr "" -#: mod/repair_ostatus.php:30 -msgid "Error" +#: mod/admin.php:1031 +msgid "No SSL policy, links will track page SSL state" msgstr "" -#: mod/search.php:100 -msgid "Only logged in users are permitted to perform a search." +#: mod/admin.php:1032 +msgid "Force all links to use SSL" msgstr "" -#: mod/search.php:124 -msgid "Too Many Requests" +#: mod/admin.php:1033 +msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "" -#: mod/search.php:125 -msgid "Only one search per minute is permitted for not logged in users." +#: mod/admin.php:1057 +msgid "File upload" msgstr "" -#: mod/search.php:230 -#, php-format -msgid "Items tagged with: %s" +#: mod/admin.php:1058 +msgid "Policies" msgstr "" -#: mod/settings.php:60 -msgid "Display" +#: mod/admin.php:1060 +msgid "Auto Discovered Contact Directory" msgstr "" -#: mod/settings.php:67 mod/settings.php:890 -msgid "Social Networks" +#: mod/admin.php:1061 +msgid "Performance" msgstr "" -#: mod/settings.php:88 -msgid "Connected apps" +#: mod/admin.php:1062 +msgid "Worker" msgstr "" -#: mod/settings.php:95 mod/uexport.php:45 -msgid "Export personal data" +#: mod/admin.php:1063 +msgid "" +"Relocate - WARNING: advanced function. Could make this server unreachable." msgstr "" -#: mod/settings.php:102 -msgid "Remove account" +#: mod/admin.php:1066 +msgid "Site name" msgstr "" -#: mod/settings.php:157 -msgid "Missing some important data!" +#: mod/admin.php:1067 +msgid "Host name" msgstr "" -#: mod/settings.php:271 -msgid "Failed to connect with email account using the settings provided." +#: mod/admin.php:1068 +msgid "Sender Email" msgstr "" -#: mod/settings.php:276 -msgid "Email settings updated." +#: mod/admin.php:1068 +msgid "" +"The email address your server shall use to send notification emails from." msgstr "" -#: mod/settings.php:291 -msgid "Features updated" +#: mod/admin.php:1069 +msgid "Banner/Logo" msgstr "" -#: mod/settings.php:361 -msgid "Relocate message has been send to your contacts" +#: mod/admin.php:1070 +msgid "Shortcut icon" msgstr "" -#: mod/settings.php:380 -msgid "Empty passwords are not allowed. Password unchanged." +#: mod/admin.php:1070 +msgid "Link to an icon that will be used for browsers." msgstr "" -#: mod/settings.php:388 -msgid "Wrong password." +#: mod/admin.php:1071 +msgid "Touch icon" msgstr "" -#: mod/settings.php:399 -msgid "Password changed." +#: mod/admin.php:1071 +msgid "Link to an icon that will be used for tablets and mobiles." msgstr "" -#: mod/settings.php:401 -msgid "Password update failed. Please try again." +#: mod/admin.php:1072 +msgid "Additional Info" msgstr "" -#: mod/settings.php:481 -msgid " Please use a shorter name." +#: mod/admin.php:1072 +#, php-format +msgid "" +"For public servers: you can add additional information here that will be " +"listed at %s/siteinfo." msgstr "" -#: mod/settings.php:483 -msgid " Name too short." +#: mod/admin.php:1073 +msgid "System language" msgstr "" -#: mod/settings.php:492 -msgid "Wrong Password" +#: mod/admin.php:1074 +msgid "System theme" msgstr "" -#: mod/settings.php:497 -msgid " Not valid email." +#: mod/admin.php:1074 +msgid "" +"Default system theme - may be over-ridden by user profiles - change theme settings" msgstr "" -#: mod/settings.php:503 -msgid " Cannot change to that email." +#: mod/admin.php:1075 +msgid "Mobile system theme" msgstr "" -#: mod/settings.php:559 -msgid "Private forum has no privacy permissions. Using default privacy group." +#: mod/admin.php:1075 +msgid "Theme for mobile devices" msgstr "" -#: mod/settings.php:563 -msgid "Private forum has no privacy permissions and no default privacy group." +#: mod/admin.php:1076 +msgid "SSL link policy" msgstr "" -#: mod/settings.php:603 -msgid "Settings updated." +#: mod/admin.php:1076 +msgid "Determines whether generated links should be forced to use SSL" msgstr "" -#: mod/settings.php:680 mod/settings.php:706 mod/settings.php:742 -msgid "Add application" +#: mod/admin.php:1077 +msgid "Force SSL" msgstr "" -#: mod/settings.php:684 mod/settings.php:710 -msgid "Consumer Key" +#: mod/admin.php:1077 +msgid "" +"Force all Non-SSL requests to SSL - Attention: on some systems it could lead " +"to endless loops." msgstr "" -#: mod/settings.php:685 mod/settings.php:711 -msgid "Consumer Secret" +#: mod/admin.php:1078 +msgid "Hide help entry from navigation menu" msgstr "" -#: mod/settings.php:686 mod/settings.php:712 -msgid "Redirect" +#: mod/admin.php:1078 +msgid "" +"Hides the menu entry for the Help pages from the navigation menu. You can " +"still access it calling /help directly." msgstr "" -#: mod/settings.php:687 mod/settings.php:713 -msgid "Icon url" +#: mod/admin.php:1079 +msgid "Single user instance" msgstr "" -#: mod/settings.php:698 -msgid "You can't edit this application." +#: mod/admin.php:1079 +msgid "Make this instance multi-user or single-user for the named user" msgstr "" -#: mod/settings.php:741 -msgid "Connected Apps" +#: mod/admin.php:1080 +msgid "Maximum image size" msgstr "" -#: mod/settings.php:745 -msgid "Client key starts with" +#: mod/admin.php:1080 +msgid "" +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." msgstr "" -#: mod/settings.php:746 -msgid "No name" +#: mod/admin.php:1081 +msgid "Maximum image length" msgstr "" -#: mod/settings.php:747 -msgid "Remove authorization" +#: mod/admin.php:1081 +msgid "" +"Maximum length in pixels of the longest side of uploaded images. Default is " +"-1, which means no limits." msgstr "" -#: mod/settings.php:759 -msgid "No Plugin settings configured" +#: mod/admin.php:1082 +msgid "JPEG image quality" msgstr "" -#: mod/settings.php:768 -msgid "Plugin Settings" +#: mod/admin.php:1082 +msgid "" +"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " +"100, which is full quality." msgstr "" -#: mod/settings.php:790 -msgid "Additional Features" +#: mod/admin.php:1084 +msgid "Register policy" msgstr "" -#: mod/settings.php:800 mod/settings.php:804 -msgid "General Social Media Settings" +#: mod/admin.php:1085 +msgid "Maximum Daily Registrations" msgstr "" -#: mod/settings.php:810 -msgid "Disable intelligent shortening" +#: mod/admin.php:1085 +msgid "" +"If registration is permitted above, this sets the maximum number of new user " +"registrations to accept per day. If register is set to closed, this setting " +"has no effect." msgstr "" -#: mod/settings.php:812 -msgid "" -"Normally the system tries to find the best link to add to shortened posts. " -"If this option is enabled then every shortened post will always point to the " -"original friendica post." +#: mod/admin.php:1086 +msgid "Register text" msgstr "" -#: mod/settings.php:818 -msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" +#: mod/admin.php:1086 +msgid "Will be displayed prominently on the registration page." msgstr "" -#: mod/settings.php:820 -msgid "" -"If you receive a message from an unknown OStatus user, this option decides " -"what to do. If it is checked, a new contact will be created for every " -"unknown user." +#: mod/admin.php:1087 +msgid "Accounts abandoned after x days" msgstr "" -#: mod/settings.php:826 -msgid "Default group for OStatus contacts" +#: mod/admin.php:1087 +msgid "" +"Will not waste system resources polling external sites for abandonded " +"accounts. Enter 0 for no time limit." msgstr "" -#: mod/settings.php:834 -msgid "Your legacy GNU Social account" +#: mod/admin.php:1088 +msgid "Allowed friend domains" msgstr "" -#: mod/settings.php:836 +#: mod/admin.php:1088 msgid "" -"If you enter your old GNU Social/Statusnet account name here (in the format " -"user@domain.tld), your contacts will be added automatically. The field will " -"be emptied when done." +"Comma separated list of domains which are allowed to establish friendships " +"with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: mod/settings.php:839 -msgid "Repair OStatus subscriptions" +#: mod/admin.php:1089 +msgid "Allowed email domains" msgstr "" -#: mod/settings.php:848 mod/settings.php:849 -#, php-format -msgid "Built-in support for %s connectivity is %s" +#: mod/admin.php:1089 +msgid "" +"Comma separated list of domains which are allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains" msgstr "" -#: mod/settings.php:848 mod/settings.php:849 -msgid "enabled" +#: mod/admin.php:1090 +msgid "Block public" msgstr "" -#: mod/settings.php:848 mod/settings.php:849 -msgid "disabled" +#: mod/admin.php:1090 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently logged in." msgstr "" -#: mod/settings.php:849 -msgid "GNU Social (OStatus)" +#: mod/admin.php:1091 +msgid "Force publish" msgstr "" -#: mod/settings.php:883 -msgid "Email access is disabled on this site." +#: mod/admin.php:1091 +msgid "" +"Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: mod/settings.php:895 -msgid "Email/Mailbox Setup" +#: mod/admin.php:1092 +msgid "Global directory URL" msgstr "" -#: mod/settings.php:896 +#: mod/admin.php:1092 msgid "" -"If you wish to communicate with email contacts using this service " -"(optional), please specify how to connect to your mailbox." +"URL to the global directory. If this is not set, the global directory is " +"completely unavailable to the application." msgstr "" -#: mod/settings.php:897 -msgid "Last successful email check:" +#: mod/admin.php:1093 +msgid "Allow threaded items" msgstr "" -#: mod/settings.php:899 -msgid "IMAP server name:" +#: mod/admin.php:1093 +msgid "Allow infinite level threading for items on this site." msgstr "" -#: mod/settings.php:900 -msgid "IMAP port:" +#: mod/admin.php:1094 +msgid "Private posts by default for new users" msgstr "" -#: mod/settings.php:901 -msgid "Security:" +#: mod/admin.php:1094 +msgid "" +"Set default post permissions for all new members to the default privacy " +"group rather than public." msgstr "" -#: mod/settings.php:901 mod/settings.php:906 -msgid "None" +#: mod/admin.php:1095 +msgid "Don't include post content in email notifications" msgstr "" -#: mod/settings.php:902 -msgid "Email login name:" +#: mod/admin.php:1095 +msgid "" +"Don't include the content of a post/comment/private message/etc. in the " +"email notifications that are sent out from this site, as a privacy measure." msgstr "" -#: mod/settings.php:903 -msgid "Email password:" +#: mod/admin.php:1096 +msgid "Disallow public access to addons listed in the apps menu." msgstr "" -#: mod/settings.php:904 -msgid "Reply-to address:" +#: mod/admin.php:1096 +msgid "" +"Checking this box will restrict addons listed in the apps menu to members " +"only." msgstr "" -#: mod/settings.php:905 -msgid "Send public posts to all email contacts:" +#: mod/admin.php:1097 +msgid "Don't embed private images in posts" msgstr "" -#: mod/settings.php:906 -msgid "Action after import:" +#: mod/admin.php:1097 +msgid "" +"Don't replace locally-hosted private photos in posts with an embedded copy " +"of the image. This means that contacts who receive posts containing private " +"photos will have to authenticate and load each image, which may take a while." msgstr "" -#: mod/settings.php:906 -msgid "Move to folder" +#: mod/admin.php:1098 +msgid "Allow Users to set remote_self" msgstr "" -#: mod/settings.php:907 -msgid "Move to folder:" +#: mod/admin.php:1098 +msgid "" +"With checking this, every user is allowed to mark every contact as a " +"remote_self in the repair contact dialog. Setting this flag on a contact " +"causes mirroring every posting of that contact in the users stream." msgstr "" -#: mod/settings.php:1003 -msgid "Display Settings" +#: mod/admin.php:1099 +msgid "Block multiple registrations" msgstr "" -#: mod/settings.php:1009 mod/settings.php:1032 -msgid "Display Theme:" +#: mod/admin.php:1099 +msgid "Disallow users to register additional accounts for use as pages." msgstr "" -#: mod/settings.php:1010 -msgid "Mobile Theme:" +#: mod/admin.php:1100 +msgid "OpenID support" msgstr "" -#: mod/settings.php:1011 -msgid "Suppress warning of insecure networks" +#: mod/admin.php:1100 +msgid "OpenID support for registration and logins." msgstr "" -#: mod/settings.php:1011 -msgid "" -"Should the system suppress the warning that the current group contains " -"members of networks that can't receive non public postings." +#: mod/admin.php:1101 +msgid "Fullname check" msgstr "" -#: mod/settings.php:1012 -msgid "Update browser every xx seconds" +#: mod/admin.php:1101 +msgid "" +"Force users to register with a space between firstname and lastname in Full " +"name, as an antispam measure" msgstr "" -#: mod/settings.php:1012 -msgid "Minimum of 10 seconds. Enter -1 to disable it." +#: mod/admin.php:1102 +msgid "Community Page Style" msgstr "" -#: mod/settings.php:1013 -msgid "Number of items to display per page:" +#: mod/admin.php:1102 +msgid "" +"Type of community page to show. 'Global community' shows every public " +"posting from an open distributed network that arrived on this server." msgstr "" -#: mod/settings.php:1013 mod/settings.php:1014 -msgid "Maximum of 100 items" +#: mod/admin.php:1103 +msgid "Posts per user on community page" msgstr "" -#: mod/settings.php:1014 -msgid "Number of items to display per page when viewed from mobile device:" +#: mod/admin.php:1103 +msgid "" +"The maximum number of posts per user on the community page. (Not valid for " +"'Global Community')" msgstr "" -#: mod/settings.php:1015 -msgid "Don't show emoticons" +#: mod/admin.php:1104 +msgid "Enable OStatus support" msgstr "" -#: mod/settings.php:1016 -msgid "Calendar" +#: mod/admin.php:1104 +msgid "" +"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " +"communications in OStatus are public, so privacy warnings will be " +"occasionally displayed." msgstr "" -#: mod/settings.php:1017 -msgid "Beginning of week:" +#: mod/admin.php:1105 +msgid "OStatus conversation completion interval" msgstr "" -#: mod/settings.php:1018 -msgid "Don't show notices" +#: mod/admin.php:1105 +msgid "" +"How often shall the poller check for new entries in OStatus conversations? " +"This can be a very ressource task." msgstr "" -#: mod/settings.php:1019 -msgid "Infinite scroll" +#: mod/admin.php:1106 +msgid "Only import OStatus threads from our contacts" msgstr "" -#: mod/settings.php:1020 -msgid "Automatic updates only at the top of the network page" +#: mod/admin.php:1106 +msgid "" +"Normally we import every content from our OStatus contacts. With this option " +"we only store threads that are started by a contact that is known on our " +"system." msgstr "" -#: mod/settings.php:1021 -msgid "Bandwith Saver Mode" +#: mod/admin.php:1107 +msgid "OStatus support can only be enabled if threading is enabled." msgstr "" -#: mod/settings.php:1021 +#: mod/admin.php:1109 msgid "" -"When enabled, embedded content is not displayed on automatic updates, they " -"only show on page reload." +"Diaspora support can't be enabled because Friendica was installed into a sub " +"directory." msgstr "" -#: mod/settings.php:1023 -msgid "General Theme Settings" +#: mod/admin.php:1110 +msgid "Enable Diaspora support" msgstr "" -#: mod/settings.php:1024 -msgid "Custom Theme Settings" +#: mod/admin.php:1110 +msgid "Provide built-in Diaspora network compatibility." msgstr "" -#: mod/settings.php:1025 -msgid "Content Settings" +#: mod/admin.php:1111 +msgid "Only allow Friendica contacts" msgstr "" -#: mod/settings.php:1026 view/theme/duepuntozero/config.php:63 -#: view/theme/frio/config.php:66 view/theme/quattro/config.php:69 -#: view/theme/vier/config.php:114 -msgid "Theme settings" +#: mod/admin.php:1111 +msgid "" +"All contacts must use Friendica protocols. All other built-in communication " +"protocols disabled." msgstr "" -#: mod/settings.php:1110 -msgid "Account Types" +#: mod/admin.php:1112 +msgid "Verify SSL" msgstr "" -#: mod/settings.php:1111 -msgid "Personal Page Subtypes" +#: mod/admin.php:1112 +msgid "" +"If you wish, you can turn on strict certificate checking. This will mean you " +"cannot connect (at all) to self-signed SSL sites." msgstr "" -#: mod/settings.php:1112 -msgid "Community Forum Subtypes" +#: mod/admin.php:1113 +msgid "Proxy user" msgstr "" -#: mod/settings.php:1119 -msgid "Personal Page" +#: mod/admin.php:1114 +msgid "Proxy URL" msgstr "" -#: mod/settings.php:1120 -msgid "This account is a regular personal profile" +#: mod/admin.php:1115 +msgid "Network timeout" msgstr "" -#: mod/settings.php:1123 -msgid "Organisation Page" +#: mod/admin.php:1115 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: mod/settings.php:1124 -msgid "This account is a profile for an organisation" +#: mod/admin.php:1116 +msgid "Maximum Load Average" msgstr "" -#: mod/settings.php:1127 -msgid "News Page" +#: mod/admin.php:1116 +msgid "" +"Maximum system load before delivery and poll processes are deferred - " +"default 50." msgstr "" -#: mod/settings.php:1128 -msgid "This account is a news account/reflector" +#: mod/admin.php:1117 +msgid "Maximum Load Average (Frontend)" msgstr "" -#: mod/settings.php:1131 -msgid "Community Forum" +#: mod/admin.php:1117 +msgid "Maximum system load before the frontend quits service - default 50." msgstr "" -#: mod/settings.php:1132 +#: mod/admin.php:1118 +msgid "Minimal Memory" +msgstr "" + +#: mod/admin.php:1118 msgid "" -"This account is a community forum where people can discuss with each other" +"Minimal free memory in MB for the poller. Needs access to /proc/meminfo - " +"default 0 (deactivated)." msgstr "" -#: mod/settings.php:1135 -msgid "Normal Account Page" +#: mod/admin.php:1119 +msgid "Maximum table size for optimization" msgstr "" -#: mod/settings.php:1136 -msgid "This account is a normal personal profile" +#: mod/admin.php:1119 +msgid "" +"Maximum table size (in MB) for the automatic optimization - default 100 MB. " +"Enter -1 to disable it." msgstr "" -#: mod/settings.php:1139 -msgid "Soapbox Page" +#: mod/admin.php:1120 +msgid "Minimum level of fragmentation" msgstr "" -#: mod/settings.php:1140 -msgid "Automatically approve all connection/friend requests as read-only fans" +#: mod/admin.php:1120 +msgid "" +"Minimum fragmenation level to start the automatic optimization - default " +"value is 30%." msgstr "" -#: mod/settings.php:1143 -msgid "Public Forum" +#: mod/admin.php:1122 +msgid "Periodical check of global contacts" msgstr "" -#: mod/settings.php:1144 -msgid "Automatically approve all contact requests" +#: mod/admin.php:1122 +msgid "" +"If enabled, the global contacts are checked periodically for missing or " +"outdated data and the vitality of the contacts and servers." msgstr "" -#: mod/settings.php:1147 -msgid "Automatic Friend Page" +#: mod/admin.php:1123 +msgid "Days between requery" msgstr "" -#: mod/settings.php:1148 -msgid "Automatically approve all connection/friend requests as friends" +#: mod/admin.php:1123 +msgid "Number of days after which a server is requeried for his contacts." msgstr "" -#: mod/settings.php:1151 -msgid "Private Forum [Experimental]" +#: mod/admin.php:1124 +msgid "Discover contacts from other servers" msgstr "" -#: mod/settings.php:1152 -msgid "Private forum - approved members only" +#: mod/admin.php:1124 +msgid "" +"Periodically query other servers for contacts. You can choose between " +"'users': the users on the remote system, 'Global Contacts': active contacts " +"that are known on the system. The fallback is meant for Redmatrix servers " +"and older friendica servers, where global contacts weren't available. The " +"fallback increases the server load, so the recommened setting is 'Users, " +"Global Contacts'." msgstr "" -#: mod/settings.php:1163 -msgid "OpenID:" +#: mod/admin.php:1125 +msgid "Timeframe for fetching global contacts" msgstr "" -#: mod/settings.php:1163 -msgid "(Optional) Allow this OpenID to login to this account." +#: mod/admin.php:1125 +msgid "" +"When the discovery is activated, this value defines the timeframe for the " +"activity of the global contacts that are fetched from other servers." msgstr "" -#: mod/settings.php:1171 -msgid "Publish your default profile in your local site directory?" +#: mod/admin.php:1126 +msgid "Search the local directory" msgstr "" -#: mod/settings.php:1177 -msgid "Publish your default profile in the global social directory?" +#: mod/admin.php:1126 +msgid "" +"Search the local directory instead of the global directory. When searching " +"locally, every search will be executed on the global directory in the " +"background. This improves the search results when the search is repeated." msgstr "" -#: mod/settings.php:1184 -msgid "Hide your contact/friend list from viewers of your default profile?" +#: mod/admin.php:1128 +msgid "Publish server information" msgstr "" -#: mod/settings.php:1188 +#: mod/admin.php:1128 msgid "" -"If enabled, posting public messages to Diaspora and other networks isn't " -"possible." +"If enabled, general server and usage data will be published. The data " +"contains the name and version of the server, number of users with public " +"profiles, number of posts and the activated protocols and connectors. See the-federation.info for details." msgstr "" -#: mod/settings.php:1193 -msgid "Allow friends to post to your profile page?" +#: mod/admin.php:1130 +msgid "Suppress Tags" msgstr "" -#: mod/settings.php:1198 -msgid "Allow friends to tag your posts?" +#: mod/admin.php:1130 +msgid "Suppress showing a list of hashtags at the end of the posting." msgstr "" -#: mod/settings.php:1203 -msgid "Allow us to suggest you as a potential friend to new members?" +#: mod/admin.php:1131 +msgid "Path to item cache" msgstr "" -#: mod/settings.php:1208 -msgid "Permit unknown people to send you private mail?" +#: mod/admin.php:1131 +msgid "The item caches buffers generated bbcode and external images." msgstr "" -#: mod/settings.php:1216 -msgid "Profile is not published." +#: mod/admin.php:1132 +msgid "Cache duration in seconds" msgstr "" -#: mod/settings.php:1224 -#, php-format -msgid "Your Identity Address is '%s' or '%s'." +#: mod/admin.php:1132 +msgid "" +"How long should the cache files be hold? Default value is 86400 seconds (One " +"day). To disable the item cache, set the value to -1." msgstr "" -#: mod/settings.php:1231 -msgid "Automatically expire posts after this many days:" +#: mod/admin.php:1133 +msgid "Maximum numbers of comments per post" msgstr "" -#: mod/settings.php:1231 -msgid "If empty, posts will not expire. Expired posts will be deleted" +#: mod/admin.php:1133 +msgid "How much comments should be shown for each post? Default value is 100." msgstr "" -#: mod/settings.php:1232 -msgid "Advanced expiration settings" +#: mod/admin.php:1134 +msgid "Temp path" msgstr "" -#: mod/settings.php:1233 -msgid "Advanced Expiration" +#: mod/admin.php:1134 +msgid "" +"If you have a restricted system where the webserver can't access the system " +"temp path, enter another path here." msgstr "" -#: mod/settings.php:1234 -msgid "Expire posts:" +#: mod/admin.php:1135 +msgid "Base path to installation" msgstr "" -#: mod/settings.php:1235 -msgid "Expire personal notes:" +#: mod/admin.php:1135 +msgid "" +"If the system cannot detect the correct path to your installation, enter the " +"correct path here. This setting should only be set if you are using a " +"restricted system and symbolic links to your webroot." msgstr "" -#: mod/settings.php:1236 -msgid "Expire starred posts:" +#: mod/admin.php:1136 +msgid "Disable picture proxy" msgstr "" -#: mod/settings.php:1237 -msgid "Expire photos:" +#: mod/admin.php:1136 +msgid "" +"The picture proxy increases performance and privacy. It shouldn't be used on " +"systems with very low bandwith." msgstr "" -#: mod/settings.php:1238 -msgid "Only expire posts by others:" +#: mod/admin.php:1137 +msgid "Only search in tags" msgstr "" -#: mod/settings.php:1269 -msgid "Account Settings" +#: mod/admin.php:1137 +msgid "On large systems the text search can slow down the system extremely." msgstr "" -#: mod/settings.php:1277 -msgid "Password Settings" +#: mod/admin.php:1139 +msgid "New base url" msgstr "" -#: mod/settings.php:1279 -msgid "Leave password fields blank unless changing" +#: mod/admin.php:1139 +msgid "" +"Change base url for this server. Sends relocate message to all DFRN contacts " +"of all users." msgstr "" -#: mod/settings.php:1280 -msgid "Current Password:" +#: mod/admin.php:1141 +msgid "RINO Encryption" msgstr "" -#: mod/settings.php:1280 mod/settings.php:1281 -msgid "Your current password to confirm the changes" +#: mod/admin.php:1141 +msgid "Encryption layer between nodes." msgstr "" -#: mod/settings.php:1281 -msgid "Password:" +#: mod/admin.php:1143 +msgid "Maximum number of parallel workers" msgstr "" -#: mod/settings.php:1285 -msgid "Basic Settings" +#: mod/admin.php:1143 +msgid "" +"On shared hosters set this to 2. On larger systems, values of 10 are great. " +"Default value is 4." msgstr "" -#: mod/settings.php:1287 -msgid "Email Address:" +#: mod/admin.php:1144 +msgid "Don't use 'proc_open' with the worker" msgstr "" -#: mod/settings.php:1288 -msgid "Your Timezone:" +#: mod/admin.php:1144 +msgid "" +"Enable this if your system doesn't allow the use of 'proc_open'. This can " +"happen on shared hosters. If this is enabled you should increase the " +"frequency of poller calls in your crontab." msgstr "" -#: mod/settings.php:1289 -msgid "Your Language:" +#: mod/admin.php:1145 +msgid "Enable fastlane" msgstr "" -#: mod/settings.php:1289 +#: mod/admin.php:1145 msgid "" -"Set the language we use to show you friendica interface and to send you " -"emails" +"When enabed, the fastlane mechanism starts an additional worker if processes " +"with higher priority are blocked by processes of lower priority." msgstr "" -#: mod/settings.php:1290 -msgid "Default Post Location:" +#: mod/admin.php:1146 +msgid "Enable frontend worker" msgstr "" -#: mod/settings.php:1291 -msgid "Use Browser Location:" +#: mod/admin.php:1146 +msgid "" +"When enabled the Worker process is triggered when backend access is " +"performed (e.g. messages being delivered). On smaller sites you might want " +"to call yourdomain.tld/worker on a regular basis via an external cron job. " +"You should only enable this option if you cannot utilize cron/scheduled jobs " +"on your server. The worker background process needs to be activated for this." msgstr "" -#: mod/settings.php:1294 -msgid "Security and Privacy Settings" +#: mod/admin.php:1176 +msgid "Update has been marked successful" msgstr "" -#: mod/settings.php:1296 -msgid "Maximum Friend Requests/Day:" +#: mod/admin.php:1184 +#, php-format +msgid "Database structure update %s was successfully applied." msgstr "" -#: mod/settings.php:1296 mod/settings.php:1326 -msgid "(to prevent spam abuse)" +#: mod/admin.php:1187 +#, php-format +msgid "Executing of database structure update %s failed with error: %s" msgstr "" -#: mod/settings.php:1297 -msgid "Default Post Permissions" +#: mod/admin.php:1201 +#, php-format +msgid "Executing %s failed with error: %s" msgstr "" -#: mod/settings.php:1298 -msgid "(click to open/close)" +#: mod/admin.php:1204 +#, php-format +msgid "Update %s was successfully applied." msgstr "" -#: mod/settings.php:1309 -msgid "Default Private Post" +#: mod/admin.php:1207 +#, php-format +msgid "Update %s did not return a status. Unknown if it succeeded." msgstr "" -#: mod/settings.php:1310 -msgid "Default Public Post" +#: mod/admin.php:1210 +#, php-format +msgid "There was no additional update function %s that needed to be called." msgstr "" -#: mod/settings.php:1314 -msgid "Default Permissions for New Posts" +#: mod/admin.php:1230 +msgid "No failed updates." msgstr "" -#: mod/settings.php:1326 -msgid "Maximum private messages per day from unknown people:" +#: mod/admin.php:1231 +msgid "Check database structure" msgstr "" -#: mod/settings.php:1329 -msgid "Notification Settings" +#: mod/admin.php:1236 +msgid "Failed Updates" msgstr "" -#: mod/settings.php:1330 -msgid "By default post a status message when:" +#: mod/admin.php:1237 +msgid "" +"This does not include updates prior to 1139, which did not return a status." msgstr "" -#: mod/settings.php:1331 -msgid "accepting a friend request" +#: mod/admin.php:1238 +msgid "Mark success (if update was manually applied)" msgstr "" -#: mod/settings.php:1332 -msgid "joining a forum/community" +#: mod/admin.php:1239 +msgid "Attempt to execute this update step automatically" msgstr "" -#: mod/settings.php:1333 -msgid "making an interesting profile change" +#: mod/admin.php:1273 +#, php-format +msgid "" +"\n" +"\t\t\tDear %1$s,\n" +"\t\t\t\tthe administrator of %2$s has set up an account for you." +msgstr "" + +#: mod/admin.php:1276 +#, php-format +msgid "" +"\n" +"\t\t\tThe login details are as follows:\n" +"\n" +"\t\t\tSite Location:\t%1$s\n" +"\t\t\tLogin Name:\t\t%2$s\n" +"\t\t\tPassword:\t\t%3$s\n" +"\n" +"\t\t\tYou may change your password from your account \"Settings\" page after " +"logging\n" +"\t\t\tin.\n" +"\n" +"\t\t\tPlease take a few moments to review the other account settings on that " +"page.\n" +"\n" +"\t\t\tYou may also wish to add some basic information to your default " +"profile\n" +"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" +"\n" +"\t\t\tWe recommend setting your full name, adding a profile photo,\n" +"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - " +"and\n" +"\t\t\tperhaps what country you live in; if you do not wish to be more " +"specific\n" +"\t\t\tthan that.\n" +"\n" +"\t\t\tWe fully respect your right to privacy, and none of these items are " +"necessary.\n" +"\t\t\tIf you are new and do not know anybody here, they may help\n" +"\t\t\tyou to make some new and interesting friends.\n" +"\n" +"\t\t\tThank you and welcome to %4$s." msgstr "" -#: mod/settings.php:1334 -msgid "Send a notification email when:" -msgstr "" +#: mod/admin.php:1320 +#, php-format +msgid "%s user blocked/unblocked" +msgid_plural "%s users blocked/unblocked" +msgstr[0] "" +msgstr[1] "" -#: mod/settings.php:1335 -msgid "You receive an introduction" -msgstr "" +#: mod/admin.php:1327 +#, php-format +msgid "%s user deleted" +msgid_plural "%s users deleted" +msgstr[0] "" +msgstr[1] "" -#: mod/settings.php:1336 -msgid "Your introductions are confirmed" +#: mod/admin.php:1374 +#, php-format +msgid "User '%s' deleted" msgstr "" -#: mod/settings.php:1337 -msgid "Someone writes on your profile wall" +#: mod/admin.php:1382 +#, php-format +msgid "User '%s' unblocked" msgstr "" -#: mod/settings.php:1338 -msgid "Someone writes a followup comment" +#: mod/admin.php:1382 +#, php-format +msgid "User '%s' blocked" msgstr "" -#: mod/settings.php:1339 -msgid "You receive a private message" +#: mod/admin.php:1490 mod/admin.php:1516 +msgid "Register date" msgstr "" -#: mod/settings.php:1340 -msgid "You receive a friend suggestion" +#: mod/admin.php:1490 mod/admin.php:1516 +msgid "Last login" msgstr "" -#: mod/settings.php:1341 -msgid "You are tagged in a post" +#: mod/admin.php:1490 mod/admin.php:1516 +msgid "Last item" msgstr "" -#: mod/settings.php:1342 -msgid "You are poked/prodded/etc. in a post" +#: mod/admin.php:1499 +msgid "Add User" msgstr "" -#: mod/settings.php:1344 -msgid "Activate desktop notifications" +#: mod/admin.php:1500 +msgid "select all" msgstr "" -#: mod/settings.php:1344 -msgid "Show desktop popup on new notifications" +#: mod/admin.php:1501 +msgid "User registrations waiting for confirm" msgstr "" -#: mod/settings.php:1346 -msgid "Text-only notification emails" +#: mod/admin.php:1502 +msgid "User waiting for permanent deletion" msgstr "" -#: mod/settings.php:1348 -msgid "Send text only notification emails, without the html part" +#: mod/admin.php:1503 +msgid "Request date" msgstr "" -#: mod/settings.php:1350 -msgid "Advanced Account/Page Type Settings" +#: mod/admin.php:1504 +msgid "No registrations." msgstr "" -#: mod/settings.php:1351 -msgid "Change the behaviour of this account for special situations" +#: mod/admin.php:1505 +msgid "Note from the user" msgstr "" -#: mod/settings.php:1354 -msgid "Relocate" +#: mod/admin.php:1507 +msgid "Deny" msgstr "" -#: mod/settings.php:1355 -msgid "" -"If you have moved this profile from another server, and some of your " -"contacts don't receive your updates, try pushing this button." +#: mod/admin.php:1511 +msgid "Site admin" msgstr "" -#: mod/settings.php:1356 -msgid "Resend relocate message to contacts" +#: mod/admin.php:1512 +msgid "Account expired" msgstr "" -#: mod/subthread.php:104 -#, php-format -msgid "%1$s is following %2$s's %3$s" +#: mod/admin.php:1515 +msgid "New User" msgstr "" -#: mod/suggest.php:27 -msgid "Do you really want to delete this suggestion?" +#: mod/admin.php:1516 +msgid "Deleted since" msgstr "" -#: mod/suggest.php:71 +#: mod/admin.php:1521 msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." +"Selected users will be deleted!\\n\\nEverything these users had posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: mod/suggest.php:84 mod/suggest.php:104 -msgid "Ignore/Hide" +#: mod/admin.php:1522 +msgid "" +"The user {0} will be deleted!\\n\\nEverything this user has posted on this " +"site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: mod/tagrm.php:43 -msgid "Tag removed" +#: mod/admin.php:1532 +msgid "Name of the new user." msgstr "" -#: mod/tagrm.php:82 -msgid "Remove Item Tag" +#: mod/admin.php:1533 +msgid "Nickname" msgstr "" -#: mod/tagrm.php:84 -msgid "Select a tag to remove: " +#: mod/admin.php:1533 +msgid "Nickname of the new user." msgstr "" -#: mod/uexport.php:37 -msgid "Export account" +#: mod/admin.php:1534 +msgid "Email address of the new user." msgstr "" -#: mod/uexport.php:37 -msgid "" -"Export your account info and contacts. Use this to make a backup of your " -"account and/or to move it to another server." +#: mod/admin.php:1577 +#, php-format +msgid "Plugin %s disabled." msgstr "" -#: mod/uexport.php:38 -msgid "Export all" +#: mod/admin.php:1581 +#, php-format +msgid "Plugin %s enabled." msgstr "" -#: mod/uexport.php:38 -msgid "" -"Export your accout info, contacts and all your items as json. Could be a " -"very big file, and could take a lot of time. Use this to make a full backup " -"of your account (photos are not exported)" +#: mod/admin.php:1592 mod/admin.php:1844 +msgid "Disable" msgstr "" -#: mod/uimport.php:68 -msgid "Move account" +#: mod/admin.php:1594 mod/admin.php:1846 +msgid "Enable" msgstr "" -#: mod/uimport.php:69 -msgid "You can import an account from another Friendica server." +#: mod/admin.php:1617 mod/admin.php:1893 +msgid "Toggle" msgstr "" -#: mod/uimport.php:70 -msgid "" -"You need to export your account from the old server and upload it here. We " -"will recreate your old account here with all your contacts. We will try also " -"to inform your friends that you moved here." +#: mod/admin.php:1625 mod/admin.php:1902 +msgid "Author: " msgstr "" -#: mod/uimport.php:71 -msgid "" -"This feature is experimental. We can't import contacts from the OStatus " -"network (GNU Social/Statusnet) or from Diaspora" +#: mod/admin.php:1626 mod/admin.php:1903 +msgid "Maintainer: " msgstr "" -#: mod/uimport.php:72 -msgid "Account file" +#: mod/admin.php:1681 +msgid "Reload active plugins" msgstr "" -#: mod/uimport.php:72 +#: mod/admin.php:1686 +#, php-format msgid "" -"To export your account, go to \"Settings->Export your personal data\" and " -"select \"Export account\"" +"There are currently no plugins available on your node. You can find the " +"official plugin repository at %1$s and might find other interesting plugins " +"in the open plugin registry at %2$s" msgstr "" -#: mod/update_community.php:19 mod/update_display.php:23 -#: mod/update_network.php:27 mod/update_notes.php:36 mod/update_profile.php:35 -msgid "[Embedded content - reload page to view]" +#: mod/admin.php:1805 +msgid "No themes found." msgstr "" -#: mod/videos.php:124 -msgid "Do you really want to delete this video?" +#: mod/admin.php:1884 +msgid "Screenshot" msgstr "" -#: mod/videos.php:129 -msgid "Delete Video" +#: mod/admin.php:1944 +msgid "Reload active themes" msgstr "" -#: mod/videos.php:208 -msgid "No videos selected" +#: mod/admin.php:1949 +#, php-format +msgid "No themes found on the system. They should be paced in %1$s" msgstr "" -#: mod/videos.php:400 -msgid "Recent Videos" +#: mod/admin.php:1950 +msgid "[Experimental]" msgstr "" -#: mod/videos.php:402 -msgid "Upload New Videos" +#: mod/admin.php:1951 +msgid "[Unsupported]" msgstr "" -#: mod/viewcontacts.php:75 -msgid "No contacts." +#: mod/admin.php:1975 +msgid "Log settings updated." msgstr "" -#: mod/viewsrc.php:7 -msgid "Access denied." +#: mod/admin.php:2007 +msgid "PHP log currently enabled." msgstr "" -#: mod/wall_attach.php:17 mod/wall_attach.php:25 mod/wall_attach.php:76 -#: mod/wall_upload.php:20 mod/wall_upload.php:33 mod/wall_upload.php:86 -#: mod/wall_upload.php:122 mod/wall_upload.php:125 -msgid "Invalid request." +#: mod/admin.php:2009 +msgid "PHP log currently disabled." msgstr "" -#: mod/wall_attach.php:94 -msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" +#: mod/admin.php:2018 +msgid "Clear" msgstr "" -#: mod/wall_attach.php:94 -msgid "Or - did you try to upload an empty file?" +#: mod/admin.php:2023 +msgid "Enable Debugging" msgstr "" -#: mod/wall_attach.php:105 -#, php-format -msgid "File exceeds size limit of %s" +#: mod/admin.php:2024 +msgid "Log file" msgstr "" -#: mod/wall_attach.php:158 mod/wall_attach.php:174 -msgid "File upload failed." +#: mod/admin.php:2024 +msgid "" +"Must be writable by web server. Relative to your Friendica top-level " +"directory." msgstr "" -#: mod/wallmessage.php:42 mod/wallmessage.php:106 -#, php-format -msgid "Number of daily wall messages for %s exceeded. Message failed." +#: mod/admin.php:2025 +msgid "Log level" msgstr "" -#: mod/wallmessage.php:53 -msgid "Unable to check your home location." +#: mod/admin.php:2028 +msgid "PHP logging" msgstr "" -#: mod/wallmessage.php:80 mod/wallmessage.php:89 -msgid "No recipient." +#: mod/admin.php:2029 +msgid "" +"To enable logging of PHP errors and warnings you can add the following to " +"the .htconfig.php file of your installation. The filename set in the " +"'error_log' line is relative to the friendica top-level directory and must " +"be writeable by the web server. The option '1' for 'log_errors' and " +"'display_errors' is to enable these options, set to '0' to disable them." msgstr "" -#: mod/wallmessage.php:127 +#: mod/admin.php:2160 #, php-format -msgid "" -"If you wish for %s to respond, please check that the privacy settings on " -"your site allow private mail from unknown senders." +msgid "Lock feature %s" +msgstr "" + +#: mod/admin.php:2168 +msgid "Manage Additional Features" msgstr "" #: object/Item.php:359 @@ -8820,7 +8868,7 @@ msgstr "" msgid "Community Pages" msgstr "" -#: view/theme/vier/config.php:117 view/theme/vier/theme.php:146 +#: view/theme/vier/config.php:117 view/theme/vier/theme.php:149 msgid "Community Profiles" msgstr "" @@ -8828,22 +8876,75 @@ msgstr "" msgid "Help or @NewHere ?" msgstr "" -#: view/theme/vier/config.php:119 view/theme/vier/theme.php:385 +#: view/theme/vier/config.php:119 view/theme/vier/theme.php:390 msgid "Connect Services" msgstr "" -#: view/theme/vier/config.php:120 view/theme/vier/theme.php:194 +#: view/theme/vier/config.php:120 view/theme/vier/theme.php:197 msgid "Find Friends" msgstr "" -#: view/theme/vier/config.php:121 view/theme/vier/theme.php:176 +#: view/theme/vier/config.php:121 view/theme/vier/theme.php:179 msgid "Last users" msgstr "" -#: view/theme/vier/theme.php:195 +#: view/theme/vier/theme.php:198 msgid "Local Directory" msgstr "" -#: view/theme/vier/theme.php:286 +#: view/theme/vier/theme.php:290 msgid "Quick Start" msgstr "" + +#: index.php:433 +msgid "toggle mobile" +msgstr "" + +#: boot.php:999 +msgid "Delete this item?" +msgstr "" + +#: boot.php:1001 +msgid "show fewer" +msgstr "" + +#: boot.php:1729 +#, php-format +msgid "Update %s failed. See error logs." +msgstr "" + +#: boot.php:1843 +msgid "Create a New Account" +msgstr "" + +#: boot.php:1871 +msgid "Password: " +msgstr "" + +#: boot.php:1872 +msgid "Remember me" +msgstr "" + +#: boot.php:1875 +msgid "Or login using OpenID: " +msgstr "" + +#: boot.php:1881 +msgid "Forgot your password?" +msgstr "" + +#: boot.php:1884 +msgid "Website Terms of Service" +msgstr "" + +#: boot.php:1885 +msgid "terms of service" +msgstr "" + +#: boot.php:1887 +msgid "Website Privacy Policy" +msgstr "" + +#: boot.php:1888 +msgid "privacy policy" +msgstr "" diff --git a/util/php2po.php b/util/php2po.php index 2e888008c2..e07f718004 100644 --- a/util/php2po.php +++ b/util/php2po.php @@ -1,204 +1,204 @@ - * - * Output to - */ - - DEFINE("NORM_REGEXP", "|[\\\]|"); - - - if(! class_exists('App')) { - class TmpA { - public $strings = Array(); - } - $a = new TmpA(); - } +/** + * Read strings.php file and create messages.po + * + * php utils/php2po.php + * + * Output to + */ - if ($argc<2 || in_array('-h', $argv) || in_array('--h', $argv)) { - print "Usage: ".$argv[0]." [-p ] \n\n"; - print "Options:\n"; - print "p\tNumber of plural forms. Default: 2\n"; - print "\n"; - return; - } +use Friendica\App; - $phpfile = $argv[1]; - $pofile = dirname($phpfile)."/messages.po"; +DEFINE("NORM_REGEXP", "|[\\\]|"); - if (!file_exists($phpfile)){ - print "Unable to find '$phpfile'\n"; - return; +if(! class_exists('App')) { + class TmpA { + public $strings = Array(); } + $a = new TmpA(); +} - // utility functions - function startsWith($haystack, $needle) { - // search backwards starting from haystack length characters from the end - return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE; - } +if ($argc<2 || in_array('-h', $argv) || in_array('--h', $argv)) { + print "Usage: ".$argv[0]." [-p ] \n\n"; + print "Options:\n"; + print "p\tNumber of plural forms. Default: 2\n"; + print "\n"; + return; +} + +$phpfile = $argv[1]; +$pofile = dirname($phpfile)."/messages.po"; + +if (!file_exists($phpfile)){ + print "Unable to find '$phpfile'\n"; + return; +} +// utility functions +function startsWith($haystack, $needle) { + // search backwards starting from haystack length characters from the end + return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE; +} - // start ! - include_once($phpfile); - - $out = ''; - $out .= "# FRIENDICA Distributed Social Network\n"; - $out .= "# Copyright (C) 2010, 2011, 2012, 2013 the Friendica Project\n"; - $out .= "# This file is distributed under the same license as the Friendica package.\n"; - $out .= "# \n"; - $out .= 'msgid ""' ."\n"; - $out .= 'msgstr ""' ."\n"; - $out .= '"Project-Id-Version: friendica\n"' ."\n"; - $out .= '"Report-Msgid-Bugs-To: \n"' ."\n"; - $out .= '"POT-Creation-Date: '. date("Y-m-d H:i:sO").'\n"' ."\n"; - $out .= '"MIME-Version: 1.0\n"' ."\n"; - $out .= '"Content-Type: text/plain; charset=UTF-8\n"' ."\n"; - $out .= '"Content-Transfer-Encoding: 8bit\n"' ."\n"; - - // search for plural info - $lang = ""; - $lang_logic = ""; - $lang_pnum = 2; - - $_idx = array_search('-p', $argv); - if ($_idx !== false) { - $lang_pnum = $argv[$_idx+1]; + +// start ! +include_once($phpfile); + +$out = ''; +$out .= "# FRIENDICA Distributed Social Network\n"; +$out .= "# Copyright (C) 2010, 2011, 2012, 2013 the Friendica Project\n"; +$out .= "# This file is distributed under the same license as the Friendica package.\n"; +$out .= "# \n"; +$out .= 'msgid ""' ."\n"; +$out .= 'msgstr ""' ."\n"; +$out .= '"Project-Id-Version: friendica\n"' ."\n"; +$out .= '"Report-Msgid-Bugs-To: \n"' ."\n"; +$out .= '"POT-Creation-Date: '. date("Y-m-d H:i:sO").'\n"' ."\n"; +$out .= '"MIME-Version: 1.0\n"' ."\n"; +$out .= '"Content-Type: text/plain; charset=UTF-8\n"' ."\n"; +$out .= '"Content-Transfer-Encoding: 8bit\n"' ."\n"; + +// search for plural info +$lang = ""; +$lang_logic = ""; +$lang_pnum = 2; + +$_idx = array_search('-p', $argv); +if ($_idx !== false) { + $lang_pnum = $argv[$_idx+1]; +} + +$infile = file($phpfile); +foreach($infile as $l) { + $l = trim($l); + if (startsWith($l, 'function string_plural_select_')) { + $lang = str_replace( 'function string_plural_select_' , '', str_replace( '($n){','', $l) ); } - - $infile = file($phpfile); - foreach($infile as $l) { - $l = trim($l); - if (startsWith($l, 'function string_plural_select_')) { - $lang = str_replace( 'function string_plural_select_' , '', str_replace( '($n){','', $l) ); - } - if (startsWith($l, 'return')) { - $lang_logic = str_replace( '$', '', trim( str_replace( 'return ' , '', $l) , ';') ); - break; - } + if (startsWith($l, 'return')) { + $lang_logic = str_replace( '$', '', trim( str_replace( 'return ' , '', $l) , ';') ); + break; } - - echo "Language: $lang\n"; - echo "Plural forms: $lang_pnum\n"; - echo "Plural logic: $lang_logic;\n"; - - $out .= sprintf('"Language: %s\n"', $lang) ."\n"; - $out .= sprintf('"Plural-Forms: nplurals=%s; plural=%s;\n"', $lang_pnum, $lang_logic) ."\n"; - $out .= "\n"; +} - print "\nLoading base message.po..."; - - // load base messages.po and extract msgids - $base_msgids = array(); - $norm_base_msgids = array(); - $base_f = file("util/messages.po") or die("No base messages.po\n"); - $_f = 0; $_mid = ""; $_mids = array(); - foreach( $base_f as $l) { - $l = trim($l); - //~ print $l."\n"; - - if (startsWith($l, 'msgstr')) { - if ($_mid != '""') { - $base_msgids[$_mid] = $_mids; - $norm_base_msgids[preg_replace(NORM_REGEXP, "", $_mid)] = $_mid; - //~ print "\t\t\t".$_mid. print_r($base_msgids[$_mid], true); - } - - $_f = 0; - $_mid = ""; - $_mids = array(); - - } - - if (startsWith($l, '"') && $_f==2) { - $_mids[count($_mids)-1] .= "\n".$l; - //~ print "\t\t+mids: ".print_t($_mids, true); - } - if (startsWith($l, 'msgid_plural ')) { - $_f = 2; - $_mids[] = str_replace('msgid_plural ', '' , $l); - //~ print "\t\t mids: ".print_r($_mids, true); - } - - if (startsWith($l, '"') && $_f==1) { - $_mid .= "\n".$l; - $_mids[count($_mids)-1] .= "\n".$l; - //~ print "\t+mid: $_mid \n"; - } - if (startsWith($l, 'msgid ')) { - $_f = 1; - $_mid = str_replace('msgid ', '' , $l); - $_mids = array($_mid); - //~ print "\t mid: $_mid \n"; +echo "Language: $lang\n"; +echo "Plural forms: $lang_pnum\n"; +echo "Plural logic: $lang_logic;\n"; + +$out .= sprintf('"Language: %s\n"', $lang) ."\n"; +$out .= sprintf('"Plural-Forms: nplurals=%s; plural=%s;\n"', $lang_pnum, $lang_logic) ."\n"; +$out .= "\n"; + +print "\nLoading base message.po..."; + +// load base messages.po and extract msgids +$base_msgids = array(); +$norm_base_msgids = array(); +$base_f = file("util/messages.po") or die("No base messages.po\n"); +$_f = 0; $_mid = ""; $_mids = array(); +foreach( $base_f as $l) { + $l = trim($l); + //~ print $l."\n"; + + if (startsWith($l, 'msgstr')) { + if ($_mid != '""') { + $base_msgids[$_mid] = $_mids; + $norm_base_msgids[preg_replace(NORM_REGEXP, "", $_mid)] = $_mid; + //~ print "\t\t\t".$_mid. print_r($base_msgids[$_mid], true); } - //~ print "\t\t\t\t$_f\n\n"; + + $_f = 0; + $_mid = ""; + $_mids = array(); + } - - print " done\n"; - print "Creating '$pofile'..."; - // create msgid and msgstr - - /** - * Get a string and retun a message.po ready text - * - replace " with \" - * - replace tab char with \t - * - manage multiline strings - */ - function massage_string($str) { - $str = str_replace('\\','\\\\',$str); - $str = str_replace('"','\"',$str); - $str = str_replace("\t",'\t',$str); - $str = str_replace("\n",'\n"'."\n".'"',$str); - if (strpos($str, "\n")!==false && $str[0]!=='"') $str = '"'."\n".$str; - $str = preg_replace("|\n([^\"])|", "\n\"$1", $str); - return sprintf('"%s"', $str); + + if (startsWith($l, '"') && $_f==2) { + $_mids[count($_mids)-1] .= "\n".$l; + //~ print "\t\t+mids: ".print_t($_mids, true); } - - function find_original_msgid($str) { - global $norm_base_msgids; - $norm_str = preg_replace(NORM_REGEXP, "", $str); - if (array_key_exists($norm_str, $norm_base_msgids)) { - return $norm_base_msgids[$norm_str]; - } - return $str; + if (startsWith($l, 'msgid_plural ')) { + $_f = 2; + $_mids[] = str_replace('msgid_plural ', '' , $l); + //~ print "\t\t mids: ".print_r($_mids, true); } - - $warnings = ""; - foreach($a->strings as $key=>$str) { - $msgid = massage_string($key); - - if (preg_match("|%[sd0-9](\$[sn])*|", $msgid)) { - $out .= "#, php-format\n"; - } - $msgid = find_original_msgid($msgid); - $out .= 'msgid '. $msgid . "\n"; - - if (is_array($str)) { - if (array_key_exists($msgid, $base_msgids) && isset($base_msgids[$msgid][1])) { - $out .= 'msgid_plural '. $base_msgids[$msgid][1] . "\n"; - } else { - $out .= 'msgid_plural '. $msgid . "\n"; - $warnings .= "[W] No source plural form for msgid:\n". str_replace("\n","\n\t", $msgid) . "\n\n"; - } - foreach ( $str as $n => $msgstr) { - $out .= 'msgstr['.$n.'] '. massage_string($msgstr) . "\n"; - } - } else { - $out .= 'msgstr '. massage_string($str) . "\n"; - } - - $out .= "\n"; - + + if (startsWith($l, '"') && $_f==1) { + $_mid .= "\n".$l; + $_mids[count($_mids)-1] .= "\n".$l; + //~ print "\t+mid: $_mid \n"; } + if (startsWith($l, 'msgid ')) { + $_f = 1; + $_mid = str_replace('msgid ', '' , $l); + $_mids = array($_mid); + //~ print "\t mid: $_mid \n"; + } + //~ print "\t\t\t\t$_f\n\n"; +} + +print " done\n"; +print "Creating '$pofile'..."; +// create msgid and msgstr + +/** + * Get a string and retun a message.po ready text + * - replace " with \" + * - replace tab char with \t + * - manage multiline strings + */ +function massage_string($str) { + $str = str_replace('\\','\\\\',$str); + $str = str_replace('"','\"',$str); + $str = str_replace("\t",'\t',$str); + $str = str_replace("\n",'\n"'."\n".'"',$str); + if (strpos($str, "\n")!==false && $str[0]!=='"') $str = '"'."\n".$str; + $str = preg_replace("|\n([^\"])|", "\n\"$1", $str); + return sprintf('"%s"', $str); +} + +function find_original_msgid($str) { + global $norm_base_msgids; + $norm_str = preg_replace(NORM_REGEXP, "", $str); + if (array_key_exists($norm_str, $norm_base_msgids)) { + return $norm_base_msgids[$norm_str]; + } + return $str; +} + +$warnings = ""; +foreach($a->strings as $key=>$str) { + $msgid = massage_string($key); - file_put_contents($pofile, $out); - - print " done\n"; - - if ($warnings=="") { - print "No warnings.\n"; + if (preg_match("|%[sd0-9](\$[sn])*|", $msgid)) { + $out .= "#, php-format\n"; + } + $msgid = find_original_msgid($msgid); + $out .= 'msgid '. $msgid . "\n"; + + if (is_array($str)) { + if (array_key_exists($msgid, $base_msgids) && isset($base_msgids[$msgid][1])) { + $out .= 'msgid_plural '. $base_msgids[$msgid][1] . "\n"; + } else { + $out .= 'msgid_plural '. $msgid . "\n"; + $warnings .= "[W] No source plural form for msgid:\n". str_replace("\n","\n\t", $msgid) . "\n\n"; + } + foreach ( $str as $n => $msgstr) { + $out .= 'msgstr['.$n.'] '. massage_string($msgstr) . "\n"; + } } else { - print $warnings; + $out .= 'msgstr '. massage_string($str) . "\n"; } - + + $out .= "\n"; + +} + +file_put_contents($pofile, $out); + +print " done\n"; + +if ($warnings=="") { + print "No warnings.\n"; +} else { + print $warnings; +} diff --git a/util/typo.php b/util/typo.php old mode 100644 new mode 100755 index d68ac2ac9b..1b84181db3 --- a/util/typo.php +++ b/util/typo.php @@ -1,59 +1,77 @@ +#!/usr/bin/env php config,'php_path')) - $phpath = $a->config['php_path']; - else - $phpath = 'php'; +$a = new App(dirname(__DIR__)); +if (x($a->config, 'php_path')) { + $phpath = $a->config['php_path']; +} else { + $phpath = 'php'; +} - echo "Directory: mod\n"; - $files = glob('mod/*.php'); - foreach($files as $file) { - passthru("$phpath -l $file", $ret); $ret===0 or die(); - } +echo 'Directory: src' . PHP_EOL; +$Iterator = new RecursiveDirectoryIterator('src'); - echo "Directory: include\n"; - $files = glob('include/*.php'); - foreach($files as $file) { - passthru("$phpath -l $file", $ret); $ret===0 or die(); +foreach (new RecursiveIteratorIterator($Iterator) as $file) { + if (substr($file, -4) === '.php') { + passthru("$phpath -l $file", $ret); + $ret === 0 or die(); } +} - echo "Directory: object\n"; - $files = glob('object/*.php'); - foreach($files as $file) { - passthru("$phpath -l $file", $ret); $ret===0 or die(); - } +echo "Directory: mod\n"; +$files = glob('mod/*.php'); +foreach ($files as $file) { + passthru("$phpath -l $file", $ret); + $ret === 0 or die(); +} - echo "Directory: addon\n"; - $dirs = glob('addon/*'); +echo "Directory: include\n"; +$files = glob('include/*.php'); +foreach ($files as $file) { + passthru("$phpath -l $file", $ret); + $ret === 0 or die(); +} - foreach($dirs as $dir) { - $addon = basename($dir); - $files = glob($dir . '/' . $addon . '.php'); - foreach($files as $file) { - passthru("$phpath -l $file", $ret); $ret===0 or die(); - } - } +echo "Directory: object\n"; +$files = glob('object/*.php'); +foreach ($files as $file) { + passthru("$phpath -l $file", $ret); + $ret === 0 or die(); +} +echo "Directory: addon\n"; +$dirs = glob('addon/*'); - echo "String files\n"; +foreach ($dirs as $dir) { + $addon = basename($dir); + $files = glob($dir . '/' . $addon . '.php'); + foreach ($files as $file) { + passthru("$phpath -l $file", $ret); + $ret === 0 or die(); + } +} - echo 'util/strings.php' . "\n"; - passthru("$phpath -l util/strings.php", $ret); $ret===0 or die(); +echo "String files\n"; - $files = glob('view/lang/*/strings.php'); - foreach($files as $file) { - passthru("$phpath -l $file", $ret); $ret===0 or die(); - } +echo 'util/strings.php' . "\n"; +passthru("$phpath -l util/strings.php", $ret); +$ret === 0 or die(); + +$files = glob('view/lang/*/strings.php'); +foreach ($files as $file) { + passthru("$phpath -l $file", $ret); + $ret === 0 or die(); +} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 4553da2e24..a3f90a0f7f 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -9,8 +9,10 @@ return array( 'Archive_Tar' => $vendorDir . '/pear-pear.php.net/Archive_Tar/Archive/Tar.php', 'Console_Getopt' => $vendorDir . '/pear-pear.php.net/Console_Getopt/Console/Getopt.php', 'Detection\\MobileDetect' => $vendorDir . '/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php', + 'Friendica\\App' => $baseDir . '/src/App.php', 'Friendica\\Core\\Config' => $baseDir . '/src/Core/Config.php', 'Friendica\\Core\\PConfig' => $baseDir . '/src/Core/PConfig.php', + 'Friendica\\Network\\Probe' => $baseDir . '/src/Network/Probe.php', 'Friendica\\ParseUrl' => $baseDir . '/src/ParseUrl.php', 'HTMLPurifier' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.php', 'HTMLPurifier_Arborize' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Arborize.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 37d3c878b4..2b6416c2ee 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -53,8 +53,10 @@ class ComposerStaticInitFriendica 'Archive_Tar' => __DIR__ . '/..' . '/pear-pear.php.net/Archive_Tar/Archive/Tar.php', 'Console_Getopt' => __DIR__ . '/..' . '/pear-pear.php.net/Console_Getopt/Console/Getopt.php', 'Detection\\MobileDetect' => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php', + 'Friendica\\App' => __DIR__ . '/../..' . '/src/App.php', 'Friendica\\Core\\Config' => __DIR__ . '/../..' . '/src/Core/Config.php', 'Friendica\\Core\\PConfig' => __DIR__ . '/../..' . '/src/Core/PConfig.php', + 'Friendica\\Network\\Probe' => __DIR__ . '/../..' . '/src/Network/Probe.php', 'Friendica\\ParseUrl' => __DIR__ . '/../..' . '/src/ParseUrl.php', 'HTMLPurifier' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.php', 'HTMLPurifier_Arborize' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Arborize.php', diff --git a/vendor/composer/include_paths.php b/vendor/composer/include_paths.php index e10abddcd0..1d4a52943a 100644 --- a/vendor/composer/include_paths.php +++ b/vendor/composer/include_paths.php @@ -11,6 +11,6 @@ return array( $vendorDir . '/pear-pear.php.net/Structures_Graph', $vendorDir . '/pear-pear.php.net/XML_Util', $vendorDir . '/pear-pear.php.net/XML_Parser', - $vendorDir . '/pear-pear.php.net/PEAR', $vendorDir . '/pear-pear.php.net/Text_Highlighter', + $vendorDir . '/pear-pear.php.net/PEAR', ); diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 45038987b7..d6cca604f9 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -256,47 +256,6 @@ ], "description": "This is an XML parser based on PHPs built-in xml extension.\nIt supports two basic modes of operation: \"func\" and \"event\". In \"func\" mode, it will look for a function named after each element (xmltag_ELEMENT for start tags and xmltag_ELEMENT_ for end tags), and in \"event\" mode it uses a set of generic callbacks.\n\nSince version 1.2.0 there's a new XML_Parser_Simple class that makes parsing of most XML documents easier, by automatically providing a stack for the elements.\nFurthermore its now possible to split the parser from the handler object, so you do not have to extend XML_Parser anymore in order to parse a document with it." }, - { - "name": "pear-pear.php.net/PEAR", - "version": "1.10.3", - "version_normalized": "1.10.3.0", - "dist": { - "type": "file", - "url": "https://pear.php.net/get/PEAR-1.10.3.tgz", - "reference": null, - "shasum": null - }, - "require": { - "ext-pcre": "*", - "ext-xml": "*", - "pear-pear.php.net/archive_tar": ">=1.4.0.0", - "pear-pear.php.net/console_getopt": ">=1.4.1.0", - "pear-pear.php.net/structures_graph": ">=1.1.0.0", - "pear-pear.php.net/xml_util": ">=1.3.0.0", - "php": ">=5.4.0.0" - }, - "conflict": { - "pear-pear.php.net/pear_frontend_gtk": "<0.4.0.0", - "pear-pear.php.net/pear_frontend_web": "<=0.4.0.0" - }, - "replace": { - "pear-pear/pear": "== 1.10.3.0" - }, - "type": "pear-library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "" - ] - }, - "include-path": [ - "/" - ], - "license": [ - "New BSD License" - ], - "description": "The PEAR package contains:\n * the PEAR installer, for creating, distributing\n and installing packages\n * the PEAR_Exception PHP5 error handling mechanism\n * the PEAR_ErrorStack advanced error handling mechanism\n * the PEAR_Error error handling mechanism\n * the OS_Guess class for retrieving info about the OS\n where PHP is running on\n * the System class for quick handling of common operations\n with files and directories\n * the PEAR base class\n Features in a nutshell:\n * full support for channels\n * pre-download dependency validation\n * new package.xml 2.0 format allows tremendous flexibility while maintaining BC\n * support for optional dependency groups and limited support for sub-packaging\n * robust dependency support\n * full dependency validation on uninstall\n * remote install for hosts with only ftp access - no more problems with\n restricted host installation\n * full support for mirroring\n * support for bundling several packages into a single tarball\n * support for static dependencies on a url-based package\n * support for custom file roles and installation tasks" - }, { "name": "pear-pear.php.net/Text_Highlighter", "version": "0.8.0", @@ -396,5 +355,46 @@ "html", "markdown" ] + }, + { + "name": "pear-pear.php.net/PEAR", + "version": "1.10.4", + "version_normalized": "1.10.4.0", + "dist": { + "type": "file", + "url": "https://pear.php.net/get/PEAR-1.10.4.tgz", + "reference": null, + "shasum": null + }, + "require": { + "ext-pcre": "*", + "ext-xml": "*", + "pear-pear.php.net/archive_tar": ">=1.4.0.0", + "pear-pear.php.net/console_getopt": ">=1.4.1.0", + "pear-pear.php.net/structures_graph": ">=1.1.0.0", + "pear-pear.php.net/xml_util": ">=1.3.0.0", + "php": ">=5.4.0.0" + }, + "conflict": { + "pear-pear.php.net/pear_frontend_gtk": "<0.4.0.0", + "pear-pear.php.net/pear_frontend_web": "<=0.4.0.0" + }, + "replace": { + "pear-pear/pear": "== 1.10.4.0" + }, + "type": "pear-library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "" + ] + }, + "include-path": [ + "/" + ], + "license": [ + "New BSD License" + ], + "description": "The PEAR package contains:\n * the PEAR installer, for creating, distributing\n and installing packages\n * the PEAR_Exception PHP5 error handling mechanism\n * the PEAR_ErrorStack advanced error handling mechanism\n * the PEAR_Error error handling mechanism\n * the OS_Guess class for retrieving info about the OS\n where PHP is running on\n * the System class for quick handling of common operations\n with files and directories\n * the PEAR base class\n Features in a nutshell:\n * full support for channels\n * pre-download dependency validation\n * new package.xml 2.0 format allows tremendous flexibility while maintaining BC\n * support for optional dependency groups and limited support for sub-packaging\n * robust dependency support\n * full dependency validation on uninstall\n * remote install for hosts with only ftp access - no more problems with\n restricted host installation\n * full support for mirroring\n * support for bundling several packages into a single tarball\n * support for static dependencies on a url-based package\n * support for custom file roles and installation tasks" } ] diff --git a/vendor/pear-pear.php.net/PEAR/OS/Guess.php b/vendor/pear-pear.php.net/PEAR/OS/Guess.php index 7e8e8d3f8c..ffa15355cf 100644 --- a/vendor/pear-pear.php.net/PEAR/OS/Guess.php +++ b/vendor/pear-pear.php.net/PEAR/OS/Guess.php @@ -86,7 +86,7 @@ * @author Gregory Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR.php b/vendor/pear-pear.php.net/PEAR/PEAR.php index 7aa3c4ce56..5737f71b15 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR.php @@ -75,7 +75,7 @@ $GLOBALS['_PEAR_error_handler_stack'] = array(); * @author Greg Beaver * @copyright 1997-2006 The PHP Group * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @see PEAR_Error * @since Class available since PHP 4.0.2 @@ -170,7 +170,7 @@ class PEAR $destructor = "_$classname"; if (method_exists($this, $destructor)) { global $_PEAR_destructor_object_list; - $_PEAR_destructor_object_list[] = &$this; + $_PEAR_destructor_object_list[] = $this; if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { register_shutdown_function("_PEAR_call_destructors"); $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; @@ -598,11 +598,11 @@ class PEAR protected static function _throwError($object, $message = null, $code = null, $userinfo = null) { if ($object !== null) { - $a = &$object->raiseError($message, $code, null, null, $userinfo); + $a = $object->raiseError($message, $code, null, null, $userinfo); return $a; } - $a = &PEAR::raiseError($message, $code, null, null, $userinfo); + $a = PEAR::raiseError($message, $code, null, null, $userinfo); return $a; } @@ -823,7 +823,7 @@ function _PEAR_call_destructors() * @author Gregory Beaver * @copyright 1997-2006 The PHP Group * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/manual/en/core.pear.pear-error.php * @see PEAR::raiseError(), PEAR::throwError() * @since Class available since PHP 4.0.2 diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Builder.php b/vendor/pear-pear.php.net/PEAR/PEAR/Builder.php index 9df3b9eac9..d69bc14f1c 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Builder.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Builder.php @@ -33,7 +33,7 @@ require_once 'System.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since PHP 4.0.2 * @see http://pear.php.net/manual/en/core.ppm.pear-builder.php @@ -385,7 +385,7 @@ class PEAR_Builder extends PEAR_Common if (!file_exists($build_dir) || !is_dir($build_dir) || !chdir($build_dir)) { return $this->raiseError("could not chdir to $build_dir"); } - putenv('PHP_PEAR_VERSION=1.10.3'); + putenv('PHP_PEAR_VERSION=1.10.4'); foreach ($to_run as $cmd) { $err = $this->_runCommand($cmd, $callback); if (PEAR::isError($err)) { diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile.php b/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile.php index 9e990d1348..d81deb43a1 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile.php @@ -145,7 +145,7 @@ $GLOBALS['_PEAR_CHANNELS_MIRROR_TYPES'] = array('server'); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile/Parser.php b/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile/Parser.php index 56376add64..01bb7f3fbe 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile/Parser.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/ChannelFile/Parser.php @@ -25,7 +25,7 @@ require_once 'PEAR/ChannelFile.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command.php index 39823c674b..411f7a49b2 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command.php @@ -93,7 +93,7 @@ $GLOBALS['_PEAR_Command_objects'] = array(); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Auth.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Auth.php index fa2b22bf52..fecfd875ef 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Auth.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Auth.php @@ -29,7 +29,7 @@ require_once 'PEAR/Command/Channels.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 * @deprecated since 1.8.0alpha1 diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Build.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Build.php index 3bb99454d7..aecc90d8b2 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Build.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Build.php @@ -30,7 +30,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Channels.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Channels.php index b9286370ab..fa190d39c2 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Channels.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Channels.php @@ -31,7 +31,7 @@ define('PEAR_COMMAND_CHANNELS_CHANNEL_EXISTS', -500); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Common.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Common.php index 41384ef0b3..8d972b6f1b 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Common.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Common.php @@ -28,7 +28,7 @@ require_once 'PEAR.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Config.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Config.php index 63efb07be3..18dd61451a 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Config.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Config.php @@ -28,7 +28,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Install.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Install.php index a1d3a7023f..42c1f55867 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Install.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Install.php @@ -29,7 +29,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ @@ -717,8 +717,7 @@ Run post-installation scripts in package , if any exist. $pkg = &$param->getPackageFile(); if ($info->getCode() != PEAR_INSTALLER_NOBINARY) { if (!($info = $pkg->installBinary($this->installer))) { - $this->ui->outputData('ERROR: ' .$oldinfo->getMessage()); - continue; + return $this->raiseError('ERROR: ' .$oldinfo->getMessage()); } // we just installed a different package than requested, diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Mirror.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Mirror.php index 473c628675..616417cb3a 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Mirror.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Mirror.php @@ -26,7 +26,7 @@ require_once 'PEAR/Command/Common.php'; * @author Alexander Merz * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.2.0 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Package.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Package.php index 25125fd982..8847112e60 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Package.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Package.php @@ -31,7 +31,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Pickle.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Pickle.php index 8ac3fcb6b1..7a7bd81c0b 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Pickle.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Pickle.php @@ -26,7 +26,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 2005-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Registry.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Registry.php index 3a78b03302..b5423c762e 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Registry.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Registry.php @@ -28,7 +28,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Remote.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Remote.php index c0a8e92a8e..817b733285 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Remote.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Remote.php @@ -30,7 +30,7 @@ require_once 'PEAR/REST.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Test.php b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Test.php index 69c72c4aa3..0f6c8dc24e 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Command/Test.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Command/Test.php @@ -30,7 +30,7 @@ require_once 'PEAR/Command/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Common.php b/vendor/pear-pear.php.net/PEAR/PEAR/Common.php index 1c4f79ceb1..0b00b00bc5 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Common.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Common.php @@ -117,7 +117,7 @@ $GLOBALS['_PEAR_Common_script_phases'] = array('pre-install', 'post-install', 'p * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 * @deprecated This class will disappear, and its components will be spread diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Config.php b/vendor/pear-pear.php.net/PEAR/PEAR/Config.php index d9b4d273ce..e86c501341 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Config.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Config.php @@ -264,7 +264,7 @@ if (getenv('PHP_PEAR_SIG_KEYDIR')) { * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Dependency2.php b/vendor/pear-pear.php.net/PEAR/PEAR/Dependency2.php index 77646f1f95..b142883b32 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Dependency2.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Dependency2.php @@ -30,7 +30,7 @@ require_once 'PEAR/Validate.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ @@ -540,7 +540,7 @@ class PEAR_Dependency2 */ function getPEARVersion() { - return '1.10.3'; + return '1.10.4'; } function validatePearinstallerDependency($dep) diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/DependencyDB.php b/vendor/pear-pear.php.net/PEAR/PEAR/DependencyDB.php index 5421929a2b..0d48613acd 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/DependencyDB.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/DependencyDB.php @@ -29,7 +29,7 @@ $GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'] = array(); * @author Tomas V.V.Cox * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Downloader.php b/vendor/pear-pear.php.net/PEAR/PEAR/Downloader.php index 15f26bceff..a498f134b9 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Downloader.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Downloader.php @@ -39,7 +39,7 @@ define('PEAR_INSTALLER_ERROR_NO_PREF_STATE', 2); * @author Martin Jansen * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.3.0 */ @@ -1635,7 +1635,7 @@ class PEAR_Downloader extends PEAR_Common } $request .= $ifmodifiedsince . - "User-Agent: PEAR/1.10.3/PHP/" . PHP_VERSION . "\r\n"; + "User-Agent: PEAR/1.10.4/PHP/" . PHP_VERSION . "\r\n"; if ($object !== null) { // only pass in authentication for non-static calls $username = $config->get('username', null, $channel); diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Downloader/Package.php b/vendor/pear-pear.php.net/PEAR/PEAR/Downloader/Package.php index 925c0ecd56..42b35b5b68 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Downloader/Package.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Downloader/Package.php @@ -49,7 +49,7 @@ define('PEAR_DOWNLOADER_PACKAGE_PHPVERSION', -1004); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/ErrorStack.php b/vendor/pear-pear.php.net/PEAR/PEAR/ErrorStack.php index b4412744a1..53eda7c3df 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/ErrorStack.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/ErrorStack.php @@ -131,7 +131,7 @@ define('PEAR_ERRORSTACK_ERR_OBJTOSTRING', 2); * $local_stack = new PEAR_ErrorStack('MyPackage'); * * @author Greg Beaver - * @version 1.10.3 + * @version 1.10.4 * @package PEAR_ErrorStack * @category Debugging * @copyright 2004-2008 Greg Beaver diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Exception.php b/vendor/pear-pear.php.net/PEAR/PEAR/Exception.php index d83950b13a..d0e84dc1fa 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Exception.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Exception.php @@ -88,7 +88,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.3.3 * diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Frontend.php b/vendor/pear-pear.php.net/PEAR/PEAR/Frontend.php index bd002c374b..a9d9b73cc3 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Frontend.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Frontend.php @@ -38,7 +38,7 @@ $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = null; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Frontend/CLI.php b/vendor/pear-pear.php.net/PEAR/PEAR/Frontend/CLI.php index 4e68c065af..5e83216edb 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Frontend/CLI.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Frontend/CLI.php @@ -26,7 +26,7 @@ require_once 'PEAR/Frontend.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer.php index acaaa7fd00..b96b8e011a 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer.php @@ -35,7 +35,7 @@ define('PEAR_INSTALLER_NOBINARY', -240); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role.php index 58b661bbf4..0ca3bac637 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role.php @@ -24,7 +24,7 @@ require_once 'PEAR/XMLParser.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Cfg.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Cfg.php index 5b75c44ccd..eb126b62df 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Cfg.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Cfg.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 2007-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.7.0 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Common.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Common.php index 3e15d87789..1bd8f78cc7 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Common.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Common.php @@ -23,7 +23,7 @@ * @author Greg Beaver * @copyright 1997-2006 The PHP Group * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Data.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Data.php index 75acfef80e..ad29577809 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Data.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Data.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Doc.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Doc.php index 9374990c4c..31c069fed6 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Doc.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Doc.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Ext.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Ext.php index 6cd4d2b0a1..71d07d4224 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Ext.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Ext.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Man.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Man.php index 68b79366a6..91a586b3a8 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Man.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Man.php @@ -20,7 +20,7 @@ * @author Hannes Magnusson * @copyright 2011 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.10.0 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Php.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Php.php index 6a7a937dec..e07743ab8f 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Php.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Php.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Script.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Script.php index 387fdb3f53..907b101145 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Script.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Script.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Src.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Src.php index c92f2cf0b4..aaa9622e51 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Src.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Src.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Test.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Test.php index 87133af46c..b21450fe53 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Test.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Test.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Www.php b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Www.php index e211c1e8f7..043cd360a3 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Www.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Installer/Role/Www.php @@ -19,7 +19,7 @@ * @author Greg Beaver * @copyright 2007-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.7.0 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile.php index 21d26b6df4..d73671dd50 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile.php @@ -34,7 +34,7 @@ define('PEAR_PACKAGEFILE_ERROR_INVALID_PACKAGEVERSION', 2); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v1.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v1.php index 707781c30d..5e379f85b7 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v1.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v1.php @@ -28,7 +28,7 @@ require_once 'PEAR/PackageFile/v2.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ @@ -45,7 +45,7 @@ class PEAR_PackageFile_Generator_v1 function getPackagerVersion() { - return '1.10.3'; + return '1.10.4'; } /** @@ -196,7 +196,7 @@ class PEAR_PackageFile_Generator_v1 ); $ret = "\n"; $ret .= "\n"; - $ret .= "\n" . + $ret .= "\n" . " $pkginfo[package]"; if (isset($pkginfo['extends'])) { $ret .= "\n$pkginfo[extends]"; diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v2.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v2.php index 1c97296b73..a44a9c5a5b 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v2.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/Generator/v2.php @@ -30,7 +30,7 @@ require_once 'XML/Util.php'; * @author Stephan Schmidt (original XML_Serializer code) * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ @@ -112,7 +112,7 @@ http://pear.php.net/dtd/package-2.0.xsd', */ function getPackagerVersion() { - return '1.10.3'; + return '1.10.4'; } /** @@ -397,7 +397,7 @@ http://pear.php.net/dtd/package-2.0.xsd', $this->options['beautifyFilelist'] = true; } - $arr['attribs']['packagerversion'] = '1.10.3'; + $arr['attribs']['packagerversion'] = '1.10.4'; if ($this->serialize($arr, $options)) { return $this->_serializedData . "\n"; } diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v1.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v1.php index 6bb3276eeb..d9d19f6549 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v1.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v1.php @@ -274,7 +274,7 @@ define('PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME', 52); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2.php index 248997a6ab..ab2f539b42 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2.php @@ -22,7 +22,7 @@ require_once 'PEAR/ErrorStack.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ @@ -1668,7 +1668,7 @@ class PEAR_PackageFile_v2 if ($dtype == 'pearinstaller' && $nopearinstaller) { continue; } - if (!isset($deps[0])) { + if ((is_array($deps) && !isset($deps[0])) || !is_array($deps)) { $deps = array($deps); } foreach ($deps as $dep) { diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/Validator.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/Validator.php index f7c8921e1d..a6b01d57b8 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/Validator.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/Validator.php @@ -20,7 +20,7 @@ * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a8 * @access private @@ -111,8 +111,8 @@ class PEAR_PackageFile_v2_Validator isset($test['dependencies']['required']) && isset($test['dependencies']['required']['pearinstaller']) && isset($test['dependencies']['required']['pearinstaller']['min']) && - '1.10.3' != '@package' . '_version@' && - version_compare('1.10.3', + '1.10.4' != '@package' . '_version@' && + version_compare('1.10.4', $test['dependencies']['required']['pearinstaller']['min'], '<') ) { $this->_pearVersionTooLow($test['dependencies']['required']['pearinstaller']['min']); @@ -1350,7 +1350,7 @@ class PEAR_PackageFile_v2_Validator $this->_stack->push(__FUNCTION__, 'error', array('version' => $version), 'This package.xml requires PEAR version %version% to parse properly, we are ' . - 'version 1.10.3'); + 'version 1.10.4'); } function _invalidTagOrder($oktags, $actual, $root) diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/rw.php b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/rw.php index c52ff4f3ca..3346639b8b 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/rw.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/PackageFile/v2/rw.php @@ -22,7 +22,7 @@ require_once 'PEAR/PackageFile/v2.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a8 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Packager.php b/vendor/pear-pear.php.net/PEAR/PEAR/Packager.php index 713bc708cc..f92565bd5f 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Packager.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Packager.php @@ -30,7 +30,7 @@ require_once 'System.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/REST.php b/vendor/pear-pear.php.net/PEAR/PEAR/REST.php index aec7cf2340..419b7fbfa9 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/REST.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/REST.php @@ -28,7 +28,7 @@ require_once 'PEAR/Proxy.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ @@ -384,7 +384,7 @@ class PEAR_REST } $request .= $ifmodifiedsince . - "User-Agent: PEAR/1.10.3/PHP/" . PHP_VERSION . "\r\n"; + "User-Agent: PEAR/1.10.4/PHP/" . PHP_VERSION . "\r\n"; $username = $this->config->get('username', null, $channel); $password = $this->config->get('password', null, $channel); diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/REST/10.php b/vendor/pear-pear.php.net/PEAR/PEAR/REST/10.php index ac0aeab3ab..040371cdba 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/REST/10.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/REST/10.php @@ -26,7 +26,7 @@ require_once 'PEAR/REST.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a12 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/REST/11.php b/vendor/pear-pear.php.net/PEAR/PEAR/REST/11.php index a7e713ac4e..e2d3875fd0 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/REST/11.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/REST/11.php @@ -26,7 +26,7 @@ require_once 'PEAR/REST.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.3 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/REST/13.php b/vendor/pear-pear.php.net/PEAR/PEAR/REST/13.php index 6469fd30dd..0509897b8d 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/REST/13.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/REST/13.php @@ -27,7 +27,7 @@ require_once 'PEAR/REST/10.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a12 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Registry.php b/vendor/pear-pear.php.net/PEAR/PEAR/Registry.php index c599c61ee5..5588f23f4d 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Registry.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Registry.php @@ -36,7 +36,7 @@ define('PEAR_REGISTRY_ERROR_CHANNEL_FILE', -6); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/RunTest.php b/vendor/pear-pear.php.net/PEAR/PEAR/RunTest.php index 271ef86bd5..95797665e6 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/RunTest.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/RunTest.php @@ -37,7 +37,7 @@ putenv("PHP_PEAR_RUNTESTS=1"); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.3.3 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Common.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Common.php index e433c3e267..3ae59159bd 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Common.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Common.php @@ -47,7 +47,7 @@ define('PEAR_TASK_PACKAGEANDINSTALL', 3); * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 * @abstract diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript.php index 457ac28f6e..154952f4f0 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript.php @@ -27,7 +27,7 @@ require_once 'PEAR/Task/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript/rw.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript/rw.php index 10f5e7b26e..7aa699bb30 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript/rw.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Postinstallscript/rw.php @@ -23,7 +23,7 @@ require_once 'PEAR/Task/Postinstallscript.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a10 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace.php index 1ea71bfe53..a5fc779ef1 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace.php @@ -23,7 +23,7 @@ require_once 'PEAR/Task/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace/rw.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace/rw.php index a2ffc24b1d..6080146463 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace/rw.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Replace/rw.php @@ -23,7 +23,7 @@ require_once 'PEAR/Task/Replace.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a10 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol.php index 3b1d84c9a3..5bf2ac0518 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol.php @@ -23,7 +23,7 @@ require_once 'PEAR/Task/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol/rw.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol/rw.php index 7e98f21845..7316ba05fb 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol/rw.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Unixeol/rw.php @@ -23,7 +23,7 @@ require_once 'PEAR/Task/Unixeol.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a10 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol.php index e0f2f26d8c..190f21381c 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol.php @@ -24,7 +24,7 @@ require_once 'PEAR/Task/Common.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol/rw.php b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol/rw.php index 2f10c5eb23..4ef537b7ca 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol/rw.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Task/Windowseol/rw.php @@ -24,7 +24,7 @@ require_once 'PEAR/Task/Windowseol.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a10 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Validate.php b/vendor/pear-pear.php.net/PEAR/PEAR/Validate.php index 0dc7433c1c..4b98b3ad52 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Validate.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Validate.php @@ -31,7 +31,7 @@ require_once 'PEAR/Validator/PECL.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/Validator/PECL.php b/vendor/pear-pear.php.net/PEAR/PEAR/Validator/PECL.php index 157cda3271..44bfb4f48b 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/Validator/PECL.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/Validator/PECL.php @@ -23,7 +23,7 @@ require_once 'PEAR/Validate.php'; * @author Greg Beaver * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a5 */ diff --git a/vendor/pear-pear.php.net/PEAR/PEAR/XMLParser.php b/vendor/pear-pear.php.net/PEAR/PEAR/XMLParser.php index 85b10a72a6..f0fa553d3c 100644 --- a/vendor/pear-pear.php.net/PEAR/PEAR/XMLParser.php +++ b/vendor/pear-pear.php.net/PEAR/PEAR/XMLParser.php @@ -22,7 +22,7 @@ * @author Stephan Schmidt (original XML_Unserializer code) * @copyright 1997-2009 The Authors * @license http://opensource.org/licenses/bsd-license New BSD License - * @version Release: 1.10.3 + * @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.0a1 */ diff --git a/vendor/pear-pear.php.net/PEAR/System.php b/vendor/pear-pear.php.net/PEAR/System.php index 3184f46948..146346b57a 100644 --- a/vendor/pear-pear.php.net/PEAR/System.php +++ b/vendor/pear-pear.php.net/PEAR/System.php @@ -50,7 +50,7 @@ $GLOBALS['_System_temp_files'] = array(); * @author Tomas V.V. Cox * @copyright 1997-2006 The PHP Group * @license http://opensource.org/licenses/bsd-license.php New BSD License -* @version Release: 1.10.3 +* @version Release: 1.10.4 * @link http://pear.php.net/package/PEAR * @since Class available since Release 0.1 * @static diff --git a/vendor/pear-pear.php.net/PEAR/pearcmd.php b/vendor/pear-pear.php.net/PEAR/pearcmd.php index e089c818e7..60cb9769bf 100644 --- a/vendor/pear-pear.php.net/PEAR/pearcmd.php +++ b/vendor/pear-pear.php.net/PEAR/pearcmd.php @@ -41,7 +41,7 @@ ob_implicit_flush(true); $_PEAR_PHPDIR = '#$%^&*'; set_error_handler('error_handler'); -$pear_package_version = "1.10.3"; +$pear_package_version = "1.10.4"; require_once 'PEAR.php'; require_once 'PEAR/Frontend.php'; diff --git a/view/lang/de/messages.po b/view/lang/de/messages.po index 7d89df233b..2cd3d1d5ef 100644 --- a/view/lang/de/messages.po +++ b/view/lang/de/messages.po @@ -4,7 +4,7 @@ # # Translators: # Andreas H., 2015 -# Andreas H., 2015-2016 +# Andreas H., 2015-2017 # Tobias Diekershoff , 2011 # David Rabel , 2016 # Erkan Yilmaz , 2011 @@ -35,8 +35,8 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-03 10:29+0100\n" -"PO-Revision-Date: 2017-03-05 11:30+0000\n" +"POT-Creation-Date: 2017-05-03 07:08+0200\n" +"PO-Revision-Date: 2017-05-05 05:43+0000\n" "Last-Translator: Tobias Diekershoff \n" "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n" "MIME-Version: 1.0\n" @@ -45,252 +45,18 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: include/profile_selectors.php:6 -msgid "Male" -msgstr "Männlich" - -#: include/profile_selectors.php:6 -msgid "Female" -msgstr "Weiblich" - -#: include/profile_selectors.php:6 -msgid "Currently Male" -msgstr "Momentan männlich" - -#: include/profile_selectors.php:6 -msgid "Currently Female" -msgstr "Momentan weiblich" - -#: include/profile_selectors.php:6 -msgid "Mostly Male" -msgstr "Hauptsächlich männlich" - -#: include/profile_selectors.php:6 -msgid "Mostly Female" -msgstr "Hauptsächlich weiblich" - -#: include/profile_selectors.php:6 -msgid "Transgender" -msgstr "Transgender" - -#: include/profile_selectors.php:6 -msgid "Intersex" -msgstr "Intersex" - -#: include/profile_selectors.php:6 -msgid "Transsexual" -msgstr "Transsexuell" - -#: include/profile_selectors.php:6 -msgid "Hermaphrodite" -msgstr "Hermaphrodit" - -#: include/profile_selectors.php:6 -msgid "Neuter" -msgstr "Neuter" - -#: include/profile_selectors.php:6 -msgid "Non-specific" -msgstr "Nicht spezifiziert" - -#: include/profile_selectors.php:6 -msgid "Other" -msgstr "Andere" - -#: include/profile_selectors.php:6 include/conversation.php:1478 -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "Unentschieden" -msgstr[1] "Unentschieden" - -#: include/profile_selectors.php:23 -msgid "Males" -msgstr "Männer" - -#: include/profile_selectors.php:23 -msgid "Females" -msgstr "Frauen" - -#: include/profile_selectors.php:23 -msgid "Gay" -msgstr "Schwul" - -#: include/profile_selectors.php:23 -msgid "Lesbian" -msgstr "Lesbisch" - -#: include/profile_selectors.php:23 -msgid "No Preference" -msgstr "Keine Vorlieben" - -#: include/profile_selectors.php:23 -msgid "Bisexual" -msgstr "Bisexuell" - -#: include/profile_selectors.php:23 -msgid "Autosexual" -msgstr "Autosexual" - -#: include/profile_selectors.php:23 -msgid "Abstinent" -msgstr "Abstinent" - -#: include/profile_selectors.php:23 -msgid "Virgin" -msgstr "Jungfrauen" - -#: include/profile_selectors.php:23 -msgid "Deviant" -msgstr "Deviant" - -#: include/profile_selectors.php:23 -msgid "Fetish" -msgstr "Fetish" - -#: include/profile_selectors.php:23 -msgid "Oodles" -msgstr "Oodles" - -#: include/profile_selectors.php:23 -msgid "Nonsexual" -msgstr "Nonsexual" - -#: include/profile_selectors.php:42 -msgid "Single" -msgstr "Single" - -#: include/profile_selectors.php:42 -msgid "Lonely" -msgstr "Einsam" - -#: include/profile_selectors.php:42 -msgid "Available" -msgstr "Verfügbar" - -#: include/profile_selectors.php:42 -msgid "Unavailable" -msgstr "Nicht verfügbar" - -#: include/profile_selectors.php:42 -msgid "Has crush" -msgstr "verknallt" - -#: include/profile_selectors.php:42 -msgid "Infatuated" -msgstr "verliebt" - -#: include/profile_selectors.php:42 -msgid "Dating" -msgstr "Dating" - -#: include/profile_selectors.php:42 -msgid "Unfaithful" -msgstr "Untreu" - -#: include/profile_selectors.php:42 -msgid "Sex Addict" -msgstr "Sexbesessen" - -#: include/profile_selectors.php:42 include/user.php:280 include/user.php:284 -msgid "Friends" -msgstr "Kontakte" - -#: include/profile_selectors.php:42 -msgid "Friends/Benefits" -msgstr "Freunde/Zuwendungen" - -#: include/profile_selectors.php:42 -msgid "Casual" -msgstr "Casual" - -#: include/profile_selectors.php:42 -msgid "Engaged" -msgstr "Verlobt" - -#: include/profile_selectors.php:42 -msgid "Married" -msgstr "Verheiratet" - -#: include/profile_selectors.php:42 -msgid "Imaginarily married" -msgstr "imaginär verheiratet" - -#: include/profile_selectors.php:42 -msgid "Partners" -msgstr "Partner" - -#: include/profile_selectors.php:42 -msgid "Cohabiting" -msgstr "zusammenlebend" - -#: include/profile_selectors.php:42 -msgid "Common law" -msgstr "wilde Ehe" - -#: include/profile_selectors.php:42 -msgid "Happy" -msgstr "Glücklich" - -#: include/profile_selectors.php:42 -msgid "Not looking" -msgstr "Nicht auf der Suche" - -#: include/profile_selectors.php:42 -msgid "Swinger" -msgstr "Swinger" - -#: include/profile_selectors.php:42 -msgid "Betrayed" -msgstr "Betrogen" - -#: include/profile_selectors.php:42 -msgid "Separated" -msgstr "Getrennt" - -#: include/profile_selectors.php:42 -msgid "Unstable" -msgstr "Unstabil" - -#: include/profile_selectors.php:42 -msgid "Divorced" -msgstr "Geschieden" - -#: include/profile_selectors.php:42 -msgid "Imaginarily divorced" -msgstr "imaginär geschieden" - -#: include/profile_selectors.php:42 -msgid "Widowed" -msgstr "Verwitwet" - -#: include/profile_selectors.php:42 -msgid "Uncertain" -msgstr "Unsicher" - -#: include/profile_selectors.php:42 -msgid "It's complicated" -msgstr "Ist kompliziert" - -#: include/profile_selectors.php:42 -msgid "Don't care" -msgstr "Ist mir nicht wichtig" - -#: include/profile_selectors.php:42 -msgid "Ask me" -msgstr "Frag mich" - -#: include/ForumManager.php:114 include/nav.php:131 include/text.php:1027 -#: view/theme/vier/theme.php:250 +#: include/ForumManager.php:114 include/nav.php:131 include/text.php:1093 +#: view/theme/vier/theme.php:254 msgid "Forums" msgstr "Foren" -#: include/ForumManager.php:116 view/theme/vier/theme.php:252 +#: include/ForumManager.php:116 view/theme/vier/theme.php:256 msgid "External link to forum" msgstr "Externer Link zum Forum" -#: include/ForumManager.php:119 include/contact_widgets.php:253 -#: include/items.php:2254 mod/content.php:624 object/Item.php:447 -#: view/theme/vier/theme.php:255 boot.php:971 +#: include/ForumManager.php:119 include/contact_widgets.php:269 +#: include/items.php:2450 mod/content.php:624 object/Item.php:420 +#: view/theme/vier/theme.php:259 boot.php:1000 msgid "show more" msgstr "mehr anzeigen" @@ -298,13 +64,13 @@ msgstr "mehr anzeigen" msgid "System" msgstr "System" -#: include/NotificationsManager.php:160 include/nav.php:158 mod/admin.php:412 +#: include/NotificationsManager.php:160 include/nav.php:158 mod/admin.php:517 #: view/theme/frio/theme.php:253 msgid "Network" msgstr "Netzwerk" -#: include/NotificationsManager.php:167 mod/profiles.php:695 -#: mod/network.php:846 +#: include/NotificationsManager.php:167 mod/network.php:832 +#: mod/profiles.php:696 msgid "Personal" msgstr "Persönlich" @@ -370,8415 +136,8611 @@ msgid "New Follower" msgstr "Neuer Bewunderer" #: include/Photo.php:1038 include/Photo.php:1054 include/Photo.php:1062 -#: include/Photo.php:1087 include/message.php:146 mod/item.php:462 -#: mod/wall_upload.php:216 mod/wall_upload.php:230 mod/wall_upload.php:237 +#: include/Photo.php:1087 include/message.php:146 mod/wall_upload.php:249 +#: mod/item.php:467 msgid "Wall Photos" msgstr "Pinnwand-Bilder" -#: include/auth.php:45 -msgid "Logged out." -msgstr "Abgemeldet." - -#: include/auth.php:116 include/auth.php:177 mod/openid.php:110 -msgid "Login failed." -msgstr "Anmeldung fehlgeschlagen." - -#: include/auth.php:131 include/user.php:75 -msgid "" -"We encountered a problem while logging in with the OpenID you provided. " -"Please check the correct spelling of the ID." -msgstr "Beim Versuch Dich mit der von Dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe, dass Du die OpenID richtig geschrieben hast." +#: include/delivery.php:427 +msgid "(no subject)" +msgstr "(kein Betreff)" -#: include/auth.php:131 include/user.php:75 -msgid "The error message was:" -msgstr "Die Fehlermeldung lautete:" +#: include/delivery.php:439 include/enotify.php:43 +msgid "noreply" +msgstr "noreply" -#: include/bbcode.php:350 include/bbcode.php:1055 include/bbcode.php:1056 -msgid "Image/photo" -msgstr "Bild/Foto" +#: include/like.php:27 include/conversation.php:153 include/diaspora.php:1576 +#, php-format +msgid "%1$s likes %2$s's %3$s" +msgstr "%1$s mag %2$ss %3$s" -#: include/bbcode.php:467 +#: include/like.php:31 include/like.php:36 include/conversation.php:156 #, php-format -msgid "%2$s %3$s" -msgstr "%2$s %3$s" - -#: include/bbcode.php:1015 include/bbcode.php:1035 -msgid "$1 wrote:" -msgstr "$1 hat geschrieben:" - -#: include/bbcode.php:1064 include/bbcode.php:1065 -msgid "Encrypted content" -msgstr "Verschlüsselter Inhalt" - -#: include/bbcode.php:1167 -msgid "Invalid source protocol" -msgstr "Ungültiges Quell-Protokoll" - -#: include/bbcode.php:1177 -msgid "Invalid link protocol" -msgstr "Ungültiges Link-Protokoll" +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "%1$s mag %2$ss %3$s nicht" -#: include/dba_pdo.php:72 include/dba.php:56 +#: include/like.php:41 #, php-format -msgid "Cannot locate DNS info for database server '%s'" -msgstr "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln." - -#: include/enotify.php:24 -msgid "Friendica Notification" -msgstr "Friendica-Benachrichtigung" - -#: include/enotify.php:27 -msgid "Thank You," -msgstr "Danke," +msgid "%1$s is attending %2$s's %3$s" +msgstr "%1$s nimmt an %2$ss %3$s teil." -#: include/enotify.php:30 +#: include/like.php:46 #, php-format -msgid "%s Administrator" -msgstr "der Administrator von %s" +msgid "%1$s is not attending %2$s's %3$s" +msgstr "%1$s nimmt nicht an %2$ss %3$s teil." -#: include/enotify.php:32 +#: include/like.php:51 #, php-format -msgid "%1$s, %2$s Administrator" -msgstr "%1$s, %2$s Administrator" +msgid "%1$s may attend %2$s's %3$s" +msgstr "%1$s nimmt eventuell an %2$ss %3$s teil." -#: include/enotify.php:43 include/delivery.php:482 -msgid "noreply" -msgstr "noreply" +#: include/like.php:178 include/conversation.php:141 +#: include/conversation.php:293 include/text.php:1872 mod/subthread.php:88 +#: mod/tagger.php:62 +msgid "photo" +msgstr "Foto" -#: include/enotify.php:70 -#, php-format -msgid "%s " -msgstr "%s " +#: include/like.php:178 include/conversation.php:136 +#: include/conversation.php:146 include/conversation.php:288 +#: include/conversation.php:297 include/diaspora.php:1580 mod/subthread.php:88 +#: mod/tagger.php:62 +msgid "status" +msgstr "Status" -#: include/enotify.php:83 -#, php-format -msgid "[Friendica:Notify] New mail received at %s" -msgstr "[Friendica-Meldung] Neue Nachricht erhalten von %s" +#: include/like.php:180 include/conversation.php:133 +#: include/conversation.php:285 include/text.php:1870 +msgid "event" +msgstr "Event" -#: include/enotify.php:85 -#, php-format -msgid "%1$s sent you a new private message at %2$s." -msgstr "%1$s hat Dir eine neue private Nachricht auf %2$s geschickt." +#: include/message.php:15 include/message.php:169 +msgid "[no subject]" +msgstr "[kein Betreff]" -#: include/enotify.php:86 -#, php-format -msgid "%1$s sent you %2$s." -msgstr "%1$s schickte Dir %2$s." +#: include/nav.php:35 mod/navigation.php:19 +msgid "Nothing new here" +msgstr "Keine Neuigkeiten" -#: include/enotify.php:86 -msgid "a private message" -msgstr "eine private Nachricht" +#: include/nav.php:39 mod/navigation.php:23 +msgid "Clear notifications" +msgstr "Bereinige Benachrichtigungen" -#: include/enotify.php:88 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." -msgstr "Bitte besuche %s, um Deine privaten Nachrichten anzusehen und/oder zu beantworten." +#: include/nav.php:40 include/text.php:1083 +msgid "@name, !forum, #tags, content" +msgstr "@name, !forum, #tags, content" -#: include/enotify.php:134 -#, php-format -msgid "%1$s commented on [url=%2$s]a %3$s[/url]" -msgstr "%1$s kommentierte [url=%2$s]a %3$s[/url]" +#: include/nav.php:78 view/theme/frio/theme.php:243 boot.php:1867 +msgid "Logout" +msgstr "Abmelden" -#: include/enotify.php:141 -#, php-format -msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" -msgstr "%1$s kommentierte [url=%2$s]%3$ss %4$s[/url]" +#: include/nav.php:78 view/theme/frio/theme.php:243 +msgid "End this session" +msgstr "Diese Sitzung beenden" -#: include/enotify.php:149 -#, php-format -msgid "%1$s commented on [url=%2$s]your %3$s[/url]" -msgstr "%1$s kommentierte [url=%2$s]Deinen %3$s[/url]" +#: include/nav.php:81 include/identity.php:769 mod/contacts.php:645 +#: mod/contacts.php:841 view/theme/frio/theme.php:246 +msgid "Status" +msgstr "Status" -#: include/enotify.php:159 -#, php-format -msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" -msgstr "[Friendica-Meldung] Kommentar zum Beitrag #%1$d von %2$s" +#: include/nav.php:81 include/nav.php:161 view/theme/frio/theme.php:246 +msgid "Your posts and conversations" +msgstr "Deine Beiträge und Unterhaltungen" -#: include/enotify.php:161 -#, php-format -msgid "%s commented on an item/conversation you have been following." -msgstr "%s hat einen Beitrag kommentiert, dem Du folgst." +#: include/nav.php:82 include/identity.php:622 include/identity.php:744 +#: include/identity.php:777 mod/contacts.php:647 mod/contacts.php:849 +#: mod/newmember.php:32 mod/profperm.php:105 view/theme/frio/theme.php:247 +msgid "Profile" +msgstr "Profil" -#: include/enotify.php:164 include/enotify.php:178 include/enotify.php:192 -#: include/enotify.php:206 include/enotify.php:224 include/enotify.php:238 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." -msgstr "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren." +#: include/nav.php:82 view/theme/frio/theme.php:247 +msgid "Your profile page" +msgstr "Deine Profilseite" -#: include/enotify.php:171 -#, php-format -msgid "[Friendica:Notify] %s posted to your profile wall" -msgstr "[Friendica-Meldung] %s hat auf Deine Pinnwand geschrieben" +#: include/nav.php:83 include/identity.php:785 mod/fbrowser.php:31 +#: view/theme/frio/theme.php:248 +msgid "Photos" +msgstr "Bilder" -#: include/enotify.php:173 -#, php-format -msgid "%1$s posted to your profile wall at %2$s" -msgstr "%1$s schrieb auf %2$s auf Deine Pinnwand" +#: include/nav.php:83 view/theme/frio/theme.php:248 +msgid "Your photos" +msgstr "Deine Fotos" -#: include/enotify.php:174 -#, php-format -msgid "%1$s posted to [url=%2$s]your wall[/url]" -msgstr "%1$s hat etwas auf [url=%2$s]Deiner Pinnwand[/url] gepostet" +#: include/nav.php:84 include/identity.php:793 include/identity.php:796 +#: view/theme/frio/theme.php:249 +msgid "Videos" +msgstr "Videos" -#: include/enotify.php:185 -#, php-format -msgid "[Friendica:Notify] %s tagged you" -msgstr "[Friendica-Meldung] %s hat Dich erwähnt" +#: include/nav.php:84 view/theme/frio/theme.php:249 +msgid "Your videos" +msgstr "Deine Videos" -#: include/enotify.php:187 -#, php-format -msgid "%1$s tagged you at %2$s" -msgstr "%1$s erwähnte Dich auf %2$s" +#: include/nav.php:85 include/nav.php:149 include/identity.php:805 +#: include/identity.php:816 mod/cal.php:270 mod/events.php:374 +#: view/theme/frio/theme.php:250 view/theme/frio/theme.php:254 +msgid "Events" +msgstr "Veranstaltungen" -#: include/enotify.php:188 -#, php-format -msgid "%1$s [url=%2$s]tagged you[/url]." -msgstr "%1$s [url=%2$s]erwähnte Dich[/url]." +#: include/nav.php:85 view/theme/frio/theme.php:250 +msgid "Your events" +msgstr "Deine Ereignisse" -#: include/enotify.php:199 -#, php-format -msgid "[Friendica:Notify] %s shared a new post" -msgstr "[Friendica Benachrichtigung] %s hat einen Beitrag geteilt" +#: include/nav.php:86 +msgid "Personal notes" +msgstr "Persönliche Notizen" -#: include/enotify.php:201 -#, php-format -msgid "%1$s shared a new post at %2$s" -msgstr "%1$s hat einen neuen Beitrag auf %2$s geteilt" +#: include/nav.php:86 +msgid "Your personal notes" +msgstr "Deine persönlichen Notizen" -#: include/enotify.php:202 -#, php-format -msgid "%1$s [url=%2$s]shared a post[/url]." -msgstr "%1$s [url=%2$s]hat einen Beitrag geteilt[/url]." +#: include/nav.php:95 mod/bookmarklet.php:12 boot.php:1868 +msgid "Login" +msgstr "Anmeldung" -#: include/enotify.php:213 -#, php-format -msgid "[Friendica:Notify] %1$s poked you" -msgstr "[Friendica-Meldung] %1$s hat Dich angestupst" +#: include/nav.php:95 +msgid "Sign in" +msgstr "Anmelden" -#: include/enotify.php:215 -#, php-format -msgid "%1$s poked you at %2$s" -msgstr "%1$s hat Dich auf %2$s angestupst" +#: include/nav.php:105 +msgid "Home Page" +msgstr "Homepage" -#: include/enotify.php:216 -#, php-format -msgid "%1$s [url=%2$s]poked you[/url]." -msgstr "%1$s [url=%2$s]hat Dich angestupst[/url]." +#: include/nav.php:109 mod/register.php:289 boot.php:1844 +msgid "Register" +msgstr "Registrieren" -#: include/enotify.php:231 -#, php-format -msgid "[Friendica:Notify] %s tagged your post" -msgstr "[Friendica-Meldung] %s hat Deinen Beitrag getaggt" +#: include/nav.php:109 +msgid "Create an account" +msgstr "Nutzerkonto erstellen" -#: include/enotify.php:233 -#, php-format -msgid "%1$s tagged your post at %2$s" -msgstr "%1$s erwähnte Deinen Beitrag auf %2$s" +#: include/nav.php:115 mod/help.php:47 view/theme/vier/theme.php:297 +msgid "Help" +msgstr "Hilfe" -#: include/enotify.php:234 -#, php-format -msgid "%1$s tagged [url=%2$s]your post[/url]" -msgstr "%1$s erwähnte [url=%2$s]Deinen Beitrag[/url]" +#: include/nav.php:115 +msgid "Help and documentation" +msgstr "Hilfe und Dokumentation" -#: include/enotify.php:245 -msgid "[Friendica:Notify] Introduction received" -msgstr "[Friendica-Meldung] Kontaktanfrage erhalten" +#: include/nav.php:119 +msgid "Apps" +msgstr "Apps" -#: include/enotify.php:247 -#, php-format -msgid "You've received an introduction from '%1$s' at %2$s" -msgstr "Du hast eine Kontaktanfrage von '%1$s' auf %2$s erhalten" +#: include/nav.php:119 +msgid "Addon applications, utilities, games" +msgstr "Addon Anwendungen, Dienstprogramme, Spiele" -#: include/enotify.php:248 -#, php-format -msgid "You've received [url=%1$s]an introduction[/url] from %2$s." -msgstr "Du hast eine [url=%1$s]Kontaktanfrage[/url] von %2$s erhalten." +#: include/nav.php:123 include/text.php:1080 mod/search.php:149 +msgid "Search" +msgstr "Suche" -#: include/enotify.php:252 include/enotify.php:295 -#, php-format -msgid "You may visit their profile at %s" -msgstr "Hier kannst Du das Profil betrachten: %s" +#: include/nav.php:123 +msgid "Search site content" +msgstr "Inhalt der Seite durchsuchen" -#: include/enotify.php:254 -#, php-format -msgid "Please visit %s to approve or reject the introduction." -msgstr "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen." +#: include/nav.php:126 include/text.php:1088 +msgid "Full Text" +msgstr "Volltext" -#: include/enotify.php:262 -msgid "[Friendica:Notify] A new person is sharing with you" -msgstr "[Friendica Benachrichtigung] Eine neue Person teilt mit Dir" +#: include/nav.php:127 include/text.php:1089 +msgid "Tags" +msgstr "Tags" -#: include/enotify.php:264 include/enotify.php:265 -#, php-format -msgid "%1$s is sharing with you at %2$s" -msgstr "%1$s teilt mit Dir auf %2$s" +#: include/nav.php:128 include/nav.php:192 include/identity.php:838 +#: include/identity.php:841 include/text.php:1090 mod/contacts.php:800 +#: mod/contacts.php:861 mod/viewcontacts.php:121 view/theme/frio/theme.php:257 +msgid "Contacts" +msgstr "Kontakte" -#: include/enotify.php:271 -msgid "[Friendica:Notify] You have a new follower" -msgstr "[Friendica Benachrichtigung] Du hast einen neuen Kontakt auf " +#: include/nav.php:143 include/nav.php:145 mod/community.php:32 +msgid "Community" +msgstr "Gemeinschaft" -#: include/enotify.php:273 include/enotify.php:274 -#, php-format -msgid "You have a new follower at %2$s : %1$s" -msgstr "Du hast einen neuen Kontakt auf %2$s: %1$s" +#: include/nav.php:143 +msgid "Conversations on this site" +msgstr "Unterhaltungen auf dieser Seite" -#: include/enotify.php:285 -msgid "[Friendica:Notify] Friend suggestion received" -msgstr "[Friendica-Meldung] Kontaktvorschlag erhalten" +#: include/nav.php:145 +msgid "Conversations on the network" +msgstr "Unterhaltungen im Netzwerk" -#: include/enotify.php:287 -#, php-format -msgid "You've received a friend suggestion from '%1$s' at %2$s" -msgstr "Du hast einen Kontakt-Vorschlag von '%1$s' auf %2$s erhalten" +#: include/nav.php:149 include/identity.php:808 include/identity.php:819 +#: view/theme/frio/theme.php:254 +msgid "Events and Calendar" +msgstr "Ereignisse und Kalender" -#: include/enotify.php:288 -#, php-format -msgid "" -"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." -msgstr "Du hast einen [url=%1$s]Kontakt-Vorschlag[/url] %2$s von %3$s erhalten." +#: include/nav.php:152 +msgid "Directory" +msgstr "Verzeichnis" -#: include/enotify.php:293 -msgid "Name:" -msgstr "Name:" +#: include/nav.php:152 +msgid "People directory" +msgstr "Nutzerverzeichnis" -#: include/enotify.php:294 -msgid "Photo:" -msgstr "Foto:" +#: include/nav.php:154 +msgid "Information" +msgstr "Information" -#: include/enotify.php:297 -#, php-format -msgid "Please visit %s to approve or reject the suggestion." -msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen." +#: include/nav.php:154 +msgid "Information about this friendica instance" +msgstr "Informationen zu dieser Friendica Instanz" -#: include/enotify.php:305 include/enotify.php:319 -msgid "[Friendica:Notify] Connection accepted" -msgstr "[Friendica-Benachrichtigung] Kontaktanfrage bestätigt" +#: include/nav.php:158 view/theme/frio/theme.php:253 +msgid "Conversations from your friends" +msgstr "Unterhaltungen Deiner Kontakte" -#: include/enotify.php:307 include/enotify.php:321 -#, php-format -msgid "'%1$s' has accepted your connection request at %2$s" -msgstr "'%1$s' hat Deine Kontaktanfrage auf %2$s bestätigt" +#: include/nav.php:159 +msgid "Network Reset" +msgstr "Netzwerk zurücksetzen" -#: include/enotify.php:308 include/enotify.php:322 -#, php-format -msgid "%2$s has accepted your [url=%1$s]connection request[/url]." -msgstr "%2$s hat Deine [url=%1$s]Kontaktanfrage[/url] akzeptiert." +#: include/nav.php:159 +msgid "Load Network page with no filters" +msgstr "Netzwerk-Seite ohne Filter laden" -#: include/enotify.php:312 -msgid "" -"You are now mutual friends and may exchange status updates, photos, and " -"email without restriction." -msgstr "Ihr seid nun beidseitige Kontakte und könnt Statusmitteilungen, Bilder und Emails ohne Einschränkungen austauschen." +#: include/nav.php:166 +msgid "Friend Requests" +msgstr "Kontaktanfragen" -#: include/enotify.php:314 -#, php-format -msgid "Please visit %s if you wish to make any changes to this relationship." -msgstr "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst." +#: include/nav.php:169 mod/notifications.php:96 +msgid "Notifications" +msgstr "Benachrichtigungen" -#: include/enotify.php:326 -#, php-format -msgid "" -"'%1$s' has chosen to accept you a \"fan\", which restricts some forms of " -"communication - such as private messaging and some profile interactions. If " -"this is a celebrity or community page, these settings were applied " -"automatically." -msgstr "'%1$s' hat sich entschieden Dich als \"Fan\" zu akzeptieren, dies schränkt einige Kommunikationswege - wie private Nachrichten und einige Interaktionsmöglichkeiten auf der Profilseite - ein. Wenn dies eine Berühmtheiten- oder Gemeinschaftsseite ist, werden diese Einstellungen automatisch vorgenommen." +#: include/nav.php:170 +msgid "See all notifications" +msgstr "Alle Benachrichtigungen anzeigen" -#: include/enotify.php:328 -#, php-format -msgid "" -"'%1$s' may choose to extend this into a two-way or more permissive " -"relationship in the future." -msgstr "'%1$s' kann den Kontaktstatus zu einem späteren Zeitpunkt erweitern und diese Einschränkungen aufheben. " +#: include/nav.php:171 mod/settings.php:906 +msgid "Mark as seen" +msgstr "Als gelesen markieren" -#: include/enotify.php:330 -#, php-format -msgid "Please visit %s if you wish to make any changes to this relationship." -msgstr "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst." +#: include/nav.php:171 +msgid "Mark all system notifications seen" +msgstr "Markiere alle Systembenachrichtigungen als gelesen" -#: include/enotify.php:340 -msgid "[Friendica System:Notify] registration request" -msgstr "[Friendica System:Benachrichtigung] Registrationsanfrage" +#: include/nav.php:175 mod/message.php:179 view/theme/frio/theme.php:255 +msgid "Messages" +msgstr "Nachrichten" -#: include/enotify.php:342 -#, php-format -msgid "You've received a registration request from '%1$s' at %2$s" -msgstr "Du hast eine Registrierungsanfrage von %2$s auf '%1$s' erhalten" +#: include/nav.php:175 view/theme/frio/theme.php:255 +msgid "Private mail" +msgstr "Private E-Mail" -#: include/enotify.php:343 -#, php-format -msgid "You've received a [url=%1$s]registration request[/url] from %2$s." -msgstr "Du hast eine [url=%1$s]Registrierungsanfrage[/url] von %2$s erhalten." +#: include/nav.php:176 +msgid "Inbox" +msgstr "Eingang" -#: include/enotify.php:347 -#, php-format -msgid "Full Name:\t%1$s\\nSite Location:\t%2$s\\nLogin Name:\t%3$s (%4$s)" -msgstr "Kompletter Name:\t%1$s\\nURL der Seite:\t%2$s\\nLogin Name:\t%3$s (%4$s)" +#: include/nav.php:177 +msgid "Outbox" +msgstr "Ausgang" -#: include/enotify.php:350 -#, php-format -msgid "Please visit %s to approve or reject the request." -msgstr "Bitte besuche %s um die Anfrage zu bearbeiten." +#: include/nav.php:178 mod/message.php:16 +msgid "New Message" +msgstr "Neue Nachricht" -#: include/follow.php:81 mod/dfrn_request.php:512 -msgid "Disallowed profile URL." -msgstr "Nicht erlaubte Profil-URL." +#: include/nav.php:181 +msgid "Manage" +msgstr "Verwalten" -#: include/follow.php:86 -msgid "Connect URL missing." -msgstr "Connect-URL fehlt" +#: include/nav.php:181 +msgid "Manage other pages" +msgstr "Andere Seiten verwalten" -#: include/follow.php:114 -msgid "" -"This site is not configured to allow communications with other networks." -msgstr "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann." +#: include/nav.php:184 mod/settings.php:81 +msgid "Delegations" +msgstr "Delegationen" -#: include/follow.php:115 include/follow.php:129 -msgid "No compatible communication protocols or feeds were discovered." -msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden." +#: include/nav.php:184 mod/delegate.php:130 +msgid "Delegate Page Management" +msgstr "Delegiere das Management für die Seite" -#: include/follow.php:127 -msgid "The profile address specified does not provide adequate information." -msgstr "Die angegebene Profiladresse liefert unzureichende Informationen." +#: include/nav.php:186 mod/newmember.php:22 mod/settings.php:111 +#: mod/admin.php:1618 mod/admin.php:1894 view/theme/frio/theme.php:256 +msgid "Settings" +msgstr "Einstellungen" -#: include/follow.php:132 -msgid "An author or name was not found." -msgstr "Es wurde kein Autor oder Name gefunden." +#: include/nav.php:186 view/theme/frio/theme.php:256 +msgid "Account settings" +msgstr "Kontoeinstellungen" -#: include/follow.php:135 -msgid "No browser URL could be matched to this address." -msgstr "Zu dieser Adresse konnte keine passende Browser URL gefunden werden." +#: include/nav.php:189 include/identity.php:290 +msgid "Profiles" +msgstr "Profile" -#: include/follow.php:138 -msgid "" -"Unable to match @-style Identity Address with a known protocol or email " -"contact." -msgstr "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen." +#: include/nav.php:189 +msgid "Manage/Edit Profiles" +msgstr "Profile Verwalten/Editieren" -#: include/follow.php:139 -msgid "Use mailto: in front of address to force email check." -msgstr "Verwende mailto: vor der Email Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen." +#: include/nav.php:192 view/theme/frio/theme.php:257 +msgid "Manage/edit friends and contacts" +msgstr " Kontakte verwalten/editieren" -#: include/follow.php:145 -msgid "" -"The profile address specified belongs to a network which has been disabled " -"on this site." -msgstr "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde." +#: include/nav.php:197 mod/admin.php:196 +msgid "Admin" +msgstr "Administration" -#: include/follow.php:150 -msgid "" -"Limited profile. This person will be unable to receive direct/personal " -"notifications from you." -msgstr "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von Dir erhalten können." +#: include/nav.php:197 +msgid "Site setup and configuration" +msgstr "Einstellungen der Seite und Konfiguration" -#: include/follow.php:251 -msgid "Unable to retrieve contact information." -msgstr "Konnte die Kontaktinformationen nicht empfangen." +#: include/nav.php:200 +msgid "Navigation" +msgstr "Navigation" -#: include/group.php:25 -msgid "" -"A deleted group with this name was revived. Existing item permissions " -"may apply to this group and any future members. If this is " -"not what you intended, please create another group with a different name." -msgstr "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen könnten auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls Du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen." +#: include/nav.php:200 +msgid "Site map" +msgstr "Sitemap" -#: include/group.php:210 -msgid "Default privacy group for new contacts" -msgstr "Voreingestellte Gruppe für neue Kontakte" +#: include/plugin.php:530 include/plugin.php:532 +msgid "Click here to upgrade." +msgstr "Zum Upgraden hier klicken." -#: include/group.php:243 -msgid "Everybody" -msgstr "Alle Kontakte" +#: include/plugin.php:538 +msgid "This action exceeds the limits set by your subscription plan." +msgstr "Diese Aktion überschreitet die Obergrenze Deines Abonnements." -#: include/group.php:266 -msgid "edit" -msgstr "bearbeiten" +#: include/plugin.php:543 +msgid "This action is not available under your subscription plan." +msgstr "Diese Aktion ist in Deinem Abonnement nicht verfügbar." -#: include/group.php:287 mod/newmember.php:61 -msgid "Groups" -msgstr "Gruppen" - -#: include/group.php:289 -msgid "Edit groups" -msgstr "Gruppen bearbeiten" +#: include/profile_selectors.php:6 +msgid "Male" +msgstr "Männlich" -#: include/group.php:291 -msgid "Edit group" -msgstr "Gruppe bearbeiten" +#: include/profile_selectors.php:6 +msgid "Female" +msgstr "Weiblich" -#: include/group.php:292 -msgid "Create a new group" -msgstr "Neue Gruppe erstellen" +#: include/profile_selectors.php:6 +msgid "Currently Male" +msgstr "Momentan männlich" -#: include/group.php:293 mod/group.php:98 mod/group.php:188 -msgid "Group Name: " -msgstr "Gruppenname:" +#: include/profile_selectors.php:6 +msgid "Currently Female" +msgstr "Momentan weiblich" -#: include/group.php:295 -msgid "Contacts not in any group" -msgstr "Kontakte in keiner Gruppe" +#: include/profile_selectors.php:6 +msgid "Mostly Male" +msgstr "Hauptsächlich männlich" -#: include/group.php:297 mod/network.php:200 -msgid "add" -msgstr "hinzufügen" +#: include/profile_selectors.php:6 +msgid "Mostly Female" +msgstr "Hauptsächlich weiblich" -#: include/like.php:164 include/conversation.php:130 -#: include/conversation.php:266 include/text.php:1806 mod/subthread.php:88 -#: mod/tagger.php:62 -msgid "photo" -msgstr "Foto" +#: include/profile_selectors.php:6 +msgid "Transgender" +msgstr "Transgender" -#: include/like.php:164 include/conversation.php:125 -#: include/conversation.php:134 include/conversation.php:261 -#: include/conversation.php:270 include/diaspora.php:1530 mod/subthread.php:88 -#: mod/tagger.php:62 -msgid "status" -msgstr "Status" +#: include/profile_selectors.php:6 +msgid "Intersex" +msgstr "Intersex" -#: include/like.php:166 include/conversation.php:122 -#: include/conversation.php:258 include/text.php:1804 -msgid "event" -msgstr "Event" +#: include/profile_selectors.php:6 +msgid "Transsexual" +msgstr "Transsexuell" -#: include/like.php:184 include/conversation.php:141 include/diaspora.php:1526 -#, php-format -msgid "%1$s likes %2$s's %3$s" -msgstr "%1$s mag %2$ss %3$s" +#: include/profile_selectors.php:6 +msgid "Hermaphrodite" +msgstr "Hermaphrodit" -#: include/like.php:187 include/conversation.php:144 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "%1$s mag %2$ss %3$s nicht" +#: include/profile_selectors.php:6 +msgid "Neuter" +msgstr "Neuter" -#: include/like.php:190 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "%1$s nimmt an %2$ss %3$s teil." +#: include/profile_selectors.php:6 +msgid "Non-specific" +msgstr "Nicht spezifiziert" -#: include/like.php:193 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "%1$s nimmt nicht an %2$ss %3$s teil." +#: include/profile_selectors.php:6 +msgid "Other" +msgstr "Andere" -#: include/like.php:196 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "%1$s nimmt eventuell an %2$ss %3$s teil." +#: include/profile_selectors.php:6 include/conversation.php:1547 +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "Unentschieden" +msgstr[1] "Unentschieden" -#: include/message.php:15 include/message.php:169 -msgid "[no subject]" -msgstr "[kein Betreff]" +#: include/profile_selectors.php:23 +msgid "Males" +msgstr "Männer" -#: include/nav.php:35 mod/navigation.php:19 -msgid "Nothing new here" -msgstr "Keine Neuigkeiten" +#: include/profile_selectors.php:23 +msgid "Females" +msgstr "Frauen" -#: include/nav.php:39 mod/navigation.php:23 -msgid "Clear notifications" -msgstr "Bereinige Benachrichtigungen" +#: include/profile_selectors.php:23 +msgid "Gay" +msgstr "Schwul" -#: include/nav.php:40 include/text.php:1017 -msgid "@name, !forum, #tags, content" -msgstr "@name, !forum, #tags, content" +#: include/profile_selectors.php:23 +msgid "Lesbian" +msgstr "Lesbisch" -#: include/nav.php:78 view/theme/frio/theme.php:243 boot.php:1833 -msgid "Logout" -msgstr "Abmelden" +#: include/profile_selectors.php:23 +msgid "No Preference" +msgstr "Keine Vorlieben" -#: include/nav.php:78 view/theme/frio/theme.php:243 -msgid "End this session" -msgstr "Diese Sitzung beenden" +#: include/profile_selectors.php:23 +msgid "Bisexual" +msgstr "Bisexuell" -#: include/nav.php:81 include/identity.php:766 mod/contacts.php:645 -#: mod/contacts.php:841 view/theme/frio/theme.php:246 -msgid "Status" -msgstr "Status" +#: include/profile_selectors.php:23 +msgid "Autosexual" +msgstr "Autosexual" -#: include/nav.php:81 include/nav.php:161 view/theme/frio/theme.php:246 -msgid "Your posts and conversations" -msgstr "Deine Beiträge und Unterhaltungen" +#: include/profile_selectors.php:23 +msgid "Abstinent" +msgstr "Abstinent" -#: include/nav.php:82 include/identity.php:617 include/identity.php:741 -#: include/identity.php:774 mod/newmember.php:32 mod/profperm.php:105 -#: mod/contacts.php:647 mod/contacts.php:849 view/theme/frio/theme.php:247 -msgid "Profile" -msgstr "Profil" +#: include/profile_selectors.php:23 +msgid "Virgin" +msgstr "Jungfrauen" -#: include/nav.php:82 view/theme/frio/theme.php:247 -msgid "Your profile page" -msgstr "Deine Profilseite" +#: include/profile_selectors.php:23 +msgid "Deviant" +msgstr "Deviant" -#: include/nav.php:83 include/identity.php:782 mod/fbrowser.php:31 -#: view/theme/frio/theme.php:248 -msgid "Photos" -msgstr "Bilder" +#: include/profile_selectors.php:23 +msgid "Fetish" +msgstr "Fetish" -#: include/nav.php:83 view/theme/frio/theme.php:248 -msgid "Your photos" -msgstr "Deine Fotos" +#: include/profile_selectors.php:23 +msgid "Oodles" +msgstr "Oodles" -#: include/nav.php:84 include/identity.php:790 include/identity.php:793 -#: view/theme/frio/theme.php:249 -msgid "Videos" -msgstr "Videos" +#: include/profile_selectors.php:23 +msgid "Nonsexual" +msgstr "Nonsexual" -#: include/nav.php:84 view/theme/frio/theme.php:249 -msgid "Your videos" -msgstr "Deine Videos" +#: include/profile_selectors.php:42 +msgid "Single" +msgstr "Single" -#: include/nav.php:85 include/nav.php:149 include/identity.php:802 -#: include/identity.php:813 mod/cal.php:270 mod/events.php:386 -#: view/theme/frio/theme.php:250 view/theme/frio/theme.php:254 -msgid "Events" -msgstr "Veranstaltungen" +#: include/profile_selectors.php:42 +msgid "Lonely" +msgstr "Einsam" -#: include/nav.php:85 view/theme/frio/theme.php:250 -msgid "Your events" -msgstr "Deine Ereignisse" +#: include/profile_selectors.php:42 +msgid "Available" +msgstr "Verfügbar" -#: include/nav.php:86 -msgid "Personal notes" -msgstr "Persönliche Notizen" +#: include/profile_selectors.php:42 +msgid "Unavailable" +msgstr "Nicht verfügbar" -#: include/nav.php:86 -msgid "Your personal notes" -msgstr "Deine persönlichen Notizen" +#: include/profile_selectors.php:42 +msgid "Has crush" +msgstr "verknallt" -#: include/nav.php:95 mod/bookmarklet.php:12 boot.php:1834 -msgid "Login" -msgstr "Anmeldung" +#: include/profile_selectors.php:42 +msgid "Infatuated" +msgstr "verliebt" -#: include/nav.php:95 -msgid "Sign in" -msgstr "Anmelden" +#: include/profile_selectors.php:42 +msgid "Dating" +msgstr "Dating" -#: include/nav.php:105 -msgid "Home Page" -msgstr "Homepage" +#: include/profile_selectors.php:42 +msgid "Unfaithful" +msgstr "Untreu" -#: include/nav.php:109 mod/register.php:289 boot.php:1809 -msgid "Register" -msgstr "Registrieren" +#: include/profile_selectors.php:42 +msgid "Sex Addict" +msgstr "Sexbesessen" -#: include/nav.php:109 -msgid "Create an account" -msgstr "Nutzerkonto erstellen" +#: include/profile_selectors.php:42 include/user.php:263 include/user.php:267 +msgid "Friends" +msgstr "Kontakte" -#: include/nav.php:115 mod/help.php:47 view/theme/vier/theme.php:293 -msgid "Help" -msgstr "Hilfe" +#: include/profile_selectors.php:42 +msgid "Friends/Benefits" +msgstr "Freunde/Zuwendungen" -#: include/nav.php:115 -msgid "Help and documentation" -msgstr "Hilfe und Dokumentation" +#: include/profile_selectors.php:42 +msgid "Casual" +msgstr "Casual" -#: include/nav.php:119 -msgid "Apps" -msgstr "Apps" +#: include/profile_selectors.php:42 +msgid "Engaged" +msgstr "Verlobt" -#: include/nav.php:119 -msgid "Addon applications, utilities, games" -msgstr "Addon Anwendungen, Dienstprogramme, Spiele" +#: include/profile_selectors.php:42 +msgid "Married" +msgstr "Verheiratet" -#: include/nav.php:123 include/text.php:1014 mod/search.php:149 -msgid "Search" -msgstr "Suche" +#: include/profile_selectors.php:42 +msgid "Imaginarily married" +msgstr "imaginär verheiratet" -#: include/nav.php:123 -msgid "Search site content" -msgstr "Inhalt der Seite durchsuchen" +#: include/profile_selectors.php:42 +msgid "Partners" +msgstr "Partner" -#: include/nav.php:126 include/text.php:1022 -msgid "Full Text" -msgstr "Volltext" +#: include/profile_selectors.php:42 +msgid "Cohabiting" +msgstr "zusammenlebend" -#: include/nav.php:127 include/text.php:1023 -msgid "Tags" -msgstr "Tags" - -#: include/nav.php:128 include/nav.php:192 include/identity.php:835 -#: include/identity.php:838 include/text.php:1024 mod/contacts.php:800 -#: mod/contacts.php:861 mod/viewcontacts.php:121 view/theme/frio/theme.php:257 -msgid "Contacts" -msgstr "Kontakte" - -#: include/nav.php:143 include/nav.php:145 mod/community.php:36 -msgid "Community" -msgstr "Gemeinschaft" - -#: include/nav.php:143 -msgid "Conversations on this site" -msgstr "Unterhaltungen auf dieser Seite" - -#: include/nav.php:145 -msgid "Conversations on the network" -msgstr "Unterhaltungen im Netzwerk" - -#: include/nav.php:149 include/identity.php:805 include/identity.php:816 -#: view/theme/frio/theme.php:254 -msgid "Events and Calendar" -msgstr "Ereignisse und Kalender" - -#: include/nav.php:152 -msgid "Directory" -msgstr "Verzeichnis" - -#: include/nav.php:152 -msgid "People directory" -msgstr "Nutzerverzeichnis" - -#: include/nav.php:154 -msgid "Information" -msgstr "Information" - -#: include/nav.php:154 -msgid "Information about this friendica instance" -msgstr "Informationen zu dieser Friendica Instanz" - -#: include/nav.php:158 view/theme/frio/theme.php:253 -msgid "Conversations from your friends" -msgstr "Unterhaltungen Deiner Kontakte" - -#: include/nav.php:159 -msgid "Network Reset" -msgstr "Netzwerk zurücksetzen" - -#: include/nav.php:159 -msgid "Load Network page with no filters" -msgstr "Netzwerk-Seite ohne Filter laden" - -#: include/nav.php:166 -msgid "Friend Requests" -msgstr "Kontaktanfragen" - -#: include/nav.php:169 mod/notifications.php:96 -msgid "Notifications" -msgstr "Benachrichtigungen" - -#: include/nav.php:170 -msgid "See all notifications" -msgstr "Alle Benachrichtigungen anzeigen" - -#: include/nav.php:171 mod/settings.php:906 -msgid "Mark as seen" -msgstr "Als gelesen markieren" - -#: include/nav.php:171 -msgid "Mark all system notifications seen" -msgstr "Markiere alle Systembenachrichtigungen als gelesen" - -#: include/nav.php:175 mod/message.php:179 view/theme/frio/theme.php:255 -msgid "Messages" -msgstr "Nachrichten" - -#: include/nav.php:175 view/theme/frio/theme.php:255 -msgid "Private mail" -msgstr "Private E-Mail" - -#: include/nav.php:176 -msgid "Inbox" -msgstr "Eingang" - -#: include/nav.php:177 -msgid "Outbox" -msgstr "Ausgang" - -#: include/nav.php:178 mod/message.php:16 -msgid "New Message" -msgstr "Neue Nachricht" - -#: include/nav.php:181 -msgid "Manage" -msgstr "Verwalten" - -#: include/nav.php:181 -msgid "Manage other pages" -msgstr "Andere Seiten verwalten" - -#: include/nav.php:184 mod/settings.php:81 -msgid "Delegations" -msgstr "Delegationen" - -#: include/nav.php:184 mod/delegate.php:130 -msgid "Delegate Page Management" -msgstr "Delegiere das Management für die Seite" - -#: include/nav.php:186 mod/newmember.php:22 mod/settings.php:111 -#: mod/admin.php:1545 mod/admin.php:1815 view/theme/frio/theme.php:256 -msgid "Settings" -msgstr "Einstellungen" - -#: include/nav.php:186 view/theme/frio/theme.php:256 -msgid "Account settings" -msgstr "Kontoeinstellungen" - -#: include/nav.php:189 include/identity.php:285 -msgid "Profiles" -msgstr "Profile" - -#: include/nav.php:189 -msgid "Manage/Edit Profiles" -msgstr "Profile Verwalten/Editieren" - -#: include/nav.php:192 view/theme/frio/theme.php:257 -msgid "Manage/edit friends and contacts" -msgstr " Kontakte verwalten/editieren" +#: include/profile_selectors.php:42 +msgid "Common law" +msgstr "wilde Ehe" -#: include/nav.php:197 mod/admin.php:187 -msgid "Admin" -msgstr "Administration" +#: include/profile_selectors.php:42 +msgid "Happy" +msgstr "Glücklich" -#: include/nav.php:197 -msgid "Site setup and configuration" -msgstr "Einstellungen der Seite und Konfiguration" +#: include/profile_selectors.php:42 +msgid "Not looking" +msgstr "Nicht auf der Suche" -#: include/nav.php:200 -msgid "Navigation" -msgstr "Navigation" +#: include/profile_selectors.php:42 +msgid "Swinger" +msgstr "Swinger" -#: include/nav.php:200 -msgid "Site map" -msgstr "Sitemap" +#: include/profile_selectors.php:42 +msgid "Betrayed" +msgstr "Betrogen" -#: include/oembed.php:266 -msgid "Embedded content" -msgstr "Eingebetteter Inhalt" +#: include/profile_selectors.php:42 +msgid "Separated" +msgstr "Getrennt" -#: include/oembed.php:274 -msgid "Embedding disabled" -msgstr "Einbettungen deaktiviert" +#: include/profile_selectors.php:42 +msgid "Unstable" +msgstr "Unstabil" -#: include/ostatus.php:1832 -#, php-format -msgid "%s is now following %s." -msgstr "%s folgt nun %s" +#: include/profile_selectors.php:42 +msgid "Divorced" +msgstr "Geschieden" -#: include/ostatus.php:1833 -msgid "following" -msgstr "folgen" +#: include/profile_selectors.php:42 +msgid "Imaginarily divorced" +msgstr "imaginär geschieden" -#: include/ostatus.php:1836 -#, php-format -msgid "%s stopped following %s." -msgstr "%s hat aufgehört %s zu folgen" +#: include/profile_selectors.php:42 +msgid "Widowed" +msgstr "Verwitwet" -#: include/ostatus.php:1837 -msgid "stopped following" -msgstr "wird nicht mehr gefolgt" +#: include/profile_selectors.php:42 +msgid "Uncertain" +msgstr "Unsicher" -#: include/plugin.php:530 include/plugin.php:532 -msgid "Click here to upgrade." -msgstr "Zum Upgraden hier klicken." +#: include/profile_selectors.php:42 +msgid "It's complicated" +msgstr "Ist kompliziert" -#: include/plugin.php:538 -msgid "This action exceeds the limits set by your subscription plan." -msgstr "Diese Aktion überschreitet die Obergrenze Deines Abonnements." +#: include/profile_selectors.php:42 +msgid "Don't care" +msgstr "Ist mir nicht wichtig" -#: include/plugin.php:543 -msgid "This action is not available under your subscription plan." -msgstr "Diese Aktion ist in Deinem Abonnement nicht verfügbar." +#: include/profile_selectors.php:42 +msgid "Ask me" +msgstr "Frag mich" -#: include/security.php:22 +#: include/security.php:61 msgid "Welcome " msgstr "Willkommen " -#: include/security.php:23 +#: include/security.php:62 msgid "Please upload a profile photo." msgstr "Bitte lade ein Profilbild hoch." -#: include/security.php:26 +#: include/security.php:65 msgid "Welcome back " msgstr "Willkommen zurück " -#: include/security.php:375 +#: include/security.php:429 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 Sicherheitsmerkmal war nicht korrekt. Das passiert meistens wenn das Formular vor dem Absenden zu lange geöffnet war (länger als 3 Stunden)." -#: include/uimport.php:94 +#: include/uimport.php:91 msgid "Error decoding account file" msgstr "Fehler beim Verarbeiten der Account Datei" -#: include/uimport.php:100 +#: include/uimport.php:97 msgid "Error! No version data in file! This is not a Friendica account file?" msgstr "Fehler! Keine Versionsdaten in der Datei! Ist das wirklich eine Friendica Account Datei?" -#: include/uimport.php:116 include/uimport.php:127 +#: include/uimport.php:113 include/uimport.php:124 msgid "Error! Cannot check nickname" msgstr "Fehler! Konnte den Nickname nicht überprüfen." -#: include/uimport.php:120 include/uimport.php:131 +#: include/uimport.php:117 include/uimport.php:128 #, php-format msgid "User '%s' already exists on this server!" msgstr "Nutzer '%s' existiert bereits auf diesem Server!" -#: include/uimport.php:153 +#: include/uimport.php:150 msgid "User creation error" msgstr "Fehler beim Anlegen des Nutzeraccounts aufgetreten" -#: include/uimport.php:173 +#: include/uimport.php:170 msgid "User profile creation error" msgstr "Fehler beim Anlegen des Nutzerkontos" -#: include/uimport.php:222 +#: include/uimport.php:219 #, php-format msgid "%d contact not imported" msgid_plural "%d contacts not imported" msgstr[0] "%d Kontakt nicht importiert" msgstr[1] "%d Kontakte nicht importiert" -#: include/uimport.php:292 +#: include/uimport.php:289 msgid "Done. You can now login with your username and password" msgstr "Erledigt. Du kannst Dich jetzt mit Deinem Nutzernamen und Passwort anmelden" -#: include/user.php:39 mod/settings.php:375 -msgid "Passwords do not match. Password unchanged." -msgstr "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert." +#: include/Contact.php:395 include/Contact.php:408 include/Contact.php:453 +#: include/conversation.php:1004 include/conversation.php:1020 +#: mod/allfriends.php:68 mod/directory.php:157 mod/match.php:73 +#: mod/suggest.php:82 mod/dirfind.php:209 +msgid "View Profile" +msgstr "Profil anschauen" -#: include/user.php:48 -msgid "An invitation is required." -msgstr "Du benötigst eine Einladung." +#: include/Contact.php:409 include/contact_widgets.php:32 +#: include/conversation.php:1017 mod/allfriends.php:69 mod/contacts.php:610 +#: mod/match.php:74 mod/suggest.php:83 mod/dirfind.php:210 mod/follow.php:106 +msgid "Connect/Follow" +msgstr "Verbinden/Folgen" -#: include/user.php:53 -msgid "Invitation could not be verified." -msgstr "Die Einladung konnte nicht überprüft werden." +#: include/Contact.php:452 include/conversation.php:1003 +msgid "View Status" +msgstr "Pinnwand anschauen" -#: include/user.php:61 -msgid "Invalid OpenID url" -msgstr "Ungültige OpenID URL" +#: include/Contact.php:454 include/conversation.php:1005 +msgid "View Photos" +msgstr "Bilder anschauen" -#: include/user.php:82 -msgid "Please enter the required information." -msgstr "Bitte trage die erforderlichen Informationen ein." +#: include/Contact.php:455 include/conversation.php:1006 +msgid "Network Posts" +msgstr "Netzwerkbeiträge" -#: include/user.php:96 -msgid "Please use a shorter name." -msgstr "Bitte verwende einen kürzeren Namen." +#: include/Contact.php:456 include/conversation.php:1007 +msgid "View Contact" +msgstr "Kontakt anzeigen" -#: include/user.php:98 -msgid "Name too short." -msgstr "Der Name ist zu kurz." +#: include/Contact.php:457 +msgid "Drop Contact" +msgstr "Kontakt löschen" -#: include/user.php:113 -msgid "That doesn't appear to be your full (First Last) name." -msgstr "Das scheint nicht Dein kompletter Name (Vor- und Nachname) zu sein." +#: include/Contact.php:458 include/conversation.php:1008 +msgid "Send PM" +msgstr "Private Nachricht senden" -#: include/user.php:118 -msgid "Your email domain is not among those allowed on this site." -msgstr "Die Domain Deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt." +#: include/Contact.php:459 include/conversation.php:1012 +msgid "Poke" +msgstr "Anstupsen" -#: include/user.php:121 -msgid "Not a valid email address." -msgstr "Keine gültige E-Mail-Adresse." +#: include/Contact.php:840 +msgid "Organisation" +msgstr "Organisation" -#: include/user.php:134 -msgid "Cannot use that email." -msgstr "Konnte diese E-Mail-Adresse nicht verwenden." +#: include/Contact.php:843 +msgid "News" +msgstr "Nachrichten" -#: include/user.php:140 -msgid "Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"." -msgstr "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\" und \"_\") bestehen." +#: include/Contact.php:846 +msgid "Forum" +msgstr "Forum" -#: include/user.php:147 include/user.php:245 -msgid "Nickname is already registered. Please choose another." -msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen." - -#: include/user.php:157 -msgid "" -"Nickname was once registered here and may not be re-used. Please choose " -"another." -msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen." - -#: include/user.php:173 -msgid "SERIOUS ERROR: Generation of security keys failed." -msgstr "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden." - -#: include/user.php:231 -msgid "An error occurred during registration. Please try again." -msgstr "Während der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal." - -#: include/user.php:256 view/theme/duepuntozero/config.php:43 -#: view/theme/clean/config.php:60 -msgid "default" -msgstr "Standard" - -#: include/user.php:266 -msgid "An error occurred creating your default profile. Please try again." -msgstr "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal." - -#: include/user.php:326 include/user.php:334 include/user.php:342 -#: mod/profile_photo.php:74 mod/profile_photo.php:82 mod/profile_photo.php:90 -#: mod/profile_photo.php:215 mod/profile_photo.php:310 -#: mod/profile_photo.php:320 mod/photos.php:68 mod/photos.php:182 -#: mod/photos.php:768 mod/photos.php:1231 mod/photos.php:1252 -#: mod/photos.php:1839 -msgid "Profile Photos" -msgstr "Profilbilder" - -#: include/user.php:417 -#, php-format -msgid "" -"\n" -"\t\tDear %1$s,\n" -"\t\t\tThank you for registering at %2$s. Your account is pending for approval by the administrator.\n" -"\t" -msgstr "\nHallo %1$s,\n\ndanke für Deine Registrierung auf %2$s. Dein Account wurde muss noch vom Admin des Knotens geprüft werden." - -#: include/user.php:427 -#, php-format -msgid "Registration at %s" -msgstr "Registrierung als %s" - -#: include/user.php:437 -#, php-format -msgid "" -"\n" -"\t\tDear %1$s,\n" -"\t\t\tThank you for registering at %2$s. Your account has been created.\n" -"\t" -msgstr "\nHallo %1$s,\n\ndanke für Deine Registrierung auf %2$s. Dein Account wurde eingerichtet." - -#: include/user.php:441 -#, php-format -msgid "" -"\n" -"\t\tThe login details are as follows:\n" -"\t\t\tSite Location:\t%3$s\n" -"\t\t\tLogin Name:\t%1$s\n" -"\t\t\tPassword:\t%5$s\n" -"\n" -"\t\tYou may change your password from your account \"Settings\" page after logging\n" -"\t\tin.\n" -"\n" -"\t\tPlease take a few moments to review the other account settings on that page.\n" -"\n" -"\t\tYou may also wish to add some basic information to your default profile\n" -"\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" -"\n" -"\t\tWe recommend setting your full name, adding a profile photo,\n" -"\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n" -"\t\tperhaps what country you live in; if you do not wish to be more specific\n" -"\t\tthan that.\n" -"\n" -"\t\tWe fully respect your right to privacy, and none of these items are necessary.\n" -"\t\tIf you are new and do not know anybody here, they may help\n" -"\t\tyou to make some new and interesting friends.\n" -"\n" -"\n" -"\t\tThank you and welcome to %2$s." -msgstr "\nDie Anmelde-Details sind die folgenden:\n\tAdresse der Seite:\t%3$s\n\tBenutzernamename:\t%1$s\n\tPasswort:\t%5$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nDanke für Deine Aufmerksamkeit und willkommen auf %2$s." - -#: include/user.php:473 mod/admin.php:1234 -#, php-format -msgid "Registration details for %s" -msgstr "Details der Registration von %s" - -#: include/acl_selectors.php:341 +#: include/acl_selectors.php:353 msgid "Post to Email" msgstr "An E-Mail senden" -#: include/acl_selectors.php:346 +#: include/acl_selectors.php:358 #, php-format msgid "Connectors disabled, since \"%s\" is enabled." msgstr "Konnektoren sind nicht verfügbar, da \"%s\" aktiv ist." -#: include/acl_selectors.php:347 mod/settings.php:1188 +#: include/acl_selectors.php:359 mod/settings.php:1188 msgid "Hide your profile details from unknown viewers?" msgstr "Profil-Details vor unbekannten Betrachtern verbergen?" -#: include/acl_selectors.php:352 +#: include/acl_selectors.php:365 msgid "Visible to everybody" msgstr "Für jeden sichtbar" -#: include/acl_selectors.php:353 view/theme/vier/config.php:108 +#: include/acl_selectors.php:366 view/theme/vier/config.php:108 msgid "show" msgstr "zeigen" -#: include/acl_selectors.php:354 view/theme/vier/config.php:108 +#: include/acl_selectors.php:367 view/theme/vier/config.php:108 msgid "don't show" msgstr "nicht zeigen" -#: include/acl_selectors.php:360 mod/editpost.php:123 +#: include/acl_selectors.php:373 mod/editpost.php:123 msgid "CC: email addresses" msgstr "Cc: E-Mail-Addressen" -#: include/acl_selectors.php:361 mod/editpost.php:130 +#: include/acl_selectors.php:374 mod/editpost.php:130 msgid "Example: bob@example.com, mary@example.com" msgstr "Z.B.: bob@example.com, mary@example.com" -#: include/acl_selectors.php:363 mod/events.php:516 mod/photos.php:1176 -#: mod/photos.php:1558 +#: include/acl_selectors.php:376 mod/events.php:508 mod/photos.php:1196 +#: mod/photos.php:1593 msgid "Permissions" msgstr "Berechtigungen" -#: include/acl_selectors.php:364 +#: include/acl_selectors.php:377 msgid "Close" msgstr "Schließen" -#: include/conversation.php:147 +#: include/api.php:1089 #, php-format -msgid "%1$s attends %2$s's %3$s" -msgstr "%1$s nimmt an %2$ss %3$s teil." +msgid "Daily posting limit of %d posts reached. The post was rejected." +msgstr "Das tägliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen." -#: include/conversation.php:150 +#: include/api.php:1110 #, php-format -msgid "%1$s doesn't attend %2$s's %3$s" -msgstr "%1$s nimmt nicht an %2$ss %3$s teil." +msgid "Weekly posting limit of %d posts reached. The post was rejected." +msgstr "Das wöchentliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen." -#: include/conversation.php:153 +#: include/api.php:1131 #, php-format -msgid "%1$s attends maybe %2$s's %3$s" -msgstr "%1$s nimmt eventuell an %2$ss %3$s teil." +msgid "Monthly posting limit of %d posts reached. The post was rejected." +msgstr "Das monatliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen." -#: include/conversation.php:185 mod/dfrn_confirm.php:478 -#, php-format -msgid "%1$s is now friends with %2$s" -msgstr "%1$s ist nun mit %2$s befreundet" +#: include/auth.php:51 +msgid "Logged out." +msgstr "Abgemeldet." -#: include/conversation.php:219 -#, php-format -msgid "%1$s poked %2$s" -msgstr "%1$s stupste %2$s" +#: include/auth.php:122 include/auth.php:184 mod/openid.php:110 +msgid "Login failed." +msgstr "Anmeldung fehlgeschlagen." -#: include/conversation.php:239 mod/mood.php:63 -#, php-format -msgid "%1$s is currently %2$s" -msgstr "%1$s ist momentan %2$s" +#: include/auth.php:138 include/user.php:75 +msgid "" +"We encountered a problem while logging in with the OpenID you provided. " +"Please check the correct spelling of the ID." +msgstr "Beim Versuch Dich mit der von Dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe, dass Du die OpenID richtig geschrieben hast." -#: include/conversation.php:278 mod/tagger.php:95 -#, php-format -msgid "%1$s tagged %2$s's %3$s with %4$s" -msgstr "%1$s hat %2$ss %3$s mit %4$s getaggt" +#: include/auth.php:138 include/user.php:75 +msgid "The error message was:" +msgstr "Die Fehlermeldung lautete:" -#: include/conversation.php:303 -msgid "post/item" -msgstr "Nachricht/Beitrag" +#: include/bb2diaspora.php:230 include/event.php:17 mod/localtime.php:12 +msgid "l F d, Y \\@ g:i A" +msgstr "l, d. F Y\\, H:i" -#: include/conversation.php:304 -#, php-format -msgid "%1$s marked %2$s's %3$s as favorite" -msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert" +#: include/bb2diaspora.php:236 include/event.php:34 include/event.php:54 +#: include/event.php:525 +msgid "Starts:" +msgstr "Beginnt:" -#: include/conversation.php:587 mod/content.php:372 mod/photos.php:1629 -#: mod/profiles.php:346 -msgid "Likes" -msgstr "Likes" +#: include/bb2diaspora.php:244 include/event.php:37 include/event.php:60 +#: include/event.php:526 +msgid "Finishes:" +msgstr "Endet:" -#: include/conversation.php:587 mod/content.php:372 mod/photos.php:1629 -#: mod/profiles.php:350 -msgid "Dislikes" -msgstr "Dislikes" +#: include/bb2diaspora.php:253 include/event.php:41 include/event.php:67 +#: include/event.php:527 include/identity.php:336 mod/contacts.php:636 +#: mod/directory.php:139 mod/events.php:493 mod/notifications.php:244 +msgid "Location:" +msgstr "Ort:" -#: include/conversation.php:588 include/conversation.php:1472 -#: mod/content.php:373 mod/photos.php:1630 -msgid "Attending" -msgid_plural "Attending" -msgstr[0] "Teilnehmend" -msgstr[1] "Teilnehmend" +#: include/bbcode.php:380 include/bbcode.php:1132 include/bbcode.php:1133 +msgid "Image/photo" +msgstr "Bild/Foto" -#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1630 -msgid "Not attending" -msgstr "Nicht teilnehmend" +#: include/bbcode.php:497 +#, php-format +msgid "%2$s %3$s" +msgstr "%2$s %3$s" -#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1630 -msgid "Might attend" -msgstr "Eventuell teilnehmend" +#: include/bbcode.php:1089 include/bbcode.php:1111 +msgid "$1 wrote:" +msgstr "$1 hat geschrieben:" -#: include/conversation.php:710 mod/content.php:453 mod/content.php:759 -#: mod/photos.php:1703 object/Item.php:137 -msgid "Select" -msgstr "Auswählen" +#: include/bbcode.php:1141 include/bbcode.php:1142 +msgid "Encrypted content" +msgstr "Verschlüsselter Inhalt" -#: include/conversation.php:711 mod/content.php:454 mod/content.php:760 -#: mod/group.php:181 mod/settings.php:744 mod/contacts.php:816 -#: mod/contacts.php:1015 mod/photos.php:1704 mod/admin.php:1435 -#: object/Item.php:138 -msgid "Delete" -msgstr "Löschen" +#: include/bbcode.php:1257 +msgid "Invalid source protocol" +msgstr "Ungültiges Quell-Protokoll" -#: include/conversation.php:755 mod/content.php:487 mod/content.php:915 -#: mod/content.php:916 object/Item.php:382 object/Item.php:383 -#, php-format -msgid "View %s's profile @ %s" -msgstr "Das Profil von %s auf %s betrachten." +#: include/bbcode.php:1267 +msgid "Invalid link protocol" +msgstr "Ungültiges Link-Protokoll" -#: include/conversation.php:767 object/Item.php:370 -msgid "Categories:" -msgstr "Kategorien:" +#: include/contact_selectors.php:32 +msgid "Unknown | Not categorised" +msgstr "Unbekannt | Nicht kategorisiert" -#: include/conversation.php:768 object/Item.php:371 -msgid "Filed under:" -msgstr "Abgelegt unter:" +#: include/contact_selectors.php:33 +msgid "Block immediately" +msgstr "Sofort blockieren" -#: include/conversation.php:775 mod/content.php:497 mod/content.php:928 -#: object/Item.php:396 -#, php-format -msgid "%s from %s" -msgstr "%s von %s" +#: include/contact_selectors.php:34 +msgid "Shady, spammer, self-marketer" +msgstr "Zwielichtig, Spammer, Selbstdarsteller" -#: include/conversation.php:791 mod/content.php:513 -msgid "View in context" -msgstr "Im Zusammenhang betrachten" +#: include/contact_selectors.php:35 +msgid "Known to me, but no opinion" +msgstr "Ist mir bekannt, hab aber keine Meinung" -#: include/conversation.php:793 include/conversation.php:1255 -#: mod/content.php:515 mod/content.php:953 mod/editpost.php:114 -#: mod/message.php:337 mod/message.php:522 mod/wallmessage.php:140 -#: mod/photos.php:1592 object/Item.php:421 -msgid "Please wait" -msgstr "Bitte warten" +#: include/contact_selectors.php:36 +msgid "OK, probably harmless" +msgstr "OK, wahrscheinlich harmlos" -#: include/conversation.php:872 -msgid "remove" -msgstr "löschen" +#: include/contact_selectors.php:37 +msgid "Reputable, has my trust" +msgstr "Seriös, hat mein Vertrauen" -#: include/conversation.php:876 -msgid "Delete Selected Items" -msgstr "Lösche die markierten Beiträge" +#: include/contact_selectors.php:56 mod/admin.php:980 +msgid "Frequently" +msgstr "immer wieder" -#: include/conversation.php:968 -msgid "Follow Thread" -msgstr "Folge der Unterhaltung" +#: include/contact_selectors.php:57 mod/admin.php:981 +msgid "Hourly" +msgstr "Stündlich" -#: include/conversation.php:969 include/Contact.php:445 -msgid "View Status" -msgstr "Pinnwand anschauen" +#: include/contact_selectors.php:58 mod/admin.php:982 +msgid "Twice daily" +msgstr "Zweimal täglich" -#: include/conversation.php:970 include/conversation.php:986 -#: include/Contact.php:388 include/Contact.php:401 include/Contact.php:446 -#: mod/allfriends.php:68 mod/directory.php:157 mod/dirfind.php:209 -#: mod/match.php:73 mod/suggest.php:82 -msgid "View Profile" -msgstr "Profil anschauen" +#: include/contact_selectors.php:59 mod/admin.php:983 +msgid "Daily" +msgstr "Täglich" -#: include/conversation.php:971 include/Contact.php:447 -msgid "View Photos" -msgstr "Bilder anschauen" +#: include/contact_selectors.php:60 +msgid "Weekly" +msgstr "Wöchentlich" -#: include/conversation.php:972 include/Contact.php:448 -msgid "Network Posts" -msgstr "Netzwerkbeiträge" +#: include/contact_selectors.php:61 +msgid "Monthly" +msgstr "Monatlich" -#: include/conversation.php:973 include/Contact.php:449 -msgid "View Contact" -msgstr "Kontakt anzeigen" +#: include/contact_selectors.php:76 mod/dfrn_request.php:886 +msgid "Friendica" +msgstr "Friendica" -#: include/conversation.php:974 include/Contact.php:451 -msgid "Send PM" -msgstr "Private Nachricht senden" +#: include/contact_selectors.php:77 +msgid "OStatus" +msgstr "OStatus" -#: include/conversation.php:978 include/Contact.php:452 -msgid "Poke" -msgstr "Anstupsen" +#: include/contact_selectors.php:78 +msgid "RSS/Atom" +msgstr "RSS/Atom" -#: include/conversation.php:983 include/contact_widgets.php:32 -#: include/Contact.php:402 mod/allfriends.php:69 mod/dirfind.php:210 -#: mod/follow.php:106 mod/match.php:74 mod/suggest.php:83 mod/contacts.php:610 -msgid "Connect/Follow" -msgstr "Verbinden/Folgen" +#: include/contact_selectors.php:79 include/contact_selectors.php:86 +#: mod/admin.php:1490 mod/admin.php:1503 mod/admin.php:1516 mod/admin.php:1534 +msgid "Email" +msgstr "E-Mail" -#: include/conversation.php:1099 -#, php-format -msgid "%s likes this." -msgstr "%s mag das." +#: include/contact_selectors.php:80 mod/dfrn_request.php:888 +#: mod/settings.php:848 +msgid "Diaspora" +msgstr "Diaspora" -#: include/conversation.php:1102 -#, php-format -msgid "%s doesn't like this." -msgstr "%s mag das nicht." +#: include/contact_selectors.php:81 +msgid "Facebook" +msgstr "Facebook" -#: include/conversation.php:1105 -#, php-format -msgid "%s attends." -msgstr "%s nimmt teil." +#: include/contact_selectors.php:82 +msgid "Zot!" +msgstr "Zott" -#: include/conversation.php:1108 -#, php-format -msgid "%s doesn't attend." -msgstr "%s nimmt nicht teil." +#: include/contact_selectors.php:83 +msgid "LinkedIn" +msgstr "LinkedIn" -#: include/conversation.php:1111 +#: include/contact_selectors.php:84 +msgid "XMPP/IM" +msgstr "XMPP/Chat" + +#: include/contact_selectors.php:85 +msgid "MySpace" +msgstr "MySpace" + +#: include/contact_selectors.php:87 +msgid "Google+" +msgstr "Google+" + +#: include/contact_selectors.php:88 +msgid "pump.io" +msgstr "pump.io" + +#: include/contact_selectors.php:89 +msgid "Twitter" +msgstr "Twitter" + +#: include/contact_selectors.php:90 +msgid "Diaspora Connector" +msgstr "Diaspora" + +#: include/contact_selectors.php:91 +msgid "GNU Social Connector" +msgstr "GNU social Connector" + +#: include/contact_selectors.php:92 +msgid "pnut" +msgstr "pnut" + +#: include/contact_selectors.php:93 +msgid "App.net" +msgstr "App.net" + +#: include/contact_widgets.php:6 +msgid "Add New Contact" +msgstr "Neuen Kontakt hinzufügen" + +#: include/contact_widgets.php:7 +msgid "Enter address or web location" +msgstr "Adresse oder Web-Link eingeben" + +#: include/contact_widgets.php:8 +msgid "Example: bob@example.com, http://example.com/barbara" +msgstr "Beispiel: bob@example.com, http://example.com/barbara" + +#: include/contact_widgets.php:10 include/identity.php:224 +#: mod/allfriends.php:85 mod/match.php:89 mod/suggest.php:101 +#: mod/dirfind.php:207 +msgid "Connect" +msgstr "Verbinden" + +#: include/contact_widgets.php:24 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "%d Einladung verfügbar" +msgstr[1] "%d Einladungen verfügbar" + +#: include/contact_widgets.php:30 +msgid "Find People" +msgstr "Leute finden" + +#: include/contact_widgets.php:31 +msgid "Enter name or interest" +msgstr "Name oder Interessen eingeben" + +#: include/contact_widgets.php:33 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Beispiel: Robert Morgenstein, Angeln" + +#: include/contact_widgets.php:34 mod/contacts.php:806 mod/directory.php:206 +msgid "Find" +msgstr "Finde" + +#: include/contact_widgets.php:35 mod/suggest.php:114 +#: view/theme/vier/theme.php:201 +msgid "Friend Suggestions" +msgstr "Kontaktvorschläge" + +#: include/contact_widgets.php:36 view/theme/vier/theme.php:200 +msgid "Similar Interests" +msgstr "Ähnliche Interessen" + +#: include/contact_widgets.php:37 +msgid "Random Profile" +msgstr "Zufälliges Profil" + +#: include/contact_widgets.php:38 view/theme/vier/theme.php:202 +msgid "Invite Friends" +msgstr "Freunde einladen" + +#: include/contact_widgets.php:125 +msgid "Networks" +msgstr "Netzwerke" + +#: include/contact_widgets.php:128 +msgid "All Networks" +msgstr "Alle Netzwerke" + +#: include/contact_widgets.php:160 include/features.php:104 +msgid "Saved Folders" +msgstr "Gespeicherte Ordner" + +#: include/contact_widgets.php:163 include/contact_widgets.php:198 +msgid "Everything" +msgstr "Alles" + +#: include/contact_widgets.php:195 +msgid "Categories" +msgstr "Kategorien" + +#: include/contact_widgets.php:264 +#, php-format +msgid "%d contact in common" +msgid_plural "%d contacts in common" +msgstr[0] "%d gemeinsamer Kontakt" +msgstr[1] "%d gemeinsame Kontakte" + +#: include/conversation.php:159 +#, php-format +msgid "%1$s attends %2$s's %3$s" +msgstr "%1$s nimmt an %2$ss %3$s teil." + +#: include/conversation.php:162 +#, php-format +msgid "%1$s doesn't attend %2$s's %3$s" +msgstr "%1$s nimmt nicht an %2$ss %3$s teil." + +#: include/conversation.php:165 +#, php-format +msgid "%1$s attends maybe %2$s's %3$s" +msgstr "%1$s nimmt eventuell an %2$ss %3$s teil." + +#: include/conversation.php:198 mod/dfrn_confirm.php:478 +#, php-format +msgid "%1$s is now friends with %2$s" +msgstr "%1$s ist nun mit %2$s befreundet" + +#: include/conversation.php:239 +#, php-format +msgid "%1$s poked %2$s" +msgstr "%1$s stupste %2$s" + +#: include/conversation.php:260 mod/mood.php:63 +#, php-format +msgid "%1$s is currently %2$s" +msgstr "%1$s ist momentan %2$s" + +#: include/conversation.php:307 mod/tagger.php:95 +#, php-format +msgid "%1$s tagged %2$s's %3$s with %4$s" +msgstr "%1$s hat %2$ss %3$s mit %4$s getaggt" + +#: include/conversation.php:334 +msgid "post/item" +msgstr "Nachricht/Beitrag" + +#: include/conversation.php:335 +#, php-format +msgid "%1$s marked %2$s's %3$s as favorite" +msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert" + +#: include/conversation.php:614 mod/content.php:372 mod/photos.php:1662 +#: mod/profiles.php:340 +msgid "Likes" +msgstr "Likes" + +#: include/conversation.php:614 mod/content.php:372 mod/photos.php:1662 +#: mod/profiles.php:344 +msgid "Dislikes" +msgstr "Dislikes" + +#: include/conversation.php:615 include/conversation.php:1541 +#: mod/content.php:373 mod/photos.php:1663 +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "Teilnehmend" +msgstr[1] "Teilnehmend" + +#: include/conversation.php:615 mod/content.php:373 mod/photos.php:1663 +msgid "Not attending" +msgstr "Nicht teilnehmend" + +#: include/conversation.php:615 mod/content.php:373 mod/photos.php:1663 +msgid "Might attend" +msgstr "Eventuell teilnehmend" + +#: include/conversation.php:747 mod/content.php:453 mod/content.php:759 +#: mod/photos.php:1728 object/Item.php:137 +msgid "Select" +msgstr "Auswählen" + +#: include/conversation.php:748 mod/contacts.php:816 mod/contacts.php:1015 +#: mod/content.php:454 mod/content.php:760 mod/photos.php:1729 +#: mod/settings.php:744 mod/admin.php:1508 object/Item.php:138 +msgid "Delete" +msgstr "Löschen" + +#: include/conversation.php:791 mod/content.php:487 mod/content.php:915 +#: mod/content.php:916 object/Item.php:356 object/Item.php:357 +#, php-format +msgid "View %s's profile @ %s" +msgstr "Das Profil von %s auf %s betrachten." + +#: include/conversation.php:803 object/Item.php:344 +msgid "Categories:" +msgstr "Kategorien:" + +#: include/conversation.php:804 object/Item.php:345 +msgid "Filed under:" +msgstr "Abgelegt unter:" + +#: include/conversation.php:811 mod/content.php:497 mod/content.php:928 +#: object/Item.php:370 +#, php-format +msgid "%s from %s" +msgstr "%s von %s" + +#: include/conversation.php:827 mod/content.php:513 +msgid "View in context" +msgstr "Im Zusammenhang betrachten" + +#: include/conversation.php:829 include/conversation.php:1298 +#: mod/content.php:515 mod/content.php:953 mod/editpost.php:114 +#: mod/wallmessage.php:140 mod/message.php:337 mod/message.php:522 +#: mod/photos.php:1627 object/Item.php:395 +msgid "Please wait" +msgstr "Bitte warten" + +#: include/conversation.php:906 +msgid "remove" +msgstr "löschen" + +#: include/conversation.php:910 +msgid "Delete Selected Items" +msgstr "Lösche die markierten Beiträge" + +#: include/conversation.php:1002 +msgid "Follow Thread" +msgstr "Folge der Unterhaltung" + +#: include/conversation.php:1139 +#, php-format +msgid "%s likes this." +msgstr "%s mag das." + +#: include/conversation.php:1142 +#, php-format +msgid "%s doesn't like this." +msgstr "%s mag das nicht." + +#: include/conversation.php:1145 +#, php-format +msgid "%s attends." +msgstr "%s nimmt teil." + +#: include/conversation.php:1148 +#, php-format +msgid "%s doesn't attend." +msgstr "%s nimmt nicht teil." + +#: include/conversation.php:1151 #, php-format msgid "%s attends maybe." msgstr "%s nimmt eventuell teil." -#: include/conversation.php:1121 +#: include/conversation.php:1162 msgid "and" msgstr "und" -#: include/conversation.php:1127 +#: include/conversation.php:1168 #, php-format msgid ", and %d other people" msgstr " und %d andere" -#: include/conversation.php:1136 +#: include/conversation.php:1177 #, php-format msgid "%2$d people like this" msgstr "%2$d Personen mögen das" -#: include/conversation.php:1137 +#: include/conversation.php:1178 #, php-format msgid "%s like this." msgstr "%s mögen das." -#: include/conversation.php:1140 +#: include/conversation.php:1181 #, php-format msgid "%2$d people don't like this" msgstr "%2$d Personen mögen das nicht" -#: include/conversation.php:1141 +#: include/conversation.php:1182 #, php-format msgid "%s don't like this." msgstr "%s mögen dies nicht." -#: include/conversation.php:1144 +#: include/conversation.php:1185 #, php-format msgid "%2$d people attend" msgstr "%2$d Personen nehmen teil" -#: include/conversation.php:1145 +#: include/conversation.php:1186 #, php-format msgid "%s attend." msgstr "%s nehmen teil." -#: include/conversation.php:1148 +#: include/conversation.php:1189 #, php-format msgid "%2$d people don't attend" msgstr "%2$d Personen nehmen nicht teil" -#: include/conversation.php:1149 +#: include/conversation.php:1190 #, php-format msgid "%s don't attend." msgstr "%s nehmen nicht teil." -#: include/conversation.php:1152 +#: include/conversation.php:1193 #, php-format msgid "%2$d people attend maybe" msgstr "%2$d Personen nehmen eventuell teil" -#: include/conversation.php:1153 +#: include/conversation.php:1194 #, php-format msgid "%s anttend maybe." msgstr "%s nehmen vielleicht teil." -#: include/conversation.php:1183 include/conversation.php:1199 +#: include/conversation.php:1223 include/conversation.php:1239 msgid "Visible to everybody" msgstr "Für jedermann sichtbar" -#: include/conversation.php:1184 include/conversation.php:1200 -#: mod/message.php:271 mod/message.php:278 mod/message.php:418 -#: mod/message.php:425 mod/wallmessage.php:114 mod/wallmessage.php:121 +#: include/conversation.php:1224 include/conversation.php:1240 +#: mod/wallmessage.php:114 mod/wallmessage.php:121 mod/message.php:271 +#: mod/message.php:278 mod/message.php:418 mod/message.php:425 msgid "Please enter a link URL:" msgstr "Bitte gib die URL des Links ein:" -#: include/conversation.php:1185 include/conversation.php:1201 +#: include/conversation.php:1225 include/conversation.php:1241 msgid "Please enter a video link/URL:" msgstr "Bitte Link/URL zum Video einfügen:" -#: include/conversation.php:1186 include/conversation.php:1202 +#: include/conversation.php:1226 include/conversation.php:1242 msgid "Please enter an audio link/URL:" msgstr "Bitte Link/URL zum Audio einfügen:" -#: include/conversation.php:1187 include/conversation.php:1203 +#: include/conversation.php:1227 include/conversation.php:1243 msgid "Tag term:" msgstr "Tag:" -#: include/conversation.php:1188 include/conversation.php:1204 +#: include/conversation.php:1228 include/conversation.php:1244 #: mod/filer.php:30 msgid "Save to Folder:" msgstr "In diesem Ordner speichern:" -#: include/conversation.php:1189 include/conversation.php:1205 +#: include/conversation.php:1229 include/conversation.php:1245 msgid "Where are you right now?" msgstr "Wo hältst Du Dich jetzt gerade auf?" -#: include/conversation.php:1190 +#: include/conversation.php:1230 msgid "Delete item(s)?" msgstr "Einträge löschen?" -#: include/conversation.php:1236 +#: include/conversation.php:1279 msgid "Share" msgstr "Teilen" -#: include/conversation.php:1237 mod/editpost.php:100 mod/message.php:335 -#: mod/message.php:519 mod/wallmessage.php:138 +#: include/conversation.php:1280 mod/editpost.php:100 mod/wallmessage.php:138 +#: mod/message.php:335 mod/message.php:519 msgid "Upload photo" msgstr "Foto hochladen" -#: include/conversation.php:1238 mod/editpost.php:101 +#: include/conversation.php:1281 mod/editpost.php:101 msgid "upload photo" msgstr "Bild hochladen" -#: include/conversation.php:1239 mod/editpost.php:102 +#: include/conversation.php:1282 mod/editpost.php:102 msgid "Attach file" msgstr "Datei anhängen" -#: include/conversation.php:1240 mod/editpost.php:103 +#: include/conversation.php:1283 mod/editpost.php:103 msgid "attach file" msgstr "Datei anhängen" -#: include/conversation.php:1241 mod/editpost.php:104 mod/message.php:336 -#: mod/message.php:520 mod/wallmessage.php:139 +#: include/conversation.php:1284 mod/editpost.php:104 mod/wallmessage.php:139 +#: mod/message.php:336 mod/message.php:520 msgid "Insert web link" msgstr "Einen Link einfügen" -#: include/conversation.php:1242 mod/editpost.php:105 +#: include/conversation.php:1285 mod/editpost.php:105 msgid "web link" msgstr "Weblink" -#: include/conversation.php:1243 mod/editpost.php:106 +#: include/conversation.php:1286 mod/editpost.php:106 msgid "Insert video link" msgstr "Video-Adresse einfügen" -#: include/conversation.php:1244 mod/editpost.php:107 +#: include/conversation.php:1287 mod/editpost.php:107 msgid "video link" msgstr "Video-Link" -#: include/conversation.php:1245 mod/editpost.php:108 +#: include/conversation.php:1288 mod/editpost.php:108 msgid "Insert audio link" msgstr "Audio-Adresse einfügen" -#: include/conversation.php:1246 mod/editpost.php:109 +#: include/conversation.php:1289 mod/editpost.php:109 msgid "audio link" msgstr "Audio-Link" -#: include/conversation.php:1247 mod/editpost.php:110 +#: include/conversation.php:1290 mod/editpost.php:110 msgid "Set your location" msgstr "Deinen Standort festlegen" -#: include/conversation.php:1248 mod/editpost.php:111 +#: include/conversation.php:1291 mod/editpost.php:111 msgid "set location" msgstr "Ort setzen" -#: include/conversation.php:1249 mod/editpost.php:112 +#: include/conversation.php:1292 mod/editpost.php:112 msgid "Clear browser location" msgstr "Browser-Standort leeren" -#: include/conversation.php:1250 mod/editpost.php:113 +#: include/conversation.php:1293 mod/editpost.php:113 msgid "clear location" msgstr "Ort löschen" -#: include/conversation.php:1252 mod/editpost.php:127 +#: include/conversation.php:1295 mod/editpost.php:127 msgid "Set title" msgstr "Titel setzen" -#: include/conversation.php:1254 mod/editpost.php:129 +#: include/conversation.php:1297 mod/editpost.php:129 msgid "Categories (comma-separated list)" msgstr "Kategorien (kommasepariert)" -#: include/conversation.php:1256 mod/editpost.php:115 +#: include/conversation.php:1299 mod/editpost.php:115 msgid "Permission settings" msgstr "Berechtigungseinstellungen" -#: include/conversation.php:1257 mod/editpost.php:144 +#: include/conversation.php:1300 mod/editpost.php:144 msgid "permissions" msgstr "Zugriffsrechte" -#: include/conversation.php:1265 mod/editpost.php:124 +#: include/conversation.php:1308 mod/editpost.php:124 msgid "Public post" msgstr "Öffentlicher Beitrag" -#: include/conversation.php:1270 mod/content.php:737 mod/editpost.php:135 -#: mod/events.php:511 mod/photos.php:1613 mod/photos.php:1661 -#: mod/photos.php:1747 object/Item.php:741 +#: include/conversation.php:1313 mod/content.php:737 mod/editpost.php:135 +#: mod/events.php:503 mod/photos.php:1647 mod/photos.php:1689 +#: mod/photos.php:1769 object/Item.php:714 msgid "Preview" msgstr "Vorschau" -#: include/conversation.php:1274 include/items.php:1983 mod/follow.php:124 -#: mod/settings.php:682 mod/settings.php:708 mod/suggest.php:32 -#: mod/tagrm.php:11 mod/tagrm.php:96 mod/videos.php:132 mod/contacts.php:455 +#: include/conversation.php:1317 include/items.php:2167 mod/contacts.php:455 #: mod/editpost.php:138 mod/fbrowser.php:100 mod/fbrowser.php:135 -#: mod/message.php:209 mod/photos.php:240 mod/photos.php:331 -#: mod/dfrn_request.php:889 +#: mod/suggest.php:32 mod/tagrm.php:11 mod/tagrm.php:96 +#: mod/dfrn_request.php:894 mod/follow.php:124 mod/message.php:209 +#: mod/photos.php:245 mod/photos.php:337 mod/settings.php:682 +#: mod/settings.php:708 mod/videos.php:132 msgid "Cancel" msgstr "Abbrechen" -#: include/conversation.php:1280 +#: include/conversation.php:1323 msgid "Post to Groups" msgstr "Poste an Gruppe" -#: include/conversation.php:1281 +#: include/conversation.php:1324 msgid "Post to Contacts" msgstr "Poste an Kontakte" -#: include/conversation.php:1282 +#: include/conversation.php:1325 msgid "Private post" msgstr "Privater Beitrag" -#: include/conversation.php:1287 include/identity.php:259 mod/editpost.php:142 +#: include/conversation.php:1330 include/identity.php:264 mod/editpost.php:142 msgid "Message" msgstr "Nachricht" -#: include/conversation.php:1288 mod/editpost.php:143 +#: include/conversation.php:1331 mod/editpost.php:143 msgid "Browser" msgstr "Browser" -#: include/conversation.php:1444 +#: include/conversation.php:1513 msgid "View all" msgstr "Zeige alle" -#: include/conversation.php:1466 +#: include/conversation.php:1535 msgid "Like" msgid_plural "Likes" msgstr[0] "mag ich" msgstr[1] "Mag ich" -#: include/conversation.php:1469 +#: include/conversation.php:1538 msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "mag ich nicht" msgstr[1] "Mag ich nicht" -#: include/conversation.php:1475 +#: include/conversation.php:1544 msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "Nicht teilnehmend " msgstr[1] "Nicht teilnehmend" -#: include/delivery.php:470 -msgid "(no subject)" -msgstr "(kein Betreff)" +#: include/datetime.php:66 include/datetime.php:68 mod/profiles.php:698 +msgid "Miscellaneous" +msgstr "Verschiedenes" -#: include/features.php:65 -msgid "General Features" -msgstr "Allgemeine Features" +#: include/datetime.php:196 include/identity.php:644 +msgid "Birthday:" +msgstr "Geburtstag:" -#: include/features.php:67 -msgid "Multiple Profiles" -msgstr "Mehrere Profile" +#: include/datetime.php:198 mod/profiles.php:721 +msgid "Age: " +msgstr "Alter: " -#: include/features.php:67 -msgid "Ability to create multiple profiles" -msgstr "Möglichkeit mehrere Profile zu erstellen" +#: include/datetime.php:200 +msgid "YYYY-MM-DD or MM-DD" +msgstr "YYYY-MM-DD oder MM-DD" -#: include/features.php:68 -msgid "Photo Location" -msgstr "Aufnahmeort" +#: include/datetime.php:370 +msgid "never" +msgstr "nie" -#: include/features.php:68 -msgid "" -"Photo metadata is normally stripped. This extracts the location (if present)" -" prior to stripping metadata and links it to a map." -msgstr "Die Foto-Metadaten werden ausgelesen. Dadurch kann der Aufnahmeort (wenn vorhanden) in einer Karte angezeigt werden." +#: include/datetime.php:376 +msgid "less than a second ago" +msgstr "vor weniger als einer Sekunde" -#: include/features.php:69 -msgid "Export Public Calendar" -msgstr "Öffentlichen Kalender exportieren" +#: include/datetime.php:379 +msgid "year" +msgstr "Jahr" -#: include/features.php:69 -msgid "Ability for visitors to download the public calendar" -msgstr "Möglichkeit für Besucher den öffentlichen Kalender herunter zu laden" - -#: include/features.php:74 -msgid "Post Composition Features" -msgstr "Beitragserstellung Features" - -#: include/features.php:75 -msgid "Post Preview" -msgstr "Beitragsvorschau" - -#: include/features.php:75 -msgid "Allow previewing posts and comments before publishing them" -msgstr "Die Vorschau von Beiträgen und Kommentaren vor dem absenden erlauben." - -#: include/features.php:76 -msgid "Auto-mention Forums" -msgstr "Foren automatisch erwähnen" - -#: include/features.php:76 -msgid "" -"Add/remove mention when a forum page is selected/deselected in ACL window." -msgstr "Automatisch eine @-Erwähnung eines Forums einfügen/entfehrnen, wenn dieses im ACL Fenster de-/markiert wurde." - -#: include/features.php:81 -msgid "Network Sidebar Widgets" -msgstr "Widgets für Netzwerk und Seitenleiste" - -#: include/features.php:82 -msgid "Search by Date" -msgstr "Archiv" - -#: include/features.php:82 -msgid "Ability to select posts by date ranges" -msgstr "Möglichkeit die Beiträge nach Datumsbereichen zu sortieren" - -#: include/features.php:83 include/features.php:113 -msgid "List Forums" -msgstr "Zeige Foren" - -#: include/features.php:83 -msgid "Enable widget to display the forums your are connected with" -msgstr "Aktiviere Widget, um die Foren mit denen du verbunden bist anzuzeigen" - -#: include/features.php:84 -msgid "Group Filter" -msgstr "Gruppen Filter" - -#: include/features.php:84 -msgid "Enable widget to display Network posts only from selected group" -msgstr "Widget zur Darstellung der Beiträge nach Kontaktgruppen sortiert aktivieren." - -#: include/features.php:85 -msgid "Network Filter" -msgstr "Netzwerk Filter" - -#: include/features.php:85 -msgid "Enable widget to display Network posts only from selected network" -msgstr "Widget zum filtern der Beiträge in Abhängigkeit des Netzwerks aus dem der Ersteller sendet aktivieren." - -#: include/features.php:86 mod/network.php:199 mod/search.php:34 -msgid "Saved Searches" -msgstr "Gespeicherte Suchen" - -#: include/features.php:86 -msgid "Save search terms for re-use" -msgstr "Speichere Suchanfragen für spätere Wiederholung." - -#: include/features.php:91 -msgid "Network Tabs" -msgstr "Netzwerk Reiter" - -#: include/features.php:92 -msgid "Network Personal Tab" -msgstr "Netzwerk-Reiter: Persönlich" - -#: include/features.php:92 -msgid "Enable tab to display only Network posts that you've interacted on" -msgstr "Aktiviert einen Netzwerk-Reiter in dem Nachrichten angezeigt werden mit denen Du interagiert hast" - -#: include/features.php:93 -msgid "Network New Tab" -msgstr "Netzwerk-Reiter: Neue" - -#: include/features.php:93 -msgid "Enable tab to display only new Network posts (from the last 12 hours)" -msgstr "Aktiviert einen Netzwerk-Reiter in dem ausschließlich neue Beiträge (der letzten 12 Stunden) angezeigt werden" - -#: include/features.php:94 -msgid "Network Shared Links Tab" -msgstr "Netzwerk-Reiter: Geteilte Links" - -#: include/features.php:94 -msgid "Enable tab to display only Network posts with links in them" -msgstr "Aktiviert einen Netzwerk-Reiter der ausschließlich Nachrichten mit Links enthält" - -#: include/features.php:99 -msgid "Post/Comment Tools" -msgstr "Werkzeuge für Beiträge und Kommentare" - -#: include/features.php:100 -msgid "Multiple Deletion" -msgstr "Mehrere Beiträge löschen" - -#: include/features.php:100 -msgid "Select and delete multiple posts/comments at once" -msgstr "Mehrere Beiträge/Kommentare markieren und gleichzeitig löschen" - -#: include/features.php:101 -msgid "Edit Sent Posts" -msgstr "Gesendete Beiträge editieren" - -#: include/features.php:101 -msgid "Edit and correct posts and comments after sending" -msgstr "Erlaubt es Beiträge und Kommentare nach dem Senden zu editieren bzw.zu korrigieren." - -#: include/features.php:102 -msgid "Tagging" -msgstr "Tagging" - -#: include/features.php:102 -msgid "Ability to tag existing posts" -msgstr "Möglichkeit bereits existierende Beiträge nachträglich mit Tags zu versehen." - -#: include/features.php:103 -msgid "Post Categories" -msgstr "Beitragskategorien" - -#: include/features.php:103 -msgid "Add categories to your posts" -msgstr "Eigene Beiträge mit Kategorien versehen" - -#: include/features.php:104 include/contact_widgets.php:150 -msgid "Saved Folders" -msgstr "Gespeicherte Ordner" - -#: include/features.php:104 -msgid "Ability to file posts under folders" -msgstr "Beiträge in Ordnern speichern aktivieren" - -#: include/features.php:105 -msgid "Dislike Posts" -msgstr "Beiträge 'nicht mögen'" - -#: include/features.php:105 -msgid "Ability to dislike posts/comments" -msgstr "Ermöglicht es Beiträge mit einem Klick 'nicht zu mögen'" - -#: include/features.php:106 -msgid "Star Posts" -msgstr "Beiträge Markieren" - -#: include/features.php:106 -msgid "Ability to mark special posts with a star indicator" -msgstr "Erlaubt es Beiträge mit einem Stern-Indikator zu markieren" - -#: include/features.php:107 -msgid "Mute Post Notifications" -msgstr "Benachrichtigungen für Beiträge Stumm schalten" - -#: include/features.php:107 -msgid "Ability to mute notifications for a thread" -msgstr "Möglichkeit Benachrichtigungen für einen Thread abbestellen zu können" - -#: include/features.php:112 -msgid "Advanced Profile Settings" -msgstr "Erweiterte Profil-Einstellungen" - -#: include/features.php:113 -msgid "Show visitors public community forums at the Advanced Profile Page" -msgstr "Zeige Besuchern öffentliche Gemeinschafts-Foren auf der Erweiterten Profil-Seite" - -#: include/photos.php:57 include/photos.php:67 mod/fbrowser.php:40 -#: mod/fbrowser.php:61 mod/photos.php:182 mod/photos.php:1106 -#: mod/photos.php:1231 mod/photos.php:1252 mod/photos.php:1817 -#: mod/photos.php:1829 -msgid "Contact Photos" -msgstr "Kontaktbilder" - -#: include/datetime.php:58 include/datetime.php:60 mod/profiles.php:697 -msgid "Miscellaneous" -msgstr "Verschiedenes" - -#: include/datetime.php:184 include/identity.php:641 -msgid "Birthday:" -msgstr "Geburtstag:" - -#: include/datetime.php:186 mod/profiles.php:720 -msgid "Age: " -msgstr "Alter: " - -#: include/datetime.php:188 -msgid "YYYY-MM-DD or MM-DD" -msgstr "YYYY-MM-DD oder MM-DD" - -#: include/datetime.php:343 -msgid "never" -msgstr "nie" - -#: include/datetime.php:349 -msgid "less than a second ago" -msgstr "vor weniger als einer Sekunde" - -#: include/datetime.php:352 -msgid "year" -msgstr "Jahr" - -#: include/datetime.php:352 +#: include/datetime.php:379 msgid "years" msgstr "Jahre" -#: include/datetime.php:353 include/event.php:481 mod/cal.php:279 -#: mod/events.php:396 +#: include/datetime.php:380 include/event.php:519 mod/cal.php:279 +#: mod/events.php:384 msgid "month" msgstr "Monat" -#: include/datetime.php:353 +#: include/datetime.php:380 msgid "months" msgstr "Monate" -#: include/datetime.php:354 include/event.php:482 mod/cal.php:280 -#: mod/events.php:397 +#: include/datetime.php:381 include/event.php:520 mod/cal.php:280 +#: mod/events.php:385 msgid "week" msgstr "Woche" -#: include/datetime.php:354 +#: include/datetime.php:381 msgid "weeks" msgstr "Wochen" -#: include/datetime.php:355 include/event.php:483 mod/cal.php:281 -#: mod/events.php:398 +#: include/datetime.php:382 include/event.php:521 mod/cal.php:281 +#: mod/events.php:386 msgid "day" msgstr "Tag" -#: include/datetime.php:355 +#: include/datetime.php:382 msgid "days" msgstr "Tage" -#: include/datetime.php:356 +#: include/datetime.php:383 msgid "hour" msgstr "Stunde" -#: include/datetime.php:356 +#: include/datetime.php:383 msgid "hours" msgstr "Stunden" -#: include/datetime.php:357 +#: include/datetime.php:384 msgid "minute" msgstr "Minute" -#: include/datetime.php:357 +#: include/datetime.php:384 msgid "minutes" msgstr "Minuten" -#: include/datetime.php:358 +#: include/datetime.php:385 msgid "second" msgstr "Sekunde" -#: include/datetime.php:358 +#: include/datetime.php:385 msgid "seconds" msgstr "Sekunden" -#: include/datetime.php:367 +#: include/datetime.php:394 #, php-format msgid "%1$d %2$s ago" msgstr "%1$d %2$s her" -#: include/datetime.php:585 +#: include/datetime.php:620 #, php-format msgid "%s's birthday" msgstr "%ss Geburtstag" -#: include/datetime.php:586 include/dfrn.php:1122 +#: include/datetime.php:621 include/dfrn.php:1252 #, php-format msgid "Happy Birthday %s" msgstr "Herzlichen Glückwunsch %s" -#: include/event.php:16 include/bb2diaspora.php:199 mod/localtime.php:12 -msgid "l F d, Y \\@ g:i A" -msgstr "l, d. F Y\\, H:i" +#: include/dba_pdo.php:72 include/dba.php:47 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" +msgstr "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln." -#: include/event.php:33 include/event.php:51 include/event.php:488 -#: include/bb2diaspora.php:205 -msgid "Starts:" -msgstr "Beginnt:" +#: include/enotify.php:24 +msgid "Friendica Notification" +msgstr "Friendica-Benachrichtigung" -#: include/event.php:36 include/event.php:57 include/event.php:489 -#: include/bb2diaspora.php:213 -msgid "Finishes:" -msgstr "Endet:" +#: include/enotify.php:27 +msgid "Thank You," +msgstr "Danke," -#: include/event.php:39 include/event.php:63 include/event.php:490 -#: include/bb2diaspora.php:221 include/identity.php:331 mod/directory.php:139 -#: mod/contacts.php:636 mod/events.php:501 mod/notifications.php:238 -msgid "Location:" -msgstr "Ort:" +#: include/enotify.php:30 +#, php-format +msgid "%s Administrator" +msgstr "der Administrator von %s" -#: include/event.php:442 -msgid "Sun" -msgstr "So" +#: include/enotify.php:32 +#, php-format +msgid "%1$s, %2$s Administrator" +msgstr "%1$s, %2$s Administrator" -#: include/event.php:443 -msgid "Mon" -msgstr "Mo" +#: include/enotify.php:70 +#, php-format +msgid "%s " +msgstr "%s " -#: include/event.php:444 -msgid "Tue" -msgstr "Di" +#: include/enotify.php:83 +#, php-format +msgid "[Friendica:Notify] New mail received at %s" +msgstr "[Friendica-Meldung] Neue Nachricht erhalten von %s" -#: include/event.php:445 -msgid "Wed" -msgstr "Mi" +#: include/enotify.php:85 +#, php-format +msgid "%1$s sent you a new private message at %2$s." +msgstr "%1$s hat Dir eine neue private Nachricht auf %2$s geschickt." -#: include/event.php:446 -msgid "Thu" -msgstr "Do" +#: include/enotify.php:86 +#, php-format +msgid "%1$s sent you %2$s." +msgstr "%1$s schickte Dir %2$s." -#: include/event.php:447 -msgid "Fri" -msgstr "Fr" +#: include/enotify.php:86 +msgid "a private message" +msgstr "eine private Nachricht" -#: include/event.php:448 -msgid "Sat" -msgstr "Sa" +#: include/enotify.php:88 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." +msgstr "Bitte besuche %s, um Deine privaten Nachrichten anzusehen und/oder zu beantworten." -#: include/event.php:449 include/text.php:1132 mod/settings.php:981 -msgid "Sunday" -msgstr "Sonntag" - -#: include/event.php:450 include/text.php:1132 mod/settings.php:981 -msgid "Monday" -msgstr "Montag" +#: include/enotify.php:134 +#, php-format +msgid "%1$s commented on [url=%2$s]a %3$s[/url]" +msgstr "%1$s kommentierte [url=%2$s]a %3$s[/url]" -#: include/event.php:451 include/text.php:1132 -msgid "Tuesday" -msgstr "Dienstag" +#: include/enotify.php:141 +#, php-format +msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" +msgstr "%1$s kommentierte [url=%2$s]%3$ss %4$s[/url]" -#: include/event.php:452 include/text.php:1132 -msgid "Wednesday" -msgstr "Mittwoch" +#: include/enotify.php:149 +#, php-format +msgid "%1$s commented on [url=%2$s]your %3$s[/url]" +msgstr "%1$s kommentierte [url=%2$s]Deinen %3$s[/url]" -#: include/event.php:453 include/text.php:1132 -msgid "Thursday" -msgstr "Donnerstag" +#: include/enotify.php:159 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" +msgstr "[Friendica-Meldung] Kommentar zum Beitrag #%1$d von %2$s" -#: include/event.php:454 include/text.php:1132 -msgid "Friday" -msgstr "Freitag" +#: include/enotify.php:161 +#, php-format +msgid "%s commented on an item/conversation you have been following." +msgstr "%s hat einen Beitrag kommentiert, dem Du folgst." -#: include/event.php:455 include/text.php:1132 -msgid "Saturday" -msgstr "Samstag" +#: include/enotify.php:164 include/enotify.php:178 include/enotify.php:192 +#: include/enotify.php:206 include/enotify.php:224 include/enotify.php:238 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." +msgstr "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren." -#: include/event.php:456 -msgid "Jan" -msgstr "Jan" +#: include/enotify.php:171 +#, php-format +msgid "[Friendica:Notify] %s posted to your profile wall" +msgstr "[Friendica-Meldung] %s hat auf Deine Pinnwand geschrieben" -#: include/event.php:457 -msgid "Feb" -msgstr "Feb" +#: include/enotify.php:173 +#, php-format +msgid "%1$s posted to your profile wall at %2$s" +msgstr "%1$s schrieb auf %2$s auf Deine Pinnwand" -#: include/event.php:458 -msgid "Mar" -msgstr "März" +#: include/enotify.php:174 +#, php-format +msgid "%1$s posted to [url=%2$s]your wall[/url]" +msgstr "%1$s hat etwas auf [url=%2$s]Deiner Pinnwand[/url] gepostet" -#: include/event.php:459 -msgid "Apr" -msgstr "Apr" +#: include/enotify.php:185 +#, php-format +msgid "[Friendica:Notify] %s tagged you" +msgstr "[Friendica-Meldung] %s hat Dich erwähnt" -#: include/event.php:460 include/event.php:472 include/text.php:1136 -msgid "May" -msgstr "Mai" +#: include/enotify.php:187 +#, php-format +msgid "%1$s tagged you at %2$s" +msgstr "%1$s erwähnte Dich auf %2$s" -#: include/event.php:461 -msgid "Jun" -msgstr "Jun" +#: include/enotify.php:188 +#, php-format +msgid "%1$s [url=%2$s]tagged you[/url]." +msgstr "%1$s [url=%2$s]erwähnte Dich[/url]." -#: include/event.php:462 -msgid "Jul" -msgstr "Juli" +#: include/enotify.php:199 +#, php-format +msgid "[Friendica:Notify] %s shared a new post" +msgstr "[Friendica Benachrichtigung] %s hat einen Beitrag geteilt" -#: include/event.php:463 -msgid "Aug" -msgstr "Aug" +#: include/enotify.php:201 +#, php-format +msgid "%1$s shared a new post at %2$s" +msgstr "%1$s hat einen neuen Beitrag auf %2$s geteilt" -#: include/event.php:464 -msgid "Sept" -msgstr "Sep" +#: include/enotify.php:202 +#, php-format +msgid "%1$s [url=%2$s]shared a post[/url]." +msgstr "%1$s [url=%2$s]hat einen Beitrag geteilt[/url]." -#: include/event.php:465 -msgid "Oct" -msgstr "Okt" +#: include/enotify.php:213 +#, php-format +msgid "[Friendica:Notify] %1$s poked you" +msgstr "[Friendica-Meldung] %1$s hat Dich angestupst" -#: include/event.php:466 -msgid "Nov" -msgstr "Nov" +#: include/enotify.php:215 +#, php-format +msgid "%1$s poked you at %2$s" +msgstr "%1$s hat Dich auf %2$s angestupst" -#: include/event.php:467 -msgid "Dec" -msgstr "Dez" +#: include/enotify.php:216 +#, php-format +msgid "%1$s [url=%2$s]poked you[/url]." +msgstr "%1$s [url=%2$s]hat Dich angestupst[/url]." -#: include/event.php:468 include/text.php:1136 -msgid "January" -msgstr "Januar" +#: include/enotify.php:231 +#, php-format +msgid "[Friendica:Notify] %s tagged your post" +msgstr "[Friendica-Meldung] %s hat Deinen Beitrag getaggt" -#: include/event.php:469 include/text.php:1136 -msgid "February" -msgstr "Februar" +#: include/enotify.php:233 +#, php-format +msgid "%1$s tagged your post at %2$s" +msgstr "%1$s erwähnte Deinen Beitrag auf %2$s" -#: include/event.php:470 include/text.php:1136 -msgid "March" -msgstr "März" +#: include/enotify.php:234 +#, php-format +msgid "%1$s tagged [url=%2$s]your post[/url]" +msgstr "%1$s erwähnte [url=%2$s]Deinen Beitrag[/url]" -#: include/event.php:471 include/text.php:1136 -msgid "April" -msgstr "April" +#: include/enotify.php:245 +msgid "[Friendica:Notify] Introduction received" +msgstr "[Friendica-Meldung] Kontaktanfrage erhalten" -#: include/event.php:473 include/text.php:1136 -msgid "June" -msgstr "Juni" +#: include/enotify.php:247 +#, php-format +msgid "You've received an introduction from '%1$s' at %2$s" +msgstr "Du hast eine Kontaktanfrage von '%1$s' auf %2$s erhalten" -#: include/event.php:474 include/text.php:1136 -msgid "July" -msgstr "Juli" +#: include/enotify.php:248 +#, php-format +msgid "You've received [url=%1$s]an introduction[/url] from %2$s." +msgstr "Du hast eine [url=%1$s]Kontaktanfrage[/url] von %2$s erhalten." -#: include/event.php:475 include/text.php:1136 -msgid "August" -msgstr "August" +#: include/enotify.php:252 include/enotify.php:295 +#, php-format +msgid "You may visit their profile at %s" +msgstr "Hier kannst Du das Profil betrachten: %s" -#: include/event.php:476 include/text.php:1136 -msgid "September" -msgstr "September" +#: include/enotify.php:254 +#, php-format +msgid "Please visit %s to approve or reject the introduction." +msgstr "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen." -#: include/event.php:477 include/text.php:1136 -msgid "October" -msgstr "Oktober" +#: include/enotify.php:262 +msgid "[Friendica:Notify] A new person is sharing with you" +msgstr "[Friendica Benachrichtigung] Eine neue Person teilt mit Dir" -#: include/event.php:478 include/text.php:1136 -msgid "November" -msgstr "November" +#: include/enotify.php:264 include/enotify.php:265 +#, php-format +msgid "%1$s is sharing with you at %2$s" +msgstr "%1$s teilt mit Dir auf %2$s" -#: include/event.php:479 include/text.php:1136 -msgid "December" -msgstr "Dezember" +#: include/enotify.php:271 +msgid "[Friendica:Notify] You have a new follower" +msgstr "[Friendica Benachrichtigung] Du hast einen neuen Kontakt auf " -#: include/event.php:480 mod/cal.php:278 mod/events.php:395 -msgid "today" -msgstr "Heute" +#: include/enotify.php:273 include/enotify.php:274 +#, php-format +msgid "You have a new follower at %2$s : %1$s" +msgstr "Du hast einen neuen Kontakt auf %2$s: %1$s" -#: include/event.php:484 -msgid "all-day" -msgstr "ganztägig" +#: include/enotify.php:285 +msgid "[Friendica:Notify] Friend suggestion received" +msgstr "[Friendica-Meldung] Kontaktvorschlag erhalten" -#: include/event.php:486 -msgid "No events to display" -msgstr "Keine Veranstaltung zum Anzeigen" +#: include/enotify.php:287 +#, php-format +msgid "You've received a friend suggestion from '%1$s' at %2$s" +msgstr "Du hast einen Kontakt-Vorschlag von '%1$s' auf %2$s erhalten" -#: include/event.php:596 -msgid "l, F j" -msgstr "l, F j" +#: include/enotify.php:288 +#, php-format +msgid "" +"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." +msgstr "Du hast einen [url=%1$s]Kontakt-Vorschlag[/url] %2$s von %3$s erhalten." -#: include/event.php:615 -msgid "Edit event" -msgstr "Veranstaltung bearbeiten" +#: include/enotify.php:293 +msgid "Name:" +msgstr "Name:" -#: include/event.php:637 include/text.php:1534 include/text.php:1541 -msgid "link to source" -msgstr "Link zum Originalbeitrag" +#: include/enotify.php:294 +msgid "Photo:" +msgstr "Foto:" -#: include/event.php:872 -msgid "Export" -msgstr "Exportieren" +#: include/enotify.php:297 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." +msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen." -#: include/event.php:873 -msgid "Export calendar as ical" -msgstr "Kalender als ical exportieren" +#: include/enotify.php:305 include/enotify.php:319 +msgid "[Friendica:Notify] Connection accepted" +msgstr "[Friendica-Benachrichtigung] Kontaktanfrage bestätigt" -#: include/event.php:874 -msgid "Export calendar as csv" -msgstr "Kalender als csv exportieren" +#: include/enotify.php:307 include/enotify.php:321 +#, php-format +msgid "'%1$s' has accepted your connection request at %2$s" +msgstr "'%1$s' hat Deine Kontaktanfrage auf %2$s bestätigt" -#: include/dfrn.php:1121 +#: include/enotify.php:308 include/enotify.php:322 #, php-format -msgid "%s\\'s birthday" -msgstr "%ss Geburtstag" +msgid "%2$s has accepted your [url=%1$s]connection request[/url]." +msgstr "%2$s hat Deine [url=%1$s]Kontaktanfrage[/url] akzeptiert." -#: include/contact_selectors.php:32 -msgid "Unknown | Not categorised" -msgstr "Unbekannt | Nicht kategorisiert" +#: include/enotify.php:312 +msgid "" +"You are now mutual friends and may exchange status updates, photos, and " +"email without restriction." +msgstr "Ihr seid nun beidseitige Kontakte und könnt Statusmitteilungen, Bilder und Emails ohne Einschränkungen austauschen." -#: include/contact_selectors.php:33 -msgid "Block immediately" -msgstr "Sofort blockieren" +#: include/enotify.php:314 +#, php-format +msgid "Please visit %s if you wish to make any changes to this relationship." +msgstr "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst." -#: include/contact_selectors.php:34 -msgid "Shady, spammer, self-marketer" -msgstr "Zwielichtig, Spammer, Selbstdarsteller" +#: include/enotify.php:326 +#, php-format +msgid "" +"'%1$s' has chosen to accept you a \"fan\", which restricts some forms of " +"communication - such as private messaging and some profile interactions. If " +"this is a celebrity or community page, these settings were applied " +"automatically." +msgstr "'%1$s' hat sich entschieden Dich als \"Fan\" zu akzeptieren, dies schränkt einige Kommunikationswege - wie private Nachrichten und einige Interaktionsmöglichkeiten auf der Profilseite - ein. Wenn dies eine Berühmtheiten- oder Gemeinschaftsseite ist, werden diese Einstellungen automatisch vorgenommen." -#: include/contact_selectors.php:35 -msgid "Known to me, but no opinion" -msgstr "Ist mir bekannt, hab aber keine Meinung" - -#: include/contact_selectors.php:36 -msgid "OK, probably harmless" -msgstr "OK, wahrscheinlich harmlos" +#: include/enotify.php:328 +#, php-format +msgid "" +"'%1$s' may choose to extend this into a two-way or more permissive " +"relationship in the future." +msgstr "'%1$s' kann den Kontaktstatus zu einem späteren Zeitpunkt erweitern und diese Einschränkungen aufheben. " -#: include/contact_selectors.php:37 -msgid "Reputable, has my trust" -msgstr "Seriös, hat mein Vertrauen" +#: include/enotify.php:330 +#, php-format +msgid "Please visit %s if you wish to make any changes to this relationship." +msgstr "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst." -#: include/contact_selectors.php:56 mod/admin.php:901 -msgid "Frequently" -msgstr "immer wieder" +#: include/enotify.php:340 +msgid "[Friendica System:Notify] registration request" +msgstr "[Friendica System:Benachrichtigung] Registrationsanfrage" -#: include/contact_selectors.php:57 mod/admin.php:902 -msgid "Hourly" -msgstr "Stündlich" +#: include/enotify.php:342 +#, php-format +msgid "You've received a registration request from '%1$s' at %2$s" +msgstr "Du hast eine Registrierungsanfrage von %2$s auf '%1$s' erhalten" -#: include/contact_selectors.php:58 mod/admin.php:903 -msgid "Twice daily" -msgstr "Zweimal täglich" +#: include/enotify.php:343 +#, php-format +msgid "You've received a [url=%1$s]registration request[/url] from %2$s." +msgstr "Du hast eine [url=%1$s]Registrierungsanfrage[/url] von %2$s erhalten." -#: include/contact_selectors.php:59 mod/admin.php:904 -msgid "Daily" -msgstr "Täglich" +#: include/enotify.php:347 +#, php-format +msgid "Full Name:\t%1$s\\nSite Location:\t%2$s\\nLogin Name:\t%3$s (%4$s)" +msgstr "Kompletter Name:\t%1$s\\nURL der Seite:\t%2$s\\nLogin Name:\t%3$s (%4$s)" -#: include/contact_selectors.php:60 -msgid "Weekly" -msgstr "Wöchentlich" +#: include/enotify.php:350 +#, php-format +msgid "Please visit %s to approve or reject the request." +msgstr "Bitte besuche %s um die Anfrage zu bearbeiten." -#: include/contact_selectors.php:61 -msgid "Monthly" -msgstr "Monatlich" +#: include/event.php:474 +msgid "all-day" +msgstr "ganztägig" -#: include/contact_selectors.php:76 mod/dfrn_request.php:881 -msgid "Friendica" -msgstr "Friendica" +#: include/event.php:476 +msgid "Sun" +msgstr "So" -#: include/contact_selectors.php:77 -msgid "OStatus" -msgstr "OStatus" +#: include/event.php:477 +msgid "Mon" +msgstr "Mo" -#: include/contact_selectors.php:78 -msgid "RSS/Atom" -msgstr "RSS/Atom" +#: include/event.php:478 +msgid "Tue" +msgstr "Di" -#: include/contact_selectors.php:79 include/contact_selectors.php:86 -#: mod/admin.php:1417 mod/admin.php:1430 mod/admin.php:1443 mod/admin.php:1461 -msgid "Email" -msgstr "E-Mail" +#: include/event.php:479 +msgid "Wed" +msgstr "Mi" -#: include/contact_selectors.php:80 mod/settings.php:848 -#: mod/dfrn_request.php:883 -msgid "Diaspora" -msgstr "Diaspora" +#: include/event.php:480 +msgid "Thu" +msgstr "Do" -#: include/contact_selectors.php:81 -msgid "Facebook" -msgstr "Facebook" +#: include/event.php:481 +msgid "Fri" +msgstr "Fr" -#: include/contact_selectors.php:82 -msgid "Zot!" -msgstr "Zott" +#: include/event.php:482 +msgid "Sat" +msgstr "Sa" -#: include/contact_selectors.php:83 -msgid "LinkedIn" -msgstr "LinkedIn" +#: include/event.php:484 include/text.php:1198 mod/settings.php:981 +msgid "Sunday" +msgstr "Sonntag" -#: include/contact_selectors.php:84 -msgid "XMPP/IM" -msgstr "XMPP/Chat" +#: include/event.php:485 include/text.php:1198 mod/settings.php:981 +msgid "Monday" +msgstr "Montag" -#: include/contact_selectors.php:85 -msgid "MySpace" -msgstr "MySpace" +#: include/event.php:486 include/text.php:1198 +msgid "Tuesday" +msgstr "Dienstag" -#: include/contact_selectors.php:87 -msgid "Google+" -msgstr "Google+" +#: include/event.php:487 include/text.php:1198 +msgid "Wednesday" +msgstr "Mittwoch" -#: include/contact_selectors.php:88 -msgid "pump.io" -msgstr "pump.io" +#: include/event.php:488 include/text.php:1198 +msgid "Thursday" +msgstr "Donnerstag" -#: include/contact_selectors.php:89 -msgid "Twitter" -msgstr "Twitter" +#: include/event.php:489 include/text.php:1198 +msgid "Friday" +msgstr "Freitag" -#: include/contact_selectors.php:90 -msgid "Diaspora Connector" -msgstr "Diaspora" +#: include/event.php:490 include/text.php:1198 +msgid "Saturday" +msgstr "Samstag" -#: include/contact_selectors.php:91 -msgid "GNU Social" -msgstr "GNU Social" +#: include/event.php:492 +msgid "Jan" +msgstr "Jan" -#: include/contact_selectors.php:92 -msgid "pnut" -msgstr "pnut" +#: include/event.php:493 +msgid "Feb" +msgstr "Feb" -#: include/contact_selectors.php:93 -msgid "App.net" -msgstr "App.net" +#: include/event.php:494 +msgid "Mar" +msgstr "März" -#: include/contact_selectors.php:104 -msgid "Hubzilla/Redmatrix" -msgstr "Hubzilla/Redmatrix" +#: include/event.php:495 +msgid "Apr" +msgstr "Apr" -#: include/contact_widgets.php:6 -msgid "Add New Contact" -msgstr "Neuen Kontakt hinzufügen" +#: include/event.php:496 include/event.php:509 include/text.php:1202 +msgid "May" +msgstr "Mai" -#: include/contact_widgets.php:7 -msgid "Enter address or web location" -msgstr "Adresse oder Web-Link eingeben" +#: include/event.php:497 +msgid "Jun" +msgstr "Jun" -#: include/contact_widgets.php:8 -msgid "Example: bob@example.com, http://example.com/barbara" -msgstr "Beispiel: bob@example.com, http://example.com/barbara" +#: include/event.php:498 +msgid "Jul" +msgstr "Juli" -#: include/contact_widgets.php:10 include/identity.php:219 -#: mod/allfriends.php:85 mod/dirfind.php:207 mod/match.php:89 -#: mod/suggest.php:101 -msgid "Connect" -msgstr "Verbinden" +#: include/event.php:499 +msgid "Aug" +msgstr "Aug" -#: include/contact_widgets.php:24 -#, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "%d Einladung verfügbar" -msgstr[1] "%d Einladungen verfügbar" +#: include/event.php:500 +msgid "Sept" +msgstr "Sep" -#: include/contact_widgets.php:30 -msgid "Find People" -msgstr "Leute finden" +#: include/event.php:501 +msgid "Oct" +msgstr "Okt" -#: include/contact_widgets.php:31 -msgid "Enter name or interest" -msgstr "Name oder Interessen eingeben" +#: include/event.php:502 +msgid "Nov" +msgstr "Nov" -#: include/contact_widgets.php:33 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "Beispiel: Robert Morgenstein, Angeln" +#: include/event.php:503 +msgid "Dec" +msgstr "Dez" -#: include/contact_widgets.php:34 mod/directory.php:206 mod/contacts.php:806 -msgid "Find" -msgstr "Finde" +#: include/event.php:505 include/text.php:1202 +msgid "January" +msgstr "Januar" -#: include/contact_widgets.php:35 mod/suggest.php:114 -#: view/theme/vier/theme.php:198 -msgid "Friend Suggestions" -msgstr "Kontaktvorschläge" +#: include/event.php:506 include/text.php:1202 +msgid "February" +msgstr "Februar" -#: include/contact_widgets.php:36 view/theme/vier/theme.php:197 -msgid "Similar Interests" -msgstr "Ähnliche Interessen" +#: include/event.php:507 include/text.php:1202 +msgid "March" +msgstr "März" -#: include/contact_widgets.php:37 -msgid "Random Profile" -msgstr "Zufälliges Profil" +#: include/event.php:508 include/text.php:1202 +msgid "April" +msgstr "April" -#: include/contact_widgets.php:38 view/theme/vier/theme.php:199 -msgid "Invite Friends" -msgstr "Freunde einladen" +#: include/event.php:510 include/text.php:1202 +msgid "June" +msgstr "Juni" -#: include/contact_widgets.php:115 -msgid "Networks" -msgstr "Netzwerke" +#: include/event.php:511 include/text.php:1202 +msgid "July" +msgstr "Juli" -#: include/contact_widgets.php:118 -msgid "All Networks" -msgstr "Alle Netzwerke" +#: include/event.php:512 include/text.php:1202 +msgid "August" +msgstr "August" -#: include/contact_widgets.php:153 include/contact_widgets.php:187 -msgid "Everything" -msgstr "Alles" +#: include/event.php:513 include/text.php:1202 +msgid "September" +msgstr "September" -#: include/contact_widgets.php:184 -msgid "Categories" -msgstr "Kategorien" +#: include/event.php:514 include/text.php:1202 +msgid "October" +msgstr "Oktober" -#: include/contact_widgets.php:248 -#, php-format -msgid "%d contact in common" -msgid_plural "%d contacts in common" -msgstr[0] "%d gemeinsamer Kontakt" -msgstr[1] "%d gemeinsame Kontakte" +#: include/event.php:515 include/text.php:1202 +msgid "November" +msgstr "November" -#: include/api.php:1021 -#, php-format -msgid "Daily posting limit of %d posts reached. The post was rejected." -msgstr "Das tägliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen." +#: include/event.php:516 include/text.php:1202 +msgid "December" +msgstr "Dezember" -#: include/api.php:1041 -#, php-format -msgid "Weekly posting limit of %d posts reached. The post was rejected." -msgstr "Das wöchentliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen." +#: include/event.php:518 mod/cal.php:278 mod/events.php:383 +msgid "today" +msgstr "Heute" -#: include/api.php:1062 -#, php-format -msgid "Monthly posting limit of %d posts reached. The post was rejected." -msgstr "Das monatliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen." +#: include/event.php:523 +msgid "No events to display" +msgstr "Keine Veranstaltung zum Anzeigen" -#: include/diaspora.php:2087 -msgid "Sharing notification from Diaspora network" -msgstr "Freigabe-Benachrichtigung von Diaspora" +#: include/event.php:636 +msgid "l, F j" +msgstr "l, F j" -#: include/diaspora.php:3096 -msgid "Attachments:" -msgstr "Anhänge:" +#: include/event.php:658 +msgid "Edit event" +msgstr "Veranstaltung bearbeiten" -#: include/identity.php:43 -msgid "Requested account is not available." -msgstr "Das angefragte Profil ist nicht vorhanden." +#: include/event.php:659 +msgid "Delete event" +msgstr "Veranstaltung löschen" -#: include/identity.php:52 mod/profile.php:21 -msgid "Requested profile is not available." -msgstr "Das angefragte Profil ist nicht vorhanden." +#: include/event.php:685 include/text.php:1600 include/text.php:1607 +msgid "link to source" +msgstr "Link zum Originalbeitrag" -#: include/identity.php:96 include/identity.php:314 include/identity.php:737 -msgid "Edit profile" -msgstr "Profil bearbeiten" +#: include/event.php:939 +msgid "Export" +msgstr "Exportieren" -#: include/identity.php:254 -msgid "Atom feed" -msgstr "Atom-Feed" +#: include/event.php:940 +msgid "Export calendar as ical" +msgstr "Kalender als ical exportieren" -#: include/identity.php:285 -msgid "Manage/edit profiles" -msgstr "Profile verwalten/editieren" +#: include/event.php:941 +msgid "Export calendar as csv" +msgstr "Kalender als csv exportieren" -#: include/identity.php:290 include/identity.php:316 mod/profiles.php:789 -msgid "Change profile photo" -msgstr "Profilbild ändern" +#: include/features.php:65 +msgid "General Features" +msgstr "Allgemeine Features" -#: include/identity.php:291 mod/profiles.php:790 -msgid "Create New Profile" -msgstr "Neues Profil anlegen" +#: include/features.php:67 +msgid "Multiple Profiles" +msgstr "Mehrere Profile" -#: include/identity.php:301 mod/profiles.php:779 -msgid "Profile Image" -msgstr "Profilbild" +#: include/features.php:67 +msgid "Ability to create multiple profiles" +msgstr "Möglichkeit mehrere Profile zu erstellen" -#: include/identity.php:304 mod/profiles.php:781 -msgid "visible to everybody" -msgstr "sichtbar für jeden" +#: include/features.php:68 +msgid "Photo Location" +msgstr "Aufnahmeort" -#: include/identity.php:305 mod/profiles.php:683 mod/profiles.php:782 -msgid "Edit visibility" -msgstr "Sichtbarkeit bearbeiten" +#: include/features.php:68 +msgid "" +"Photo metadata is normally stripped. This extracts the location (if present)" +" prior to stripping metadata and links it to a map." +msgstr "Die Foto-Metadaten werden ausgelesen. Dadurch kann der Aufnahmeort (wenn vorhanden) in einer Karte angezeigt werden." -#: include/identity.php:333 include/identity.php:628 mod/directory.php:141 -#: mod/notifications.php:244 -msgid "Gender:" -msgstr "Geschlecht:" +#: include/features.php:69 +msgid "Export Public Calendar" +msgstr "Öffentlichen Kalender exportieren" -#: include/identity.php:336 include/identity.php:648 mod/directory.php:143 -msgid "Status:" -msgstr "Status:" +#: include/features.php:69 +msgid "Ability for visitors to download the public calendar" +msgstr "Möglichkeit für Besucher den öffentlichen Kalender herunter zu laden" -#: include/identity.php:338 include/identity.php:664 mod/directory.php:145 -msgid "Homepage:" -msgstr "Homepage:" +#: include/features.php:74 +msgid "Post Composition Features" +msgstr "Beitragserstellung Features" -#: include/identity.php:340 include/identity.php:684 mod/directory.php:147 -#: mod/contacts.php:640 mod/notifications.php:240 -msgid "About:" -msgstr "Über:" +#: include/features.php:75 +msgid "Post Preview" +msgstr "Beitragsvorschau" -#: include/identity.php:342 mod/contacts.php:638 -msgid "XMPP:" -msgstr "XMPP:" +#: include/features.php:75 +msgid "Allow previewing posts and comments before publishing them" +msgstr "Die Vorschau von Beiträgen und Kommentaren vor dem absenden erlauben." -#: include/identity.php:428 mod/contacts.php:55 mod/notifications.php:252 -msgid "Network:" -msgstr "Netzwerk:" +#: include/features.php:76 +msgid "Auto-mention Forums" +msgstr "Foren automatisch erwähnen" -#: include/identity.php:457 include/identity.php:547 -msgid "g A l F d" -msgstr "l, d. F G \\U\\h\\r" +#: include/features.php:76 +msgid "" +"Add/remove mention when a forum page is selected/deselected in ACL window." +msgstr "Automatisch eine @-Erwähnung eines Forums einfügen/entfehrnen, wenn dieses im ACL Fenster de-/markiert wurde." -#: include/identity.php:458 include/identity.php:548 -msgid "F d" -msgstr "d. F" +#: include/features.php:81 +msgid "Network Sidebar Widgets" +msgstr "Widgets für Netzwerk und Seitenleiste" -#: include/identity.php:509 include/identity.php:594 -msgid "[today]" -msgstr "[heute]" +#: include/features.php:82 +msgid "Search by Date" +msgstr "Archiv" -#: include/identity.php:521 -msgid "Birthday Reminders" -msgstr "Geburtstagserinnerungen" +#: include/features.php:82 +msgid "Ability to select posts by date ranges" +msgstr "Möglichkeit die Beiträge nach Datumsbereichen zu sortieren" -#: include/identity.php:522 -msgid "Birthdays this week:" -msgstr "Geburtstage diese Woche:" +#: include/features.php:83 include/features.php:113 +msgid "List Forums" +msgstr "Zeige Foren" -#: include/identity.php:581 -msgid "[No description]" -msgstr "[keine Beschreibung]" +#: include/features.php:83 +msgid "Enable widget to display the forums your are connected with" +msgstr "Aktiviere Widget, um die Foren mit denen du verbunden bist anzuzeigen" -#: include/identity.php:605 -msgid "Event Reminders" -msgstr "Veranstaltungserinnerungen" +#: include/features.php:84 +msgid "Group Filter" +msgstr "Gruppen Filter" -#: include/identity.php:606 -msgid "Events this week:" -msgstr "Veranstaltungen diese Woche" +#: include/features.php:84 +msgid "Enable widget to display Network posts only from selected group" +msgstr "Widget zur Darstellung der Beiträge nach Kontaktgruppen sortiert aktivieren." -#: include/identity.php:626 mod/settings.php:1286 -msgid "Full Name:" -msgstr "Kompletter Name:" +#: include/features.php:85 +msgid "Network Filter" +msgstr "Netzwerk Filter" -#: include/identity.php:633 -msgid "j F, Y" -msgstr "j F, Y" +#: include/features.php:85 +msgid "Enable widget to display Network posts only from selected network" +msgstr "Widget zum filtern der Beiträge in Abhängigkeit des Netzwerks aus dem der Ersteller sendet aktivieren." -#: include/identity.php:634 -msgid "j F" -msgstr "j F" +#: include/features.php:86 mod/network.php:206 mod/search.php:34 +msgid "Saved Searches" +msgstr "Gespeicherte Suchen" -#: include/identity.php:645 -msgid "Age:" -msgstr "Alter:" +#: include/features.php:86 +msgid "Save search terms for re-use" +msgstr "Speichere Suchanfragen für spätere Wiederholung." -#: include/identity.php:656 -#, php-format -msgid "for %1$d %2$s" -msgstr "für %1$d %2$s" +#: include/features.php:91 +msgid "Network Tabs" +msgstr "Netzwerk Reiter" -#: include/identity.php:660 mod/profiles.php:702 -msgid "Sexual Preference:" -msgstr "Sexuelle Vorlieben:" +#: include/features.php:92 +msgid "Network Personal Tab" +msgstr "Netzwerk-Reiter: Persönlich" -#: include/identity.php:668 mod/profiles.php:729 -msgid "Hometown:" -msgstr "Heimatort:" +#: include/features.php:92 +msgid "Enable tab to display only Network posts that you've interacted on" +msgstr "Aktiviert einen Netzwerk-Reiter in dem Nachrichten angezeigt werden mit denen Du interagiert hast" -#: include/identity.php:672 mod/follow.php:137 mod/contacts.php:642 -#: mod/notifications.php:242 -msgid "Tags:" -msgstr "Tags:" +#: include/features.php:93 +msgid "Network New Tab" +msgstr "Netzwerk-Reiter: Neue" -#: include/identity.php:676 mod/profiles.php:730 -msgid "Political Views:" -msgstr "Politische Ansichten:" +#: include/features.php:93 +msgid "Enable tab to display only new Network posts (from the last 12 hours)" +msgstr "Aktiviert einen Netzwerk-Reiter in dem ausschließlich neue Beiträge (der letzten 12 Stunden) angezeigt werden" -#: include/identity.php:680 -msgid "Religion:" -msgstr "Religion:" +#: include/features.php:94 +msgid "Network Shared Links Tab" +msgstr "Netzwerk-Reiter: Geteilte Links" -#: include/identity.php:688 -msgid "Hobbies/Interests:" -msgstr "Hobbies/Interessen:" +#: include/features.php:94 +msgid "Enable tab to display only Network posts with links in them" +msgstr "Aktiviert einen Netzwerk-Reiter der ausschließlich Nachrichten mit Links enthält" -#: include/identity.php:692 mod/profiles.php:734 -msgid "Likes:" -msgstr "Likes:" +#: include/features.php:99 +msgid "Post/Comment Tools" +msgstr "Werkzeuge für Beiträge und Kommentare" -#: include/identity.php:696 mod/profiles.php:735 -msgid "Dislikes:" -msgstr "Dislikes:" +#: include/features.php:100 +msgid "Multiple Deletion" +msgstr "Mehrere Beiträge löschen" -#: include/identity.php:700 -msgid "Contact information and Social Networks:" -msgstr "Kontaktinformationen und Soziale Netzwerke:" +#: include/features.php:100 +msgid "Select and delete multiple posts/comments at once" +msgstr "Mehrere Beiträge/Kommentare markieren und gleichzeitig löschen" -#: include/identity.php:704 -msgid "Musical interests:" -msgstr "Musikalische Interessen:" +#: include/features.php:101 +msgid "Edit Sent Posts" +msgstr "Gesendete Beiträge editieren" -#: include/identity.php:708 -msgid "Books, literature:" -msgstr "Literatur/Bücher:" +#: include/features.php:101 +msgid "Edit and correct posts and comments after sending" +msgstr "Erlaubt es Beiträge und Kommentare nach dem Senden zu editieren bzw.zu korrigieren." -#: include/identity.php:712 -msgid "Television:" -msgstr "Fernsehen:" +#: include/features.php:102 +msgid "Tagging" +msgstr "Tagging" -#: include/identity.php:716 -msgid "Film/dance/culture/entertainment:" -msgstr "Filme/Tänze/Kultur/Unterhaltung:" +#: include/features.php:102 +msgid "Ability to tag existing posts" +msgstr "Möglichkeit bereits existierende Beiträge nachträglich mit Tags zu versehen." -#: include/identity.php:720 -msgid "Love/Romance:" -msgstr "Liebesleben:" +#: include/features.php:103 +msgid "Post Categories" +msgstr "Beitragskategorien" -#: include/identity.php:724 -msgid "Work/employment:" -msgstr "Arbeit/Beschäftigung:" +#: include/features.php:103 +msgid "Add categories to your posts" +msgstr "Eigene Beiträge mit Kategorien versehen" -#: include/identity.php:728 -msgid "School/education:" -msgstr "Schule/Ausbildung:" +#: include/features.php:104 +msgid "Ability to file posts under folders" +msgstr "Beiträge in Ordnern speichern aktivieren" -#: include/identity.php:733 -msgid "Forums:" -msgstr "Foren:" +#: include/features.php:105 +msgid "Dislike Posts" +msgstr "Beiträge 'nicht mögen'" -#: include/identity.php:742 mod/events.php:514 -msgid "Basic" -msgstr "Allgemein" +#: include/features.php:105 +msgid "Ability to dislike posts/comments" +msgstr "Ermöglicht es Beiträge mit einem Klick 'nicht zu mögen'" -#: include/identity.php:743 mod/contacts.php:878 mod/events.php:515 -#: mod/admin.php:980 -msgid "Advanced" -msgstr "Erweitert" +#: include/features.php:106 +msgid "Star Posts" +msgstr "Beiträge Markieren" -#: include/identity.php:769 mod/follow.php:145 mod/contacts.php:844 -msgid "Status Messages and Posts" -msgstr "Statusnachrichten und Beiträge" +#: include/features.php:106 +msgid "Ability to mark special posts with a star indicator" +msgstr "Erlaubt es Beiträge mit einem Stern-Indikator zu markieren" -#: include/identity.php:777 mod/contacts.php:852 -msgid "Profile Details" -msgstr "Profildetails" +#: include/features.php:107 +msgid "Mute Post Notifications" +msgstr "Benachrichtigungen für Beiträge Stumm schalten" -#: include/identity.php:785 mod/photos.php:89 -msgid "Photo Albums" -msgstr "Fotoalben" +#: include/features.php:107 +msgid "Ability to mute notifications for a thread" +msgstr "Möglichkeit Benachrichtigungen für einen Thread abbestellen zu können" -#: include/identity.php:824 mod/notes.php:47 -msgid "Personal Notes" -msgstr "Persönliche Notizen" +#: include/features.php:112 +msgid "Advanced Profile Settings" +msgstr "Erweiterte Profil-Einstellungen" -#: include/identity.php:827 -msgid "Only You Can See This" -msgstr "Nur Du kannst das sehen" +#: include/features.php:113 +msgid "Show visitors public community forums at the Advanced Profile Page" +msgstr "Zeige Besuchern öffentliche Gemeinschafts-Foren auf der Erweiterten Profil-Seite" -#: include/text.php:304 -msgid "newer" -msgstr "neuer" +#: include/follow.php:81 mod/dfrn_request.php:512 +msgid "Disallowed profile URL." +msgstr "Nicht erlaubte Profil-URL." -#: include/text.php:306 -msgid "older" -msgstr "älter" +#: include/follow.php:86 mod/dfrn_request.php:518 mod/friendica.php:114 +#: mod/admin.php:279 mod/admin.php:297 +msgid "Blocked domain" +msgstr "Blockierte Daimain" -#: include/text.php:311 -msgid "prev" -msgstr "vorige" +#: include/follow.php:91 +msgid "Connect URL missing." +msgstr "Connect-URL fehlt" -#: include/text.php:313 -msgid "first" -msgstr "erste" +#: include/follow.php:119 +msgid "" +"This site is not configured to allow communications with other networks." +msgstr "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann." -#: include/text.php:345 -msgid "last" -msgstr "letzte" +#: include/follow.php:120 include/follow.php:134 +msgid "No compatible communication protocols or feeds were discovered." +msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden." -#: include/text.php:348 -msgid "next" -msgstr "nächste" +#: include/follow.php:132 +msgid "The profile address specified does not provide adequate information." +msgstr "Die angegebene Profiladresse liefert unzureichende Informationen." -#: include/text.php:403 -msgid "Loading more entries..." -msgstr "lade weitere Einträge..." +#: include/follow.php:137 +msgid "An author or name was not found." +msgstr "Es wurde kein Autor oder Name gefunden." -#: include/text.php:404 -msgid "The end" -msgstr "Das Ende" +#: include/follow.php:140 +msgid "No browser URL could be matched to this address." +msgstr "Zu dieser Adresse konnte keine passende Browser URL gefunden werden." -#: include/text.php:889 -msgid "No contacts" -msgstr "Keine Kontakte" +#: include/follow.php:143 +msgid "" +"Unable to match @-style Identity Address with a known protocol or email " +"contact." +msgstr "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen." -#: include/text.php:914 -#, php-format -msgid "%d Contact" -msgid_plural "%d Contacts" -msgstr[0] "%d Kontakt" -msgstr[1] "%d Kontakte" +#: include/follow.php:144 +msgid "Use mailto: in front of address to force email check." +msgstr "Verwende mailto: vor der Email Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen." -#: include/text.php:927 -msgid "View Contacts" -msgstr "Kontakte anzeigen" +#: include/follow.php:150 +msgid "" +"The profile address specified belongs to a network which has been disabled " +"on this site." +msgstr "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde." -#: include/text.php:1015 mod/filer.php:31 mod/notes.php:62 mod/editpost.php:99 -msgid "Save" -msgstr "Speichern" +#: include/follow.php:155 +msgid "" +"Limited profile. This person will be unable to receive direct/personal " +"notifications from you." +msgstr "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von Dir erhalten können." -#: include/text.php:1078 -msgid "poke" -msgstr "anstupsen" +#: include/follow.php:256 +msgid "Unable to retrieve contact information." +msgstr "Konnte die Kontaktinformationen nicht empfangen." -#: include/text.php:1078 -msgid "poked" -msgstr "stupste" +#: include/group.php:25 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"may apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." +msgstr "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen könnten auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls Du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen." -#: include/text.php:1079 -msgid "ping" -msgstr "anpingen" +#: include/group.php:210 +msgid "Default privacy group for new contacts" +msgstr "Voreingestellte Gruppe für neue Kontakte" -#: include/text.php:1079 -msgid "pinged" -msgstr "pingte" +#: include/group.php:243 +msgid "Everybody" +msgstr "Alle Kontakte" -#: include/text.php:1080 -msgid "prod" -msgstr "knuffen" +#: include/group.php:266 +msgid "edit" +msgstr "bearbeiten" -#: include/text.php:1080 -msgid "prodded" -msgstr "knuffte" +#: include/group.php:287 mod/newmember.php:61 +msgid "Groups" +msgstr "Gruppen" -#: include/text.php:1081 -msgid "slap" -msgstr "ohrfeigen" +#: include/group.php:289 +msgid "Edit groups" +msgstr "Gruppen bearbeiten" -#: include/text.php:1081 -msgid "slapped" -msgstr "ohrfeigte" +#: include/group.php:291 +msgid "Edit group" +msgstr "Gruppe bearbeiten" -#: include/text.php:1082 -msgid "finger" -msgstr "befummeln" +#: include/group.php:292 +msgid "Create a new group" +msgstr "Neue Gruppe erstellen" -#: include/text.php:1082 -msgid "fingered" -msgstr "befummelte" +#: include/group.php:293 mod/group.php:99 mod/group.php:196 +msgid "Group Name: " +msgstr "Gruppenname:" -#: include/text.php:1083 -msgid "rebuff" -msgstr "eine Abfuhr erteilen" +#: include/group.php:295 +msgid "Contacts not in any group" +msgstr "Kontakte in keiner Gruppe" -#: include/text.php:1083 -msgid "rebuffed" -msgstr "abfuhrerteilte" +#: include/group.php:297 mod/network.php:207 +msgid "add" +msgstr "hinzufügen" -#: include/text.php:1097 -msgid "happy" -msgstr "glücklich" +#: include/identity.php:43 +msgid "Requested account is not available." +msgstr "Das angefragte Profil ist nicht vorhanden." -#: include/text.php:1098 -msgid "sad" -msgstr "traurig" +#: include/identity.php:52 mod/profile.php:21 +msgid "Requested profile is not available." +msgstr "Das angefragte Profil ist nicht vorhanden." -#: include/text.php:1099 -msgid "mellow" -msgstr "sanft" +#: include/identity.php:96 include/identity.php:319 include/identity.php:740 +msgid "Edit profile" +msgstr "Profil bearbeiten" -#: include/text.php:1100 -msgid "tired" -msgstr "müde" +#: include/identity.php:259 +msgid "Atom feed" +msgstr "Atom-Feed" -#: include/text.php:1101 -msgid "perky" -msgstr "frech" +#: include/identity.php:290 +msgid "Manage/edit profiles" +msgstr "Profile verwalten/editieren" -#: include/text.php:1102 -msgid "angry" -msgstr "sauer" +#: include/identity.php:295 include/identity.php:321 mod/profiles.php:787 +msgid "Change profile photo" +msgstr "Profilbild ändern" -#: include/text.php:1103 -msgid "stupified" -msgstr "verblüfft" +#: include/identity.php:296 mod/profiles.php:788 +msgid "Create New Profile" +msgstr "Neues Profil anlegen" -#: include/text.php:1104 -msgid "puzzled" -msgstr "verwirrt" +#: include/identity.php:306 mod/profiles.php:777 +msgid "Profile Image" +msgstr "Profilbild" -#: include/text.php:1105 -msgid "interested" -msgstr "interessiert" +#: include/identity.php:309 mod/profiles.php:779 +msgid "visible to everybody" +msgstr "sichtbar für jeden" -#: include/text.php:1106 -msgid "bitter" -msgstr "verbittert" +#: include/identity.php:310 mod/profiles.php:684 mod/profiles.php:780 +msgid "Edit visibility" +msgstr "Sichtbarkeit bearbeiten" -#: include/text.php:1107 -msgid "cheerful" -msgstr "fröhlich" +#: include/identity.php:338 include/identity.php:633 mod/directory.php:141 +#: mod/notifications.php:250 +msgid "Gender:" +msgstr "Geschlecht:" -#: include/text.php:1108 -msgid "alive" -msgstr "lebendig" +#: include/identity.php:341 include/identity.php:651 mod/directory.php:143 +msgid "Status:" +msgstr "Status:" -#: include/text.php:1109 -msgid "annoyed" -msgstr "verärgert" +#: include/identity.php:343 include/identity.php:667 mod/directory.php:145 +msgid "Homepage:" +msgstr "Homepage:" -#: include/text.php:1110 -msgid "anxious" -msgstr "unruhig" +#: include/identity.php:345 include/identity.php:687 mod/contacts.php:640 +#: mod/directory.php:147 mod/notifications.php:246 +msgid "About:" +msgstr "Über:" -#: include/text.php:1111 -msgid "cranky" -msgstr "schrullig" +#: include/identity.php:347 mod/contacts.php:638 +msgid "XMPP:" +msgstr "XMPP:" -#: include/text.php:1112 -msgid "disturbed" -msgstr "verstört" +#: include/identity.php:433 mod/contacts.php:55 mod/notifications.php:258 +msgid "Network:" +msgstr "Netzwerk:" -#: include/text.php:1113 -msgid "frustrated" -msgstr "frustriert" +#: include/identity.php:462 include/identity.php:552 +msgid "g A l F d" +msgstr "l, d. F G \\U\\h\\r" -#: include/text.php:1114 -msgid "motivated" -msgstr "motiviert" +#: include/identity.php:463 include/identity.php:553 +msgid "F d" +msgstr "d. F" -#: include/text.php:1115 -msgid "relaxed" -msgstr "entspannt" +#: include/identity.php:514 include/identity.php:599 +msgid "[today]" +msgstr "[heute]" -#: include/text.php:1116 -msgid "surprised" -msgstr "überrascht" +#: include/identity.php:526 +msgid "Birthday Reminders" +msgstr "Geburtstagserinnerungen" -#: include/text.php:1326 mod/videos.php:384 -msgid "View Video" -msgstr "Video ansehen" +#: include/identity.php:527 +msgid "Birthdays this week:" +msgstr "Geburtstage diese Woche:" -#: include/text.php:1358 -msgid "bytes" -msgstr "Byte" +#: include/identity.php:586 +msgid "[No description]" +msgstr "[keine Beschreibung]" -#: include/text.php:1390 include/text.php:1402 -msgid "Click to open/close" -msgstr "Zum öffnen/schließen klicken" +#: include/identity.php:610 +msgid "Event Reminders" +msgstr "Veranstaltungserinnerungen" -#: include/text.php:1528 -msgid "View on separate page" -msgstr "Auf separater Seite ansehen" +#: include/identity.php:611 +msgid "Events this week:" +msgstr "Veranstaltungen diese Woche" -#: include/text.php:1529 -msgid "view on separate page" -msgstr "auf separater Seite ansehen" +#: include/identity.php:631 mod/settings.php:1286 +msgid "Full Name:" +msgstr "Kompletter Name:" -#: include/text.php:1808 -msgid "activity" -msgstr "Aktivität" +#: include/identity.php:636 +msgid "j F, Y" +msgstr "j F, Y" -#: include/text.php:1810 mod/content.php:623 object/Item.php:446 -#: object/Item.php:458 -msgid "comment" -msgid_plural "comments" -msgstr[0] "Kommentar" -msgstr[1] "Kommentare" +#: include/identity.php:637 +msgid "j F" +msgstr "j F" -#: include/text.php:1811 -msgid "post" -msgstr "Beitrag" +#: include/identity.php:648 +msgid "Age:" +msgstr "Alter:" -#: include/text.php:1979 -msgid "Item filed" -msgstr "Beitrag abgelegt" +#: include/identity.php:659 +#, php-format +msgid "for %1$d %2$s" +msgstr "für %1$d %2$s" -#: include/Contact.php:450 -msgid "Drop Contact" -msgstr "Kontakt löschen" +#: include/identity.php:663 mod/profiles.php:703 +msgid "Sexual Preference:" +msgstr "Sexuelle Vorlieben:" -#: include/Contact.php:827 -msgid "Organisation" -msgstr "Organisation" +#: include/identity.php:671 mod/profiles.php:730 +msgid "Hometown:" +msgstr "Heimatort:" -#: include/Contact.php:830 -msgid "News" -msgstr "Nachrichten" +#: include/identity.php:675 mod/contacts.php:642 mod/follow.php:137 +#: mod/notifications.php:248 +msgid "Tags:" +msgstr "Tags:" -#: include/Contact.php:833 -msgid "Forum" -msgstr "Forum" - -#: include/items.php:1584 mod/dfrn_confirm.php:735 mod/dfrn_request.php:754 -msgid "[Name Withheld]" -msgstr "[Name unterdrückt]" +#: include/identity.php:679 mod/profiles.php:731 +msgid "Political Views:" +msgstr "Politische Ansichten:" -#: include/items.php:1939 mod/notice.php:15 mod/viewsrc.php:15 -#: mod/display.php:103 mod/display.php:279 mod/display.php:484 -#: mod/admin.php:235 mod/admin.php:1492 mod/admin.php:1738 -msgid "Item not found." -msgstr "Beitrag nicht gefunden." +#: include/identity.php:683 +msgid "Religion:" +msgstr "Religion:" -#: include/items.php:1978 -msgid "Do you really want to delete this item?" -msgstr "Möchtest Du wirklich dieses Item löschen?" +#: include/identity.php:691 +msgid "Hobbies/Interests:" +msgstr "Hobbies/Interessen:" -#: include/items.php:1980 mod/api.php:105 mod/follow.php:113 -#: mod/register.php:245 mod/settings.php:1171 mod/settings.php:1177 -#: mod/settings.php:1184 mod/settings.php:1188 mod/settings.php:1193 -#: mod/settings.php:1198 mod/settings.php:1203 mod/settings.php:1208 -#: mod/settings.php:1234 mod/settings.php:1235 mod/settings.php:1236 -#: mod/settings.php:1237 mod/settings.php:1238 mod/suggest.php:29 -#: mod/contacts.php:452 mod/message.php:206 mod/dfrn_request.php:875 -#: mod/profiles.php:640 mod/profiles.php:643 mod/profiles.php:669 -msgid "Yes" -msgstr "Ja" +#: include/identity.php:695 mod/profiles.php:735 +msgid "Likes:" +msgstr "Likes:" -#: include/items.php:2143 mod/allfriends.php:12 mod/api.php:26 mod/api.php:31 -#: mod/attach.php:33 mod/common.php:18 mod/crepair.php:102 mod/delegate.php:12 -#: mod/dirfind.php:11 mod/follow.php:11 mod/follow.php:74 mod/follow.php:158 -#: mod/fsuggest.php:79 mod/group.php:19 mod/invite.php:15 mod/invite.php:103 -#: mod/manage.php:98 mod/mood.php:115 mod/nogroup.php:27 mod/notes.php:23 -#: mod/ostatus_subscribe.php:9 mod/poke.php:154 mod/profile_photo.php:19 -#: mod/profile_photo.php:180 mod/profile_photo.php:191 -#: mod/profile_photo.php:204 mod/register.php:42 mod/regmod.php:113 -#: mod/repair_ostatus.php:9 mod/settings.php:22 mod/settings.php:130 -#: mod/settings.php:668 mod/suggest.php:58 mod/uimport.php:24 -#: mod/wall_attach.php:67 mod/wall_attach.php:70 mod/cal.php:299 -#: mod/contacts.php:360 mod/dfrn_confirm.php:61 mod/editpost.php:10 -#: mod/events.php:195 mod/item.php:193 mod/item.php:205 mod/message.php:46 -#: mod/message.php:171 mod/wall_upload.php:77 mod/wall_upload.php:80 -#: mod/wallmessage.php:9 mod/wallmessage.php:33 mod/wallmessage.php:73 -#: mod/wallmessage.php:97 mod/photos.php:161 mod/photos.php:1092 -#: mod/profiles.php:166 mod/profiles.php:607 mod/display.php:481 -#: mod/viewcontacts.php:46 mod/network.php:4 mod/notifications.php:71 -#: index.php:407 -msgid "Permission denied." -msgstr "Zugriff verweigert." +#: include/identity.php:699 mod/profiles.php:736 +msgid "Dislikes:" +msgstr "Dislikes:" -#: include/items.php:2248 -msgid "Archives" -msgstr "Archiv" +#: include/identity.php:703 +msgid "Contact information and Social Networks:" +msgstr "Kontaktinformationen und Soziale Netzwerke:" -#: include/dbstructure.php:33 -#, php-format -msgid "" -"\n" -"\t\t\tThe friendica developers released update %s recently,\n" -"\t\t\tbut when I tried to install it, something went terribly wrong.\n" -"\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n" -"\t\t\tfriendica developer if you can not help me on your own. My database might be invalid." -msgstr "\nDie Friendica-Entwickler haben vor kurzem das Update %s veröffentlicht, aber bei der Installation ging etwas schrecklich schief.\n\nDas Problem sollte so schnell wie möglich gelöst werden, aber ich schaffe es nicht alleine. Bitte kontaktiere einen Friendica-Entwickler falls Du mir nicht alleine helfen kannst. Meine Datenbank könnte ungültig sein." +#: include/identity.php:707 +msgid "Musical interests:" +msgstr "Musikalische Interessen:" -#: include/dbstructure.php:38 -#, php-format -msgid "" -"The error message is\n" -"[pre]%s[/pre]" -msgstr "Die Fehlermeldung lautet\n[pre]%s[/pre]" +#: include/identity.php:711 +msgid "Books, literature:" +msgstr "Literatur/Bücher:" -#: include/dbstructure.php:195 -msgid "Errors encountered creating database tables." -msgstr "Fehler aufgetreten während der Erzeugung der Datenbanktabellen." +#: include/identity.php:715 +msgid "Television:" +msgstr "Fernsehen:" -#: include/dbstructure.php:329 include/dbstructure.php:337 -#: include/dbstructure.php:345 include/dbstructure.php:350 -#: include/dbstructure.php:355 -msgid "Errors encountered performing database changes." -msgstr "Es sind Fehler beim Bearbeiten der Datenbank aufgetreten." +#: include/identity.php:719 +msgid "Film/dance/culture/entertainment:" +msgstr "Filme/Tänze/Kultur/Unterhaltung:" -#: include/network.php:619 -msgid "view full size" -msgstr "Volle Größe anzeigen" +#: include/identity.php:723 +msgid "Love/Romance:" +msgstr "Liebesleben:" -#: mod/allfriends.php:46 -msgid "No friends to display." -msgstr "Keine Kontakte zum Anzeigen." +#: include/identity.php:727 +msgid "Work/employment:" +msgstr "Arbeit/Beschäftigung:" -#: mod/api.php:76 mod/api.php:102 -msgid "Authorize application connection" -msgstr "Verbindung der Applikation autorisieren" +#: include/identity.php:731 +msgid "School/education:" +msgstr "Schule/Ausbildung:" -#: mod/api.php:77 -msgid "Return to your app and insert this Securty Code:" -msgstr "Gehe zu Deiner Anwendung zurück und trage dort folgenden Sicherheitscode ein:" +#: include/identity.php:736 +msgid "Forums:" +msgstr "Foren:" -#: mod/api.php:89 -msgid "Please login to continue." -msgstr "Bitte melde Dich an um fortzufahren." +#: include/identity.php:745 mod/events.php:506 +msgid "Basic" +msgstr "Allgemein" -#: mod/api.php:104 -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 den Zugriff auf Deine Beiträge und Kontakte, sowie das Erstellen neuer Beiträge in Deinem Namen gestatten?" +#: include/identity.php:746 mod/contacts.php:878 mod/events.php:507 +#: mod/admin.php:1059 +msgid "Advanced" +msgstr "Erweitert" -#: mod/api.php:106 mod/follow.php:113 mod/register.php:246 -#: mod/settings.php:1171 mod/settings.php:1177 mod/settings.php:1184 -#: mod/settings.php:1188 mod/settings.php:1193 mod/settings.php:1198 -#: mod/settings.php:1203 mod/settings.php:1208 mod/settings.php:1234 -#: mod/settings.php:1235 mod/settings.php:1236 mod/settings.php:1237 -#: mod/settings.php:1238 mod/dfrn_request.php:875 mod/profiles.php:640 -#: mod/profiles.php:644 mod/profiles.php:669 -msgid "No" -msgstr "Nein" +#: include/identity.php:772 mod/contacts.php:844 mod/follow.php:145 +msgid "Status Messages and Posts" +msgstr "Statusnachrichten und Beiträge" -#: mod/apps.php:7 index.php:248 -msgid "You must be logged in to use addons. " -msgstr "Sie müssen angemeldet sein um Addons benutzen zu können." +#: include/identity.php:780 mod/contacts.php:852 +msgid "Profile Details" +msgstr "Profildetails" -#: mod/apps.php:11 -msgid "Applications" -msgstr "Anwendungen" +#: include/identity.php:788 mod/photos.php:93 +msgid "Photo Albums" +msgstr "Fotoalben" -#: mod/apps.php:14 -msgid "No installed applications." -msgstr "Keine Applikationen installiert." +#: include/identity.php:827 mod/notes.php:47 +msgid "Personal Notes" +msgstr "Persönliche Notizen" -#: mod/attach.php:8 -msgid "Item not available." -msgstr "Beitrag nicht verfügbar." +#: include/identity.php:830 +msgid "Only You Can See This" +msgstr "Nur Du kannst das sehen" -#: mod/attach.php:20 -msgid "Item was not found." -msgstr "Beitrag konnte nicht gefunden werden." +#: include/network.php:687 +msgid "view full size" +msgstr "Volle Größe anzeigen" -#: mod/babel.php:17 -msgid "Source (bbcode) text:" -msgstr "Quelle (bbcode) Text:" +#: include/oembed.php:255 +msgid "Embedded content" +msgstr "Eingebetteter Inhalt" -#: mod/babel.php:23 -msgid "Source (Diaspora) text to convert to BBcode:" -msgstr "Eingabe (Diaspora) nach BBCode zu konvertierender Text:" +#: include/oembed.php:263 +msgid "Embedding disabled" +msgstr "Einbettungen deaktiviert" -#: mod/babel.php:31 -msgid "Source input: " -msgstr "Originaltext:" +#: include/photos.php:57 include/photos.php:66 mod/fbrowser.php:40 +#: mod/fbrowser.php:61 mod/photos.php:187 mod/photos.php:1123 +#: mod/photos.php:1256 mod/photos.php:1277 mod/photos.php:1839 +#: mod/photos.php:1853 +msgid "Contact Photos" +msgstr "Kontaktbilder" -#: mod/babel.php:35 -msgid "bb2html (raw HTML): " -msgstr "bb2html (reines HTML): " +#: include/user.php:39 mod/settings.php:375 +msgid "Passwords do not match. Password unchanged." +msgstr "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert." -#: mod/babel.php:39 -msgid "bb2html: " -msgstr "bb2html: " +#: include/user.php:48 +msgid "An invitation is required." +msgstr "Du benötigst eine Einladung." -#: mod/babel.php:43 -msgid "bb2html2bb: " -msgstr "bb2html2bb: " +#: include/user.php:53 +msgid "Invitation could not be verified." +msgstr "Die Einladung konnte nicht überprüft werden." -#: mod/babel.php:47 -msgid "bb2md: " -msgstr "bb2md: " +#: include/user.php:61 +msgid "Invalid OpenID url" +msgstr "Ungültige OpenID URL" -#: mod/babel.php:51 -msgid "bb2md2html: " -msgstr "bb2md2html: " +#: include/user.php:82 +msgid "Please enter the required information." +msgstr "Bitte trage die erforderlichen Informationen ein." -#: mod/babel.php:55 -msgid "bb2dia2bb: " -msgstr "bb2dia2bb: " +#: include/user.php:96 +msgid "Please use a shorter name." +msgstr "Bitte verwende einen kürzeren Namen." -#: mod/babel.php:59 -msgid "bb2md2html2bb: " -msgstr "bb2md2html2bb: " +#: include/user.php:98 +msgid "Name too short." +msgstr "Der Name ist zu kurz." -#: mod/babel.php:69 -msgid "Source input (Diaspora format): " -msgstr "Originaltext (Diaspora Format): " +#: include/user.php:106 +msgid "That doesn't appear to be your full (First Last) name." +msgstr "Das scheint nicht Dein kompletter Name (Vor- und Nachname) zu sein." -#: mod/babel.php:74 -msgid "diaspora2bb: " -msgstr "diaspora2bb: " +#: include/user.php:111 +msgid "Your email domain is not among those allowed on this site." +msgstr "Die Domain Deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt." -#: mod/bookmarklet.php:41 -msgid "The post was created" -msgstr "Der Beitrag wurde angelegt" +#: include/user.php:114 +msgid "Not a valid email address." +msgstr "Keine gültige E-Mail-Adresse." -#: mod/common.php:91 -msgid "No contacts in common." -msgstr "Keine gemeinsamen Kontakte." +#: include/user.php:127 +msgid "Cannot use that email." +msgstr "Konnte diese E-Mail-Adresse nicht verwenden." -#: mod/common.php:141 mod/contacts.php:871 -msgid "Common Friends" -msgstr "Gemeinsame Kontakte" +#: include/user.php:133 +msgid "Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"." +msgstr "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\" und \"_\") bestehen." -#: mod/community.php:22 mod/directory.php:37 mod/videos.php:198 -#: mod/photos.php:964 mod/dfrn_request.php:799 mod/display.php:200 -#: mod/viewcontacts.php:36 mod/search.php:93 mod/search.php:99 -msgid "Public access denied." -msgstr "Öffentlicher Zugriff verweigert." +#: include/user.php:140 include/user.php:228 +msgid "Nickname is already registered. Please choose another." +msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen." -#: mod/community.php:27 -msgid "Not available." -msgstr "Nicht verfügbar." +#: include/user.php:150 +msgid "" +"Nickname was once registered here and may not be re-used. Please choose " +"another." +msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen." -#: mod/community.php:66 mod/community.php:75 mod/search.php:224 -msgid "No results." -msgstr "Keine Ergebnisse." +#: include/user.php:166 +msgid "SERIOUS ERROR: Generation of security keys failed." +msgstr "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden." -#: mod/content.php:119 mod/network.php:468 -msgid "No such group" -msgstr "Es gibt keine solche Gruppe" +#: include/user.php:214 +msgid "An error occurred during registration. Please try again." +msgstr "Während der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal." -#: mod/content.php:130 mod/group.php:203 mod/network.php:495 -msgid "Group is empty" -msgstr "Gruppe ist leer" +#: include/user.php:239 view/theme/duepuntozero/config.php:43 +msgid "default" +msgstr "Standard" -#: mod/content.php:135 mod/network.php:499 -#, php-format -msgid "Group: %s" -msgstr "Gruppe: %s" +#: include/user.php:249 +msgid "An error occurred creating your default profile. Please try again." +msgstr "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal." -#: mod/content.php:325 object/Item.php:96 -msgid "This entry was edited" -msgstr "Dieser Beitrag wurde bearbeitet." +#: include/user.php:309 include/user.php:317 include/user.php:325 +#: mod/profile_photo.php:74 mod/profile_photo.php:82 mod/profile_photo.php:90 +#: mod/profile_photo.php:215 mod/profile_photo.php:310 +#: mod/profile_photo.php:320 mod/photos.php:71 mod/photos.php:187 +#: mod/photos.php:774 mod/photos.php:1256 mod/photos.php:1277 +#: mod/photos.php:1863 +msgid "Profile Photos" +msgstr "Profilbilder" -#: mod/content.php:621 object/Item.php:444 +#: include/user.php:400 #, php-format -msgid "%d comment" -msgid_plural "%d comments" -msgstr[0] "%d Kommentar" -msgstr[1] "%d Kommentare" - -#: mod/content.php:638 mod/photos.php:1402 object/Item.php:117 -msgid "Private Message" -msgstr "Private Nachricht" +msgid "" +"\n" +"\t\tDear %1$s,\n" +"\t\t\tThank you for registering at %2$s. Your account is pending for approval by the administrator.\n" +"\t" +msgstr "\nHallo %1$s,\n\ndanke für Deine Registrierung auf %2$s. Dein Account wurde muss noch vom Admin des Knotens geprüft werden." -#: mod/content.php:702 mod/photos.php:1590 object/Item.php:274 -msgid "I like this (toggle)" -msgstr "Ich mag das (toggle)" +#: include/user.php:410 +#, php-format +msgid "Registration at %s" +msgstr "Registrierung als %s" -#: mod/content.php:702 object/Item.php:274 -msgid "like" -msgstr "mag ich" +#: include/user.php:420 +#, php-format +msgid "" +"\n" +"\t\tDear %1$s,\n" +"\t\t\tThank you for registering at %2$s. Your account has been created.\n" +"\t" +msgstr "\nHallo %1$s,\n\ndanke für Deine Registrierung auf %2$s. Dein Account wurde eingerichtet." -#: mod/content.php:703 mod/photos.php:1591 object/Item.php:275 -msgid "I don't like this (toggle)" -msgstr "Ich mag das nicht (toggle)" +#: include/user.php:424 +#, php-format +msgid "" +"\n" +"\t\tThe login details are as follows:\n" +"\t\t\tSite Location:\t%3$s\n" +"\t\t\tLogin Name:\t%1$s\n" +"\t\t\tPassword:\t%5$s\n" +"\n" +"\t\tYou may change your password from your account \"Settings\" page after logging\n" +"\t\tin.\n" +"\n" +"\t\tPlease take a few moments to review the other account settings on that page.\n" +"\n" +"\t\tYou may also wish to add some basic information to your default profile\n" +"\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" +"\n" +"\t\tWe recommend setting your full name, adding a profile photo,\n" +"\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n" +"\t\tperhaps what country you live in; if you do not wish to be more specific\n" +"\t\tthan that.\n" +"\n" +"\t\tWe fully respect your right to privacy, and none of these items are necessary.\n" +"\t\tIf you are new and do not know anybody here, they may help\n" +"\t\tyou to make some new and interesting friends.\n" +"\n" +"\n" +"\t\tThank you and welcome to %2$s." +msgstr "\nDie Anmelde-Details sind die folgenden:\n\tAdresse der Seite:\t%3$s\n\tBenutzernamename:\t%1$s\n\tPasswort:\t%5$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nDanke für Deine Aufmerksamkeit und willkommen auf %2$s." -#: mod/content.php:703 object/Item.php:275 -msgid "dislike" -msgstr "mag ich nicht" +#: include/user.php:456 mod/admin.php:1308 +#, php-format +msgid "Registration details for %s" +msgstr "Details der Registration von %s" -#: mod/content.php:705 object/Item.php:278 -msgid "Share this" -msgstr "Weitersagen" +#: include/dbstructure.php:20 +msgid "There are no tables on MyISAM." +msgstr "Es gibt keine MyISAM Tabellen." -#: mod/content.php:705 object/Item.php:278 -msgid "share" -msgstr "Teilen" +#: include/dbstructure.php:61 +#, php-format +msgid "" +"\n" +"\t\t\tThe friendica developers released update %s recently,\n" +"\t\t\tbut when I tried to install it, something went terribly wrong.\n" +"\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n" +"\t\t\tfriendica developer if you can not help me on your own. My database might be invalid." +msgstr "\nDie Friendica-Entwickler haben vor kurzem das Update %s veröffentlicht, aber bei der Installation ging etwas schrecklich schief.\n\nDas Problem sollte so schnell wie möglich gelöst werden, aber ich schaffe es nicht alleine. Bitte kontaktiere einen Friendica-Entwickler falls Du mir nicht alleine helfen kannst. Meine Datenbank könnte ungültig sein." -#: mod/content.php:725 mod/photos.php:1609 mod/photos.php:1657 -#: mod/photos.php:1743 object/Item.php:729 -msgid "This is you" -msgstr "Das bist Du" +#: include/dbstructure.php:66 +#, php-format +msgid "" +"The error message is\n" +"[pre]%s[/pre]" +msgstr "Die Fehlermeldung lautet\n[pre]%s[/pre]" -#: mod/content.php:727 mod/content.php:950 mod/photos.php:1611 -#: mod/photos.php:1659 mod/photos.php:1745 object/Item.php:418 -#: object/Item.php:731 -msgid "Comment" -msgstr "Kommentar" +#: include/dbstructure.php:190 +#, php-format +msgid "" +"\n" +"Error %d occurred during database update:\n" +"%s\n" +msgstr "\nFehler %d beim Update der Datenbank aufgetreten\n%s\n" -#: mod/content.php:728 mod/crepair.php:156 mod/fsuggest.php:108 -#: mod/invite.php:142 mod/localtime.php:45 mod/manage.php:145 mod/mood.php:138 -#: mod/poke.php:203 mod/contacts.php:585 mod/events.php:513 -#: mod/message.php:338 mod/message.php:521 mod/photos.php:1124 -#: mod/photos.php:1246 mod/photos.php:1562 mod/photos.php:1612 -#: mod/photos.php:1660 mod/photos.php:1746 mod/install.php:276 -#: mod/install.php:316 mod/profiles.php:680 object/Item.php:732 -#: view/theme/quattro/config.php:67 view/theme/vier/config.php:112 -#: view/theme/duepuntozero/config.php:61 view/theme/clean/config.php:87 -#: view/theme/frio/config.php:64 -msgid "Submit" -msgstr "Senden" +#: include/dbstructure.php:193 +msgid "Errors encountered performing database changes: " +msgstr "Fehler beim Ändern der Datenbank aufgetreten" -#: mod/content.php:729 object/Item.php:733 -msgid "Bold" -msgstr "Fett" +#: include/dbstructure.php:201 +msgid ": Database update" +msgstr ": Datenbank Update" -#: mod/content.php:730 object/Item.php:734 -msgid "Italic" -msgstr "Kursiv" +#: include/dbstructure.php:425 +#, php-format +msgid "%s: updating %s table." +msgstr "%s: aktualisiere Tabelle %s" -#: mod/content.php:731 object/Item.php:735 -msgid "Underline" -msgstr "Unterstrichen" +#: include/dfrn.php:1251 +#, php-format +msgid "%s\\'s birthday" +msgstr "%ss Geburtstag" -#: mod/content.php:732 object/Item.php:736 -msgid "Quote" -msgstr "Zitat" +#: include/diaspora.php:2137 +msgid "Sharing notification from Diaspora network" +msgstr "Freigabe-Benachrichtigung von Diaspora" -#: mod/content.php:733 object/Item.php:737 -msgid "Code" -msgstr "Code" +#: include/diaspora.php:3146 +msgid "Attachments:" +msgstr "Anhänge:" -#: mod/content.php:734 object/Item.php:738 -msgid "Image" -msgstr "Bild" +#: include/items.php:1738 mod/dfrn_confirm.php:736 mod/dfrn_request.php:759 +msgid "[Name Withheld]" +msgstr "[Name unterdrückt]" -#: mod/content.php:735 object/Item.php:739 -msgid "Link" -msgstr "Link" +#: include/items.php:2123 mod/display.php:103 mod/display.php:279 +#: mod/display.php:484 mod/notice.php:15 mod/viewsrc.php:15 mod/admin.php:247 +#: mod/admin.php:1565 mod/admin.php:1816 +msgid "Item not found." +msgstr "Beitrag nicht gefunden." -#: mod/content.php:736 object/Item.php:740 -msgid "Video" -msgstr "Video" +#: include/items.php:2162 +msgid "Do you really want to delete this item?" +msgstr "Möchtest Du wirklich dieses Item löschen?" -#: mod/content.php:746 mod/settings.php:743 object/Item.php:122 -#: object/Item.php:124 -msgid "Edit" -msgstr "Bearbeiten" +#: include/items.php:2164 mod/api.php:105 mod/contacts.php:452 +#: mod/suggest.php:29 mod/dfrn_request.php:880 mod/follow.php:113 +#: mod/message.php:206 mod/profiles.php:640 mod/profiles.php:643 +#: mod/profiles.php:670 mod/register.php:245 mod/settings.php:1171 +#: mod/settings.php:1177 mod/settings.php:1184 mod/settings.php:1188 +#: mod/settings.php:1193 mod/settings.php:1198 mod/settings.php:1203 +#: mod/settings.php:1208 mod/settings.php:1234 mod/settings.php:1235 +#: mod/settings.php:1236 mod/settings.php:1237 mod/settings.php:1238 +msgid "Yes" +msgstr "Ja" -#: mod/content.php:772 object/Item.php:238 -msgid "add star" -msgstr "markieren" +#: include/items.php:2327 mod/allfriends.php:12 mod/api.php:26 mod/api.php:31 +#: mod/attach.php:33 mod/common.php:18 mod/contacts.php:360 +#: mod/crepair.php:102 mod/delegate.php:12 mod/display.php:481 +#: mod/editpost.php:10 mod/fsuggest.php:79 mod/invite.php:15 +#: mod/invite.php:103 mod/mood.php:115 mod/nogroup.php:27 mod/notes.php:23 +#: mod/ostatus_subscribe.php:9 mod/poke.php:154 mod/profile_photo.php:19 +#: mod/profile_photo.php:180 mod/profile_photo.php:191 +#: mod/profile_photo.php:204 mod/regmod.php:113 mod/repair_ostatus.php:9 +#: mod/suggest.php:58 mod/uimport.php:24 mod/viewcontacts.php:46 +#: mod/wall_attach.php:67 mod/wall_attach.php:70 mod/wallmessage.php:9 +#: mod/wallmessage.php:33 mod/wallmessage.php:73 mod/wallmessage.php:97 +#: mod/cal.php:299 mod/dfrn_confirm.php:61 mod/dirfind.php:11 +#: mod/events.php:185 mod/follow.php:11 mod/follow.php:74 mod/follow.php:158 +#: mod/group.php:19 mod/manage.php:102 mod/message.php:46 mod/message.php:171 +#: mod/network.php:4 mod/photos.php:166 mod/photos.php:1109 +#: mod/profiles.php:168 mod/profiles.php:607 mod/register.php:42 +#: mod/settings.php:22 mod/settings.php:130 mod/settings.php:668 +#: mod/wall_upload.php:101 mod/wall_upload.php:104 mod/item.php:196 +#: mod/item.php:208 mod/notifications.php:71 index.php:407 +msgid "Permission denied." +msgstr "Zugriff verweigert." -#: mod/content.php:773 object/Item.php:239 -msgid "remove star" -msgstr "Markierung entfernen" +#: include/items.php:2444 +msgid "Archives" +msgstr "Archiv" -#: mod/content.php:774 object/Item.php:240 -msgid "toggle star status" -msgstr "Markierung umschalten" +#: include/ostatus.php:1947 +#, php-format +msgid "%s is now following %s." +msgstr "%s folgt nun %s" -#: mod/content.php:777 object/Item.php:243 -msgid "starred" -msgstr "markiert" +#: include/ostatus.php:1948 +msgid "following" +msgstr "folgen" -#: mod/content.php:778 mod/content.php:800 object/Item.php:263 -msgid "add tag" -msgstr "Tag hinzufügen" +#: include/ostatus.php:1951 +#, php-format +msgid "%s stopped following %s." +msgstr "%s hat aufgehört %s zu folgen" -#: mod/content.php:789 object/Item.php:251 -msgid "ignore thread" -msgstr "Thread ignorieren" +#: include/ostatus.php:1952 +msgid "stopped following" +msgstr "wird nicht mehr gefolgt" -#: mod/content.php:790 object/Item.php:252 -msgid "unignore thread" -msgstr "Thread nicht mehr ignorieren" +#: include/text.php:307 +msgid "newer" +msgstr "neuer" -#: mod/content.php:791 object/Item.php:253 -msgid "toggle ignore status" -msgstr "Ignoriert-Status ein-/ausschalten" +#: include/text.php:308 +msgid "older" +msgstr "älter" -#: mod/content.php:794 mod/ostatus_subscribe.php:73 object/Item.php:256 -msgid "ignored" -msgstr "Ignoriert" +#: include/text.php:313 +msgid "first" +msgstr "erste" -#: mod/content.php:805 object/Item.php:141 -msgid "save to folder" -msgstr "In Ordner speichern" +#: include/text.php:314 +msgid "prev" +msgstr "vorige" -#: mod/content.php:853 object/Item.php:212 -msgid "I will attend" -msgstr "Ich werde teilnehmen" +#: include/text.php:348 +msgid "next" +msgstr "nächste" -#: mod/content.php:853 object/Item.php:212 -msgid "I will not attend" -msgstr "Ich werde nicht teilnehmen" +#: include/text.php:349 +msgid "last" +msgstr "letzte" -#: mod/content.php:853 object/Item.php:212 -msgid "I might attend" -msgstr "Ich werde eventuell teilnehmen" +#: include/text.php:403 +msgid "Loading more entries..." +msgstr "lade weitere Einträge..." -#: mod/content.php:917 object/Item.php:384 -msgid "to" -msgstr "zu" +#: include/text.php:404 +msgid "The end" +msgstr "Das Ende" -#: mod/content.php:918 object/Item.php:386 -msgid "Wall-to-Wall" -msgstr "Wall-to-Wall" +#: include/text.php:955 +msgid "No contacts" +msgstr "Keine Kontakte" -#: mod/content.php:919 object/Item.php:387 -msgid "via Wall-To-Wall:" -msgstr "via Wall-To-Wall:" +#: include/text.php:980 +#, php-format +msgid "%d Contact" +msgid_plural "%d Contacts" +msgstr[0] "%d Kontakt" +msgstr[1] "%d Kontakte" -#: mod/credits.php:16 -msgid "Credits" -msgstr "Credits" +#: include/text.php:993 +msgid "View Contacts" +msgstr "Kontakte anzeigen" -#: mod/credits.php:17 -msgid "" -"Friendica is a community project, that would not be possible without the " -"help of many people. Here is a list of those who have contributed to the " -"code or the translation of Friendica. Thank you all!" -msgstr "Friendica ist ein Gemeinschaftsprojekt, das nicht ohne die Hilfe vieler Personen möglich wäre. Hier ist eine Aufzählung der Personen, die zum Code oder der Übersetzung beigetragen haben. Dank an alle !" +#: include/text.php:1081 mod/editpost.php:99 mod/filer.php:31 mod/notes.php:62 +msgid "Save" +msgstr "Speichern" -#: mod/crepair.php:89 -msgid "Contact settings applied." -msgstr "Einstellungen zum Kontakt angewandt." +#: include/text.php:1144 +msgid "poke" +msgstr "anstupsen" -#: mod/crepair.php:91 -msgid "Contact update failed." -msgstr "Konnte den Kontakt nicht aktualisieren." +#: include/text.php:1144 +msgid "poked" +msgstr "stupste" -#: mod/crepair.php:116 mod/fsuggest.php:21 mod/fsuggest.php:93 -#: mod/dfrn_confirm.php:126 -msgid "Contact not found." -msgstr "Kontakt nicht gefunden." +#: include/text.php:1145 +msgid "ping" +msgstr "anpingen" -#: mod/crepair.php:122 -msgid "" -"WARNING: This is highly advanced and if you enter incorrect" -" information your communications with this contact may stop working." -msgstr "ACHTUNG: Das sind Experten-Einstellungen! Wenn Du etwas Falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr." +#: include/text.php:1145 +msgid "pinged" +msgstr "pingte" -#: mod/crepair.php:123 -msgid "" -"Please use your browser 'Back' button now if you are " -"uncertain what to do on this page." -msgstr "Bitte nutze den Zurück-Button Deines Browsers jetzt, wenn Du Dir unsicher bist, was Du tun willst." +#: include/text.php:1146 +msgid "prod" +msgstr "knuffen" -#: mod/crepair.php:136 mod/crepair.php:138 -msgid "No mirroring" -msgstr "Kein Spiegeln" +#: include/text.php:1146 +msgid "prodded" +msgstr "knuffte" -#: mod/crepair.php:136 -msgid "Mirror as forwarded posting" -msgstr "Spiegeln als weitergeleitete Beiträge" +#: include/text.php:1147 +msgid "slap" +msgstr "ohrfeigen" -#: mod/crepair.php:136 mod/crepair.php:138 -msgid "Mirror as my own posting" -msgstr "Spiegeln als meine eigenen Beiträge" +#: include/text.php:1147 +msgid "slapped" +msgstr "ohrfeigte" -#: mod/crepair.php:152 -msgid "Return to contact editor" -msgstr "Zurück zum Kontakteditor" +#: include/text.php:1148 +msgid "finger" +msgstr "befummeln" -#: mod/crepair.php:154 -msgid "Refetch contact data" -msgstr "Kontaktdaten neu laden" +#: include/text.php:1148 +msgid "fingered" +msgstr "befummelte" -#: mod/crepair.php:158 -msgid "Remote Self" -msgstr "Entfernte Konten" +#: include/text.php:1149 +msgid "rebuff" +msgstr "eine Abfuhr erteilen" -#: mod/crepair.php:161 -msgid "Mirror postings from this contact" -msgstr "Spiegle Beiträge dieses Kontakts" +#: include/text.php:1149 +msgid "rebuffed" +msgstr "abfuhrerteilte" -#: mod/crepair.php:163 -msgid "" -"Mark this contact as remote_self, this will cause friendica to repost new " -"entries from this contact." -msgstr "Markiere diesen Kontakt als remote_self (entferntes Konto), dies veranlasst Friendica alle Top-Level Beiträge dieses Kontakts an all Deine Kontakte zu senden." +#: include/text.php:1163 +msgid "happy" +msgstr "glücklich" -#: mod/crepair.php:167 mod/settings.php:683 mod/settings.php:709 -#: mod/admin.php:1417 mod/admin.php:1430 mod/admin.php:1443 mod/admin.php:1459 -msgid "Name" -msgstr "Name" +#: include/text.php:1164 +msgid "sad" +msgstr "traurig" -#: mod/crepair.php:168 -msgid "Account Nickname" -msgstr "Konto-Spitzname" +#: include/text.php:1165 +msgid "mellow" +msgstr "sanft" -#: mod/crepair.php:169 -msgid "@Tagname - overrides Name/Nickname" -msgstr "@Tagname - überschreibt Name/Spitzname" +#: include/text.php:1166 +msgid "tired" +msgstr "müde" -#: mod/crepair.php:170 -msgid "Account URL" -msgstr "Konto-URL" +#: include/text.php:1167 +msgid "perky" +msgstr "frech" -#: mod/crepair.php:171 -msgid "Friend Request URL" -msgstr "URL für Kontaktschaftsanfragen" +#: include/text.php:1168 +msgid "angry" +msgstr "sauer" -#: mod/crepair.php:172 -msgid "Friend Confirm URL" -msgstr "URL für Bestätigungen von Kontaktanfragen" +#: include/text.php:1169 +msgid "stupified" +msgstr "verblüfft" -#: mod/crepair.php:173 -msgid "Notification Endpoint URL" -msgstr "URL-Endpunkt für Benachrichtigungen" +#: include/text.php:1170 +msgid "puzzled" +msgstr "verwirrt" -#: mod/crepair.php:174 -msgid "Poll/Feed URL" -msgstr "Pull/Feed-URL" +#: include/text.php:1171 +msgid "interested" +msgstr "interessiert" -#: mod/crepair.php:175 -msgid "New photo from this URL" -msgstr "Neues Foto von dieser URL" +#: include/text.php:1172 +msgid "bitter" +msgstr "verbittert" -#: mod/delegate.php:101 -msgid "No potential page delegates located." -msgstr "Keine potentiellen Bevollmächtigten für die Seite gefunden." +#: include/text.php:1173 +msgid "cheerful" +msgstr "fröhlich" -#: mod/delegate.php:132 -msgid "" -"Delegates are able to manage all aspects of this account/page except for " -"basic account settings. Please do not delegate your personal account to " -"anybody that you do not trust completely." -msgstr "Bevollmächtigte sind in der Lage, alle Aspekte dieses Kontos/dieser Seite zu verwalten, abgesehen von den Grundeinstellungen des Kontos. Bitte gib niemandem eine Bevollmächtigung für Deinen privaten Account, dem Du nicht absolut vertraust!" +#: include/text.php:1174 +msgid "alive" +msgstr "lebendig" -#: mod/delegate.php:133 -msgid "Existing Page Managers" -msgstr "Vorhandene Seitenmanager" +#: include/text.php:1175 +msgid "annoyed" +msgstr "verärgert" -#: mod/delegate.php:135 -msgid "Existing Page Delegates" -msgstr "Vorhandene Bevollmächtigte für die Seite" +#: include/text.php:1176 +msgid "anxious" +msgstr "unruhig" -#: mod/delegate.php:137 -msgid "Potential Delegates" -msgstr "Potentielle Bevollmächtigte" +#: include/text.php:1177 +msgid "cranky" +msgstr "schrullig" -#: mod/delegate.php:139 mod/tagrm.php:95 -msgid "Remove" -msgstr "Entfernen" +#: include/text.php:1178 +msgid "disturbed" +msgstr "verstört" -#: mod/delegate.php:140 -msgid "Add" -msgstr "Hinzufügen" +#: include/text.php:1179 +msgid "frustrated" +msgstr "frustriert" -#: mod/delegate.php:141 -msgid "No entries." -msgstr "Keine Einträge." +#: include/text.php:1180 +msgid "motivated" +msgstr "motiviert" -#: mod/dfrn_poll.php:104 mod/dfrn_poll.php:539 -#, php-format -msgid "%1$s welcomes %2$s" -msgstr "%1$s heißt %2$s herzlich willkommen" +#: include/text.php:1181 +msgid "relaxed" +msgstr "entspannt" -#: mod/directory.php:199 view/theme/vier/theme.php:196 -msgid "Global Directory" -msgstr "Weltweites Verzeichnis" +#: include/text.php:1182 +msgid "surprised" +msgstr "überrascht" -#: mod/directory.php:201 -msgid "Find on this site" -msgstr "Auf diesem Server suchen" +#: include/text.php:1392 mod/videos.php:386 +msgid "View Video" +msgstr "Video ansehen" -#: mod/directory.php:203 -msgid "Results for:" -msgstr "Ergebnisse für:" +#: include/text.php:1424 +msgid "bytes" +msgstr "Byte" -#: mod/directory.php:205 -msgid "Site Directory" -msgstr "Verzeichnis" +#: include/text.php:1456 include/text.php:1468 +msgid "Click to open/close" +msgstr "Zum öffnen/schließen klicken" -#: mod/directory.php:212 -msgid "No entries (some entries may be hidden)." -msgstr "Keine Einträge (einige Einträge könnten versteckt sein)." +#: include/text.php:1594 +msgid "View on separate page" +msgstr "Auf separater Seite ansehen" -#: mod/dirfind.php:37 -#, php-format -msgid "People Search - %s" -msgstr "Personensuche - %s" +#: include/text.php:1595 +msgid "view on separate page" +msgstr "auf separater Seite ansehen" -#: mod/dirfind.php:48 -#, php-format -msgid "Forum Search - %s" -msgstr "Forensuche - %s" +#: include/text.php:1874 +msgid "activity" +msgstr "Aktivität" -#: mod/dirfind.php:245 mod/match.php:109 -msgid "No matches" -msgstr "Keine Übereinstimmungen" +#: include/text.php:1876 mod/content.php:623 object/Item.php:419 +#: object/Item.php:431 +msgid "comment" +msgid_plural "comments" +msgstr[0] "Kommentar" +msgstr[1] "Kommentare" -#: mod/filer.php:30 -msgid "- select -" -msgstr "- auswählen -" +#: include/text.php:1877 +msgid "post" +msgstr "Beitrag" -#: mod/follow.php:19 mod/dfrn_request.php:888 -msgid "Submit Request" -msgstr "Anfrage abschicken" +#: include/text.php:2045 +msgid "Item filed" +msgstr "Beitrag abgelegt" -#: mod/follow.php:30 -msgid "You already added this contact." -msgstr "Du hast den Kontakt bereits hinzugefügt." +#: mod/allfriends.php:46 +msgid "No friends to display." +msgstr "Keine Kontakte zum Anzeigen." -#: mod/follow.php:39 -msgid "Diaspora support isn't enabled. Contact can't be added." -msgstr "Diaspora Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden." +#: mod/api.php:76 mod/api.php:102 +msgid "Authorize application connection" +msgstr "Verbindung der Applikation autorisieren" -#: mod/follow.php:46 -msgid "OStatus support is disabled. Contact can't be added." -msgstr "OStatus Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden." +#: mod/api.php:77 +msgid "Return to your app and insert this Securty Code:" +msgstr "Gehe zu Deiner Anwendung zurück und trage dort folgenden Sicherheitscode ein:" -#: mod/follow.php:53 -msgid "The network type couldn't be detected. Contact can't be added." -msgstr "Der Netzwerktype wurde nicht erkannt. Der Kontakt kann nicht hinzugefügt werden." +#: mod/api.php:89 +msgid "Please login to continue." +msgstr "Bitte melde Dich an um fortzufahren." -#: mod/follow.php:112 mod/dfrn_request.php:874 -msgid "Please answer the following:" -msgstr "Bitte beantworte folgendes:" +#: mod/api.php:104 +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 den Zugriff auf Deine Beiträge und Kontakte, sowie das Erstellen neuer Beiträge in Deinem Namen gestatten?" -#: mod/follow.php:113 mod/dfrn_request.php:875 -#, php-format -msgid "Does %s know you?" -msgstr "Kennt %s Dich?" +#: mod/api.php:106 mod/dfrn_request.php:880 mod/follow.php:113 +#: mod/profiles.php:640 mod/profiles.php:644 mod/profiles.php:670 +#: mod/register.php:246 mod/settings.php:1171 mod/settings.php:1177 +#: mod/settings.php:1184 mod/settings.php:1188 mod/settings.php:1193 +#: mod/settings.php:1198 mod/settings.php:1203 mod/settings.php:1208 +#: mod/settings.php:1234 mod/settings.php:1235 mod/settings.php:1236 +#: mod/settings.php:1237 mod/settings.php:1238 +msgid "No" +msgstr "Nein" -#: mod/follow.php:114 mod/dfrn_request.php:879 -msgid "Add a personal note:" -msgstr "Eine persönliche Notiz beifügen:" +#: mod/apps.php:7 index.php:254 +msgid "You must be logged in to use addons. " +msgstr "Sie müssen angemeldet sein um Addons benutzen zu können." -#: mod/follow.php:120 mod/dfrn_request.php:885 -msgid "Your Identity Address:" -msgstr "Adresse Deines Profils:" +#: mod/apps.php:11 +msgid "Applications" +msgstr "Anwendungen" -#: mod/follow.php:129 mod/contacts.php:632 mod/notifications.php:249 -msgid "Profile URL" -msgstr "Profil URL" +#: mod/apps.php:14 +msgid "No installed applications." +msgstr "Keine Applikationen installiert." -#: mod/follow.php:186 -msgid "Contact added" -msgstr "Kontakt hinzugefügt" +#: mod/attach.php:8 +msgid "Item not available." +msgstr "Beitrag nicht verfügbar." -#: mod/fsuggest.php:64 -msgid "Friend suggestion sent." -msgstr "Kontaktvorschlag gesendet." +#: mod/attach.php:20 +msgid "Item was not found." +msgstr "Beitrag konnte nicht gefunden werden." -#: mod/fsuggest.php:98 -msgid "Suggest Friends" -msgstr "Kontakte vorschlagen" +#: mod/bookmarklet.php:41 +msgid "The post was created" +msgstr "Der Beitrag wurde angelegt" -#: mod/fsuggest.php:100 -#, php-format -msgid "Suggest a friend for %s" -msgstr "Schlage %s einen Kontakt vor" +#: mod/common.php:91 +msgid "No contacts in common." +msgstr "Keine gemeinsamen Kontakte." -#: mod/group.php:29 -msgid "Group created." -msgstr "Gruppe erstellt." +#: mod/common.php:141 mod/contacts.php:871 +msgid "Common Friends" +msgstr "Gemeinsame Kontakte" -#: mod/group.php:35 -msgid "Could not create group." -msgstr "Konnte die Gruppe nicht erstellen." +#: mod/contacts.php:134 +#, php-format +msgid "%d contact edited." +msgid_plural "%d contacts edited." +msgstr[0] "%d Kontakt bearbeitet." +msgstr[1] "%d Kontakte bearbeitet." -#: mod/group.php:49 mod/group.php:150 -msgid "Group not found." -msgstr "Gruppe nicht gefunden." - -#: mod/group.php:63 -msgid "Group name changed." -msgstr "Gruppenname geändert." - -#: mod/group.php:76 mod/profperm.php:20 index.php:406 -msgid "Permission denied" -msgstr "Zugriff verweigert" +#: mod/contacts.php:169 mod/contacts.php:378 +msgid "Could not access contact record." +msgstr "Konnte nicht auf die Kontaktdaten zugreifen." -#: mod/group.php:91 -msgid "Save Group" -msgstr "Gruppe speichern" +#: mod/contacts.php:183 +msgid "Could not locate selected profile." +msgstr "Konnte das ausgewählte Profil nicht finden." -#: mod/group.php:97 -msgid "Create a group of contacts/friends." -msgstr "Eine Kontaktgruppe anlegen." +#: mod/contacts.php:216 +msgid "Contact updated." +msgstr "Kontakt aktualisiert." -#: mod/group.php:122 -msgid "Group removed." -msgstr "Gruppe entfernt." +#: mod/contacts.php:218 mod/dfrn_request.php:593 +msgid "Failed to update contact record." +msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen." -#: mod/group.php:124 -msgid "Unable to remove group." -msgstr "Konnte die Gruppe nicht entfernen." +#: mod/contacts.php:399 +msgid "Contact has been blocked" +msgstr "Kontakt wurde blockiert" -#: mod/group.php:187 -msgid "Group Editor" -msgstr "Gruppeneditor" +#: mod/contacts.php:399 +msgid "Contact has been unblocked" +msgstr "Kontakt wurde wieder freigegeben" -#: mod/group.php:200 -msgid "Members" -msgstr "Mitglieder" +#: mod/contacts.php:410 +msgid "Contact has been ignored" +msgstr "Kontakt wurde ignoriert" -#: mod/group.php:202 mod/contacts.php:700 -msgid "All Contacts" -msgstr "Alle Kontakte" +#: mod/contacts.php:410 +msgid "Contact has been unignored" +msgstr "Kontakt wird nicht mehr ignoriert" -#: mod/group.php:233 mod/profperm.php:107 -msgid "Click on a contact to add or remove." -msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen" +#: mod/contacts.php:422 +msgid "Contact has been archived" +msgstr "Kontakt wurde archiviert" -#: mod/hcard.php:11 -msgid "No profile" -msgstr "Kein Profil" +#: mod/contacts.php:422 +msgid "Contact has been unarchived" +msgstr "Kontakt wurde aus dem Archiv geholt" -#: mod/help.php:41 -msgid "Help:" -msgstr "Hilfe:" +#: mod/contacts.php:447 +msgid "Drop contact" +msgstr "Kontakt löschen" -#: mod/help.php:53 mod/fetch.php:12 mod/fetch.php:39 mod/fetch.php:48 -#: mod/p.php:16 mod/p.php:43 mod/p.php:52 index.php:292 -msgid "Not Found" -msgstr "Nicht gefunden" +#: mod/contacts.php:450 mod/contacts.php:809 +msgid "Do you really want to delete this contact?" +msgstr "Möchtest Du wirklich diesen Kontakt löschen?" -#: mod/help.php:56 index.php:295 -msgid "Page not found." -msgstr "Seite nicht gefunden." +#: mod/contacts.php:469 +msgid "Contact has been removed." +msgstr "Kontakt wurde entfernt." -#: mod/home.php:39 +#: mod/contacts.php:506 #, php-format -msgid "Welcome to %s" -msgstr "Willkommen zu %s" - -#: mod/invite.php:28 -msgid "Total invitation limit exceeded." -msgstr "Limit für Einladungen erreicht." +msgid "You are mutual friends with %s" +msgstr "Du hast mit %s eine beidseitige Freundschaft" -#: mod/invite.php:51 +#: mod/contacts.php:510 #, php-format -msgid "%s : Not a valid email address." -msgstr "%s: Keine gültige Email Adresse." +msgid "You are sharing with %s" +msgstr "Du teilst mit %s" -#: mod/invite.php:76 -msgid "Please join us on Friendica" -msgstr "Ich lade Dich zu unserem sozialen Netzwerk Friendica ein" +#: mod/contacts.php:515 +#, php-format +msgid "%s is sharing with you" +msgstr "%s teilt mit Dir" -#: mod/invite.php:87 -msgid "Invitation limit exceeded. Please contact your site administrator." -msgstr "Limit für Einladungen erreicht. Bitte kontaktiere des Administrator der Seite." +#: mod/contacts.php:535 +msgid "Private communications are not available for this contact." +msgstr "Private Kommunikation ist für diesen Kontakt nicht verfügbar." -#: mod/invite.php:91 -#, php-format -msgid "%s : Message delivery failed." -msgstr "%s: Zustellung der Nachricht fehlgeschlagen." +#: mod/contacts.php:538 mod/admin.php:978 +msgid "Never" +msgstr "Niemals" -#: mod/invite.php:95 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "%d Nachricht gesendet." -msgstr[1] "%d Nachrichten gesendet." +#: mod/contacts.php:542 +msgid "(Update was successful)" +msgstr "(Aktualisierung war erfolgreich)" -#: mod/invite.php:114 -msgid "You have no more invitations available" -msgstr "Du hast keine weiteren Einladungen" +#: mod/contacts.php:542 +msgid "(Update was not successful)" +msgstr "(Aktualisierung war nicht erfolgreich)" -#: mod/invite.php:122 -#, php-format -msgid "" -"Visit %s for a list of public sites that you can join. Friendica members on " -"other sites can all connect with each other, as well as with members of many" -" other social networks." -msgstr "Besuche %s für eine Liste der öffentlichen Server, denen Du beitreten kannst. Friendica Mitglieder unterschiedlicher Server können sich sowohl alle miteinander verbinden, als auch mit Mitgliedern anderer Sozialer Netzwerke." +#: mod/contacts.php:544 mod/contacts.php:972 +msgid "Suggest friends" +msgstr "Kontakte vorschlagen" -#: mod/invite.php:124 +#: mod/contacts.php:548 #, php-format -msgid "" -"To accept this invitation, please visit and register at %s or any other " -"public Friendica website." -msgstr "Um diese Kontaktanfrage zu akzeptieren, besuche und registriere Dich bitte bei %s oder einer anderen öffentlichen Friendica Website." +msgid "Network type: %s" +msgstr "Netzwerktyp: %s" -#: mod/invite.php:125 -#, php-format -msgid "" -"Friendica sites all inter-connect to create a huge privacy-enhanced social " -"web that is owned and controlled by its members. They can also connect with " -"many traditional social networks. See %s for a list of alternate Friendica " -"sites you can join." -msgstr "Friendica Server verbinden sich alle untereinander, um ein großes datenschutzorientiertes Soziales Netzwerk zu bilden, das von seinen Mitgliedern betrieben und kontrolliert wird. Sie können sich auch mit vielen üblichen Sozialen Netzwerken verbinden. Besuche %s für eine Liste alternativer Friendica Server, denen Du beitreten kannst." +#: mod/contacts.php:561 +msgid "Communications lost with this contact!" +msgstr "Verbindungen mit diesem Kontakt verloren!" -#: mod/invite.php:128 -msgid "" -"Our apologies. This system is not currently configured to connect with other" -" public sites or invite members." -msgstr "Es tut uns leid. Dieses System ist zurzeit nicht dafür konfiguriert, sich mit anderen öffentlichen Seiten zu verbinden oder Mitglieder einzuladen." +#: mod/contacts.php:564 +msgid "Fetch further information for feeds" +msgstr "Weitere Informationen zu Feeds holen" -#: mod/invite.php:134 -msgid "Send invitations" -msgstr "Einladungen senden" +#: mod/contacts.php:565 mod/admin.php:987 +msgid "Disabled" +msgstr "Deaktiviert" -#: mod/invite.php:135 -msgid "Enter email addresses, one per line:" -msgstr "E-Mail-Adressen eingeben, eine pro Zeile:" +#: mod/contacts.php:565 +msgid "Fetch information" +msgstr "Beziehe Information" -#: mod/invite.php:136 mod/message.php:332 mod/message.php:515 -#: mod/wallmessage.php:135 -msgid "Your message:" -msgstr "Deine Nachricht:" +#: mod/contacts.php:565 +msgid "Fetch information and keywords" +msgstr "Beziehe Information und Schlüsselworte" -#: mod/invite.php:137 -msgid "" -"You are cordially invited to join me and other close friends on Friendica - " -"and help us to create a better social web." -msgstr "Du bist herzlich dazu eingeladen, Dich mir und anderen guten Freunden auf Friendica anzuschließen - und ein besseres Soziales Netz aufzubauen." +#: mod/contacts.php:583 +msgid "Contact" +msgstr "Kontakt" -#: mod/invite.php:139 -msgid "You will need to supply this invitation code: $invite_code" -msgstr "Du benötigst den folgenden Einladungscode: $invite_code" +#: mod/contacts.php:585 mod/content.php:728 mod/crepair.php:156 +#: mod/fsuggest.php:108 mod/invite.php:142 mod/localtime.php:45 +#: mod/mood.php:138 mod/poke.php:203 mod/events.php:505 mod/manage.php:155 +#: mod/message.php:338 mod/message.php:521 mod/photos.php:1141 +#: mod/photos.php:1271 mod/photos.php:1597 mod/photos.php:1646 +#: mod/photos.php:1688 mod/photos.php:1768 mod/profiles.php:681 +#: mod/install.php:242 mod/install.php:282 object/Item.php:705 +#: view/theme/duepuntozero/config.php:61 view/theme/frio/config.php:64 +#: view/theme/quattro/config.php:67 view/theme/vier/config.php:112 +msgid "Submit" +msgstr "Senden" -#: mod/invite.php:139 -msgid "" -"Once you have registered, please connect with me via my profile page at:" -msgstr "Sobald Du registriert bist, kontaktiere mich bitte auf meiner Profilseite:" +#: mod/contacts.php:586 +msgid "Profile Visibility" +msgstr "Profil-Sichtbarkeit" -#: mod/invite.php:141 +#: mod/contacts.php:587 +#, php-format msgid "" -"For more information about the Friendica project and why we feel it is " -"important, please visit http://friendica.com" -msgstr "Für weitere Informationen über das Friendica Projekt und warum wir es für ein wichtiges Projekt halten, besuche bitte http://friendica.com" - -#: mod/localtime.php:24 -msgid "Time Conversion" -msgstr "Zeitumrechnung" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Bitte wähle eines Deiner Profile das angezeigt werden soll, wenn %s Dein Profil aufruft." -#: mod/localtime.php:26 -msgid "" -"Friendica provides this service for sharing events with other networks and " -"friends in unknown timezones." -msgstr "Friendica bietet diese Funktion an, um das Teilen von Events mit Kontakten zu vereinfachen, deren Zeitzone nicht ermittelt werden kann." +#: mod/contacts.php:588 +msgid "Contact Information / Notes" +msgstr "Kontakt Informationen / Notizen" -#: mod/localtime.php:30 -#, php-format -msgid "UTC time: %s" -msgstr "UTC Zeit: %s" +#: mod/contacts.php:589 +msgid "Edit contact notes" +msgstr "Notizen zum Kontakt bearbeiten" -#: mod/localtime.php:33 +#: mod/contacts.php:594 mod/contacts.php:938 mod/nogroup.php:43 +#: mod/viewcontacts.php:102 #, php-format -msgid "Current timezone: %s" -msgstr "Aktuelle Zeitzone: %s" +msgid "Visit %s's profile [%s]" +msgstr "Besuche %ss Profil [%s]" -#: mod/localtime.php:36 -#, php-format -msgid "Converted localtime: %s" -msgstr "Umgerechnete lokale Zeit: %s" +#: mod/contacts.php:595 +msgid "Block/Unblock contact" +msgstr "Kontakt blockieren/freischalten" -#: mod/localtime.php:41 -msgid "Please select your timezone:" -msgstr "Bitte wähle Deine Zeitzone:" +#: mod/contacts.php:596 +msgid "Ignore contact" +msgstr "Ignoriere den Kontakt" -#: mod/lockview.php:32 mod/lockview.php:40 -msgid "Remote privacy information not available." -msgstr "Entfernte Privatsphäreneinstellungen nicht verfügbar." +#: mod/contacts.php:597 +msgid "Repair URL settings" +msgstr "URL Einstellungen reparieren" -#: mod/lockview.php:49 -msgid "Visible to:" -msgstr "Sichtbar für:" +#: mod/contacts.php:598 +msgid "View conversations" +msgstr "Unterhaltungen anzeigen" -#: mod/lostpass.php:19 -msgid "No valid account found." -msgstr "Kein gültiges Konto gefunden." +#: mod/contacts.php:604 +msgid "Last update:" +msgstr "Letzte Aktualisierung: " -#: mod/lostpass.php:35 -msgid "Password reset request issued. Check your email." -msgstr "Zurücksetzen des Passworts eingeleitet. Bitte überprüfe Deine E-Mail." +#: mod/contacts.php:606 +msgid "Update public posts" +msgstr "Öffentliche Beiträge aktualisieren" -#: mod/lostpass.php:41 -#, php-format -msgid "" -"\n" -"\t\tDear %1$s,\n" -"\t\t\tA request was recently received at \"%2$s\" to reset your account\n" -"\t\tpassword. In order to confirm this request, please select the verification link\n" -"\t\tbelow or paste it into your web browser address bar.\n" -"\n" -"\t\tIf you did NOT request this change, please DO NOT follow the link\n" -"\t\tprovided and ignore and/or delete this email.\n" -"\n" -"\t\tYour password will not be changed unless we can verify that you\n" -"\t\tissued this request." -msgstr "\nHallo %1$s,\n\nAuf \"%2$s\" ist eine Anfrage auf das Zurücksetzen Deines Passworts gestellt\nworden. Um diese Anfrage zu verifizieren, folge bitte dem unten stehenden\nLink oder kopiere und füge ihn in die Adressleiste Deines Browsers ein.\n\nSolltest Du die Anfrage NICHT gemacht haben, ignoriere und/oder lösche diese\nE-Mail bitte.\n\nDein Passwort wird nicht geändert, solange wir nicht verifiziert haben, dass\nDu diese Änderung angefragt hast." +#: mod/contacts.php:608 mod/contacts.php:982 +msgid "Update now" +msgstr "Jetzt aktualisieren" -#: mod/lostpass.php:52 -#, php-format +#: mod/contacts.php:613 mod/contacts.php:813 mod/contacts.php:991 +#: mod/admin.php:1510 +msgid "Unblock" +msgstr "Entsperren" + +#: mod/contacts.php:613 mod/contacts.php:813 mod/contacts.php:991 +#: mod/admin.php:1509 +msgid "Block" +msgstr "Sperren" + +#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 +msgid "Unignore" +msgstr "Ignorieren aufheben" + +#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 +#: mod/notifications.php:60 mod/notifications.php:179 +#: mod/notifications.php:263 +msgid "Ignore" +msgstr "Ignorieren" + +#: mod/contacts.php:618 +msgid "Currently blocked" +msgstr "Derzeit geblockt" + +#: mod/contacts.php:619 +msgid "Currently ignored" +msgstr "Derzeit ignoriert" + +#: mod/contacts.php:620 +msgid "Currently archived" +msgstr "Momentan archiviert" + +#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:251 +msgid "Hide this contact from others" +msgstr "Verbirg diesen Kontakt vor Anderen" + +#: mod/contacts.php:621 msgid "" -"\n" -"\t\tFollow this link to verify your identity:\n" -"\n" -"\t\t%1$s\n" -"\n" -"\t\tYou will then receive a follow-up message containing the new password.\n" -"\t\tYou may change that password from your account settings page after logging in.\n" -"\n" -"\t\tThe login details are as follows:\n" -"\n" -"\t\tSite Location:\t%2$s\n" -"\t\tLogin Name:\t%3$s" -msgstr "\nUm Deine Identität zu verifizieren, folge bitte dem folgenden Link:\n\n%1$s\n\nDu wirst eine weitere E-Mail mit Deinem neuen Passwort erhalten. Sobald Du Dich\nangemeldet hast, kannst Du Dein Passwort in den Einstellungen ändern.\n\nDie Anmeldedetails sind die folgenden:\n\nAdresse der Seite:\t%2$s\nBenutzername:\t%3$s" +"Replies/likes to your public posts may still be visible" +msgstr "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein" -#: mod/lostpass.php:71 -#, php-format -msgid "Password reset requested at %s" -msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten" +#: mod/contacts.php:622 +msgid "Notification for new posts" +msgstr "Benachrichtigung bei neuen Beiträgen" -#: mod/lostpass.php:91 +#: mod/contacts.php:622 +msgid "Send a notification of every new post of this contact" +msgstr "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt." + +#: mod/contacts.php:625 +msgid "Blacklisted keywords" +msgstr "Blacklistete Schlüsselworte " + +#: mod/contacts.php:625 msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." -msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast Du bereits eine ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert." +"Comma separated list of keywords that should not be converted to hashtags, " +"when \"Fetch information and keywords\" is selected" +msgstr "Komma-Separierte Liste mit Schlüsselworten, die nicht in Hashtags konvertiert werden, wenn \"Beziehe Information und Schlüsselworte\" aktiviert wurde" -#: mod/lostpass.php:110 boot.php:1848 -msgid "Password Reset" -msgstr "Passwort zurücksetzen" +#: mod/contacts.php:632 mod/follow.php:129 mod/notifications.php:255 +msgid "Profile URL" +msgstr "Profil URL" -#: mod/lostpass.php:111 -msgid "Your password has been reset as requested." -msgstr "Dein Passwort wurde wie gewünscht zurückgesetzt." +#: mod/contacts.php:643 +msgid "Actions" +msgstr "Aktionen" -#: mod/lostpass.php:112 -msgid "Your new password is" -msgstr "Dein neues Passwort lautet" +#: mod/contacts.php:646 +msgid "Contact Settings" +msgstr "Kontakteinstellungen" -#: mod/lostpass.php:113 -msgid "Save or copy your new password - and then" -msgstr "Speichere oder kopiere Dein neues Passwort - und dann" +#: mod/contacts.php:692 +msgid "Suggestions" +msgstr "Kontaktvorschläge" -#: mod/lostpass.php:114 -msgid "click here to login" -msgstr "hier klicken, um Dich anzumelden" +#: mod/contacts.php:695 +msgid "Suggest potential friends" +msgstr "Kontakte vorschlagen" -#: mod/lostpass.php:115 -msgid "" -"Your password may be changed from the Settings page after " -"successful login." -msgstr "Du kannst das Passwort in den Einstellungen ändern, sobald Du Dich erfolgreich angemeldet hast." +#: mod/contacts.php:700 mod/group.php:212 +msgid "All Contacts" +msgstr "Alle Kontakte" -#: mod/lostpass.php:125 +#: mod/contacts.php:703 +msgid "Show all contacts" +msgstr "Alle Kontakte anzeigen" + +#: mod/contacts.php:708 +msgid "Unblocked" +msgstr "Ungeblockt" + +#: mod/contacts.php:711 +msgid "Only show unblocked contacts" +msgstr "Nur nicht-blockierte Kontakte anzeigen" + +#: mod/contacts.php:717 +msgid "Blocked" +msgstr "Geblockt" + +#: mod/contacts.php:720 +msgid "Only show blocked contacts" +msgstr "Nur blockierte Kontakte anzeigen" + +#: mod/contacts.php:726 +msgid "Ignored" +msgstr "Ignoriert" + +#: mod/contacts.php:729 +msgid "Only show ignored contacts" +msgstr "Nur ignorierte Kontakte anzeigen" + +#: mod/contacts.php:735 +msgid "Archived" +msgstr "Archiviert" + +#: mod/contacts.php:738 +msgid "Only show archived contacts" +msgstr "Nur archivierte Kontakte anzeigen" + +#: mod/contacts.php:744 +msgid "Hidden" +msgstr "Verborgen" + +#: mod/contacts.php:747 +msgid "Only show hidden contacts" +msgstr "Nur verborgene Kontakte anzeigen" + +#: mod/contacts.php:804 +msgid "Search your contacts" +msgstr "Suche in deinen Kontakten" + +#: mod/contacts.php:805 mod/network.php:151 mod/search.php:227 #, php-format -msgid "" -"\n" -"\t\t\t\tDear %1$s,\n" -"\t\t\t\t\tYour password has been changed as requested. Please retain this\n" -"\t\t\t\tinformation for your records (or change your password immediately to\n" -"\t\t\t\tsomething that you will remember).\n" -"\t\t\t" -msgstr "\nHallo %1$s,\n\nDein Passwort wurde wie gewünscht geändert. Bitte bewahre diese Informationen gut auf (oder ändere Dein Passwort in eines, das Du Dir leicht merken kannst)." +msgid "Results for: %s" +msgstr "Ergebnisse für: %s" -#: mod/lostpass.php:131 +#: mod/contacts.php:812 mod/settings.php:160 mod/settings.php:707 +msgid "Update" +msgstr "Aktualisierungen" + +#: mod/contacts.php:815 mod/contacts.php:1007 +msgid "Archive" +msgstr "Archivieren" + +#: mod/contacts.php:815 mod/contacts.php:1007 +msgid "Unarchive" +msgstr "Aus Archiv zurückholen" + +#: mod/contacts.php:818 +msgid "Batch Actions" +msgstr "Stapelverarbeitung" + +#: mod/contacts.php:864 +msgid "View all contacts" +msgstr "Alle Kontakte anzeigen" + +#: mod/contacts.php:874 +msgid "View all common friends" +msgstr "Alle Kontakte anzeigen" + +#: mod/contacts.php:881 +msgid "Advanced Contact Settings" +msgstr "Fortgeschrittene Kontakteinstellungen" + +#: mod/contacts.php:915 +msgid "Mutual Friendship" +msgstr "Beidseitige Freundschaft" + +#: mod/contacts.php:919 +msgid "is a fan of yours" +msgstr "ist ein Fan von dir" + +#: mod/contacts.php:923 +msgid "you are a fan of" +msgstr "Du bist Fan von" + +#: mod/contacts.php:939 mod/nogroup.php:44 +msgid "Edit contact" +msgstr "Kontakt bearbeiten" + +#: mod/contacts.php:993 +msgid "Toggle Blocked status" +msgstr "Geblockt-Status ein-/ausschalten" + +#: mod/contacts.php:1001 +msgid "Toggle Ignored status" +msgstr "Ignoriert-Status ein-/ausschalten" + +#: mod/contacts.php:1009 +msgid "Toggle Archive status" +msgstr "Archiviert-Status ein-/ausschalten" + +#: mod/contacts.php:1017 +msgid "Delete contact" +msgstr "Lösche den Kontakt" + +#: mod/content.php:119 mod/network.php:475 +msgid "No such group" +msgstr "Es gibt keine solche Gruppe" + +#: mod/content.php:130 mod/group.php:213 mod/network.php:502 +msgid "Group is empty" +msgstr "Gruppe ist leer" + +#: mod/content.php:135 mod/network.php:506 #, php-format -msgid "" -"\n" -"\t\t\t\tYour login details are as follows:\n" -"\n" -"\t\t\t\tSite Location:\t%1$s\n" -"\t\t\t\tLogin Name:\t%2$s\n" -"\t\t\t\tPassword:\t%3$s\n" -"\n" -"\t\t\t\tYou may change that password from your account settings page after logging in.\n" -"\t\t\t" -msgstr "\nDie Anmeldedaten sind die folgenden:\n\nAdresse der Seite: %1$s\nLogin Name: %2$s\nPasswort: %3$s\n\nDas Passwort kann und sollte in den Kontoeinstellungen nach der Anmeldung geändert werden." +msgid "Group: %s" +msgstr "Gruppe: %s" -#: mod/lostpass.php:147 +#: mod/content.php:325 object/Item.php:96 +msgid "This entry was edited" +msgstr "Dieser Beitrag wurde bearbeitet." + +#: mod/content.php:621 object/Item.php:417 #, php-format -msgid "Your password has been changed at %s" -msgstr "Auf %s wurde Dein Passwort geändert" +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "%d Kommentar" +msgstr[1] "%d Kommentare" -#: mod/lostpass.php:159 -msgid "Forgot your Password?" -msgstr "Hast Du Dein Passwort vergessen?" +#: mod/content.php:638 mod/photos.php:1429 object/Item.php:117 +msgid "Private Message" +msgstr "Private Nachricht" -#: mod/lostpass.php:160 +#: mod/content.php:702 mod/photos.php:1625 object/Item.php:274 +msgid "I like this (toggle)" +msgstr "Ich mag das (toggle)" + +#: mod/content.php:702 object/Item.php:274 +msgid "like" +msgstr "mag ich" + +#: mod/content.php:703 mod/photos.php:1626 object/Item.php:275 +msgid "I don't like this (toggle)" +msgstr "Ich mag das nicht (toggle)" + +#: mod/content.php:703 object/Item.php:275 +msgid "dislike" +msgstr "mag ich nicht" + +#: mod/content.php:705 object/Item.php:278 +msgid "Share this" +msgstr "Weitersagen" + +#: mod/content.php:705 object/Item.php:278 +msgid "share" +msgstr "Teilen" + +#: mod/content.php:725 mod/photos.php:1643 mod/photos.php:1685 +#: mod/photos.php:1765 object/Item.php:702 +msgid "This is you" +msgstr "Das bist Du" + +#: mod/content.php:727 mod/content.php:950 mod/photos.php:1645 +#: mod/photos.php:1687 mod/photos.php:1767 object/Item.php:392 +#: object/Item.php:704 +msgid "Comment" +msgstr "Kommentar" + +#: mod/content.php:729 object/Item.php:706 +msgid "Bold" +msgstr "Fett" + +#: mod/content.php:730 object/Item.php:707 +msgid "Italic" +msgstr "Kursiv" + +#: mod/content.php:731 object/Item.php:708 +msgid "Underline" +msgstr "Unterstrichen" + +#: mod/content.php:732 object/Item.php:709 +msgid "Quote" +msgstr "Zitat" + +#: mod/content.php:733 object/Item.php:710 +msgid "Code" +msgstr "Code" + +#: mod/content.php:734 object/Item.php:711 +msgid "Image" +msgstr "Bild" + +#: mod/content.php:735 object/Item.php:712 +msgid "Link" +msgstr "Link" + +#: mod/content.php:736 object/Item.php:713 +msgid "Video" +msgstr "Video" + +#: mod/content.php:746 mod/settings.php:743 object/Item.php:122 +#: object/Item.php:124 +msgid "Edit" +msgstr "Bearbeiten" + +#: mod/content.php:772 object/Item.php:238 +msgid "add star" +msgstr "markieren" + +#: mod/content.php:773 object/Item.php:239 +msgid "remove star" +msgstr "Markierung entfernen" + +#: mod/content.php:774 object/Item.php:240 +msgid "toggle star status" +msgstr "Markierung umschalten" + +#: mod/content.php:777 object/Item.php:243 +msgid "starred" +msgstr "markiert" + +#: mod/content.php:778 mod/content.php:800 object/Item.php:263 +msgid "add tag" +msgstr "Tag hinzufügen" + +#: mod/content.php:789 object/Item.php:251 +msgid "ignore thread" +msgstr "Thread ignorieren" + +#: mod/content.php:790 object/Item.php:252 +msgid "unignore thread" +msgstr "Thread nicht mehr ignorieren" + +#: mod/content.php:791 object/Item.php:253 +msgid "toggle ignore status" +msgstr "Ignoriert-Status ein-/ausschalten" + +#: mod/content.php:794 mod/ostatus_subscribe.php:73 object/Item.php:256 +msgid "ignored" +msgstr "Ignoriert" + +#: mod/content.php:805 object/Item.php:141 +msgid "save to folder" +msgstr "In Ordner speichern" + +#: mod/content.php:853 object/Item.php:212 +msgid "I will attend" +msgstr "Ich werde teilnehmen" + +#: mod/content.php:853 object/Item.php:212 +msgid "I will not attend" +msgstr "Ich werde nicht teilnehmen" + +#: mod/content.php:853 object/Item.php:212 +msgid "I might attend" +msgstr "Ich werde eventuell teilnehmen" + +#: mod/content.php:917 object/Item.php:358 +msgid "to" +msgstr "zu" + +#: mod/content.php:918 object/Item.php:360 +msgid "Wall-to-Wall" +msgstr "Wall-to-Wall" + +#: mod/content.php:919 object/Item.php:361 +msgid "via Wall-To-Wall:" +msgstr "via Wall-To-Wall:" + +#: mod/credits.php:16 +msgid "Credits" +msgstr "Credits" + +#: mod/credits.php:17 msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." -msgstr "Gib Deine E-Mail-Adresse an und fordere ein neues Passwort an. Es werden Dir dann weitere Informationen per Mail zugesendet." +"Friendica is a community project, that would not be possible without the " +"help of many people. Here is a list of those who have contributed to the " +"code or the translation of Friendica. Thank you all!" +msgstr "Friendica ist ein Gemeinschaftsprojekt, das nicht ohne die Hilfe vieler Personen möglich wäre. Hier ist eine Aufzählung der Personen, die zum Code oder der Übersetzung beigetragen haben. Dank an alle !" -#: mod/lostpass.php:161 boot.php:1836 -msgid "Nickname or Email: " -msgstr "Spitzname oder E-Mail:" +#: mod/crepair.php:89 +msgid "Contact settings applied." +msgstr "Einstellungen zum Kontakt angewandt." -#: mod/lostpass.php:162 -msgid "Reset" -msgstr "Zurücksetzen" +#: mod/crepair.php:91 +msgid "Contact update failed." +msgstr "Konnte den Kontakt nicht aktualisieren." -#: mod/maintenance.php:9 -msgid "System down for maintenance" -msgstr "System zur Wartung abgeschaltet" +#: mod/crepair.php:116 mod/fsuggest.php:21 mod/fsuggest.php:93 +#: mod/dfrn_confirm.php:126 +msgid "Contact not found." +msgstr "Kontakt nicht gefunden." -#: mod/manage.php:141 -msgid "Manage Identities and/or Pages" -msgstr "Verwalte Identitäten und/oder Seiten" +#: mod/crepair.php:122 +msgid "" +"WARNING: This is highly advanced and if you enter incorrect" +" information your communications with this contact may stop working." +msgstr "ACHTUNG: Das sind Experten-Einstellungen! Wenn Du etwas Falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr." -#: mod/manage.php:142 +#: mod/crepair.php:123 msgid "" -"Toggle between different identities or community/group pages which share " -"your account details or which you have been granted \"manage\" permissions" -msgstr "Zwischen verschiedenen Identitäten oder Gemeinschafts-/Gruppenseiten wechseln, die Deine Kontoinformationen teilen oder zu denen Du „Verwalten“-Befugnisse bekommen hast." +"Please use your browser 'Back' button now if you are " +"uncertain what to do on this page." +msgstr "Bitte nutze den Zurück-Button Deines Browsers jetzt, wenn Du Dir unsicher bist, was Du tun willst." + +#: mod/crepair.php:136 mod/crepair.php:138 +msgid "No mirroring" +msgstr "Kein Spiegeln" + +#: mod/crepair.php:136 +msgid "Mirror as forwarded posting" +msgstr "Spiegeln als weitergeleitete Beiträge" + +#: mod/crepair.php:136 mod/crepair.php:138 +msgid "Mirror as my own posting" +msgstr "Spiegeln als meine eigenen Beiträge" -#: mod/manage.php:143 -msgid "Select an identity to manage: " -msgstr "Wähle eine Identität zum Verwalten aus: " +#: mod/crepair.php:152 +msgid "Return to contact editor" +msgstr "Zurück zum Kontakteditor" -#: mod/match.php:35 -msgid "No keywords to match. Please add keywords to your default profile." -msgstr "Keine Schlüsselwörter zum Abgleichen gefunden. Bitte füge einige Schlüsselwörter zu Deinem Standardprofil hinzu." +#: mod/crepair.php:154 +msgid "Refetch contact data" +msgstr "Kontaktdaten neu laden" -#: mod/match.php:88 -msgid "is interested in:" -msgstr "ist interessiert an:" +#: mod/crepair.php:158 +msgid "Remote Self" +msgstr "Entfernte Konten" -#: mod/match.php:102 -msgid "Profile Match" -msgstr "Profilübereinstimmungen" +#: mod/crepair.php:161 +msgid "Mirror postings from this contact" +msgstr "Spiegle Beiträge dieses Kontakts" -#: mod/mood.php:134 -msgid "Mood" -msgstr "Stimmung" +#: mod/crepair.php:163 +msgid "" +"Mark this contact as remote_self, this will cause friendica to repost new " +"entries from this contact." +msgstr "Markiere diesen Kontakt als remote_self (entferntes Konto), dies veranlasst Friendica alle Top-Level Beiträge dieses Kontakts an all Deine Kontakte zu senden." -#: mod/mood.php:135 -msgid "Set your current mood and tell your friends" -msgstr "Wähle Deine aktuelle Stimmung und erzähle sie Deinen Kontakten" +#: mod/crepair.php:167 mod/settings.php:683 mod/settings.php:709 +#: mod/admin.php:1490 mod/admin.php:1503 mod/admin.php:1516 mod/admin.php:1532 +msgid "Name" +msgstr "Name" -#: mod/newmember.php:6 -msgid "Welcome to Friendica" -msgstr "Willkommen bei Friendica" +#: mod/crepair.php:168 +msgid "Account Nickname" +msgstr "Konto-Spitzname" -#: mod/newmember.php:8 -msgid "New Member Checklist" -msgstr "Checkliste für neue Mitglieder" +#: mod/crepair.php:169 +msgid "@Tagname - overrides Name/Nickname" +msgstr "@Tagname - überschreibt Name/Spitzname" -#: mod/newmember.php:12 -msgid "" -"We would like to offer some tips and links to help make your experience " -"enjoyable. Click any item to visit the relevant page. A link to this page " -"will be visible from your home page for two weeks after your initial " -"registration and then will quietly disappear." -msgstr "Wir möchten Dir einige Tipps und Links anbieten, die Dir helfen könnten, den Einstieg angenehmer zu machen. Klicke auf ein Element, um die entsprechende Seite zu besuchen. Ein Link zu dieser Seite hier bleibt für Dich an Deiner Pinnwand für zwei Wochen nach dem Registrierungsdatum sichtbar und wird dann verschwinden." +#: mod/crepair.php:170 +msgid "Account URL" +msgstr "Konto-URL" -#: mod/newmember.php:14 -msgid "Getting Started" -msgstr "Einstieg" +#: mod/crepair.php:171 +msgid "Friend Request URL" +msgstr "URL für Kontaktschaftsanfragen" -#: mod/newmember.php:18 -msgid "Friendica Walk-Through" -msgstr "Friendica Rundgang" +#: mod/crepair.php:172 +msgid "Friend Confirm URL" +msgstr "URL für Bestätigungen von Kontaktanfragen" -#: mod/newmember.php:18 -msgid "" -"On your Quick Start page - find a brief introduction to your " -"profile and network tabs, make some new connections, and find some groups to" -" join." -msgstr "Auf der Quick Start Seite findest Du eine kurze Einleitung in die einzelnen Funktionen Deines Profils und die Netzwerk-Reiter, wo Du interessante Foren findest und neue Kontakte knüpfst." +#: mod/crepair.php:173 +msgid "Notification Endpoint URL" +msgstr "URL-Endpunkt für Benachrichtigungen" -#: mod/newmember.php:26 -msgid "Go to Your Settings" -msgstr "Gehe zu deinen Einstellungen" +#: mod/crepair.php:174 +msgid "Poll/Feed URL" +msgstr "Pull/Feed-URL" -#: mod/newmember.php:26 -msgid "" -"On your Settings page - change your initial password. Also make a " -"note of your Identity Address. This looks just like an email address - and " -"will be useful in making friends on the free social web." -msgstr "Ändere bitte unter Einstellungen dein Passwort. Außerdem merke dir deine Identifikationsadresse. Diese sieht aus wie eine E-Mail-Adresse und wird benötigt, um Kontakte mit anderen im Friendica Netzwerk zu knüpfen.." +#: mod/crepair.php:175 +msgid "New photo from this URL" +msgstr "Neues Foto von dieser URL" -#: mod/newmember.php:28 +#: mod/delegate.php:101 +msgid "No potential page delegates located." +msgstr "Keine potentiellen Bevollmächtigten für die Seite gefunden." + +#: mod/delegate.php:132 msgid "" -"Review the other settings, particularly the privacy settings. An unpublished" -" directory listing is like having an unlisted phone number. In general, you " -"should probably publish your listing - unless all of your friends and " -"potential friends know exactly how to find you." -msgstr "Überprüfe die restlichen Einstellungen, insbesondere die Einstellungen zur Privatsphäre. Wenn Du Dein Profil nicht veröffentlichst, ist das als wenn Du Deine Telefonnummer nicht ins Telefonbuch einträgst. Im Allgemeinen solltest Du es veröffentlichen - außer all Deine Kontakte und potentiellen Kontakte wissen genau, wie sie Dich finden können." +"Delegates are able to manage all aspects of this account/page except for " +"basic account settings. Please do not delegate your personal account to " +"anybody that you do not trust completely." +msgstr "Bevollmächtigte sind in der Lage, alle Aspekte dieses Kontos/dieser Seite zu verwalten, abgesehen von den Grundeinstellungen des Kontos. Bitte gib niemandem eine Bevollmächtigung für Deinen privaten Account, dem Du nicht absolut vertraust!" -#: mod/newmember.php:36 mod/profile_photo.php:256 mod/profiles.php:699 -msgid "Upload Profile Photo" -msgstr "Profilbild hochladen" +#: mod/delegate.php:133 +msgid "Existing Page Managers" +msgstr "Vorhandene Seitenmanager" -#: mod/newmember.php:36 -msgid "" -"Upload a profile photo if you have not done so already. Studies have shown " -"that people with real photos of themselves are ten times more likely to make" -" friends than people who do not." -msgstr "Lade ein Profilbild hoch, falls Du es noch nicht getan hast. Studien haben gezeigt, dass es zehnmal wahrscheinlicher ist neue Kontakte zu finden, wenn Du ein Bild von Dir selbst verwendest, als wenn Du dies nicht tust." +#: mod/delegate.php:135 +msgid "Existing Page Delegates" +msgstr "Vorhandene Bevollmächtigte für die Seite" -#: mod/newmember.php:38 -msgid "Edit Your Profile" -msgstr "Editiere dein Profil" +#: mod/delegate.php:137 +msgid "Potential Delegates" +msgstr "Potentielle Bevollmächtigte" -#: mod/newmember.php:38 -msgid "" -"Edit your default profile to your liking. Review the " -"settings for hiding your list of friends and hiding the profile from unknown" -" visitors." -msgstr "Editiere Dein Standard Profil nach Deinen Vorlieben. Überprüfe die Einstellungen zum Verbergen Deiner Kontaktliste vor unbekannten Betrachtern des Profils." +#: mod/delegate.php:139 mod/tagrm.php:95 +msgid "Remove" +msgstr "Entfernen" -#: mod/newmember.php:40 -msgid "Profile Keywords" -msgstr "Profil Schlüsselbegriffe" +#: mod/delegate.php:140 +msgid "Add" +msgstr "Hinzufügen" -#: mod/newmember.php:40 -msgid "" -"Set some public keywords for your default profile which describe your " -"interests. We may be able to find other people with similar interests and " -"suggest friendships." -msgstr "Trage ein paar öffentliche Stichwörter in Dein Standardprofil ein, die Deine Interessen beschreiben. Eventuell sind wir in der Lage Leute zu finden, die Deine Interessen teilen und können Dir dann Kontakte vorschlagen." +#: mod/delegate.php:141 +msgid "No entries." +msgstr "Keine Einträge." -#: mod/newmember.php:44 -msgid "Connecting" -msgstr "Verbindungen knüpfen" +#: mod/dfrn_poll.php:104 mod/dfrn_poll.php:539 +#, php-format +msgid "%1$s welcomes %2$s" +msgstr "%1$s heißt %2$s herzlich willkommen" -#: mod/newmember.php:51 -msgid "Importing Emails" -msgstr "Emails Importieren" +#: mod/directory.php:37 mod/display.php:200 mod/viewcontacts.php:36 +#: mod/community.php:18 mod/dfrn_request.php:804 mod/photos.php:979 +#: mod/probe.php:9 mod/search.php:93 mod/search.php:99 mod/videos.php:198 +#: mod/webfinger.php:8 +msgid "Public access denied." +msgstr "Öffentlicher Zugriff verweigert." -#: mod/newmember.php:51 -msgid "" -"Enter your email access information on your Connector Settings page if you " -"wish to import and interact with friends or mailing lists from your email " -"INBOX" -msgstr "Gib Deine E-Mail-Zugangsinformationen auf der Connector-Einstellungsseite ein, falls Du E-Mails aus Deinem Posteingang importieren und mit Kontakten und Mailinglisten interagieren willst." +#: mod/directory.php:199 view/theme/vier/theme.php:199 +msgid "Global Directory" +msgstr "Weltweites Verzeichnis" -#: mod/newmember.php:53 -msgid "Go to Your Contacts Page" -msgstr "Gehe zu deiner Kontakt-Seite" +#: mod/directory.php:201 +msgid "Find on this site" +msgstr "Auf diesem Server suchen" -#: mod/newmember.php:53 -msgid "" -"Your Contacts page is your gateway to managing friendships and connecting " -"with friends on other networks. Typically you enter their address or site " -"URL in the Add New Contact dialog." -msgstr "Die Kontakte-Seite ist die Einstiegsseite, von der aus Du Kontakte verwalten und Dich mit Personen in anderen Netzwerken verbinden kannst. Normalerweise gibst Du dazu einfach ihre Adresse oder die URL der Seite im Kasten Neuen Kontakt hinzufügen ein." +#: mod/directory.php:203 +msgid "Results for:" +msgstr "Ergebnisse für:" -#: mod/newmember.php:55 -msgid "Go to Your Site's Directory" -msgstr "Gehe zum Verzeichnis Deiner Friendica Instanz" +#: mod/directory.php:205 +msgid "Site Directory" +msgstr "Verzeichnis" -#: mod/newmember.php:55 -msgid "" -"The Directory page lets you find other people in this network or other " -"federated sites. Look for a Connect or Follow link on " -"their profile page. Provide your own Identity Address if requested." -msgstr "Über die Verzeichnisseite kannst Du andere Personen auf diesem Server oder anderen verknüpften Seiten finden. Halte nach einem Verbinden oder Folgen Link auf deren Profilseiten Ausschau und gib Deine eigene Profiladresse an, falls Du danach gefragt wirst." +#: mod/directory.php:212 +msgid "No entries (some entries may be hidden)." +msgstr "Keine Einträge (einige Einträge könnten versteckt sein)." -#: mod/newmember.php:57 -msgid "Finding New People" -msgstr "Neue Leute kennenlernen" +#: mod/display.php:328 mod/cal.php:143 mod/profile.php:155 +msgid "Access to this profile has been restricted." +msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt." -#: mod/newmember.php:57 -msgid "" -"On the side panel of the Contacts page are several tools to find new " -"friends. We can match people by interest, look up people by name or " -"interest, and provide suggestions based on network relationships. On a brand" -" new site, friend suggestions will usually begin to be populated within 24 " -"hours." -msgstr "Im seitlichen Bedienfeld der Kontakteseite gibt es diverse Werkzeuge, um neue Personen zu finden. Wir können Menschen mit den gleichen Interessen finden, anhand von Namen oder Interessen suchen oder aber aufgrund vorhandener Kontakte neue Leute vorschlagen.\nAuf einer brandneuen - soeben erstellten - Seite starten die Kontaktvorschläge innerhalb von 24 Stunden." +#: mod/display.php:479 +msgid "Item has been removed." +msgstr "Eintrag wurde entfernt." -#: mod/newmember.php:65 -msgid "Group Your Contacts" -msgstr "Gruppiere deine Kontakte" +#: mod/editpost.php:17 mod/editpost.php:27 +msgid "Item not found" +msgstr "Beitrag nicht gefunden" -#: mod/newmember.php:65 -msgid "" -"Once you have made some friends, organize them into private conversation " -"groups from the sidebar of your Contacts page and then you can interact with" -" each group privately on your Network page." -msgstr "Sobald Du einige Kontakte gefunden hast, organisiere sie in Gruppen zur privaten Kommunikation im Seitenmenü der Kontakte-Seite. Du kannst dann mit jeder dieser Gruppen von der Netzwerkseite aus privat interagieren." +#: mod/editpost.php:32 +msgid "Edit post" +msgstr "Beitrag bearbeiten" -#: mod/newmember.php:68 -msgid "Why Aren't My Posts Public?" -msgstr "Warum sind meine Beiträge nicht öffentlich?" +#: mod/fbrowser.php:132 +msgid "Files" +msgstr "Dateien" -#: mod/newmember.php:68 -msgid "" -"Friendica respects your privacy. By default, your posts will only show up to" -" people you've added as friends. For more information, see the help section " -"from the link above." -msgstr "Friendica respektiert Deine Privatsphäre. Mit der Grundeinstellung werden Deine Beiträge ausschließlich Deinen Kontakten angezeigt. Für weitere Informationen diesbezüglich lies Dir bitte den entsprechenden Abschnitt in der Hilfe unter dem obigen Link durch." +#: mod/fetch.php:12 mod/fetch.php:39 mod/fetch.php:48 mod/help.php:53 +#: mod/p.php:16 mod/p.php:43 mod/p.php:52 index.php:298 +msgid "Not Found" +msgstr "Nicht gefunden" -#: mod/newmember.php:73 -msgid "Getting Help" -msgstr "Hilfe bekommen" +#: mod/filer.php:30 +msgid "- select -" +msgstr "- auswählen -" -#: mod/newmember.php:77 -msgid "Go to the Help Section" -msgstr "Zum Hilfe Abschnitt gehen" +#: mod/fsuggest.php:64 +msgid "Friend suggestion sent." +msgstr "Kontaktvorschlag gesendet." -#: mod/newmember.php:77 -msgid "" -"Our help pages may be consulted for detail on other program" -" features and resources." -msgstr "Unsere Hilfe Seiten können herangezogen werden, um weitere Einzelheiten zu andern Programm Features zu erhalten." +#: mod/fsuggest.php:98 +msgid "Suggest Friends" +msgstr "Kontakte vorschlagen" -#: mod/nogroup.php:43 mod/contacts.php:594 mod/contacts.php:938 -#: mod/viewcontacts.php:102 +#: mod/fsuggest.php:100 #, php-format -msgid "Visit %s's profile [%s]" -msgstr "Besuche %ss Profil [%s]" - -#: mod/nogroup.php:44 mod/contacts.php:939 -msgid "Edit contact" -msgstr "Kontakt bearbeiten" +msgid "Suggest a friend for %s" +msgstr "Schlage %s einen Kontakt vor" -#: mod/nogroup.php:65 -msgid "Contacts who are not members of a group" -msgstr "Kontakte, die keiner Gruppe zugewiesen sind" +#: mod/hcard.php:11 +msgid "No profile" +msgstr "Kein Profil" -#: mod/notify.php:65 -msgid "No more system notifications." -msgstr "Keine weiteren Systembenachrichtigungen." +#: mod/help.php:41 +msgid "Help:" +msgstr "Hilfe:" -#: mod/notify.php:69 mod/notifications.php:111 -msgid "System Notifications" -msgstr "Systembenachrichtigungen" +#: mod/help.php:56 index.php:301 +msgid "Page not found." +msgstr "Seite nicht gefunden." -#: mod/oexchange.php:21 -msgid "Post successful." -msgstr "Beitrag erfolgreich veröffentlicht." +#: mod/home.php:39 +#, php-format +msgid "Welcome to %s" +msgstr "Willkommen zu %s" -#: mod/openid.php:24 -msgid "OpenID protocol error. No ID returned." -msgstr "OpenID Protokollfehler. Keine ID zurückgegeben." +#: mod/invite.php:28 +msgid "Total invitation limit exceeded." +msgstr "Limit für Einladungen erreicht." -#: mod/openid.php:60 -msgid "" -"Account not found and OpenID registration is not permitted on this site." -msgstr "Nutzerkonto wurde nicht gefunden und OpenID-Registrierung ist auf diesem Server nicht gestattet." +#: mod/invite.php:51 +#, php-format +msgid "%s : Not a valid email address." +msgstr "%s: Keine gültige Email Adresse." -#: mod/ostatus_subscribe.php:14 -msgid "Subscribing to OStatus contacts" -msgstr "OStatus Kontakten folgen" +#: mod/invite.php:76 +msgid "Please join us on Friendica" +msgstr "Ich lade Dich zu unserem sozialen Netzwerk Friendica ein" -#: mod/ostatus_subscribe.php:25 -msgid "No contact provided." -msgstr "Keine Kontakte gefunden." +#: mod/invite.php:87 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "Limit für Einladungen erreicht. Bitte kontaktiere des Administrator der Seite." -#: mod/ostatus_subscribe.php:31 -msgid "Couldn't fetch information for contact." -msgstr "Konnte die Kontaktinformationen nicht einholen." +#: mod/invite.php:91 +#, php-format +msgid "%s : Message delivery failed." +msgstr "%s: Zustellung der Nachricht fehlgeschlagen." -#: mod/ostatus_subscribe.php:40 -msgid "Couldn't fetch friends for contact." -msgstr "Konnte die Kontaktliste des Kontakts nicht abfragen." +#: mod/invite.php:95 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "%d Nachricht gesendet." +msgstr[1] "%d Nachrichten gesendet." -#: mod/ostatus_subscribe.php:54 mod/repair_ostatus.php:44 -msgid "Done" -msgstr "Erledigt" +#: mod/invite.php:114 +msgid "You have no more invitations available" +msgstr "Du hast keine weiteren Einladungen" -#: mod/ostatus_subscribe.php:68 -msgid "success" -msgstr "Erfolg" +#: mod/invite.php:122 +#, php-format +msgid "" +"Visit %s for a list of public sites that you can join. Friendica members on " +"other sites can all connect with each other, as well as with members of many" +" other social networks." +msgstr "Besuche %s für eine Liste der öffentlichen Server, denen Du beitreten kannst. Friendica Mitglieder unterschiedlicher Server können sich sowohl alle miteinander verbinden, als auch mit Mitgliedern anderer Sozialer Netzwerke." -#: mod/ostatus_subscribe.php:70 -msgid "failed" -msgstr "Fehlgeschlagen" +#: mod/invite.php:124 +#, php-format +msgid "" +"To accept this invitation, please visit and register at %s or any other " +"public Friendica website." +msgstr "Um diese Kontaktanfrage zu akzeptieren, besuche und registriere Dich bitte bei %s oder einer anderen öffentlichen Friendica Website." -#: mod/ostatus_subscribe.php:78 mod/repair_ostatus.php:50 -msgid "Keep this window open until done." -msgstr "Lasse dieses Fenster offen, bis der Vorgang abgeschlossen ist." +#: mod/invite.php:125 +#, php-format +msgid "" +"Friendica sites all inter-connect to create a huge privacy-enhanced social " +"web that is owned and controlled by its members. They can also connect with " +"many traditional social networks. See %s for a list of alternate Friendica " +"sites you can join." +msgstr "Friendica Server verbinden sich alle untereinander, um ein großes datenschutzorientiertes Soziales Netzwerk zu bilden, das von seinen Mitgliedern betrieben und kontrolliert wird. Sie können sich auch mit vielen üblichen Sozialen Netzwerken verbinden. Besuche %s für eine Liste alternativer Friendica Server, denen Du beitreten kannst." -#: mod/poke.php:196 -msgid "Poke/Prod" -msgstr "Anstupsen" +#: mod/invite.php:128 +msgid "" +"Our apologies. This system is not currently configured to connect with other" +" public sites or invite members." +msgstr "Es tut uns leid. Dieses System ist zurzeit nicht dafür konfiguriert, sich mit anderen öffentlichen Seiten zu verbinden oder Mitglieder einzuladen." -#: mod/poke.php:197 -msgid "poke, prod or do other things to somebody" -msgstr "Stupse Leute an oder mache anderes mit ihnen" +#: mod/invite.php:134 +msgid "Send invitations" +msgstr "Einladungen senden" -#: mod/poke.php:198 -msgid "Recipient" -msgstr "Empfänger" +#: mod/invite.php:135 +msgid "Enter email addresses, one per line:" +msgstr "E-Mail-Adressen eingeben, eine pro Zeile:" -#: mod/poke.php:199 -msgid "Choose what you wish to do to recipient" -msgstr "Was willst Du mit dem Empfänger machen:" +#: mod/invite.php:136 mod/wallmessage.php:135 mod/message.php:332 +#: mod/message.php:515 +msgid "Your message:" +msgstr "Deine Nachricht:" -#: mod/poke.php:202 -msgid "Make this post private" -msgstr "Diesen Beitrag privat machen" +#: mod/invite.php:137 +msgid "" +"You are cordially invited to join me and other close friends on Friendica - " +"and help us to create a better social web." +msgstr "Du bist herzlich dazu eingeladen, Dich mir und anderen guten Freunden auf Friendica anzuschließen - und ein besseres Soziales Netz aufzubauen." -#: mod/profile.php:154 mod/cal.php:143 mod/display.php:328 -msgid "Access to this profile has been restricted." -msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt." +#: mod/invite.php:139 +msgid "You will need to supply this invitation code: $invite_code" +msgstr "Du benötigst den folgenden Einladungscode: $invite_code" -#: mod/profile.php:174 -msgid "Tips for New Members" -msgstr "Tipps für neue Nutzer" +#: mod/invite.php:139 +msgid "" +"Once you have registered, please connect with me via my profile page at:" +msgstr "Sobald Du registriert bist, kontaktiere mich bitte auf meiner Profilseite:" -#: mod/profile_photo.php:44 -msgid "Image uploaded but image cropping failed." -msgstr "Bild hochgeladen, aber das Zuschneiden schlug fehl." +#: mod/invite.php:141 +msgid "" +"For more information about the Friendica project and why we feel it is " +"important, please visit http://friendica.com" +msgstr "Für weitere Informationen über das Friendica Projekt und warum wir es für ein wichtiges Projekt halten, besuche bitte http://friendica.com" -#: mod/profile_photo.php:77 mod/profile_photo.php:85 mod/profile_photo.php:93 -#: mod/profile_photo.php:323 -#, php-format -msgid "Image size reduction [%s] failed." -msgstr "Verkleinern der Bildgröße von [%s] scheiterte." +#: mod/localtime.php:24 +msgid "Time Conversion" +msgstr "Zeitumrechnung" -#: mod/profile_photo.php:127 +#: mod/localtime.php:26 msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." -msgstr "Drücke Umschalt+Neu Laden oder leere den Browser-Cache, falls das neue Foto nicht gleich angezeigt wird." - -#: mod/profile_photo.php:137 -msgid "Unable to process image" -msgstr "Bild konnte nicht verarbeitet werden" +"Friendica provides this service for sharing events with other networks and " +"friends in unknown timezones." +msgstr "Friendica bietet diese Funktion an, um das Teilen von Events mit Kontakten zu vereinfachen, deren Zeitzone nicht ermittelt werden kann." -#: mod/profile_photo.php:156 mod/wall_upload.php:151 mod/photos.php:803 +#: mod/localtime.php:30 #, php-format -msgid "Image exceeds size limit of %s" -msgstr "Bildgröße überschreitet das Limit von %s" +msgid "UTC time: %s" +msgstr "UTC Zeit: %s" -#: mod/profile_photo.php:165 mod/wall_upload.php:186 mod/photos.php:844 -msgid "Unable to process image." -msgstr "Konnte das Bild nicht bearbeiten." +#: mod/localtime.php:33 +#, php-format +msgid "Current timezone: %s" +msgstr "Aktuelle Zeitzone: %s" -#: mod/profile_photo.php:254 -msgid "Upload File:" -msgstr "Datei hochladen:" +#: mod/localtime.php:36 +#, php-format +msgid "Converted localtime: %s" +msgstr "Umgerechnete lokale Zeit: %s" -#: mod/profile_photo.php:255 -msgid "Select a profile:" -msgstr "Profil auswählen:" +#: mod/localtime.php:41 +msgid "Please select your timezone:" +msgstr "Bitte wähle Deine Zeitzone:" -#: mod/profile_photo.php:257 -msgid "Upload" -msgstr "Hochladen" +#: mod/lockview.php:32 mod/lockview.php:40 +msgid "Remote privacy information not available." +msgstr "Entfernte Privatsphäreneinstellungen nicht verfügbar." -#: mod/profile_photo.php:260 -msgid "or" -msgstr "oder" +#: mod/lockview.php:49 +msgid "Visible to:" +msgstr "Sichtbar für:" -#: mod/profile_photo.php:260 -msgid "skip this step" -msgstr "diesen Schritt überspringen" +#: mod/lostpass.php:19 +msgid "No valid account found." +msgstr "Kein gültiges Konto gefunden." -#: mod/profile_photo.php:260 -msgid "select a photo from your photo albums" -msgstr "wähle ein Foto aus deinen Fotoalben" +#: mod/lostpass.php:35 +msgid "Password reset request issued. Check your email." +msgstr "Zurücksetzen des Passworts eingeleitet. Bitte überprüfe Deine E-Mail." -#: mod/profile_photo.php:274 -msgid "Crop Image" -msgstr "Bild zurechtschneiden" +#: mod/lostpass.php:41 +#, php-format +msgid "" +"\n" +"\t\tDear %1$s,\n" +"\t\t\tA request was recently received at \"%2$s\" to reset your account\n" +"\t\tpassword. In order to confirm this request, please select the verification link\n" +"\t\tbelow or paste it into your web browser address bar.\n" +"\n" +"\t\tIf you did NOT request this change, please DO NOT follow the link\n" +"\t\tprovided and ignore and/or delete this email.\n" +"\n" +"\t\tYour password will not be changed unless we can verify that you\n" +"\t\tissued this request." +msgstr "\nHallo %1$s,\n\nAuf \"%2$s\" ist eine Anfrage auf das Zurücksetzen Deines Passworts gestellt\nworden. Um diese Anfrage zu verifizieren, folge bitte dem unten stehenden\nLink oder kopiere und füge ihn in die Adressleiste Deines Browsers ein.\n\nSolltest Du die Anfrage NICHT gemacht haben, ignoriere und/oder lösche diese\nE-Mail bitte.\n\nDein Passwort wird nicht geändert, solange wir nicht verifiziert haben, dass\nDu diese Änderung angefragt hast." -#: mod/profile_photo.php:275 -msgid "Please adjust the image cropping for optimum viewing." -msgstr "Passe bitte den Bildausschnitt an, damit das Bild optimal dargestellt werden kann." +#: mod/lostpass.php:52 +#, php-format +msgid "" +"\n" +"\t\tFollow this link to verify your identity:\n" +"\n" +"\t\t%1$s\n" +"\n" +"\t\tYou will then receive a follow-up message containing the new password.\n" +"\t\tYou may change that password from your account settings page after logging in.\n" +"\n" +"\t\tThe login details are as follows:\n" +"\n" +"\t\tSite Location:\t%2$s\n" +"\t\tLogin Name:\t%3$s" +msgstr "\nUm Deine Identität zu verifizieren, folge bitte dem folgenden Link:\n\n%1$s\n\nDu wirst eine weitere E-Mail mit Deinem neuen Passwort erhalten. Sobald Du Dich\nangemeldet hast, kannst Du Dein Passwort in den Einstellungen ändern.\n\nDie Anmeldedetails sind die folgenden:\n\nAdresse der Seite:\t%2$s\nBenutzername:\t%3$s" -#: mod/profile_photo.php:277 -msgid "Done Editing" -msgstr "Bearbeitung abgeschlossen" +#: mod/lostpass.php:71 +#, php-format +msgid "Password reset requested at %s" +msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten" -#: mod/profile_photo.php:313 -msgid "Image uploaded successfully." -msgstr "Bild erfolgreich hochgeladen." +#: mod/lostpass.php:91 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast Du bereits eine ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert." -#: mod/profile_photo.php:315 mod/wall_upload.php:219 mod/photos.php:871 -msgid "Image upload failed." -msgstr "Hochladen des Bildes gescheitert." +#: mod/lostpass.php:110 boot.php:1882 +msgid "Password Reset" +msgstr "Passwort zurücksetzen" -#: mod/profperm.php:26 mod/profperm.php:57 -msgid "Invalid profile identifier." -msgstr "Ungültiger Profil-Bezeichner." +#: mod/lostpass.php:111 +msgid "Your password has been reset as requested." +msgstr "Dein Passwort wurde wie gewünscht zurückgesetzt." -#: mod/profperm.php:103 -msgid "Profile Visibility Editor" -msgstr "Editor für die Profil-Sichtbarkeit" +#: mod/lostpass.php:112 +msgid "Your new password is" +msgstr "Dein neues Passwort lautet" -#: mod/profperm.php:116 -msgid "Visible To" -msgstr "Sichtbar für" +#: mod/lostpass.php:113 +msgid "Save or copy your new password - and then" +msgstr "Speichere oder kopiere Dein neues Passwort - und dann" -#: mod/profperm.php:132 -msgid "All Contacts (with secure profile access)" -msgstr "Alle Kontakte (mit gesichertem Profilzugriff)" +#: mod/lostpass.php:114 +msgid "click here to login" +msgstr "hier klicken, um Dich anzumelden" -#: mod/register.php:93 +#: mod/lostpass.php:115 msgid "" -"Registration successful. Please check your email for further instructions." -msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet." +"Your password may be changed from the Settings page after " +"successful login." +msgstr "Du kannst das Passwort in den Einstellungen ändern, sobald Du Dich erfolgreich angemeldet hast." -#: mod/register.php:98 +#: mod/lostpass.php:125 #, php-format msgid "" -"Failed to send email message. Here your accout details:
login: %s
" -"password: %s

You can change your password after login." -msgstr "Versenden der E-Mail fehlgeschlagen. Hier sind Deine Account Details:\n\nLogin: %s\nPasswort: %s\n\nDu kannst das Passwort nach dem Anmelden ändern." +"\n" +"\t\t\t\tDear %1$s,\n" +"\t\t\t\t\tYour password has been changed as requested. Please retain this\n" +"\t\t\t\tinformation for your records (or change your password immediately to\n" +"\t\t\t\tsomething that you will remember).\n" +"\t\t\t" +msgstr "\nHallo %1$s,\n\nDein Passwort wurde wie gewünscht geändert. Bitte bewahre diese Informationen gut auf (oder ändere Dein Passwort in eines, das Du Dir leicht merken kannst)." -#: mod/register.php:105 -msgid "Registration successful." -msgstr "Registrierung erfolgreich." +#: mod/lostpass.php:131 +#, php-format +msgid "" +"\n" +"\t\t\t\tYour login details are as follows:\n" +"\n" +"\t\t\t\tSite Location:\t%1$s\n" +"\t\t\t\tLogin Name:\t%2$s\n" +"\t\t\t\tPassword:\t%3$s\n" +"\n" +"\t\t\t\tYou may change that password from your account settings page after logging in.\n" +"\t\t\t" +msgstr "\nDie Anmeldedaten sind die folgenden:\n\nAdresse der Seite: %1$s\nLogin Name: %2$s\nPasswort: %3$s\n\nDas Passwort kann und sollte in den Kontoeinstellungen nach der Anmeldung geändert werden." -#: mod/register.php:111 -msgid "Your registration can not be processed." -msgstr "Deine Registrierung konnte nicht verarbeitet werden." +#: mod/lostpass.php:147 +#, php-format +msgid "Your password has been changed at %s" +msgstr "Auf %s wurde Dein Passwort geändert" -#: mod/register.php:160 -msgid "Your registration is pending approval by the site owner." -msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden." +#: mod/lostpass.php:159 +msgid "Forgot your Password?" +msgstr "Hast Du Dein Passwort vergessen?" -#: mod/register.php:198 mod/uimport.php:51 +#: mod/lostpass.php:160 msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." -msgstr "Die maximale Anzahl täglicher Registrierungen auf dieser Seite wurde überschritten. Bitte versuche es morgen noch einmal." +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." +msgstr "Gib Deine E-Mail-Adresse an und fordere ein neues Passwort an. Es werden Dir dann weitere Informationen per Mail zugesendet." -#: mod/register.php:226 -msgid "" -"You may (optionally) fill in this form via OpenID by supplying your OpenID " -"and clicking 'Register'." -msgstr "Du kannst dieses Formular auch (optional) mit Deiner OpenID ausfüllen, indem Du Deine OpenID angibst und 'Registrieren' klickst." +#: mod/lostpass.php:161 boot.php:1870 +msgid "Nickname or Email: " +msgstr "Spitzname oder E-Mail:" -#: mod/register.php:227 -msgid "" -"If you are not familiar with OpenID, please leave that field blank and fill " -"in the rest of the items." -msgstr "Wenn Du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus." +#: mod/lostpass.php:162 +msgid "Reset" +msgstr "Zurücksetzen" -#: mod/register.php:228 -msgid "Your OpenID (optional): " -msgstr "Deine OpenID (optional): " +#: mod/maintenance.php:20 +msgid "System down for maintenance" +msgstr "System zur Wartung abgeschaltet" -#: mod/register.php:242 -msgid "Include your profile in member directory?" -msgstr "Soll Dein Profil im Nutzerverzeichnis angezeigt werden?" +#: mod/match.php:35 +msgid "No keywords to match. Please add keywords to your default profile." +msgstr "Keine Schlüsselwörter zum Abgleichen gefunden. Bitte füge einige Schlüsselwörter zu Deinem Standardprofil hinzu." -#: mod/register.php:267 -msgid "Note for the admin" -msgstr "Hinweis für den Admin" +#: mod/match.php:88 +msgid "is interested in:" +msgstr "ist interessiert an:" -#: mod/register.php:267 -msgid "Leave a message for the admin, why you want to join this node" -msgstr "Hinterlasse eine Nachricht an den Admin, warum du einen Account auf dieser Instanz haben möchtest." +#: mod/match.php:102 +msgid "Profile Match" +msgstr "Profilübereinstimmungen" -#: mod/register.php:268 -msgid "Membership on this site is by invitation only." -msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich." +#: mod/match.php:109 mod/dirfind.php:245 +msgid "No matches" +msgstr "Keine Übereinstimmungen" -#: mod/register.php:269 -msgid "Your invitation ID: " -msgstr "ID Deiner Einladung: " +#: mod/mood.php:134 +msgid "Mood" +msgstr "Stimmung" -#: mod/register.php:272 mod/admin.php:977 -msgid "Registration" -msgstr "Registrierung" +#: mod/mood.php:135 +msgid "Set your current mood and tell your friends" +msgstr "Wähle Deine aktuelle Stimmung und erzähle sie Deinen Kontakten" -#: mod/register.php:280 -msgid "Your Full Name (e.g. Joe Smith, real or real-looking): " -msgstr "Dein vollständiger Name (z.B. Hans Mustermann, echt oder echt erscheinend):" +#: mod/newmember.php:6 +msgid "Welcome to Friendica" +msgstr "Willkommen bei Friendica" -#: mod/register.php:281 -msgid "Your Email Address: " -msgstr "Deine E-Mail-Adresse: " +#: mod/newmember.php:8 +msgid "New Member Checklist" +msgstr "Checkliste für neue Mitglieder" -#: mod/register.php:283 mod/settings.php:1278 -msgid "New Password:" -msgstr "Neues Passwort:" +#: mod/newmember.php:12 +msgid "" +"We would like to offer some tips and links to help make your experience " +"enjoyable. Click any item to visit the relevant page. A link to this page " +"will be visible from your home page for two weeks after your initial " +"registration and then will quietly disappear." +msgstr "Wir möchten Dir einige Tipps und Links anbieten, die Dir helfen könnten, den Einstieg angenehmer zu machen. Klicke auf ein Element, um die entsprechende Seite zu besuchen. Ein Link zu dieser Seite hier bleibt für Dich an Deiner Pinnwand für zwei Wochen nach dem Registrierungsdatum sichtbar und wird dann verschwinden." -#: mod/register.php:283 -msgid "Leave empty for an auto generated password." -msgstr "Leer lassen um das Passwort automatisch zu generieren." +#: mod/newmember.php:14 +msgid "Getting Started" +msgstr "Einstieg" -#: mod/register.php:284 mod/settings.php:1279 -msgid "Confirm:" -msgstr "Bestätigen:" +#: mod/newmember.php:18 +msgid "Friendica Walk-Through" +msgstr "Friendica Rundgang" -#: mod/register.php:285 +#: mod/newmember.php:18 msgid "" -"Choose a profile nickname. This must begin with a text character. Your " -"profile address on this site will then be " -"'nickname@$sitename'." -msgstr "Wähle einen Spitznamen für Dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse Deines Profils auf dieser Seite wird 'spitzname@$sitename' sein." - -#: mod/register.php:286 -msgid "Choose a nickname: " -msgstr "Spitznamen wählen: " +"On your Quick Start page - find a brief introduction to your " +"profile and network tabs, make some new connections, and find some groups to" +" join." +msgstr "Auf der Quick Start Seite findest Du eine kurze Einleitung in die einzelnen Funktionen Deines Profils und die Netzwerk-Reiter, wo Du interessante Foren findest und neue Kontakte knüpfst." -#: mod/register.php:295 mod/uimport.php:66 -msgid "Import" -msgstr "Import" +#: mod/newmember.php:26 +msgid "Go to Your Settings" +msgstr "Gehe zu deinen Einstellungen" -#: mod/register.php:296 -msgid "Import your profile to this friendica instance" -msgstr "Importiere Dein Profil auf diese Friendica Instanz" +#: mod/newmember.php:26 +msgid "" +"On your Settings page - change your initial password. Also make a " +"note of your Identity Address. This looks just like an email address - and " +"will be useful in making friends on the free social web." +msgstr "Ändere bitte unter Einstellungen dein Passwort. Außerdem merke dir deine Identifikationsadresse. Diese sieht aus wie eine E-Mail-Adresse und wird benötigt, um Kontakte mit anderen im Friendica Netzwerk zu knüpfen.." -#: mod/regmod.php:58 -msgid "Account approved." -msgstr "Konto freigegeben." +#: mod/newmember.php:28 +msgid "" +"Review the other settings, particularly the privacy settings. An unpublished" +" directory listing is like having an unlisted phone number. In general, you " +"should probably publish your listing - unless all of your friends and " +"potential friends know exactly how to find you." +msgstr "Überprüfe die restlichen Einstellungen, insbesondere die Einstellungen zur Privatsphäre. Wenn Du Dein Profil nicht veröffentlichst, ist das als wenn Du Deine Telefonnummer nicht ins Telefonbuch einträgst. Im Allgemeinen solltest Du es veröffentlichen - außer all Deine Kontakte und potentiellen Kontakte wissen genau, wie sie Dich finden können." -#: mod/regmod.php:95 -#, php-format -msgid "Registration revoked for %s" -msgstr "Registrierung für %s wurde zurückgezogen" +#: mod/newmember.php:36 mod/profile_photo.php:256 mod/profiles.php:700 +msgid "Upload Profile Photo" +msgstr "Profilbild hochladen" -#: mod/regmod.php:107 -msgid "Please login." -msgstr "Bitte melde Dich an." +#: mod/newmember.php:36 +msgid "" +"Upload a profile photo if you have not done so already. Studies have shown " +"that people with real photos of themselves are ten times more likely to make" +" friends than people who do not." +msgstr "Lade ein Profilbild hoch, falls Du es noch nicht getan hast. Studien haben gezeigt, dass es zehnmal wahrscheinlicher ist neue Kontakte zu finden, wenn Du ein Bild von Dir selbst verwendest, als wenn Du dies nicht tust." -#: mod/removeme.php:52 mod/removeme.php:55 -msgid "Remove My Account" -msgstr "Konto löschen" +#: mod/newmember.php:38 +msgid "Edit Your Profile" +msgstr "Editiere dein Profil" -#: mod/removeme.php:53 +#: mod/newmember.php:38 msgid "" -"This will completely remove your account. Once this has been done it is not " -"recoverable." -msgstr "Dein Konto wird endgültig gelöscht. Es gibt keine Möglichkeit, es wiederherzustellen." +"Edit your default profile to your liking. Review the " +"settings for hiding your list of friends and hiding the profile from unknown" +" visitors." +msgstr "Editiere Dein Standard Profil nach Deinen Vorlieben. Überprüfe die Einstellungen zum Verbergen Deiner Kontaktliste vor unbekannten Betrachtern des Profils." -#: mod/removeme.php:54 -msgid "Please enter your password for verification:" -msgstr "Bitte gib Dein Passwort zur Verifikation ein:" +#: mod/newmember.php:40 +msgid "Profile Keywords" +msgstr "Profil Schlüsselbegriffe" -#: mod/repair_ostatus.php:14 -msgid "Resubscribing to OStatus contacts" -msgstr "Erneuern der OStatus Abonements" +#: mod/newmember.php:40 +msgid "" +"Set some public keywords for your default profile which describe your " +"interests. We may be able to find other people with similar interests and " +"suggest friendships." +msgstr "Trage ein paar öffentliche Stichwörter in Dein Standardprofil ein, die Deine Interessen beschreiben. Eventuell sind wir in der Lage Leute zu finden, die Deine Interessen teilen und können Dir dann Kontakte vorschlagen." -#: mod/repair_ostatus.php:30 -msgid "Error" -msgstr "Fehler" +#: mod/newmember.php:44 +msgid "Connecting" +msgstr "Verbindungen knüpfen" -#: mod/settings.php:36 mod/photos.php:107 -msgid "everybody" -msgstr "jeder" +#: mod/newmember.php:51 +msgid "Importing Emails" +msgstr "Emails Importieren" -#: mod/settings.php:43 mod/admin.php:1417 -msgid "Account" -msgstr "Nutzerkonto" +#: mod/newmember.php:51 +msgid "" +"Enter your email access information on your Connector Settings page if you " +"wish to import and interact with friends or mailing lists from your email " +"INBOX" +msgstr "Gib Deine E-Mail-Zugangsinformationen auf der Connector-Einstellungsseite ein, falls Du E-Mails aus Deinem Posteingang importieren und mit Kontakten und Mailinglisten interagieren willst." -#: mod/settings.php:52 mod/admin.php:161 -msgid "Additional features" -msgstr "Zusätzliche Features" +#: mod/newmember.php:53 +msgid "Go to Your Contacts Page" +msgstr "Gehe zu deiner Kontakt-Seite" -#: mod/settings.php:60 -msgid "Display" -msgstr "Anzeige" +#: mod/newmember.php:53 +msgid "" +"Your Contacts page is your gateway to managing friendships and connecting " +"with friends on other networks. Typically you enter their address or site " +"URL in the Add New Contact dialog." +msgstr "Die Kontakte-Seite ist die Einstiegsseite, von der aus Du Kontakte verwalten und Dich mit Personen in anderen Netzwerken verbinden kannst. Normalerweise gibst Du dazu einfach ihre Adresse oder die URL der Seite im Kasten Neuen Kontakt hinzufügen ein." -#: mod/settings.php:67 mod/settings.php:890 -msgid "Social Networks" -msgstr "Soziale Netzwerke" +#: mod/newmember.php:55 +msgid "Go to Your Site's Directory" +msgstr "Gehe zum Verzeichnis Deiner Friendica Instanz" -#: mod/settings.php:74 mod/admin.php:159 mod/admin.php:1543 mod/admin.php:1606 -msgid "Plugins" -msgstr "Plugins" +#: mod/newmember.php:55 +msgid "" +"The Directory page lets you find other people in this network or other " +"federated sites. Look for a Connect or Follow link on " +"their profile page. Provide your own Identity Address if requested." +msgstr "Über die Verzeichnisseite kannst Du andere Personen auf diesem Server oder anderen verknüpften Seiten finden. Halte nach einem Verbinden oder Folgen Link auf deren Profilseiten Ausschau und gib Deine eigene Profiladresse an, falls Du danach gefragt wirst." -#: mod/settings.php:88 -msgid "Connected apps" -msgstr "Verbundene Programme" +#: mod/newmember.php:57 +msgid "Finding New People" +msgstr "Neue Leute kennenlernen" -#: mod/settings.php:95 mod/uexport.php:45 -msgid "Export personal data" -msgstr "Persönliche Daten exportieren" +#: mod/newmember.php:57 +msgid "" +"On the side panel of the Contacts page are several tools to find new " +"friends. We can match people by interest, look up people by name or " +"interest, and provide suggestions based on network relationships. On a brand" +" new site, friend suggestions will usually begin to be populated within 24 " +"hours." +msgstr "Im seitlichen Bedienfeld der Kontakteseite gibt es diverse Werkzeuge, um neue Personen zu finden. Wir können Menschen mit den gleichen Interessen finden, anhand von Namen oder Interessen suchen oder aber aufgrund vorhandener Kontakte neue Leute vorschlagen.\nAuf einer brandneuen - soeben erstellten - Seite starten die Kontaktvorschläge innerhalb von 24 Stunden." -#: mod/settings.php:102 -msgid "Remove account" -msgstr "Konto löschen" +#: mod/newmember.php:65 +msgid "Group Your Contacts" +msgstr "Gruppiere deine Kontakte" -#: mod/settings.php:157 -msgid "Missing some important data!" -msgstr "Wichtige Daten fehlen!" +#: mod/newmember.php:65 +msgid "" +"Once you have made some friends, organize them into private conversation " +"groups from the sidebar of your Contacts page and then you can interact with" +" each group privately on your Network page." +msgstr "Sobald Du einige Kontakte gefunden hast, organisiere sie in Gruppen zur privaten Kommunikation im Seitenmenü der Kontakte-Seite. Du kannst dann mit jeder dieser Gruppen von der Netzwerkseite aus privat interagieren." -#: mod/settings.php:160 mod/settings.php:707 mod/contacts.php:812 -msgid "Update" -msgstr "Aktualisierungen" +#: mod/newmember.php:68 +msgid "Why Aren't My Posts Public?" +msgstr "Warum sind meine Beiträge nicht öffentlich?" -#: mod/settings.php:271 -msgid "Failed to connect with email account using the settings provided." -msgstr "Verbindung zum E-Mail-Konto mit den angegebenen Einstellungen nicht möglich." +#: mod/newmember.php:68 +msgid "" +"Friendica respects your privacy. By default, your posts will only show up to" +" people you've added as friends. For more information, see the help section " +"from the link above." +msgstr "Friendica respektiert Deine Privatsphäre. Mit der Grundeinstellung werden Deine Beiträge ausschließlich Deinen Kontakten angezeigt. Für weitere Informationen diesbezüglich lies Dir bitte den entsprechenden Abschnitt in der Hilfe unter dem obigen Link durch." -#: mod/settings.php:276 -msgid "Email settings updated." -msgstr "E-Mail Einstellungen bearbeitet." +#: mod/newmember.php:73 +msgid "Getting Help" +msgstr "Hilfe bekommen" -#: mod/settings.php:291 -msgid "Features updated" -msgstr "Features aktualisiert" +#: mod/newmember.php:77 +msgid "Go to the Help Section" +msgstr "Zum Hilfe Abschnitt gehen" -#: mod/settings.php:361 -msgid "Relocate message has been send to your contacts" -msgstr "Die Umzugsbenachrichtigung wurde an Deine Kontakte versendet." +#: mod/newmember.php:77 +msgid "" +"Our help pages may be consulted for detail on other program" +" features and resources." +msgstr "Unsere Hilfe Seiten können herangezogen werden, um weitere Einzelheiten zu andern Programm Features zu erhalten." -#: mod/settings.php:380 -msgid "Empty passwords are not allowed. Password unchanged." -msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert." +#: mod/nogroup.php:65 +msgid "Contacts who are not members of a group" +msgstr "Kontakte, die keiner Gruppe zugewiesen sind" -#: mod/settings.php:388 -msgid "Wrong password." -msgstr "Falsches Passwort." +#: mod/notify.php:65 +msgid "No more system notifications." +msgstr "Keine weiteren Systembenachrichtigungen." -#: mod/settings.php:399 -msgid "Password changed." -msgstr "Passwort geändert." +#: mod/notify.php:69 mod/notifications.php:111 +msgid "System Notifications" +msgstr "Systembenachrichtigungen" -#: mod/settings.php:401 -msgid "Password update failed. Please try again." -msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal." +#: mod/oexchange.php:21 +msgid "Post successful." +msgstr "Beitrag erfolgreich veröffentlicht." -#: mod/settings.php:481 -msgid " Please use a shorter name." -msgstr " Bitte verwende einen kürzeren Namen." +#: mod/ostatus_subscribe.php:14 +msgid "Subscribing to OStatus contacts" +msgstr "OStatus Kontakten folgen" -#: mod/settings.php:483 -msgid " Name too short." -msgstr " Name ist zu kurz." +#: mod/ostatus_subscribe.php:25 +msgid "No contact provided." +msgstr "Keine Kontakte gefunden." -#: mod/settings.php:492 -msgid "Wrong Password" -msgstr "Falsches Passwort" +#: mod/ostatus_subscribe.php:31 +msgid "Couldn't fetch information for contact." +msgstr "Konnte die Kontaktinformationen nicht einholen." -#: mod/settings.php:497 -msgid " Not valid email." -msgstr " Keine gültige E-Mail." +#: mod/ostatus_subscribe.php:40 +msgid "Couldn't fetch friends for contact." +msgstr "Konnte die Kontaktliste des Kontakts nicht abfragen." -#: mod/settings.php:503 -msgid " Cannot change to that email." -msgstr "Ändern der E-Mail nicht möglich. " +#: mod/ostatus_subscribe.php:54 mod/repair_ostatus.php:44 +msgid "Done" +msgstr "Erledigt" -#: mod/settings.php:559 -msgid "Private forum has no privacy permissions. Using default privacy group." -msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt." +#: mod/ostatus_subscribe.php:68 +msgid "success" +msgstr "Erfolg" -#: mod/settings.php:563 -msgid "Private forum has no privacy permissions and no default privacy group." -msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte." +#: mod/ostatus_subscribe.php:70 +msgid "failed" +msgstr "Fehlgeschlagen" -#: mod/settings.php:603 -msgid "Settings updated." -msgstr "Einstellungen aktualisiert." +#: mod/ostatus_subscribe.php:78 mod/repair_ostatus.php:50 +msgid "Keep this window open until done." +msgstr "Lasse dieses Fenster offen, bis der Vorgang abgeschlossen ist." -#: mod/settings.php:680 mod/settings.php:706 mod/settings.php:742 -msgid "Add application" -msgstr "Programm hinzufügen" +#: mod/p.php:9 +msgid "Not Extended" +msgstr "Nicht erweitert." -#: mod/settings.php:681 mod/settings.php:792 mod/settings.php:841 -#: mod/settings.php:908 mod/settings.php:1005 mod/settings.php:1271 -#: mod/admin.php:976 mod/admin.php:1607 mod/admin.php:1864 mod/admin.php:1938 -#: mod/admin.php:2088 -msgid "Save Settings" -msgstr "Einstellungen speichern" +#: mod/poke.php:196 +msgid "Poke/Prod" +msgstr "Anstupsen" -#: mod/settings.php:684 mod/settings.php:710 -msgid "Consumer Key" -msgstr "Consumer Key" +#: mod/poke.php:197 +msgid "poke, prod or do other things to somebody" +msgstr "Stupse Leute an oder mache anderes mit ihnen" -#: mod/settings.php:685 mod/settings.php:711 -msgid "Consumer Secret" -msgstr "Consumer Secret" +#: mod/poke.php:198 +msgid "Recipient" +msgstr "Empfänger" -#: mod/settings.php:686 mod/settings.php:712 -msgid "Redirect" -msgstr "Umleiten" +#: mod/poke.php:199 +msgid "Choose what you wish to do to recipient" +msgstr "Was willst Du mit dem Empfänger machen:" -#: mod/settings.php:687 mod/settings.php:713 -msgid "Icon url" -msgstr "Icon URL" +#: mod/poke.php:202 +msgid "Make this post private" +msgstr "Diesen Beitrag privat machen" -#: mod/settings.php:698 -msgid "You can't edit this application." -msgstr "Du kannst dieses Programm nicht bearbeiten." +#: mod/profile_photo.php:44 +msgid "Image uploaded but image cropping failed." +msgstr "Bild hochgeladen, aber das Zuschneiden schlug fehl." -#: mod/settings.php:741 -msgid "Connected Apps" -msgstr "Verbundene Programme" +#: mod/profile_photo.php:77 mod/profile_photo.php:85 mod/profile_photo.php:93 +#: mod/profile_photo.php:323 +#, php-format +msgid "Image size reduction [%s] failed." +msgstr "Verkleinern der Bildgröße von [%s] scheiterte." -#: mod/settings.php:745 -msgid "Client key starts with" -msgstr "Anwenderschlüssel beginnt mit" +#: mod/profile_photo.php:127 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." +msgstr "Drücke Umschalt+Neu Laden oder leere den Browser-Cache, falls das neue Foto nicht gleich angezeigt wird." -#: mod/settings.php:746 -msgid "No name" -msgstr "Kein Name" +#: mod/profile_photo.php:137 +msgid "Unable to process image" +msgstr "Bild konnte nicht verarbeitet werden" -#: mod/settings.php:747 -msgid "Remove authorization" -msgstr "Autorisierung entziehen" +#: mod/profile_photo.php:156 mod/photos.php:813 mod/wall_upload.php:181 +#, php-format +msgid "Image exceeds size limit of %s" +msgstr "Bildgröße überschreitet das Limit von %s" -#: mod/settings.php:759 -msgid "No Plugin settings configured" -msgstr "Keine Plugin-Einstellungen konfiguriert" +#: mod/profile_photo.php:165 mod/photos.php:854 mod/wall_upload.php:218 +msgid "Unable to process image." +msgstr "Konnte das Bild nicht bearbeiten." -#: mod/settings.php:768 -msgid "Plugin Settings" -msgstr "Plugin-Einstellungen" +#: mod/profile_photo.php:254 +msgid "Upload File:" +msgstr "Datei hochladen:" -#: mod/settings.php:782 mod/admin.php:2077 mod/admin.php:2078 -msgid "Off" -msgstr "Aus" +#: mod/profile_photo.php:255 +msgid "Select a profile:" +msgstr "Profil auswählen:" -#: mod/settings.php:782 mod/admin.php:2077 mod/admin.php:2078 -msgid "On" -msgstr "An" +#: mod/profile_photo.php:257 +msgid "Upload" +msgstr "Hochladen" -#: mod/settings.php:790 -msgid "Additional Features" -msgstr "Zusätzliche Features" +#: mod/profile_photo.php:260 +msgid "or" +msgstr "oder" -#: mod/settings.php:800 mod/settings.php:804 -msgid "General Social Media Settings" -msgstr "Allgemeine Einstellungen zu Sozialen Medien" +#: mod/profile_photo.php:260 +msgid "skip this step" +msgstr "diesen Schritt überspringen" -#: mod/settings.php:810 -msgid "Disable intelligent shortening" -msgstr "Intelligentes Link kürzen ausschalten" +#: mod/profile_photo.php:260 +msgid "select a photo from your photo albums" +msgstr "wähle ein Foto aus deinen Fotoalben" -#: mod/settings.php:812 -msgid "" -"Normally the system tries to find the best link to add to shortened posts. " -"If this option is enabled then every shortened post will always point to the" -" original friendica post." -msgstr "Normalerweise versucht das System den besten Link zu finden um ihn zu gekürzten Postings hinzu zu fügen. Wird diese Option ausgewählt wird stets ein Link auf die originale Friendica Nachricht beigefügt." +#: mod/profile_photo.php:274 +msgid "Crop Image" +msgstr "Bild zurechtschneiden" -#: mod/settings.php:818 -msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" -msgstr "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen" +#: mod/profile_photo.php:275 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "Passe bitte den Bildausschnitt an, damit das Bild optimal dargestellt werden kann." -#: mod/settings.php:820 -msgid "" -"If you receive a message from an unknown OStatus user, this option decides " -"what to do. If it is checked, a new contact will be created for every " -"unknown user." -msgstr "Wenn du eine Nachricht eines unbekannten OStatus Nutzers bekommst, entscheidet diese Option wie diese behandelt werden soll. Ist die Option aktiviert, wird ein neuer Kontakt für den Verfasser erstellt,." +#: mod/profile_photo.php:277 +msgid "Done Editing" +msgstr "Bearbeitung abgeschlossen" -#: mod/settings.php:826 -msgid "Default group for OStatus contacts" -msgstr "Voreingestellte Gruppe für OStatus Kontakte" +#: mod/profile_photo.php:313 +msgid "Image uploaded successfully." +msgstr "Bild erfolgreich hochgeladen." -#: mod/settings.php:834 -msgid "Your legacy GNU Social account" -msgstr "Dein alter GNU Social Account" +#: mod/profile_photo.php:315 mod/photos.php:883 mod/wall_upload.php:257 +msgid "Image upload failed." +msgstr "Hochladen des Bildes gescheitert." -#: mod/settings.php:836 -msgid "" -"If you enter your old GNU Social/Statusnet account name here (in the format " -"user@domain.tld), your contacts will be added automatically. The field will " -"be emptied when done." -msgstr "Wenn du deinen alten GNU Socual/Statusnet Accountnamen hier angibst (Format name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden." +#: mod/profperm.php:20 mod/group.php:76 index.php:406 +msgid "Permission denied" +msgstr "Zugriff verweigert" -#: mod/settings.php:839 -msgid "Repair OStatus subscriptions" -msgstr "OStatus Abonnements reparieren" +#: mod/profperm.php:26 mod/profperm.php:57 +msgid "Invalid profile identifier." +msgstr "Ungültiger Profil-Bezeichner." -#: mod/settings.php:848 mod/settings.php:849 -#, php-format -msgid "Built-in support for %s connectivity is %s" -msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s" +#: mod/profperm.php:103 +msgid "Profile Visibility Editor" +msgstr "Editor für die Profil-Sichtbarkeit" -#: mod/settings.php:848 mod/settings.php:849 -msgid "enabled" -msgstr "eingeschaltet" +#: mod/profperm.php:107 mod/group.php:262 +msgid "Click on a contact to add or remove." +msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen" -#: mod/settings.php:848 mod/settings.php:849 -msgid "disabled" -msgstr "ausgeschaltet" +#: mod/profperm.php:116 +msgid "Visible To" +msgstr "Sichtbar für" -#: mod/settings.php:849 -msgid "GNU Social (OStatus)" -msgstr "GNU Social (OStatus)" +#: mod/profperm.php:132 +msgid "All Contacts (with secure profile access)" +msgstr "Alle Kontakte (mit gesichertem Profilzugriff)" -#: mod/settings.php:883 -msgid "Email access is disabled on this site." -msgstr "Zugriff auf E-Mails für diese Seite deaktiviert." +#: mod/regmod.php:58 +msgid "Account approved." +msgstr "Konto freigegeben." -#: mod/settings.php:895 -msgid "Email/Mailbox Setup" -msgstr "E-Mail/Postfach-Einstellungen" +#: mod/regmod.php:95 +#, php-format +msgid "Registration revoked for %s" +msgstr "Registrierung für %s wurde zurückgezogen" -#: mod/settings.php:896 -msgid "" -"If you wish to communicate with email contacts using this service " -"(optional), please specify how to connect to your mailbox." -msgstr "Wenn Du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für Dein Postfach an." +#: mod/regmod.php:107 +msgid "Please login." +msgstr "Bitte melde Dich an." -#: mod/settings.php:897 -msgid "Last successful email check:" -msgstr "Letzter erfolgreicher E-Mail Check" +#: mod/removeme.php:52 mod/removeme.php:55 +msgid "Remove My Account" +msgstr "Konto löschen" -#: mod/settings.php:899 -msgid "IMAP server name:" -msgstr "IMAP-Server-Name:" +#: mod/removeme.php:53 +msgid "" +"This will completely remove your account. Once this has been done it is not " +"recoverable." +msgstr "Dein Konto wird endgültig gelöscht. Es gibt keine Möglichkeit, es wiederherzustellen." -#: mod/settings.php:900 -msgid "IMAP port:" -msgstr "IMAP-Port:" +#: mod/removeme.php:54 +msgid "Please enter your password for verification:" +msgstr "Bitte gib Dein Passwort zur Verifikation ein:" -#: mod/settings.php:901 -msgid "Security:" -msgstr "Sicherheit:" +#: mod/repair_ostatus.php:14 +msgid "Resubscribing to OStatus contacts" +msgstr "Erneuern der OStatus Abonements" -#: mod/settings.php:901 mod/settings.php:906 -msgid "None" -msgstr "Keine" +#: mod/repair_ostatus.php:30 +msgid "Error" +msgstr "Fehler" -#: mod/settings.php:902 -msgid "Email login name:" -msgstr "E-Mail-Login-Name:" +#: mod/subthread.php:104 +#, php-format +msgid "%1$s is following %2$s's %3$s" +msgstr "%1$s folgt %2$s %3$s" -#: mod/settings.php:903 -msgid "Email password:" -msgstr "E-Mail-Passwort:" +#: mod/suggest.php:27 +msgid "Do you really want to delete this suggestion?" +msgstr "Möchtest Du wirklich diese Empfehlung löschen?" -#: mod/settings.php:904 -msgid "Reply-to address:" -msgstr "Reply-to Adresse:" +#: mod/suggest.php:71 +msgid "" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." +msgstr "Keine Vorschläge verfügbar. Falls der Server frisch aufgesetzt wurde, versuche es bitte in 24 Stunden noch einmal." -#: mod/settings.php:905 -msgid "Send public posts to all email contacts:" -msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:" +#: mod/suggest.php:84 mod/suggest.php:104 +msgid "Ignore/Hide" +msgstr "Ignorieren/Verbergen" -#: mod/settings.php:906 -msgid "Action after import:" -msgstr "Aktion nach Import:" +#: mod/tagrm.php:43 +msgid "Tag removed" +msgstr "Tag entfernt" -#: mod/settings.php:906 -msgid "Move to folder" -msgstr "In einen Ordner verschieben" +#: mod/tagrm.php:82 +msgid "Remove Item Tag" +msgstr "Gegenstands-Tag entfernen" -#: mod/settings.php:907 -msgid "Move to folder:" -msgstr "In diesen Ordner verschieben:" +#: mod/tagrm.php:84 +msgid "Select a tag to remove: " +msgstr "Wähle ein Tag zum Entfernen aus: " -#: mod/settings.php:943 mod/admin.php:863 -msgid "No special theme for mobile devices" -msgstr "Kein spezielles Theme für mobile Geräte verwenden." +#: mod/uimport.php:51 mod/register.php:198 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "Die maximale Anzahl täglicher Registrierungen auf dieser Seite wurde überschritten. Bitte versuche es morgen noch einmal." -#: mod/settings.php:1003 -msgid "Display Settings" -msgstr "Anzeige-Einstellungen" +#: mod/uimport.php:66 mod/register.php:295 +msgid "Import" +msgstr "Import" -#: mod/settings.php:1009 mod/settings.php:1032 -msgid "Display Theme:" -msgstr "Theme:" +#: mod/uimport.php:68 +msgid "Move account" +msgstr "Account umziehen" -#: mod/settings.php:1010 -msgid "Mobile Theme:" -msgstr "Mobiles Theme" +#: mod/uimport.php:69 +msgid "You can import an account from another Friendica server." +msgstr "Du kannst einen Account von einem anderen Friendica Server importieren." -#: mod/settings.php:1011 -msgid "Suppress warning of insecure networks" -msgstr "Warnung wegen unsicheren Netzwerken unterdrücken" +#: mod/uimport.php:70 +msgid "" +"You need to export your account from the old server and upload it here. We " +"will recreate your old account here with all your contacts. We will try also" +" to inform your friends that you moved here." +msgstr "Du musst Deinen Account vom alten Server exportieren und hier hochladen. Wir stellen Deinen alten Account mit all Deinen Kontakten wieder her. Wir werden auch versuchen all Deine Kontakte darüber zu informieren, dass Du hierher umgezogen bist." -#: mod/settings.php:1011 +#: mod/uimport.php:71 msgid "" -"Should the system suppress the warning that the current group contains " -"members of networks that can't receive non public postings." -msgstr "Soll das System Warnungen unterdrücken, die angezeigt werden weil von dir eingerichtete Kontakt-Gruppen Accounts aus Netzwerken beinhalten, die keine nicht öffentlichen Beiträge empfangen können." +"This feature is experimental. We can't import contacts from the OStatus " +"network (GNU Social/Statusnet) or from Diaspora" +msgstr "Dieses Feature ist experimentell. Wir können keine Kontakte vom OStatus Netzwerk (GNU Social/Statusnet) oder von Diaspora importieren" -#: mod/settings.php:1012 -msgid "Update browser every xx seconds" -msgstr "Browser alle xx Sekunden aktualisieren" +#: mod/uimport.php:72 +msgid "Account file" +msgstr "Account Datei" -#: mod/settings.php:1012 -msgid "Minimum of 10 seconds. Enter -1 to disable it." -msgstr "Minimum sind 10 Sekunden. Gib -1 ein um abzuschalten." +#: mod/uimport.php:72 +msgid "" +"To export your account, go to \"Settings->Export your personal data\" and " +"select \"Export account\"" +msgstr "Um Deinen Account zu exportieren, rufe \"Einstellungen -> Persönliche Daten exportieren\" auf und wähle \"Account exportieren\"" -#: mod/settings.php:1013 -msgid "Number of items to display per page:" -msgstr "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: " +#: mod/update_community.php:19 mod/update_display.php:23 +#: mod/update_network.php:27 mod/update_notes.php:36 mod/update_profile.php:35 +msgid "[Embedded content - reload page to view]" +msgstr "[Eingebetteter Inhalt - Seite neu laden zum Betrachten]" -#: mod/settings.php:1013 mod/settings.php:1014 -msgid "Maximum of 100 items" -msgstr "Maximal 100 Beiträge" +#: mod/viewcontacts.php:75 +msgid "No contacts." +msgstr "Keine Kontakte." -#: mod/settings.php:1014 -msgid "Number of items to display per page when viewed from mobile device:" -msgstr "Zahl der Beiträge, die pro Netzwerkseite auf mobilen Geräten angezeigt werden sollen:" +#: mod/viewsrc.php:7 +msgid "Access denied." +msgstr "Zugriff verweigert." -#: mod/settings.php:1015 -msgid "Don't show emoticons" -msgstr "Keine Smilies anzeigen" +#: mod/wall_attach.php:17 mod/wall_attach.php:25 mod/wall_attach.php:76 +#: mod/wall_upload.php:36 mod/wall_upload.php:52 mod/wall_upload.php:110 +#: mod/wall_upload.php:150 mod/wall_upload.php:153 +msgid "Invalid request." +msgstr "Ungültige Anfrage" -#: mod/settings.php:1016 -msgid "Calendar" -msgstr "Kalender" +#: mod/wall_attach.php:94 +msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" +msgstr "Entschuldige, die Datei scheint größer zu sein als es die PHP Konfiguration erlaubt." -#: mod/settings.php:1017 -msgid "Beginning of week:" -msgstr "Wochenbeginn:" +#: mod/wall_attach.php:94 +msgid "Or - did you try to upload an empty file?" +msgstr "Oder - hast Du versucht, eine leere Datei hochzuladen?" -#: mod/settings.php:1018 -msgid "Don't show notices" -msgstr "Info-Popups nicht anzeigen" +#: mod/wall_attach.php:105 +#, php-format +msgid "File exceeds size limit of %s" +msgstr "Die Datei ist größer als das erlaubte Limit von %s" -#: mod/settings.php:1019 -msgid "Infinite scroll" -msgstr "Endloses Scrollen" +#: mod/wall_attach.php:158 mod/wall_attach.php:174 +msgid "File upload failed." +msgstr "Hochladen der Datei fehlgeschlagen." -#: mod/settings.php:1020 -msgid "Automatic updates only at the top of the network page" -msgstr "Automatische Updates nur, wenn Du oben auf der Netzwerkseite bist." +#: mod/wallmessage.php:42 mod/wallmessage.php:106 +#, php-format +msgid "Number of daily wall messages for %s exceeded. Message failed." +msgstr "Maximale Anzahl der täglichen Pinnwand Nachrichten für %s ist überschritten. Zustellung fehlgeschlagen." -#: mod/settings.php:1021 -msgid "Bandwith Saver Mode" -msgstr "Bandbreiten-Spar-Modus" +#: mod/wallmessage.php:50 mod/message.php:60 +msgid "No recipient selected." +msgstr "Kein Empfänger gewählt." -#: mod/settings.php:1021 -msgid "" -"When enabled, embedded content is not displayed on automatic updates, they " -"only show on page reload." -msgstr "Wenn aktiviert, wird der eingebettete Inhalt nicht automatisch aktualisiert. In diesem Fall Seite bitte neu laden." +#: mod/wallmessage.php:53 +msgid "Unable to check your home location." +msgstr "Konnte Deinen Heimatort nicht bestimmen." -#: mod/settings.php:1023 -msgid "General Theme Settings" -msgstr "Allgemeine Themeneinstellungen" +#: mod/wallmessage.php:56 mod/message.php:67 +msgid "Message could not be sent." +msgstr "Nachricht konnte nicht gesendet werden." -#: mod/settings.php:1024 -msgid "Custom Theme Settings" -msgstr "Benutzerdefinierte Theme Einstellungen" +#: mod/wallmessage.php:59 mod/message.php:70 +msgid "Message collection failure." +msgstr "Konnte Nachrichten nicht abrufen." -#: mod/settings.php:1025 -msgid "Content Settings" -msgstr "Einstellungen zum Inhalt" +#: mod/wallmessage.php:62 mod/message.php:73 +msgid "Message sent." +msgstr "Nachricht gesendet." -#: mod/settings.php:1026 view/theme/quattro/config.php:69 -#: view/theme/vier/config.php:114 view/theme/duepuntozero/config.php:63 -#: view/theme/clean/config.php:89 view/theme/frio/config.php:66 -msgid "Theme settings" -msgstr "Themeneinstellungen" +#: mod/wallmessage.php:80 mod/wallmessage.php:89 +msgid "No recipient." +msgstr "Kein Empfänger." -#: mod/settings.php:1110 -msgid "Account Types" -msgstr "Kontenarten" +#: mod/wallmessage.php:126 mod/message.php:322 +msgid "Send Private Message" +msgstr "Private Nachricht senden" -#: mod/settings.php:1111 -msgid "Personal Page Subtypes" -msgstr "Unterarten der persönlichen Seite" +#: mod/wallmessage.php:127 +#, php-format +msgid "" +"If you wish for %s to respond, please check that the privacy settings on " +"your site allow private mail from unknown senders." +msgstr "Wenn Du möchtest, dass %s Dir antworten kann, überprüfe Deine Privatsphären-Einstellungen und erlaube private Nachrichten von unbekannten Absendern." -#: mod/settings.php:1112 -msgid "Community Forum Subtypes" -msgstr "Unterarten des Gemeinschaftsforums" +#: mod/wallmessage.php:128 mod/message.php:323 mod/message.php:510 +msgid "To:" +msgstr "An:" -#: mod/settings.php:1119 -msgid "Personal Page" -msgstr "Persönliche Seite" +#: mod/wallmessage.php:129 mod/message.php:328 mod/message.php:512 +msgid "Subject:" +msgstr "Betreff:" -#: mod/settings.php:1120 -msgid "This account is a regular personal profile" -msgstr "Dieses Konto ist ein normales persönliches Profil" +#: mod/babel.php:16 +msgid "Source (bbcode) text:" +msgstr "Quelle (bbcode) Text:" -#: mod/settings.php:1123 -msgid "Organisation Page" -msgstr "Organisationsseite" +#: mod/babel.php:23 +msgid "Source (Diaspora) text to convert to BBcode:" +msgstr "Eingabe (Diaspora) nach BBCode zu konvertierender Text:" -#: mod/settings.php:1124 -msgid "This account is a profile for an organisation" -msgstr "Diese Konto ist ein Profil für eine Organisation" +#: mod/babel.php:31 +msgid "Source input: " +msgstr "Originaltext:" -#: mod/settings.php:1127 -msgid "News Page" -msgstr "Nachrichtenseite" +#: mod/babel.php:35 +msgid "bb2html (raw HTML): " +msgstr "bb2html (reines HTML): " -#: mod/settings.php:1128 -msgid "This account is a news account/reflector" -msgstr "Dieses Konto ist ein News-Konto bzw. -Spiegel" +#: mod/babel.php:39 +msgid "bb2html: " +msgstr "bb2html: " -#: mod/settings.php:1131 -msgid "Community Forum" -msgstr "Gemeinschaftsforum" +#: mod/babel.php:43 +msgid "bb2html2bb: " +msgstr "bb2html2bb: " -#: mod/settings.php:1132 -msgid "" -"This account is a community forum where people can discuss with each other" -msgstr "Dieses Konto ist ein Gemeinschaftskonto wo sich Leute untereinander austauschen können" +#: mod/babel.php:47 +msgid "bb2md: " +msgstr "bb2md: " -#: mod/settings.php:1135 -msgid "Normal Account Page" -msgstr "Normales Konto" +#: mod/babel.php:51 +msgid "bb2md2html: " +msgstr "bb2md2html: " -#: mod/settings.php:1136 -msgid "This account is a normal personal profile" -msgstr "Dieses Konto ist ein normales persönliches Profil" +#: mod/babel.php:55 +msgid "bb2dia2bb: " +msgstr "bb2dia2bb: " -#: mod/settings.php:1139 -msgid "Soapbox Page" -msgstr "Marktschreier-Konto" +#: mod/babel.php:59 +msgid "bb2md2html2bb: " +msgstr "bb2md2html2bb: " -#: mod/settings.php:1140 -msgid "Automatically approve all connection/friend requests as read-only fans" -msgstr "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert" +#: mod/babel.php:65 +msgid "Source input (Diaspora format): " +msgstr "Originaltext (Diaspora Format): " -#: mod/settings.php:1143 -msgid "Public Forum" -msgstr "Öffentliches Forum" +#: mod/babel.php:69 +msgid "diaspora2bb: " +msgstr "diaspora2bb: " -#: mod/settings.php:1144 -msgid "Automatically approve all contact requests" -msgstr "Bestätige alle Kontaktanfragen automatisch" +#: mod/cal.php:271 mod/events.php:375 +msgid "View" +msgstr "Ansehen" -#: mod/settings.php:1147 -msgid "Automatic Friend Page" -msgstr "Automatische Freunde Seite" +#: mod/cal.php:272 mod/events.php:377 +msgid "Previous" +msgstr "Vorherige" -#: mod/settings.php:1148 -msgid "Automatically approve all connection/friend requests as friends" -msgstr "Kontaktanfragen werden automatisch als Freund akzeptiert" +#: mod/cal.php:273 mod/events.php:378 mod/install.php:201 +msgid "Next" +msgstr "Nächste" -#: mod/settings.php:1151 -msgid "Private Forum [Experimental]" -msgstr "Privates Forum [Versuchsstadium]" +#: mod/cal.php:282 mod/events.php:387 +msgid "list" +msgstr "Liste" + +#: mod/cal.php:292 +msgid "User not found" +msgstr "Nutzer nicht gefunden" -#: mod/settings.php:1152 -msgid "Private forum - approved members only" -msgstr "Privates Forum, nur für Mitglieder" +#: mod/cal.php:308 +msgid "This calendar format is not supported" +msgstr "Dieses Kalenderformat wird nicht unterstützt." -#: mod/settings.php:1163 -msgid "OpenID:" -msgstr "OpenID:" +#: mod/cal.php:310 +msgid "No exportable data found" +msgstr "Keine exportierbaren Daten gefunden" -#: mod/settings.php:1163 -msgid "(Optional) Allow this OpenID to login to this account." -msgstr "(Optional) Erlaube die Anmeldung für dieses Konto mit dieser OpenID." +#: mod/cal.php:325 +msgid "calendar" +msgstr "Kalender" -#: mod/settings.php:1171 -msgid "Publish your default profile in your local site directory?" -msgstr "Darf Dein Standardprofil im Verzeichnis dieses Servers veröffentlicht werden?" +#: mod/community.php:23 +msgid "Not available." +msgstr "Nicht verfügbar." -#: mod/settings.php:1177 -msgid "Publish your default profile in the global social directory?" -msgstr "Darf Dein Standardprofil im weltweiten Verzeichnis veröffentlicht werden?" +#: mod/community.php:50 mod/search.php:219 +msgid "No results." +msgstr "Keine Ergebnisse." -#: mod/settings.php:1184 -msgid "Hide your contact/friend list from viewers of your default profile?" -msgstr "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?" +#: mod/dfrn_confirm.php:70 mod/profiles.php:19 mod/profiles.php:135 +#: mod/profiles.php:182 mod/profiles.php:619 +msgid "Profile not found." +msgstr "Profil nicht gefunden." -#: mod/settings.php:1188 +#: mod/dfrn_confirm.php:127 msgid "" -"If enabled, posting public messages to Diaspora and other networks isn't " -"possible." -msgstr "Wenn aktiviert, ist das senden öffentliche Nachrichten zu Diaspora und anderen Netzwerken nicht möglich" +"This may occasionally happen if contact was requested by both persons and it" +" has already been approved." +msgstr "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde." -#: mod/settings.php:1193 -msgid "Allow friends to post to your profile page?" -msgstr "Dürfen Deine Kontakte auf Deine Pinnwand schreiben?" +#: mod/dfrn_confirm.php:244 +msgid "Response from remote site was not understood." +msgstr "Antwort der Gegenstelle unverständlich." -#: mod/settings.php:1198 -msgid "Allow friends to tag your posts?" -msgstr "Dürfen Deine Kontakte Deine Beiträge mit Schlagwörtern versehen?" +#: mod/dfrn_confirm.php:253 mod/dfrn_confirm.php:258 +msgid "Unexpected response from remote site: " +msgstr "Unerwartete Antwort der Gegenstelle: " -#: mod/settings.php:1203 -msgid "Allow us to suggest you as a potential friend to new members?" -msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?" +#: mod/dfrn_confirm.php:267 +msgid "Confirmation completed successfully." +msgstr "Bestätigung erfolgreich abgeschlossen." -#: mod/settings.php:1208 -msgid "Permit unknown people to send you private mail?" -msgstr "Dürfen Dir Unbekannte private Nachrichten schicken?" +#: mod/dfrn_confirm.php:269 mod/dfrn_confirm.php:283 mod/dfrn_confirm.php:290 +msgid "Remote site reported: " +msgstr "Gegenstelle meldet: " -#: mod/settings.php:1216 -msgid "Profile is not published." -msgstr "Profil ist nicht veröffentlicht." +#: mod/dfrn_confirm.php:281 +msgid "Temporary failure. Please wait and try again." +msgstr "Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal." -#: mod/settings.php:1224 -#, php-format -msgid "Your Identity Address is '%s' or '%s'." -msgstr "Die Adresse deines Profils lautet '%s' oder '%s'." +#: mod/dfrn_confirm.php:288 +msgid "Introduction failed or was revoked." +msgstr "Kontaktanfrage schlug fehl oder wurde zurückgezogen." -#: mod/settings.php:1231 -msgid "Automatically expire posts after this many days:" -msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:" +#: mod/dfrn_confirm.php:418 +msgid "Unable to set contact photo." +msgstr "Konnte das Bild des Kontakts nicht speichern." -#: mod/settings.php:1231 -msgid "If empty, posts will not expire. Expired posts will be deleted" -msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht." +#: mod/dfrn_confirm.php:559 +#, php-format +msgid "No user record found for '%s' " +msgstr "Für '%s' wurde kein Nutzer gefunden" -#: mod/settings.php:1232 -msgid "Advanced expiration settings" -msgstr "Erweiterte Verfallseinstellungen" +#: mod/dfrn_confirm.php:569 +msgid "Our site encryption key is apparently messed up." +msgstr "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend nicht in Ordnung." -#: mod/settings.php:1233 -msgid "Advanced Expiration" -msgstr "Erweitertes Verfallen" +#: mod/dfrn_confirm.php:580 +msgid "Empty site URL was provided or URL could not be decrypted by us." +msgstr "Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden." -#: mod/settings.php:1234 -msgid "Expire posts:" -msgstr "Beiträge verfallen lassen:" +#: mod/dfrn_confirm.php:602 +msgid "Contact record was not found for you on our site." +msgstr "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden." -#: mod/settings.php:1235 -msgid "Expire personal notes:" -msgstr "Persönliche Notizen verfallen lassen:" +#: mod/dfrn_confirm.php:616 +#, php-format +msgid "Site public key not available in contact record for URL %s." +msgstr "Die Kontaktdaten für URL %s enthalten keinen Public Key für den Server." -#: mod/settings.php:1236 -msgid "Expire starred posts:" -msgstr "Markierte Beiträge verfallen lassen:" +#: mod/dfrn_confirm.php:636 +msgid "" +"The ID provided by your system is a duplicate on our system. It should work " +"if you try again." +msgstr "Die ID, die uns Dein System angeboten hat, ist hier bereits vergeben. Bitte versuche es noch einmal." -#: mod/settings.php:1237 -msgid "Expire photos:" -msgstr "Fotos verfallen lassen:" +#: mod/dfrn_confirm.php:647 +msgid "Unable to set your contact credentials on our system." +msgstr "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden." -#: mod/settings.php:1238 -msgid "Only expire posts by others:" -msgstr "Nur Beiträge anderer verfallen:" +#: mod/dfrn_confirm.php:709 +msgid "Unable to update your contact profile details on our system" +msgstr "Die Updates für Dein Profil konnten nicht gespeichert werden" -#: mod/settings.php:1269 -msgid "Account Settings" -msgstr "Kontoeinstellungen" +#: mod/dfrn_confirm.php:781 +#, php-format +msgid "%1$s has joined %2$s" +msgstr "%1$s ist %2$s beigetreten" -#: mod/settings.php:1277 -msgid "Password Settings" -msgstr "Passwort-Einstellungen" +#: mod/dfrn_request.php:101 +msgid "This introduction has already been accepted." +msgstr "Diese Kontaktanfrage wurde bereits akzeptiert." -#: mod/settings.php:1279 -msgid "Leave password fields blank unless changing" -msgstr "Lass die Passwort-Felder leer, außer Du willst das Passwort ändern" +#: mod/dfrn_request.php:124 mod/dfrn_request.php:528 +msgid "Profile location is not valid or does not contain profile information." +msgstr "Profiladresse ist ungültig oder stellt keine Profildaten zur Verfügung." -#: mod/settings.php:1280 -msgid "Current Password:" -msgstr "Aktuelles Passwort:" +#: mod/dfrn_request.php:129 mod/dfrn_request.php:533 +msgid "Warning: profile location has no identifiable owner name." +msgstr "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden." -#: mod/settings.php:1280 mod/settings.php:1281 -msgid "Your current password to confirm the changes" -msgstr "Dein aktuelles Passwort um die Änderungen zu bestätigen" +#: mod/dfrn_request.php:132 mod/dfrn_request.php:536 +msgid "Warning: profile location has no profile photo." +msgstr "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse." -#: mod/settings.php:1281 -msgid "Password:" -msgstr "Passwort:" +#: mod/dfrn_request.php:136 mod/dfrn_request.php:540 +#, 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 benötigter Parameter wurde an der angegebenen Stelle nicht gefunden" +msgstr[1] "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden" -#: mod/settings.php:1285 -msgid "Basic Settings" -msgstr "Grundeinstellungen" +#: mod/dfrn_request.php:180 +msgid "Introduction complete." +msgstr "Kontaktanfrage abgeschlossen." -#: mod/settings.php:1287 -msgid "Email Address:" -msgstr "E-Mail-Adresse:" +#: mod/dfrn_request.php:225 +msgid "Unrecoverable protocol error." +msgstr "Nicht behebbarer Protokollfehler." -#: mod/settings.php:1288 -msgid "Your Timezone:" -msgstr "Deine Zeitzone:" +#: mod/dfrn_request.php:253 +msgid "Profile unavailable." +msgstr "Profil nicht verfügbar." -#: mod/settings.php:1289 -msgid "Your Language:" -msgstr "Deine Sprache:" +#: mod/dfrn_request.php:280 +#, php-format +msgid "%s has received too many connection requests today." +msgstr "%s hat heute zu viele Kontaktanfragen erhalten." -#: mod/settings.php:1289 -msgid "" -"Set the language we use to show you friendica interface and to send you " -"emails" -msgstr "Wähle die Sprache, in der wir Dir die Friendica-Oberfläche präsentieren sollen und Dir E-Mail schicken" +#: mod/dfrn_request.php:281 +msgid "Spam protection measures have been invoked." +msgstr "Maßnahmen zum Spamschutz wurden ergriffen." -#: mod/settings.php:1290 -msgid "Default Post Location:" -msgstr "Standardstandort:" +#: mod/dfrn_request.php:282 +msgid "Friends are advised to please try again in 24 hours." +msgstr "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen." -#: mod/settings.php:1291 -msgid "Use Browser Location:" -msgstr "Standort des Browsers verwenden:" +#: mod/dfrn_request.php:344 +msgid "Invalid locator" +msgstr "Ungültiger Locator" -#: mod/settings.php:1294 -msgid "Security and Privacy Settings" -msgstr "Sicherheits- und Privatsphäre-Einstellungen" +#: mod/dfrn_request.php:353 +msgid "Invalid email address." +msgstr "Ungültige E-Mail-Adresse." -#: mod/settings.php:1296 -msgid "Maximum Friend Requests/Day:" -msgstr "Maximale Anzahl vonKontaktanfragen/Tag:" +#: mod/dfrn_request.php:378 +msgid "This account has not been configured for email. Request failed." +msgstr "Dieses Konto ist nicht für E-Mail konfiguriert. Anfrage fehlgeschlagen." -#: mod/settings.php:1296 mod/settings.php:1326 -msgid "(to prevent spam abuse)" -msgstr "(um SPAM zu vermeiden)" +#: mod/dfrn_request.php:481 +msgid "You have already introduced yourself here." +msgstr "Du hast Dich hier bereits vorgestellt." -#: mod/settings.php:1297 -msgid "Default Post Permissions" -msgstr "Standard-Zugriffsrechte für Beiträge" +#: mod/dfrn_request.php:485 +#, php-format +msgid "Apparently you are already friends with %s." +msgstr "Es scheint so, als ob Du bereits mit %s in Kontakt stehst." -#: mod/settings.php:1298 -msgid "(click to open/close)" -msgstr "(klicke zum öffnen/schließen)" +#: mod/dfrn_request.php:506 +msgid "Invalid profile URL." +msgstr "Ungültige Profil-URL." -#: mod/settings.php:1307 mod/photos.php:1185 mod/photos.php:1567 -msgid "Show to Groups" -msgstr "Zeige den Gruppen" +#: mod/dfrn_request.php:614 +msgid "Your introduction has been sent." +msgstr "Deine Kontaktanfrage wurde gesendet." -#: mod/settings.php:1308 mod/photos.php:1186 mod/photos.php:1568 -msgid "Show to Contacts" -msgstr "Zeige den Kontakten" +#: mod/dfrn_request.php:656 +msgid "" +"Remote subscription can't be done for your network. Please subscribe " +"directly on your system." +msgstr "Entferntes abon­nie­ren kann für dein Netzwerk nicht durchgeführt werden. Bitte nutze direkt die Abonnieren-Funktion deines Systems. " -#: mod/settings.php:1309 -msgid "Default Private Post" -msgstr "Privater Standardbeitrag" +#: mod/dfrn_request.php:677 +msgid "Please login to confirm introduction." +msgstr "Bitte melde Dich an, um die Kontaktanfrage zu bestätigen." -#: mod/settings.php:1310 -msgid "Default Public Post" -msgstr "Öffentlicher Standardbeitrag" +#: mod/dfrn_request.php:687 +msgid "" +"Incorrect identity currently logged in. Please login to " +"this profile." +msgstr "Momentan bist Du mit einer anderen Identität angemeldet. Bitte melde Dich mit diesem Profil an." -#: mod/settings.php:1314 -msgid "Default Permissions for New Posts" -msgstr "Standardberechtigungen für neue Beiträge" +#: mod/dfrn_request.php:701 mod/dfrn_request.php:718 +msgid "Confirm" +msgstr "Bestätigen" -#: mod/settings.php:1326 -msgid "Maximum private messages per day from unknown people:" -msgstr "Maximale Anzahl privater Nachrichten von Unbekannten pro Tag:" +#: mod/dfrn_request.php:713 +msgid "Hide this contact" +msgstr "Verberge diesen Kontakt" -#: mod/settings.php:1329 -msgid "Notification Settings" -msgstr "Benachrichtigungseinstellungen" +#: mod/dfrn_request.php:716 +#, php-format +msgid "Welcome home %s." +msgstr "Willkommen zurück %s." -#: mod/settings.php:1330 -msgid "By default post a status message when:" -msgstr "Standardmäßig eine Statusnachricht posten, wenn:" +#: mod/dfrn_request.php:717 +#, php-format +msgid "Please confirm your introduction/connection request to %s." +msgstr "Bitte bestätige Deine Kontaktanfrage bei %s." -#: mod/settings.php:1331 -msgid "accepting a friend request" -msgstr "– Du eine Kontaktanfrage akzeptierst" +#: mod/dfrn_request.php:848 +msgid "" +"Please enter your 'Identity Address' from one of the following supported " +"communications networks:" +msgstr "Bitte gib die Adresse Deines Profils in einem der unterstützten sozialen Netzwerke an:" -#: mod/settings.php:1332 -msgid "joining a forum/community" -msgstr "– Du einem Forum/einer Gemeinschaftsseite beitrittst" +#: mod/dfrn_request.php:872 +#, php-format +msgid "" +"If you are not yet a member of the free social web, follow this link to find a public Friendica site and " +"join us today." +msgstr "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, folge diesem Link um einen öffentlichen Friendica-Server zu finden und beizutreten." -#: mod/settings.php:1333 -msgid "making an interesting profile change" -msgstr "– Du eine interessante Änderung an Deinem Profil durchführst" +#: mod/dfrn_request.php:877 +msgid "Friend/Connection Request" +msgstr "Kontaktanfrage" -#: mod/settings.php:1334 -msgid "Send a notification email when:" -msgstr "Benachrichtigungs-E-Mail senden wenn:" +#: mod/dfrn_request.php:878 +msgid "" +"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " +"testuser@identi.ca" +msgstr "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" -#: mod/settings.php:1335 -msgid "You receive an introduction" -msgstr "– Du eine Kontaktanfrage erhältst" +#: mod/dfrn_request.php:879 mod/follow.php:112 +msgid "Please answer the following:" +msgstr "Bitte beantworte folgendes:" -#: mod/settings.php:1336 -msgid "Your introductions are confirmed" -msgstr "– eine Deiner Kontaktanfragen akzeptiert wurde" +#: mod/dfrn_request.php:880 mod/follow.php:113 +#, php-format +msgid "Does %s know you?" +msgstr "Kennt %s Dich?" -#: mod/settings.php:1337 -msgid "Someone writes on your profile wall" -msgstr "– jemand etwas auf Deine Pinnwand schreibt" +#: mod/dfrn_request.php:884 mod/follow.php:114 +msgid "Add a personal note:" +msgstr "Eine persönliche Notiz beifügen:" -#: mod/settings.php:1338 -msgid "Someone writes a followup comment" -msgstr "– jemand auch einen Kommentar verfasst" +#: mod/dfrn_request.php:887 +msgid "StatusNet/Federated Social Web" +msgstr "StatusNet/Federated Social Web" -#: mod/settings.php:1339 -msgid "You receive a private message" -msgstr "– Du eine private Nachricht erhältst" +#: mod/dfrn_request.php:889 +#, php-format +msgid "" +" - please do not use this form. Instead, enter %s into your Diaspora search" +" bar." +msgstr " - bitte verwende dieses Formular nicht. Stattdessen suche nach %s in Deiner Diaspora Suchleiste." -#: mod/settings.php:1340 -msgid "You receive a friend suggestion" -msgstr "– Du eine Empfehlung erhältst" +#: mod/dfrn_request.php:890 mod/follow.php:120 +msgid "Your Identity Address:" +msgstr "Adresse Deines Profils:" -#: mod/settings.php:1341 -msgid "You are tagged in a post" -msgstr "– Du in einem Beitrag erwähnt wirst" +#: mod/dfrn_request.php:893 mod/follow.php:19 +msgid "Submit Request" +msgstr "Anfrage abschicken" -#: mod/settings.php:1342 -msgid "You are poked/prodded/etc. in a post" -msgstr "– Du von jemandem angestupst oder sonstwie behandelt wirst" +#: mod/dirfind.php:37 +#, php-format +msgid "People Search - %s" +msgstr "Personensuche - %s" -#: mod/settings.php:1344 -msgid "Activate desktop notifications" -msgstr "Desktop Benachrichtigungen einschalten" +#: mod/dirfind.php:48 +#, php-format +msgid "Forum Search - %s" +msgstr "Forensuche - %s" -#: mod/settings.php:1344 -msgid "Show desktop popup on new notifications" -msgstr "Desktop Benachrichtigungen einschalten" +#: mod/events.php:93 mod/events.php:95 +msgid "Event can not end before it has started." +msgstr "Die Veranstaltung kann nicht enden bevor sie beginnt." -#: mod/settings.php:1346 -msgid "Text-only notification emails" -msgstr "Benachrichtigungs E-Mail als Rein-Text." +#: mod/events.php:102 mod/events.php:104 +msgid "Event title and start time are required." +msgstr "Der Veranstaltungstitel und die Anfangszeit müssen angegeben werden." -#: mod/settings.php:1348 -msgid "Send text only notification emails, without the html part" -msgstr "Sende Benachrichtigungs E-Mail als Rein-Text - ohne HTML-Teil" +#: mod/events.php:376 +msgid "Create New Event" +msgstr "Neue Veranstaltung erstellen" -#: mod/settings.php:1350 -msgid "Advanced Account/Page Type Settings" -msgstr "Erweiterte Konto-/Seitentyp-Einstellungen" +#: mod/events.php:481 +msgid "Event details" +msgstr "Veranstaltungsdetails" -#: mod/settings.php:1351 -msgid "Change the behaviour of this account for special situations" -msgstr "Verhalten dieses Kontos in bestimmten Situationen:" +#: mod/events.php:482 +msgid "Starting date and Title are required." +msgstr "Anfangszeitpunkt und Titel werden benötigt" -#: mod/settings.php:1354 -msgid "Relocate" -msgstr "Umziehen" +#: mod/events.php:483 mod/events.php:484 +msgid "Event Starts:" +msgstr "Veranstaltungsbeginn:" -#: mod/settings.php:1355 -msgid "" -"If you have moved this profile from another server, and some of your " -"contacts don't receive your updates, try pushing this button." -msgstr "Wenn Du Dein Profil von einem anderen Server umgezogen hast und einige Deiner Kontakte Deine Beiträge nicht erhalten, verwende diesen Button." +#: mod/events.php:483 mod/events.php:495 mod/profiles.php:709 +msgid "Required" +msgstr "Benötigt" -#: mod/settings.php:1356 -msgid "Resend relocate message to contacts" -msgstr "Umzugsbenachrichtigung erneut an Kontakte senden" +#: mod/events.php:485 mod/events.php:501 +msgid "Finish date/time is not known or not relevant" +msgstr "Enddatum/-zeit ist nicht bekannt oder nicht relevant" -#: mod/share.php:38 -msgid "link" -msgstr "Link" +#: mod/events.php:487 mod/events.php:488 +msgid "Event Finishes:" +msgstr "Veranstaltungsende:" -#: mod/subthread.php:104 -#, php-format -msgid "%1$s is following %2$s's %3$s" -msgstr "%1$s folgt %2$s %3$s" +#: mod/events.php:489 mod/events.php:502 +msgid "Adjust for viewer timezone" +msgstr "An Zeitzone des Betrachters anpassen" -#: mod/suggest.php:27 -msgid "Do you really want to delete this suggestion?" -msgstr "Möchtest Du wirklich diese Empfehlung löschen?" +#: mod/events.php:491 +msgid "Description:" +msgstr "Beschreibung" -#: mod/suggest.php:71 -msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." -msgstr "Keine Vorschläge verfügbar. Falls der Server frisch aufgesetzt wurde, versuche es bitte in 24 Stunden noch einmal." +#: mod/events.php:495 mod/events.php:497 +msgid "Title:" +msgstr "Titel:" -#: mod/suggest.php:84 mod/suggest.php:104 -msgid "Ignore/Hide" -msgstr "Ignorieren/Verbergen" +#: mod/events.php:498 mod/events.php:499 +msgid "Share this event" +msgstr "Veranstaltung teilen" -#: mod/tagrm.php:43 -msgid "Tag removed" -msgstr "Tag entfernt" +#: mod/events.php:528 +msgid "Failed to remove event" +msgstr "Entfernen der Veranstaltung fehlgeschlagen" -#: mod/tagrm.php:82 -msgid "Remove Item Tag" -msgstr "Gegenstands-Tag entfernen" +#: mod/events.php:530 +msgid "Event removed" +msgstr "Veranstaltung enfternt" -#: mod/tagrm.php:84 -msgid "Select a tag to remove: " -msgstr "Wähle ein Tag zum Entfernen aus: " +#: mod/follow.php:30 +msgid "You already added this contact." +msgstr "Du hast den Kontakt bereits hinzugefügt." -#: mod/uexport.php:37 -msgid "Export account" -msgstr "Account exportieren" +#: mod/follow.php:39 +msgid "Diaspora support isn't enabled. Contact can't be added." +msgstr "Diaspora Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden." -#: mod/uexport.php:37 -msgid "" -"Export your account info and contacts. Use this to make a backup of your " -"account and/or to move it to another server." -msgstr "Exportiere Deine Accountinformationen und Kontakte. Verwende dies um ein Backup Deines Accounts anzulegen und/oder damit auf einen anderen Server umzuziehen." +#: mod/follow.php:46 +msgid "OStatus support is disabled. Contact can't be added." +msgstr "OStatus Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden." -#: mod/uexport.php:38 -msgid "Export all" -msgstr "Alles exportieren" +#: mod/follow.php:53 +msgid "The network type couldn't be detected. Contact can't be added." +msgstr "Der Netzwerktype wurde nicht erkannt. Der Kontakt kann nicht hinzugefügt werden." -#: mod/uexport.php:38 -msgid "" -"Export your accout info, contacts and all your items as json. Could be a " -"very big file, and could take a lot of time. Use this to make a full backup " -"of your account (photos are not exported)" -msgstr "Exportiere Deine Account Informationen, Kontakte und alle Einträge als JSON Datei. Dies könnte eine sehr große Datei werden und dementsprechend viel Zeit benötigen. Verwende dies um ein komplettes Backup Deines Accounts anzulegen (Fotos werden nicht exportiert)." +#: mod/follow.php:186 +msgid "Contact added" +msgstr "Kontakt hinzugefügt" -#: mod/uimport.php:68 -msgid "Move account" -msgstr "Account umziehen" +#: mod/friendica.php:68 +msgid "This is Friendica, version" +msgstr "Dies ist Friendica, Version" -#: mod/uimport.php:69 -msgid "You can import an account from another Friendica server." -msgstr "Du kannst einen Account von einem anderen Friendica Server importieren." +#: mod/friendica.php:69 +msgid "running at web location" +msgstr "die unter folgender Webadresse zu finden ist" -#: mod/uimport.php:70 +#: mod/friendica.php:73 msgid "" -"You need to export your account from the old server and upload it here. We " -"will recreate your old account here with all your contacts. We will try also" -" to inform your friends that you moved here." -msgstr "Du musst Deinen Account vom alten Server exportieren und hier hochladen. Wir stellen Deinen alten Account mit all Deinen Kontakten wieder her. Wir werden auch versuchen all Deine Kontakte darüber zu informieren, dass Du hierher umgezogen bist." +"Please visit Friendica.com to learn " +"more about the Friendica project." +msgstr "Bitte besuche Friendica.com, um mehr über das Friendica Projekt zu erfahren." -#: mod/uimport.php:71 -msgid "" -"This feature is experimental. We can't import contacts from the OStatus " -"network (GNU Social/Statusnet) or from Diaspora" -msgstr "Dieses Feature ist experimentell. Wir können keine Kontakte vom OStatus Netzwerk (GNU Social/Statusnet) oder von Diaspora importieren" +#: mod/friendica.php:77 +msgid "Bug reports and issues: please visit" +msgstr "Probleme oder Fehler gefunden? Bitte besuche" -#: mod/uimport.php:72 -msgid "Account file" -msgstr "Account Datei" +#: mod/friendica.php:77 +msgid "the bugtracker at github" +msgstr "den Bugtracker auf github" -#: mod/uimport.php:72 +#: mod/friendica.php:80 msgid "" -"To export your account, go to \"Settings->Export your personal data\" and " -"select \"Export account\"" -msgstr "Um Deinen Account zu exportieren, rufe \"Einstellungen -> Persönliche Daten exportieren\" auf und wähle \"Account exportieren\"" - -#: mod/update_community.php:19 mod/update_display.php:23 -#: mod/update_network.php:27 mod/update_notes.php:36 mod/update_profile.php:35 -msgid "[Embedded content - reload page to view]" -msgstr "[Eingebetteter Inhalt - Seite neu laden zum Betrachten]" +"Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - " +"dot com" +msgstr "Vorschläge, Lob, Spenden usw.: E-Mail an \"Info\" at Friendica - dot com" -#: mod/videos.php:124 -msgid "Do you really want to delete this video?" -msgstr "Möchtest Du dieses Video wirklich löschen?" +#: mod/friendica.php:94 +msgid "Installed plugins/addons/apps:" +msgstr "Installierte Plugins/Erweiterungen/Apps:" -#: mod/videos.php:129 -msgid "Delete Video" -msgstr "Video Löschen" +#: mod/friendica.php:108 +msgid "No installed plugins/addons/apps" +msgstr "Keine Plugins/Erweiterungen/Apps installiert" -#: mod/videos.php:208 -msgid "No videos selected" -msgstr "Keine Videos ausgewählt" +#: mod/friendica.php:113 +msgid "On this server the following remote servers are blocked." +msgstr "Auf diesem Server werden die folgenden entfernten Server blockiert." -#: mod/videos.php:309 mod/photos.php:1074 -msgid "Access to this item is restricted." -msgstr "Zugriff zu diesem Eintrag wurde eingeschränkt." +#: mod/friendica.php:114 mod/admin.php:280 mod/admin.php:298 +msgid "Reason for the block" +msgstr "Begründung für die Blockierung" -#: mod/videos.php:391 mod/photos.php:1867 -msgid "View Album" -msgstr "Album betrachten" +#: mod/group.php:29 +msgid "Group created." +msgstr "Gruppe erstellt." -#: mod/videos.php:400 -msgid "Recent Videos" -msgstr "Neueste Videos" +#: mod/group.php:35 +msgid "Could not create group." +msgstr "Konnte die Gruppe nicht erstellen." -#: mod/videos.php:402 -msgid "Upload New Videos" -msgstr "Neues Video hochladen" +#: mod/group.php:49 mod/group.php:154 +msgid "Group not found." +msgstr "Gruppe nicht gefunden." -#: mod/viewsrc.php:7 -msgid "Access denied." -msgstr "Zugriff verweigert." +#: mod/group.php:63 +msgid "Group name changed." +msgstr "Gruppenname geändert." -#: mod/wall_attach.php:17 mod/wall_attach.php:25 mod/wall_attach.php:76 -#: mod/wall_upload.php:20 mod/wall_upload.php:33 mod/wall_upload.php:86 -#: mod/wall_upload.php:122 mod/wall_upload.php:125 -msgid "Invalid request." -msgstr "Ungültige Anfrage" +#: mod/group.php:93 +msgid "Save Group" +msgstr "Gruppe speichern" -#: mod/wall_attach.php:94 -msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" -msgstr "Entschuldige, die Datei scheint größer zu sein als es die PHP Konfiguration erlaubt." +#: mod/group.php:98 +msgid "Create a group of contacts/friends." +msgstr "Eine Kontaktgruppe anlegen." -#: mod/wall_attach.php:94 -msgid "Or - did you try to upload an empty file?" -msgstr "Oder - hast Du versucht, eine leere Datei hochzuladen?" +#: mod/group.php:123 +msgid "Group removed." +msgstr "Gruppe entfernt." -#: mod/wall_attach.php:105 -#, php-format -msgid "File exceeds size limit of %s" -msgstr "Die Datei ist größer als das erlaubte Limit von %s" +#: mod/group.php:125 +msgid "Unable to remove group." +msgstr "Konnte die Gruppe nicht entfernen." -#: mod/wall_attach.php:158 mod/wall_attach.php:174 -msgid "File upload failed." -msgstr "Hochladen der Datei fehlgeschlagen." +#: mod/group.php:189 +msgid "Delete Group" +msgstr "Gruppe löschen" -#: mod/cal.php:271 mod/events.php:387 -msgid "View" -msgstr "Ansehen" +#: mod/group.php:195 +msgid "Group Editor" +msgstr "Gruppeneditor" -#: mod/cal.php:272 mod/events.php:389 -msgid "Previous" -msgstr "Vorherige" +#: mod/group.php:200 +msgid "Edit Group Name" +msgstr "Gruppen Name bearbeiten" -#: mod/cal.php:273 mod/events.php:390 mod/install.php:235 -msgid "Next" -msgstr "Nächste" +#: mod/group.php:210 +msgid "Members" +msgstr "Mitglieder" -#: mod/cal.php:282 mod/events.php:399 -msgid "list" -msgstr "Liste" +#: mod/group.php:226 +msgid "Remove Contact" +msgstr "Kontakt löschen" -#: mod/cal.php:292 -msgid "User not found" -msgstr "Nutzer nicht gefunden" +#: mod/group.php:250 +msgid "Add Contact" +msgstr "Kontakt hinzufügen" -#: mod/cal.php:308 -msgid "This calendar format is not supported" -msgstr "Dieses Kalenderformat wird nicht unterstützt." +#: mod/manage.php:151 +msgid "Manage Identities and/or Pages" +msgstr "Verwalte Identitäten und/oder Seiten" -#: mod/cal.php:310 -msgid "No exportable data found" -msgstr "Keine exportierbaren Daten gefunden" +#: mod/manage.php:152 +msgid "" +"Toggle between different identities or community/group pages which share " +"your account details or which you have been granted \"manage\" permissions" +msgstr "Zwischen verschiedenen Identitäten oder Gemeinschafts-/Gruppenseiten wechseln, die Deine Kontoinformationen teilen oder zu denen Du „Verwalten“-Befugnisse bekommen hast." -#: mod/cal.php:325 -msgid "calendar" -msgstr "Kalender" +#: mod/manage.php:153 +msgid "Select an identity to manage: " +msgstr "Wähle eine Identität zum Verwalten aus: " -#: mod/contacts.php:134 -#, php-format -msgid "%d contact edited." -msgid_plural "%d contacts edited." -msgstr[0] "%d Kontakt bearbeitet." -msgstr[1] "%d Kontakte bearbeitet." +#: mod/message.php:64 +msgid "Unable to locate contact information." +msgstr "Konnte die Kontaktinformationen nicht finden." -#: mod/contacts.php:169 mod/contacts.php:378 -msgid "Could not access contact record." -msgstr "Konnte nicht auf die Kontaktdaten zugreifen." +#: mod/message.php:204 +msgid "Do you really want to delete this message?" +msgstr "Möchtest Du wirklich diese Nachricht löschen?" -#: mod/contacts.php:183 -msgid "Could not locate selected profile." -msgstr "Konnte das ausgewählte Profil nicht finden." +#: mod/message.php:224 +msgid "Message deleted." +msgstr "Nachricht gelöscht." -#: mod/contacts.php:216 -msgid "Contact updated." -msgstr "Kontakt aktualisiert." +#: mod/message.php:255 +msgid "Conversation removed." +msgstr "Unterhaltung gelöscht." -#: mod/contacts.php:218 mod/dfrn_request.php:588 -msgid "Failed to update contact record." -msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen." +#: mod/message.php:364 +msgid "No messages." +msgstr "Keine Nachrichten." -#: mod/contacts.php:399 -msgid "Contact has been blocked" -msgstr "Kontakt wurde blockiert" +#: mod/message.php:403 +msgid "Message not available." +msgstr "Nachricht nicht verfügbar." -#: mod/contacts.php:399 -msgid "Contact has been unblocked" -msgstr "Kontakt wurde wieder freigegeben" +#: mod/message.php:477 +msgid "Delete message" +msgstr "Nachricht löschen" -#: mod/contacts.php:410 -msgid "Contact has been ignored" -msgstr "Kontakt wurde ignoriert" +#: mod/message.php:503 mod/message.php:591 +msgid "Delete conversation" +msgstr "Unterhaltung löschen" -#: mod/contacts.php:410 -msgid "Contact has been unignored" -msgstr "Kontakt wird nicht mehr ignoriert" +#: mod/message.php:505 +msgid "" +"No secure communications available. You may be able to " +"respond from the sender's profile page." +msgstr "Sichere Kommunikation ist nicht verfügbar. Eventuell kannst Du auf der Profilseite des Absenders antworten." -#: mod/contacts.php:422 -msgid "Contact has been archived" -msgstr "Kontakt wurde archiviert" +#: mod/message.php:509 +msgid "Send Reply" +msgstr "Antwort senden" -#: mod/contacts.php:422 -msgid "Contact has been unarchived" -msgstr "Kontakt wurde aus dem Archiv geholt" +#: mod/message.php:561 +#, php-format +msgid "Unknown sender - %s" +msgstr "'Unbekannter Absender - %s" -#: mod/contacts.php:447 -msgid "Drop contact" -msgstr "Kontakt löschen" +#: mod/message.php:563 +#, php-format +msgid "You and %s" +msgstr "Du und %s" -#: mod/contacts.php:450 mod/contacts.php:809 -msgid "Do you really want to delete this contact?" -msgstr "Möchtest Du wirklich diesen Kontakt löschen?" +#: mod/message.php:565 +#, php-format +msgid "%s and You" +msgstr "%s und Du" -#: mod/contacts.php:469 -msgid "Contact has been removed." -msgstr "Kontakt wurde entfernt." +#: mod/message.php:594 +msgid "D, d M Y - g:i A" +msgstr "D, d. M Y - g:i A" -#: mod/contacts.php:506 +#: mod/message.php:597 #, php-format -msgid "You are mutual friends with %s" -msgstr "Du hast mit %s eine beidseitige Freundschaft" +msgid "%d message" +msgid_plural "%d messages" +msgstr[0] "%d Nachricht" +msgstr[1] "%d Nachrichten" -#: mod/contacts.php:510 -#, php-format -msgid "You are sharing with %s" -msgstr "Du teilst mit %s" +#: mod/network.php:197 mod/search.php:25 +msgid "Remove term" +msgstr "Begriff entfernen" -#: mod/contacts.php:515 +#: mod/network.php:404 #, php-format -msgid "%s is sharing with you" -msgstr "%s teilt mit Dir" +msgid "" +"Warning: This group contains %s member from a network that doesn't allow non" +" public messages." +msgid_plural "" +"Warning: This group contains %s members from a network that doesn't allow " +"non public messages." +msgstr[0] "Warnung: Diese Gruppe beinhaltet %s Person aus einem Netzwerk das keine nicht öffentlichen Beiträge empfangen kann." +msgstr[1] "Warnung: Diese Gruppe beinhaltet %s Personen aus Netzwerken die keine nicht-öffentlichen Beiträge empfangen können." -#: mod/contacts.php:535 -msgid "Private communications are not available for this contact." -msgstr "Private Kommunikation ist für diesen Kontakt nicht verfügbar." +#: mod/network.php:407 +msgid "Messages in this group won't be send to these receivers." +msgstr "Beiträge in dieser Gruppe werden deshalb nicht an diese Personen zugestellt werden." -#: mod/contacts.php:538 mod/admin.php:899 -msgid "Never" -msgstr "Niemals" +#: mod/network.php:535 +msgid "Private messages to this person are at risk of public disclosure." +msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen." -#: mod/contacts.php:542 -msgid "(Update was successful)" -msgstr "(Aktualisierung war erfolgreich)" +#: mod/network.php:540 +msgid "Invalid contact." +msgstr "Ungültiger Kontakt." + +#: mod/network.php:813 +msgid "Commented Order" +msgstr "Neueste Kommentare" + +#: mod/network.php:816 +msgid "Sort by Comment Date" +msgstr "Nach Kommentardatum sortieren" + +#: mod/network.php:821 +msgid "Posted Order" +msgstr "Neueste Beiträge" + +#: mod/network.php:824 +msgid "Sort by Post Date" +msgstr "Nach Beitragsdatum sortieren" + +#: mod/network.php:835 +msgid "Posts that mention or involve you" +msgstr "Beiträge, in denen es um Dich geht" + +#: mod/network.php:843 +msgid "New" +msgstr "Neue" + +#: mod/network.php:846 +msgid "Activity Stream - by date" +msgstr "Aktivitäten-Stream - nach Datum" + +#: mod/network.php:854 +msgid "Shared Links" +msgstr "Geteilte Links" -#: mod/contacts.php:542 -msgid "(Update was not successful)" -msgstr "(Aktualisierung war nicht erfolgreich)" +#: mod/network.php:857 +msgid "Interesting Links" +msgstr "Interessante Links" -#: mod/contacts.php:544 mod/contacts.php:972 -msgid "Suggest friends" -msgstr "Kontakte vorschlagen" +#: mod/network.php:865 +msgid "Starred" +msgstr "Markierte" -#: mod/contacts.php:548 -#, php-format -msgid "Network type: %s" -msgstr "Netzwerktyp: %s" +#: mod/network.php:868 +msgid "Favourite Posts" +msgstr "Favorisierte Beiträge" -#: mod/contacts.php:561 -msgid "Communications lost with this contact!" -msgstr "Verbindungen mit diesem Kontakt verloren!" +#: mod/openid.php:24 +msgid "OpenID protocol error. No ID returned." +msgstr "OpenID Protokollfehler. Keine ID zurückgegeben." -#: mod/contacts.php:564 -msgid "Fetch further information for feeds" -msgstr "Weitere Informationen zu Feeds holen" +#: mod/openid.php:60 +msgid "" +"Account not found and OpenID registration is not permitted on this site." +msgstr "Nutzerkonto wurde nicht gefunden und OpenID-Registrierung ist auf diesem Server nicht gestattet." -#: mod/contacts.php:565 mod/admin.php:908 -msgid "Disabled" -msgstr "Deaktiviert" +#: mod/photos.php:94 mod/photos.php:1900 +msgid "Recent Photos" +msgstr "Neueste Fotos" -#: mod/contacts.php:565 -msgid "Fetch information" -msgstr "Beziehe Information" +#: mod/photos.php:97 mod/photos.php:1328 mod/photos.php:1902 +msgid "Upload New Photos" +msgstr "Neue Fotos hochladen" -#: mod/contacts.php:565 -msgid "Fetch information and keywords" -msgstr "Beziehe Information und Schlüsselworte" +#: mod/photos.php:112 mod/settings.php:36 +msgid "everybody" +msgstr "jeder" -#: mod/contacts.php:583 -msgid "Contact" -msgstr "Kontakt" +#: mod/photos.php:176 +msgid "Contact information unavailable" +msgstr "Kontaktinformationen nicht verfügbar" -#: mod/contacts.php:586 -msgid "Profile Visibility" -msgstr "Profil-Sichtbarkeit" +#: mod/photos.php:197 +msgid "Album not found." +msgstr "Album nicht gefunden." -#: mod/contacts.php:587 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." -msgstr "Bitte wähle eines Deiner Profile das angezeigt werden soll, wenn %s Dein Profil aufruft." +#: mod/photos.php:230 mod/photos.php:242 mod/photos.php:1272 +msgid "Delete Album" +msgstr "Album löschen" -#: mod/contacts.php:588 -msgid "Contact Information / Notes" -msgstr "Kontakt Informationen / Notizen" +#: mod/photos.php:240 +msgid "Do you really want to delete this photo album and all its photos?" +msgstr "Möchtest Du wirklich dieses Foto-Album und all seine Foto löschen?" -#: mod/contacts.php:589 -msgid "Edit contact notes" -msgstr "Notizen zum Kontakt bearbeiten" +#: mod/photos.php:323 mod/photos.php:334 mod/photos.php:1598 +msgid "Delete Photo" +msgstr "Foto löschen" -#: mod/contacts.php:595 -msgid "Block/Unblock contact" -msgstr "Kontakt blockieren/freischalten" +#: mod/photos.php:332 +msgid "Do you really want to delete this photo?" +msgstr "Möchtest Du wirklich dieses Foto löschen?" -#: mod/contacts.php:596 -msgid "Ignore contact" -msgstr "Ignoriere den Kontakt" +#: mod/photos.php:713 +#, php-format +msgid "%1$s was tagged in %2$s by %3$s" +msgstr "%1$s wurde von %3$s in %2$s getaggt" -#: mod/contacts.php:597 -msgid "Repair URL settings" -msgstr "URL Einstellungen reparieren" +#: mod/photos.php:713 +msgid "a photo" +msgstr "einem Foto" -#: mod/contacts.php:598 -msgid "View conversations" -msgstr "Unterhaltungen anzeigen" +#: mod/photos.php:821 +msgid "Image file is empty." +msgstr "Bilddatei ist leer." -#: mod/contacts.php:604 -msgid "Last update:" -msgstr "Letzte Aktualisierung: " +#: mod/photos.php:988 +msgid "No photos selected" +msgstr "Keine Bilder ausgewählt" -#: mod/contacts.php:606 -msgid "Update public posts" -msgstr "Öffentliche Beiträge aktualisieren" +#: mod/photos.php:1091 mod/videos.php:309 +msgid "Access to this item is restricted." +msgstr "Zugriff zu diesem Eintrag wurde eingeschränkt." -#: mod/contacts.php:608 mod/contacts.php:982 -msgid "Update now" -msgstr "Jetzt aktualisieren" +#: mod/photos.php:1151 +#, php-format +msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." +msgstr "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers." -#: mod/contacts.php:613 mod/contacts.php:813 mod/contacts.php:991 -#: mod/admin.php:1437 -msgid "Unblock" -msgstr "Entsperren" +#: mod/photos.php:1188 +msgid "Upload Photos" +msgstr "Bilder hochladen" -#: mod/contacts.php:613 mod/contacts.php:813 mod/contacts.php:991 -#: mod/admin.php:1436 -msgid "Block" -msgstr "Sperren" +#: mod/photos.php:1192 mod/photos.php:1267 +msgid "New album name: " +msgstr "Name des neuen Albums: " -#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 -msgid "Unignore" -msgstr "Ignorieren aufheben" +#: mod/photos.php:1193 +msgid "or existing album name: " +msgstr "oder existierender Albumname: " -#: mod/contacts.php:614 mod/contacts.php:814 mod/contacts.php:999 -#: mod/notifications.php:60 mod/notifications.php:179 -#: mod/notifications.php:257 -msgid "Ignore" -msgstr "Ignorieren" +#: mod/photos.php:1194 +msgid "Do not show a status post for this upload" +msgstr "Keine Status-Mitteilung für diesen Beitrag anzeigen" -#: mod/contacts.php:618 -msgid "Currently blocked" -msgstr "Derzeit geblockt" +#: mod/photos.php:1205 mod/photos.php:1602 mod/settings.php:1307 +msgid "Show to Groups" +msgstr "Zeige den Gruppen" -#: mod/contacts.php:619 -msgid "Currently ignored" -msgstr "Derzeit ignoriert" +#: mod/photos.php:1206 mod/photos.php:1603 mod/settings.php:1308 +msgid "Show to Contacts" +msgstr "Zeige den Kontakten" -#: mod/contacts.php:620 -msgid "Currently archived" -msgstr "Momentan archiviert" +#: mod/photos.php:1207 +msgid "Private Photo" +msgstr "Privates Foto" -#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:245 -msgid "Hide this contact from others" -msgstr "Verbirg diesen Kontakt vor Anderen" +#: mod/photos.php:1208 +msgid "Public Photo" +msgstr "Öffentliches Foto" -#: mod/contacts.php:621 -msgid "" -"Replies/likes to your public posts may still be visible" -msgstr "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein" +#: mod/photos.php:1278 +msgid "Edit Album" +msgstr "Album bearbeiten" -#: mod/contacts.php:622 -msgid "Notification for new posts" -msgstr "Benachrichtigung bei neuen Beiträgen" +#: mod/photos.php:1283 +msgid "Show Newest First" +msgstr "Zeige neueste zuerst" -#: mod/contacts.php:622 -msgid "Send a notification of every new post of this contact" -msgstr "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt." +#: mod/photos.php:1285 +msgid "Show Oldest First" +msgstr "Zeige älteste zuerst" -#: mod/contacts.php:625 -msgid "Blacklisted keywords" -msgstr "Blacklistete Schlüsselworte " +#: mod/photos.php:1314 mod/photos.php:1885 +msgid "View Photo" +msgstr "Foto betrachten" -#: mod/contacts.php:625 -msgid "" -"Comma separated list of keywords that should not be converted to hashtags, " -"when \"Fetch information and keywords\" is selected" -msgstr "Komma-Separierte Liste mit Schlüsselworten, die nicht in Hashtags konvertiert werden, wenn \"Beziehe Information und Schlüsselworte\" aktiviert wurde" +#: mod/photos.php:1359 +msgid "Permission denied. Access to this item may be restricted." +msgstr "Zugriff verweigert. Zugriff zu diesem Eintrag könnte eingeschränkt sein." -#: mod/contacts.php:643 -msgid "Actions" -msgstr "Aktionen" +#: mod/photos.php:1361 +msgid "Photo not available" +msgstr "Foto nicht verfügbar" -#: mod/contacts.php:646 -msgid "Contact Settings" -msgstr "Kontakteinstellungen" +#: mod/photos.php:1422 +msgid "View photo" +msgstr "Fotos ansehen" -#: mod/contacts.php:692 -msgid "Suggestions" -msgstr "Kontaktvorschläge" +#: mod/photos.php:1422 +msgid "Edit photo" +msgstr "Foto bearbeiten" -#: mod/contacts.php:695 -msgid "Suggest potential friends" -msgstr "Kontakte vorschlagen" +#: mod/photos.php:1423 +msgid "Use as profile photo" +msgstr "Als Profilbild verwenden" -#: mod/contacts.php:703 -msgid "Show all contacts" -msgstr "Alle Kontakte anzeigen" +#: mod/photos.php:1448 +msgid "View Full Size" +msgstr "Betrachte Originalgröße" -#: mod/contacts.php:708 -msgid "Unblocked" -msgstr "Ungeblockt" +#: mod/photos.php:1538 +msgid "Tags: " +msgstr "Tags: " -#: mod/contacts.php:711 -msgid "Only show unblocked contacts" -msgstr "Nur nicht-blockierte Kontakte anzeigen" +#: mod/photos.php:1541 +msgid "[Remove any tag]" +msgstr "[Tag entfernen]" -#: mod/contacts.php:717 -msgid "Blocked" -msgstr "Geblockt" +#: mod/photos.php:1584 +msgid "New album name" +msgstr "Name des neuen Albums" -#: mod/contacts.php:720 -msgid "Only show blocked contacts" -msgstr "Nur blockierte Kontakte anzeigen" +#: mod/photos.php:1585 +msgid "Caption" +msgstr "Bildunterschrift" -#: mod/contacts.php:726 -msgid "Ignored" -msgstr "Ignoriert" +#: mod/photos.php:1586 +msgid "Add a Tag" +msgstr "Tag hinzufügen" -#: mod/contacts.php:729 -msgid "Only show ignored contacts" -msgstr "Nur ignorierte Kontakte anzeigen" +#: mod/photos.php:1586 +msgid "" +"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" +msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: mod/contacts.php:735 -msgid "Archived" -msgstr "Archiviert" +#: mod/photos.php:1587 +msgid "Do not rotate" +msgstr "Nicht rotieren" -#: mod/contacts.php:738 -msgid "Only show archived contacts" -msgstr "Nur archivierte Kontakte anzeigen" +#: mod/photos.php:1588 +msgid "Rotate CW (right)" +msgstr "Drehen US (rechts)" -#: mod/contacts.php:744 -msgid "Hidden" -msgstr "Verborgen" +#: mod/photos.php:1589 +msgid "Rotate CCW (left)" +msgstr "Drehen EUS (links)" -#: mod/contacts.php:747 -msgid "Only show hidden contacts" -msgstr "Nur verborgene Kontakte anzeigen" +#: mod/photos.php:1604 +msgid "Private photo" +msgstr "Privates Foto" + +#: mod/photos.php:1605 +msgid "Public photo" +msgstr "Öffentliches Foto" -#: mod/contacts.php:804 -msgid "Search your contacts" -msgstr "Suche in deinen Kontakten" +#: mod/photos.php:1814 +msgid "Map" +msgstr "Karte" -#: mod/contacts.php:805 mod/network.php:145 mod/search.php:232 -#, php-format -msgid "Results for: %s" -msgstr "Ergebnisse für: %s" +#: mod/photos.php:1891 mod/videos.php:393 +msgid "View Album" +msgstr "Album betrachten" -#: mod/contacts.php:815 mod/contacts.php:1007 -msgid "Archive" -msgstr "Archivieren" +#: mod/probe.php:10 mod/webfinger.php:9 +msgid "Only logged in users are permitted to perform a probing." +msgstr "Nur eingeloggten Benutzern ist das Untersuchen von Adressen gestattet." -#: mod/contacts.php:815 mod/contacts.php:1007 -msgid "Unarchive" -msgstr "Aus Archiv zurückholen" +#: mod/profile.php:175 +msgid "Tips for New Members" +msgstr "Tipps für neue Nutzer" -#: mod/contacts.php:818 -msgid "Batch Actions" -msgstr "Stapelverarbeitung" +#: mod/profiles.php:38 +msgid "Profile deleted." +msgstr "Profil gelöscht." -#: mod/contacts.php:864 -msgid "View all contacts" -msgstr "Alle Kontakte anzeigen" +#: mod/profiles.php:54 mod/profiles.php:90 +msgid "Profile-" +msgstr "Profil-" -#: mod/contacts.php:874 -msgid "View all common friends" -msgstr "Alle Kontakte anzeigen" +#: mod/profiles.php:73 mod/profiles.php:118 +msgid "New profile created." +msgstr "Neues Profil angelegt." -#: mod/contacts.php:881 -msgid "Advanced Contact Settings" -msgstr "Fortgeschrittene Kontakteinstellungen" +#: mod/profiles.php:96 +msgid "Profile unavailable to clone." +msgstr "Profil nicht zum Duplizieren verfügbar." -#: mod/contacts.php:915 -msgid "Mutual Friendship" -msgstr "Beidseitige Freundschaft" +#: mod/profiles.php:192 +msgid "Profile Name is required." +msgstr "Profilname ist erforderlich." -#: mod/contacts.php:919 -msgid "is a fan of yours" -msgstr "ist ein Fan von dir" +#: mod/profiles.php:332 +msgid "Marital Status" +msgstr "Familienstand" -#: mod/contacts.php:923 -msgid "you are a fan of" -msgstr "Du bist Fan von" +#: mod/profiles.php:336 +msgid "Romantic Partner" +msgstr "Romanze" -#: mod/contacts.php:993 -msgid "Toggle Blocked status" -msgstr "Geblockt-Status ein-/ausschalten" +#: mod/profiles.php:348 +msgid "Work/Employment" +msgstr "Arbeit / Beschäftigung" -#: mod/contacts.php:1001 -msgid "Toggle Ignored status" -msgstr "Ignoriert-Status ein-/ausschalten" +#: mod/profiles.php:351 +msgid "Religion" +msgstr "Religion" -#: mod/contacts.php:1009 -msgid "Toggle Archive status" -msgstr "Archiviert-Status ein-/ausschalten" +#: mod/profiles.php:355 +msgid "Political Views" +msgstr "Politische Ansichten" -#: mod/contacts.php:1017 -msgid "Delete contact" -msgstr "Lösche den Kontakt" +#: mod/profiles.php:359 +msgid "Gender" +msgstr "Geschlecht" -#: mod/dfrn_confirm.php:70 mod/profiles.php:19 mod/profiles.php:134 -#: mod/profiles.php:180 mod/profiles.php:619 -msgid "Profile not found." -msgstr "Profil nicht gefunden." +#: mod/profiles.php:363 +msgid "Sexual Preference" +msgstr "Sexuelle Vorlieben" -#: mod/dfrn_confirm.php:127 -msgid "" -"This may occasionally happen if contact was requested by both persons and it" -" has already been approved." -msgstr "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde." +#: mod/profiles.php:367 +msgid "XMPP" +msgstr "XMPP" -#: mod/dfrn_confirm.php:244 -msgid "Response from remote site was not understood." -msgstr "Antwort der Gegenstelle unverständlich." +#: mod/profiles.php:371 +msgid "Homepage" +msgstr "Webseite" -#: mod/dfrn_confirm.php:253 mod/dfrn_confirm.php:258 -msgid "Unexpected response from remote site: " -msgstr "Unerwartete Antwort der Gegenstelle: " +#: mod/profiles.php:375 mod/profiles.php:695 +msgid "Interests" +msgstr "Interessen" -#: mod/dfrn_confirm.php:267 -msgid "Confirmation completed successfully." -msgstr "Bestätigung erfolgreich abgeschlossen." +#: mod/profiles.php:379 +msgid "Address" +msgstr "Adresse" -#: mod/dfrn_confirm.php:269 mod/dfrn_confirm.php:283 mod/dfrn_confirm.php:290 -msgid "Remote site reported: " -msgstr "Gegenstelle meldet: " +#: mod/profiles.php:386 mod/profiles.php:691 +msgid "Location" +msgstr "Wohnort" -#: mod/dfrn_confirm.php:281 -msgid "Temporary failure. Please wait and try again." -msgstr "Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal." +#: mod/profiles.php:471 +msgid "Profile updated." +msgstr "Profil aktualisiert." -#: mod/dfrn_confirm.php:288 -msgid "Introduction failed or was revoked." -msgstr "Kontaktanfrage schlug fehl oder wurde zurückgezogen." +#: mod/profiles.php:564 +msgid " and " +msgstr " und " -#: mod/dfrn_confirm.php:418 -msgid "Unable to set contact photo." -msgstr "Konnte das Bild des Kontakts nicht speichern." +#: mod/profiles.php:573 +msgid "public profile" +msgstr "öffentliches Profil" -#: mod/dfrn_confirm.php:559 +#: mod/profiles.php:576 #, php-format -msgid "No user record found for '%s' " -msgstr "Für '%s' wurde kein Nutzer gefunden" +msgid "%1$s changed %2$s to “%3$s”" +msgstr "%1$s hat %2$s geändert auf “%3$s”" -#: mod/dfrn_confirm.php:569 -msgid "Our site encryption key is apparently messed up." -msgstr "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend nicht in Ordnung." +#: mod/profiles.php:577 +#, php-format +msgid " - Visit %1$s's %2$s" +msgstr " – %1$ss %2$s besuchen" -#: mod/dfrn_confirm.php:580 -msgid "Empty site URL was provided or URL could not be decrypted by us." -msgstr "Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden." +#: mod/profiles.php:579 +#, php-format +msgid "%1$s has an updated %2$s, changing %3$s." +msgstr "%1$s hat folgendes aktualisiert %2$s, verändert wurde %3$s." -#: mod/dfrn_confirm.php:601 -msgid "Contact record was not found for you on our site." -msgstr "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden." +#: mod/profiles.php:637 +msgid "Hide contacts and friends:" +msgstr "Kontakte und Freunde verbergen" -#: mod/dfrn_confirm.php:615 -#, php-format -msgid "Site public key not available in contact record for URL %s." -msgstr "Die Kontaktdaten für URL %s enthalten keinen Public Key für den Server." +#: mod/profiles.php:642 +msgid "Hide your contact/friend list from viewers of this profile?" +msgstr "Liste der Kontakte vor Betrachtern dieses Profils verbergen?" -#: mod/dfrn_confirm.php:635 -msgid "" -"The ID provided by your system is a duplicate on our system. It should work " -"if you try again." -msgstr "Die ID, die uns Dein System angeboten hat, ist hier bereits vergeben. Bitte versuche es noch einmal." +#: mod/profiles.php:667 +msgid "Show more profile fields:" +msgstr "Zeige mehr Profil-Felder:" -#: mod/dfrn_confirm.php:646 -msgid "Unable to set your contact credentials on our system." -msgstr "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden." +#: mod/profiles.php:679 +msgid "Profile Actions" +msgstr "Profilaktionen" -#: mod/dfrn_confirm.php:708 -msgid "Unable to update your contact profile details on our system" -msgstr "Die Updates für Dein Profil konnten nicht gespeichert werden" +#: mod/profiles.php:680 +msgid "Edit Profile Details" +msgstr "Profil bearbeiten" -#: mod/dfrn_confirm.php:780 -#, php-format -msgid "%1$s has joined %2$s" -msgstr "%1$s ist %2$s beigetreten" +#: mod/profiles.php:682 +msgid "Change Profile Photo" +msgstr "Profilbild ändern" -#: mod/editpost.php:17 mod/editpost.php:27 -msgid "Item not found" -msgstr "Beitrag nicht gefunden" +#: mod/profiles.php:683 +msgid "View this profile" +msgstr "Dieses Profil anzeigen" -#: mod/editpost.php:32 -msgid "Edit post" -msgstr "Beitrag bearbeiten" +#: mod/profiles.php:685 +msgid "Create a new profile using these settings" +msgstr "Neues Profil anlegen und diese Einstellungen verwenden" -#: mod/events.php:100 mod/events.php:102 -msgid "Event can not end before it has started." -msgstr "Die Veranstaltung kann nicht enden bevor sie beginnt." +#: mod/profiles.php:686 +msgid "Clone this profile" +msgstr "Dieses Profil duplizieren" -#: mod/events.php:109 mod/events.php:111 -msgid "Event title and start time are required." -msgstr "Der Veranstaltungstitel und die Anfangszeit müssen angegeben werden." +#: mod/profiles.php:687 +msgid "Delete this profile" +msgstr "Dieses Profil löschen" -#: mod/events.php:388 -msgid "Create New Event" -msgstr "Neue Veranstaltung erstellen" +#: mod/profiles.php:689 +msgid "Basic information" +msgstr "Grundinformationen" -#: mod/events.php:489 -msgid "Event details" -msgstr "Veranstaltungsdetails" +#: mod/profiles.php:690 +msgid "Profile picture" +msgstr "Profilbild" -#: mod/events.php:490 -msgid "Starting date and Title are required." -msgstr "Anfangszeitpunkt und Titel werden benötigt" +#: mod/profiles.php:692 +msgid "Preferences" +msgstr "Vorlieben" -#: mod/events.php:491 mod/events.php:492 -msgid "Event Starts:" -msgstr "Veranstaltungsbeginn:" +#: mod/profiles.php:693 +msgid "Status information" +msgstr "Status Informationen" -#: mod/events.php:491 mod/events.php:503 mod/profiles.php:708 -msgid "Required" -msgstr "Benötigt" +#: mod/profiles.php:694 +msgid "Additional information" +msgstr "Zusätzliche Informationen" -#: mod/events.php:493 mod/events.php:509 -msgid "Finish date/time is not known or not relevant" -msgstr "Enddatum/-zeit ist nicht bekannt oder nicht relevant" +#: mod/profiles.php:697 +msgid "Relation" +msgstr "Beziehung" -#: mod/events.php:495 mod/events.php:496 -msgid "Event Finishes:" -msgstr "Veranstaltungsende:" +#: mod/profiles.php:701 +msgid "Your Gender:" +msgstr "Dein Geschlecht:" -#: mod/events.php:497 mod/events.php:510 -msgid "Adjust for viewer timezone" -msgstr "An Zeitzone des Betrachters anpassen" +#: mod/profiles.php:702 +msgid " Marital Status:" +msgstr " Beziehungsstatus:" -#: mod/events.php:499 -msgid "Description:" -msgstr "Beschreibung" +#: mod/profiles.php:704 +msgid "Example: fishing photography software" +msgstr "Beispiel: Fischen Fotografie Software" -#: mod/events.php:503 mod/events.php:505 -msgid "Title:" -msgstr "Titel:" +#: mod/profiles.php:709 +msgid "Profile Name:" +msgstr "Profilname:" -#: mod/events.php:506 mod/events.php:507 -msgid "Share this event" -msgstr "Veranstaltung teilen" +#: mod/profiles.php:711 +msgid "" +"This is your public profile.
It may " +"be visible to anybody using the internet." +msgstr "Dies ist Dein öffentliches Profil.
Es könnte für jeden Nutzer des Internets sichtbar sein." -#: mod/fbrowser.php:132 -msgid "Files" -msgstr "Dateien" +#: mod/profiles.php:712 +msgid "Your Full Name:" +msgstr "Dein kompletter Name:" -#: mod/friendica.php:72 -msgid "This is Friendica, version" -msgstr "Dies ist Friendica, Version" +#: mod/profiles.php:713 +msgid "Title/Description:" +msgstr "Titel/Beschreibung:" -#: mod/friendica.php:73 -msgid "running at web location" -msgstr "die unter folgender Webadresse zu finden ist" +#: mod/profiles.php:716 +msgid "Street Address:" +msgstr "Adresse:" -#: mod/friendica.php:75 -msgid "" -"Please visit Friendica.com to learn " -"more about the Friendica project." -msgstr "Bitte besuche Friendica.com, um mehr über das Friendica Projekt zu erfahren." +#: mod/profiles.php:717 +msgid "Locality/City:" +msgstr "Wohnort:" -#: mod/friendica.php:77 -msgid "Bug reports and issues: please visit" -msgstr "Probleme oder Fehler gefunden? Bitte besuche" +#: mod/profiles.php:718 +msgid "Region/State:" +msgstr "Region/Bundesstaat:" -#: mod/friendica.php:77 -msgid "the bugtracker at github" -msgstr "den Bugtracker auf github" +#: mod/profiles.php:719 +msgid "Postal/Zip Code:" +msgstr "Postleitzahl:" -#: mod/friendica.php:78 -msgid "" -"Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - " -"dot com" -msgstr "Vorschläge, Lob, Spenden usw.: E-Mail an \"Info\" at Friendica - dot com" +#: mod/profiles.php:720 +msgid "Country:" +msgstr "Land:" -#: mod/friendica.php:92 -msgid "Installed plugins/addons/apps:" -msgstr "Installierte Plugins/Erweiterungen/Apps:" +#: mod/profiles.php:724 +msgid "Who: (if applicable)" +msgstr "Wer: (falls anwendbar)" -#: mod/friendica.php:105 -msgid "No installed plugins/addons/apps" -msgstr "Keine Plugins/Erweiterungen/Apps installiert" +#: mod/profiles.php:724 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com" -#: mod/item.php:118 -msgid "Unable to locate original post." -msgstr "Konnte den Originalbeitrag nicht finden." +#: mod/profiles.php:725 +msgid "Since [date]:" +msgstr "Seit [Datum]:" -#: mod/item.php:336 -msgid "Empty post discarded." -msgstr "Leerer Beitrag wurde verworfen." +#: mod/profiles.php:727 +msgid "Tell us about yourself..." +msgstr "Erzähle uns ein bisschen von Dir …" -#: mod/item.php:889 -msgid "System error. Post not saved." -msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden." +#: mod/profiles.php:728 +msgid "XMPP (Jabber) address:" +msgstr "XMPP (Jabber) Adresse" -#: mod/item.php:979 -#, php-format +#: mod/profiles.php:728 msgid "" -"This message was sent to you by %s, a member of the Friendica social " -"network." -msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica." +"The XMPP address will be propagated to your contacts so that they can follow" +" you." +msgstr "Die XMPP Adresse wird an deine Kontakte verteilt werden, so dass sie auch über XMPP mit dir in Kontakt treten können." -#: mod/item.php:981 -#, php-format -msgid "You may visit them online at %s" -msgstr "Du kannst sie online unter %s besuchen" +#: mod/profiles.php:729 +msgid "Homepage URL:" +msgstr "Adresse der Homepage:" -#: mod/item.php:982 -msgid "" -"Please contact the sender by replying to this post if you do not wish to " -"receive these messages." -msgstr "Falls Du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem Du auf diese Nachricht antwortest." +#: mod/profiles.php:732 +msgid "Religious Views:" +msgstr "Religiöse Ansichten:" -#: mod/item.php:986 -#, php-format -msgid "%s posted an update." -msgstr "%s hat ein Update veröffentlicht." +#: mod/profiles.php:733 +msgid "Public Keywords:" +msgstr "Öffentliche Schlüsselwörter:" -#: mod/message.php:60 mod/wallmessage.php:50 -msgid "No recipient selected." -msgstr "Kein Empfänger gewählt." +#: mod/profiles.php:733 +msgid "(Used for suggesting potential friends, can be seen by others)" +msgstr "(Wird verwendet, um potentielle Kontakte zu finden, kann von Kontakten eingesehen werden)" -#: mod/message.php:64 -msgid "Unable to locate contact information." -msgstr "Konnte die Kontaktinformationen nicht finden." +#: mod/profiles.php:734 +msgid "Private Keywords:" +msgstr "Private Schlüsselwörter:" -#: mod/message.php:67 mod/wallmessage.php:56 -msgid "Message could not be sent." -msgstr "Nachricht konnte nicht gesendet werden." +#: mod/profiles.php:734 +msgid "(Used for searching profiles, never shown to others)" +msgstr "(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)" -#: mod/message.php:70 mod/wallmessage.php:59 -msgid "Message collection failure." -msgstr "Konnte Nachrichten nicht abrufen." +#: mod/profiles.php:737 +msgid "Musical interests" +msgstr "Musikalische Interessen" -#: mod/message.php:73 mod/wallmessage.php:62 -msgid "Message sent." -msgstr "Nachricht gesendet." +#: mod/profiles.php:738 +msgid "Books, literature" +msgstr "Bücher, Literatur" -#: mod/message.php:204 -msgid "Do you really want to delete this message?" -msgstr "Möchtest Du wirklich diese Nachricht löschen?" +#: mod/profiles.php:739 +msgid "Television" +msgstr "Fernsehen" -#: mod/message.php:224 -msgid "Message deleted." -msgstr "Nachricht gelöscht." +#: mod/profiles.php:740 +msgid "Film/dance/culture/entertainment" +msgstr "Filme/Tänze/Kultur/Unterhaltung" -#: mod/message.php:255 -msgid "Conversation removed." -msgstr "Unterhaltung gelöscht." +#: mod/profiles.php:741 +msgid "Hobbies/Interests" +msgstr "Hobbies/Interessen" -#: mod/message.php:322 mod/wallmessage.php:126 -msgid "Send Private Message" -msgstr "Private Nachricht senden" +#: mod/profiles.php:742 +msgid "Love/romance" +msgstr "Liebe/Romantik" -#: mod/message.php:323 mod/message.php:510 mod/wallmessage.php:128 -msgid "To:" -msgstr "An:" +#: mod/profiles.php:743 +msgid "Work/employment" +msgstr "Arbeit/Anstellung" -#: mod/message.php:328 mod/message.php:512 mod/wallmessage.php:129 -msgid "Subject:" -msgstr "Betreff:" +#: mod/profiles.php:744 +msgid "School/education" +msgstr "Schule/Ausbildung" -#: mod/message.php:364 -msgid "No messages." -msgstr "Keine Nachrichten." +#: mod/profiles.php:745 +msgid "Contact information and Social Networks" +msgstr "Kontaktinformationen und Soziale Netzwerke" -#: mod/message.php:403 -msgid "Message not available." -msgstr "Nachricht nicht verfügbar." +#: mod/profiles.php:786 +msgid "Edit/Manage Profiles" +msgstr "Bearbeite/Verwalte Profile" -#: mod/message.php:477 -msgid "Delete message" -msgstr "Nachricht löschen" +#: mod/register.php:93 +msgid "" +"Registration successful. Please check your email for further instructions." +msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet." -#: mod/message.php:503 mod/message.php:583 -msgid "Delete conversation" -msgstr "Unterhaltung löschen" +#: mod/register.php:98 +#, php-format +msgid "" +"Failed to send email message. Here your accout details:
login: %s
" +"password: %s

You can change your password after login." +msgstr "Versenden der E-Mail fehlgeschlagen. Hier sind Deine Account Details:\n\nLogin: %s\nPasswort: %s\n\nDu kannst das Passwort nach dem Anmelden ändern." -#: mod/message.php:505 +#: mod/register.php:105 +msgid "Registration successful." +msgstr "Registrierung erfolgreich." + +#: mod/register.php:111 +msgid "Your registration can not be processed." +msgstr "Deine Registrierung konnte nicht verarbeitet werden." + +#: mod/register.php:160 +msgid "Your registration is pending approval by the site owner." +msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden." + +#: mod/register.php:226 msgid "" -"No secure communications available. You may be able to " -"respond from the sender's profile page." -msgstr "Sichere Kommunikation ist nicht verfügbar. Eventuell kannst Du auf der Profilseite des Absenders antworten." +"You may (optionally) fill in this form via OpenID by supplying your OpenID " +"and clicking 'Register'." +msgstr "Du kannst dieses Formular auch (optional) mit Deiner OpenID ausfüllen, indem Du Deine OpenID angibst und 'Registrieren' klickst." -#: mod/message.php:509 -msgid "Send Reply" -msgstr "Antwort senden" +#: mod/register.php:227 +msgid "" +"If you are not familiar with OpenID, please leave that field blank and fill " +"in the rest of the items." +msgstr "Wenn Du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus." -#: mod/message.php:553 -#, php-format -msgid "Unknown sender - %s" -msgstr "'Unbekannter Absender - %s" +#: mod/register.php:228 +msgid "Your OpenID (optional): " +msgstr "Deine OpenID (optional): " -#: mod/message.php:555 -#, php-format -msgid "You and %s" -msgstr "Du und %s" +#: mod/register.php:242 +msgid "Include your profile in member directory?" +msgstr "Soll Dein Profil im Nutzerverzeichnis angezeigt werden?" -#: mod/message.php:557 -#, php-format -msgid "%s and You" -msgstr "%s und Du" +#: mod/register.php:267 +msgid "Note for the admin" +msgstr "Hinweis für den Admin" -#: mod/message.php:586 -msgid "D, d M Y - g:i A" -msgstr "D, d. M Y - g:i A" +#: mod/register.php:267 +msgid "Leave a message for the admin, why you want to join this node" +msgstr "Hinterlasse eine Nachricht an den Admin, warum du einen Account auf dieser Instanz haben möchtest." -#: mod/message.php:589 -#, php-format -msgid "%d message" -msgid_plural "%d messages" -msgstr[0] "%d Nachricht" -msgstr[1] "%d Nachrichten" +#: mod/register.php:268 +msgid "Membership on this site is by invitation only." +msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich." -#: mod/p.php:9 -msgid "Not Extended" -msgstr "Nicht erweitert." +#: mod/register.php:269 +msgid "Your invitation ID: " +msgstr "ID Deiner Einladung: " -#: mod/ping.php:270 -msgid "{0} wants to be your friend" -msgstr "{0} möchte mit Dir in Kontakt treten" +#: mod/register.php:272 mod/admin.php:1056 +msgid "Registration" +msgstr "Registrierung" -#: mod/ping.php:285 -msgid "{0} sent you a message" -msgstr "{0} schickte Dir eine Nachricht" +#: mod/register.php:280 +msgid "Your Full Name (e.g. Joe Smith, real or real-looking): " +msgstr "Dein vollständiger Name (z.B. Hans Mustermann, echt oder echt erscheinend):" -#: mod/ping.php:300 -msgid "{0} requested registration" -msgstr "{0} möchte sich registrieren" +#: mod/register.php:281 +msgid "Your Email Address: " +msgstr "Deine E-Mail-Adresse: " -#: mod/wallmessage.php:42 mod/wallmessage.php:106 -#, php-format -msgid "Number of daily wall messages for %s exceeded. Message failed." -msgstr "Maximale Anzahl der täglichen Pinnwand Nachrichten für %s ist überschritten. Zustellung fehlgeschlagen." +#: mod/register.php:283 mod/settings.php:1278 +msgid "New Password:" +msgstr "Neues Passwort:" -#: mod/wallmessage.php:53 -msgid "Unable to check your home location." -msgstr "Konnte Deinen Heimatort nicht bestimmen." +#: mod/register.php:283 +msgid "Leave empty for an auto generated password." +msgstr "Leer lassen um das Passwort automatisch zu generieren." -#: mod/wallmessage.php:80 mod/wallmessage.php:89 -msgid "No recipient." -msgstr "Kein Empfänger." +#: mod/register.php:284 mod/settings.php:1279 +msgid "Confirm:" +msgstr "Bestätigen:" -#: mod/wallmessage.php:127 -#, php-format +#: mod/register.php:285 msgid "" -"If you wish for %s to respond, please check that the privacy settings on " -"your site allow private mail from unknown senders." -msgstr "Wenn Du möchtest, dass %s Dir antworten kann, überprüfe Deine Privatsphären-Einstellungen und erlaube private Nachrichten von unbekannten Absendern." +"Choose a profile nickname. This must begin with a text character. Your " +"profile address on this site will then be " +"'nickname@$sitename'." +msgstr "Wähle einen Spitznamen für Dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse Deines Profils auf dieser Seite wird 'spitzname@$sitename' sein." -#: mod/photos.php:90 mod/photos.php:1876 -msgid "Recent Photos" -msgstr "Neueste Fotos" +#: mod/register.php:286 +msgid "Choose a nickname: " +msgstr "Spitznamen wählen: " -#: mod/photos.php:93 mod/photos.php:1303 mod/photos.php:1878 -msgid "Upload New Photos" -msgstr "Neue Fotos hochladen" +#: mod/register.php:296 +msgid "Import your profile to this friendica instance" +msgstr "Importiere Dein Profil auf diese Friendica Instanz" -#: mod/photos.php:171 -msgid "Contact information unavailable" -msgstr "Kontaktinformationen nicht verfügbar" +#: mod/search.php:100 +msgid "Only logged in users are permitted to perform a search." +msgstr "Nur eingeloggten Benutzern ist das Suchen gestattet." -#: mod/photos.php:192 -msgid "Album not found." -msgstr "Album nicht gefunden." +#: mod/search.php:124 +msgid "Too Many Requests" +msgstr "Zu viele Abfragen" -#: mod/photos.php:225 mod/photos.php:237 mod/photos.php:1247 -msgid "Delete Album" -msgstr "Album löschen" +#: mod/search.php:125 +msgid "Only one search per minute is permitted for not logged in users." +msgstr "Es ist nur eine Suchanfrage pro Minute für nicht eingeloggte Benutzer gestattet." -#: mod/photos.php:235 -msgid "Do you really want to delete this photo album and all its photos?" -msgstr "Möchtest Du wirklich dieses Foto-Album und all seine Foto löschen?" +#: mod/search.php:225 +#, php-format +msgid "Items tagged with: %s" +msgstr "Beiträge die mit %s getaggt sind" -#: mod/photos.php:317 mod/photos.php:328 mod/photos.php:1563 -msgid "Delete Photo" -msgstr "Foto löschen" +#: mod/settings.php:43 mod/admin.php:1490 +msgid "Account" +msgstr "Nutzerkonto" -#: mod/photos.php:326 -msgid "Do you really want to delete this photo?" -msgstr "Möchtest Du wirklich dieses Foto löschen?" +#: mod/settings.php:52 mod/admin.php:169 +msgid "Additional features" +msgstr "Zusätzliche Features" -#: mod/photos.php:705 -#, php-format -msgid "%1$s was tagged in %2$s by %3$s" -msgstr "%1$s wurde von %3$s in %2$s getaggt" +#: mod/settings.php:60 +msgid "Display" +msgstr "Anzeige" -#: mod/photos.php:705 -msgid "a photo" -msgstr "einem Foto" +#: mod/settings.php:67 mod/settings.php:890 +msgid "Social Networks" +msgstr "Soziale Netzwerke" -#: mod/photos.php:811 -msgid "Image file is empty." -msgstr "Bilddatei ist leer." +#: mod/settings.php:74 mod/admin.php:167 mod/admin.php:1616 mod/admin.php:1679 +msgid "Plugins" +msgstr "Plugins" -#: mod/photos.php:974 -msgid "No photos selected" -msgstr "Keine Bilder ausgewählt" +#: mod/settings.php:88 +msgid "Connected apps" +msgstr "Verbundene Programme" -#: mod/photos.php:1134 -#, php-format -msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." -msgstr "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers." +#: mod/settings.php:95 mod/uexport.php:45 +msgid "Export personal data" +msgstr "Persönliche Daten exportieren" -#: mod/photos.php:1168 -msgid "Upload Photos" -msgstr "Bilder hochladen" +#: mod/settings.php:102 +msgid "Remove account" +msgstr "Konto löschen" -#: mod/photos.php:1172 mod/photos.php:1242 -msgid "New album name: " -msgstr "Name des neuen Albums: " +#: mod/settings.php:157 +msgid "Missing some important data!" +msgstr "Wichtige Daten fehlen!" -#: mod/photos.php:1173 -msgid "or existing album name: " -msgstr "oder existierender Albumname: " +#: mod/settings.php:271 +msgid "Failed to connect with email account using the settings provided." +msgstr "Verbindung zum E-Mail-Konto mit den angegebenen Einstellungen nicht möglich." -#: mod/photos.php:1174 -msgid "Do not show a status post for this upload" -msgstr "Keine Status-Mitteilung für diesen Beitrag anzeigen" +#: mod/settings.php:276 +msgid "Email settings updated." +msgstr "E-Mail Einstellungen bearbeitet." -#: mod/photos.php:1187 -msgid "Private Photo" -msgstr "Privates Foto" +#: mod/settings.php:291 +msgid "Features updated" +msgstr "Features aktualisiert" -#: mod/photos.php:1188 -msgid "Public Photo" -msgstr "Öffentliches Foto" +#: mod/settings.php:361 +msgid "Relocate message has been send to your contacts" +msgstr "Die Umzugsbenachrichtigung wurde an Deine Kontakte versendet." -#: mod/photos.php:1254 -msgid "Edit Album" -msgstr "Album bearbeiten" +#: mod/settings.php:380 +msgid "Empty passwords are not allowed. Password unchanged." +msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert." -#: mod/photos.php:1260 -msgid "Show Newest First" -msgstr "Zeige neueste zuerst" +#: mod/settings.php:388 +msgid "Wrong password." +msgstr "Falsches Passwort." -#: mod/photos.php:1262 -msgid "Show Oldest First" -msgstr "Zeige älteste zuerst" +#: mod/settings.php:399 +msgid "Password changed." +msgstr "Passwort geändert." -#: mod/photos.php:1289 mod/photos.php:1861 -msgid "View Photo" -msgstr "Foto betrachten" +#: mod/settings.php:401 +msgid "Password update failed. Please try again." +msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal." -#: mod/photos.php:1335 -msgid "Permission denied. Access to this item may be restricted." -msgstr "Zugriff verweigert. Zugriff zu diesem Eintrag könnte eingeschränkt sein." +#: mod/settings.php:481 +msgid " Please use a shorter name." +msgstr " Bitte verwende einen kürzeren Namen." -#: mod/photos.php:1337 -msgid "Photo not available" -msgstr "Foto nicht verfügbar" +#: mod/settings.php:483 +msgid " Name too short." +msgstr " Name ist zu kurz." -#: mod/photos.php:1395 -msgid "View photo" -msgstr "Fotos ansehen" +#: mod/settings.php:492 +msgid "Wrong Password" +msgstr "Falsches Passwort" -#: mod/photos.php:1395 -msgid "Edit photo" -msgstr "Foto bearbeiten" +#: mod/settings.php:497 +msgid " Not valid email." +msgstr " Keine gültige E-Mail." -#: mod/photos.php:1396 -msgid "Use as profile photo" -msgstr "Als Profilbild verwenden" +#: mod/settings.php:503 +msgid " Cannot change to that email." +msgstr "Ändern der E-Mail nicht möglich. " -#: mod/photos.php:1421 -msgid "View Full Size" -msgstr "Betrachte Originalgröße" +#: mod/settings.php:559 +msgid "Private forum has no privacy permissions. Using default privacy group." +msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt." -#: mod/photos.php:1507 -msgid "Tags: " -msgstr "Tags: " +#: mod/settings.php:563 +msgid "Private forum has no privacy permissions and no default privacy group." +msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte." -#: mod/photos.php:1510 -msgid "[Remove any tag]" -msgstr "[Tag entfernen]" +#: mod/settings.php:603 +msgid "Settings updated." +msgstr "Einstellungen aktualisiert." -#: mod/photos.php:1549 -msgid "New album name" -msgstr "Name des neuen Albums" +#: mod/settings.php:680 mod/settings.php:706 mod/settings.php:742 +msgid "Add application" +msgstr "Programm hinzufügen" -#: mod/photos.php:1550 -msgid "Caption" -msgstr "Bildunterschrift" +#: mod/settings.php:681 mod/settings.php:792 mod/settings.php:841 +#: mod/settings.php:908 mod/settings.php:1005 mod/settings.php:1271 +#: mod/admin.php:1055 mod/admin.php:1680 mod/admin.php:1943 mod/admin.php:2017 +#: mod/admin.php:2170 +msgid "Save Settings" +msgstr "Einstellungen speichern" -#: mod/photos.php:1551 -msgid "Add a Tag" -msgstr "Tag hinzufügen" +#: mod/settings.php:684 mod/settings.php:710 +msgid "Consumer Key" +msgstr "Consumer Key" -#: mod/photos.php:1551 -msgid "" -"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" +#: mod/settings.php:685 mod/settings.php:711 +msgid "Consumer Secret" +msgstr "Consumer Secret" -#: mod/photos.php:1552 -msgid "Do not rotate" -msgstr "Nicht rotieren" +#: mod/settings.php:686 mod/settings.php:712 +msgid "Redirect" +msgstr "Umleiten" -#: mod/photos.php:1553 -msgid "Rotate CW (right)" -msgstr "Drehen US (rechts)" +#: mod/settings.php:687 mod/settings.php:713 +msgid "Icon url" +msgstr "Icon URL" -#: mod/photos.php:1554 -msgid "Rotate CCW (left)" -msgstr "Drehen EUS (links)" +#: mod/settings.php:698 +msgid "You can't edit this application." +msgstr "Du kannst dieses Programm nicht bearbeiten." -#: mod/photos.php:1569 -msgid "Private photo" -msgstr "Privates Foto" +#: mod/settings.php:741 +msgid "Connected Apps" +msgstr "Verbundene Programme" -#: mod/photos.php:1570 -msgid "Public photo" -msgstr "Öffentliches Foto" +#: mod/settings.php:745 +msgid "Client key starts with" +msgstr "Anwenderschlüssel beginnt mit" -#: mod/photos.php:1792 -msgid "Map" -msgstr "Karte" +#: mod/settings.php:746 +msgid "No name" +msgstr "Kein Name" -#: mod/dfrn_request.php:101 -msgid "This introduction has already been accepted." -msgstr "Diese Kontaktanfrage wurde bereits akzeptiert." +#: mod/settings.php:747 +msgid "Remove authorization" +msgstr "Autorisierung entziehen" -#: mod/dfrn_request.php:124 mod/dfrn_request.php:523 -msgid "Profile location is not valid or does not contain profile information." -msgstr "Profiladresse ist ungültig oder stellt keine Profildaten zur Verfügung." +#: mod/settings.php:759 +msgid "No Plugin settings configured" +msgstr "Keine Plugin-Einstellungen konfiguriert" -#: mod/dfrn_request.php:129 mod/dfrn_request.php:528 -msgid "Warning: profile location has no identifiable owner name." -msgstr "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden." +#: mod/settings.php:768 +msgid "Plugin Settings" +msgstr "Plugin-Einstellungen" -#: mod/dfrn_request.php:132 mod/dfrn_request.php:531 -msgid "Warning: profile location has no profile photo." -msgstr "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse." +#: mod/settings.php:782 mod/admin.php:2159 mod/admin.php:2160 +msgid "Off" +msgstr "Aus" -#: mod/dfrn_request.php:136 mod/dfrn_request.php:535 -#, 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 benötigter Parameter wurde an der angegebenen Stelle nicht gefunden" -msgstr[1] "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden" +#: mod/settings.php:782 mod/admin.php:2159 mod/admin.php:2160 +msgid "On" +msgstr "An" -#: mod/dfrn_request.php:180 -msgid "Introduction complete." -msgstr "Kontaktanfrage abgeschlossen." +#: mod/settings.php:790 +msgid "Additional Features" +msgstr "Zusätzliche Features" -#: mod/dfrn_request.php:225 -msgid "Unrecoverable protocol error." -msgstr "Nicht behebbarer Protokollfehler." +#: mod/settings.php:800 mod/settings.php:804 +msgid "General Social Media Settings" +msgstr "Allgemeine Einstellungen zu Sozialen Medien" -#: mod/dfrn_request.php:253 -msgid "Profile unavailable." -msgstr "Profil nicht verfügbar." +#: mod/settings.php:810 +msgid "Disable intelligent shortening" +msgstr "Intelligentes Link kürzen ausschalten" -#: mod/dfrn_request.php:280 -#, php-format -msgid "%s has received too many connection requests today." -msgstr "%s hat heute zu viele Kontaktanfragen erhalten." +#: mod/settings.php:812 +msgid "" +"Normally the system tries to find the best link to add to shortened posts. " +"If this option is enabled then every shortened post will always point to the" +" original friendica post." +msgstr "Normalerweise versucht das System den besten Link zu finden um ihn zu gekürzten Postings hinzu zu fügen. Wird diese Option ausgewählt wird stets ein Link auf die originale Friendica Nachricht beigefügt." -#: mod/dfrn_request.php:281 -msgid "Spam protection measures have been invoked." -msgstr "Maßnahmen zum Spamschutz wurden ergriffen." +#: mod/settings.php:818 +msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" +msgstr "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen" -#: mod/dfrn_request.php:282 -msgid "Friends are advised to please try again in 24 hours." -msgstr "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen." +#: mod/settings.php:820 +msgid "" +"If you receive a message from an unknown OStatus user, this option decides " +"what to do. If it is checked, a new contact will be created for every " +"unknown user." +msgstr "Wenn du eine Nachricht eines unbekannten OStatus Nutzers bekommst, entscheidet diese Option wie diese behandelt werden soll. Ist die Option aktiviert, wird ein neuer Kontakt für den Verfasser erstellt,." -#: mod/dfrn_request.php:344 -msgid "Invalid locator" -msgstr "Ungültiger Locator" +#: mod/settings.php:826 +msgid "Default group for OStatus contacts" +msgstr "Voreingestellte Gruppe für OStatus Kontakte" -#: mod/dfrn_request.php:353 -msgid "Invalid email address." -msgstr "Ungültige E-Mail-Adresse." +#: mod/settings.php:834 +msgid "Your legacy GNU Social account" +msgstr "Dein alter GNU Social Account" -#: mod/dfrn_request.php:378 -msgid "This account has not been configured for email. Request failed." -msgstr "Dieses Konto ist nicht für E-Mail konfiguriert. Anfrage fehlgeschlagen." +#: mod/settings.php:836 +msgid "" +"If you enter your old GNU Social/Statusnet account name here (in the format " +"user@domain.tld), your contacts will be added automatically. The field will " +"be emptied when done." +msgstr "Wenn du deinen alten GNU Socual/Statusnet Accountnamen hier angibst (Format name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden." -#: mod/dfrn_request.php:481 -msgid "You have already introduced yourself here." -msgstr "Du hast Dich hier bereits vorgestellt." +#: mod/settings.php:839 +msgid "Repair OStatus subscriptions" +msgstr "OStatus Abonnements reparieren" -#: mod/dfrn_request.php:485 +#: mod/settings.php:848 mod/settings.php:849 #, php-format -msgid "Apparently you are already friends with %s." -msgstr "Es scheint so, als ob Du bereits mit %s in Kontakt stehst." +msgid "Built-in support for %s connectivity is %s" +msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s" -#: mod/dfrn_request.php:506 -msgid "Invalid profile URL." -msgstr "Ungültige Profil-URL." +#: mod/settings.php:848 mod/settings.php:849 +msgid "enabled" +msgstr "eingeschaltet" -#: mod/dfrn_request.php:609 -msgid "Your introduction has been sent." -msgstr "Deine Kontaktanfrage wurde gesendet." +#: mod/settings.php:848 mod/settings.php:849 +msgid "disabled" +msgstr "ausgeschaltet" -#: mod/dfrn_request.php:651 -msgid "" -"Remote subscription can't be done for your network. Please subscribe " -"directly on your system." -msgstr "Entferntes abon­nie­ren kann für dein Netzwerk nicht durchgeführt werden. Bitte nutze direkt die Abonnieren-Funktion deines Systems. " +#: mod/settings.php:849 +msgid "GNU Social (OStatus)" +msgstr "GNU Social (OStatus)" -#: mod/dfrn_request.php:672 -msgid "Please login to confirm introduction." -msgstr "Bitte melde Dich an, um die Kontaktanfrage zu bestätigen." +#: mod/settings.php:883 +msgid "Email access is disabled on this site." +msgstr "Zugriff auf E-Mails für diese Seite deaktiviert." + +#: mod/settings.php:895 +msgid "Email/Mailbox Setup" +msgstr "E-Mail/Postfach-Einstellungen" -#: mod/dfrn_request.php:682 +#: mod/settings.php:896 msgid "" -"Incorrect identity currently logged in. Please login to " -"this profile." -msgstr "Momentan bist Du mit einer anderen Identität angemeldet. Bitte melde Dich mit diesem Profil an." +"If you wish to communicate with email contacts using this service " +"(optional), please specify how to connect to your mailbox." +msgstr "Wenn Du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für Dein Postfach an." -#: mod/dfrn_request.php:696 mod/dfrn_request.php:713 -msgid "Confirm" -msgstr "Bestätigen" +#: mod/settings.php:897 +msgid "Last successful email check:" +msgstr "Letzter erfolgreicher E-Mail Check" -#: mod/dfrn_request.php:708 -msgid "Hide this contact" -msgstr "Verberge diesen Kontakt" +#: mod/settings.php:899 +msgid "IMAP server name:" +msgstr "IMAP-Server-Name:" -#: mod/dfrn_request.php:711 -#, php-format -msgid "Welcome home %s." -msgstr "Willkommen zurück %s." +#: mod/settings.php:900 +msgid "IMAP port:" +msgstr "IMAP-Port:" -#: mod/dfrn_request.php:712 -#, php-format -msgid "Please confirm your introduction/connection request to %s." -msgstr "Bitte bestätige Deine Kontaktanfrage bei %s." +#: mod/settings.php:901 +msgid "Security:" +msgstr "Sicherheit:" -#: mod/dfrn_request.php:843 -msgid "" -"Please enter your 'Identity Address' from one of the following supported " -"communications networks:" -msgstr "Bitte gib die Adresse Deines Profils in einem der unterstützten sozialen Netzwerke an:" +#: mod/settings.php:901 mod/settings.php:906 +msgid "None" +msgstr "Keine" -#: mod/dfrn_request.php:867 -#, php-format -msgid "" -"If you are not yet a member of the free social web, follow this link to find a public Friendica site and " -"join us today." -msgstr "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, folge diesem Link um einen öffentlichen Friendica-Server zu finden und beizutreten." +#: mod/settings.php:902 +msgid "Email login name:" +msgstr "E-Mail-Login-Name:" -#: mod/dfrn_request.php:872 -msgid "Friend/Connection Request" -msgstr "Kontaktanfrage" +#: mod/settings.php:903 +msgid "Email password:" +msgstr "E-Mail-Passwort:" -#: mod/dfrn_request.php:873 -msgid "" -"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " -"testuser@identi.ca" -msgstr "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" +#: mod/settings.php:904 +msgid "Reply-to address:" +msgstr "Reply-to Adresse:" -#: mod/dfrn_request.php:882 -msgid "StatusNet/Federated Social Web" -msgstr "StatusNet/Federated Social Web" +#: mod/settings.php:905 +msgid "Send public posts to all email contacts:" +msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:" -#: mod/dfrn_request.php:884 -#, php-format -msgid "" -" - please do not use this form. Instead, enter %s into your Diaspora search" -" bar." -msgstr " - bitte verwende dieses Formular nicht. Stattdessen suche nach %s in Deiner Diaspora Suchleiste." +#: mod/settings.php:906 +msgid "Action after import:" +msgstr "Aktion nach Import:" -#: mod/install.php:140 -msgid "Friendica Communications Server - Setup" -msgstr "Friendica-Server für soziale Netzwerke – Setup" +#: mod/settings.php:906 +msgid "Move to folder" +msgstr "In einen Ordner verschieben" -#: mod/install.php:146 -msgid "Could not connect to database." -msgstr "Verbindung zur Datenbank gescheitert." +#: mod/settings.php:907 +msgid "Move to folder:" +msgstr "In diesen Ordner verschieben:" -#: mod/install.php:150 -msgid "Could not create table." -msgstr "Tabelle konnte nicht angelegt werden." +#: mod/settings.php:943 mod/admin.php:942 +msgid "No special theme for mobile devices" +msgstr "Kein spezielles Theme für mobile Geräte verwenden." -#: mod/install.php:156 -msgid "Your Friendica site database has been installed." -msgstr "Die Datenbank Deiner Friendicaseite wurde installiert." +#: mod/settings.php:1003 +msgid "Display Settings" +msgstr "Anzeige-Einstellungen" + +#: mod/settings.php:1009 mod/settings.php:1032 +msgid "Display Theme:" +msgstr "Theme:" + +#: mod/settings.php:1010 +msgid "Mobile Theme:" +msgstr "Mobiles Theme" + +#: mod/settings.php:1011 +msgid "Suppress warning of insecure networks" +msgstr "Warnung wegen unsicheren Netzwerken unterdrücken" -#: mod/install.php:161 +#: mod/settings.php:1011 msgid "" -"You may need to import the file \"database.sql\" manually using phpmyadmin " -"or mysql." -msgstr "Möglicherweise musst Du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren." +"Should the system suppress the warning that the current group contains " +"members of networks that can't receive non public postings." +msgstr "Soll das System Warnungen unterdrücken, die angezeigt werden weil von dir eingerichtete Kontakt-Gruppen Accounts aus Netzwerken beinhalten, die keine nicht öffentlichen Beiträge empfangen können." -#: mod/install.php:162 mod/install.php:234 mod/install.php:609 -msgid "Please see the file \"INSTALL.txt\"." -msgstr "Lies bitte die \"INSTALL.txt\"." +#: mod/settings.php:1012 +msgid "Update browser every xx seconds" +msgstr "Browser alle xx Sekunden aktualisieren" -#: mod/install.php:174 -msgid "Database already in use." -msgstr "Die Datenbank wird bereits verwendet." +#: mod/settings.php:1012 +msgid "Minimum of 10 seconds. Enter -1 to disable it." +msgstr "Minimum sind 10 Sekunden. Gib -1 ein um abzuschalten." -#: mod/install.php:231 -msgid "System check" -msgstr "Systemtest" +#: mod/settings.php:1013 +msgid "Number of items to display per page:" +msgstr "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: " -#: mod/install.php:236 -msgid "Check again" -msgstr "Noch einmal testen" +#: mod/settings.php:1013 mod/settings.php:1014 +msgid "Maximum of 100 items" +msgstr "Maximal 100 Beiträge" -#: mod/install.php:255 -msgid "Database connection" -msgstr "Datenbankverbindung" +#: mod/settings.php:1014 +msgid "Number of items to display per page when viewed from mobile device:" +msgstr "Zahl der Beiträge, die pro Netzwerkseite auf mobilen Geräten angezeigt werden sollen:" -#: mod/install.php:256 -msgid "" -"In order to install Friendica we need to know how to connect to your " -"database." -msgstr "Um Friendica installieren zu können, müssen wir wissen, wie wir mit Deiner Datenbank Kontakt aufnehmen können." +#: mod/settings.php:1015 +msgid "Don't show emoticons" +msgstr "Keine Smilies anzeigen" -#: mod/install.php:257 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." -msgstr "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls Du Fragen zu diesen Einstellungen haben solltest." +#: mod/settings.php:1016 +msgid "Calendar" +msgstr "Kalender" -#: mod/install.php:258 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." -msgstr "Die Datenbank, die Du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor Du mit der Installation fortfährst." +#: mod/settings.php:1017 +msgid "Beginning of week:" +msgstr "Wochenbeginn:" -#: mod/install.php:262 -msgid "Database Server Name" -msgstr "Datenbank-Server" +#: mod/settings.php:1018 +msgid "Don't show notices" +msgstr "Info-Popups nicht anzeigen" -#: mod/install.php:263 -msgid "Database Login Name" -msgstr "Datenbank-Nutzer" +#: mod/settings.php:1019 +msgid "Infinite scroll" +msgstr "Endloses Scrollen" -#: mod/install.php:264 -msgid "Database Login Password" -msgstr "Datenbank-Passwort" +#: mod/settings.php:1020 +msgid "Automatic updates only at the top of the network page" +msgstr "Automatische Updates nur, wenn Du oben auf der Netzwerkseite bist." -#: mod/install.php:264 -msgid "For security reasons the password must not be empty" -msgstr "Aus Sicherheitsgründen darf das Passwort nicht leer sein." +#: mod/settings.php:1021 +msgid "Bandwith Saver Mode" +msgstr "Bandbreiten-Spar-Modus" -#: mod/install.php:265 -msgid "Database Name" -msgstr "Datenbank-Name" +#: mod/settings.php:1021 +msgid "" +"When enabled, embedded content is not displayed on automatic updates, they " +"only show on page reload." +msgstr "Wenn aktiviert, wird der eingebettete Inhalt nicht automatisch aktualisiert. In diesem Fall Seite bitte neu laden." -#: mod/install.php:266 mod/install.php:307 -msgid "Site administrator email address" -msgstr "E-Mail-Adresse des Administrators" +#: mod/settings.php:1023 +msgid "General Theme Settings" +msgstr "Allgemeine Themeneinstellungen" -#: mod/install.php:266 mod/install.php:307 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." -msgstr "Die E-Mail-Adresse, die in Deinem Friendica-Account eingetragen ist, muss mit dieser Adresse übereinstimmen, damit Du das Admin-Panel benutzen kannst." +#: mod/settings.php:1024 +msgid "Custom Theme Settings" +msgstr "Benutzerdefinierte Theme Einstellungen" -#: mod/install.php:270 mod/install.php:310 -msgid "Please select a default timezone for your website" -msgstr "Bitte wähle die Standardzeitzone Deiner Webseite" +#: mod/settings.php:1025 +msgid "Content Settings" +msgstr "Einstellungen zum Inhalt" -#: mod/install.php:297 -msgid "Site settings" -msgstr "Server-Einstellungen" +#: mod/settings.php:1026 view/theme/duepuntozero/config.php:63 +#: view/theme/frio/config.php:66 view/theme/quattro/config.php:69 +#: view/theme/vier/config.php:114 +msgid "Theme settings" +msgstr "Themeneinstellungen" -#: mod/install.php:311 -msgid "System Language:" -msgstr "Systemsprache:" +#: mod/settings.php:1110 +msgid "Account Types" +msgstr "Kontenarten" -#: mod/install.php:311 -msgid "" -"Set the default language for your Friendica installation interface and to " -"send emails." -msgstr "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand" +#: mod/settings.php:1111 +msgid "Personal Page Subtypes" +msgstr "Unterarten der persönlichen Seite" -#: mod/install.php:351 -msgid "Could not find a command line version of PHP in the web server PATH." -msgstr "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden." +#: mod/settings.php:1112 +msgid "Community Forum Subtypes" +msgstr "Unterarten des Gemeinschaftsforums" -#: mod/install.php:352 -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. See 'Setup the poller'" -msgstr "Wenn Du keine Kommandozeilen-Version von PHP auf Deinem Server installiert hast, kannst Du keine Hintergrundprozesse via cron starten. Siehe 'Setup the poller'" +#: mod/settings.php:1119 +msgid "Personal Page" +msgstr "Persönliche Seite" -#: mod/install.php:356 -msgid "PHP executable path" -msgstr "Pfad zu PHP" +#: mod/settings.php:1120 +msgid "This account is a regular personal profile" +msgstr "Dieses Konto ist ein normales persönliches Profil" -#: mod/install.php:356 -msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." -msgstr "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren." +#: mod/settings.php:1123 +msgid "Organisation Page" +msgstr "Organisationsseite" -#: mod/install.php:361 -msgid "Command line PHP" -msgstr "Kommandozeilen-PHP" +#: mod/settings.php:1124 +msgid "This account is a profile for an organisation" +msgstr "Diese Konto ist ein Profil für eine Organisation" -#: mod/install.php:370 -msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" -msgstr "Die ausführbare Datei von PHP stimmt nicht mit der PHP cli Version überein (es könnte sich um die cgi-fgci Version handeln)" +#: mod/settings.php:1127 +msgid "News Page" +msgstr "Nachrichtenseite" -#: mod/install.php:371 -msgid "Found PHP version: " -msgstr "Gefundene PHP Version:" +#: mod/settings.php:1128 +msgid "This account is a news account/reflector" +msgstr "Dieses Konto ist ein News-Konto bzw. -Spiegel" -#: mod/install.php:373 -msgid "PHP cli binary" -msgstr "PHP CLI Binary" +#: mod/settings.php:1131 +msgid "Community Forum" +msgstr "Gemeinschaftsforum" -#: mod/install.php:384 +#: mod/settings.php:1132 msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." -msgstr "Die Kommandozeilenversion von PHP auf Deinem System hat \"register_argc_argv\" nicht aktiviert." +"This account is a community forum where people can discuss with each other" +msgstr "Dieses Konto ist ein Gemeinschaftskonto wo sich Leute untereinander austauschen können" -#: mod/install.php:385 -msgid "This is required for message delivery to work." -msgstr "Dies wird für die Auslieferung von Nachrichten benötigt." +#: mod/settings.php:1135 +msgid "Normal Account Page" +msgstr "Normales Konto" -#: mod/install.php:387 -msgid "PHP register_argc_argv" -msgstr "PHP register_argc_argv" +#: mod/settings.php:1136 +msgid "This account is a normal personal profile" +msgstr "Dieses Konto ist ein normales persönliches Profil" -#: mod/install.php:410 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" -msgstr "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen" +#: mod/settings.php:1139 +msgid "Soapbox Page" +msgstr "Marktschreier-Konto" -#: mod/install.php:411 -msgid "" -"If running under Windows, please see " -"\"http://www.php.net/manual/en/openssl.installation.php\"." -msgstr "Wenn der Server unter Windows läuft, schau Dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an." +#: mod/settings.php:1140 +msgid "Automatically approve all connection/friend requests as read-only fans" +msgstr "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert" -#: mod/install.php:413 -msgid "Generate encryption keys" -msgstr "Schlüssel erzeugen" +#: mod/settings.php:1143 +msgid "Public Forum" +msgstr "Öffentliches Forum" -#: mod/install.php:420 -msgid "libCurl PHP module" -msgstr "PHP: libCurl-Modul" +#: mod/settings.php:1144 +msgid "Automatically approve all contact requests" +msgstr "Bestätige alle Kontaktanfragen automatisch" -#: mod/install.php:421 -msgid "GD graphics PHP module" -msgstr "PHP: GD-Grafikmodul" +#: mod/settings.php:1147 +msgid "Automatic Friend Page" +msgstr "Automatische Freunde Seite" -#: mod/install.php:422 -msgid "OpenSSL PHP module" -msgstr "PHP: OpenSSL-Modul" +#: mod/settings.php:1148 +msgid "Automatically approve all connection/friend requests as friends" +msgstr "Kontaktanfragen werden automatisch als Freund akzeptiert" -#: mod/install.php:423 -msgid "mysqli PHP module" -msgstr "PHP: mysqli-Modul" +#: mod/settings.php:1151 +msgid "Private Forum [Experimental]" +msgstr "Privates Forum [Versuchsstadium]" -#: mod/install.php:424 -msgid "mb_string PHP module" -msgstr "PHP: mb_string-Modul" +#: mod/settings.php:1152 +msgid "Private forum - approved members only" +msgstr "Privates Forum, nur für Mitglieder" -#: mod/install.php:425 -msgid "mcrypt PHP module" -msgstr "PHP mcrypt Modul" +#: mod/settings.php:1163 +msgid "OpenID:" +msgstr "OpenID:" -#: mod/install.php:426 -msgid "XML PHP module" -msgstr "XML PHP Modul" +#: mod/settings.php:1163 +msgid "(Optional) Allow this OpenID to login to this account." +msgstr "(Optional) Erlaube die Anmeldung für dieses Konto mit dieser OpenID." -#: mod/install.php:427 -msgid "iconv module" -msgstr "iconv module" +#: mod/settings.php:1171 +msgid "Publish your default profile in your local site directory?" +msgstr "Darf Dein Standardprofil im Verzeichnis dieses Servers veröffentlicht werden?" -#: mod/install.php:431 mod/install.php:433 -msgid "Apache mod_rewrite module" -msgstr "Apache mod_rewrite module" +#: mod/settings.php:1171 +msgid "Your profile may be visible in public." +msgstr "Dein Profil könnte öffentlich abrufbar sein." -#: mod/install.php:431 -msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." -msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert." +#: mod/settings.php:1177 +msgid "Publish your default profile in the global social directory?" +msgstr "Darf Dein Standardprofil im weltweiten Verzeichnis veröffentlicht werden?" -#: mod/install.php:439 -msgid "Error: libCURL PHP module required but not installed." -msgstr "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert." +#: mod/settings.php:1184 +msgid "Hide your contact/friend list from viewers of your default profile?" +msgstr "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?" -#: mod/install.php:443 +#: mod/settings.php:1188 msgid "" -"Error: GD graphics PHP module with JPEG support required but not installed." -msgstr "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert." - -#: mod/install.php:447 -msgid "Error: openssl PHP module required but not installed." -msgstr "Fehler: Das openssl-Modul von PHP ist nicht installiert." - -#: mod/install.php:451 -msgid "Error: mysqli PHP module required but not installed." -msgstr "Fehler: Das mysqli-Modul von PHP ist nicht installiert." +"If enabled, posting public messages to Diaspora and other networks isn't " +"possible." +msgstr "Wenn aktiviert, ist das senden öffentliche Nachrichten zu Diaspora und anderen Netzwerken nicht möglich" -#: mod/install.php:455 -msgid "Error: mb_string PHP module required but not installed." -msgstr "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert." +#: mod/settings.php:1193 +msgid "Allow friends to post to your profile page?" +msgstr "Dürfen Deine Kontakte auf Deine Pinnwand schreiben?" -#: mod/install.php:459 -msgid "Error: mcrypt PHP module required but not installed." -msgstr "Fehler: Das mcrypt Modul von PHP ist nicht installiert" +#: mod/settings.php:1198 +msgid "Allow friends to tag your posts?" +msgstr "Dürfen Deine Kontakte Deine Beiträge mit Schlagwörtern versehen?" -#: mod/install.php:463 -msgid "Error: iconv PHP module required but not installed." -msgstr "Fehler: Das iconv-Modul von PHP ist nicht installiert." +#: mod/settings.php:1203 +msgid "Allow us to suggest you as a potential friend to new members?" +msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?" -#: mod/install.php:472 -msgid "" -"If you are using php_cli, please make sure that mcrypt module is enabled in " -"its config file" -msgstr "Wenn du das Modul \"php_cli\" benutzt dann versichere dich, daß das mcrypt Modul in seiner Konfigurationsdatei aktiviert ist. " +#: mod/settings.php:1208 +msgid "Permit unknown people to send you private mail?" +msgstr "Dürfen Dir Unbekannte private Nachrichten schicken?" -#: mod/install.php:475 -msgid "" -"Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 " -"encryption layer." -msgstr "Die Funktion mcrypt_create_iv() ist nicht festgelegt. Dies ist notwendig um den RINO2-Encryption-Layer zu aktivieren." +#: mod/settings.php:1216 +msgid "Profile is not published." +msgstr "Profil ist nicht veröffentlicht." -#: mod/install.php:477 -msgid "mcrypt_create_iv() function" -msgstr "mcrypt_create_iv() function" +#: mod/settings.php:1224 +#, php-format +msgid "Your Identity Address is '%s' or '%s'." +msgstr "Die Adresse deines Profils lautet '%s' oder '%s'." -#: mod/install.php:485 -msgid "Error, XML PHP module required but not installed." -msgstr "Fehler: XML PHP Modul erforderlich aber nicht installiert." +#: mod/settings.php:1231 +msgid "Automatically expire posts after this many days:" +msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:" -#: mod/install.php:500 -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 Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun." +#: mod/settings.php:1231 +msgid "If empty, posts will not expire. Expired posts will be deleted" +msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht." -#: mod/install.php:501 -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 "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast." +#: mod/settings.php:1232 +msgid "Advanced expiration settings" +msgstr "Erweiterte Verfallseinstellungen" -#: mod/install.php:502 -msgid "" -"At the end of this procedure, we will give you a text to save in a file " -"named .htconfig.php in your Friendica top folder." -msgstr "Nachdem Du alles ausgefüllt hast, erhältst Du einen Text, den Du in eine Datei namens .htconfig.php in Deinem Friendica-Wurzelverzeichnis kopieren musst." +#: mod/settings.php:1233 +msgid "Advanced Expiration" +msgstr "Erweitertes Verfallen" -#: mod/install.php:503 -msgid "" -"You can alternatively skip this procedure and perform a manual installation." -" Please see the file \"INSTALL.txt\" for instructions." -msgstr "Alternativ kannst Du diesen Schritt aber auch überspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest Du in der Datei INSTALL.txt." +#: mod/settings.php:1234 +msgid "Expire posts:" +msgstr "Beiträge verfallen lassen:" -#: mod/install.php:506 -msgid ".htconfig.php is writable" -msgstr "Schreibrechte auf .htconfig.php" +#: mod/settings.php:1235 +msgid "Expire personal notes:" +msgstr "Persönliche Notizen verfallen lassen:" -#: mod/install.php:516 -msgid "" -"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." -msgstr "Friendica nutzt die Smarty3 Template Engine um die Webansichten zu rendern. Smarty3 kompiliert Templates zu PHP um das Rendern zu beschleunigen." +#: mod/settings.php:1236 +msgid "Expire starred posts:" +msgstr "Markierte Beiträge verfallen lassen:" -#: mod/install.php:517 -msgid "" -"In order to store these compiled templates, the web server needs to have " -"write access to the directory view/smarty3/ under the Friendica top level " -"folder." -msgstr "Um diese kompilierten Templates zu speichern benötigt der Webserver Schreibrechte zum Verzeichnis view/smarty3/ im obersten Ordner von Friendica." +#: mod/settings.php:1237 +msgid "Expire photos:" +msgstr "Fotos verfallen lassen:" -#: mod/install.php:518 -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 Webserver läuft (z.B. www-data) Schreibrechte zu diesem Verzeichnis hat." +#: mod/settings.php:1238 +msgid "Only expire posts by others:" +msgstr "Nur Beiträge anderer verfallen:" -#: mod/install.php:519 -msgid "" -"Note: as a security measure, you should give the web server write access to " -"view/smarty3/ only--not the template files (.tpl) that it contains." -msgstr "Hinweis: aus Sicherheitsgründen solltest Du dem Webserver nur Schreibrechte für view/smarty3/ geben -- Nicht den Templatedateien (.tpl) die sie enthalten." +#: mod/settings.php:1269 +msgid "Account Settings" +msgstr "Kontoeinstellungen" -#: mod/install.php:522 -msgid "view/smarty3 is writable" -msgstr "view/smarty3 ist schreibbar" +#: mod/settings.php:1277 +msgid "Password Settings" +msgstr "Passwort-Einstellungen" -#: mod/install.php:538 -msgid "" -"Url rewrite in .htaccess is not working. Check your server configuration." -msgstr "Umschreiben der URLs in der .htaccess funktioniert nicht. Überprüfe die Konfiguration des Servers." +#: mod/settings.php:1279 +msgid "Leave password fields blank unless changing" +msgstr "Lass die Passwort-Felder leer, außer Du willst das Passwort ändern" -#: mod/install.php:540 -msgid "Url rewrite is working" -msgstr "URL rewrite funktioniert" +#: mod/settings.php:1280 +msgid "Current Password:" +msgstr "Aktuelles Passwort:" -#: mod/install.php:559 -msgid "ImageMagick PHP extension is not installed" -msgstr "ImageMagicx PHP Erweiterung ist nicht installiert." +#: mod/settings.php:1280 mod/settings.php:1281 +msgid "Your current password to confirm the changes" +msgstr "Dein aktuelles Passwort um die Änderungen zu bestätigen" -#: mod/install.php:561 -msgid "ImageMagick PHP extension is installed" -msgstr "ImageMagick PHP Erweiterung ist installiert" +#: mod/settings.php:1281 +msgid "Password:" +msgstr "Passwort:" -#: mod/install.php:563 -msgid "ImageMagick supports GIF" -msgstr "ImageMagick unterstützt GIF" +#: mod/settings.php:1285 +msgid "Basic Settings" +msgstr "Grundeinstellungen" -#: mod/install.php:570 -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 Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen." +#: mod/settings.php:1287 +msgid "Email Address:" +msgstr "E-Mail-Adresse:" -#: mod/install.php:607 -msgid "

What next

" -msgstr "

Wie geht es weiter?

" +#: mod/settings.php:1288 +msgid "Your Timezone:" +msgstr "Deine Zeitzone:" -#: mod/install.php:608 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the " -"poller." -msgstr "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten." +#: mod/settings.php:1289 +msgid "Your Language:" +msgstr "Deine Sprache:" -#: mod/profiles.php:38 -msgid "Profile deleted." -msgstr "Profil gelöscht." +#: mod/settings.php:1289 +msgid "" +"Set the language we use to show you friendica interface and to send you " +"emails" +msgstr "Wähle die Sprache, in der wir Dir die Friendica-Oberfläche präsentieren sollen und Dir E-Mail schicken" -#: mod/profiles.php:56 mod/profiles.php:90 -msgid "Profile-" -msgstr "Profil-" +#: mod/settings.php:1290 +msgid "Default Post Location:" +msgstr "Standardstandort:" -#: mod/profiles.php:75 mod/profiles.php:118 -msgid "New profile created." -msgstr "Neues Profil angelegt." +#: mod/settings.php:1291 +msgid "Use Browser Location:" +msgstr "Standort des Browsers verwenden:" -#: mod/profiles.php:96 -msgid "Profile unavailable to clone." -msgstr "Profil nicht zum Duplizieren verfügbar." +#: mod/settings.php:1294 +msgid "Security and Privacy Settings" +msgstr "Sicherheits- und Privatsphäre-Einstellungen" -#: mod/profiles.php:190 -msgid "Profile Name is required." -msgstr "Profilname ist erforderlich." +#: mod/settings.php:1296 +msgid "Maximum Friend Requests/Day:" +msgstr "Maximale Anzahl vonKontaktanfragen/Tag:" -#: mod/profiles.php:338 -msgid "Marital Status" -msgstr "Familienstand" +#: mod/settings.php:1296 mod/settings.php:1326 +msgid "(to prevent spam abuse)" +msgstr "(um SPAM zu vermeiden)" -#: mod/profiles.php:342 -msgid "Romantic Partner" -msgstr "Romanze" +#: mod/settings.php:1297 +msgid "Default Post Permissions" +msgstr "Standard-Zugriffsrechte für Beiträge" -#: mod/profiles.php:354 -msgid "Work/Employment" -msgstr "Arbeit / Beschäftigung" +#: mod/settings.php:1298 +msgid "(click to open/close)" +msgstr "(klicke zum öffnen/schließen)" -#: mod/profiles.php:357 -msgid "Religion" -msgstr "Religion" +#: mod/settings.php:1309 +msgid "Default Private Post" +msgstr "Privater Standardbeitrag" -#: mod/profiles.php:361 -msgid "Political Views" -msgstr "Politische Ansichten" +#: mod/settings.php:1310 +msgid "Default Public Post" +msgstr "Öffentlicher Standardbeitrag" -#: mod/profiles.php:365 -msgid "Gender" -msgstr "Geschlecht" +#: mod/settings.php:1314 +msgid "Default Permissions for New Posts" +msgstr "Standardberechtigungen für neue Beiträge" -#: mod/profiles.php:369 -msgid "Sexual Preference" -msgstr "Sexuelle Vorlieben" +#: mod/settings.php:1326 +msgid "Maximum private messages per day from unknown people:" +msgstr "Maximale Anzahl privater Nachrichten von Unbekannten pro Tag:" -#: mod/profiles.php:373 -msgid "XMPP" -msgstr "XMPP" +#: mod/settings.php:1329 +msgid "Notification Settings" +msgstr "Benachrichtigungseinstellungen" -#: mod/profiles.php:377 -msgid "Homepage" -msgstr "Webseite" +#: mod/settings.php:1330 +msgid "By default post a status message when:" +msgstr "Standardmäßig eine Statusnachricht posten, wenn:" -#: mod/profiles.php:381 mod/profiles.php:694 -msgid "Interests" -msgstr "Interessen" +#: mod/settings.php:1331 +msgid "accepting a friend request" +msgstr "– Du eine Kontaktanfrage akzeptierst" -#: mod/profiles.php:385 -msgid "Address" -msgstr "Adresse" +#: mod/settings.php:1332 +msgid "joining a forum/community" +msgstr "– Du einem Forum/einer Gemeinschaftsseite beitrittst" -#: mod/profiles.php:392 mod/profiles.php:690 -msgid "Location" -msgstr "Wohnort" +#: mod/settings.php:1333 +msgid "making an interesting profile change" +msgstr "– Du eine interessante Änderung an Deinem Profil durchführst" -#: mod/profiles.php:477 -msgid "Profile updated." -msgstr "Profil aktualisiert." +#: mod/settings.php:1334 +msgid "Send a notification email when:" +msgstr "Benachrichtigungs-E-Mail senden wenn:" -#: mod/profiles.php:565 -msgid " and " -msgstr " und " +#: mod/settings.php:1335 +msgid "You receive an introduction" +msgstr "– Du eine Kontaktanfrage erhältst" -#: mod/profiles.php:573 -msgid "public profile" -msgstr "öffentliches Profil" +#: mod/settings.php:1336 +msgid "Your introductions are confirmed" +msgstr "– eine Deiner Kontaktanfragen akzeptiert wurde" -#: mod/profiles.php:576 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" -msgstr "%1$s hat %2$s geändert auf “%3$s”" +#: mod/settings.php:1337 +msgid "Someone writes on your profile wall" +msgstr "– jemand etwas auf Deine Pinnwand schreibt" -#: mod/profiles.php:577 -#, php-format -msgid " - Visit %1$s's %2$s" -msgstr " – %1$ss %2$s besuchen" +#: mod/settings.php:1338 +msgid "Someone writes a followup comment" +msgstr "– jemand auch einen Kommentar verfasst" -#: mod/profiles.php:580 -#, php-format -msgid "%1$s has an updated %2$s, changing %3$s." -msgstr "%1$s hat folgendes aktualisiert %2$s, verändert wurde %3$s." +#: mod/settings.php:1339 +msgid "You receive a private message" +msgstr "– Du eine private Nachricht erhältst" -#: mod/profiles.php:637 -msgid "Hide contacts and friends:" -msgstr "Kontakte und Freunde verbergen" +#: mod/settings.php:1340 +msgid "You receive a friend suggestion" +msgstr "– Du eine Empfehlung erhältst" -#: mod/profiles.php:642 -msgid "Hide your contact/friend list from viewers of this profile?" -msgstr "Liste der Kontakte vor Betrachtern dieses Profils verbergen?" +#: mod/settings.php:1341 +msgid "You are tagged in a post" +msgstr "– Du in einem Beitrag erwähnt wirst" -#: mod/profiles.php:666 -msgid "Show more profile fields:" -msgstr "Zeige mehr Profil-Felder:" +#: mod/settings.php:1342 +msgid "You are poked/prodded/etc. in a post" +msgstr "– Du von jemandem angestupst oder sonstwie behandelt wirst" -#: mod/profiles.php:678 -msgid "Profile Actions" -msgstr "Profilaktionen" +#: mod/settings.php:1344 +msgid "Activate desktop notifications" +msgstr "Desktop Benachrichtigungen einschalten" -#: mod/profiles.php:679 -msgid "Edit Profile Details" -msgstr "Profil bearbeiten" +#: mod/settings.php:1344 +msgid "Show desktop popup on new notifications" +msgstr "Desktop Benachrichtigungen einschalten" -#: mod/profiles.php:681 -msgid "Change Profile Photo" -msgstr "Profilbild ändern" +#: mod/settings.php:1346 +msgid "Text-only notification emails" +msgstr "Benachrichtigungs E-Mail als Rein-Text." -#: mod/profiles.php:682 -msgid "View this profile" -msgstr "Dieses Profil anzeigen" +#: mod/settings.php:1348 +msgid "Send text only notification emails, without the html part" +msgstr "Sende Benachrichtigungs E-Mail als Rein-Text - ohne HTML-Teil" -#: mod/profiles.php:684 -msgid "Create a new profile using these settings" -msgstr "Neues Profil anlegen und diese Einstellungen verwenden" +#: mod/settings.php:1350 +msgid "Advanced Account/Page Type Settings" +msgstr "Erweiterte Konto-/Seitentyp-Einstellungen" -#: mod/profiles.php:685 -msgid "Clone this profile" -msgstr "Dieses Profil duplizieren" +#: mod/settings.php:1351 +msgid "Change the behaviour of this account for special situations" +msgstr "Verhalten dieses Kontos in bestimmten Situationen:" -#: mod/profiles.php:686 -msgid "Delete this profile" -msgstr "Dieses Profil löschen" +#: mod/settings.php:1354 +msgid "Relocate" +msgstr "Umziehen" -#: mod/profiles.php:688 -msgid "Basic information" -msgstr "Grundinformationen" +#: mod/settings.php:1355 +msgid "" +"If you have moved this profile from another server, and some of your " +"contacts don't receive your updates, try pushing this button." +msgstr "Wenn Du Dein Profil von einem anderen Server umgezogen hast und einige Deiner Kontakte Deine Beiträge nicht erhalten, verwende diesen Button." -#: mod/profiles.php:689 -msgid "Profile picture" -msgstr "Profilbild" +#: mod/settings.php:1356 +msgid "Resend relocate message to contacts" +msgstr "Umzugsbenachrichtigung erneut an Kontakte senden" -#: mod/profiles.php:691 -msgid "Preferences" -msgstr "Vorlieben" +#: mod/uexport.php:37 +msgid "Export account" +msgstr "Account exportieren" -#: mod/profiles.php:692 -msgid "Status information" -msgstr "Status Informationen" +#: mod/uexport.php:37 +msgid "" +"Export your account info and contacts. Use this to make a backup of your " +"account and/or to move it to another server." +msgstr "Exportiere Deine Accountinformationen und Kontakte. Verwende dies um ein Backup Deines Accounts anzulegen und/oder damit auf einen anderen Server umzuziehen." -#: mod/profiles.php:693 -msgid "Additional information" -msgstr "Zusätzliche Informationen" +#: mod/uexport.php:38 +msgid "Export all" +msgstr "Alles exportieren" -#: mod/profiles.php:696 -msgid "Relation" -msgstr "Beziehung" +#: mod/uexport.php:38 +msgid "" +"Export your accout info, contacts and all your items as json. Could be a " +"very big file, and could take a lot of time. Use this to make a full backup " +"of your account (photos are not exported)" +msgstr "Exportiere Deine Account Informationen, Kontakte und alle Einträge als JSON Datei. Dies könnte eine sehr große Datei werden und dementsprechend viel Zeit benötigen. Verwende dies um ein komplettes Backup Deines Accounts anzulegen (Fotos werden nicht exportiert)." -#: mod/profiles.php:700 -msgid "Your Gender:" -msgstr "Dein Geschlecht:" +#: mod/videos.php:124 +msgid "Do you really want to delete this video?" +msgstr "Möchtest Du dieses Video wirklich löschen?" -#: mod/profiles.php:701 -msgid " Marital Status:" -msgstr " Beziehungsstatus:" +#: mod/videos.php:129 +msgid "Delete Video" +msgstr "Video Löschen" -#: mod/profiles.php:703 -msgid "Example: fishing photography software" -msgstr "Beispiel: Fischen Fotografie Software" +#: mod/videos.php:208 +msgid "No videos selected" +msgstr "Keine Videos ausgewählt" -#: mod/profiles.php:708 -msgid "Profile Name:" -msgstr "Profilname:" +#: mod/videos.php:402 +msgid "Recent Videos" +msgstr "Neueste Videos" -#: mod/profiles.php:710 -msgid "" -"This is your public profile.
It may " -"be visible to anybody using the internet." -msgstr "Dies ist Dein öffentliches Profil.
Es könnte für jeden Nutzer des Internets sichtbar sein." +#: mod/videos.php:404 +msgid "Upload New Videos" +msgstr "Neues Video hochladen" -#: mod/profiles.php:711 -msgid "Your Full Name:" -msgstr "Dein kompletter Name:" +#: mod/install.php:106 +msgid "Friendica Communications Server - Setup" +msgstr "Friendica-Server für soziale Netzwerke – Setup" -#: mod/profiles.php:712 -msgid "Title/Description:" -msgstr "Titel/Beschreibung:" +#: mod/install.php:112 +msgid "Could not connect to database." +msgstr "Verbindung zur Datenbank gescheitert." -#: mod/profiles.php:715 -msgid "Street Address:" -msgstr "Adresse:" +#: mod/install.php:116 +msgid "Could not create table." +msgstr "Tabelle konnte nicht angelegt werden." -#: mod/profiles.php:716 -msgid "Locality/City:" -msgstr "Wohnort:" +#: mod/install.php:122 +msgid "Your Friendica site database has been installed." +msgstr "Die Datenbank Deiner Friendicaseite wurde installiert." -#: mod/profiles.php:717 -msgid "Region/State:" -msgstr "Region/Bundesstaat:" +#: mod/install.php:127 +msgid "" +"You may need to import the file \"database.sql\" manually using phpmyadmin " +"or mysql." +msgstr "Möglicherweise musst Du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren." -#: mod/profiles.php:718 -msgid "Postal/Zip Code:" -msgstr "Postleitzahl:" +#: mod/install.php:128 mod/install.php:200 mod/install.php:547 +msgid "Please see the file \"INSTALL.txt\"." +msgstr "Lies bitte die \"INSTALL.txt\"." -#: mod/profiles.php:719 -msgid "Country:" -msgstr "Land:" +#: mod/install.php:140 +msgid "Database already in use." +msgstr "Die Datenbank wird bereits verwendet." -#: mod/profiles.php:723 -msgid "Who: (if applicable)" -msgstr "Wer: (falls anwendbar)" +#: mod/install.php:197 +msgid "System check" +msgstr "Systemtest" -#: mod/profiles.php:723 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" -msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com" +#: mod/install.php:202 +msgid "Check again" +msgstr "Noch einmal testen" -#: mod/profiles.php:724 -msgid "Since [date]:" -msgstr "Seit [Datum]:" +#: mod/install.php:221 +msgid "Database connection" +msgstr "Datenbankverbindung" -#: mod/profiles.php:726 -msgid "Tell us about yourself..." -msgstr "Erzähle uns ein bisschen von Dir …" +#: mod/install.php:222 +msgid "" +"In order to install Friendica we need to know how to connect to your " +"database." +msgstr "Um Friendica installieren zu können, müssen wir wissen, wie wir mit Deiner Datenbank Kontakt aufnehmen können." -#: mod/profiles.php:727 -msgid "XMPP (Jabber) address:" -msgstr "XMPP (Jabber) Adresse" +#: mod/install.php:223 +msgid "" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." +msgstr "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls Du Fragen zu diesen Einstellungen haben solltest." -#: mod/profiles.php:727 +#: mod/install.php:224 msgid "" -"The XMPP address will be propagated to your contacts so that they can follow" -" you." -msgstr "Die XMPP Adresse wird an deine Kontakte verteilt werden, so dass sie auch über XMPP mit dir in Kontakt treten können." +"The database you specify below should already exist. If it does not, please " +"create it before continuing." +msgstr "Die Datenbank, die Du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor Du mit der Installation fortfährst." -#: mod/profiles.php:728 -msgid "Homepage URL:" -msgstr "Adresse der Homepage:" +#: mod/install.php:228 +msgid "Database Server Name" +msgstr "Datenbank-Server" -#: mod/profiles.php:731 -msgid "Religious Views:" -msgstr "Religiöse Ansichten:" +#: mod/install.php:229 +msgid "Database Login Name" +msgstr "Datenbank-Nutzer" -#: mod/profiles.php:732 -msgid "Public Keywords:" -msgstr "Öffentliche Schlüsselwörter:" +#: mod/install.php:230 +msgid "Database Login Password" +msgstr "Datenbank-Passwort" -#: mod/profiles.php:732 -msgid "(Used for suggesting potential friends, can be seen by others)" -msgstr "(Wird verwendet, um potentielle Kontakte zu finden, kann von Kontakten eingesehen werden)" +#: mod/install.php:230 +msgid "For security reasons the password must not be empty" +msgstr "Aus Sicherheitsgründen darf das Passwort nicht leer sein." -#: mod/profiles.php:733 -msgid "Private Keywords:" -msgstr "Private Schlüsselwörter:" +#: mod/install.php:231 +msgid "Database Name" +msgstr "Datenbank-Name" -#: mod/profiles.php:733 -msgid "(Used for searching profiles, never shown to others)" -msgstr "(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)" +#: mod/install.php:232 mod/install.php:273 +msgid "Site administrator email address" +msgstr "E-Mail-Adresse des Administrators" -#: mod/profiles.php:736 -msgid "Musical interests" -msgstr "Musikalische Interessen" +#: mod/install.php:232 mod/install.php:273 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." +msgstr "Die E-Mail-Adresse, die in Deinem Friendica-Account eingetragen ist, muss mit dieser Adresse übereinstimmen, damit Du das Admin-Panel benutzen kannst." -#: mod/profiles.php:737 -msgid "Books, literature" -msgstr "Bücher, Literatur" +#: mod/install.php:236 mod/install.php:276 +msgid "Please select a default timezone for your website" +msgstr "Bitte wähle die Standardzeitzone Deiner Webseite" -#: mod/profiles.php:738 -msgid "Television" -msgstr "Fernsehen" +#: mod/install.php:263 +msgid "Site settings" +msgstr "Server-Einstellungen" -#: mod/profiles.php:739 -msgid "Film/dance/culture/entertainment" -msgstr "Filme/Tänze/Kultur/Unterhaltung" +#: mod/install.php:277 +msgid "System Language:" +msgstr "Systemsprache:" -#: mod/profiles.php:740 -msgid "Hobbies/Interests" -msgstr "Hobbies/Interessen" +#: mod/install.php:277 +msgid "" +"Set the default language for your Friendica installation interface and to " +"send emails." +msgstr "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand" -#: mod/profiles.php:741 -msgid "Love/romance" -msgstr "Liebe/Romantik" +#: mod/install.php:317 +msgid "Could not find a command line version of PHP in the web server PATH." +msgstr "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden." -#: mod/profiles.php:742 -msgid "Work/employment" -msgstr "Arbeit/Anstellung" +#: mod/install.php:318 +msgid "" +"If you don't have a command line version of PHP installed on server, you " +"will not be able to run the background processing. See 'Setup the poller'" +msgstr "Wenn auf deinem Server keine Kommandozeilenversion von PHP installiert ist, kannst du den Hintergrundprozess nicht einrichten. Hier findest du alternative Möglichkeiten'für das Poller Setup'" -#: mod/profiles.php:743 -msgid "School/education" -msgstr "Schule/Ausbildung" +#: mod/install.php:322 +msgid "PHP executable path" +msgstr "Pfad zu PHP" -#: mod/profiles.php:744 -msgid "Contact information and Social Networks" -msgstr "Kontaktinformationen und Soziale Netzwerke" +#: mod/install.php:322 +msgid "" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." +msgstr "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren." -#: mod/profiles.php:788 -msgid "Edit/Manage Profiles" -msgstr "Bearbeite/Verwalte Profile" +#: mod/install.php:327 +msgid "Command line PHP" +msgstr "Kommandozeilen-PHP" -#: mod/display.php:479 -msgid "Item has been removed." -msgstr "Eintrag wurde entfernt." +#: mod/install.php:336 +msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" +msgstr "Die ausführbare Datei von PHP stimmt nicht mit der PHP cli Version überein (es könnte sich um die cgi-fgci Version handeln)" -#: mod/admin.php:92 -msgid "Theme settings updated." -msgstr "Themeneinstellungen aktualisiert." +#: mod/install.php:337 +msgid "Found PHP version: " +msgstr "Gefundene PHP Version:" -#: mod/admin.php:157 mod/admin.php:975 -msgid "Site" -msgstr "Seite" +#: mod/install.php:339 +msgid "PHP cli binary" +msgstr "PHP CLI Binary" -#: mod/admin.php:158 mod/admin.php:909 mod/admin.php:1425 mod/admin.php:1441 -msgid "Users" -msgstr "Nutzer" +#: mod/install.php:350 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." +msgstr "Die Kommandozeilenversion von PHP auf Deinem System hat \"register_argc_argv\" nicht aktiviert." -#: mod/admin.php:160 mod/admin.php:1813 mod/admin.php:1863 -msgid "Themes" -msgstr "Themen" +#: mod/install.php:351 +msgid "This is required for message delivery to work." +msgstr "Dies wird für die Auslieferung von Nachrichten benötigt." -#: mod/admin.php:162 -msgid "DB updates" -msgstr "DB Updates" +#: mod/install.php:353 +msgid "PHP register_argc_argv" +msgstr "PHP register_argc_argv" -#: mod/admin.php:163 mod/admin.php:407 -msgid "Inspect Queue" -msgstr "Warteschlange Inspizieren" +#: mod/install.php:376 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" +msgstr "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen" -#: mod/admin.php:164 mod/admin.php:373 -msgid "Federation Statistics" -msgstr "Federation Statistik" +#: mod/install.php:377 +msgid "" +"If running under Windows, please see " +"\"http://www.php.net/manual/en/openssl.installation.php\"." +msgstr "Wenn der Server unter Windows läuft, schau Dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an." -#: mod/admin.php:178 mod/admin.php:189 mod/admin.php:1937 -msgid "Logs" -msgstr "Protokolle" +#: mod/install.php:379 +msgid "Generate encryption keys" +msgstr "Schlüssel erzeugen" -#: mod/admin.php:179 mod/admin.php:2005 -msgid "View Logs" -msgstr "Protokolle anzeigen" +#: mod/install.php:386 +msgid "libCurl PHP module" +msgstr "PHP: libCurl-Modul" -#: mod/admin.php:180 -msgid "probe address" -msgstr "Adresse untersuchen" +#: mod/install.php:387 +msgid "GD graphics PHP module" +msgstr "PHP: GD-Grafikmodul" -#: mod/admin.php:181 -msgid "check webfinger" -msgstr "Webfinger überprüfen" +#: mod/install.php:388 +msgid "OpenSSL PHP module" +msgstr "PHP: OpenSSL-Modul" -#: mod/admin.php:188 -msgid "Plugin Features" -msgstr "Plugin Features" +#: mod/install.php:389 +msgid "PDO or MySQLi PHP module" +msgstr "PDO oder MySQLi PHP Modul" -#: mod/admin.php:190 -msgid "diagnostics" -msgstr "Diagnose" +#: mod/install.php:390 +msgid "mb_string PHP module" +msgstr "PHP: mb_string-Modul" -#: mod/admin.php:191 -msgid "User registrations waiting for confirmation" -msgstr "Nutzeranmeldungen die auf Bestätigung warten" +#: mod/install.php:391 +msgid "XML PHP module" +msgstr "XML PHP Modul" -#: mod/admin.php:307 -msgid "unknown" -msgstr "Unbekannt" +#: mod/install.php:392 +msgid "iconv module" +msgstr "iconv module" + +#: mod/install.php:396 mod/install.php:398 +msgid "Apache mod_rewrite module" +msgstr "Apache mod_rewrite module" -#: mod/admin.php:366 +#: mod/install.php:396 msgid "" -"This page offers you some numbers to the known part of the federated social " -"network your Friendica node is part of. These numbers are not complete but " -"only reflect the part of the network your node is aware of." -msgstr "Diese Seite präsentiert einige Zahlen zu dem bekannten Teil des föderalen sozialen Netzwerks, von dem deine Friendica Installation ein Teil ist. Diese Zahlen sind nicht absolut und reflektieren nur den Teil des Netzwerks, den dein Knoten kennt." +"Error: Apache webserver mod-rewrite module is required but not installed." +msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert." -#: mod/admin.php:367 +#: mod/install.php:404 +msgid "Error: libCURL PHP module required but not installed." +msgstr "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert." + +#: mod/install.php:408 msgid "" -"The Auto Discovered Contact Directory feature is not enabled, it " -"will improve the data displayed here." -msgstr "Die Funktion um Automatisch ein Kontaktverzeichnis erstellen ist nicht aktiv. Es wird die hier angezeigten Daten verbessern." +"Error: GD graphics PHP module with JPEG support required but not installed." +msgstr "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert." -#: mod/admin.php:372 mod/admin.php:406 mod/admin.php:485 mod/admin.php:974 -#: mod/admin.php:1424 mod/admin.php:1542 mod/admin.php:1605 mod/admin.php:1812 -#: mod/admin.php:1862 mod/admin.php:1936 mod/admin.php:2004 -msgid "Administration" -msgstr "Administration" +#: mod/install.php:412 +msgid "Error: openssl PHP module required but not installed." +msgstr "Fehler: Das openssl-Modul von PHP ist nicht installiert." -#: mod/admin.php:379 -#, php-format -msgid "Currently this node is aware of %d nodes from the following platforms:" -msgstr "Momentan kennt dieser Knoten %d andere Knoten der folgenden Plattformen:" +#: mod/install.php:416 +msgid "Error: PDO or MySQLi PHP module required but not installed." +msgstr "Fehler: PDO oder MySQLi PHP Modul erforderlich, aber nicht installiert." -#: mod/admin.php:409 -msgid "ID" -msgstr "ID" +#: mod/install.php:420 +msgid "Error: The MySQL driver for PDO is not installed." +msgstr "Fehler: der MySQL Treiber für PDO ist nicht installiert" -#: mod/admin.php:410 -msgid "Recipient Name" -msgstr "Empfänger Name" +#: mod/install.php:424 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert." -#: mod/admin.php:411 -msgid "Recipient Profile" -msgstr "Empfänger Profil" +#: mod/install.php:428 +msgid "Error: iconv PHP module required but not installed." +msgstr "Fehler: Das iconv-Modul von PHP ist nicht installiert." -#: mod/admin.php:413 -msgid "Created" -msgstr "Erstellt" +#: mod/install.php:438 +msgid "Error, XML PHP module required but not installed." +msgstr "Fehler: XML PHP Modul erforderlich aber nicht installiert." -#: mod/admin.php:414 -msgid "Last Tried" -msgstr "Zuletzt versucht" +#: mod/install.php:450 +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 Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun." -#: mod/admin.php:415 +#: mod/install.php:451 msgid "" -"This page lists the content of the queue for outgoing postings. These are " -"postings the initial delivery failed for. They will be resend later and " -"eventually deleted if the delivery fails permanently." -msgstr "Auf dieser Seite werden die in der Warteschlange eingereihten Beiträge aufgelistet. Bei diesen Beiträgen schlug die erste Zustellung fehl. Es wird später wiederholt versucht die Beiträge zuzustellen, bis sie schließlich gelöscht werden." +"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 "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast." -#: mod/admin.php:440 -#, php-format +#: mod/install.php:452 msgid "" -"Your DB still runs with MyISAM tables. You should change the engine type to " -"InnoDB. As Friendica will use InnoDB only features in the future, you should" -" change this! See here for a guide that may be helpful " -"converting the table engines. You may also use the " -"convert_innodb.sql in the /util directory of your " -"Friendica installation.
" -msgstr "Deine DB enthält einige Tabellen die noch auf MyISAM laufen. Du solltest den Engine-Type auf InnoDB umstellen, da Friendica in Zukunft einige InnoDB Features nutzen wird. Eine Anleitung zur Umstellung kannst du hier finden. Außerdem kannst du das convert_innodb.sql Skript verwenden, das du im /util Verzeichnis deiner Friendica Installation findest." +"At the end of this procedure, we will give you a text to save in a file " +"named .htconfig.php in your Friendica top folder." +msgstr "Nachdem Du alles ausgefüllt hast, erhältst Du einen Text, den Du in eine Datei namens .htconfig.php in Deinem Friendica-Wurzelverzeichnis kopieren musst." -#: mod/admin.php:445 +#: mod/install.php:453 msgid "" -"You are using a MySQL version which does not support all features that " -"Friendica uses. You should consider switching to MariaDB." -msgstr "Du verwendets eine MySQL Version die nicht alle Features unterstützt die Friendica verwendet. Wir empfehlen dir einen Wechsel auf MariaDB, falls dies möglich ist." +"You can alternatively skip this procedure and perform a manual installation." +" Please see the file \"INSTALL.txt\" for instructions." +msgstr "Alternativ kannst Du diesen Schritt aber auch überspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest Du in der Datei INSTALL.txt." -#: mod/admin.php:449 mod/admin.php:1373 -msgid "Normal Account" -msgstr "Normales Konto" +#: mod/install.php:456 +msgid ".htconfig.php is writable" +msgstr "Schreibrechte auf .htconfig.php" -#: mod/admin.php:450 mod/admin.php:1374 -msgid "Soapbox Account" -msgstr "Marktschreier-Konto" +#: mod/install.php:466 +msgid "" +"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " +"compiles templates to PHP to speed up rendering." +msgstr "Friendica nutzt die Smarty3 Template Engine um die Webansichten zu rendern. Smarty3 kompiliert Templates zu PHP um das Rendern zu beschleunigen." -#: mod/admin.php:451 mod/admin.php:1375 -msgid "Community/Celebrity Account" -msgstr "Forum/Promi-Konto" +#: mod/install.php:467 +msgid "" +"In order to store these compiled templates, the web server needs to have " +"write access to the directory view/smarty3/ under the Friendica top level " +"folder." +msgstr "Um diese kompilierten Templates zu speichern benötigt der Webserver Schreibrechte zum Verzeichnis view/smarty3/ im obersten Ordner von Friendica." -#: mod/admin.php:452 mod/admin.php:1376 -msgid "Automatic Friend Account" -msgstr "Automatisches Freundekonto" +#: mod/install.php:468 +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 Webserver läuft (z.B. www-data) Schreibrechte zu diesem Verzeichnis hat." -#: mod/admin.php:453 -msgid "Blog Account" -msgstr "Blog-Konto" +#: mod/install.php:469 +msgid "" +"Note: as a security measure, you should give the web server write access to " +"view/smarty3/ only--not the template files (.tpl) that it contains." +msgstr "Hinweis: aus Sicherheitsgründen solltest Du dem Webserver nur Schreibrechte für view/smarty3/ geben -- Nicht den Templatedateien (.tpl) die sie enthalten." -#: mod/admin.php:454 -msgid "Private Forum" -msgstr "Privates Forum" +#: mod/install.php:472 +msgid "view/smarty3 is writable" +msgstr "view/smarty3 ist schreibbar" -#: mod/admin.php:480 -msgid "Message queues" -msgstr "Nachrichten-Warteschlangen" +#: mod/install.php:488 +msgid "" +"Url rewrite in .htaccess is not working. Check your server configuration." +msgstr "Umschreiben der URLs in der .htaccess funktioniert nicht. Überprüfe die Konfiguration des Servers." -#: mod/admin.php:486 -msgid "Summary" -msgstr "Zusammenfassung" +#: mod/install.php:490 +msgid "Url rewrite is working" +msgstr "URL rewrite funktioniert" -#: mod/admin.php:489 -msgid "Registered users" -msgstr "Registrierte Nutzer" +#: mod/install.php:509 +msgid "ImageMagick PHP extension is not installed" +msgstr "ImageMagicx PHP Erweiterung ist nicht installiert." -#: mod/admin.php:491 -msgid "Pending registrations" -msgstr "Anstehende Anmeldungen" +#: mod/install.php:511 +msgid "ImageMagick PHP extension is installed" +msgstr "ImageMagick PHP Erweiterung ist installiert" -#: mod/admin.php:492 -msgid "Version" -msgstr "Version" +#: mod/install.php:513 +msgid "ImageMagick supports GIF" +msgstr "ImageMagick unterstützt GIF" -#: mod/admin.php:497 -msgid "Active plugins" -msgstr "Aktive Plugins" +#: mod/install.php:520 +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 Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen." -#: mod/admin.php:522 -msgid "Can not parse base url. Must have at least ://" -msgstr "Die Basis-URL konnte nicht analysiert werden. Sie muss mindestens aus :// bestehen" +#: mod/install.php:545 +msgid "

What next

" +msgstr "

Wie geht es weiter?

" -#: mod/admin.php:827 -msgid "RINO2 needs mcrypt php extension to work." -msgstr "RINO2 benötigt die PHP Extension mcrypt." +#: mod/install.php:546 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the " +"poller." +msgstr "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten." -#: mod/admin.php:835 -msgid "Site settings updated." -msgstr "Seiteneinstellungen aktualisiert." +#: mod/item.php:116 +msgid "Unable to locate original post." +msgstr "Konnte den Originalbeitrag nicht finden." -#: mod/admin.php:892 -msgid "No community page" -msgstr "Keine Gemeinschaftsseite" +#: mod/item.php:344 +msgid "Empty post discarded." +msgstr "Leerer Beitrag wurde verworfen." -#: mod/admin.php:893 -msgid "Public postings from users of this site" -msgstr "Öffentliche Beiträge von Nutzer_innen dieser Seite" +#: mod/item.php:904 +msgid "System error. Post not saved." +msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden." -#: mod/admin.php:894 -msgid "Global community page" -msgstr "Globale Gemeinschaftsseite" +#: mod/item.php:995 +#, php-format +msgid "" +"This message was sent to you by %s, a member of the Friendica social " +"network." +msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica." -#: mod/admin.php:900 -msgid "At post arrival" -msgstr "Beim Empfang von Nachrichten" +#: mod/item.php:997 +#, php-format +msgid "You may visit them online at %s" +msgstr "Du kannst sie online unter %s besuchen" -#: mod/admin.php:910 -msgid "Users, Global Contacts" -msgstr "Nutzer, globale Kontakte" +#: mod/item.php:998 +msgid "" +"Please contact the sender by replying to this post if you do not wish to " +"receive these messages." +msgstr "Falls Du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem Du auf diese Nachricht antwortest." -#: mod/admin.php:911 -msgid "Users, Global Contacts/fallback" -msgstr "Nutzer, globale Kontakte / Fallback" +#: mod/item.php:1002 +#, php-format +msgid "%s posted an update." +msgstr "%s hat ein Update veröffentlicht." -#: mod/admin.php:915 -msgid "One month" -msgstr "ein Monat" +#: mod/notifications.php:35 +msgid "Invalid request identifier." +msgstr "Invalid request identifier." -#: mod/admin.php:916 -msgid "Three months" -msgstr "drei Monate" +#: mod/notifications.php:44 mod/notifications.php:180 +#: mod/notifications.php:227 +msgid "Discard" +msgstr "Verwerfen" -#: mod/admin.php:917 -msgid "Half a year" -msgstr "ein halbes Jahr" +#: mod/notifications.php:105 +msgid "Network Notifications" +msgstr "Netzwerk Benachrichtigungen" -#: mod/admin.php:918 -msgid "One year" -msgstr "ein Jahr" +#: mod/notifications.php:117 +msgid "Personal Notifications" +msgstr "Persönliche Benachrichtigungen" -#: mod/admin.php:923 -msgid "Multi user instance" -msgstr "Mehrbenutzer Instanz" +#: mod/notifications.php:123 +msgid "Home Notifications" +msgstr "Pinnwand Benachrichtigungen" -#: mod/admin.php:946 -msgid "Closed" -msgstr "Geschlossen" +#: mod/notifications.php:152 +msgid "Show Ignored Requests" +msgstr "Zeige ignorierte Anfragen" -#: mod/admin.php:947 -msgid "Requires approval" -msgstr "Bedarf der Zustimmung" +#: mod/notifications.php:152 +msgid "Hide Ignored Requests" +msgstr "Verberge ignorierte Anfragen" -#: mod/admin.php:948 -msgid "Open" -msgstr "Offen" +#: mod/notifications.php:164 mod/notifications.php:234 +msgid "Notification type: " +msgstr "Benachrichtigungstyp: " -#: mod/admin.php:952 -msgid "No SSL policy, links will track page SSL state" -msgstr "Keine SSL Richtlinie, Links werden das verwendete Protokoll beibehalten" +#: mod/notifications.php:167 +#, php-format +msgid "suggested by %s" +msgstr "vorgeschlagen von %s" -#: mod/admin.php:953 -msgid "Force all links to use SSL" -msgstr "SSL für alle Links erzwingen" +#: mod/notifications.php:173 mod/notifications.php:252 +msgid "Post a new friend activity" +msgstr "Neue-Kontakt Nachricht senden" -#: mod/admin.php:954 -msgid "Self-signed certificate, use SSL for local links only (discouraged)" -msgstr "Selbst-unterzeichnetes Zertifikat, SSL nur für lokale Links verwenden (nicht empfohlen)" +#: mod/notifications.php:173 mod/notifications.php:252 +msgid "if applicable" +msgstr "falls anwendbar" -#: mod/admin.php:978 -msgid "File upload" -msgstr "Datei hochladen" +#: mod/notifications.php:176 mod/notifications.php:261 mod/admin.php:1506 +msgid "Approve" +msgstr "Genehmigen" -#: mod/admin.php:979 -msgid "Policies" -msgstr "Regeln" +#: mod/notifications.php:195 +msgid "Claims to be known to you: " +msgstr "Behauptet Dich zu kennen: " -#: mod/admin.php:981 -msgid "Auto Discovered Contact Directory" -msgstr "Automatisch ein Kontaktverzeichnis erstellen" +#: mod/notifications.php:196 +msgid "yes" +msgstr "ja" -#: mod/admin.php:982 -msgid "Performance" -msgstr "Performance" +#: mod/notifications.php:196 +msgid "no" +msgstr "nein" -#: mod/admin.php:983 -msgid "Worker" -msgstr "Worker" +#: mod/notifications.php:197 mod/notifications.php:202 +msgid "Shall your connection be bidirectional or not?" +msgstr "Soll die Verbindung beidseitig sein oder nicht?" -#: mod/admin.php:984 +#: mod/notifications.php:198 mod/notifications.php:203 +#, php-format msgid "" -"Relocate - WARNING: advanced function. Could make this server unreachable." -msgstr "Umsiedeln - WARNUNG: Könnte diesen Server unerreichbar machen." - -#: mod/admin.php:987 -msgid "Site name" -msgstr "Seitenname" - -#: mod/admin.php:988 -msgid "Host name" -msgstr "Host Name" +"Accepting %s as a friend allows %s to subscribe to your posts, and you will " +"also receive updates from them in your news feed." +msgstr "Akzeptierst du %s als Kontakt, erlaubst du damit das Lesen deiner Beiträge und abonnierst selbst auch die Beiträge von %s." -#: mod/admin.php:989 -msgid "Sender Email" -msgstr "Absender für Emails" +#: mod/notifications.php:199 +#, php-format +msgid "" +"Accepting %s as a subscriber allows them to subscribe to your posts, but you" +" will not receive updates from them in your news feed." +msgstr "Wenn du %s als Abonnent akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten." -#: mod/admin.php:989 +#: mod/notifications.php:204 +#, php-format msgid "" -"The email address your server shall use to send notification emails from." -msgstr "Die E-Mail Adresse die dein Server zum Versenden von Benachrichtigungen verwenden soll." +"Accepting %s as a sharer allows them to subscribe to your posts, but you " +"will not receive updates from them in your news feed." +msgstr "Wenn du %s als Teilenden akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten." -#: mod/admin.php:990 -msgid "Banner/Logo" -msgstr "Banner/Logo" +#: mod/notifications.php:215 +msgid "Friend" +msgstr "Kontakt" -#: mod/admin.php:991 -msgid "Shortcut icon" -msgstr "Shortcut Icon" +#: mod/notifications.php:216 +msgid "Sharer" +msgstr "Teilenden" -#: mod/admin.php:991 -msgid "Link to an icon that will be used for browsers." -msgstr "Link zu einem Icon, das Browser verwenden werden." +#: mod/notifications.php:216 +msgid "Subscriber" +msgstr "Abonnent" -#: mod/admin.php:992 -msgid "Touch icon" -msgstr "Touch Icon" +#: mod/notifications.php:272 +msgid "No introductions." +msgstr "Keine Kontaktanfragen." -#: mod/admin.php:992 -msgid "Link to an icon that will be used for tablets and mobiles." -msgstr "Link zu einem Icon das Tablets und Handies verwenden sollen." +#: mod/notifications.php:313 +msgid "Show unread" +msgstr "Ungelesene anzeigen" -#: mod/admin.php:993 -msgid "Additional Info" -msgstr "Zusätzliche Informationen" +#: mod/notifications.php:313 +msgid "Show all" +msgstr "Alle anzeigen" -#: mod/admin.php:993 +#: mod/notifications.php:319 #, php-format -msgid "" -"For public servers: you can add additional information here that will be " -"listed at %s/siteinfo." -msgstr "Für öffentliche Server kannst Du hier zusätzliche Informationen angeben, die dann auf %s/siteinfo angezeigt werden." +msgid "No more %s notifications." +msgstr "Keine weiteren %s Benachrichtigungen" -#: mod/admin.php:994 -msgid "System language" -msgstr "Systemsprache" +#: mod/ping.php:270 +msgid "{0} wants to be your friend" +msgstr "{0} möchte mit Dir in Kontakt treten" -#: mod/admin.php:995 -msgid "System theme" -msgstr "Systemweites Theme" +#: mod/ping.php:285 +msgid "{0} sent you a message" +msgstr "{0} schickte Dir eine Nachricht" -#: mod/admin.php:995 -msgid "" -"Default system theme - may be over-ridden by user profiles - change theme settings" -msgstr "Vorgabe für das System-Theme - kann von Benutzerprofilen überschrieben werden - Theme-Einstellungen ändern" +#: mod/ping.php:300 +msgid "{0} requested registration" +msgstr "{0} möchte sich registrieren" -#: mod/admin.php:996 -msgid "Mobile system theme" -msgstr "Systemweites mobiles Theme" +#: mod/admin.php:96 +msgid "Theme settings updated." +msgstr "Themeneinstellungen aktualisiert." -#: mod/admin.php:996 -msgid "Theme for mobile devices" -msgstr "Thema für mobile Geräte" +#: mod/admin.php:165 mod/admin.php:1054 +msgid "Site" +msgstr "Seite" -#: mod/admin.php:997 -msgid "SSL link policy" -msgstr "Regeln für SSL Links" +#: mod/admin.php:166 mod/admin.php:988 mod/admin.php:1498 mod/admin.php:1514 +msgid "Users" +msgstr "Nutzer" -#: mod/admin.php:997 -msgid "Determines whether generated links should be forced to use SSL" -msgstr "Bestimmt, ob generierte Links SSL verwenden müssen" +#: mod/admin.php:168 mod/admin.php:1892 mod/admin.php:1942 +msgid "Themes" +msgstr "Themen" -#: mod/admin.php:998 -msgid "Force SSL" -msgstr "Erzwinge SSL" +#: mod/admin.php:170 +msgid "DB updates" +msgstr "DB Updates" -#: mod/admin.php:998 -msgid "" -"Force all Non-SSL requests to SSL - Attention: on some systems it could lead" -" to endless loops." -msgstr "Erzinge alle Nicht-SSL Anfragen auf SSL - Achtung: auf manchen Systemen verursacht dies eine Endlosschleife." +#: mod/admin.php:171 mod/admin.php:512 +msgid "Inspect Queue" +msgstr "Warteschlange Inspizieren" -#: mod/admin.php:999 -msgid "Old style 'Share'" -msgstr "Altes \"Teilen\" Element" +#: mod/admin.php:172 mod/admin.php:288 +msgid "Server Blocklist" +msgstr "Server Blockliste" -#: mod/admin.php:999 -msgid "Deactivates the bbcode element 'share' for repeating items." -msgstr "Deaktiviert das BBCode Element \"share\" beim Wiederholen von Beiträgen." +#: mod/admin.php:173 mod/admin.php:478 +msgid "Federation Statistics" +msgstr "Federation Statistik" -#: mod/admin.php:1000 -msgid "Hide help entry from navigation menu" -msgstr "Verberge den Menüeintrag für die Hilfe im Navigationsmenü" +#: mod/admin.php:187 mod/admin.php:198 mod/admin.php:2016 +msgid "Logs" +msgstr "Protokolle" -#: mod/admin.php:1000 -msgid "" -"Hides the menu entry for the Help pages from the navigation menu. You can " -"still access it calling /help directly." -msgstr "Verbirgt den Menüeintrag für die Hilfe-Seiten im Navigationsmenü. Die Seiten können weiterhin über /help aufgerufen werden." +#: mod/admin.php:188 mod/admin.php:2084 +msgid "View Logs" +msgstr "Protokolle anzeigen" -#: mod/admin.php:1001 -msgid "Single user instance" -msgstr "Ein-Nutzer Instanz" +#: mod/admin.php:189 +msgid "probe address" +msgstr "Adresse untersuchen" -#: mod/admin.php:1001 -msgid "Make this instance multi-user or single-user for the named user" -msgstr "Regelt ob es sich bei dieser Instanz um eine ein Personen Installation oder eine Installation mit mehr als einem Nutzer handelt." +#: mod/admin.php:190 +msgid "check webfinger" +msgstr "Webfinger überprüfen" -#: mod/admin.php:1002 -msgid "Maximum image size" -msgstr "Maximale Bildgröße" +#: mod/admin.php:197 +msgid "Plugin Features" +msgstr "Plugin Features" -#: mod/admin.php:1002 -msgid "" -"Maximum size in bytes of uploaded images. Default is 0, which means no " -"limits." -msgstr "Maximale Uploadgröße von Bildern in Bytes. Standard ist 0, d.h. ohne Limit." +#: mod/admin.php:199 +msgid "diagnostics" +msgstr "Diagnose" -#: mod/admin.php:1003 -msgid "Maximum image length" -msgstr "Maximale Bildlänge" +#: mod/admin.php:200 +msgid "User registrations waiting for confirmation" +msgstr "Nutzeranmeldungen die auf Bestätigung warten" -#: mod/admin.php:1003 -msgid "" -"Maximum length in pixels of the longest side of uploaded images. Default is " -"-1, which means no limits." -msgstr "Maximale Länge in Pixeln der längsten Seite eines hoch geladenen Bildes. Grundeinstellung ist -1 was keine Einschränkung bedeutet." +#: mod/admin.php:279 +msgid "The blocked domain" +msgstr "Die blockierte Domain" -#: mod/admin.php:1004 -msgid "JPEG image quality" -msgstr "Qualität des JPEG Bildes" +#: mod/admin.php:280 mod/admin.php:293 +msgid "The reason why you blocked this domain." +msgstr "Die Begründung warum du diese Domain blockiert hast." -#: mod/admin.php:1004 -msgid "" -"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " -"100, which is full quality." -msgstr "Hoch geladene JPEG Bilder werden mit dieser Qualität [0-100] gespeichert. Grundeinstellung ist 100, kein Qualitätsverlust." +#: mod/admin.php:281 +msgid "Delete domain" +msgstr "Domain löschen" -#: mod/admin.php:1006 -msgid "Register policy" -msgstr "Registrierungsmethode" +#: mod/admin.php:281 +msgid "Check to delete this entry from the blocklist" +msgstr "Markieren, um diesen Eintrag von der Blocklist zu entfernen" -#: mod/admin.php:1007 -msgid "Maximum Daily Registrations" -msgstr "Maximum täglicher Registrierungen" +#: mod/admin.php:287 mod/admin.php:477 mod/admin.php:511 mod/admin.php:586 +#: mod/admin.php:1053 mod/admin.php:1497 mod/admin.php:1615 mod/admin.php:1678 +#: mod/admin.php:1891 mod/admin.php:1941 mod/admin.php:2015 mod/admin.php:2083 +msgid "Administration" +msgstr "Administration" -#: mod/admin.php:1007 +#: mod/admin.php:289 msgid "" -"If registration is permitted above, this sets the maximum number of new user" -" registrations to accept per day. If register is set to closed, this " -"setting has no effect." -msgstr "Wenn die Registrierung weiter oben erlaubt ist, regelt dies die maximale Anzahl von Neuanmeldungen pro Tag. Wenn die Registrierung geschlossen ist, hat diese Einstellung keinen Effekt." +"This page can be used to define a black list of servers from the federated " +"network that are not allowed to interact with your node. For all entered " +"domains you should also give a reason why you have blocked the remote " +"server." +msgstr "Auf dieser Seite kannst du die Liste der blockierten Domains aus dem föderalen Netzwerk verwalten, denen es untersagt ist mit deinem Knoten zu interagieren. Für jede der blockierten Domains musst du außerdem einen Grund für die Sperrung angeben." -#: mod/admin.php:1008 -msgid "Register text" -msgstr "Registrierungstext" +#: mod/admin.php:290 +msgid "" +"The list of blocked servers will be made publically available on the " +"/friendica page so that your users and people investigating communication " +"problems can find the reason easily." +msgstr "Die Liste der blockierten Domains wird auf der /friendica Seite öffentlich einsehbar gemacht, damit deine Nutzer und Personen die Kommunikationsprobleme erkunden, die Ursachen einfach finden können." -#: mod/admin.php:1008 -msgid "Will be displayed prominently on the registration page." -msgstr "Wird gut sichtbar auf der Registrierungsseite angezeigt." +#: mod/admin.php:291 +msgid "Add new entry to block list" +msgstr "Neuen Eintrag in die Blockliste" -#: mod/admin.php:1009 -msgid "Accounts abandoned after x days" -msgstr "Nutzerkonten gelten nach x Tagen als unbenutzt" +#: mod/admin.php:292 +msgid "Server Domain" +msgstr "Domain des Servers" -#: mod/admin.php:1009 +#: mod/admin.php:292 msgid "" -"Will not waste system resources polling external sites for abandonded " -"accounts. Enter 0 for no time limit." -msgstr "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Konten nicht mehr benutzt werden. 0 eingeben für kein Limit." +"The domain of the new server to add to the block list. Do not include the " +"protocol." +msgstr "Der Domain-Name des Servers der geblockt werden soll. Gib das Protokoll nicht mit an!" -#: mod/admin.php:1010 -msgid "Allowed friend domains" -msgstr "Erlaubte Domains für Kontakte" - -#: mod/admin.php:1010 -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 Kontakte erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." +#: mod/admin.php:293 +msgid "Block reason" +msgstr "Begründung der Blockierung" -#: mod/admin.php:1011 -msgid "Allowed email domains" -msgstr "Erlaubte Domains für E-Mails" +#: mod/admin.php:294 +msgid "Add Entry" +msgstr "Eintrag hinzufügen" -#: mod/admin.php:1011 -msgid "" -"Comma separated list of domains which are allowed in email addresses for " -"registrations to this site. Wildcards are accepted. Empty to allow any " -"domains" -msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." +#: mod/admin.php:295 +msgid "Save changes to the blocklist" +msgstr "Änderungen der Blockliste speichern" -#: mod/admin.php:1012 -msgid "Block public" -msgstr "Öffentlichen Zugriff blockieren" +#: mod/admin.php:296 +msgid "Current Entries in the Blocklist" +msgstr "Aktuelle Einträge der Blockliste" -#: mod/admin.php:1012 -msgid "" -"Check to block public access to all otherwise public personal pages on this " -"site unless you are currently logged in." -msgstr "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist." +#: mod/admin.php:299 +msgid "Delete entry from blocklist" +msgstr "Eintrag von der Blockliste entfernen" -#: mod/admin.php:1013 -msgid "Force publish" -msgstr "Erzwinge Veröffentlichung" +#: mod/admin.php:302 +msgid "Delete entry from blocklist?" +msgstr "Eintrag von der Blockliste entfernen?" -#: mod/admin.php:1013 -msgid "" -"Check to force all profiles on this site to be listed in the site directory." -msgstr "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen." +#: mod/admin.php:327 +msgid "Server added to blocklist." +msgstr "Server zur Blockliste hinzugefügt." -#: mod/admin.php:1014 -msgid "Global directory URL" -msgstr "URL des weltweiten Verzeichnisses" +#: mod/admin.php:343 +msgid "Site blocklist updated." +msgstr "Blockliste aktualisiert." + +#: mod/admin.php:408 +msgid "unknown" +msgstr "Unbekannt" -#: mod/admin.php:1014 +#: mod/admin.php:471 msgid "" -"URL to the global directory. If this is not set, the global directory is " -"completely unavailable to the application." -msgstr "URL des weltweiten Verzeichnisses. Wenn diese nicht gesetzt ist, ist das Verzeichnis für die Applikation nicht erreichbar." +"This page offers you some numbers to the known part of the federated social " +"network your Friendica node is part of. These numbers are not complete but " +"only reflect the part of the network your node is aware of." +msgstr "Diese Seite präsentiert einige Zahlen zu dem bekannten Teil des föderalen sozialen Netzwerks, von dem deine Friendica Installation ein Teil ist. Diese Zahlen sind nicht absolut und reflektieren nur den Teil des Netzwerks, den dein Knoten kennt." -#: mod/admin.php:1015 -msgid "Allow threaded items" -msgstr "Erlaube Threads in Diskussionen" +#: mod/admin.php:472 +msgid "" +"The Auto Discovered Contact Directory feature is not enabled, it " +"will improve the data displayed here." +msgstr "Die Funktion um Automatisch ein Kontaktverzeichnis erstellen ist nicht aktiv. Es wird die hier angezeigten Daten verbessern." -#: mod/admin.php:1015 -msgid "Allow infinite level threading for items on this site." -msgstr "Erlaube ein unendliches Level für Threads auf dieser Seite." +#: mod/admin.php:484 +#, php-format +msgid "Currently this node is aware of %d nodes from the following platforms:" +msgstr "Momentan kennt dieser Knoten %d andere Knoten der folgenden Plattformen:" -#: mod/admin.php:1016 -msgid "Private posts by default for new users" -msgstr "Private Beiträge als Standard für neue Nutzer" +#: mod/admin.php:514 +msgid "ID" +msgstr "ID" -#: mod/admin.php:1016 -msgid "" -"Set default post permissions for all new members to the default privacy " -"group rather than public." -msgstr "Die Standard-Zugriffsrechte für neue Nutzer werden so gesetzt, dass als Voreinstellung in die private Gruppe gepostet wird anstelle von öffentlichen Beiträgen." +#: mod/admin.php:515 +msgid "Recipient Name" +msgstr "Empfänger Name" -#: mod/admin.php:1017 -msgid "Don't include post content in email notifications" -msgstr "Inhalte von Beiträgen nicht in E-Mail-Benachrichtigungen versenden" +#: mod/admin.php:516 +msgid "Recipient Profile" +msgstr "Empfänger Profil" -#: mod/admin.php:1017 -msgid "" -"Don't include the content of a post/comment/private message/etc. in the " -"email notifications that are sent out from this site, as a privacy measure." -msgstr "Inhalte von Beiträgen/Kommentaren/privaten Nachrichten/usw., zum Datenschutz nicht in E-Mail-Benachrichtigungen einbinden." +#: mod/admin.php:518 +msgid "Created" +msgstr "Erstellt" -#: mod/admin.php:1018 -msgid "Disallow public access to addons listed in the apps menu." -msgstr "Öffentlichen Zugriff auf Addons im Apps Menü verbieten." +#: mod/admin.php:519 +msgid "Last Tried" +msgstr "Zuletzt versucht" -#: mod/admin.php:1018 +#: mod/admin.php:520 msgid "" -"Checking this box will restrict addons listed in the apps menu to members " -"only." -msgstr "Wenn ausgewählt werden die im Apps Menü aufgeführten Addons nur angemeldeten Nutzern der Seite zur Verfügung gestellt." +"This page lists the content of the queue for outgoing postings. These are " +"postings the initial delivery failed for. They will be resend later and " +"eventually deleted if the delivery fails permanently." +msgstr "Auf dieser Seite werden die in der Warteschlange eingereihten Beiträge aufgelistet. Bei diesen Beiträgen schlug die erste Zustellung fehl. Es wird später wiederholt versucht die Beiträge zuzustellen, bis sie schließlich gelöscht werden." -#: mod/admin.php:1019 -msgid "Don't embed private images in posts" -msgstr "Private Bilder nicht in Beiträgen einbetten." +#: mod/admin.php:545 +#, php-format +msgid "" +"Your DB still runs with MyISAM tables. You should change the engine type to " +"InnoDB. As Friendica will use InnoDB only features in the future, you should" +" change this! See here for a guide that may be helpful " +"converting the table engines. You may also use the command php " +"include/dbstructure.php toinnodb of your Friendica installation for an " +"automatic conversion.
" +msgstr "Deine DB verwendet derzeit noch MyISAM Tabellen. Du solltest die Datenbank Engine auf InnoDB umstellen, da Friendica in Zukunft InnoDB Features verwenden wird. Eine Anleitung zur Umstellung der Datenbank kannst du hier finden. Du kannst außerdem mit dem Befehl php include/dbstructure.php toinnodb auf der Kommandozeile die Umstellung automatisch vornehmen lassen." -#: mod/admin.php:1019 +#: mod/admin.php:550 msgid "" -"Don't replace locally-hosted private photos in posts with an embedded copy " -"of the image. This means that contacts who receive posts containing private " -"photos will have to authenticate and load each image, which may take a " -"while." -msgstr "Ersetze lokal gehostete private Fotos in Beiträgen nicht mit einer eingebetteten Kopie des Bildes. Dies bedeutet, dass Kontakte, die Beiträge mit privaten Fotos erhalten sich zunächst auf den jeweiligen Servern authentifizieren müssen bevor die Bilder geladen und angezeigt werden, was eine gewisse Zeit dauert." +"You are using a MySQL version which does not support all features that " +"Friendica uses. You should consider switching to MariaDB." +msgstr "Du verwendets eine MySQL Version die nicht alle Features unterstützt die Friendica verwendet. Wir empfehlen dir einen Wechsel auf MariaDB, falls dies möglich ist." -#: mod/admin.php:1020 -msgid "Allow Users to set remote_self" -msgstr "Nutzern erlauben das remote_self Flag zu setzen" +#: mod/admin.php:554 mod/admin.php:1447 +msgid "Normal Account" +msgstr "Normales Konto" -#: mod/admin.php:1020 -msgid "" -"With checking this, every user is allowed to mark every contact as a " -"remote_self in the repair contact dialog. Setting this flag on a contact " -"causes mirroring every posting of that contact in the users stream." -msgstr "Ist dies ausgewählt kann jeder Nutzer jeden seiner Kontakte als remote_self (entferntes Konto) im Kontakt reparieren Dialog markieren. Nach dem setzten dieses Flags werden alle Top-Level Beiträge dieser Kontakte automatisch in den Stream dieses Nutzers gepostet." +#: mod/admin.php:555 mod/admin.php:1448 +msgid "Soapbox Account" +msgstr "Marktschreier-Konto" -#: mod/admin.php:1021 -msgid "Block multiple registrations" -msgstr "Unterbinde Mehrfachregistrierung" +#: mod/admin.php:556 mod/admin.php:1449 +msgid "Community/Celebrity Account" +msgstr "Forum/Promi-Konto" -#: mod/admin.php:1021 -msgid "Disallow users to register additional accounts for use as pages." -msgstr "Benutzern nicht erlauben, weitere Konten als zusätzliche Profile anzulegen." +#: mod/admin.php:557 mod/admin.php:1450 +msgid "Automatic Friend Account" +msgstr "Automatisches Freundekonto" -#: mod/admin.php:1022 -msgid "OpenID support" -msgstr "OpenID Unterstützung" +#: mod/admin.php:558 +msgid "Blog Account" +msgstr "Blog-Konto" -#: mod/admin.php:1022 -msgid "OpenID support for registration and logins." -msgstr "OpenID-Unterstützung für Registrierung und Login." +#: mod/admin.php:559 +msgid "Private Forum" +msgstr "Privates Forum" -#: mod/admin.php:1023 -msgid "Fullname check" -msgstr "Namen auf Vollständigkeit überprüfen" +#: mod/admin.php:581 +msgid "Message queues" +msgstr "Nachrichten-Warteschlangen" -#: mod/admin.php:1023 -msgid "" -"Force users to register with a space between firstname and lastname in Full " -"name, as an antispam measure" -msgstr "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden." +#: mod/admin.php:587 +msgid "Summary" +msgstr "Zusammenfassung" -#: mod/admin.php:1024 -msgid "UTF-8 Regular expressions" -msgstr "UTF-8 Reguläre Ausdrücke" +#: mod/admin.php:589 +msgid "Registered users" +msgstr "Registrierte Nutzer" -#: mod/admin.php:1024 -msgid "Use PHP UTF8 regular expressions" -msgstr "PHP UTF8 Ausdrücke verwenden" +#: mod/admin.php:591 +msgid "Pending registrations" +msgstr "Anstehende Anmeldungen" -#: mod/admin.php:1025 -msgid "Community Page Style" -msgstr "Art der Gemeinschaftsseite" +#: mod/admin.php:592 +msgid "Version" +msgstr "Version" -#: mod/admin.php:1025 -msgid "" -"Type of community page to show. 'Global community' shows every public " -"posting from an open distributed network that arrived on this server." -msgstr "Welche Art der Gemeinschaftsseite soll verwendet werden? Globale Gemeinschaftsseite zeigt alle öffentlichen Beiträge eines offenen dezentralen Netzwerks an die auf diesem Server eintreffen." +#: mod/admin.php:597 +msgid "Active plugins" +msgstr "Aktive Plugins" -#: mod/admin.php:1026 -msgid "Posts per user on community page" -msgstr "Anzahl der Beiträge pro Benutzer auf der Gemeinschaftsseite" +#: mod/admin.php:622 +msgid "Can not parse base url. Must have at least ://" +msgstr "Die Basis-URL konnte nicht analysiert werden. Sie muss mindestens aus :// bestehen" -#: mod/admin.php:1026 -msgid "" -"The maximum number of posts per user on the community page. (Not valid for " -"'Global Community')" -msgstr "Die Anzahl der Beiträge die von jedem Nutzer maximal auf der Gemeinschaftsseite angezeigt werden sollen. Dieser Parameter wird nicht für die Globale Gemeinschaftsseite genutzt." +#: mod/admin.php:914 +msgid "Site settings updated." +msgstr "Seiteneinstellungen aktualisiert." -#: mod/admin.php:1027 -msgid "Enable OStatus support" -msgstr "OStatus Unterstützung aktivieren" +#: mod/admin.php:971 +msgid "No community page" +msgstr "Keine Gemeinschaftsseite" -#: mod/admin.php:1027 -msgid "" -"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " -"communications in OStatus are public, so privacy warnings will be " -"occasionally displayed." -msgstr "Biete die eingebaute OStatus (iStatusNet, GNU Social, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, Privatsphäre Warnungen werden nur bei Bedarf angezeigt." +#: mod/admin.php:972 +msgid "Public postings from users of this site" +msgstr "Öffentliche Beiträge von Nutzer_innen dieser Seite" -#: mod/admin.php:1028 -msgid "OStatus conversation completion interval" -msgstr "Intervall zum Vervollständigen von OStatus Unterhaltungen" +#: mod/admin.php:973 +msgid "Global community page" +msgstr "Globale Gemeinschaftsseite" -#: mod/admin.php:1028 -msgid "" -"How often shall the poller check for new entries in OStatus conversations? " -"This can be a very ressource task." -msgstr "Wie oft soll der Poller checken ob es neue Nachrichten in OStatus Unterhaltungen gibt die geladen werden müssen. Je nach Anzahl der OStatus Kontakte könnte dies ein sehr Ressourcen lastiger Job sein." +#: mod/admin.php:979 +msgid "At post arrival" +msgstr "Beim Empfang von Nachrichten" -#: mod/admin.php:1029 -msgid "Only import OStatus threads from our contacts" -msgstr "Nur OStatus Konversationen unserer Kontakte importieren" +#: mod/admin.php:989 +msgid "Users, Global Contacts" +msgstr "Nutzer, globale Kontakte" -#: mod/admin.php:1029 -msgid "" -"Normally we import every content from our OStatus contacts. With this option" -" we only store threads that are started by a contact that is known on our " -"system." -msgstr "Normalerweise werden alle Inhalte von OStatus Kontakten importiert. Mit dieser Option werden nur solche Konversationen gespeichert, die von Kontakten der Nutzer dieses Knotens gestartet wurden." +#: mod/admin.php:990 +msgid "Users, Global Contacts/fallback" +msgstr "Nutzer, globale Kontakte / Fallback" -#: mod/admin.php:1030 -msgid "OStatus support can only be enabled if threading is enabled." -msgstr "OStatus Unterstützung kann nur aktiviert werden wenn \"Threading\" aktiviert ist. " +#: mod/admin.php:994 +msgid "One month" +msgstr "ein Monat" -#: mod/admin.php:1032 -msgid "" -"Diaspora support can't be enabled because Friendica was installed into a sub" -" directory." -msgstr "Diaspora Unterstützung kann nicht aktiviert werden da Friendica in ein Unterverzeichnis installiert ist." +#: mod/admin.php:995 +msgid "Three months" +msgstr "drei Monate" -#: mod/admin.php:1033 -msgid "Enable Diaspora support" -msgstr "Diaspora Unterstützung aktivieren" +#: mod/admin.php:996 +msgid "Half a year" +msgstr "ein halbes Jahr" -#: mod/admin.php:1033 -msgid "Provide built-in Diaspora network compatibility." -msgstr "Verwende die eingebaute Diaspora-Verknüpfung." +#: mod/admin.php:997 +msgid "One year" +msgstr "ein Jahr" -#: mod/admin.php:1034 -msgid "Only allow Friendica contacts" -msgstr "Nur Friendica-Kontakte erlauben" +#: mod/admin.php:1002 +msgid "Multi user instance" +msgstr "Mehrbenutzer Instanz" -#: mod/admin.php:1034 -msgid "" -"All contacts must use Friendica protocols. All other built-in communication " -"protocols disabled." -msgstr "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert." +#: mod/admin.php:1025 +msgid "Closed" +msgstr "Geschlossen" -#: mod/admin.php:1035 -msgid "Verify SSL" -msgstr "SSL Überprüfen" +#: mod/admin.php:1026 +msgid "Requires approval" +msgstr "Bedarf der Zustimmung" -#: mod/admin.php:1035 -msgid "" -"If you wish, you can turn on strict certificate checking. This will mean you" -" cannot connect (at all) to self-signed SSL sites." -msgstr "Wenn gewollt, kann man hier eine strenge Zertifikatkontrolle einstellen. Das bedeutet, dass man zu keinen Seiten mit selbst unterzeichnetem SSL eine Verbindung herstellen kann." +#: mod/admin.php:1027 +msgid "Open" +msgstr "Offen" -#: mod/admin.php:1036 -msgid "Proxy user" -msgstr "Proxy Nutzer" +#: mod/admin.php:1031 +msgid "No SSL policy, links will track page SSL state" +msgstr "Keine SSL Richtlinie, Links werden das verwendete Protokoll beibehalten" -#: mod/admin.php:1037 -msgid "Proxy URL" -msgstr "Proxy URL" +#: mod/admin.php:1032 +msgid "Force all links to use SSL" +msgstr "SSL für alle Links erzwingen" -#: mod/admin.php:1038 -msgid "Network timeout" -msgstr "Netzwerk Wartezeit" +#: mod/admin.php:1033 +msgid "Self-signed certificate, use SSL for local links only (discouraged)" +msgstr "Selbst-unterzeichnetes Zertifikat, SSL nur für lokale Links verwenden (nicht empfohlen)" -#: mod/admin.php:1038 -msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." -msgstr "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)." +#: mod/admin.php:1057 +msgid "File upload" +msgstr "Datei hochladen" + +#: mod/admin.php:1058 +msgid "Policies" +msgstr "Regeln" + +#: mod/admin.php:1060 +msgid "Auto Discovered Contact Directory" +msgstr "Automatisch ein Kontaktverzeichnis erstellen" + +#: mod/admin.php:1061 +msgid "Performance" +msgstr "Performance" -#: mod/admin.php:1039 -msgid "Delivery interval" -msgstr "Zustellungsintervall" +#: mod/admin.php:1062 +msgid "Worker" +msgstr "Worker" -#: mod/admin.php:1039 +#: mod/admin.php:1063 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 an 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." +"Relocate - WARNING: advanced function. Could make this server unreachable." +msgstr "Umsiedeln - WARNUNG: Könnte diesen Server unerreichbar machen." -#: mod/admin.php:1040 -msgid "Poll interval" -msgstr "Abfrageintervall" +#: mod/admin.php:1066 +msgid "Site name" +msgstr "Seitenname" -#: mod/admin.php:1040 -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 an Sekunden, um die Systemlast zu reduzieren. Bei 0 Sekunden wird das Auslieferungsintervall verwendet." +#: mod/admin.php:1067 +msgid "Host name" +msgstr "Host Name" -#: mod/admin.php:1041 -msgid "Maximum Load Average" -msgstr "Maximum Load Average" +#: mod/admin.php:1068 +msgid "Sender Email" +msgstr "Absender für Emails" -#: mod/admin.php:1041 +#: mod/admin.php:1068 msgid "" -"Maximum system load before delivery and poll processes are deferred - " -"default 50." -msgstr "Maximale Systemlast bevor Verteil- und Empfangsprozesse verschoben werden - Standard 50" +"The email address your server shall use to send notification emails from." +msgstr "Die E-Mail Adresse die dein Server zum Versenden von Benachrichtigungen verwenden soll." -#: mod/admin.php:1042 -msgid "Maximum Load Average (Frontend)" -msgstr "Maximum Load Average (Frontend)" +#: mod/admin.php:1069 +msgid "Banner/Logo" +msgstr "Banner/Logo" -#: mod/admin.php:1042 -msgid "Maximum system load before the frontend quits service - default 50." -msgstr "Maximale Systemlast bevor Vordergrundprozesse pausiert werden - Standard 50." +#: mod/admin.php:1070 +msgid "Shortcut icon" +msgstr "Shortcut Icon" -#: mod/admin.php:1043 -msgid "Maximum table size for optimization" -msgstr "Maximale Tabellengröße zur Optimierung" +#: mod/admin.php:1070 +msgid "Link to an icon that will be used for browsers." +msgstr "Link zu einem Icon, das Browser verwenden werden." -#: mod/admin.php:1043 -msgid "" -"Maximum table size (in MB) for the automatic optimization - default 100 MB. " -"Enter -1 to disable it." -msgstr "Maximale Tabellengröße (in MB) für die automatische Optimierung - Standard 100 MB. Gib -1 für Deaktivierung ein." +#: mod/admin.php:1071 +msgid "Touch icon" +msgstr "Touch Icon" -#: mod/admin.php:1044 -msgid "Minimum level of fragmentation" -msgstr "Minimaler Fragmentationsgrad" +#: mod/admin.php:1071 +msgid "Link to an icon that will be used for tablets and mobiles." +msgstr "Link zu einem Icon das Tablets und Handies verwenden sollen." + +#: mod/admin.php:1072 +msgid "Additional Info" +msgstr "Zusätzliche Informationen" -#: mod/admin.php:1044 +#: mod/admin.php:1072 +#, php-format msgid "" -"Minimum fragmenation level to start the automatic optimization - default " -"value is 30%." -msgstr "Minimales Fragmentationsgrad von Datenbanktabellen um die automatische Optimierung einzuleiten - Standardwert ist 30%" +"For public servers: you can add additional information here that will be " +"listed at %s/siteinfo." +msgstr "Für öffentliche Server kannst Du hier zusätzliche Informationen angeben, die dann auf %s/siteinfo angezeigt werden." -#: mod/admin.php:1046 -msgid "Periodical check of global contacts" -msgstr "Regelmäßig globale Kontakte überprüfen" +#: mod/admin.php:1073 +msgid "System language" +msgstr "Systemsprache" + +#: mod/admin.php:1074 +msgid "System theme" +msgstr "Systemweites Theme" -#: mod/admin.php:1046 +#: mod/admin.php:1074 msgid "" -"If enabled, the global contacts are checked periodically for missing or " -"outdated data and the vitality of the contacts and servers." -msgstr "Wenn diese Option aktiviert ist, werden die globalen Kontakte regelmäßig auf fehlende oder veraltete Daten sowie auf Erreichbarkeit des Kontakts und des Servers überprüft." +"Default system theme - may be over-ridden by user profiles - change theme settings" +msgstr "Vorgabe für das System-Theme - kann von Benutzerprofilen überschrieben werden - Theme-Einstellungen ändern" -#: mod/admin.php:1047 -msgid "Days between requery" -msgstr "Tage zwischen erneuten Abfragen" +#: mod/admin.php:1075 +msgid "Mobile system theme" +msgstr "Systemweites mobiles Theme" -#: mod/admin.php:1047 -msgid "Number of days after which a server is requeried for his contacts." -msgstr "Legt das Abfrageintervall fest, nachdem ein Server erneut nach Kontakten abgefragt werden soll." +#: mod/admin.php:1075 +msgid "Theme for mobile devices" +msgstr "Thema für mobile Geräte" -#: mod/admin.php:1048 -msgid "Discover contacts from other servers" -msgstr "Neue Kontakte auf anderen Servern entdecken" +#: mod/admin.php:1076 +msgid "SSL link policy" +msgstr "Regeln für SSL Links" -#: mod/admin.php:1048 -msgid "" -"Periodically query other servers for contacts. You can choose between " -"'users': the users on the remote system, 'Global Contacts': active contacts " -"that are known on the system. The fallback is meant for Redmatrix servers " -"and older friendica servers, where global contacts weren't available. The " -"fallback increases the server load, so the recommened setting is 'Users, " -"Global Contacts'." -msgstr "Regelmäßig andere Server nach potentiellen Kontakten absuchen. Du kannst zwischen 'Nutzern', den tatsächlichen Nutzern des anderen Systems und 'globalen Kontakten', aktiven Kontakten die auf dem System bekannt sind, wählen. Der Fallback-Mechanismus ist für ältere Friendica und Redmatrix Server gedacht, bei denen globale Kontakte noch nicht verfügbar sind. Durch den Fallbackmodus entsteht auf deinem Server eine wesentlich höhere Last, empfohlen wird der Modus 'Nutzer, globale Kontakte'." +#: mod/admin.php:1076 +msgid "Determines whether generated links should be forced to use SSL" +msgstr "Bestimmt, ob generierte Links SSL verwenden müssen" -#: mod/admin.php:1049 -msgid "Timeframe for fetching global contacts" -msgstr "Zeitfenster für globale Kontakte" +#: mod/admin.php:1077 +msgid "Force SSL" +msgstr "Erzwinge SSL" -#: mod/admin.php:1049 +#: mod/admin.php:1077 msgid "" -"When the discovery is activated, this value defines the timeframe for the " -"activity of the global contacts that are fetched from other servers." -msgstr "Wenn die Entdeckung neuer Kontakte aktiv ist, definiert dieses Zeitfenster den Zeitraum in dem globale Kontakte als aktiv gelten und von anderen Servern importiert werden." +"Force all Non-SSL requests to SSL - Attention: on some systems it could lead" +" to endless loops." +msgstr "Erzinge alle Nicht-SSL Anfragen auf SSL - Achtung: auf manchen Systemen verursacht dies eine Endlosschleife." -#: mod/admin.php:1050 -msgid "Search the local directory" -msgstr "Lokales Verzeichnis durchsuchen" +#: mod/admin.php:1078 +msgid "Hide help entry from navigation menu" +msgstr "Verberge den Menüeintrag für die Hilfe im Navigationsmenü" -#: mod/admin.php:1050 +#: mod/admin.php:1078 msgid "" -"Search the local directory instead of the global directory. When searching " -"locally, every search will be executed on the global directory in the " -"background. This improves the search results when the search is repeated." -msgstr "Suche im lokalen Verzeichnis anstelle des globalen Verzeichnisses durchführen. Jede Suche wird im Hintergrund auch im globalen Verzeichnis durchgeführt umd die Suchresultate zu verbessern, wenn diese Suche wiederholt wird." +"Hides the menu entry for the Help pages from the navigation menu. You can " +"still access it calling /help directly." +msgstr "Verbirgt den Menüeintrag für die Hilfe-Seiten im Navigationsmenü. Die Seiten können weiterhin über /help aufgerufen werden." -#: mod/admin.php:1052 -msgid "Publish server information" -msgstr "Server Informationen veröffentlichen" +#: mod/admin.php:1079 +msgid "Single user instance" +msgstr "Ein-Nutzer Instanz" -#: mod/admin.php:1052 -msgid "" -"If enabled, general server and usage data will be published. The data " -"contains the name and version of the server, number of users with public " -"profiles, number of posts and the activated protocols and connectors. See the-federation.info for details." -msgstr "Wenn aktiviert, werden allgemeine Informationen über den Server und Nutzungsdaten veröffentlicht. Die Daten beinhalten den Namen sowie die Version des Servers, die Anzahl der Nutzer_innen mit öffentlichen Profilen, die Anzahl der Beiträge sowie aktivierte Protokolle und Connectoren. Für Details bitte the-federation.info aufrufen." +#: mod/admin.php:1079 +msgid "Make this instance multi-user or single-user for the named user" +msgstr "Regelt ob es sich bei dieser Instanz um eine ein Personen Installation oder eine Installation mit mehr als einem Nutzer handelt." -#: mod/admin.php:1054 -msgid "Use MySQL full text engine" -msgstr "Nutze MySQL full text engine" +#: mod/admin.php:1080 +msgid "Maximum image size" +msgstr "Maximale Bildgröße" -#: mod/admin.php:1054 +#: mod/admin.php:1080 msgid "" -"Activates the full text engine. Speeds up search - but can only search for " -"four and more characters." -msgstr "Aktiviert die 'full text engine'. Beschleunigt die Suche - aber es kann nur nach vier oder mehr Zeichen gesucht werden." - -#: mod/admin.php:1055 -msgid "Suppress Language" -msgstr "Sprachinformation unterdrücken" +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." +msgstr "Maximale Uploadgröße von Bildern in Bytes. Standard ist 0, d.h. ohne Limit." -#: mod/admin.php:1055 -msgid "Suppress language information in meta information about a posting." -msgstr "Verhindert das Erzeugen der Meta-Information zur Spracherkennung eines Beitrags." +#: mod/admin.php:1081 +msgid "Maximum image length" +msgstr "Maximale Bildlänge" -#: mod/admin.php:1056 -msgid "Suppress Tags" -msgstr "Tags Unterdrücken" +#: mod/admin.php:1081 +msgid "" +"Maximum length in pixels of the longest side of uploaded images. Default is " +"-1, which means no limits." +msgstr "Maximale Länge in Pixeln der längsten Seite eines hoch geladenen Bildes. Grundeinstellung ist -1 was keine Einschränkung bedeutet." -#: mod/admin.php:1056 -msgid "Suppress showing a list of hashtags at the end of the posting." -msgstr "Unterdrückt die Anzeige von Tags am Ende eines Beitrags." +#: mod/admin.php:1082 +msgid "JPEG image quality" +msgstr "Qualität des JPEG Bildes" -#: mod/admin.php:1057 -msgid "Path to item cache" -msgstr "Pfad zum Eintrag Cache" +#: mod/admin.php:1082 +msgid "" +"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " +"100, which is full quality." +msgstr "Hoch geladene JPEG Bilder werden mit dieser Qualität [0-100] gespeichert. Grundeinstellung ist 100, kein Qualitätsverlust." -#: mod/admin.php:1057 -msgid "The item caches buffers generated bbcode and external images." -msgstr "Im Item-Cache werden externe Bilder und geparster BBCode zwischen gespeichert." +#: mod/admin.php:1084 +msgid "Register policy" +msgstr "Registrierungsmethode" -#: mod/admin.php:1058 -msgid "Cache duration in seconds" -msgstr "Cache-Dauer in Sekunden" +#: mod/admin.php:1085 +msgid "Maximum Daily Registrations" +msgstr "Maximum täglicher Registrierungen" -#: mod/admin.php:1058 +#: mod/admin.php:1085 msgid "" -"How long should the cache files be hold? Default value is 86400 seconds (One" -" day). To disable the item cache, set the value to -1." -msgstr "Wie lange sollen die gecachedten Dateien vorgehalten werden? Grundeinstellung sind 86400 Sekunden (ein Tag). Um den Item Cache zu deaktivieren, setze diesen Wert auf -1." +"If registration is permitted above, this sets the maximum number of new user" +" registrations to accept per day. If register is set to closed, this " +"setting has no effect." +msgstr "Wenn die Registrierung weiter oben erlaubt ist, regelt dies die maximale Anzahl von Neuanmeldungen pro Tag. Wenn die Registrierung geschlossen ist, hat diese Einstellung keinen Effekt." -#: mod/admin.php:1059 -msgid "Maximum numbers of comments per post" -msgstr "Maximale Anzahl von Kommentaren pro Beitrag" +#: mod/admin.php:1086 +msgid "Register text" +msgstr "Registrierungstext" -#: mod/admin.php:1059 -msgid "How much comments should be shown for each post? Default value is 100." -msgstr "Wie viele Kommentare sollen pro Beitrag angezeigt werden? Standardwert sind 100." +#: mod/admin.php:1086 +msgid "Will be displayed prominently on the registration page." +msgstr "Wird gut sichtbar auf der Registrierungsseite angezeigt." -#: mod/admin.php:1060 -msgid "Path for lock file" -msgstr "Pfad für die Sperrdatei" +#: mod/admin.php:1087 +msgid "Accounts abandoned after x days" +msgstr "Nutzerkonten gelten nach x Tagen als unbenutzt" -#: mod/admin.php:1060 +#: mod/admin.php:1087 +msgid "" +"Will not waste system resources polling external sites for abandonded " +"accounts. Enter 0 for no time limit." +msgstr "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Konten nicht mehr benutzt werden. 0 eingeben für kein Limit." + +#: mod/admin.php:1088 +msgid "Allowed friend domains" +msgstr "Erlaubte Domains für Kontakte" + +#: mod/admin.php:1088 msgid "" -"The lock file is used to avoid multiple pollers at one time. Only define a " -"folder here." -msgstr "Die lock-Datei wird benutzt, damit nicht mehrere poller auf einmal laufen. Definiere hier einen Dateiverzeichnis." +"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 Kontakte erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." -#: mod/admin.php:1061 -msgid "Temp path" -msgstr "Temp Pfad" +#: mod/admin.php:1089 +msgid "Allowed email domains" +msgstr "Erlaubte Domains für E-Mails" -#: mod/admin.php:1061 +#: mod/admin.php:1089 msgid "" -"If you have a restricted system where the webserver can't access the system " -"temp path, enter another path here." -msgstr "Solltest du ein eingeschränktes System haben, auf dem der Webserver nicht auf das temp Verzeichnis des Systems zugreifen kann, setze hier einen anderen Pfad." +"Comma separated list of domains which are allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains" +msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." -#: mod/admin.php:1062 -msgid "Base path to installation" -msgstr "Basis-Pfad zur Installation" +#: mod/admin.php:1090 +msgid "Block public" +msgstr "Öffentlichen Zugriff blockieren" -#: mod/admin.php:1062 +#: mod/admin.php:1090 msgid "" -"If the system cannot detect the correct path to your installation, enter the" -" correct path here. This setting should only be set if you are using a " -"restricted system and symbolic links to your webroot." -msgstr "Falls das System nicht den korrekten Pfad zu deiner Installation gefunden hat, gib den richtigen Pfad bitte hier ein. Du solltest hier den Pfad nur auf einem eingeschränkten System angeben müssen, bei dem du mit symbolischen Links auf dein Webverzeichnis verweist." +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently logged in." +msgstr "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist." -#: mod/admin.php:1063 -msgid "Disable picture proxy" -msgstr "Bilder Proxy deaktivieren" +#: mod/admin.php:1091 +msgid "Force publish" +msgstr "Erzwinge Veröffentlichung" -#: mod/admin.php:1063 +#: mod/admin.php:1091 msgid "" -"The picture proxy increases performance and privacy. It shouldn't be used on" -" systems with very low bandwith." -msgstr "Der Proxy für Bilder verbessert die Leistung und Privatsphäre der Nutzer. Er sollte nicht auf Systemen verwendet werden, die nur über begrenzte Bandbreite verfügen." +"Check to force all profiles on this site to be listed in the site directory." +msgstr "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen." -#: mod/admin.php:1064 -msgid "Enable old style pager" -msgstr "Den Old-Style Pager aktiviren" +#: mod/admin.php:1092 +msgid "Global directory URL" +msgstr "URL des weltweiten Verzeichnisses" -#: mod/admin.php:1064 +#: mod/admin.php:1092 msgid "" -"The old style pager has page numbers but slows down massively the page " -"speed." -msgstr "Der Old-Style Pager zeigt Seitennummern an, verlangsamt aber auch drastisch das Laden einer Seite." +"URL to the global directory. If this is not set, the global directory is " +"completely unavailable to the application." +msgstr "URL des weltweiten Verzeichnisses. Wenn diese nicht gesetzt ist, ist das Verzeichnis für die Applikation nicht erreichbar." -#: mod/admin.php:1065 -msgid "Only search in tags" -msgstr "Nur in Tags suchen" +#: mod/admin.php:1093 +msgid "Allow threaded items" +msgstr "Erlaube Threads in Diskussionen" -#: mod/admin.php:1065 -msgid "On large systems the text search can slow down the system extremely." -msgstr "Auf großen Knoten kann die Volltext-Suche das System ausbremsen." +#: mod/admin.php:1093 +msgid "Allow infinite level threading for items on this site." +msgstr "Erlaube ein unendliches Level für Threads auf dieser Seite." -#: mod/admin.php:1067 -msgid "New base url" -msgstr "Neue Basis-URL" +#: mod/admin.php:1094 +msgid "Private posts by default for new users" +msgstr "Private Beiträge als Standard für neue Nutzer" -#: mod/admin.php:1067 +#: mod/admin.php:1094 msgid "" -"Change base url for this server. Sends relocate message to all DFRN contacts" -" of all users." -msgstr "Ändert die Basis-URL dieses Servers und sendet eine Umzugsmitteilung an alle DFRN Kontakte deiner Nutzer_innen." +"Set default post permissions for all new members to the default privacy " +"group rather than public." +msgstr "Die Standard-Zugriffsrechte für neue Nutzer werden so gesetzt, dass als Voreinstellung in die private Gruppe gepostet wird anstelle von öffentlichen Beiträgen." -#: mod/admin.php:1069 -msgid "RINO Encryption" -msgstr "RINO Verschlüsselung" +#: mod/admin.php:1095 +msgid "Don't include post content in email notifications" +msgstr "Inhalte von Beiträgen nicht in E-Mail-Benachrichtigungen versenden" -#: mod/admin.php:1069 -msgid "Encryption layer between nodes." -msgstr "Verschlüsselung zwischen Friendica Instanzen" +#: mod/admin.php:1095 +msgid "" +"Don't include the content of a post/comment/private message/etc. in the " +"email notifications that are sent out from this site, as a privacy measure." +msgstr "Inhalte von Beiträgen/Kommentaren/privaten Nachrichten/usw., zum Datenschutz nicht in E-Mail-Benachrichtigungen einbinden." -#: mod/admin.php:1070 -msgid "Embedly API key" -msgstr "Embedly API Schlüssel" +#: mod/admin.php:1096 +msgid "Disallow public access to addons listed in the apps menu." +msgstr "Öffentlichen Zugriff auf Addons im Apps Menü verbieten." -#: mod/admin.php:1070 +#: mod/admin.php:1096 msgid "" -"Embedly is used to fetch additional data for " -"web pages. This is an optional parameter." -msgstr "Embedly wird verwendet um zusätzliche Informationen von Webseiten zu laden. Dies ist ein optionaler Parameter." +"Checking this box will restrict addons listed in the apps menu to members " +"only." +msgstr "Wenn ausgewählt werden die im Apps Menü aufgeführten Addons nur angemeldeten Nutzern der Seite zur Verfügung gestellt." -#: mod/admin.php:1072 -msgid "Enable 'worker' background processing" -msgstr "Aktiviere die 'Worker' Hintergrundprozesse" +#: mod/admin.php:1097 +msgid "Don't embed private images in posts" +msgstr "Private Bilder nicht in Beiträgen einbetten." -#: mod/admin.php:1072 +#: mod/admin.php:1097 msgid "" -"The worker background processing limits the number of parallel background " -"jobs to a maximum number and respects the system load." -msgstr "Der 'background worker' Prozess begrenzt die Zahl der Prozesse, die im Hintergrund parallel laufen und beachtet dabei die Systemlast." +"Don't replace locally-hosted private photos in posts with an embedded copy " +"of the image. This means that contacts who receive posts containing private " +"photos will have to authenticate and load each image, which may take a " +"while." +msgstr "Ersetze lokal gehostete private Fotos in Beiträgen nicht mit einer eingebetteten Kopie des Bildes. Dies bedeutet, dass Kontakte, die Beiträge mit privaten Fotos erhalten sich zunächst auf den jeweiligen Servern authentifizieren müssen bevor die Bilder geladen und angezeigt werden, was eine gewisse Zeit dauert." -#: mod/admin.php:1073 -msgid "Maximum number of parallel workers" -msgstr "Maximale Anzahl parallel laufender Worker" +#: mod/admin.php:1098 +msgid "Allow Users to set remote_self" +msgstr "Nutzern erlauben das remote_self Flag zu setzen" -#: mod/admin.php:1073 +#: mod/admin.php:1098 msgid "" -"On shared hosters set this to 2. On larger systems, values of 10 are great. " -"Default value is 4." -msgstr "Wenn dein Knoten bei einem Shared Hoster ist, setzte diesen Wert auf 2. Auf größeren Systemen funktioniert ein Wert von 10 recht gut. Standardeinstellung sind 4." +"With checking this, every user is allowed to mark every contact as a " +"remote_self in the repair contact dialog. Setting this flag on a contact " +"causes mirroring every posting of that contact in the users stream." +msgstr "Ist dies ausgewählt kann jeder Nutzer jeden seiner Kontakte als remote_self (entferntes Konto) im Kontakt reparieren Dialog markieren. Nach dem setzten dieses Flags werden alle Top-Level Beiträge dieser Kontakte automatisch in den Stream dieses Nutzers gepostet." -#: mod/admin.php:1074 -msgid "Don't use 'proc_open' with the worker" -msgstr "'proc_open' nicht mit den Workern verwenden" +#: mod/admin.php:1099 +msgid "Block multiple registrations" +msgstr "Unterbinde Mehrfachregistrierung" -#: mod/admin.php:1074 -msgid "" -"Enable this if your system doesn't allow the use of 'proc_open'. This can " -"happen on shared hosters. If this is enabled you should increase the " -"frequency of poller calls in your crontab." -msgstr "Aktiviere diese Option, wenn dein System die Verwendung von 'proc_open' verhindert. Dies könnte auf Shared Hostern der Fall sein. Wenn du diese Option aktivierst, solltest du die Frequenz der poller Aufrufe in deiner crontab erhöhen." +#: mod/admin.php:1099 +msgid "Disallow users to register additional accounts for use as pages." +msgstr "Benutzern nicht erlauben, weitere Konten als zusätzliche Profile anzulegen." -#: mod/admin.php:1075 -msgid "Enable fastlane" -msgstr "Aktiviere Fastlane" +#: mod/admin.php:1100 +msgid "OpenID support" +msgstr "OpenID Unterstützung" -#: mod/admin.php:1075 -msgid "" -"When enabed, the fastlane mechanism starts an additional worker if processes" -" with higher priority are blocked by processes of lower priority." -msgstr "Wenn aktiviert, wird der Fastlane-Mechanismus einen weiteren Worker-Prozeß starten wenn Prozesse mit höherer Priorität von Prozessen mit niedrigerer Priorität blockiert werden." +#: mod/admin.php:1100 +msgid "OpenID support for registration and logins." +msgstr "OpenID-Unterstützung für Registrierung und Login." -#: mod/admin.php:1076 -msgid "Enable frontend worker" -msgstr "Aktiviere den Frontend Worker" +#: mod/admin.php:1101 +msgid "Fullname check" +msgstr "Namen auf Vollständigkeit überprüfen" -#: mod/admin.php:1076 +#: mod/admin.php:1101 msgid "" -"When enabled the Worker process is triggered when backend access is " -"performed (e.g. messages being delivered). On smaller sites you might want " -"to call yourdomain.tld/worker on a regular basis via an external cron job. " -"You should only enable this option if you cannot utilize cron/scheduled jobs" -" on your server. The worker background process needs to be activated for " -"this." -msgstr "Ist diese Option aktiv, wird der Worker Prozess durch Aktionen am Frontend gestartet (z.B. wenn Nachrichten zugestellt werden). Auf kleineren Seiten sollte yourdomain.tld/worker regelmäßig, beispielsweise durch einen externen Cron Anbieter, aufgerufen werden. Du solltest dies Option nur dann aktivieren, wenn du keinen Cron Job auf deinem eigenen Server starten kannst. Damit diese Option einen Effekt hat, muss der Worker Prozess aktiviert sein." +"Force users to register with a space between firstname and lastname in Full " +"name, as an antispam measure" +msgstr "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden." -#: mod/admin.php:1105 -msgid "Update has been marked successful" -msgstr "Update wurde als erfolgreich markiert" +#: mod/admin.php:1102 +msgid "Community Page Style" +msgstr "Art der Gemeinschaftsseite" -#: mod/admin.php:1113 -#, php-format -msgid "Database structure update %s was successfully applied." -msgstr "Das Update %s der Struktur der Datenbank wurde erfolgreich angewandt." +#: mod/admin.php:1102 +msgid "" +"Type of community page to show. 'Global community' shows every public " +"posting from an open distributed network that arrived on this server." +msgstr "Welche Art der Gemeinschaftsseite soll verwendet werden? Globale Gemeinschaftsseite zeigt alle öffentlichen Beiträge eines offenen dezentralen Netzwerks an die auf diesem Server eintreffen." -#: mod/admin.php:1116 -#, php-format -msgid "Executing of database structure update %s failed with error: %s" -msgstr "Das Update %s der Struktur der Datenbank schlug mit folgender Fehlermeldung fehl: %s" +#: mod/admin.php:1103 +msgid "Posts per user on community page" +msgstr "Anzahl der Beiträge pro Benutzer auf der Gemeinschaftsseite" -#: mod/admin.php:1128 -#, php-format -msgid "Executing %s failed with error: %s" -msgstr "Die Ausführung von %s schlug fehl. Fehlermeldung: %s" +#: mod/admin.php:1103 +msgid "" +"The maximum number of posts per user on the community page. (Not valid for " +"'Global Community')" +msgstr "Die Anzahl der Beiträge die von jedem Nutzer maximal auf der Gemeinschaftsseite angezeigt werden sollen. Dieser Parameter wird nicht für die Globale Gemeinschaftsseite genutzt." -#: mod/admin.php:1131 -#, php-format -msgid "Update %s was successfully applied." -msgstr "Update %s war erfolgreich." +#: mod/admin.php:1104 +msgid "Enable OStatus support" +msgstr "OStatus Unterstützung aktivieren" -#: mod/admin.php:1135 -#, php-format -msgid "Update %s did not return a status. Unknown if it succeeded." -msgstr "Update %s hat keinen Status zurückgegeben. Unbekannter Status." +#: mod/admin.php:1104 +msgid "" +"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " +"communications in OStatus are public, so privacy warnings will be " +"occasionally displayed." +msgstr "Biete die eingebaute OStatus (iStatusNet, GNU Social, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, Privatsphäre Warnungen werden nur bei Bedarf angezeigt." -#: mod/admin.php:1137 -#, php-format -msgid "There was no additional update function %s that needed to be called." -msgstr "Es gab keine weitere Update-Funktion, die von %s ausgeführt werden musste." +#: mod/admin.php:1105 +msgid "OStatus conversation completion interval" +msgstr "Intervall zum Vervollständigen von OStatus Unterhaltungen" -#: mod/admin.php:1156 -msgid "No failed updates." -msgstr "Keine fehlgeschlagenen Updates." +#: mod/admin.php:1105 +msgid "" +"How often shall the poller check for new entries in OStatus conversations? " +"This can be a very ressource task." +msgstr "Wie oft soll der Poller checken ob es neue Nachrichten in OStatus Unterhaltungen gibt die geladen werden müssen. Je nach Anzahl der OStatus Kontakte könnte dies ein sehr Ressourcen lastiger Job sein." -#: mod/admin.php:1157 -msgid "Check database structure" -msgstr "Datenbank Struktur überprüfen" +#: mod/admin.php:1106 +msgid "Only import OStatus threads from our contacts" +msgstr "Nur OStatus Konversationen unserer Kontakte importieren" -#: mod/admin.php:1162 -msgid "Failed Updates" -msgstr "Fehlgeschlagene Updates" +#: mod/admin.php:1106 +msgid "" +"Normally we import every content from our OStatus contacts. With this option" +" we only store threads that are started by a contact that is known on our " +"system." +msgstr "Normalerweise werden alle Inhalte von OStatus Kontakten importiert. Mit dieser Option werden nur solche Konversationen gespeichert, die von Kontakten der Nutzer dieses Knotens gestartet wurden." -#: mod/admin.php:1163 +#: mod/admin.php:1107 +msgid "OStatus support can only be enabled if threading is enabled." +msgstr "OStatus Unterstützung kann nur aktiviert werden wenn \"Threading\" aktiviert ist. " + +#: mod/admin.php:1109 msgid "" -"This does not include updates prior to 1139, which did not return a status." -msgstr "Ohne Updates vor 1139, da diese keinen Status zurückgegeben haben." +"Diaspora support can't be enabled because Friendica was installed into a sub" +" directory." +msgstr "Diaspora Unterstützung kann nicht aktiviert werden da Friendica in ein Unterverzeichnis installiert ist." -#: mod/admin.php:1164 -msgid "Mark success (if update was manually applied)" -msgstr "Als erfolgreich markieren (falls das Update manuell installiert wurde)" +#: mod/admin.php:1110 +msgid "Enable Diaspora support" +msgstr "Diaspora Unterstützung aktivieren" -#: mod/admin.php:1165 -msgid "Attempt to execute this update step automatically" -msgstr "Versuchen, diesen Schritt automatisch auszuführen" +#: mod/admin.php:1110 +msgid "Provide built-in Diaspora network compatibility." +msgstr "Verwende die eingebaute Diaspora-Verknüpfung." -#: mod/admin.php:1199 -#, php-format -msgid "" -"\n" -"\t\t\tDear %1$s,\n" -"\t\t\t\tthe administrator of %2$s has set up an account for you." -msgstr "\nHallo %1$s,\n\nauf %2$s wurde ein Account für Dich angelegt." +#: mod/admin.php:1111 +msgid "Only allow Friendica contacts" +msgstr "Nur Friendica-Kontakte erlauben" -#: mod/admin.php:1202 -#, php-format +#: mod/admin.php:1111 msgid "" -"\n" -"\t\t\tThe login details are as follows:\n" -"\n" -"\t\t\tSite Location:\t%1$s\n" -"\t\t\tLogin Name:\t\t%2$s\n" -"\t\t\tPassword:\t\t%3$s\n" -"\n" -"\t\t\tYou may change your password from your account \"Settings\" page after logging\n" -"\t\t\tin.\n" -"\n" -"\t\t\tPlease take a few moments to review the other account settings on that page.\n" -"\n" -"\t\t\tYou may also wish to add some basic information to your default profile\n" -"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" -"\n" -"\t\t\tWe recommend setting your full name, adding a profile photo,\n" -"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n" -"\t\t\tperhaps what country you live in; if you do not wish to be more specific\n" -"\t\t\tthan that.\n" -"\n" -"\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n" -"\t\t\tIf you are new and do not know anybody here, they may help\n" -"\t\t\tyou to make some new and interesting friends.\n" -"\n" -"\t\t\tThank you and welcome to %4$s." -msgstr "\nNachfolgend die Anmelde-Details:\n\tAdresse der Seite:\t%1$s\n\tBenutzername:\t%2$s\n\tPasswort:\t%3$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nNun viel Spaß, gute Begegnungen und willkommen auf %4$s." +"All contacts must use Friendica protocols. All other built-in communication " +"protocols disabled." +msgstr "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert." -#: mod/admin.php:1246 -#, php-format -msgid "%s user blocked/unblocked" -msgid_plural "%s users blocked/unblocked" -msgstr[0] "%s Benutzer geblockt/freigegeben" -msgstr[1] "%s Benutzer geblockt/freigegeben" +#: mod/admin.php:1112 +msgid "Verify SSL" +msgstr "SSL Überprüfen" -#: mod/admin.php:1253 -#, php-format -msgid "%s user deleted" -msgid_plural "%s users deleted" -msgstr[0] "%s Nutzer gelöscht" -msgstr[1] "%s Nutzer gelöscht" +#: mod/admin.php:1112 +msgid "" +"If you wish, you can turn on strict certificate checking. This will mean you" +" cannot connect (at all) to self-signed SSL sites." +msgstr "Wenn gewollt, kann man hier eine strenge Zertifikatkontrolle einstellen. Das bedeutet, dass man zu keinen Seiten mit selbst unterzeichnetem SSL eine Verbindung herstellen kann." -#: mod/admin.php:1300 -#, php-format -msgid "User '%s' deleted" -msgstr "Nutzer '%s' gelöscht" +#: mod/admin.php:1113 +msgid "Proxy user" +msgstr "Proxy Nutzer" -#: mod/admin.php:1308 -#, php-format -msgid "User '%s' unblocked" -msgstr "Nutzer '%s' entsperrt" +#: mod/admin.php:1114 +msgid "Proxy URL" +msgstr "Proxy URL" -#: mod/admin.php:1308 -#, php-format -msgid "User '%s' blocked" -msgstr "Nutzer '%s' gesperrt" +#: mod/admin.php:1115 +msgid "Network timeout" +msgstr "Netzwerk Wartezeit" -#: mod/admin.php:1417 mod/admin.php:1443 -msgid "Register date" -msgstr "Anmeldedatum" +#: mod/admin.php:1115 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +msgstr "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)." -#: mod/admin.php:1417 mod/admin.php:1443 -msgid "Last login" -msgstr "Letzte Anmeldung" +#: mod/admin.php:1116 +msgid "Maximum Load Average" +msgstr "Maximum Load Average" -#: mod/admin.php:1417 mod/admin.php:1443 -msgid "Last item" -msgstr "Letzter Beitrag" +#: mod/admin.php:1116 +msgid "" +"Maximum system load before delivery and poll processes are deferred - " +"default 50." +msgstr "Maximale Systemlast bevor Verteil- und Empfangsprozesse verschoben werden - Standard 50" -#: mod/admin.php:1426 -msgid "Add User" -msgstr "Nutzer hinzufügen" +#: mod/admin.php:1117 +msgid "Maximum Load Average (Frontend)" +msgstr "Maximum Load Average (Frontend)" -#: mod/admin.php:1427 -msgid "select all" -msgstr "Alle auswählen" +#: mod/admin.php:1117 +msgid "Maximum system load before the frontend quits service - default 50." +msgstr "Maximale Systemlast bevor Vordergrundprozesse pausiert werden - Standard 50." -#: mod/admin.php:1428 -msgid "User registrations waiting for confirm" -msgstr "Neuanmeldungen, die auf Deine Bestätigung warten" +#: mod/admin.php:1118 +msgid "Minimal Memory" +msgstr "Minimaler Speicher" -#: mod/admin.php:1429 -msgid "User waiting for permanent deletion" -msgstr "Nutzer wartet auf permanente Löschung" +#: mod/admin.php:1118 +msgid "" +"Minimal free memory in MB for the poller. Needs access to /proc/meminfo - " +"default 0 (deactivated)." +msgstr "Minimal freier Speicher in MB für den Poller. Benötigt Zugriff auf /proc/meminfo - Standard 0 (Deaktiviert)." -#: mod/admin.php:1430 -msgid "Request date" -msgstr "Anfragedatum" +#: mod/admin.php:1119 +msgid "Maximum table size for optimization" +msgstr "Maximale Tabellengröße zur Optimierung" -#: mod/admin.php:1431 -msgid "No registrations." -msgstr "Keine Neuanmeldungen." +#: mod/admin.php:1119 +msgid "" +"Maximum table size (in MB) for the automatic optimization - default 100 MB. " +"Enter -1 to disable it." +msgstr "Maximale Tabellengröße (in MB) für die automatische Optimierung - Standard 100 MB. Gib -1 für Deaktivierung ein." -#: mod/admin.php:1432 -msgid "Note from the user" -msgstr "Hinweis vom Nutzer" +#: mod/admin.php:1120 +msgid "Minimum level of fragmentation" +msgstr "Minimaler Fragmentationsgrad" -#: mod/admin.php:1433 mod/notifications.php:176 mod/notifications.php:255 -msgid "Approve" -msgstr "Genehmigen" +#: mod/admin.php:1120 +msgid "" +"Minimum fragmenation level to start the automatic optimization - default " +"value is 30%." +msgstr "Minimales Fragmentationsgrad von Datenbanktabellen um die automatische Optimierung einzuleiten - Standardwert ist 30%" -#: mod/admin.php:1434 -msgid "Deny" -msgstr "Verwehren" +#: mod/admin.php:1122 +msgid "Periodical check of global contacts" +msgstr "Regelmäßig globale Kontakte überprüfen" -#: mod/admin.php:1438 -msgid "Site admin" -msgstr "Seitenadministrator" +#: mod/admin.php:1122 +msgid "" +"If enabled, the global contacts are checked periodically for missing or " +"outdated data and the vitality of the contacts and servers." +msgstr "Wenn diese Option aktiviert ist, werden die globalen Kontakte regelmäßig auf fehlende oder veraltete Daten sowie auf Erreichbarkeit des Kontakts und des Servers überprüft." -#: mod/admin.php:1439 -msgid "Account expired" -msgstr "Account ist abgelaufen" +#: mod/admin.php:1123 +msgid "Days between requery" +msgstr "Tage zwischen erneuten Abfragen" -#: mod/admin.php:1442 -msgid "New User" -msgstr "Neuer Nutzer" +#: mod/admin.php:1123 +msgid "Number of days after which a server is requeried for his contacts." +msgstr "Legt das Abfrageintervall fest, nachdem ein Server erneut nach Kontakten abgefragt werden soll." -#: mod/admin.php:1443 -msgid "Deleted since" -msgstr "Gelöscht seit" +#: mod/admin.php:1124 +msgid "Discover contacts from other servers" +msgstr "Neue Kontakte auf anderen Servern entdecken" -#: mod/admin.php:1448 +#: mod/admin.php:1124 msgid "" -"Selected users will be deleted!\\n\\nEverything these users had posted on " -"this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist Du sicher?" +"Periodically query other servers for contacts. You can choose between " +"'users': the users on the remote system, 'Global Contacts': active contacts " +"that are known on the system. The fallback is meant for Redmatrix servers " +"and older friendica servers, where global contacts weren't available. The " +"fallback increases the server load, so the recommened setting is 'Users, " +"Global Contacts'." +msgstr "Regelmäßig andere Server nach potentiellen Kontakten absuchen. Du kannst zwischen 'Nutzern', den tatsächlichen Nutzern des anderen Systems und 'globalen Kontakten', aktiven Kontakten die auf dem System bekannt sind, wählen. Der Fallback-Mechanismus ist für ältere Friendica und Redmatrix Server gedacht, bei denen globale Kontakte noch nicht verfügbar sind. Durch den Fallbackmodus entsteht auf deinem Server eine wesentlich höhere Last, empfohlen wird der Modus 'Nutzer, globale Kontakte'." + +#: mod/admin.php:1125 +msgid "Timeframe for fetching global contacts" +msgstr "Zeitfenster für globale Kontakte" -#: mod/admin.php:1449 +#: mod/admin.php:1125 msgid "" -"The user {0} will be deleted!\\n\\nEverything this user has posted on this " -"site will be permanently deleted!\\n\\nAre you sure?" -msgstr "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist Du sicher?" +"When the discovery is activated, this value defines the timeframe for the " +"activity of the global contacts that are fetched from other servers." +msgstr "Wenn die Entdeckung neuer Kontakte aktiv ist, definiert dieses Zeitfenster den Zeitraum in dem globale Kontakte als aktiv gelten und von anderen Servern importiert werden." -#: mod/admin.php:1459 -msgid "Name of the new user." -msgstr "Name des neuen Nutzers" +#: mod/admin.php:1126 +msgid "Search the local directory" +msgstr "Lokales Verzeichnis durchsuchen" -#: mod/admin.php:1460 -msgid "Nickname" -msgstr "Spitzname" +#: mod/admin.php:1126 +msgid "" +"Search the local directory instead of the global directory. When searching " +"locally, every search will be executed on the global directory in the " +"background. This improves the search results when the search is repeated." +msgstr "Suche im lokalen Verzeichnis anstelle des globalen Verzeichnisses durchführen. Jede Suche wird im Hintergrund auch im globalen Verzeichnis durchgeführt umd die Suchresultate zu verbessern, wenn diese Suche wiederholt wird." -#: mod/admin.php:1460 -msgid "Nickname of the new user." -msgstr "Spitznamen für den neuen Nutzer" +#: mod/admin.php:1128 +msgid "Publish server information" +msgstr "Server Informationen veröffentlichen" -#: mod/admin.php:1461 -msgid "Email address of the new user." -msgstr "Email Adresse des neuen Nutzers" +#: mod/admin.php:1128 +msgid "" +"If enabled, general server and usage data will be published. The data " +"contains the name and version of the server, number of users with public " +"profiles, number of posts and the activated protocols and connectors. See the-federation.info for details." +msgstr "Wenn aktiviert, werden allgemeine Informationen über den Server und Nutzungsdaten veröffentlicht. Die Daten beinhalten den Namen sowie die Version des Servers, die Anzahl der Nutzer_innen mit öffentlichen Profilen, die Anzahl der Beiträge sowie aktivierte Protokolle und Connectoren. Für Details bitte the-federation.info aufrufen." -#: mod/admin.php:1504 -#, php-format -msgid "Plugin %s disabled." -msgstr "Plugin %s deaktiviert." +#: mod/admin.php:1130 +msgid "Suppress Tags" +msgstr "Tags Unterdrücken" -#: mod/admin.php:1508 -#, php-format -msgid "Plugin %s enabled." -msgstr "Plugin %s aktiviert." +#: mod/admin.php:1130 +msgid "Suppress showing a list of hashtags at the end of the posting." +msgstr "Unterdrückt die Anzeige von Tags am Ende eines Beitrags." -#: mod/admin.php:1519 mod/admin.php:1767 -msgid "Disable" -msgstr "Ausschalten" +#: mod/admin.php:1131 +msgid "Path to item cache" +msgstr "Pfad zum Eintrag Cache" -#: mod/admin.php:1521 mod/admin.php:1769 -msgid "Enable" -msgstr "Einschalten" +#: mod/admin.php:1131 +msgid "The item caches buffers generated bbcode and external images." +msgstr "Im Item-Cache werden externe Bilder und geparster BBCode zwischen gespeichert." -#: mod/admin.php:1544 mod/admin.php:1814 -msgid "Toggle" -msgstr "Umschalten" +#: mod/admin.php:1132 +msgid "Cache duration in seconds" +msgstr "Cache-Dauer in Sekunden" -#: mod/admin.php:1552 mod/admin.php:1823 -msgid "Author: " -msgstr "Autor:" +#: mod/admin.php:1132 +msgid "" +"How long should the cache files be hold? Default value is 86400 seconds (One" +" day). To disable the item cache, set the value to -1." +msgstr "Wie lange sollen die gecachedten Dateien vorgehalten werden? Grundeinstellung sind 86400 Sekunden (ein Tag). Um den Item Cache zu deaktivieren, setze diesen Wert auf -1." -#: mod/admin.php:1553 mod/admin.php:1824 -msgid "Maintainer: " -msgstr "Betreuer:" +#: mod/admin.php:1133 +msgid "Maximum numbers of comments per post" +msgstr "Maximale Anzahl von Kommentaren pro Beitrag" -#: mod/admin.php:1608 -msgid "Reload active plugins" -msgstr "Aktive Plugins neu laden" +#: mod/admin.php:1133 +msgid "How much comments should be shown for each post? Default value is 100." +msgstr "Wie viele Kommentare sollen pro Beitrag angezeigt werden? Standardwert sind 100." -#: mod/admin.php:1613 -#, php-format +#: mod/admin.php:1134 +msgid "Temp path" +msgstr "Temp Pfad" + +#: mod/admin.php:1134 msgid "" -"There are currently no plugins available on your node. You can find the " -"official plugin repository at %1$s and might find other interesting plugins " -"in the open plugin registry at %2$s" -msgstr "Es sind derzeit keine Plugins auf diesem Knoten verfügbar. Du findest das offizielle Plugin-Repository unter %1$s und weitere eventuell interessante Plugins im offenen Plugins-Verzeichnis auf %2$s." +"If you have a restricted system where the webserver can't access the system " +"temp path, enter another path here." +msgstr "Solltest du ein eingeschränktes System haben, auf dem der Webserver nicht auf das temp Verzeichnis des Systems zugreifen kann, setze hier einen anderen Pfad." -#: mod/admin.php:1727 -msgid "No themes found." -msgstr "Keine Themen gefunden." +#: mod/admin.php:1135 +msgid "Base path to installation" +msgstr "Basis-Pfad zur Installation" -#: mod/admin.php:1805 -msgid "Screenshot" -msgstr "Bildschirmfoto" +#: mod/admin.php:1135 +msgid "" +"If the system cannot detect the correct path to your installation, enter the" +" correct path here. This setting should only be set if you are using a " +"restricted system and symbolic links to your webroot." +msgstr "Falls das System nicht den korrekten Pfad zu deiner Installation gefunden hat, gib den richtigen Pfad bitte hier ein. Du solltest hier den Pfad nur auf einem eingeschränkten System angeben müssen, bei dem du mit symbolischen Links auf dein Webverzeichnis verweist." -#: mod/admin.php:1865 -msgid "Reload active themes" -msgstr "Aktives Theme neu laden" +#: mod/admin.php:1136 +msgid "Disable picture proxy" +msgstr "Bilder Proxy deaktivieren" -#: mod/admin.php:1870 -#, php-format -msgid "No themes found on the system. They should be paced in %1$s" -msgstr "Es wurden keine Themes auf dem System gefunden. Diese sollten in %1$s patziert werden." +#: mod/admin.php:1136 +msgid "" +"The picture proxy increases performance and privacy. It shouldn't be used on" +" systems with very low bandwith." +msgstr "Der Proxy für Bilder verbessert die Leistung und Privatsphäre der Nutzer. Er sollte nicht auf Systemen verwendet werden, die nur über begrenzte Bandbreite verfügen." -#: mod/admin.php:1871 -msgid "[Experimental]" -msgstr "[Experimentell]" +#: mod/admin.php:1137 +msgid "Only search in tags" +msgstr "Nur in Tags suchen" -#: mod/admin.php:1872 -msgid "[Unsupported]" -msgstr "[Nicht unterstützt]" +#: mod/admin.php:1137 +msgid "On large systems the text search can slow down the system extremely." +msgstr "Auf großen Knoten kann die Volltext-Suche das System ausbremsen." -#: mod/admin.php:1896 -msgid "Log settings updated." -msgstr "Protokolleinstellungen aktualisiert." +#: mod/admin.php:1139 +msgid "New base url" +msgstr "Neue Basis-URL" -#: mod/admin.php:1928 -msgid "PHP log currently enabled." -msgstr "PHP Protokollierung ist derzeit aktiviert." +#: mod/admin.php:1139 +msgid "" +"Change base url for this server. Sends relocate message to all DFRN contacts" +" of all users." +msgstr "Ändert die Basis-URL dieses Servers und sendet eine Umzugsmitteilung an alle DFRN Kontakte deiner Nutzer_innen." -#: mod/admin.php:1930 -msgid "PHP log currently disabled." -msgstr "PHP Protokollierung ist derzeit nicht aktiviert." +#: mod/admin.php:1141 +msgid "RINO Encryption" +msgstr "RINO Verschlüsselung" -#: mod/admin.php:1939 -msgid "Clear" -msgstr "löschen" +#: mod/admin.php:1141 +msgid "Encryption layer between nodes." +msgstr "Verschlüsselung zwischen Friendica Instanzen" -#: mod/admin.php:1944 -msgid "Enable Debugging" -msgstr "Protokoll führen" +#: mod/admin.php:1143 +msgid "Maximum number of parallel workers" +msgstr "Maximale Anzahl parallel laufender Worker" -#: mod/admin.php:1945 -msgid "Log file" -msgstr "Protokolldatei" +#: mod/admin.php:1143 +msgid "" +"On shared hosters set this to 2. On larger systems, values of 10 are great. " +"Default value is 4." +msgstr "Wenn dein Knoten bei einem Shared Hoster ist, setzte diesen Wert auf 2. Auf größeren Systemen funktioniert ein Wert von 10 recht gut. Standardeinstellung sind 4." + +#: mod/admin.php:1144 +msgid "Don't use 'proc_open' with the worker" +msgstr "'proc_open' nicht mit den Workern verwenden" -#: mod/admin.php:1945 +#: mod/admin.php:1144 msgid "" -"Must be writable by web server. Relative to your Friendica top-level " -"directory." -msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis." +"Enable this if your system doesn't allow the use of 'proc_open'. This can " +"happen on shared hosters. If this is enabled you should increase the " +"frequency of poller calls in your crontab." +msgstr "Aktiviere diese Option, wenn dein System die Verwendung von 'proc_open' verhindert. Dies könnte auf Shared Hostern der Fall sein. Wenn du diese Option aktivierst, solltest du die Frequenz der poller Aufrufe in deiner crontab erhöhen." -#: mod/admin.php:1946 -msgid "Log level" -msgstr "Protokoll-Level" +#: mod/admin.php:1145 +msgid "Enable fastlane" +msgstr "Aktiviere Fastlane" -#: mod/admin.php:1949 -msgid "PHP logging" -msgstr "PHP Protokollieren" +#: mod/admin.php:1145 +msgid "" +"When enabed, the fastlane mechanism starts an additional worker if processes" +" with higher priority are blocked by processes of lower priority." +msgstr "Wenn aktiviert, wird der Fastlane-Mechanismus einen weiteren Worker-Prozeß starten wenn Prozesse mit höherer Priorität von Prozessen mit niedrigerer Priorität blockiert werden." -#: mod/admin.php:1950 +#: mod/admin.php:1146 +msgid "Enable frontend worker" +msgstr "Aktiviere den Frontend Worker" + +#: mod/admin.php:1146 msgid "" -"To enable logging of PHP errors and warnings you can add the following to " -"the .htconfig.php file of your installation. The filename set in the " -"'error_log' line is relative to the friendica top-level directory and must " -"be writeable by the web server. The option '1' for 'log_errors' and " -"'display_errors' is to enable these options, set to '0' to disable them." -msgstr "Um PHP Warnungen und Fehler zu protokollieren, kannst du die folgenden Zeilen zur .htconfig.php Datei deiner Installation hinzufügen. Den Dateinamen der Log-Datei legst du in der Zeile mit dem 'error_log' fest, Er ist relativ zum Friendica-Stammverzeichnis und muss schreibbar durch den Webserver sein. Eine \"1\" als Option für die Punkte 'log_errors' und 'display_errors' aktiviert die Funktionen zum Protokollieren bzw. Anzeigen der Fehler, eine \"0\" deaktiviert sie." +"When enabled the Worker process is triggered when backend access is " +"performed (e.g. messages being delivered). On smaller sites you might want " +"to call yourdomain.tld/worker on a regular basis via an external cron job. " +"You should only enable this option if you cannot utilize cron/scheduled jobs" +" on your server. The worker background process needs to be activated for " +"this." +msgstr "Ist diese Option aktiv, wird der Worker Prozess durch Aktionen am Frontend gestartet (z.B. wenn Nachrichten zugestellt werden). Auf kleineren Seiten sollte yourdomain.tld/worker regelmäßig, beispielsweise durch einen externen Cron Anbieter, aufgerufen werden. Du solltest dies Option nur dann aktivieren, wenn du keinen Cron Job auf deinem eigenen Server starten kannst. Damit diese Option einen Effekt hat, muss der Worker Prozess aktiviert sein." + +#: mod/admin.php:1176 +msgid "Update has been marked successful" +msgstr "Update wurde als erfolgreich markiert" -#: mod/admin.php:2078 +#: mod/admin.php:1184 #, php-format -msgid "Lock feature %s" -msgstr "Feature festlegen: %s" +msgid "Database structure update %s was successfully applied." +msgstr "Das Update %s der Struktur der Datenbank wurde erfolgreich angewandt." -#: mod/admin.php:2086 -msgid "Manage Additional Features" -msgstr "Zusätzliche Features Verwalten" +#: mod/admin.php:1187 +#, php-format +msgid "Executing of database structure update %s failed with error: %s" +msgstr "Das Update %s der Struktur der Datenbank schlug mit folgender Fehlermeldung fehl: %s" -#: mod/viewcontacts.php:75 -msgid "No contacts." -msgstr "Keine Kontakte." +#: mod/admin.php:1201 +#, php-format +msgid "Executing %s failed with error: %s" +msgstr "Die Ausführung von %s schlug fehl. Fehlermeldung: %s" -#: mod/network.php:190 mod/search.php:25 -msgid "Remove term" -msgstr "Begriff entfernen" +#: mod/admin.php:1204 +#, php-format +msgid "Update %s was successfully applied." +msgstr "Update %s war erfolgreich." -#: mod/network.php:397 +#: mod/admin.php:1207 #, php-format -msgid "" -"Warning: This group contains %s member from a network that doesn't allow non" -" public messages." -msgid_plural "" -"Warning: This group contains %s members from a network that doesn't allow " -"non public messages." -msgstr[0] "Warnung: Diese Gruppe beinhaltet %s Person aus einem Netzwerk das keine nicht öffentlichen Beiträge empfangen kann." -msgstr[1] "Warnung: Diese Gruppe beinhaltet %s Personen aus Netzwerken die keine nicht-öffentlichen Beiträge empfangen können." +msgid "Update %s did not return a status. Unknown if it succeeded." +msgstr "Update %s hat keinen Status zurückgegeben. Unbekannter Status." -#: mod/network.php:400 -msgid "Messages in this group won't be send to these receivers." -msgstr "Beiträge in dieser Gruppe werden deshalb nicht an diese Personen zugestellt werden." +#: mod/admin.php:1210 +#, php-format +msgid "There was no additional update function %s that needed to be called." +msgstr "Es gab keine weitere Update-Funktion, die von %s ausgeführt werden musste." -#: mod/network.php:528 -msgid "Private messages to this person are at risk of public disclosure." -msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen." +#: mod/admin.php:1230 +msgid "No failed updates." +msgstr "Keine fehlgeschlagenen Updates." -#: mod/network.php:533 -msgid "Invalid contact." -msgstr "Ungültiger Kontakt." +#: mod/admin.php:1231 +msgid "Check database structure" +msgstr "Datenbank Struktur überprüfen" -#: mod/network.php:827 -msgid "Commented Order" -msgstr "Neueste Kommentare" +#: mod/admin.php:1236 +msgid "Failed Updates" +msgstr "Fehlgeschlagene Updates" -#: mod/network.php:830 -msgid "Sort by Comment Date" -msgstr "Nach Kommentardatum sortieren" +#: mod/admin.php:1237 +msgid "" +"This does not include updates prior to 1139, which did not return a status." +msgstr "Ohne Updates vor 1139, da diese keinen Status zurückgegeben haben." -#: mod/network.php:835 -msgid "Posted Order" -msgstr "Neueste Beiträge" +#: mod/admin.php:1238 +msgid "Mark success (if update was manually applied)" +msgstr "Als erfolgreich markieren (falls das Update manuell installiert wurde)" -#: mod/network.php:838 -msgid "Sort by Post Date" -msgstr "Nach Beitragsdatum sortieren" +#: mod/admin.php:1239 +msgid "Attempt to execute this update step automatically" +msgstr "Versuchen, diesen Schritt automatisch auszuführen" -#: mod/network.php:849 -msgid "Posts that mention or involve you" -msgstr "Beiträge, in denen es um Dich geht" +#: mod/admin.php:1273 +#, php-format +msgid "" +"\n" +"\t\t\tDear %1$s,\n" +"\t\t\t\tthe administrator of %2$s has set up an account for you." +msgstr "\nHallo %1$s,\n\nauf %2$s wurde ein Account für Dich angelegt." -#: mod/network.php:857 -msgid "New" -msgstr "Neue" +#: mod/admin.php:1276 +#, php-format +msgid "" +"\n" +"\t\t\tThe login details are as follows:\n" +"\n" +"\t\t\tSite Location:\t%1$s\n" +"\t\t\tLogin Name:\t\t%2$s\n" +"\t\t\tPassword:\t\t%3$s\n" +"\n" +"\t\t\tYou may change your password from your account \"Settings\" page after logging\n" +"\t\t\tin.\n" +"\n" +"\t\t\tPlease take a few moments to review the other account settings on that page.\n" +"\n" +"\t\t\tYou may also wish to add some basic information to your default profile\n" +"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" +"\n" +"\t\t\tWe recommend setting your full name, adding a profile photo,\n" +"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n" +"\t\t\tperhaps what country you live in; if you do not wish to be more specific\n" +"\t\t\tthan that.\n" +"\n" +"\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n" +"\t\t\tIf you are new and do not know anybody here, they may help\n" +"\t\t\tyou to make some new and interesting friends.\n" +"\n" +"\t\t\tThank you and welcome to %4$s." +msgstr "\nNachfolgend die Anmelde-Details:\n\tAdresse der Seite:\t%1$s\n\tBenutzername:\t%2$s\n\tPasswort:\t%3$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nNun viel Spaß, gute Begegnungen und willkommen auf %4$s." -#: mod/network.php:860 -msgid "Activity Stream - by date" -msgstr "Aktivitäten-Stream - nach Datum" +#: mod/admin.php:1320 +#, php-format +msgid "%s user blocked/unblocked" +msgid_plural "%s users blocked/unblocked" +msgstr[0] "%s Benutzer geblockt/freigegeben" +msgstr[1] "%s Benutzer geblockt/freigegeben" -#: mod/network.php:868 -msgid "Shared Links" -msgstr "Geteilte Links" +#: mod/admin.php:1327 +#, php-format +msgid "%s user deleted" +msgid_plural "%s users deleted" +msgstr[0] "%s Nutzer gelöscht" +msgstr[1] "%s Nutzer gelöscht" -#: mod/network.php:871 -msgid "Interesting Links" -msgstr "Interessante Links" +#: mod/admin.php:1374 +#, php-format +msgid "User '%s' deleted" +msgstr "Nutzer '%s' gelöscht" -#: mod/network.php:879 -msgid "Starred" -msgstr "Markierte" +#: mod/admin.php:1382 +#, php-format +msgid "User '%s' unblocked" +msgstr "Nutzer '%s' entsperrt" -#: mod/network.php:882 -msgid "Favourite Posts" -msgstr "Favorisierte Beiträge" +#: mod/admin.php:1382 +#, php-format +msgid "User '%s' blocked" +msgstr "Nutzer '%s' gesperrt" -#: mod/search.php:100 -msgid "Only logged in users are permitted to perform a search." -msgstr "Nur eingeloggten Benutzern ist das Suchen gestattet." +#: mod/admin.php:1490 mod/admin.php:1516 +msgid "Register date" +msgstr "Anmeldedatum" -#: mod/search.php:124 -msgid "Too Many Requests" -msgstr "Zu viele Abfragen" +#: mod/admin.php:1490 mod/admin.php:1516 +msgid "Last login" +msgstr "Letzte Anmeldung" -#: mod/search.php:125 -msgid "Only one search per minute is permitted for not logged in users." -msgstr "Es ist nur eine Suchanfrage pro Minute für nicht eingeloggte Benutzer gestattet." +#: mod/admin.php:1490 mod/admin.php:1516 +msgid "Last item" +msgstr "Letzter Beitrag" -#: mod/search.php:230 -#, php-format -msgid "Items tagged with: %s" -msgstr "Beiträge die mit %s getaggt sind" +#: mod/admin.php:1499 +msgid "Add User" +msgstr "Nutzer hinzufügen" -#: mod/notifications.php:35 -msgid "Invalid request identifier." -msgstr "Invalid request identifier." +#: mod/admin.php:1500 +msgid "select all" +msgstr "Alle auswählen" -#: mod/notifications.php:44 mod/notifications.php:180 -#: mod/notifications.php:258 -msgid "Discard" -msgstr "Verwerfen" +#: mod/admin.php:1501 +msgid "User registrations waiting for confirm" +msgstr "Neuanmeldungen, die auf Deine Bestätigung warten" -#: mod/notifications.php:105 -msgid "Network Notifications" -msgstr "Netzwerk Benachrichtigungen" +#: mod/admin.php:1502 +msgid "User waiting for permanent deletion" +msgstr "Nutzer wartet auf permanente Löschung" -#: mod/notifications.php:117 -msgid "Personal Notifications" -msgstr "Persönliche Benachrichtigungen" +#: mod/admin.php:1503 +msgid "Request date" +msgstr "Anfragedatum" -#: mod/notifications.php:123 -msgid "Home Notifications" -msgstr "Pinnwand Benachrichtigungen" +#: mod/admin.php:1504 +msgid "No registrations." +msgstr "Keine Neuanmeldungen." -#: mod/notifications.php:152 -msgid "Show Ignored Requests" -msgstr "Zeige ignorierte Anfragen" +#: mod/admin.php:1505 +msgid "Note from the user" +msgstr "Hinweis vom Nutzer" -#: mod/notifications.php:152 -msgid "Hide Ignored Requests" -msgstr "Verberge ignorierte Anfragen" +#: mod/admin.php:1507 +msgid "Deny" +msgstr "Verwehren" -#: mod/notifications.php:164 mod/notifications.php:228 -msgid "Notification type: " -msgstr "Benachrichtigungstyp: " +#: mod/admin.php:1511 +msgid "Site admin" +msgstr "Seitenadministrator" -#: mod/notifications.php:167 -#, php-format -msgid "suggested by %s" -msgstr "vorgeschlagen von %s" +#: mod/admin.php:1512 +msgid "Account expired" +msgstr "Account ist abgelaufen" -#: mod/notifications.php:173 mod/notifications.php:246 -msgid "Post a new friend activity" -msgstr "Neue-Kontakt Nachricht senden" +#: mod/admin.php:1515 +msgid "New User" +msgstr "Neuer Nutzer" -#: mod/notifications.php:173 mod/notifications.php:246 -msgid "if applicable" -msgstr "falls anwendbar" +#: mod/admin.php:1516 +msgid "Deleted since" +msgstr "Gelöscht seit" -#: mod/notifications.php:195 -msgid "Claims to be known to you: " -msgstr "Behauptet Dich zu kennen: " +#: mod/admin.php:1521 +msgid "" +"Selected users will be deleted!\\n\\nEverything these users had posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist Du sicher?" -#: mod/notifications.php:196 -msgid "yes" -msgstr "ja" +#: mod/admin.php:1522 +msgid "" +"The user {0} will be deleted!\\n\\nEverything this user has posted on this " +"site will be permanently deleted!\\n\\nAre you sure?" +msgstr "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist Du sicher?" -#: mod/notifications.php:196 -msgid "no" -msgstr "nein" +#: mod/admin.php:1532 +msgid "Name of the new user." +msgstr "Name des neuen Nutzers" -#: mod/notifications.php:197 mod/notifications.php:202 -msgid "Shall your connection be bidirectional or not?" -msgstr "Soll die Verbindung beidseitig sein oder nicht?" +#: mod/admin.php:1533 +msgid "Nickname" +msgstr "Spitzname" -#: mod/notifications.php:198 mod/notifications.php:203 -#, php-format -msgid "" -"Accepting %s as a friend allows %s to subscribe to your posts, and you will " -"also receive updates from them in your news feed." -msgstr "Akzeptierst du %s als Kontakt, erlaubst du damit das Lesen deiner Beiträge und abonnierst selbst auch die Beiträge von %s." +#: mod/admin.php:1533 +msgid "Nickname of the new user." +msgstr "Spitznamen für den neuen Nutzer" -#: mod/notifications.php:199 -#, php-format -msgid "" -"Accepting %s as a subscriber allows them to subscribe to your posts, but you" -" will not receive updates from them in your news feed." -msgstr "Wenn du %s als Abonnent akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten." +#: mod/admin.php:1534 +msgid "Email address of the new user." +msgstr "Email Adresse des neuen Nutzers" -#: mod/notifications.php:204 +#: mod/admin.php:1577 #, php-format -msgid "" -"Accepting %s as a sharer allows them to subscribe to your posts, but you " -"will not receive updates from them in your news feed." -msgstr "Wenn du %s als Teilenden akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten." +msgid "Plugin %s disabled." +msgstr "Plugin %s deaktiviert." -#: mod/notifications.php:215 -msgid "Friend" -msgstr "Kontakt" +#: mod/admin.php:1581 +#, php-format +msgid "Plugin %s enabled." +msgstr "Plugin %s aktiviert." -#: mod/notifications.php:216 -msgid "Sharer" -msgstr "Teilenden" +#: mod/admin.php:1592 mod/admin.php:1844 +msgid "Disable" +msgstr "Ausschalten" -#: mod/notifications.php:216 -msgid "Subscriber" -msgstr "Abonnent" +#: mod/admin.php:1594 mod/admin.php:1846 +msgid "Enable" +msgstr "Einschalten" -#: mod/notifications.php:266 -msgid "No introductions." -msgstr "Keine Kontaktanfragen." +#: mod/admin.php:1617 mod/admin.php:1893 +msgid "Toggle" +msgstr "Umschalten" -#: mod/notifications.php:307 -msgid "Show unread" -msgstr "Ungelesene anzeigen" +#: mod/admin.php:1625 mod/admin.php:1902 +msgid "Author: " +msgstr "Autor:" -#: mod/notifications.php:307 -msgid "Show all" -msgstr "Alle anzeigen" +#: mod/admin.php:1626 mod/admin.php:1903 +msgid "Maintainer: " +msgstr "Betreuer:" -#: mod/notifications.php:313 +#: mod/admin.php:1681 +msgid "Reload active plugins" +msgstr "Aktive Plugins neu laden" + +#: mod/admin.php:1686 #, php-format -msgid "No more %s notifications." -msgstr "Keine weiteren %s Benachrichtigungen" +msgid "" +"There are currently no plugins available on your node. You can find the " +"official plugin repository at %1$s and might find other interesting plugins " +"in the open plugin registry at %2$s" +msgstr "Es sind derzeit keine Plugins auf diesem Knoten verfügbar. Du findest das offizielle Plugin-Repository unter %1$s und weitere eventuell interessante Plugins im offenen Plugins-Verzeichnis auf %2$s." -#: object/Item.php:385 -msgid "via" -msgstr "via" +#: mod/admin.php:1805 +msgid "No themes found." +msgstr "Keine Themen gefunden." -#: view/theme/quattro/config.php:70 -msgid "Alignment" -msgstr "Ausrichtung" +#: mod/admin.php:1884 +msgid "Screenshot" +msgstr "Bildschirmfoto" -#: view/theme/quattro/config.php:70 -msgid "Left" -msgstr "Links" +#: mod/admin.php:1944 +msgid "Reload active themes" +msgstr "Aktives Theme neu laden" -#: view/theme/quattro/config.php:70 -msgid "Center" -msgstr "Mitte" +#: mod/admin.php:1949 +#, php-format +msgid "No themes found on the system. They should be paced in %1$s" +msgstr "Es wurden keine Themes auf dem System gefunden. Diese sollten in %1$s patziert werden." -#: view/theme/quattro/config.php:71 view/theme/clean/config.php:108 -msgid "Color scheme" -msgstr "Farbschema" +#: mod/admin.php:1950 +msgid "[Experimental]" +msgstr "[Experimentell]" -#: view/theme/quattro/config.php:72 -msgid "Posts font size" -msgstr "Schriftgröße in Beiträgen" +#: mod/admin.php:1951 +msgid "[Unsupported]" +msgstr "[Nicht unterstützt]" -#: view/theme/quattro/config.php:73 -msgid "Textareas font size" -msgstr "Schriftgröße in Eingabefeldern" +#: mod/admin.php:1975 +msgid "Log settings updated." +msgstr "Protokolleinstellungen aktualisiert." -#: view/theme/vier/config.php:69 -msgid "Comma separated list of helper forums" -msgstr "Komma-Separierte Liste der Helfer-Foren" +#: mod/admin.php:2007 +msgid "PHP log currently enabled." +msgstr "PHP Protokollierung ist derzeit aktiviert." -#: view/theme/vier/config.php:115 -msgid "Set style" -msgstr "Stil auswählen" +#: mod/admin.php:2009 +msgid "PHP log currently disabled." +msgstr "PHP Protokollierung ist derzeit nicht aktiviert." -#: view/theme/vier/config.php:116 -msgid "Community Pages" -msgstr "Foren" +#: mod/admin.php:2018 +msgid "Clear" +msgstr "löschen" -#: view/theme/vier/config.php:117 view/theme/vier/theme.php:146 -msgid "Community Profiles" -msgstr "Community-Profile" +#: mod/admin.php:2023 +msgid "Enable Debugging" +msgstr "Protokoll führen" -#: view/theme/vier/config.php:118 -msgid "Help or @NewHere ?" -msgstr "Hilfe oder @NewHere" +#: mod/admin.php:2024 +msgid "Log file" +msgstr "Protokolldatei" -#: view/theme/vier/config.php:119 view/theme/vier/theme.php:385 -msgid "Connect Services" -msgstr "Verbinde Dienste" +#: mod/admin.php:2024 +msgid "" +"Must be writable by web server. Relative to your Friendica top-level " +"directory." +msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis." -#: view/theme/vier/config.php:120 view/theme/vier/theme.php:194 -msgid "Find Friends" -msgstr "Kontakte finden" +#: mod/admin.php:2025 +msgid "Log level" +msgstr "Protokoll-Level" -#: view/theme/vier/config.php:121 view/theme/vier/theme.php:176 -msgid "Last users" -msgstr "Letzte Nutzer" +#: mod/admin.php:2028 +msgid "PHP logging" +msgstr "PHP Protokollieren" -#: view/theme/vier/theme.php:195 -msgid "Local Directory" -msgstr "Lokales Verzeichnis" +#: mod/admin.php:2029 +msgid "" +"To enable logging of PHP errors and warnings you can add the following to " +"the .htconfig.php file of your installation. The filename set in the " +"'error_log' line is relative to the friendica top-level directory and must " +"be writeable by the web server. The option '1' for 'log_errors' and " +"'display_errors' is to enable these options, set to '0' to disable them." +msgstr "Um PHP Warnungen und Fehler zu protokollieren, kannst du die folgenden Zeilen zur .htconfig.php Datei deiner Installation hinzufügen. Den Dateinamen der Log-Datei legst du in der Zeile mit dem 'error_log' fest, Er ist relativ zum Friendica-Stammverzeichnis und muss schreibbar durch den Webserver sein. Eine \"1\" als Option für die Punkte 'log_errors' und 'display_errors' aktiviert die Funktionen zum Protokollieren bzw. Anzeigen der Fehler, eine \"0\" deaktiviert sie." -#: view/theme/vier/theme.php:286 -msgid "Quick Start" -msgstr "Schnell-Start" +#: mod/admin.php:2160 +#, php-format +msgid "Lock feature %s" +msgstr "Feature festlegen: %s" + +#: mod/admin.php:2168 +msgid "Manage Additional Features" +msgstr "Zusätzliche Features Verwalten" + +#: object/Item.php:359 +msgid "via" +msgstr "via" #: view/theme/duepuntozero/config.php:44 msgid "greenzero" @@ -8808,64 +8770,45 @@ msgstr "slackr" msgid "Variations" msgstr "Variationen" -#: view/theme/clean/config.php:61 -msgid "Midnight" -msgstr "Mitternacht" - -#: view/theme/clean/config.php:62 -msgid "Zenburn" -msgstr "Zenburn" - -#: view/theme/clean/config.php:63 -msgid "Bootstrap" -msgstr "Bootstrap" - -#: view/theme/clean/config.php:64 -msgid "Shades of Pink" -msgstr "Shades of Pink" - -#: view/theme/clean/config.php:65 -msgid "Lime and Orange" -msgstr "Lime and Orange" +#: view/theme/frio/config.php:47 +msgid "Default" +msgstr "Standard" -#: view/theme/clean/config.php:66 -msgid "GeoCities Retro" -msgstr "GeoCities Retro" +#: view/theme/frio/config.php:59 +msgid "Note: " +msgstr "Hinweis:" -#: view/theme/clean/config.php:92 -msgid "Background Image" -msgstr "Hintergrundbild" +#: view/theme/frio/config.php:59 +msgid "Check image permissions if all users are allowed to visit the image" +msgstr "Überprüfe, dass alle Benutzer die Berechtigung haben dieses Bild anzusehen" -#: view/theme/clean/config.php:94 -msgid "" -"The URL to a picture (e.g. from your photo album) that should be used as " -"background image." -msgstr "Die URL zum Bild (z.B. aus deinem Foto Album), das als Hintergrundbild verwendet werden soll." +#: view/theme/frio/config.php:67 +msgid "Select scheme" +msgstr "Schema auswählen" -#: view/theme/clean/config.php:99 -msgid "Background Color" -msgstr "Hintergrundfarbe" +#: view/theme/frio/config.php:68 +msgid "Navigation bar background color" +msgstr "Hintergrundfarbe der Navigationsleiste" -#: view/theme/clean/config.php:101 -msgid "HEX value for the background color. Don't include the #" -msgstr "HEX Wert der Hintergrundfarbe, ohne das #" +#: view/theme/frio/config.php:69 +msgid "Navigation bar icon color " +msgstr "Icon Farbe in der Navigationsleiste" -#: view/theme/clean/config.php:115 -msgid "font size" -msgstr "Zeichengröße" +#: view/theme/frio/config.php:70 +msgid "Link color" +msgstr "Linkfarbe" -#: view/theme/clean/config.php:117 -msgid "base font size for your interface" -msgstr "Basiszeichengröße für das Interface" +#: view/theme/frio/config.php:71 +msgid "Set the background color" +msgstr "Hintergrundfarbe festlegen" -#: view/theme/clean/config.php:122 -msgid "Display Accesskeys" -msgstr "Accesskeys anzeigen" +#: view/theme/frio/config.php:72 +msgid "Content background transparency" +msgstr "Transparanz des Hintergrunds von Beiträgem" -#: view/theme/clean/config.php:124 -msgid "" -"Diaplay the access keys assigned to some menu element in the web interface." -msgstr "Einige Menüelemente sind über Accesskeys aufrufbar. Sollen diese angezeigt werden?" +#: view/theme/frio/config.php:73 +msgid "Set the background image" +msgstr "Hintergrundbild festlegen" #: view/theme/frio/php/Image.php:23 msgid "Repeat the image" @@ -8899,103 +8842,127 @@ msgstr "Größe anpassen - Optimale Größe" msgid "Resize to best fit and retain aspect ratio." msgstr "Größe anpassen - Optimale Größe und Seitenverhältnisse beibehalten" -#: view/theme/frio/config.php:47 -msgid "Default" -msgstr "Standard" +#: view/theme/frio/theme.php:226 +msgid "Guest" +msgstr "Gast" -#: view/theme/frio/config.php:59 -msgid "Note: " -msgstr "Hinweis:" +#: view/theme/frio/theme.php:232 +msgid "Visitor" +msgstr "Besucher" -#: view/theme/frio/config.php:59 -msgid "Check image permissions if all users are allowed to visit the image" -msgstr "Überprüfe, dass alle Benutzer die Berechtigung haben dieses Bild anzusehen" +#: view/theme/quattro/config.php:70 +msgid "Alignment" +msgstr "Ausrichtung" -#: view/theme/frio/config.php:67 -msgid "Select scheme" -msgstr "Schema auswählen" +#: view/theme/quattro/config.php:70 +msgid "Left" +msgstr "Links" -#: view/theme/frio/config.php:68 -msgid "Navigation bar background color" -msgstr "Hintergrundfarbe der Navigationsleiste" +#: view/theme/quattro/config.php:70 +msgid "Center" +msgstr "Mitte" -#: view/theme/frio/config.php:69 -msgid "Navigation bar icon color " -msgstr "Icon Farbe in der Navigationsleiste" +#: view/theme/quattro/config.php:71 +msgid "Color scheme" +msgstr "Farbschema" -#: view/theme/frio/config.php:70 -msgid "Link color" -msgstr "Linkfarbe" +#: view/theme/quattro/config.php:72 +msgid "Posts font size" +msgstr "Schriftgröße in Beiträgen" -#: view/theme/frio/config.php:71 -msgid "Set the background color" -msgstr "Hintergrundfarbe festlegen" +#: view/theme/quattro/config.php:73 +msgid "Textareas font size" +msgstr "Schriftgröße in Eingabefeldern" -#: view/theme/frio/config.php:72 -msgid "Content background transparency" -msgstr "Transparanz des Hintergrunds von Beiträgem" +#: view/theme/vier/config.php:69 +msgid "Comma separated list of helper forums" +msgstr "Komma-Separierte Liste der Helfer-Foren" -#: view/theme/frio/config.php:73 -msgid "Set the background image" -msgstr "Hintergrundbild festlegen" +#: view/theme/vier/config.php:115 +msgid "Set style" +msgstr "Stil auswählen" -#: view/theme/frio/theme.php:226 -msgid "Guest" -msgstr "Gast" +#: view/theme/vier/config.php:116 +msgid "Community Pages" +msgstr "Foren" -#: view/theme/frio/theme.php:232 -msgid "Visitor" -msgstr "Besucher" +#: view/theme/vier/config.php:117 view/theme/vier/theme.php:149 +msgid "Community Profiles" +msgstr "Community-Profile" + +#: view/theme/vier/config.php:118 +msgid "Help or @NewHere ?" +msgstr "Hilfe oder @NewHere" + +#: view/theme/vier/config.php:119 view/theme/vier/theme.php:390 +msgid "Connect Services" +msgstr "Verbinde Dienste" + +#: view/theme/vier/config.php:120 view/theme/vier/theme.php:197 +msgid "Find Friends" +msgstr "Kontakte finden" + +#: view/theme/vier/config.php:121 view/theme/vier/theme.php:179 +msgid "Last users" +msgstr "Letzte Nutzer" + +#: view/theme/vier/theme.php:198 +msgid "Local Directory" +msgstr "Lokales Verzeichnis" + +#: view/theme/vier/theme.php:290 +msgid "Quick Start" +msgstr "Schnell-Start" -#: index.php:457 +#: index.php:433 msgid "toggle mobile" msgstr "auf/von Mobile Ansicht wechseln" -#: boot.php:970 +#: boot.php:999 msgid "Delete this item?" msgstr "Diesen Beitrag löschen?" -#: boot.php:972 +#: boot.php:1001 msgid "show fewer" msgstr "weniger anzeigen" -#: boot.php:1696 +#: boot.php:1729 #, php-format msgid "Update %s failed. See error logs." msgstr "Update %s fehlgeschlagen. Bitte Fehlerprotokoll überprüfen." -#: boot.php:1808 +#: boot.php:1843 msgid "Create a New Account" msgstr "Neues Konto erstellen" -#: boot.php:1837 +#: boot.php:1871 msgid "Password: " msgstr "Passwort: " -#: boot.php:1838 +#: boot.php:1872 msgid "Remember me" msgstr "Anmeldedaten merken" -#: boot.php:1841 +#: boot.php:1875 msgid "Or login using OpenID: " msgstr "Oder melde Dich mit Deiner OpenID an: " -#: boot.php:1847 +#: boot.php:1881 msgid "Forgot your password?" msgstr "Passwort vergessen?" -#: boot.php:1850 +#: boot.php:1884 msgid "Website Terms of Service" msgstr "Website Nutzungsbedingungen" -#: boot.php:1851 +#: boot.php:1885 msgid "terms of service" msgstr "Nutzungsbedingungen" -#: boot.php:1853 +#: boot.php:1887 msgid "Website Privacy Policy" msgstr "Website Datenschutzerklärung" -#: boot.php:1854 +#: boot.php:1888 msgid "privacy policy" msgstr "Datenschutzerklärung" diff --git a/view/lang/de/strings.php b/view/lang/de/strings.php index e88b6ff1e4..31e283643f 100644 --- a/view/lang/de/strings.php +++ b/view/lang/de/strings.php @@ -5,67 +5,6 @@ function string_plural_select_de($n){ return ($n != 1);; }} ; -$a->strings["Male"] = "Männlich"; -$a->strings["Female"] = "Weiblich"; -$a->strings["Currently Male"] = "Momentan männlich"; -$a->strings["Currently Female"] = "Momentan weiblich"; -$a->strings["Mostly Male"] = "Hauptsächlich männlich"; -$a->strings["Mostly Female"] = "Hauptsächlich weiblich"; -$a->strings["Transgender"] = "Transgender"; -$a->strings["Intersex"] = "Intersex"; -$a->strings["Transsexual"] = "Transsexuell"; -$a->strings["Hermaphrodite"] = "Hermaphrodit"; -$a->strings["Neuter"] = "Neuter"; -$a->strings["Non-specific"] = "Nicht spezifiziert"; -$a->strings["Other"] = "Andere"; -$a->strings["Undecided"] = array( - 0 => "Unentschieden", - 1 => "Unentschieden", -); -$a->strings["Males"] = "Männer"; -$a->strings["Females"] = "Frauen"; -$a->strings["Gay"] = "Schwul"; -$a->strings["Lesbian"] = "Lesbisch"; -$a->strings["No Preference"] = "Keine Vorlieben"; -$a->strings["Bisexual"] = "Bisexuell"; -$a->strings["Autosexual"] = "Autosexual"; -$a->strings["Abstinent"] = "Abstinent"; -$a->strings["Virgin"] = "Jungfrauen"; -$a->strings["Deviant"] = "Deviant"; -$a->strings["Fetish"] = "Fetish"; -$a->strings["Oodles"] = "Oodles"; -$a->strings["Nonsexual"] = "Nonsexual"; -$a->strings["Single"] = "Single"; -$a->strings["Lonely"] = "Einsam"; -$a->strings["Available"] = "Verfügbar"; -$a->strings["Unavailable"] = "Nicht verfügbar"; -$a->strings["Has crush"] = "verknallt"; -$a->strings["Infatuated"] = "verliebt"; -$a->strings["Dating"] = "Dating"; -$a->strings["Unfaithful"] = "Untreu"; -$a->strings["Sex Addict"] = "Sexbesessen"; -$a->strings["Friends"] = "Kontakte"; -$a->strings["Friends/Benefits"] = "Freunde/Zuwendungen"; -$a->strings["Casual"] = "Casual"; -$a->strings["Engaged"] = "Verlobt"; -$a->strings["Married"] = "Verheiratet"; -$a->strings["Imaginarily married"] = "imaginär verheiratet"; -$a->strings["Partners"] = "Partner"; -$a->strings["Cohabiting"] = "zusammenlebend"; -$a->strings["Common law"] = "wilde Ehe"; -$a->strings["Happy"] = "Glücklich"; -$a->strings["Not looking"] = "Nicht auf der Suche"; -$a->strings["Swinger"] = "Swinger"; -$a->strings["Betrayed"] = "Betrogen"; -$a->strings["Separated"] = "Getrennt"; -$a->strings["Unstable"] = "Unstabil"; -$a->strings["Divorced"] = "Geschieden"; -$a->strings["Imaginarily divorced"] = "imaginär geschieden"; -$a->strings["Widowed"] = "Verwitwet"; -$a->strings["Uncertain"] = "Unsicher"; -$a->strings["It's complicated"] = "Ist kompliziert"; -$a->strings["Don't care"] = "Ist mir nicht wichtig"; -$a->strings["Ask me"] = "Frag mich"; $a->strings["Forums"] = "Foren"; $a->strings["External link to forum"] = "Externer Link zum Forum"; $a->strings["show more"] = "mehr anzeigen"; @@ -86,108 +25,16 @@ $a->strings["Friend Suggestion"] = "Kontaktvorschlag"; $a->strings["Friend/Connect Request"] = "Kontakt-/Freundschaftsanfrage"; $a->strings["New Follower"] = "Neuer Bewunderer"; $a->strings["Wall Photos"] = "Pinnwand-Bilder"; -$a->strings["Logged out."] = "Abgemeldet."; -$a->strings["Login failed."] = "Anmeldung fehlgeschlagen."; -$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Beim Versuch Dich mit der von Dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe, dass Du die OpenID richtig geschrieben hast."; -$a->strings["The error message was:"] = "Die Fehlermeldung lautete:"; -$a->strings["Image/photo"] = "Bild/Foto"; -$a->strings["%2\$s %3\$s"] = "%2\$s %3\$s"; -$a->strings["$1 wrote:"] = "$1 hat geschrieben:"; -$a->strings["Encrypted content"] = "Verschlüsselter Inhalt"; -$a->strings["Invalid source protocol"] = "Ungültiges Quell-Protokoll"; -$a->strings["Invalid link protocol"] = "Ungültiges Link-Protokoll"; -$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln."; -$a->strings["Friendica Notification"] = "Friendica-Benachrichtigung"; -$a->strings["Thank You,"] = "Danke,"; -$a->strings["%s Administrator"] = "der Administrator von %s"; -$a->strings["%1\$s, %2\$s Administrator"] = "%1\$s, %2\$s Administrator"; +$a->strings["(no subject)"] = "(kein Betreff)"; $a->strings["noreply"] = "noreply"; -$a->strings["%s "] = "%s "; -$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica-Meldung] Neue Nachricht erhalten von %s"; -$a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s hat Dir eine neue private Nachricht auf %2\$s geschickt."; -$a->strings["%1\$s sent you %2\$s."] = "%1\$s schickte Dir %2\$s."; -$a->strings["a private message"] = "eine private Nachricht"; -$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um Deine privaten Nachrichten anzusehen und/oder zu beantworten."; -$a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]a %3\$s[/url]"; -$a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]%3\$ss %4\$s[/url]"; -$a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]Deinen %3\$s[/url]"; -$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica-Meldung] Kommentar zum Beitrag #%1\$d von %2\$s"; -$a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem Du folgst."; -$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren."; -$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica-Meldung] %s hat auf Deine Pinnwand geschrieben"; -$a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s schrieb auf %2\$s auf Deine Pinnwand"; -$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s hat etwas auf [url=%2\$s]Deiner Pinnwand[/url] gepostet"; -$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica-Meldung] %s hat Dich erwähnt"; -$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s erwähnte Dich auf %2\$s"; -$a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]erwähnte Dich[/url]."; -$a->strings["[Friendica:Notify] %s shared a new post"] = "[Friendica Benachrichtigung] %s hat einen Beitrag geteilt"; -$a->strings["%1\$s shared a new post at %2\$s"] = "%1\$s hat einen neuen Beitrag auf %2\$s geteilt"; -$a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "%1\$s [url=%2\$s]hat einen Beitrag geteilt[/url]."; -$a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica-Meldung] %1\$s hat Dich angestupst"; -$a->strings["%1\$s poked you at %2\$s"] = "%1\$s hat Dich auf %2\$s angestupst"; -$a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "%1\$s [url=%2\$s]hat Dich angestupst[/url]."; -$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica-Meldung] %s hat Deinen Beitrag getaggt"; -$a->strings["%1\$s tagged your post at %2\$s"] = "%1\$s erwähnte Deinen Beitrag auf %2\$s"; -$a->strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s erwähnte [url=%2\$s]Deinen Beitrag[/url]"; -$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica-Meldung] Kontaktanfrage erhalten"; -$a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "Du hast eine Kontaktanfrage von '%1\$s' auf %2\$s erhalten"; -$a->strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Du hast eine [url=%1\$s]Kontaktanfrage[/url] von %2\$s erhalten."; -$a->strings["You may visit their profile at %s"] = "Hier kannst Du das Profil betrachten: %s"; -$a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."; -$a->strings["[Friendica:Notify] A new person is sharing with you"] = "[Friendica Benachrichtigung] Eine neue Person teilt mit Dir"; -$a->strings["%1\$s is sharing with you at %2\$s"] = "%1\$s teilt mit Dir auf %2\$s"; -$a->strings["[Friendica:Notify] You have a new follower"] = "[Friendica Benachrichtigung] Du hast einen neuen Kontakt auf "; -$a->strings["You have a new follower at %2\$s : %1\$s"] = "Du hast einen neuen Kontakt auf %2\$s: %1\$s"; -$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica-Meldung] Kontaktvorschlag erhalten"; -$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Du hast einen Kontakt-Vorschlag von '%1\$s' auf %2\$s erhalten"; -$a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Du hast einen [url=%1\$s]Kontakt-Vorschlag[/url] %2\$s von %3\$s erhalten."; -$a->strings["Name:"] = "Name:"; -$a->strings["Photo:"] = "Foto:"; -$a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."; -$a->strings["[Friendica:Notify] Connection accepted"] = "[Friendica-Benachrichtigung] Kontaktanfrage bestätigt"; -$a->strings["'%1\$s' has accepted your connection request at %2\$s"] = "'%1\$s' hat Deine Kontaktanfrage auf %2\$s bestätigt"; -$a->strings["%2\$s has accepted your [url=%1\$s]connection request[/url]."] = "%2\$s hat Deine [url=%1\$s]Kontaktanfrage[/url] akzeptiert."; -$a->strings["You are now mutual friends and may exchange status updates, photos, and email without restriction."] = "Ihr seid nun beidseitige Kontakte und könnt Statusmitteilungen, Bilder und Emails ohne Einschränkungen austauschen."; -$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst."; -$a->strings["'%1\$s' has chosen to accept you a \"fan\", which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically."] = "'%1\$s' hat sich entschieden Dich als \"Fan\" zu akzeptieren, dies schränkt einige Kommunikationswege - wie private Nachrichten und einige Interaktionsmöglichkeiten auf der Profilseite - ein. Wenn dies eine Berühmtheiten- oder Gemeinschaftsseite ist, werden diese Einstellungen automatisch vorgenommen."; -$a->strings["'%1\$s' may choose to extend this into a two-way or more permissive relationship in the future."] = "'%1\$s' kann den Kontaktstatus zu einem späteren Zeitpunkt erweitern und diese Einschränkungen aufheben. "; -$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst."; -$a->strings["[Friendica System:Notify] registration request"] = "[Friendica System:Benachrichtigung] Registrationsanfrage"; -$a->strings["You've received a registration request from '%1\$s' at %2\$s"] = "Du hast eine Registrierungsanfrage von %2\$s auf '%1\$s' erhalten"; -$a->strings["You've received a [url=%1\$s]registration request[/url] from %2\$s."] = "Du hast eine [url=%1\$s]Registrierungsanfrage[/url] von %2\$s erhalten."; -$a->strings["Full Name:\t%1\$s\\nSite Location:\t%2\$s\\nLogin Name:\t%3\$s (%4\$s)"] = "Kompletter Name:\t%1\$s\\nURL der Seite:\t%2\$s\\nLogin Name:\t%3\$s (%4\$s)"; -$a->strings["Please visit %s to approve or reject the request."] = "Bitte besuche %s um die Anfrage zu bearbeiten."; -$a->strings["Disallowed profile URL."] = "Nicht erlaubte Profil-URL."; -$a->strings["Connect URL missing."] = "Connect-URL fehlt"; -$a->strings["This site is not configured to allow communications with other networks."] = "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann."; -$a->strings["No compatible communication protocols or feeds were discovered."] = "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden."; -$a->strings["The profile address specified does not provide adequate information."] = "Die angegebene Profiladresse liefert unzureichende Informationen."; -$a->strings["An author or name was not found."] = "Es wurde kein Autor oder Name gefunden."; -$a->strings["No browser URL could be matched to this address."] = "Zu dieser Adresse konnte keine passende Browser URL gefunden werden."; -$a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen."; -$a->strings["Use mailto: in front of address to force email check."] = "Verwende mailto: vor der Email Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen."; -$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde."; -$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von Dir erhalten können."; -$a->strings["Unable to retrieve contact information."] = "Konnte die Kontaktinformationen nicht empfangen."; -$a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen könnten auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls Du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen."; -$a->strings["Default privacy group for new contacts"] = "Voreingestellte Gruppe für neue Kontakte"; -$a->strings["Everybody"] = "Alle Kontakte"; -$a->strings["edit"] = "bearbeiten"; -$a->strings["Groups"] = "Gruppen"; -$a->strings["Edit groups"] = "Gruppen bearbeiten"; -$a->strings["Edit group"] = "Gruppe bearbeiten"; -$a->strings["Create a new group"] = "Neue Gruppe erstellen"; -$a->strings["Group Name: "] = "Gruppenname:"; -$a->strings["Contacts not in any group"] = "Kontakte in keiner Gruppe"; -$a->strings["add"] = "hinzufügen"; -$a->strings["photo"] = "Foto"; -$a->strings["status"] = "Status"; -$a->strings["event"] = "Event"; $a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s"; $a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s nicht"; $a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil."; $a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt nicht an %2\$ss %3\$s teil."; $a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt eventuell an %2\$ss %3\$s teil."; +$a->strings["photo"] = "Foto"; +$a->strings["status"] = "Status"; +$a->strings["event"] = "Event"; $a->strings["[no subject]"] = "[kein Betreff]"; $a->strings["Nothing new here"] = "Keine Neuigkeiten"; $a->strings["Clear notifications"] = "Bereinige Benachrichtigungen"; @@ -254,15 +101,70 @@ $a->strings["Admin"] = "Administration"; $a->strings["Site setup and configuration"] = "Einstellungen der Seite und Konfiguration"; $a->strings["Navigation"] = "Navigation"; $a->strings["Site map"] = "Sitemap"; -$a->strings["Embedded content"] = "Eingebetteter Inhalt"; -$a->strings["Embedding disabled"] = "Einbettungen deaktiviert"; -$a->strings["%s is now following %s."] = "%s folgt nun %s"; -$a->strings["following"] = "folgen"; -$a->strings["%s stopped following %s."] = "%s hat aufgehört %s zu folgen"; -$a->strings["stopped following"] = "wird nicht mehr gefolgt"; $a->strings["Click here to upgrade."] = "Zum Upgraden hier klicken."; $a->strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Obergrenze Deines Abonnements."; $a->strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Deinem Abonnement nicht verfügbar."; +$a->strings["Male"] = "Männlich"; +$a->strings["Female"] = "Weiblich"; +$a->strings["Currently Male"] = "Momentan männlich"; +$a->strings["Currently Female"] = "Momentan weiblich"; +$a->strings["Mostly Male"] = "Hauptsächlich männlich"; +$a->strings["Mostly Female"] = "Hauptsächlich weiblich"; +$a->strings["Transgender"] = "Transgender"; +$a->strings["Intersex"] = "Intersex"; +$a->strings["Transsexual"] = "Transsexuell"; +$a->strings["Hermaphrodite"] = "Hermaphrodit"; +$a->strings["Neuter"] = "Neuter"; +$a->strings["Non-specific"] = "Nicht spezifiziert"; +$a->strings["Other"] = "Andere"; +$a->strings["Undecided"] = array( + 0 => "Unentschieden", + 1 => "Unentschieden", +); +$a->strings["Males"] = "Männer"; +$a->strings["Females"] = "Frauen"; +$a->strings["Gay"] = "Schwul"; +$a->strings["Lesbian"] = "Lesbisch"; +$a->strings["No Preference"] = "Keine Vorlieben"; +$a->strings["Bisexual"] = "Bisexuell"; +$a->strings["Autosexual"] = "Autosexual"; +$a->strings["Abstinent"] = "Abstinent"; +$a->strings["Virgin"] = "Jungfrauen"; +$a->strings["Deviant"] = "Deviant"; +$a->strings["Fetish"] = "Fetish"; +$a->strings["Oodles"] = "Oodles"; +$a->strings["Nonsexual"] = "Nonsexual"; +$a->strings["Single"] = "Single"; +$a->strings["Lonely"] = "Einsam"; +$a->strings["Available"] = "Verfügbar"; +$a->strings["Unavailable"] = "Nicht verfügbar"; +$a->strings["Has crush"] = "verknallt"; +$a->strings["Infatuated"] = "verliebt"; +$a->strings["Dating"] = "Dating"; +$a->strings["Unfaithful"] = "Untreu"; +$a->strings["Sex Addict"] = "Sexbesessen"; +$a->strings["Friends"] = "Kontakte"; +$a->strings["Friends/Benefits"] = "Freunde/Zuwendungen"; +$a->strings["Casual"] = "Casual"; +$a->strings["Engaged"] = "Verlobt"; +$a->strings["Married"] = "Verheiratet"; +$a->strings["Imaginarily married"] = "imaginär verheiratet"; +$a->strings["Partners"] = "Partner"; +$a->strings["Cohabiting"] = "zusammenlebend"; +$a->strings["Common law"] = "wilde Ehe"; +$a->strings["Happy"] = "Glücklich"; +$a->strings["Not looking"] = "Nicht auf der Suche"; +$a->strings["Swinger"] = "Swinger"; +$a->strings["Betrayed"] = "Betrogen"; +$a->strings["Separated"] = "Getrennt"; +$a->strings["Unstable"] = "Unstabil"; +$a->strings["Divorced"] = "Geschieden"; +$a->strings["Imaginarily divorced"] = "imaginär geschieden"; +$a->strings["Widowed"] = "Verwitwet"; +$a->strings["Uncertain"] = "Unsicher"; +$a->strings["It's complicated"] = "Ist kompliziert"; +$a->strings["Don't care"] = "Ist mir nicht wichtig"; +$a->strings["Ask me"] = "Frag mich"; $a->strings["Welcome "] = "Willkommen "; $a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch."; $a->strings["Welcome back "] = "Willkommen zurück "; @@ -278,40 +180,99 @@ $a->strings["%d contact not imported"] = array( 1 => "%d Kontakte nicht importiert", ); $a->strings["Done. You can now login with your username and password"] = "Erledigt. Du kannst Dich jetzt mit Deinem Nutzernamen und Passwort anmelden"; -$a->strings["Passwords do not match. Password unchanged."] = "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert."; -$a->strings["An invitation is required."] = "Du benötigst eine Einladung."; -$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht überprüft werden."; -$a->strings["Invalid OpenID url"] = "Ungültige OpenID URL"; -$a->strings["Please enter the required information."] = "Bitte trage die erforderlichen Informationen ein."; -$a->strings["Please use a shorter name."] = "Bitte verwende einen kürzeren Namen."; -$a->strings["Name too short."] = "Der Name ist zu kurz."; -$a->strings["That doesn't appear to be your full (First Last) name."] = "Das scheint nicht Dein kompletter Name (Vor- und Nachname) zu sein."; -$a->strings["Your email domain is not among those allowed on this site."] = "Die Domain Deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt."; -$a->strings["Not a valid email address."] = "Keine gültige E-Mail-Adresse."; -$a->strings["Cannot use that email."] = "Konnte diese E-Mail-Adresse nicht verwenden."; -$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"."] = "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\" und \"_\") bestehen."; -$a->strings["Nickname is already registered. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."; -$a->strings["Nickname was once registered here and may not be re-used. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."; -$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden."; -$a->strings["An error occurred during registration. Please try again."] = "Während der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal."; -$a->strings["default"] = "Standard"; -$a->strings["An error occurred creating your default profile. Please try again."] = "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal."; -$a->strings["Profile Photos"] = "Profilbilder"; -$a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your account is pending for approval by the administrator.\n\t"] = "\nHallo %1\$s,\n\ndanke für Deine Registrierung auf %2\$s. Dein Account wurde muss noch vom Admin des Knotens geprüft werden."; -$a->strings["Registration at %s"] = "Registrierung als %s"; -$a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your account has been created.\n\t"] = "\nHallo %1\$s,\n\ndanke für Deine Registrierung auf %2\$s. Dein Account wurde eingerichtet."; -$a->strings["\n\t\tThe login details are as follows:\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t%1\$s\n\t\t\tPassword:\t%5\$s\n\n\t\tYou may change your password from your account \"Settings\" page after logging\n\t\tin.\n\n\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\tYou may also wish to add some basic information to your default profile\n\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\tWe recommend setting your full name, adding a profile photo,\n\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\tthan that.\n\n\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\tIf you are new and do not know anybody here, they may help\n\t\tyou to make some new and interesting friends.\n\n\n\t\tThank you and welcome to %2\$s."] = "\nDie Anmelde-Details sind die folgenden:\n\tAdresse der Seite:\t%3\$s\n\tBenutzernamename:\t%1\$s\n\tPasswort:\t%5\$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nDanke für Deine Aufmerksamkeit und willkommen auf %2\$s."; -$a->strings["Registration details for %s"] = "Details der Registration von %s"; -$a->strings["Post to Email"] = "An E-Mail senden"; -$a->strings["Connectors disabled, since \"%s\" is enabled."] = "Konnektoren sind nicht verfügbar, da \"%s\" aktiv ist."; -$a->strings["Hide your profile details from unknown viewers?"] = "Profil-Details vor unbekannten Betrachtern verbergen?"; -$a->strings["Visible to everybody"] = "Für jeden sichtbar"; +$a->strings["View Profile"] = "Profil anschauen"; +$a->strings["Connect/Follow"] = "Verbinden/Folgen"; +$a->strings["View Status"] = "Pinnwand anschauen"; +$a->strings["View Photos"] = "Bilder anschauen"; +$a->strings["Network Posts"] = "Netzwerkbeiträge"; +$a->strings["View Contact"] = "Kontakt anzeigen"; +$a->strings["Drop Contact"] = "Kontakt löschen"; +$a->strings["Send PM"] = "Private Nachricht senden"; +$a->strings["Poke"] = "Anstupsen"; +$a->strings["Organisation"] = "Organisation"; +$a->strings["News"] = "Nachrichten"; +$a->strings["Forum"] = "Forum"; +$a->strings["Post to Email"] = "An E-Mail senden"; +$a->strings["Connectors disabled, since \"%s\" is enabled."] = "Konnektoren sind nicht verfügbar, da \"%s\" aktiv ist."; +$a->strings["Hide your profile details from unknown viewers?"] = "Profil-Details vor unbekannten Betrachtern verbergen?"; +$a->strings["Visible to everybody"] = "Für jeden sichtbar"; $a->strings["show"] = "zeigen"; $a->strings["don't show"] = "nicht zeigen"; $a->strings["CC: email addresses"] = "Cc: E-Mail-Addressen"; $a->strings["Example: bob@example.com, mary@example.com"] = "Z.B.: bob@example.com, mary@example.com"; $a->strings["Permissions"] = "Berechtigungen"; $a->strings["Close"] = "Schließen"; +$a->strings["Daily posting limit of %d posts reached. The post was rejected."] = "Das tägliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."; +$a->strings["Weekly posting limit of %d posts reached. The post was rejected."] = "Das wöchentliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."; +$a->strings["Monthly posting limit of %d posts reached. The post was rejected."] = "Das monatliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."; +$a->strings["Logged out."] = "Abgemeldet."; +$a->strings["Login failed."] = "Anmeldung fehlgeschlagen."; +$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Beim Versuch Dich mit der von Dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe, dass Du die OpenID richtig geschrieben hast."; +$a->strings["The error message was:"] = "Die Fehlermeldung lautete:"; +$a->strings["l F d, Y \\@ g:i A"] = "l, d. F Y\\, H:i"; +$a->strings["Starts:"] = "Beginnt:"; +$a->strings["Finishes:"] = "Endet:"; +$a->strings["Location:"] = "Ort:"; +$a->strings["Image/photo"] = "Bild/Foto"; +$a->strings["%2\$s %3\$s"] = "%2\$s %3\$s"; +$a->strings["$1 wrote:"] = "$1 hat geschrieben:"; +$a->strings["Encrypted content"] = "Verschlüsselter Inhalt"; +$a->strings["Invalid source protocol"] = "Ungültiges Quell-Protokoll"; +$a->strings["Invalid link protocol"] = "Ungültiges Link-Protokoll"; +$a->strings["Unknown | Not categorised"] = "Unbekannt | Nicht kategorisiert"; +$a->strings["Block immediately"] = "Sofort blockieren"; +$a->strings["Shady, spammer, self-marketer"] = "Zwielichtig, Spammer, Selbstdarsteller"; +$a->strings["Known to me, but no opinion"] = "Ist mir bekannt, hab aber keine Meinung"; +$a->strings["OK, probably harmless"] = "OK, wahrscheinlich harmlos"; +$a->strings["Reputable, has my trust"] = "Seriös, hat mein Vertrauen"; +$a->strings["Frequently"] = "immer wieder"; +$a->strings["Hourly"] = "Stündlich"; +$a->strings["Twice daily"] = "Zweimal täglich"; +$a->strings["Daily"] = "Täglich"; +$a->strings["Weekly"] = "Wöchentlich"; +$a->strings["Monthly"] = "Monatlich"; +$a->strings["Friendica"] = "Friendica"; +$a->strings["OStatus"] = "OStatus"; +$a->strings["RSS/Atom"] = "RSS/Atom"; +$a->strings["Email"] = "E-Mail"; +$a->strings["Diaspora"] = "Diaspora"; +$a->strings["Facebook"] = "Facebook"; +$a->strings["Zot!"] = "Zott"; +$a->strings["LinkedIn"] = "LinkedIn"; +$a->strings["XMPP/IM"] = "XMPP/Chat"; +$a->strings["MySpace"] = "MySpace"; +$a->strings["Google+"] = "Google+"; +$a->strings["pump.io"] = "pump.io"; +$a->strings["Twitter"] = "Twitter"; +$a->strings["Diaspora Connector"] = "Diaspora"; +$a->strings["GNU Social Connector"] = "GNU social Connector"; +$a->strings["pnut"] = "pnut"; +$a->strings["App.net"] = "App.net"; +$a->strings["Add New Contact"] = "Neuen Kontakt hinzufügen"; +$a->strings["Enter address or web location"] = "Adresse oder Web-Link eingeben"; +$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Beispiel: bob@example.com, http://example.com/barbara"; +$a->strings["Connect"] = "Verbinden"; +$a->strings["%d invitation available"] = array( + 0 => "%d Einladung verfügbar", + 1 => "%d Einladungen verfügbar", +); +$a->strings["Find People"] = "Leute finden"; +$a->strings["Enter name or interest"] = "Name oder Interessen eingeben"; +$a->strings["Examples: Robert Morgenstein, Fishing"] = "Beispiel: Robert Morgenstein, Angeln"; +$a->strings["Find"] = "Finde"; +$a->strings["Friend Suggestions"] = "Kontaktvorschläge"; +$a->strings["Similar Interests"] = "Ähnliche Interessen"; +$a->strings["Random Profile"] = "Zufälliges Profil"; +$a->strings["Invite Friends"] = "Freunde einladen"; +$a->strings["Networks"] = "Netzwerke"; +$a->strings["All Networks"] = "Alle Netzwerke"; +$a->strings["Saved Folders"] = "Gespeicherte Ordner"; +$a->strings["Everything"] = "Alles"; +$a->strings["Categories"] = "Kategorien"; +$a->strings["%d contact in common"] = array( + 0 => "%d gemeinsamer Kontakt", + 1 => "%d gemeinsame Kontakte", +); $a->strings["%1\$s attends %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %3\$s teil."; $a->strings["%1\$s doesn't attend %2\$s's %3\$s"] = "%1\$s nimmt nicht an %2\$ss %3\$s teil."; $a->strings["%1\$s attends maybe %2\$s's %3\$s"] = "%1\$s nimmt eventuell an %2\$ss %3\$s teil."; @@ -340,14 +301,6 @@ $a->strings["Please wait"] = "Bitte warten"; $a->strings["remove"] = "löschen"; $a->strings["Delete Selected Items"] = "Lösche die markierten Beiträge"; $a->strings["Follow Thread"] = "Folge der Unterhaltung"; -$a->strings["View Status"] = "Pinnwand anschauen"; -$a->strings["View Profile"] = "Profil anschauen"; -$a->strings["View Photos"] = "Bilder anschauen"; -$a->strings["Network Posts"] = "Netzwerkbeiträge"; -$a->strings["View Contact"] = "Kontakt anzeigen"; -$a->strings["Send PM"] = "Private Nachricht senden"; -$a->strings["Poke"] = "Anstupsen"; -$a->strings["Connect/Follow"] = "Verbinden/Folgen"; $a->strings["%s likes this."] = "%s mag das."; $a->strings["%s doesn't like this."] = "%s mag das nicht."; $a->strings["%s attends."] = "%s nimmt teil."; @@ -413,57 +366,6 @@ $a->strings["Not Attending"] = array( 0 => "Nicht teilnehmend ", 1 => "Nicht teilnehmend", ); -$a->strings["(no subject)"] = "(kein Betreff)"; -$a->strings["General Features"] = "Allgemeine Features"; -$a->strings["Multiple Profiles"] = "Mehrere Profile"; -$a->strings["Ability to create multiple profiles"] = "Möglichkeit mehrere Profile zu erstellen"; -$a->strings["Photo Location"] = "Aufnahmeort"; -$a->strings["Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map."] = "Die Foto-Metadaten werden ausgelesen. Dadurch kann der Aufnahmeort (wenn vorhanden) in einer Karte angezeigt werden."; -$a->strings["Export Public Calendar"] = "Öffentlichen Kalender exportieren"; -$a->strings["Ability for visitors to download the public calendar"] = "Möglichkeit für Besucher den öffentlichen Kalender herunter zu laden"; -$a->strings["Post Composition Features"] = "Beitragserstellung Features"; -$a->strings["Post Preview"] = "Beitragsvorschau"; -$a->strings["Allow previewing posts and comments before publishing them"] = "Die Vorschau von Beiträgen und Kommentaren vor dem absenden erlauben."; -$a->strings["Auto-mention Forums"] = "Foren automatisch erwähnen"; -$a->strings["Add/remove mention when a forum page is selected/deselected in ACL window."] = "Automatisch eine @-Erwähnung eines Forums einfügen/entfehrnen, wenn dieses im ACL Fenster de-/markiert wurde."; -$a->strings["Network Sidebar Widgets"] = "Widgets für Netzwerk und Seitenleiste"; -$a->strings["Search by Date"] = "Archiv"; -$a->strings["Ability to select posts by date ranges"] = "Möglichkeit die Beiträge nach Datumsbereichen zu sortieren"; -$a->strings["List Forums"] = "Zeige Foren"; -$a->strings["Enable widget to display the forums your are connected with"] = "Aktiviere Widget, um die Foren mit denen du verbunden bist anzuzeigen"; -$a->strings["Group Filter"] = "Gruppen Filter"; -$a->strings["Enable widget to display Network posts only from selected group"] = "Widget zur Darstellung der Beiträge nach Kontaktgruppen sortiert aktivieren."; -$a->strings["Network Filter"] = "Netzwerk Filter"; -$a->strings["Enable widget to display Network posts only from selected network"] = "Widget zum filtern der Beiträge in Abhängigkeit des Netzwerks aus dem der Ersteller sendet aktivieren."; -$a->strings["Saved Searches"] = "Gespeicherte Suchen"; -$a->strings["Save search terms for re-use"] = "Speichere Suchanfragen für spätere Wiederholung."; -$a->strings["Network Tabs"] = "Netzwerk Reiter"; -$a->strings["Network Personal Tab"] = "Netzwerk-Reiter: Persönlich"; -$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Aktiviert einen Netzwerk-Reiter in dem Nachrichten angezeigt werden mit denen Du interagiert hast"; -$a->strings["Network New Tab"] = "Netzwerk-Reiter: Neue"; -$a->strings["Enable tab to display only new Network posts (from the last 12 hours)"] = "Aktiviert einen Netzwerk-Reiter in dem ausschließlich neue Beiträge (der letzten 12 Stunden) angezeigt werden"; -$a->strings["Network Shared Links Tab"] = "Netzwerk-Reiter: Geteilte Links"; -$a->strings["Enable tab to display only Network posts with links in them"] = "Aktiviert einen Netzwerk-Reiter der ausschließlich Nachrichten mit Links enthält"; -$a->strings["Post/Comment Tools"] = "Werkzeuge für Beiträge und Kommentare"; -$a->strings["Multiple Deletion"] = "Mehrere Beiträge löschen"; -$a->strings["Select and delete multiple posts/comments at once"] = "Mehrere Beiträge/Kommentare markieren und gleichzeitig löschen"; -$a->strings["Edit Sent Posts"] = "Gesendete Beiträge editieren"; -$a->strings["Edit and correct posts and comments after sending"] = "Erlaubt es Beiträge und Kommentare nach dem Senden zu editieren bzw.zu korrigieren."; -$a->strings["Tagging"] = "Tagging"; -$a->strings["Ability to tag existing posts"] = "Möglichkeit bereits existierende Beiträge nachträglich mit Tags zu versehen."; -$a->strings["Post Categories"] = "Beitragskategorien"; -$a->strings["Add categories to your posts"] = "Eigene Beiträge mit Kategorien versehen"; -$a->strings["Saved Folders"] = "Gespeicherte Ordner"; -$a->strings["Ability to file posts under folders"] = "Beiträge in Ordnern speichern aktivieren"; -$a->strings["Dislike Posts"] = "Beiträge 'nicht mögen'"; -$a->strings["Ability to dislike posts/comments"] = "Ermöglicht es Beiträge mit einem Klick 'nicht zu mögen'"; -$a->strings["Star Posts"] = "Beiträge Markieren"; -$a->strings["Ability to mark special posts with a star indicator"] = "Erlaubt es Beiträge mit einem Stern-Indikator zu markieren"; -$a->strings["Mute Post Notifications"] = "Benachrichtigungen für Beiträge Stumm schalten"; -$a->strings["Ability to mute notifications for a thread"] = "Möglichkeit Benachrichtigungen für einen Thread abbestellen zu können"; -$a->strings["Advanced Profile Settings"] = "Erweiterte Profil-Einstellungen"; -$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "Zeige Besuchern öffentliche Gemeinschafts-Foren auf der Erweiterten Profil-Seite"; -$a->strings["Contact Photos"] = "Kontaktbilder"; $a->strings["Miscellaneous"] = "Verschiedenes"; $a->strings["Birthday:"] = "Geburtstag:"; $a->strings["Age: "] = "Alter: "; @@ -487,10 +389,67 @@ $a->strings["seconds"] = "Sekunden"; $a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s her"; $a->strings["%s's birthday"] = "%ss Geburtstag"; $a->strings["Happy Birthday %s"] = "Herzlichen Glückwunsch %s"; -$a->strings["l F d, Y \\@ g:i A"] = "l, d. F Y\\, H:i"; -$a->strings["Starts:"] = "Beginnt:"; -$a->strings["Finishes:"] = "Endet:"; -$a->strings["Location:"] = "Ort:"; +$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln."; +$a->strings["Friendica Notification"] = "Friendica-Benachrichtigung"; +$a->strings["Thank You,"] = "Danke,"; +$a->strings["%s Administrator"] = "der Administrator von %s"; +$a->strings["%1\$s, %2\$s Administrator"] = "%1\$s, %2\$s Administrator"; +$a->strings["%s "] = "%s "; +$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica-Meldung] Neue Nachricht erhalten von %s"; +$a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s hat Dir eine neue private Nachricht auf %2\$s geschickt."; +$a->strings["%1\$s sent you %2\$s."] = "%1\$s schickte Dir %2\$s."; +$a->strings["a private message"] = "eine private Nachricht"; +$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um Deine privaten Nachrichten anzusehen und/oder zu beantworten."; +$a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]a %3\$s[/url]"; +$a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]%3\$ss %4\$s[/url]"; +$a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]Deinen %3\$s[/url]"; +$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica-Meldung] Kommentar zum Beitrag #%1\$d von %2\$s"; +$a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem Du folgst."; +$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren."; +$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica-Meldung] %s hat auf Deine Pinnwand geschrieben"; +$a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s schrieb auf %2\$s auf Deine Pinnwand"; +$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s hat etwas auf [url=%2\$s]Deiner Pinnwand[/url] gepostet"; +$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica-Meldung] %s hat Dich erwähnt"; +$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s erwähnte Dich auf %2\$s"; +$a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]erwähnte Dich[/url]."; +$a->strings["[Friendica:Notify] %s shared a new post"] = "[Friendica Benachrichtigung] %s hat einen Beitrag geteilt"; +$a->strings["%1\$s shared a new post at %2\$s"] = "%1\$s hat einen neuen Beitrag auf %2\$s geteilt"; +$a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "%1\$s [url=%2\$s]hat einen Beitrag geteilt[/url]."; +$a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica-Meldung] %1\$s hat Dich angestupst"; +$a->strings["%1\$s poked you at %2\$s"] = "%1\$s hat Dich auf %2\$s angestupst"; +$a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "%1\$s [url=%2\$s]hat Dich angestupst[/url]."; +$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica-Meldung] %s hat Deinen Beitrag getaggt"; +$a->strings["%1\$s tagged your post at %2\$s"] = "%1\$s erwähnte Deinen Beitrag auf %2\$s"; +$a->strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s erwähnte [url=%2\$s]Deinen Beitrag[/url]"; +$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica-Meldung] Kontaktanfrage erhalten"; +$a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "Du hast eine Kontaktanfrage von '%1\$s' auf %2\$s erhalten"; +$a->strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Du hast eine [url=%1\$s]Kontaktanfrage[/url] von %2\$s erhalten."; +$a->strings["You may visit their profile at %s"] = "Hier kannst Du das Profil betrachten: %s"; +$a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."; +$a->strings["[Friendica:Notify] A new person is sharing with you"] = "[Friendica Benachrichtigung] Eine neue Person teilt mit Dir"; +$a->strings["%1\$s is sharing with you at %2\$s"] = "%1\$s teilt mit Dir auf %2\$s"; +$a->strings["[Friendica:Notify] You have a new follower"] = "[Friendica Benachrichtigung] Du hast einen neuen Kontakt auf "; +$a->strings["You have a new follower at %2\$s : %1\$s"] = "Du hast einen neuen Kontakt auf %2\$s: %1\$s"; +$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica-Meldung] Kontaktvorschlag erhalten"; +$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Du hast einen Kontakt-Vorschlag von '%1\$s' auf %2\$s erhalten"; +$a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Du hast einen [url=%1\$s]Kontakt-Vorschlag[/url] %2\$s von %3\$s erhalten."; +$a->strings["Name:"] = "Name:"; +$a->strings["Photo:"] = "Foto:"; +$a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."; +$a->strings["[Friendica:Notify] Connection accepted"] = "[Friendica-Benachrichtigung] Kontaktanfrage bestätigt"; +$a->strings["'%1\$s' has accepted your connection request at %2\$s"] = "'%1\$s' hat Deine Kontaktanfrage auf %2\$s bestätigt"; +$a->strings["%2\$s has accepted your [url=%1\$s]connection request[/url]."] = "%2\$s hat Deine [url=%1\$s]Kontaktanfrage[/url] akzeptiert."; +$a->strings["You are now mutual friends and may exchange status updates, photos, and email without restriction."] = "Ihr seid nun beidseitige Kontakte und könnt Statusmitteilungen, Bilder und Emails ohne Einschränkungen austauschen."; +$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst."; +$a->strings["'%1\$s' has chosen to accept you a \"fan\", which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically."] = "'%1\$s' hat sich entschieden Dich als \"Fan\" zu akzeptieren, dies schränkt einige Kommunikationswege - wie private Nachrichten und einige Interaktionsmöglichkeiten auf der Profilseite - ein. Wenn dies eine Berühmtheiten- oder Gemeinschaftsseite ist, werden diese Einstellungen automatisch vorgenommen."; +$a->strings["'%1\$s' may choose to extend this into a two-way or more permissive relationship in the future."] = "'%1\$s' kann den Kontaktstatus zu einem späteren Zeitpunkt erweitern und diese Einschränkungen aufheben. "; +$a->strings["Please visit %s if you wish to make any changes to this relationship."] = "Bitte besuche %s, wenn Du Änderungen an eurer Beziehung vornehmen willst."; +$a->strings["[Friendica System:Notify] registration request"] = "[Friendica System:Benachrichtigung] Registrationsanfrage"; +$a->strings["You've received a registration request from '%1\$s' at %2\$s"] = "Du hast eine Registrierungsanfrage von %2\$s auf '%1\$s' erhalten"; +$a->strings["You've received a [url=%1\$s]registration request[/url] from %2\$s."] = "Du hast eine [url=%1\$s]Registrierungsanfrage[/url] von %2\$s erhalten."; +$a->strings["Full Name:\t%1\$s\\nSite Location:\t%2\$s\\nLogin Name:\t%3\$s (%4\$s)"] = "Kompletter Name:\t%1\$s\\nURL der Seite:\t%2\$s\\nLogin Name:\t%3\$s (%4\$s)"; +$a->strings["Please visit %s to approve or reject the request."] = "Bitte besuche %s um die Anfrage zu bearbeiten."; +$a->strings["all-day"] = "ganztägig"; $a->strings["Sun"] = "So"; $a->strings["Mon"] = "Mo"; $a->strings["Tue"] = "Di"; @@ -529,74 +488,86 @@ $a->strings["October"] = "Oktober"; $a->strings["November"] = "November"; $a->strings["December"] = "Dezember"; $a->strings["today"] = "Heute"; -$a->strings["all-day"] = "ganztägig"; $a->strings["No events to display"] = "Keine Veranstaltung zum Anzeigen"; $a->strings["l, F j"] = "l, F j"; $a->strings["Edit event"] = "Veranstaltung bearbeiten"; +$a->strings["Delete event"] = "Veranstaltung löschen"; $a->strings["link to source"] = "Link zum Originalbeitrag"; $a->strings["Export"] = "Exportieren"; $a->strings["Export calendar as ical"] = "Kalender als ical exportieren"; $a->strings["Export calendar as csv"] = "Kalender als csv exportieren"; -$a->strings["%s\\'s birthday"] = "%ss Geburtstag"; -$a->strings["Unknown | Not categorised"] = "Unbekannt | Nicht kategorisiert"; -$a->strings["Block immediately"] = "Sofort blockieren"; -$a->strings["Shady, spammer, self-marketer"] = "Zwielichtig, Spammer, Selbstdarsteller"; -$a->strings["Known to me, but no opinion"] = "Ist mir bekannt, hab aber keine Meinung"; -$a->strings["OK, probably harmless"] = "OK, wahrscheinlich harmlos"; -$a->strings["Reputable, has my trust"] = "Seriös, hat mein Vertrauen"; -$a->strings["Frequently"] = "immer wieder"; -$a->strings["Hourly"] = "Stündlich"; -$a->strings["Twice daily"] = "Zweimal täglich"; -$a->strings["Daily"] = "Täglich"; -$a->strings["Weekly"] = "Wöchentlich"; -$a->strings["Monthly"] = "Monatlich"; -$a->strings["Friendica"] = "Friendica"; -$a->strings["OStatus"] = "OStatus"; -$a->strings["RSS/Atom"] = "RSS/Atom"; -$a->strings["Email"] = "E-Mail"; -$a->strings["Diaspora"] = "Diaspora"; -$a->strings["Facebook"] = "Facebook"; -$a->strings["Zot!"] = "Zott"; -$a->strings["LinkedIn"] = "LinkedIn"; -$a->strings["XMPP/IM"] = "XMPP/Chat"; -$a->strings["MySpace"] = "MySpace"; -$a->strings["Google+"] = "Google+"; -$a->strings["pump.io"] = "pump.io"; -$a->strings["Twitter"] = "Twitter"; -$a->strings["Diaspora Connector"] = "Diaspora"; -$a->strings["GNU Social"] = "GNU Social"; -$a->strings["pnut"] = "pnut"; -$a->strings["App.net"] = "App.net"; -$a->strings["Hubzilla/Redmatrix"] = "Hubzilla/Redmatrix"; -$a->strings["Add New Contact"] = "Neuen Kontakt hinzufügen"; -$a->strings["Enter address or web location"] = "Adresse oder Web-Link eingeben"; -$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Beispiel: bob@example.com, http://example.com/barbara"; -$a->strings["Connect"] = "Verbinden"; -$a->strings["%d invitation available"] = array( - 0 => "%d Einladung verfügbar", - 1 => "%d Einladungen verfügbar", -); -$a->strings["Find People"] = "Leute finden"; -$a->strings["Enter name or interest"] = "Name oder Interessen eingeben"; -$a->strings["Examples: Robert Morgenstein, Fishing"] = "Beispiel: Robert Morgenstein, Angeln"; -$a->strings["Find"] = "Finde"; -$a->strings["Friend Suggestions"] = "Kontaktvorschläge"; -$a->strings["Similar Interests"] = "Ähnliche Interessen"; -$a->strings["Random Profile"] = "Zufälliges Profil"; -$a->strings["Invite Friends"] = "Freunde einladen"; -$a->strings["Networks"] = "Netzwerke"; -$a->strings["All Networks"] = "Alle Netzwerke"; -$a->strings["Everything"] = "Alles"; -$a->strings["Categories"] = "Kategorien"; -$a->strings["%d contact in common"] = array( - 0 => "%d gemeinsamer Kontakt", - 1 => "%d gemeinsame Kontakte", -); -$a->strings["Daily posting limit of %d posts reached. The post was rejected."] = "Das tägliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."; -$a->strings["Weekly posting limit of %d posts reached. The post was rejected."] = "Das wöchentliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."; -$a->strings["Monthly posting limit of %d posts reached. The post was rejected."] = "Das monatliche Nachrichtenlimit von %d Nachrichten wurde erreicht. Die Nachtricht wurde verworfen."; -$a->strings["Sharing notification from Diaspora network"] = "Freigabe-Benachrichtigung von Diaspora"; -$a->strings["Attachments:"] = "Anhänge:"; +$a->strings["General Features"] = "Allgemeine Features"; +$a->strings["Multiple Profiles"] = "Mehrere Profile"; +$a->strings["Ability to create multiple profiles"] = "Möglichkeit mehrere Profile zu erstellen"; +$a->strings["Photo Location"] = "Aufnahmeort"; +$a->strings["Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map."] = "Die Foto-Metadaten werden ausgelesen. Dadurch kann der Aufnahmeort (wenn vorhanden) in einer Karte angezeigt werden."; +$a->strings["Export Public Calendar"] = "Öffentlichen Kalender exportieren"; +$a->strings["Ability for visitors to download the public calendar"] = "Möglichkeit für Besucher den öffentlichen Kalender herunter zu laden"; +$a->strings["Post Composition Features"] = "Beitragserstellung Features"; +$a->strings["Post Preview"] = "Beitragsvorschau"; +$a->strings["Allow previewing posts and comments before publishing them"] = "Die Vorschau von Beiträgen und Kommentaren vor dem absenden erlauben."; +$a->strings["Auto-mention Forums"] = "Foren automatisch erwähnen"; +$a->strings["Add/remove mention when a forum page is selected/deselected in ACL window."] = "Automatisch eine @-Erwähnung eines Forums einfügen/entfehrnen, wenn dieses im ACL Fenster de-/markiert wurde."; +$a->strings["Network Sidebar Widgets"] = "Widgets für Netzwerk und Seitenleiste"; +$a->strings["Search by Date"] = "Archiv"; +$a->strings["Ability to select posts by date ranges"] = "Möglichkeit die Beiträge nach Datumsbereichen zu sortieren"; +$a->strings["List Forums"] = "Zeige Foren"; +$a->strings["Enable widget to display the forums your are connected with"] = "Aktiviere Widget, um die Foren mit denen du verbunden bist anzuzeigen"; +$a->strings["Group Filter"] = "Gruppen Filter"; +$a->strings["Enable widget to display Network posts only from selected group"] = "Widget zur Darstellung der Beiträge nach Kontaktgruppen sortiert aktivieren."; +$a->strings["Network Filter"] = "Netzwerk Filter"; +$a->strings["Enable widget to display Network posts only from selected network"] = "Widget zum filtern der Beiträge in Abhängigkeit des Netzwerks aus dem der Ersteller sendet aktivieren."; +$a->strings["Saved Searches"] = "Gespeicherte Suchen"; +$a->strings["Save search terms for re-use"] = "Speichere Suchanfragen für spätere Wiederholung."; +$a->strings["Network Tabs"] = "Netzwerk Reiter"; +$a->strings["Network Personal Tab"] = "Netzwerk-Reiter: Persönlich"; +$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Aktiviert einen Netzwerk-Reiter in dem Nachrichten angezeigt werden mit denen Du interagiert hast"; +$a->strings["Network New Tab"] = "Netzwerk-Reiter: Neue"; +$a->strings["Enable tab to display only new Network posts (from the last 12 hours)"] = "Aktiviert einen Netzwerk-Reiter in dem ausschließlich neue Beiträge (der letzten 12 Stunden) angezeigt werden"; +$a->strings["Network Shared Links Tab"] = "Netzwerk-Reiter: Geteilte Links"; +$a->strings["Enable tab to display only Network posts with links in them"] = "Aktiviert einen Netzwerk-Reiter der ausschließlich Nachrichten mit Links enthält"; +$a->strings["Post/Comment Tools"] = "Werkzeuge für Beiträge und Kommentare"; +$a->strings["Multiple Deletion"] = "Mehrere Beiträge löschen"; +$a->strings["Select and delete multiple posts/comments at once"] = "Mehrere Beiträge/Kommentare markieren und gleichzeitig löschen"; +$a->strings["Edit Sent Posts"] = "Gesendete Beiträge editieren"; +$a->strings["Edit and correct posts and comments after sending"] = "Erlaubt es Beiträge und Kommentare nach dem Senden zu editieren bzw.zu korrigieren."; +$a->strings["Tagging"] = "Tagging"; +$a->strings["Ability to tag existing posts"] = "Möglichkeit bereits existierende Beiträge nachträglich mit Tags zu versehen."; +$a->strings["Post Categories"] = "Beitragskategorien"; +$a->strings["Add categories to your posts"] = "Eigene Beiträge mit Kategorien versehen"; +$a->strings["Ability to file posts under folders"] = "Beiträge in Ordnern speichern aktivieren"; +$a->strings["Dislike Posts"] = "Beiträge 'nicht mögen'"; +$a->strings["Ability to dislike posts/comments"] = "Ermöglicht es Beiträge mit einem Klick 'nicht zu mögen'"; +$a->strings["Star Posts"] = "Beiträge Markieren"; +$a->strings["Ability to mark special posts with a star indicator"] = "Erlaubt es Beiträge mit einem Stern-Indikator zu markieren"; +$a->strings["Mute Post Notifications"] = "Benachrichtigungen für Beiträge Stumm schalten"; +$a->strings["Ability to mute notifications for a thread"] = "Möglichkeit Benachrichtigungen für einen Thread abbestellen zu können"; +$a->strings["Advanced Profile Settings"] = "Erweiterte Profil-Einstellungen"; +$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "Zeige Besuchern öffentliche Gemeinschafts-Foren auf der Erweiterten Profil-Seite"; +$a->strings["Disallowed profile URL."] = "Nicht erlaubte Profil-URL."; +$a->strings["Blocked domain"] = "Blockierte Daimain"; +$a->strings["Connect URL missing."] = "Connect-URL fehlt"; +$a->strings["This site is not configured to allow communications with other networks."] = "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann."; +$a->strings["No compatible communication protocols or feeds were discovered."] = "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden."; +$a->strings["The profile address specified does not provide adequate information."] = "Die angegebene Profiladresse liefert unzureichende Informationen."; +$a->strings["An author or name was not found."] = "Es wurde kein Autor oder Name gefunden."; +$a->strings["No browser URL could be matched to this address."] = "Zu dieser Adresse konnte keine passende Browser URL gefunden werden."; +$a->strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen."; +$a->strings["Use mailto: in front of address to force email check."] = "Verwende mailto: vor der Email Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen."; +$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde."; +$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von Dir erhalten können."; +$a->strings["Unable to retrieve contact information."] = "Konnte die Kontaktinformationen nicht empfangen."; +$a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen könnten auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls Du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen."; +$a->strings["Default privacy group for new contacts"] = "Voreingestellte Gruppe für neue Kontakte"; +$a->strings["Everybody"] = "Alle Kontakte"; +$a->strings["edit"] = "bearbeiten"; +$a->strings["Groups"] = "Gruppen"; +$a->strings["Edit groups"] = "Gruppen bearbeiten"; +$a->strings["Edit group"] = "Gruppe bearbeiten"; +$a->strings["Create a new group"] = "Neue Gruppe erstellen"; +$a->strings["Group Name: "] = "Gruppenname:"; +$a->strings["Contacts not in any group"] = "Kontakte in keiner Gruppe"; +$a->strings["add"] = "hinzufügen"; $a->strings["Requested account is not available."] = "Das angefragte Profil ist nicht vorhanden."; $a->strings["Requested profile is not available."] = "Das angefragte Profil ist nicht vorhanden."; $a->strings["Edit profile"] = "Profil bearbeiten"; @@ -650,12 +621,60 @@ $a->strings["Profile Details"] = "Profildetails"; $a->strings["Photo Albums"] = "Fotoalben"; $a->strings["Personal Notes"] = "Persönliche Notizen"; $a->strings["Only You Can See This"] = "Nur Du kannst das sehen"; +$a->strings["view full size"] = "Volle Größe anzeigen"; +$a->strings["Embedded content"] = "Eingebetteter Inhalt"; +$a->strings["Embedding disabled"] = "Einbettungen deaktiviert"; +$a->strings["Contact Photos"] = "Kontaktbilder"; +$a->strings["Passwords do not match. Password unchanged."] = "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert."; +$a->strings["An invitation is required."] = "Du benötigst eine Einladung."; +$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht überprüft werden."; +$a->strings["Invalid OpenID url"] = "Ungültige OpenID URL"; +$a->strings["Please enter the required information."] = "Bitte trage die erforderlichen Informationen ein."; +$a->strings["Please use a shorter name."] = "Bitte verwende einen kürzeren Namen."; +$a->strings["Name too short."] = "Der Name ist zu kurz."; +$a->strings["That doesn't appear to be your full (First Last) name."] = "Das scheint nicht Dein kompletter Name (Vor- und Nachname) zu sein."; +$a->strings["Your email domain is not among those allowed on this site."] = "Die Domain Deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt."; +$a->strings["Not a valid email address."] = "Keine gültige E-Mail-Adresse."; +$a->strings["Cannot use that email."] = "Konnte diese E-Mail-Adresse nicht verwenden."; +$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\" and \"_\"."] = "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\" und \"_\") bestehen."; +$a->strings["Nickname is already registered. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."; +$a->strings["Nickname was once registered here and may not be re-used. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."; +$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden."; +$a->strings["An error occurred during registration. Please try again."] = "Während der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal."; +$a->strings["default"] = "Standard"; +$a->strings["An error occurred creating your default profile. Please try again."] = "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal."; +$a->strings["Profile Photos"] = "Profilbilder"; +$a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your account is pending for approval by the administrator.\n\t"] = "\nHallo %1\$s,\n\ndanke für Deine Registrierung auf %2\$s. Dein Account wurde muss noch vom Admin des Knotens geprüft werden."; +$a->strings["Registration at %s"] = "Registrierung als %s"; +$a->strings["\n\t\tDear %1\$s,\n\t\t\tThank you for registering at %2\$s. Your account has been created.\n\t"] = "\nHallo %1\$s,\n\ndanke für Deine Registrierung auf %2\$s. Dein Account wurde eingerichtet."; +$a->strings["\n\t\tThe login details are as follows:\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t%1\$s\n\t\t\tPassword:\t%5\$s\n\n\t\tYou may change your password from your account \"Settings\" page after logging\n\t\tin.\n\n\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\tYou may also wish to add some basic information to your default profile\n\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\tWe recommend setting your full name, adding a profile photo,\n\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\tthan that.\n\n\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\tIf you are new and do not know anybody here, they may help\n\t\tyou to make some new and interesting friends.\n\n\n\t\tThank you and welcome to %2\$s."] = "\nDie Anmelde-Details sind die folgenden:\n\tAdresse der Seite:\t%3\$s\n\tBenutzernamename:\t%1\$s\n\tPasswort:\t%5\$s\n\nDu kannst Dein Passwort unter \"Einstellungen\" ändern, sobald Du Dich\nangemeldet hast.\n\nBitte nimm Dir ein paar Minuten um die anderen Einstellungen auf dieser\nSeite zu kontrollieren.\n\nEventuell magst Du ja auch einige Informationen über Dich in Deinem\nProfil veröffentlichen, damit andere Leute Dich einfacher finden können.\nBearbeite hierfür einfach Dein Standard-Profil (über die Profil-Seite).\n\nWir empfehlen Dir, Deinen kompletten Namen anzugeben und ein zu Dir\npassendes Profilbild zu wählen, damit Dich alte Bekannte wieder finden.\nAußerdem ist es nützlich, wenn Du auf Deinem Profil Schlüsselwörter\nangibst. Das erleichtert es, Leute zu finden, die Deine Interessen teilen.\n\nWir respektieren Deine Privatsphäre - keine dieser Angaben ist nötig.\nWenn Du neu im Netzwerk bist und noch niemanden kennst, dann können sie\nallerdings dabei helfen, neue und interessante Kontakte zu knüpfen.\n\nDanke für Deine Aufmerksamkeit und willkommen auf %2\$s."; +$a->strings["Registration details for %s"] = "Details der Registration von %s"; +$a->strings["There are no tables on MyISAM."] = "Es gibt keine MyISAM Tabellen."; +$a->strings["\n\t\t\tThe friendica developers released update %s recently,\n\t\t\tbut when I tried to install it, something went terribly wrong.\n\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."] = "\nDie Friendica-Entwickler haben vor kurzem das Update %s veröffentlicht, aber bei der Installation ging etwas schrecklich schief.\n\nDas Problem sollte so schnell wie möglich gelöst werden, aber ich schaffe es nicht alleine. Bitte kontaktiere einen Friendica-Entwickler falls Du mir nicht alleine helfen kannst. Meine Datenbank könnte ungültig sein."; +$a->strings["The error message is\n[pre]%s[/pre]"] = "Die Fehlermeldung lautet\n[pre]%s[/pre]"; +$a->strings["\nError %d occurred during database update:\n%s\n"] = "\nFehler %d beim Update der Datenbank aufgetreten\n%s\n"; +$a->strings["Errors encountered performing database changes: "] = "Fehler beim Ändern der Datenbank aufgetreten"; +$a->strings[": Database update"] = ": Datenbank Update"; +$a->strings["%s: updating %s table."] = "%s: aktualisiere Tabelle %s"; +$a->strings["%s\\'s birthday"] = "%ss Geburtstag"; +$a->strings["Sharing notification from Diaspora network"] = "Freigabe-Benachrichtigung von Diaspora"; +$a->strings["Attachments:"] = "Anhänge:"; +$a->strings["[Name Withheld]"] = "[Name unterdrückt]"; +$a->strings["Item not found."] = "Beitrag nicht gefunden."; +$a->strings["Do you really want to delete this item?"] = "Möchtest Du wirklich dieses Item löschen?"; +$a->strings["Yes"] = "Ja"; +$a->strings["Permission denied."] = "Zugriff verweigert."; +$a->strings["Archives"] = "Archiv"; +$a->strings["%s is now following %s."] = "%s folgt nun %s"; +$a->strings["following"] = "folgen"; +$a->strings["%s stopped following %s."] = "%s hat aufgehört %s zu folgen"; +$a->strings["stopped following"] = "wird nicht mehr gefolgt"; $a->strings["newer"] = "neuer"; $a->strings["older"] = "älter"; -$a->strings["prev"] = "vorige"; $a->strings["first"] = "erste"; -$a->strings["last"] = "letzte"; +$a->strings["prev"] = "vorige"; $a->strings["next"] = "nächste"; +$a->strings["last"] = "letzte"; $a->strings["Loading more entries..."] = "lade weitere Einträge..."; $a->strings["The end"] = "Das Ende"; $a->strings["No contacts"] = "Keine Kontakte"; @@ -709,21 +728,6 @@ $a->strings["comment"] = array( ); $a->strings["post"] = "Beitrag"; $a->strings["Item filed"] = "Beitrag abgelegt"; -$a->strings["Drop Contact"] = "Kontakt löschen"; -$a->strings["Organisation"] = "Organisation"; -$a->strings["News"] = "Nachrichten"; -$a->strings["Forum"] = "Forum"; -$a->strings["[Name Withheld]"] = "[Name unterdrückt]"; -$a->strings["Item not found."] = "Beitrag nicht gefunden."; -$a->strings["Do you really want to delete this item?"] = "Möchtest Du wirklich dieses Item löschen?"; -$a->strings["Yes"] = "Ja"; -$a->strings["Permission denied."] = "Zugriff verweigert."; -$a->strings["Archives"] = "Archiv"; -$a->strings["\n\t\t\tThe friendica developers released update %s recently,\n\t\t\tbut when I tried to install it, something went terribly wrong.\n\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."] = "\nDie Friendica-Entwickler haben vor kurzem das Update %s veröffentlicht, aber bei der Installation ging etwas schrecklich schief.\n\nDas Problem sollte so schnell wie möglich gelöst werden, aber ich schaffe es nicht alleine. Bitte kontaktiere einen Friendica-Entwickler falls Du mir nicht alleine helfen kannst. Meine Datenbank könnte ungültig sein."; -$a->strings["The error message is\n[pre]%s[/pre]"] = "Die Fehlermeldung lautet\n[pre]%s[/pre]"; -$a->strings["Errors encountered creating database tables."] = "Fehler aufgetreten während der Erzeugung der Datenbanktabellen."; -$a->strings["Errors encountered performing database changes."] = "Es sind Fehler beim Bearbeiten der Datenbank aufgetreten."; -$a->strings["view full size"] = "Volle Größe anzeigen"; $a->strings["No friends to display."] = "Keine Kontakte zum Anzeigen."; $a->strings["Authorize application connection"] = "Verbindung der Applikation autorisieren"; $a->strings["Return to your app and insert this Securty Code:"] = "Gehe zu Deiner Anwendung zurück und trage dort folgenden Sicherheitscode ein:"; @@ -735,24 +739,101 @@ $a->strings["Applications"] = "Anwendungen"; $a->strings["No installed applications."] = "Keine Applikationen installiert."; $a->strings["Item not available."] = "Beitrag nicht verfügbar."; $a->strings["Item was not found."] = "Beitrag konnte nicht gefunden werden."; -$a->strings["Source (bbcode) text:"] = "Quelle (bbcode) Text:"; -$a->strings["Source (Diaspora) text to convert to BBcode:"] = "Eingabe (Diaspora) nach BBCode zu konvertierender Text:"; -$a->strings["Source input: "] = "Originaltext:"; -$a->strings["bb2html (raw HTML): "] = "bb2html (reines HTML): "; -$a->strings["bb2html: "] = "bb2html: "; -$a->strings["bb2html2bb: "] = "bb2html2bb: "; -$a->strings["bb2md: "] = "bb2md: "; -$a->strings["bb2md2html: "] = "bb2md2html: "; -$a->strings["bb2dia2bb: "] = "bb2dia2bb: "; -$a->strings["bb2md2html2bb: "] = "bb2md2html2bb: "; -$a->strings["Source input (Diaspora format): "] = "Originaltext (Diaspora Format): "; -$a->strings["diaspora2bb: "] = "diaspora2bb: "; $a->strings["The post was created"] = "Der Beitrag wurde angelegt"; $a->strings["No contacts in common."] = "Keine gemeinsamen Kontakte."; $a->strings["Common Friends"] = "Gemeinsame Kontakte"; -$a->strings["Public access denied."] = "Öffentlicher Zugriff verweigert."; -$a->strings["Not available."] = "Nicht verfügbar."; -$a->strings["No results."] = "Keine Ergebnisse."; +$a->strings["%d contact edited."] = array( + 0 => "%d Kontakt bearbeitet.", + 1 => "%d Kontakte bearbeitet.", +); +$a->strings["Could not access contact record."] = "Konnte nicht auf die Kontaktdaten zugreifen."; +$a->strings["Could not locate selected profile."] = "Konnte das ausgewählte Profil nicht finden."; +$a->strings["Contact updated."] = "Kontakt aktualisiert."; +$a->strings["Failed to update contact record."] = "Aktualisierung der Kontaktdaten fehlgeschlagen."; +$a->strings["Contact has been blocked"] = "Kontakt wurde blockiert"; +$a->strings["Contact has been unblocked"] = "Kontakt wurde wieder freigegeben"; +$a->strings["Contact has been ignored"] = "Kontakt wurde ignoriert"; +$a->strings["Contact has been unignored"] = "Kontakt wird nicht mehr ignoriert"; +$a->strings["Contact has been archived"] = "Kontakt wurde archiviert"; +$a->strings["Contact has been unarchived"] = "Kontakt wurde aus dem Archiv geholt"; +$a->strings["Drop contact"] = "Kontakt löschen"; +$a->strings["Do you really want to delete this contact?"] = "Möchtest Du wirklich diesen Kontakt löschen?"; +$a->strings["Contact has been removed."] = "Kontakt wurde entfernt."; +$a->strings["You are mutual friends with %s"] = "Du hast mit %s eine beidseitige Freundschaft"; +$a->strings["You are sharing with %s"] = "Du teilst mit %s"; +$a->strings["%s is sharing with you"] = "%s teilt mit Dir"; +$a->strings["Private communications are not available for this contact."] = "Private Kommunikation ist für diesen Kontakt nicht verfügbar."; +$a->strings["Never"] = "Niemals"; +$a->strings["(Update was successful)"] = "(Aktualisierung war erfolgreich)"; +$a->strings["(Update was not successful)"] = "(Aktualisierung war nicht erfolgreich)"; +$a->strings["Suggest friends"] = "Kontakte vorschlagen"; +$a->strings["Network type: %s"] = "Netzwerktyp: %s"; +$a->strings["Communications lost with this contact!"] = "Verbindungen mit diesem Kontakt verloren!"; +$a->strings["Fetch further information for feeds"] = "Weitere Informationen zu Feeds holen"; +$a->strings["Disabled"] = "Deaktiviert"; +$a->strings["Fetch information"] = "Beziehe Information"; +$a->strings["Fetch information and keywords"] = "Beziehe Information und Schlüsselworte"; +$a->strings["Contact"] = "Kontakt"; +$a->strings["Submit"] = "Senden"; +$a->strings["Profile Visibility"] = "Profil-Sichtbarkeit"; +$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle eines Deiner Profile das angezeigt werden soll, wenn %s Dein Profil aufruft."; +$a->strings["Contact Information / Notes"] = "Kontakt Informationen / Notizen"; +$a->strings["Edit contact notes"] = "Notizen zum Kontakt bearbeiten"; +$a->strings["Visit %s's profile [%s]"] = "Besuche %ss Profil [%s]"; +$a->strings["Block/Unblock contact"] = "Kontakt blockieren/freischalten"; +$a->strings["Ignore contact"] = "Ignoriere den Kontakt"; +$a->strings["Repair URL settings"] = "URL Einstellungen reparieren"; +$a->strings["View conversations"] = "Unterhaltungen anzeigen"; +$a->strings["Last update:"] = "Letzte Aktualisierung: "; +$a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren"; +$a->strings["Update now"] = "Jetzt aktualisieren"; +$a->strings["Unblock"] = "Entsperren"; +$a->strings["Block"] = "Sperren"; +$a->strings["Unignore"] = "Ignorieren aufheben"; +$a->strings["Ignore"] = "Ignorieren"; +$a->strings["Currently blocked"] = "Derzeit geblockt"; +$a->strings["Currently ignored"] = "Derzeit ignoriert"; +$a->strings["Currently archived"] = "Momentan archiviert"; +$a->strings["Hide this contact from others"] = "Verbirg diesen Kontakt vor Anderen"; +$a->strings["Replies/likes to your public posts may still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein"; +$a->strings["Notification for new posts"] = "Benachrichtigung bei neuen Beiträgen"; +$a->strings["Send a notification of every new post of this contact"] = "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt."; +$a->strings["Blacklisted keywords"] = "Blacklistete Schlüsselworte "; +$a->strings["Comma separated list of keywords that should not be converted to hashtags, when \"Fetch information and keywords\" is selected"] = "Komma-Separierte Liste mit Schlüsselworten, die nicht in Hashtags konvertiert werden, wenn \"Beziehe Information und Schlüsselworte\" aktiviert wurde"; +$a->strings["Profile URL"] = "Profil URL"; +$a->strings["Actions"] = "Aktionen"; +$a->strings["Contact Settings"] = "Kontakteinstellungen"; +$a->strings["Suggestions"] = "Kontaktvorschläge"; +$a->strings["Suggest potential friends"] = "Kontakte vorschlagen"; +$a->strings["All Contacts"] = "Alle Kontakte"; +$a->strings["Show all contacts"] = "Alle Kontakte anzeigen"; +$a->strings["Unblocked"] = "Ungeblockt"; +$a->strings["Only show unblocked contacts"] = "Nur nicht-blockierte Kontakte anzeigen"; +$a->strings["Blocked"] = "Geblockt"; +$a->strings["Only show blocked contacts"] = "Nur blockierte Kontakte anzeigen"; +$a->strings["Ignored"] = "Ignoriert"; +$a->strings["Only show ignored contacts"] = "Nur ignorierte Kontakte anzeigen"; +$a->strings["Archived"] = "Archiviert"; +$a->strings["Only show archived contacts"] = "Nur archivierte Kontakte anzeigen"; +$a->strings["Hidden"] = "Verborgen"; +$a->strings["Only show hidden contacts"] = "Nur verborgene Kontakte anzeigen"; +$a->strings["Search your contacts"] = "Suche in deinen Kontakten"; +$a->strings["Results for: %s"] = "Ergebnisse für: %s"; +$a->strings["Update"] = "Aktualisierungen"; +$a->strings["Archive"] = "Archivieren"; +$a->strings["Unarchive"] = "Aus Archiv zurückholen"; +$a->strings["Batch Actions"] = "Stapelverarbeitung"; +$a->strings["View all contacts"] = "Alle Kontakte anzeigen"; +$a->strings["View all common friends"] = "Alle Kontakte anzeigen"; +$a->strings["Advanced Contact Settings"] = "Fortgeschrittene Kontakteinstellungen"; +$a->strings["Mutual Friendship"] = "Beidseitige Freundschaft"; +$a->strings["is a fan of yours"] = "ist ein Fan von dir"; +$a->strings["you are a fan of"] = "Du bist Fan von"; +$a->strings["Edit contact"] = "Kontakt bearbeiten"; +$a->strings["Toggle Blocked status"] = "Geblockt-Status ein-/ausschalten"; +$a->strings["Toggle Ignored status"] = "Ignoriert-Status ein-/ausschalten"; +$a->strings["Toggle Archive status"] = "Archiviert-Status ein-/ausschalten"; +$a->strings["Delete contact"] = "Lösche den Kontakt"; $a->strings["No such group"] = "Es gibt keine solche Gruppe"; $a->strings["Group is empty"] = "Gruppe ist leer"; $a->strings["Group: %s"] = "Gruppe: %s"; @@ -770,7 +851,6 @@ $a->strings["Share this"] = "Weitersagen"; $a->strings["share"] = "Teilen"; $a->strings["This is you"] = "Das bist Du"; $a->strings["Comment"] = "Kommentar"; -$a->strings["Submit"] = "Senden"; $a->strings["Bold"] = "Fett"; $a->strings["Italic"] = "Kursiv"; $a->strings["Underline"] = "Unterstrichen"; @@ -829,45 +909,24 @@ $a->strings["Remove"] = "Entfernen"; $a->strings["Add"] = "Hinzufügen"; $a->strings["No entries."] = "Keine Einträge."; $a->strings["%1\$s welcomes %2\$s"] = "%1\$s heißt %2\$s herzlich willkommen"; +$a->strings["Public access denied."] = "Öffentlicher Zugriff verweigert."; $a->strings["Global Directory"] = "Weltweites Verzeichnis"; $a->strings["Find on this site"] = "Auf diesem Server suchen"; $a->strings["Results for:"] = "Ergebnisse für:"; $a->strings["Site Directory"] = "Verzeichnis"; $a->strings["No entries (some entries may be hidden)."] = "Keine Einträge (einige Einträge könnten versteckt sein)."; -$a->strings["People Search - %s"] = "Personensuche - %s"; -$a->strings["Forum Search - %s"] = "Forensuche - %s"; -$a->strings["No matches"] = "Keine Übereinstimmungen"; +$a->strings["Access to this profile has been restricted."] = "Der Zugriff zu diesem Profil wurde eingeschränkt."; +$a->strings["Item has been removed."] = "Eintrag wurde entfernt."; +$a->strings["Item not found"] = "Beitrag nicht gefunden"; +$a->strings["Edit post"] = "Beitrag bearbeiten"; +$a->strings["Files"] = "Dateien"; +$a->strings["Not Found"] = "Nicht gefunden"; $a->strings["- select -"] = "- auswählen -"; -$a->strings["Submit Request"] = "Anfrage abschicken"; -$a->strings["You already added this contact."] = "Du hast den Kontakt bereits hinzugefügt."; -$a->strings["Diaspora support isn't enabled. Contact can't be added."] = "Diaspora Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."; -$a->strings["OStatus support is disabled. Contact can't be added."] = "OStatus Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."; -$a->strings["The network type couldn't be detected. Contact can't be added."] = "Der Netzwerktype wurde nicht erkannt. Der Kontakt kann nicht hinzugefügt werden."; -$a->strings["Please answer the following:"] = "Bitte beantworte folgendes:"; -$a->strings["Does %s know you?"] = "Kennt %s Dich?"; -$a->strings["Add a personal note:"] = "Eine persönliche Notiz beifügen:"; -$a->strings["Your Identity Address:"] = "Adresse Deines Profils:"; -$a->strings["Profile URL"] = "Profil URL"; -$a->strings["Contact added"] = "Kontakt hinzugefügt"; $a->strings["Friend suggestion sent."] = "Kontaktvorschlag gesendet."; $a->strings["Suggest Friends"] = "Kontakte vorschlagen"; $a->strings["Suggest a friend for %s"] = "Schlage %s einen Kontakt vor"; -$a->strings["Group created."] = "Gruppe erstellt."; -$a->strings["Could not create group."] = "Konnte die Gruppe nicht erstellen."; -$a->strings["Group not found."] = "Gruppe nicht gefunden."; -$a->strings["Group name changed."] = "Gruppenname geändert."; -$a->strings["Permission denied"] = "Zugriff verweigert"; -$a->strings["Save Group"] = "Gruppe speichern"; -$a->strings["Create a group of contacts/friends."] = "Eine Kontaktgruppe anlegen."; -$a->strings["Group removed."] = "Gruppe entfernt."; -$a->strings["Unable to remove group."] = "Konnte die Gruppe nicht entfernen."; -$a->strings["Group Editor"] = "Gruppeneditor"; -$a->strings["Members"] = "Mitglieder"; -$a->strings["All Contacts"] = "Alle Kontakte"; -$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["No profile"] = "Kein Profil"; $a->strings["Help:"] = "Hilfe:"; -$a->strings["Not Found"] = "Nicht gefunden"; $a->strings["Page not found."] = "Seite nicht gefunden."; $a->strings["Welcome to %s"] = "Willkommen zu %s"; $a->strings["Total invitation limit exceeded."] = "Limit für Einladungen erreicht."; @@ -919,12 +978,10 @@ $a->strings["Enter your email address and submit to have your password reset. Th $a->strings["Nickname or Email: "] = "Spitzname oder E-Mail:"; $a->strings["Reset"] = "Zurücksetzen"; $a->strings["System down for maintenance"] = "System zur Wartung abgeschaltet"; -$a->strings["Manage Identities and/or Pages"] = "Verwalte Identitäten und/oder Seiten"; -$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Zwischen verschiedenen Identitäten oder Gemeinschafts-/Gruppenseiten wechseln, die Deine Kontoinformationen teilen oder zu denen Du „Verwalten“-Befugnisse bekommen hast."; -$a->strings["Select an identity to manage: "] = "Wähle eine Identität zum Verwalten aus: "; $a->strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter zum Abgleichen gefunden. Bitte füge einige Schlüsselwörter zu Deinem Standardprofil hinzu."; $a->strings["is interested in:"] = "ist interessiert an:"; $a->strings["Profile Match"] = "Profilübereinstimmungen"; +$a->strings["No matches"] = "Keine Übereinstimmungen"; $a->strings["Mood"] = "Stimmung"; $a->strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und erzähle sie Deinen Kontakten"; $a->strings["Welcome to Friendica"] = "Willkommen bei Friendica"; @@ -958,14 +1015,10 @@ $a->strings["Friendica respects your privacy. By default, your posts will only s $a->strings["Getting Help"] = "Hilfe bekommen"; $a->strings["Go to the Help Section"] = "Zum Hilfe Abschnitt gehen"; $a->strings["Our help pages may be consulted for detail on other program features and resources."] = "Unsere Hilfe Seiten können herangezogen werden, um weitere Einzelheiten zu andern Programm Features zu erhalten."; -$a->strings["Visit %s's profile [%s]"] = "Besuche %ss Profil [%s]"; -$a->strings["Edit contact"] = "Kontakt bearbeiten"; $a->strings["Contacts who are not members of a group"] = "Kontakte, die keiner Gruppe zugewiesen sind"; $a->strings["No more system notifications."] = "Keine weiteren Systembenachrichtigungen."; $a->strings["System Notifications"] = "Systembenachrichtigungen"; $a->strings["Post successful."] = "Beitrag erfolgreich veröffentlicht."; -$a->strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben."; -$a->strings["Account not found and OpenID registration is not permitted on this site."] = "Nutzerkonto wurde nicht gefunden und OpenID-Registrierung ist auf diesem Server nicht gestattet."; $a->strings["Subscribing to OStatus contacts"] = "OStatus Kontakten folgen"; $a->strings["No contact provided."] = "Keine Kontakte gefunden."; $a->strings["Couldn't fetch information for contact."] = "Konnte die Kontaktinformationen nicht einholen."; @@ -974,13 +1027,12 @@ $a->strings["Done"] = "Erledigt"; $a->strings["success"] = "Erfolg"; $a->strings["failed"] = "Fehlgeschlagen"; $a->strings["Keep this window open until done."] = "Lasse dieses Fenster offen, bis der Vorgang abgeschlossen ist."; +$a->strings["Not Extended"] = "Nicht erweitert."; $a->strings["Poke/Prod"] = "Anstupsen"; $a->strings["poke, prod or do other things to somebody"] = "Stupse Leute an oder mache anderes mit ihnen"; $a->strings["Recipient"] = "Empfänger"; $a->strings["Choose what you wish to do to recipient"] = "Was willst Du mit dem Empfänger machen:"; $a->strings["Make this post private"] = "Diesen Beitrag privat machen"; -$a->strings["Access to this profile has been restricted."] = "Der Zugriff zu diesem Profil wurde eingeschränkt."; -$a->strings["Tips for New Members"] = "Tipps für neue Nutzer"; $a->strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zuschneiden schlug fehl."; $a->strings["Image size reduction [%s] failed."] = "Verkleinern der Bildgröße von [%s] scheiterte."; $a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Drücke Umschalt+Neu Laden oder leere den Browser-Cache, falls das neue Foto nicht gleich angezeigt wird."; @@ -998,34 +1050,12 @@ $a->strings["Please adjust the image cropping for optimum viewing."] = "Passe bi $a->strings["Done Editing"] = "Bearbeitung abgeschlossen"; $a->strings["Image uploaded successfully."] = "Bild erfolgreich hochgeladen."; $a->strings["Image upload failed."] = "Hochladen des Bildes gescheitert."; +$a->strings["Permission denied"] = "Zugriff verweigert"; $a->strings["Invalid profile identifier."] = "Ungültiger Profil-Bezeichner."; $a->strings["Profile Visibility Editor"] = "Editor für die Profil-Sichtbarkeit"; +$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["Visible To"] = "Sichtbar für"; $a->strings["All Contacts (with secure profile access)"] = "Alle Kontakte (mit gesichertem Profilzugriff)"; -$a->strings["Registration successful. Please check your email for further instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."; -$a->strings["Failed to send email message. Here your accout details:
login: %s
password: %s

You can change your password after login."] = "Versenden der E-Mail fehlgeschlagen. Hier sind Deine Account Details:\n\nLogin: %s\nPasswort: %s\n\nDu kannst das Passwort nach dem Anmelden ändern."; -$a->strings["Registration successful."] = "Registrierung erfolgreich."; -$a->strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden."; -$a->strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."; -$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf dieser Seite wurde überschritten. Bitte versuche es morgen noch einmal."; -$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Du kannst dieses Formular auch (optional) mit Deiner OpenID ausfüllen, indem Du Deine OpenID angibst und 'Registrieren' klickst."; -$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Wenn Du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus."; -$a->strings["Your OpenID (optional): "] = "Deine OpenID (optional): "; -$a->strings["Include your profile in member directory?"] = "Soll Dein Profil im Nutzerverzeichnis angezeigt werden?"; -$a->strings["Note for the admin"] = "Hinweis für den Admin"; -$a->strings["Leave a message for the admin, why you want to join this node"] = "Hinterlasse eine Nachricht an den Admin, warum du einen Account auf dieser Instanz haben möchtest."; -$a->strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."; -$a->strings["Your invitation ID: "] = "ID Deiner Einladung: "; -$a->strings["Registration"] = "Registrierung"; -$a->strings["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "Dein vollständiger Name (z.B. Hans Mustermann, echt oder echt erscheinend):"; -$a->strings["Your Email Address: "] = "Deine E-Mail-Adresse: "; -$a->strings["New Password:"] = "Neues Passwort:"; -$a->strings["Leave empty for an auto generated password."] = "Leer lassen um das Passwort automatisch zu generieren."; -$a->strings["Confirm:"] = "Bestätigen:"; -$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be 'nickname@\$sitename'."] = "Wähle einen Spitznamen für Dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse Deines Profils auf dieser Seite wird 'spitzname@\$sitename' sein."; -$a->strings["Choose a nickname: "] = "Spitznamen wählen: "; -$a->strings["Import"] = "Import"; -$a->strings["Import your profile to this friendica instance"] = "Importiere Dein Profil auf diese Friendica Instanz"; $a->strings["Account approved."] = "Konto freigegeben."; $a->strings["Registration revoked for %s"] = "Registrierung für %s wurde zurückgezogen"; $a->strings["Please login."] = "Bitte melde Dich an."; @@ -1034,190 +1064,6 @@ $a->strings["This will completely remove your account. Once this has been done i $a->strings["Please enter your password for verification:"] = "Bitte gib Dein Passwort zur Verifikation ein:"; $a->strings["Resubscribing to OStatus contacts"] = "Erneuern der OStatus Abonements"; $a->strings["Error"] = "Fehler"; -$a->strings["everybody"] = "jeder"; -$a->strings["Account"] = "Nutzerkonto"; -$a->strings["Additional features"] = "Zusätzliche Features"; -$a->strings["Display"] = "Anzeige"; -$a->strings["Social Networks"] = "Soziale Netzwerke"; -$a->strings["Plugins"] = "Plugins"; -$a->strings["Connected apps"] = "Verbundene Programme"; -$a->strings["Export personal data"] = "Persönliche Daten exportieren"; -$a->strings["Remove account"] = "Konto löschen"; -$a->strings["Missing some important data!"] = "Wichtige Daten fehlen!"; -$a->strings["Update"] = "Aktualisierungen"; -$a->strings["Failed to connect with email account using the settings provided."] = "Verbindung zum E-Mail-Konto mit den angegebenen Einstellungen nicht möglich."; -$a->strings["Email settings updated."] = "E-Mail Einstellungen bearbeitet."; -$a->strings["Features updated"] = "Features aktualisiert"; -$a->strings["Relocate message has been send to your contacts"] = "Die Umzugsbenachrichtigung wurde an Deine Kontakte versendet."; -$a->strings["Empty passwords are not allowed. Password unchanged."] = "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert."; -$a->strings["Wrong password."] = "Falsches Passwort."; -$a->strings["Password changed."] = "Passwort geändert."; -$a->strings["Password update failed. Please try again."] = "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal."; -$a->strings[" Please use a shorter name."] = " Bitte verwende einen kürzeren Namen."; -$a->strings[" Name too short."] = " Name ist zu kurz."; -$a->strings["Wrong Password"] = "Falsches Passwort"; -$a->strings[" Not valid email."] = " Keine gültige E-Mail."; -$a->strings[" Cannot change to that email."] = "Ändern der E-Mail nicht möglich. "; -$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt."; -$a->strings["Private forum has no privacy permissions and no default privacy group."] = "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte."; -$a->strings["Settings updated."] = "Einstellungen aktualisiert."; -$a->strings["Add application"] = "Programm hinzufügen"; -$a->strings["Save Settings"] = "Einstellungen speichern"; -$a->strings["Consumer Key"] = "Consumer Key"; -$a->strings["Consumer Secret"] = "Consumer Secret"; -$a->strings["Redirect"] = "Umleiten"; -$a->strings["Icon url"] = "Icon URL"; -$a->strings["You can't edit this application."] = "Du kannst dieses Programm nicht bearbeiten."; -$a->strings["Connected Apps"] = "Verbundene Programme"; -$a->strings["Client key starts with"] = "Anwenderschlüssel beginnt mit"; -$a->strings["No name"] = "Kein Name"; -$a->strings["Remove authorization"] = "Autorisierung entziehen"; -$a->strings["No Plugin settings configured"] = "Keine Plugin-Einstellungen konfiguriert"; -$a->strings["Plugin Settings"] = "Plugin-Einstellungen"; -$a->strings["Off"] = "Aus"; -$a->strings["On"] = "An"; -$a->strings["Additional Features"] = "Zusätzliche Features"; -$a->strings["General Social Media Settings"] = "Allgemeine Einstellungen zu Sozialen Medien"; -$a->strings["Disable intelligent shortening"] = "Intelligentes Link kürzen ausschalten"; -$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "Normalerweise versucht das System den besten Link zu finden um ihn zu gekürzten Postings hinzu zu fügen. Wird diese Option ausgewählt wird stets ein Link auf die originale Friendica Nachricht beigefügt."; -$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen"; -$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "Wenn du eine Nachricht eines unbekannten OStatus Nutzers bekommst, entscheidet diese Option wie diese behandelt werden soll. Ist die Option aktiviert, wird ein neuer Kontakt für den Verfasser erstellt,."; -$a->strings["Default group for OStatus contacts"] = "Voreingestellte Gruppe für OStatus Kontakte"; -$a->strings["Your legacy GNU Social account"] = "Dein alter GNU Social Account"; -$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "Wenn du deinen alten GNU Socual/Statusnet Accountnamen hier angibst (Format name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden."; -$a->strings["Repair OStatus subscriptions"] = "OStatus Abonnements reparieren"; -$a->strings["Built-in support for %s connectivity is %s"] = "Eingebaute Unterstützung für Verbindungen zu %s ist %s"; -$a->strings["enabled"] = "eingeschaltet"; -$a->strings["disabled"] = "ausgeschaltet"; -$a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)"; -$a->strings["Email access is disabled on this site."] = "Zugriff auf E-Mails für diese Seite deaktiviert."; -$a->strings["Email/Mailbox Setup"] = "E-Mail/Postfach-Einstellungen"; -$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Wenn Du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für Dein Postfach an."; -$a->strings["Last successful email check:"] = "Letzter erfolgreicher E-Mail Check"; -$a->strings["IMAP server name:"] = "IMAP-Server-Name:"; -$a->strings["IMAP port:"] = "IMAP-Port:"; -$a->strings["Security:"] = "Sicherheit:"; -$a->strings["None"] = "Keine"; -$a->strings["Email login name:"] = "E-Mail-Login-Name:"; -$a->strings["Email password:"] = "E-Mail-Passwort:"; -$a->strings["Reply-to address:"] = "Reply-to Adresse:"; -$a->strings["Send public posts to all email contacts:"] = "Sende öffentliche Beiträge an alle E-Mail-Kontakte:"; -$a->strings["Action after import:"] = "Aktion nach Import:"; -$a->strings["Move to folder"] = "In einen Ordner verschieben"; -$a->strings["Move to folder:"] = "In diesen Ordner verschieben:"; -$a->strings["No special theme for mobile devices"] = "Kein spezielles Theme für mobile Geräte verwenden."; -$a->strings["Display Settings"] = "Anzeige-Einstellungen"; -$a->strings["Display Theme:"] = "Theme:"; -$a->strings["Mobile Theme:"] = "Mobiles Theme"; -$a->strings["Suppress warning of insecure networks"] = "Warnung wegen unsicheren Netzwerken unterdrücken"; -$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "Soll das System Warnungen unterdrücken, die angezeigt werden weil von dir eingerichtete Kontakt-Gruppen Accounts aus Netzwerken beinhalten, die keine nicht öffentlichen Beiträge empfangen können."; -$a->strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren"; -$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Minimum sind 10 Sekunden. Gib -1 ein um abzuschalten."; -$a->strings["Number of items to display per page:"] = "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: "; -$a->strings["Maximum of 100 items"] = "Maximal 100 Beiträge"; -$a->strings["Number of items to display per page when viewed from mobile device:"] = "Zahl der Beiträge, die pro Netzwerkseite auf mobilen Geräten angezeigt werden sollen:"; -$a->strings["Don't show emoticons"] = "Keine Smilies anzeigen"; -$a->strings["Calendar"] = "Kalender"; -$a->strings["Beginning of week:"] = "Wochenbeginn:"; -$a->strings["Don't show notices"] = "Info-Popups nicht anzeigen"; -$a->strings["Infinite scroll"] = "Endloses Scrollen"; -$a->strings["Automatic updates only at the top of the network page"] = "Automatische Updates nur, wenn Du oben auf der Netzwerkseite bist."; -$a->strings["Bandwith Saver Mode"] = "Bandbreiten-Spar-Modus"; -$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "Wenn aktiviert, wird der eingebettete Inhalt nicht automatisch aktualisiert. In diesem Fall Seite bitte neu laden."; -$a->strings["General Theme Settings"] = "Allgemeine Themeneinstellungen"; -$a->strings["Custom Theme Settings"] = "Benutzerdefinierte Theme Einstellungen"; -$a->strings["Content Settings"] = "Einstellungen zum Inhalt"; -$a->strings["Theme settings"] = "Themeneinstellungen"; -$a->strings["Account Types"] = "Kontenarten"; -$a->strings["Personal Page Subtypes"] = "Unterarten der persönlichen Seite"; -$a->strings["Community Forum Subtypes"] = "Unterarten des Gemeinschaftsforums"; -$a->strings["Personal Page"] = "Persönliche Seite"; -$a->strings["This account is a regular personal profile"] = "Dieses Konto ist ein normales persönliches Profil"; -$a->strings["Organisation Page"] = "Organisationsseite"; -$a->strings["This account is a profile for an organisation"] = "Diese Konto ist ein Profil für eine Organisation"; -$a->strings["News Page"] = "Nachrichtenseite"; -$a->strings["This account is a news account/reflector"] = "Dieses Konto ist ein News-Konto bzw. -Spiegel"; -$a->strings["Community Forum"] = "Gemeinschaftsforum"; -$a->strings["This account is a community forum where people can discuss with each other"] = "Dieses Konto ist ein Gemeinschaftskonto wo sich Leute untereinander austauschen können"; -$a->strings["Normal Account Page"] = "Normales Konto"; -$a->strings["This account is a normal personal profile"] = "Dieses Konto ist ein normales persönliches Profil"; -$a->strings["Soapbox Page"] = "Marktschreier-Konto"; -$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert"; -$a->strings["Public Forum"] = "Öffentliches Forum"; -$a->strings["Automatically approve all contact requests"] = "Bestätige alle Kontaktanfragen automatisch"; -$a->strings["Automatic Friend Page"] = "Automatische Freunde Seite"; -$a->strings["Automatically approve all connection/friend requests as friends"] = "Kontaktanfragen werden automatisch als Freund akzeptiert"; -$a->strings["Private Forum [Experimental]"] = "Privates Forum [Versuchsstadium]"; -$a->strings["Private forum - approved members only"] = "Privates Forum, nur für Mitglieder"; -$a->strings["OpenID:"] = "OpenID:"; -$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Optional) Erlaube die Anmeldung für dieses Konto mit dieser OpenID."; -$a->strings["Publish your default profile in your local site directory?"] = "Darf Dein Standardprofil im Verzeichnis dieses Servers veröffentlicht werden?"; -$a->strings["Publish your default profile in the global social directory?"] = "Darf Dein Standardprofil im weltweiten Verzeichnis veröffentlicht werden?"; -$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?"; -$a->strings["If enabled, posting public messages to Diaspora and other networks isn't possible."] = "Wenn aktiviert, ist das senden öffentliche Nachrichten zu Diaspora und anderen Netzwerken nicht möglich"; -$a->strings["Allow friends to post to your profile page?"] = "Dürfen Deine Kontakte auf Deine Pinnwand schreiben?"; -$a->strings["Allow friends to tag your posts?"] = "Dürfen Deine Kontakte Deine Beiträge mit Schlagwörtern versehen?"; -$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"; -$a->strings["Permit unknown people to send you private mail?"] = "Dürfen Dir Unbekannte private Nachrichten schicken?"; -$a->strings["Profile is not published."] = "Profil ist nicht veröffentlicht."; -$a->strings["Your Identity Address is '%s' or '%s'."] = "Die Adresse deines Profils lautet '%s' oder '%s'."; -$a->strings["Automatically expire posts after this many days:"] = "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:"; -$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht."; -$a->strings["Advanced expiration settings"] = "Erweiterte Verfallseinstellungen"; -$a->strings["Advanced Expiration"] = "Erweitertes Verfallen"; -$a->strings["Expire posts:"] = "Beiträge verfallen lassen:"; -$a->strings["Expire personal notes:"] = "Persönliche Notizen verfallen lassen:"; -$a->strings["Expire starred posts:"] = "Markierte Beiträge verfallen lassen:"; -$a->strings["Expire photos:"] = "Fotos verfallen lassen:"; -$a->strings["Only expire posts by others:"] = "Nur Beiträge anderer verfallen:"; -$a->strings["Account Settings"] = "Kontoeinstellungen"; -$a->strings["Password Settings"] = "Passwort-Einstellungen"; -$a->strings["Leave password fields blank unless changing"] = "Lass die Passwort-Felder leer, außer Du willst das Passwort ändern"; -$a->strings["Current Password:"] = "Aktuelles Passwort:"; -$a->strings["Your current password to confirm the changes"] = "Dein aktuelles Passwort um die Änderungen zu bestätigen"; -$a->strings["Password:"] = "Passwort:"; -$a->strings["Basic Settings"] = "Grundeinstellungen"; -$a->strings["Email Address:"] = "E-Mail-Adresse:"; -$a->strings["Your Timezone:"] = "Deine Zeitzone:"; -$a->strings["Your Language:"] = "Deine Sprache:"; -$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "Wähle die Sprache, in der wir Dir die Friendica-Oberfläche präsentieren sollen und Dir E-Mail schicken"; -$a->strings["Default Post Location:"] = "Standardstandort:"; -$a->strings["Use Browser Location:"] = "Standort des Browsers verwenden:"; -$a->strings["Security and Privacy Settings"] = "Sicherheits- und Privatsphäre-Einstellungen"; -$a->strings["Maximum Friend Requests/Day:"] = "Maximale Anzahl vonKontaktanfragen/Tag:"; -$a->strings["(to prevent spam abuse)"] = "(um SPAM zu vermeiden)"; -$a->strings["Default Post Permissions"] = "Standard-Zugriffsrechte für Beiträge"; -$a->strings["(click to open/close)"] = "(klicke zum öffnen/schließen)"; -$a->strings["Show to Groups"] = "Zeige den Gruppen"; -$a->strings["Show to Contacts"] = "Zeige den Kontakten"; -$a->strings["Default Private Post"] = "Privater Standardbeitrag"; -$a->strings["Default Public Post"] = "Öffentlicher Standardbeitrag"; -$a->strings["Default Permissions for New Posts"] = "Standardberechtigungen für neue Beiträge"; -$a->strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten von Unbekannten pro Tag:"; -$a->strings["Notification Settings"] = "Benachrichtigungseinstellungen"; -$a->strings["By default post a status message when:"] = "Standardmäßig eine Statusnachricht posten, wenn:"; -$a->strings["accepting a friend request"] = "– Du eine Kontaktanfrage akzeptierst"; -$a->strings["joining a forum/community"] = "– Du einem Forum/einer Gemeinschaftsseite beitrittst"; -$a->strings["making an interesting profile change"] = "– Du eine interessante Änderung an Deinem Profil durchführst"; -$a->strings["Send a notification email when:"] = "Benachrichtigungs-E-Mail senden wenn:"; -$a->strings["You receive an introduction"] = "– Du eine Kontaktanfrage erhältst"; -$a->strings["Your introductions are confirmed"] = "– eine Deiner Kontaktanfragen akzeptiert wurde"; -$a->strings["Someone writes on your profile wall"] = "– jemand etwas auf Deine Pinnwand schreibt"; -$a->strings["Someone writes a followup comment"] = "– jemand auch einen Kommentar verfasst"; -$a->strings["You receive a private message"] = "– Du eine private Nachricht erhältst"; -$a->strings["You receive a friend suggestion"] = "– Du eine Empfehlung erhältst"; -$a->strings["You are tagged in a post"] = "– Du in einem Beitrag erwähnt wirst"; -$a->strings["You are poked/prodded/etc. in a post"] = "– Du von jemandem angestupst oder sonstwie behandelt wirst"; -$a->strings["Activate desktop notifications"] = "Desktop Benachrichtigungen einschalten"; -$a->strings["Show desktop popup on new notifications"] = "Desktop Benachrichtigungen einschalten"; -$a->strings["Text-only notification emails"] = "Benachrichtigungs E-Mail als Rein-Text."; -$a->strings["Send text only notification emails, without the html part"] = "Sende Benachrichtigungs E-Mail als Rein-Text - ohne HTML-Teil"; -$a->strings["Advanced Account/Page Type Settings"] = "Erweiterte Konto-/Seitentyp-Einstellungen"; -$a->strings["Change the behaviour of this account for special situations"] = "Verhalten dieses Kontos in bestimmten Situationen:"; -$a->strings["Relocate"] = "Umziehen"; -$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "Wenn Du Dein Profil von einem anderen Server umgezogen hast und einige Deiner Kontakte Deine Beiträge nicht erhalten, verwende diesen Button."; -$a->strings["Resend relocate message to contacts"] = "Umzugsbenachrichtigung erneut an Kontakte senden"; -$a->strings["link"] = "Link"; $a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt %2\$s %3\$s"; $a->strings["Do you really want to delete this suggestion?"] = "Möchtest Du wirklich diese Empfehlung löschen?"; $a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Keine Vorschläge verfügbar. Falls der Server frisch aufgesetzt wurde, versuche es bitte in 24 Stunden noch einmal."; @@ -1225,30 +1071,45 @@ $a->strings["Ignore/Hide"] = "Ignorieren/Verbergen"; $a->strings["Tag removed"] = "Tag entfernt"; $a->strings["Remove Item Tag"] = "Gegenstands-Tag entfernen"; $a->strings["Select a tag to remove: "] = "Wähle ein Tag zum Entfernen aus: "; -$a->strings["Export account"] = "Account exportieren"; -$a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "Exportiere Deine Accountinformationen und Kontakte. Verwende dies um ein Backup Deines Accounts anzulegen und/oder damit auf einen anderen Server umzuziehen."; -$a->strings["Export all"] = "Alles exportieren"; -$a->strings["Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account (photos are not exported)"] = "Exportiere Deine Account Informationen, Kontakte und alle Einträge als JSON Datei. Dies könnte eine sehr große Datei werden und dementsprechend viel Zeit benötigen. Verwende dies um ein komplettes Backup Deines Accounts anzulegen (Fotos werden nicht exportiert)."; -$a->strings["Move account"] = "Account umziehen"; +$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf dieser Seite wurde überschritten. Bitte versuche es morgen noch einmal."; +$a->strings["Import"] = "Import"; +$a->strings["Move account"] = "Account umziehen"; $a->strings["You can import an account from another Friendica server."] = "Du kannst einen Account von einem anderen Friendica Server importieren."; $a->strings["You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here."] = "Du musst Deinen Account vom alten Server exportieren und hier hochladen. Wir stellen Deinen alten Account mit all Deinen Kontakten wieder her. Wir werden auch versuchen all Deine Kontakte darüber zu informieren, dass Du hierher umgezogen bist."; $a->strings["This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"] = "Dieses Feature ist experimentell. Wir können keine Kontakte vom OStatus Netzwerk (GNU Social/Statusnet) oder von Diaspora importieren"; $a->strings["Account file"] = "Account Datei"; $a->strings["To export your account, go to \"Settings->Export your personal data\" and select \"Export account\""] = "Um Deinen Account zu exportieren, rufe \"Einstellungen -> Persönliche Daten exportieren\" auf und wähle \"Account exportieren\""; $a->strings["[Embedded content - reload page to view]"] = "[Eingebetteter Inhalt - Seite neu laden zum Betrachten]"; -$a->strings["Do you really want to delete this video?"] = "Möchtest Du dieses Video wirklich löschen?"; -$a->strings["Delete Video"] = "Video Löschen"; -$a->strings["No videos selected"] = "Keine Videos ausgewählt"; -$a->strings["Access to this item is restricted."] = "Zugriff zu diesem Eintrag wurde eingeschränkt."; -$a->strings["View Album"] = "Album betrachten"; -$a->strings["Recent Videos"] = "Neueste Videos"; -$a->strings["Upload New Videos"] = "Neues Video hochladen"; +$a->strings["No contacts."] = "Keine Kontakte."; $a->strings["Access denied."] = "Zugriff verweigert."; $a->strings["Invalid request."] = "Ungültige Anfrage"; $a->strings["Sorry, maybe your upload is bigger than the PHP configuration allows"] = "Entschuldige, die Datei scheint größer zu sein als es die PHP Konfiguration erlaubt."; $a->strings["Or - did you try to upload an empty file?"] = "Oder - hast Du versucht, eine leere Datei hochzuladen?"; $a->strings["File exceeds size limit of %s"] = "Die Datei ist größer als das erlaubte Limit von %s"; $a->strings["File upload failed."] = "Hochladen der Datei fehlgeschlagen."; +$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "Maximale Anzahl der täglichen Pinnwand Nachrichten für %s ist überschritten. Zustellung fehlgeschlagen."; +$a->strings["No recipient selected."] = "Kein Empfänger gewählt."; +$a->strings["Unable to check your home location."] = "Konnte Deinen Heimatort nicht bestimmen."; +$a->strings["Message could not be sent."] = "Nachricht konnte nicht gesendet werden."; +$a->strings["Message collection failure."] = "Konnte Nachrichten nicht abrufen."; +$a->strings["Message sent."] = "Nachricht gesendet."; +$a->strings["No recipient."] = "Kein Empfänger."; +$a->strings["Send Private Message"] = "Private Nachricht senden"; +$a->strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "Wenn Du möchtest, dass %s Dir antworten kann, überprüfe Deine Privatsphären-Einstellungen und erlaube private Nachrichten von unbekannten Absendern."; +$a->strings["To:"] = "An:"; +$a->strings["Subject:"] = "Betreff:"; +$a->strings["Source (bbcode) text:"] = "Quelle (bbcode) Text:"; +$a->strings["Source (Diaspora) text to convert to BBcode:"] = "Eingabe (Diaspora) nach BBCode zu konvertierender Text:"; +$a->strings["Source input: "] = "Originaltext:"; +$a->strings["bb2html (raw HTML): "] = "bb2html (reines HTML): "; +$a->strings["bb2html: "] = "bb2html: "; +$a->strings["bb2html2bb: "] = "bb2html2bb: "; +$a->strings["bb2md: "] = "bb2md: "; +$a->strings["bb2md2html: "] = "bb2md2html: "; +$a->strings["bb2dia2bb: "] = "bb2dia2bb: "; +$a->strings["bb2md2html2bb: "] = "bb2md2html2bb: "; +$a->strings["Source input (Diaspora format): "] = "Originaltext (Diaspora Format): "; +$a->strings["diaspora2bb: "] = "diaspora2bb: "; $a->strings["View"] = "Ansehen"; $a->strings["Previous"] = "Vorherige"; $a->strings["Next"] = "Nächste"; @@ -1257,92 +1118,8 @@ $a->strings["User not found"] = "Nutzer nicht gefunden"; $a->strings["This calendar format is not supported"] = "Dieses Kalenderformat wird nicht unterstützt."; $a->strings["No exportable data found"] = "Keine exportierbaren Daten gefunden"; $a->strings["calendar"] = "Kalender"; -$a->strings["%d contact edited."] = array( - 0 => "%d Kontakt bearbeitet.", - 1 => "%d Kontakte bearbeitet.", -); -$a->strings["Could not access contact record."] = "Konnte nicht auf die Kontaktdaten zugreifen."; -$a->strings["Could not locate selected profile."] = "Konnte das ausgewählte Profil nicht finden."; -$a->strings["Contact updated."] = "Kontakt aktualisiert."; -$a->strings["Failed to update contact record."] = "Aktualisierung der Kontaktdaten fehlgeschlagen."; -$a->strings["Contact has been blocked"] = "Kontakt wurde blockiert"; -$a->strings["Contact has been unblocked"] = "Kontakt wurde wieder freigegeben"; -$a->strings["Contact has been ignored"] = "Kontakt wurde ignoriert"; -$a->strings["Contact has been unignored"] = "Kontakt wird nicht mehr ignoriert"; -$a->strings["Contact has been archived"] = "Kontakt wurde archiviert"; -$a->strings["Contact has been unarchived"] = "Kontakt wurde aus dem Archiv geholt"; -$a->strings["Drop contact"] = "Kontakt löschen"; -$a->strings["Do you really want to delete this contact?"] = "Möchtest Du wirklich diesen Kontakt löschen?"; -$a->strings["Contact has been removed."] = "Kontakt wurde entfernt."; -$a->strings["You are mutual friends with %s"] = "Du hast mit %s eine beidseitige Freundschaft"; -$a->strings["You are sharing with %s"] = "Du teilst mit %s"; -$a->strings["%s is sharing with you"] = "%s teilt mit Dir"; -$a->strings["Private communications are not available for this contact."] = "Private Kommunikation ist für diesen Kontakt nicht verfügbar."; -$a->strings["Never"] = "Niemals"; -$a->strings["(Update was successful)"] = "(Aktualisierung war erfolgreich)"; -$a->strings["(Update was not successful)"] = "(Aktualisierung war nicht erfolgreich)"; -$a->strings["Suggest friends"] = "Kontakte vorschlagen"; -$a->strings["Network type: %s"] = "Netzwerktyp: %s"; -$a->strings["Communications lost with this contact!"] = "Verbindungen mit diesem Kontakt verloren!"; -$a->strings["Fetch further information for feeds"] = "Weitere Informationen zu Feeds holen"; -$a->strings["Disabled"] = "Deaktiviert"; -$a->strings["Fetch information"] = "Beziehe Information"; -$a->strings["Fetch information and keywords"] = "Beziehe Information und Schlüsselworte"; -$a->strings["Contact"] = "Kontakt"; -$a->strings["Profile Visibility"] = "Profil-Sichtbarkeit"; -$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle eines Deiner Profile das angezeigt werden soll, wenn %s Dein Profil aufruft."; -$a->strings["Contact Information / Notes"] = "Kontakt Informationen / Notizen"; -$a->strings["Edit contact notes"] = "Notizen zum Kontakt bearbeiten"; -$a->strings["Block/Unblock contact"] = "Kontakt blockieren/freischalten"; -$a->strings["Ignore contact"] = "Ignoriere den Kontakt"; -$a->strings["Repair URL settings"] = "URL Einstellungen reparieren"; -$a->strings["View conversations"] = "Unterhaltungen anzeigen"; -$a->strings["Last update:"] = "Letzte Aktualisierung: "; -$a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren"; -$a->strings["Update now"] = "Jetzt aktualisieren"; -$a->strings["Unblock"] = "Entsperren"; -$a->strings["Block"] = "Sperren"; -$a->strings["Unignore"] = "Ignorieren aufheben"; -$a->strings["Ignore"] = "Ignorieren"; -$a->strings["Currently blocked"] = "Derzeit geblockt"; -$a->strings["Currently ignored"] = "Derzeit ignoriert"; -$a->strings["Currently archived"] = "Momentan archiviert"; -$a->strings["Hide this contact from others"] = "Verbirg diesen Kontakt vor Anderen"; -$a->strings["Replies/likes to your public posts may still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein"; -$a->strings["Notification for new posts"] = "Benachrichtigung bei neuen Beiträgen"; -$a->strings["Send a notification of every new post of this contact"] = "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt."; -$a->strings["Blacklisted keywords"] = "Blacklistete Schlüsselworte "; -$a->strings["Comma separated list of keywords that should not be converted to hashtags, when \"Fetch information and keywords\" is selected"] = "Komma-Separierte Liste mit Schlüsselworten, die nicht in Hashtags konvertiert werden, wenn \"Beziehe Information und Schlüsselworte\" aktiviert wurde"; -$a->strings["Actions"] = "Aktionen"; -$a->strings["Contact Settings"] = "Kontakteinstellungen"; -$a->strings["Suggestions"] = "Kontaktvorschläge"; -$a->strings["Suggest potential friends"] = "Kontakte vorschlagen"; -$a->strings["Show all contacts"] = "Alle Kontakte anzeigen"; -$a->strings["Unblocked"] = "Ungeblockt"; -$a->strings["Only show unblocked contacts"] = "Nur nicht-blockierte Kontakte anzeigen"; -$a->strings["Blocked"] = "Geblockt"; -$a->strings["Only show blocked contacts"] = "Nur blockierte Kontakte anzeigen"; -$a->strings["Ignored"] = "Ignoriert"; -$a->strings["Only show ignored contacts"] = "Nur ignorierte Kontakte anzeigen"; -$a->strings["Archived"] = "Archiviert"; -$a->strings["Only show archived contacts"] = "Nur archivierte Kontakte anzeigen"; -$a->strings["Hidden"] = "Verborgen"; -$a->strings["Only show hidden contacts"] = "Nur verborgene Kontakte anzeigen"; -$a->strings["Search your contacts"] = "Suche in deinen Kontakten"; -$a->strings["Results for: %s"] = "Ergebnisse für: %s"; -$a->strings["Archive"] = "Archivieren"; -$a->strings["Unarchive"] = "Aus Archiv zurückholen"; -$a->strings["Batch Actions"] = "Stapelverarbeitung"; -$a->strings["View all contacts"] = "Alle Kontakte anzeigen"; -$a->strings["View all common friends"] = "Alle Kontakte anzeigen"; -$a->strings["Advanced Contact Settings"] = "Fortgeschrittene Kontakteinstellungen"; -$a->strings["Mutual Friendship"] = "Beidseitige Freundschaft"; -$a->strings["is a fan of yours"] = "ist ein Fan von dir"; -$a->strings["you are a fan of"] = "Du bist Fan von"; -$a->strings["Toggle Blocked status"] = "Geblockt-Status ein-/ausschalten"; -$a->strings["Toggle Ignored status"] = "Ignoriert-Status ein-/ausschalten"; -$a->strings["Toggle Archive status"] = "Archiviert-Status ein-/ausschalten"; -$a->strings["Delete contact"] = "Lösche den Kontakt"; +$a->strings["Not available."] = "Nicht verfügbar."; +$a->strings["No results."] = "Keine Ergebnisse."; $a->strings["Profile not found."] = "Profil nicht gefunden."; $a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde."; $a->strings["Response from remote site was not understood."] = "Antwort der Gegenstelle unverständlich."; @@ -1361,8 +1138,47 @@ $a->strings["The ID provided by your system is a duplicate on our system. It sho $a->strings["Unable to set your contact credentials on our system."] = "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden."; $a->strings["Unable to update your contact profile details on our system"] = "Die Updates für Dein Profil konnten nicht gespeichert werden"; $a->strings["%1\$s has joined %2\$s"] = "%1\$s ist %2\$s beigetreten"; -$a->strings["Item not found"] = "Beitrag nicht gefunden"; -$a->strings["Edit post"] = "Beitrag bearbeiten"; +$a->strings["This introduction has already been accepted."] = "Diese Kontaktanfrage wurde bereits akzeptiert."; +$a->strings["Profile location is not valid or does not contain profile information."] = "Profiladresse ist ungültig oder stellt keine Profildaten zur Verfügung."; +$a->strings["Warning: profile location has no identifiable owner name."] = "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden."; +$a->strings["Warning: profile location has no profile photo."] = "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse."; +$a->strings["%d required parameter was not found at the given location"] = array( + 0 => "%d benötigter Parameter wurde an der angegebenen Stelle nicht gefunden", + 1 => "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden", +); +$a->strings["Introduction complete."] = "Kontaktanfrage abgeschlossen."; +$a->strings["Unrecoverable protocol error."] = "Nicht behebbarer Protokollfehler."; +$a->strings["Profile unavailable."] = "Profil nicht verfügbar."; +$a->strings["%s has received too many connection requests today."] = "%s hat heute zu viele Kontaktanfragen erhalten."; +$a->strings["Spam protection measures have been invoked."] = "Maßnahmen zum Spamschutz wurden ergriffen."; +$a->strings["Friends are advised to please try again in 24 hours."] = "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen."; +$a->strings["Invalid locator"] = "Ungültiger Locator"; +$a->strings["Invalid email address."] = "Ungültige E-Mail-Adresse."; +$a->strings["This account has not been configured for email. Request failed."] = "Dieses Konto ist nicht für E-Mail konfiguriert. Anfrage fehlgeschlagen."; +$a->strings["You have already introduced yourself here."] = "Du hast Dich hier bereits vorgestellt."; +$a->strings["Apparently you are already friends with %s."] = "Es scheint so, als ob Du bereits mit %s in Kontakt stehst."; +$a->strings["Invalid profile URL."] = "Ungültige Profil-URL."; +$a->strings["Your introduction has been sent."] = "Deine Kontaktanfrage wurde gesendet."; +$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "Entferntes abon­nie­ren kann für dein Netzwerk nicht durchgeführt werden. Bitte nutze direkt die Abonnieren-Funktion deines Systems. "; +$a->strings["Please login to confirm introduction."] = "Bitte melde Dich an, um die Kontaktanfrage zu bestätigen."; +$a->strings["Incorrect identity currently logged in. Please login to this profile."] = "Momentan bist Du mit einer anderen Identität angemeldet. Bitte melde Dich mit diesem Profil an."; +$a->strings["Confirm"] = "Bestätigen"; +$a->strings["Hide this contact"] = "Verberge diesen Kontakt"; +$a->strings["Welcome home %s."] = "Willkommen zurück %s."; +$a->strings["Please confirm your introduction/connection request to %s."] = "Bitte bestätige Deine Kontaktanfrage bei %s."; +$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Bitte gib die Adresse Deines Profils in einem der unterstützten sozialen Netzwerke an:"; +$a->strings["If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today."] = "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, folge diesem Link um einen öffentlichen Friendica-Server zu finden und beizutreten."; +$a->strings["Friend/Connection Request"] = "Kontaktanfrage"; +$a->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"; +$a->strings["Please answer the following:"] = "Bitte beantworte folgendes:"; +$a->strings["Does %s know you?"] = "Kennt %s Dich?"; +$a->strings["Add a personal note:"] = "Eine persönliche Notiz beifügen:"; +$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web"; +$a->strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = " - bitte verwende dieses Formular nicht. Stattdessen suche nach %s in Deiner Diaspora Suchleiste."; +$a->strings["Your Identity Address:"] = "Adresse Deines Profils:"; +$a->strings["Submit Request"] = "Anfrage abschicken"; +$a->strings["People Search - %s"] = "Personensuche - %s"; +$a->strings["Forum Search - %s"] = "Forensuche - %s"; $a->strings["Event can not end before it has started."] = "Die Veranstaltung kann nicht enden bevor sie beginnt."; $a->strings["Event title and start time are required."] = "Der Veranstaltungstitel und die Anfangszeit müssen angegeben werden."; $a->strings["Create New Event"] = "Neue Veranstaltung erstellen"; @@ -1376,7 +1192,13 @@ $a->strings["Adjust for viewer timezone"] = "An Zeitzone des Betrachters anpasse $a->strings["Description:"] = "Beschreibung"; $a->strings["Title:"] = "Titel:"; $a->strings["Share this event"] = "Veranstaltung teilen"; -$a->strings["Files"] = "Dateien"; +$a->strings["Failed to remove event"] = "Entfernen der Veranstaltung fehlgeschlagen"; +$a->strings["Event removed"] = "Veranstaltung enfternt"; +$a->strings["You already added this contact."] = "Du hast den Kontakt bereits hinzugefügt."; +$a->strings["Diaspora support isn't enabled. Contact can't be added."] = "Diaspora Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."; +$a->strings["OStatus support is disabled. Contact can't be added."] = "OStatus Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."; +$a->strings["The network type couldn't be detected. Contact can't be added."] = "Der Netzwerktype wurde nicht erkannt. Der Kontakt kann nicht hinzugefügt werden."; +$a->strings["Contact added"] = "Kontakt hinzugefügt"; $a->strings["This is Friendica, version"] = "Dies ist Friendica, Version"; $a->strings["running at web location"] = "die unter folgender Webadresse zu finden ist"; $a->strings["Please visit Friendica.com to learn more about the Friendica project."] = "Bitte besuche Friendica.com, um mehr über das Friendica Projekt zu erfahren."; @@ -1385,24 +1207,29 @@ $a->strings["the bugtracker at github"] = "den Bugtracker auf github"; $a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - dot com"] = "Vorschläge, Lob, Spenden usw.: E-Mail an \"Info\" at Friendica - dot com"; $a->strings["Installed plugins/addons/apps:"] = "Installierte Plugins/Erweiterungen/Apps:"; $a->strings["No installed plugins/addons/apps"] = "Keine Plugins/Erweiterungen/Apps installiert"; -$a->strings["Unable to locate original post."] = "Konnte den Originalbeitrag nicht finden."; -$a->strings["Empty post discarded."] = "Leerer Beitrag wurde verworfen."; -$a->strings["System error. Post not saved."] = "Systemfehler. Beitrag konnte nicht gespeichert werden."; -$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica."; -$a->strings["You may visit them online at %s"] = "Du kannst sie online unter %s besuchen"; -$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Falls Du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem Du auf diese Nachricht antwortest."; -$a->strings["%s posted an update."] = "%s hat ein Update veröffentlicht."; -$a->strings["No recipient selected."] = "Kein Empfänger gewählt."; +$a->strings["On this server the following remote servers are blocked."] = "Auf diesem Server werden die folgenden entfernten Server blockiert."; +$a->strings["Reason for the block"] = "Begründung für die Blockierung"; +$a->strings["Group created."] = "Gruppe erstellt."; +$a->strings["Could not create group."] = "Konnte die Gruppe nicht erstellen."; +$a->strings["Group not found."] = "Gruppe nicht gefunden."; +$a->strings["Group name changed."] = "Gruppenname geändert."; +$a->strings["Save Group"] = "Gruppe speichern"; +$a->strings["Create a group of contacts/friends."] = "Eine Kontaktgruppe anlegen."; +$a->strings["Group removed."] = "Gruppe entfernt."; +$a->strings["Unable to remove group."] = "Konnte die Gruppe nicht entfernen."; +$a->strings["Delete Group"] = "Gruppe löschen"; +$a->strings["Group Editor"] = "Gruppeneditor"; +$a->strings["Edit Group Name"] = "Gruppen Name bearbeiten"; +$a->strings["Members"] = "Mitglieder"; +$a->strings["Remove Contact"] = "Kontakt löschen"; +$a->strings["Add Contact"] = "Kontakt hinzufügen"; +$a->strings["Manage Identities and/or Pages"] = "Verwalte Identitäten und/oder Seiten"; +$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Zwischen verschiedenen Identitäten oder Gemeinschafts-/Gruppenseiten wechseln, die Deine Kontoinformationen teilen oder zu denen Du „Verwalten“-Befugnisse bekommen hast."; +$a->strings["Select an identity to manage: "] = "Wähle eine Identität zum Verwalten aus: "; $a->strings["Unable to locate contact information."] = "Konnte die Kontaktinformationen nicht finden."; -$a->strings["Message could not be sent."] = "Nachricht konnte nicht gesendet werden."; -$a->strings["Message collection failure."] = "Konnte Nachrichten nicht abrufen."; -$a->strings["Message sent."] = "Nachricht gesendet."; $a->strings["Do you really want to delete this message?"] = "Möchtest Du wirklich diese Nachricht löschen?"; $a->strings["Message deleted."] = "Nachricht gelöscht."; $a->strings["Conversation removed."] = "Unterhaltung gelöscht."; -$a->strings["Send Private Message"] = "Private Nachricht senden"; -$a->strings["To:"] = "An:"; -$a->strings["Subject:"] = "Betreff:"; $a->strings["No messages."] = "Keine Nachrichten."; $a->strings["Message not available."] = "Nachricht nicht verfügbar."; $a->strings["Delete message"] = "Nachricht löschen"; @@ -1417,16 +1244,30 @@ $a->strings["%d message"] = array( 0 => "%d Nachricht", 1 => "%d Nachrichten", ); -$a->strings["Not Extended"] = "Nicht erweitert."; -$a->strings["{0} wants to be your friend"] = "{0} möchte mit Dir in Kontakt treten"; -$a->strings["{0} sent you a message"] = "{0} schickte Dir eine Nachricht"; -$a->strings["{0} requested registration"] = "{0} möchte sich registrieren"; -$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "Maximale Anzahl der täglichen Pinnwand Nachrichten für %s ist überschritten. Zustellung fehlgeschlagen."; -$a->strings["Unable to check your home location."] = "Konnte Deinen Heimatort nicht bestimmen."; -$a->strings["No recipient."] = "Kein Empfänger."; -$a->strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "Wenn Du möchtest, dass %s Dir antworten kann, überprüfe Deine Privatsphären-Einstellungen und erlaube private Nachrichten von unbekannten Absendern."; +$a->strings["Remove term"] = "Begriff entfernen"; +$a->strings["Warning: This group contains %s member from a network that doesn't allow non public messages."] = array( + 0 => "Warnung: Diese Gruppe beinhaltet %s Person aus einem Netzwerk das keine nicht öffentlichen Beiträge empfangen kann.", + 1 => "Warnung: Diese Gruppe beinhaltet %s Personen aus Netzwerken die keine nicht-öffentlichen Beiträge empfangen können.", +); +$a->strings["Messages in this group won't be send to these receivers."] = "Beiträge in dieser Gruppe werden deshalb nicht an diese Personen zugestellt werden."; +$a->strings["Private messages to this person are at risk of public disclosure."] = "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen."; +$a->strings["Invalid contact."] = "Ungültiger Kontakt."; +$a->strings["Commented Order"] = "Neueste Kommentare"; +$a->strings["Sort by Comment Date"] = "Nach Kommentardatum sortieren"; +$a->strings["Posted Order"] = "Neueste Beiträge"; +$a->strings["Sort by Post Date"] = "Nach Beitragsdatum sortieren"; +$a->strings["Posts that mention or involve you"] = "Beiträge, in denen es um Dich geht"; +$a->strings["New"] = "Neue"; +$a->strings["Activity Stream - by date"] = "Aktivitäten-Stream - nach Datum"; +$a->strings["Shared Links"] = "Geteilte Links"; +$a->strings["Interesting Links"] = "Interessante Links"; +$a->strings["Starred"] = "Markierte"; +$a->strings["Favourite Posts"] = "Favorisierte Beiträge"; +$a->strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben."; +$a->strings["Account not found and OpenID registration is not permitted on this site."] = "Nutzerkonto wurde nicht gefunden und OpenID-Registrierung ist auf diesem Server nicht gestattet."; $a->strings["Recent Photos"] = "Neueste Fotos"; $a->strings["Upload New Photos"] = "Neue Fotos hochladen"; +$a->strings["everybody"] = "jeder"; $a->strings["Contact information unavailable"] = "Kontaktinformationen nicht verfügbar"; $a->strings["Album not found."] = "Album nicht gefunden."; $a->strings["Delete Album"] = "Album löschen"; @@ -1437,11 +1278,14 @@ $a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s wurde von %3\$s in %2 $a->strings["a photo"] = "einem Foto"; $a->strings["Image file is empty."] = "Bilddatei ist leer."; $a->strings["No photos selected"] = "Keine Bilder ausgewählt"; +$a->strings["Access to this item is restricted."] = "Zugriff zu diesem Eintrag wurde eingeschränkt."; $a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers."; $a->strings["Upload Photos"] = "Bilder hochladen"; $a->strings["New album name: "] = "Name des neuen Albums: "; $a->strings["or existing album name: "] = "oder existierender Albumname: "; $a->strings["Do not show a status post for this upload"] = "Keine Status-Mitteilung für diesen Beitrag anzeigen"; +$a->strings["Show to Groups"] = "Zeige den Gruppen"; +$a->strings["Show to Contacts"] = "Zeige den Kontakten"; $a->strings["Private Photo"] = "Privates Foto"; $a->strings["Public Photo"] = "Öffentliches Foto"; $a->strings["Edit Album"] = "Album bearbeiten"; @@ -1466,40 +1310,297 @@ $a->strings["Rotate CCW (left)"] = "Drehen EUS (links)"; $a->strings["Private photo"] = "Privates Foto"; $a->strings["Public photo"] = "Öffentliches Foto"; $a->strings["Map"] = "Karte"; -$a->strings["This introduction has already been accepted."] = "Diese Kontaktanfrage wurde bereits akzeptiert."; -$a->strings["Profile location is not valid or does not contain profile information."] = "Profiladresse ist ungültig oder stellt keine Profildaten zur Verfügung."; -$a->strings["Warning: profile location has no identifiable owner name."] = "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden."; -$a->strings["Warning: profile location has no profile photo."] = "Warnung: Es gibt kein Profilbild bei der angegebenen Profiladresse."; -$a->strings["%d required parameter was not found at the given location"] = array( - 0 => "%d benötigter Parameter wurde an der angegebenen Stelle nicht gefunden", - 1 => "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden", -); -$a->strings["Introduction complete."] = "Kontaktanfrage abgeschlossen."; -$a->strings["Unrecoverable protocol error."] = "Nicht behebbarer Protokollfehler."; -$a->strings["Profile unavailable."] = "Profil nicht verfügbar."; -$a->strings["%s has received too many connection requests today."] = "%s hat heute zu viele Kontaktanfragen erhalten."; -$a->strings["Spam protection measures have been invoked."] = "Maßnahmen zum Spamschutz wurden ergriffen."; -$a->strings["Friends are advised to please try again in 24 hours."] = "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen."; -$a->strings["Invalid locator"] = "Ungültiger Locator"; -$a->strings["Invalid email address."] = "Ungültige E-Mail-Adresse."; -$a->strings["This account has not been configured for email. Request failed."] = "Dieses Konto ist nicht für E-Mail konfiguriert. Anfrage fehlgeschlagen."; -$a->strings["You have already introduced yourself here."] = "Du hast Dich hier bereits vorgestellt."; -$a->strings["Apparently you are already friends with %s."] = "Es scheint so, als ob Du bereits mit %s in Kontakt stehst."; -$a->strings["Invalid profile URL."] = "Ungültige Profil-URL."; -$a->strings["Your introduction has been sent."] = "Deine Kontaktanfrage wurde gesendet."; -$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "Entferntes abon­nie­ren kann für dein Netzwerk nicht durchgeführt werden. Bitte nutze direkt die Abonnieren-Funktion deines Systems. "; -$a->strings["Please login to confirm introduction."] = "Bitte melde Dich an, um die Kontaktanfrage zu bestätigen."; -$a->strings["Incorrect identity currently logged in. Please login to this profile."] = "Momentan bist Du mit einer anderen Identität angemeldet. Bitte melde Dich mit diesem Profil an."; -$a->strings["Confirm"] = "Bestätigen"; -$a->strings["Hide this contact"] = "Verberge diesen Kontakt"; -$a->strings["Welcome home %s."] = "Willkommen zurück %s."; -$a->strings["Please confirm your introduction/connection request to %s."] = "Bitte bestätige Deine Kontaktanfrage bei %s."; -$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Bitte gib die Adresse Deines Profils in einem der unterstützten sozialen Netzwerke an:"; -$a->strings["If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today."] = "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, folge diesem Link um einen öffentlichen Friendica-Server zu finden und beizutreten."; -$a->strings["Friend/Connection Request"] = "Kontaktanfrage"; -$a->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"; -$a->strings["StatusNet/Federated Social Web"] = "StatusNet/Federated Social Web"; -$a->strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = " - bitte verwende dieses Formular nicht. Stattdessen suche nach %s in Deiner Diaspora Suchleiste."; +$a->strings["View Album"] = "Album betrachten"; +$a->strings["Only logged in users are permitted to perform a probing."] = "Nur eingeloggten Benutzern ist das Untersuchen von Adressen gestattet."; +$a->strings["Tips for New Members"] = "Tipps für neue Nutzer"; +$a->strings["Profile deleted."] = "Profil gelöscht."; +$a->strings["Profile-"] = "Profil-"; +$a->strings["New profile created."] = "Neues Profil angelegt."; +$a->strings["Profile unavailable to clone."] = "Profil nicht zum Duplizieren verfügbar."; +$a->strings["Profile Name is required."] = "Profilname ist erforderlich."; +$a->strings["Marital Status"] = "Familienstand"; +$a->strings["Romantic Partner"] = "Romanze"; +$a->strings["Work/Employment"] = "Arbeit / Beschäftigung"; +$a->strings["Religion"] = "Religion"; +$a->strings["Political Views"] = "Politische Ansichten"; +$a->strings["Gender"] = "Geschlecht"; +$a->strings["Sexual Preference"] = "Sexuelle Vorlieben"; +$a->strings["XMPP"] = "XMPP"; +$a->strings["Homepage"] = "Webseite"; +$a->strings["Interests"] = "Interessen"; +$a->strings["Address"] = "Adresse"; +$a->strings["Location"] = "Wohnort"; +$a->strings["Profile updated."] = "Profil aktualisiert."; +$a->strings[" and "] = " und "; +$a->strings["public profile"] = "öffentliches Profil"; +$a->strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s hat %2\$s geändert auf “%3\$s”"; +$a->strings[" - Visit %1\$s's %2\$s"] = " – %1\$ss %2\$s besuchen"; +$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat folgendes aktualisiert %2\$s, verändert wurde %3\$s."; +$a->strings["Hide contacts and friends:"] = "Kontakte und Freunde verbergen"; +$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Liste der Kontakte vor Betrachtern dieses Profils verbergen?"; +$a->strings["Show more profile fields:"] = "Zeige mehr Profil-Felder:"; +$a->strings["Profile Actions"] = "Profilaktionen"; +$a->strings["Edit Profile Details"] = "Profil bearbeiten"; +$a->strings["Change Profile Photo"] = "Profilbild ändern"; +$a->strings["View this profile"] = "Dieses Profil anzeigen"; +$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen verwenden"; +$a->strings["Clone this profile"] = "Dieses Profil duplizieren"; +$a->strings["Delete this profile"] = "Dieses Profil löschen"; +$a->strings["Basic information"] = "Grundinformationen"; +$a->strings["Profile picture"] = "Profilbild"; +$a->strings["Preferences"] = "Vorlieben"; +$a->strings["Status information"] = "Status Informationen"; +$a->strings["Additional information"] = "Zusätzliche Informationen"; +$a->strings["Relation"] = "Beziehung"; +$a->strings["Your Gender:"] = "Dein Geschlecht:"; +$a->strings[" Marital Status:"] = " Beziehungsstatus:"; +$a->strings["Example: fishing photography software"] = "Beispiel: Fischen Fotografie Software"; +$a->strings["Profile Name:"] = "Profilname:"; +$a->strings["This is your public profile.
It may be visible to anybody using the internet."] = "Dies ist Dein öffentliches Profil.
Es könnte für jeden Nutzer des Internets sichtbar sein."; +$a->strings["Your Full Name:"] = "Dein kompletter Name:"; +$a->strings["Title/Description:"] = "Titel/Beschreibung:"; +$a->strings["Street Address:"] = "Adresse:"; +$a->strings["Locality/City:"] = "Wohnort:"; +$a->strings["Region/State:"] = "Region/Bundesstaat:"; +$a->strings["Postal/Zip Code:"] = "Postleitzahl:"; +$a->strings["Country:"] = "Land:"; +$a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)"; +$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com"; +$a->strings["Since [date]:"] = "Seit [Datum]:"; +$a->strings["Tell us about yourself..."] = "Erzähle uns ein bisschen von Dir …"; +$a->strings["XMPP (Jabber) address:"] = "XMPP (Jabber) Adresse"; +$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "Die XMPP Adresse wird an deine Kontakte verteilt werden, so dass sie auch über XMPP mit dir in Kontakt treten können."; +$a->strings["Homepage URL:"] = "Adresse der Homepage:"; +$a->strings["Religious Views:"] = "Religiöse Ansichten:"; +$a->strings["Public Keywords:"] = "Öffentliche Schlüsselwörter:"; +$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Wird verwendet, um potentielle Kontakte zu finden, kann von Kontakten eingesehen werden)"; +$a->strings["Private Keywords:"] = "Private Schlüsselwörter:"; +$a->strings["(Used for searching profiles, never shown to others)"] = "(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)"; +$a->strings["Musical interests"] = "Musikalische Interessen"; +$a->strings["Books, literature"] = "Bücher, Literatur"; +$a->strings["Television"] = "Fernsehen"; +$a->strings["Film/dance/culture/entertainment"] = "Filme/Tänze/Kultur/Unterhaltung"; +$a->strings["Hobbies/Interests"] = "Hobbies/Interessen"; +$a->strings["Love/romance"] = "Liebe/Romantik"; +$a->strings["Work/employment"] = "Arbeit/Anstellung"; +$a->strings["School/education"] = "Schule/Ausbildung"; +$a->strings["Contact information and Social Networks"] = "Kontaktinformationen und Soziale Netzwerke"; +$a->strings["Edit/Manage Profiles"] = "Bearbeite/Verwalte Profile"; +$a->strings["Registration successful. Please check your email for further instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."; +$a->strings["Failed to send email message. Here your accout details:
login: %s
password: %s

You can change your password after login."] = "Versenden der E-Mail fehlgeschlagen. Hier sind Deine Account Details:\n\nLogin: %s\nPasswort: %s\n\nDu kannst das Passwort nach dem Anmelden ändern."; +$a->strings["Registration successful."] = "Registrierung erfolgreich."; +$a->strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden."; +$a->strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."; +$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Du kannst dieses Formular auch (optional) mit Deiner OpenID ausfüllen, indem Du Deine OpenID angibst und 'Registrieren' klickst."; +$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Wenn Du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus."; +$a->strings["Your OpenID (optional): "] = "Deine OpenID (optional): "; +$a->strings["Include your profile in member directory?"] = "Soll Dein Profil im Nutzerverzeichnis angezeigt werden?"; +$a->strings["Note for the admin"] = "Hinweis für den Admin"; +$a->strings["Leave a message for the admin, why you want to join this node"] = "Hinterlasse eine Nachricht an den Admin, warum du einen Account auf dieser Instanz haben möchtest."; +$a->strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."; +$a->strings["Your invitation ID: "] = "ID Deiner Einladung: "; +$a->strings["Registration"] = "Registrierung"; +$a->strings["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "Dein vollständiger Name (z.B. Hans Mustermann, echt oder echt erscheinend):"; +$a->strings["Your Email Address: "] = "Deine E-Mail-Adresse: "; +$a->strings["New Password:"] = "Neues Passwort:"; +$a->strings["Leave empty for an auto generated password."] = "Leer lassen um das Passwort automatisch zu generieren."; +$a->strings["Confirm:"] = "Bestätigen:"; +$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be 'nickname@\$sitename'."] = "Wähle einen Spitznamen für Dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse Deines Profils auf dieser Seite wird 'spitzname@\$sitename' sein."; +$a->strings["Choose a nickname: "] = "Spitznamen wählen: "; +$a->strings["Import your profile to this friendica instance"] = "Importiere Dein Profil auf diese Friendica Instanz"; +$a->strings["Only logged in users are permitted to perform a search."] = "Nur eingeloggten Benutzern ist das Suchen gestattet."; +$a->strings["Too Many Requests"] = "Zu viele Abfragen"; +$a->strings["Only one search per minute is permitted for not logged in users."] = "Es ist nur eine Suchanfrage pro Minute für nicht eingeloggte Benutzer gestattet."; +$a->strings["Items tagged with: %s"] = "Beiträge die mit %s getaggt sind"; +$a->strings["Account"] = "Nutzerkonto"; +$a->strings["Additional features"] = "Zusätzliche Features"; +$a->strings["Display"] = "Anzeige"; +$a->strings["Social Networks"] = "Soziale Netzwerke"; +$a->strings["Plugins"] = "Plugins"; +$a->strings["Connected apps"] = "Verbundene Programme"; +$a->strings["Export personal data"] = "Persönliche Daten exportieren"; +$a->strings["Remove account"] = "Konto löschen"; +$a->strings["Missing some important data!"] = "Wichtige Daten fehlen!"; +$a->strings["Failed to connect with email account using the settings provided."] = "Verbindung zum E-Mail-Konto mit den angegebenen Einstellungen nicht möglich."; +$a->strings["Email settings updated."] = "E-Mail Einstellungen bearbeitet."; +$a->strings["Features updated"] = "Features aktualisiert"; +$a->strings["Relocate message has been send to your contacts"] = "Die Umzugsbenachrichtigung wurde an Deine Kontakte versendet."; +$a->strings["Empty passwords are not allowed. Password unchanged."] = "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert."; +$a->strings["Wrong password."] = "Falsches Passwort."; +$a->strings["Password changed."] = "Passwort geändert."; +$a->strings["Password update failed. Please try again."] = "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal."; +$a->strings[" Please use a shorter name."] = " Bitte verwende einen kürzeren Namen."; +$a->strings[" Name too short."] = " Name ist zu kurz."; +$a->strings["Wrong Password"] = "Falsches Passwort"; +$a->strings[" Not valid email."] = " Keine gültige E-Mail."; +$a->strings[" Cannot change to that email."] = "Ändern der E-Mail nicht möglich. "; +$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt."; +$a->strings["Private forum has no privacy permissions and no default privacy group."] = "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte."; +$a->strings["Settings updated."] = "Einstellungen aktualisiert."; +$a->strings["Add application"] = "Programm hinzufügen"; +$a->strings["Save Settings"] = "Einstellungen speichern"; +$a->strings["Consumer Key"] = "Consumer Key"; +$a->strings["Consumer Secret"] = "Consumer Secret"; +$a->strings["Redirect"] = "Umleiten"; +$a->strings["Icon url"] = "Icon URL"; +$a->strings["You can't edit this application."] = "Du kannst dieses Programm nicht bearbeiten."; +$a->strings["Connected Apps"] = "Verbundene Programme"; +$a->strings["Client key starts with"] = "Anwenderschlüssel beginnt mit"; +$a->strings["No name"] = "Kein Name"; +$a->strings["Remove authorization"] = "Autorisierung entziehen"; +$a->strings["No Plugin settings configured"] = "Keine Plugin-Einstellungen konfiguriert"; +$a->strings["Plugin Settings"] = "Plugin-Einstellungen"; +$a->strings["Off"] = "Aus"; +$a->strings["On"] = "An"; +$a->strings["Additional Features"] = "Zusätzliche Features"; +$a->strings["General Social Media Settings"] = "Allgemeine Einstellungen zu Sozialen Medien"; +$a->strings["Disable intelligent shortening"] = "Intelligentes Link kürzen ausschalten"; +$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "Normalerweise versucht das System den besten Link zu finden um ihn zu gekürzten Postings hinzu zu fügen. Wird diese Option ausgewählt wird stets ein Link auf die originale Friendica Nachricht beigefügt."; +$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automatisch allen GNU Social (OStatus) Followern/Erwähnern folgen"; +$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "Wenn du eine Nachricht eines unbekannten OStatus Nutzers bekommst, entscheidet diese Option wie diese behandelt werden soll. Ist die Option aktiviert, wird ein neuer Kontakt für den Verfasser erstellt,."; +$a->strings["Default group for OStatus contacts"] = "Voreingestellte Gruppe für OStatus Kontakte"; +$a->strings["Your legacy GNU Social account"] = "Dein alter GNU Social Account"; +$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "Wenn du deinen alten GNU Socual/Statusnet Accountnamen hier angibst (Format name@domain.tld) werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden."; +$a->strings["Repair OStatus subscriptions"] = "OStatus Abonnements reparieren"; +$a->strings["Built-in support for %s connectivity is %s"] = "Eingebaute Unterstützung für Verbindungen zu %s ist %s"; +$a->strings["enabled"] = "eingeschaltet"; +$a->strings["disabled"] = "ausgeschaltet"; +$a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)"; +$a->strings["Email access is disabled on this site."] = "Zugriff auf E-Mails für diese Seite deaktiviert."; +$a->strings["Email/Mailbox Setup"] = "E-Mail/Postfach-Einstellungen"; +$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Wenn Du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für Dein Postfach an."; +$a->strings["Last successful email check:"] = "Letzter erfolgreicher E-Mail Check"; +$a->strings["IMAP server name:"] = "IMAP-Server-Name:"; +$a->strings["IMAP port:"] = "IMAP-Port:"; +$a->strings["Security:"] = "Sicherheit:"; +$a->strings["None"] = "Keine"; +$a->strings["Email login name:"] = "E-Mail-Login-Name:"; +$a->strings["Email password:"] = "E-Mail-Passwort:"; +$a->strings["Reply-to address:"] = "Reply-to Adresse:"; +$a->strings["Send public posts to all email contacts:"] = "Sende öffentliche Beiträge an alle E-Mail-Kontakte:"; +$a->strings["Action after import:"] = "Aktion nach Import:"; +$a->strings["Move to folder"] = "In einen Ordner verschieben"; +$a->strings["Move to folder:"] = "In diesen Ordner verschieben:"; +$a->strings["No special theme for mobile devices"] = "Kein spezielles Theme für mobile Geräte verwenden."; +$a->strings["Display Settings"] = "Anzeige-Einstellungen"; +$a->strings["Display Theme:"] = "Theme:"; +$a->strings["Mobile Theme:"] = "Mobiles Theme"; +$a->strings["Suppress warning of insecure networks"] = "Warnung wegen unsicheren Netzwerken unterdrücken"; +$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "Soll das System Warnungen unterdrücken, die angezeigt werden weil von dir eingerichtete Kontakt-Gruppen Accounts aus Netzwerken beinhalten, die keine nicht öffentlichen Beiträge empfangen können."; +$a->strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren"; +$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Minimum sind 10 Sekunden. Gib -1 ein um abzuschalten."; +$a->strings["Number of items to display per page:"] = "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: "; +$a->strings["Maximum of 100 items"] = "Maximal 100 Beiträge"; +$a->strings["Number of items to display per page when viewed from mobile device:"] = "Zahl der Beiträge, die pro Netzwerkseite auf mobilen Geräten angezeigt werden sollen:"; +$a->strings["Don't show emoticons"] = "Keine Smilies anzeigen"; +$a->strings["Calendar"] = "Kalender"; +$a->strings["Beginning of week:"] = "Wochenbeginn:"; +$a->strings["Don't show notices"] = "Info-Popups nicht anzeigen"; +$a->strings["Infinite scroll"] = "Endloses Scrollen"; +$a->strings["Automatic updates only at the top of the network page"] = "Automatische Updates nur, wenn Du oben auf der Netzwerkseite bist."; +$a->strings["Bandwith Saver Mode"] = "Bandbreiten-Spar-Modus"; +$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "Wenn aktiviert, wird der eingebettete Inhalt nicht automatisch aktualisiert. In diesem Fall Seite bitte neu laden."; +$a->strings["General Theme Settings"] = "Allgemeine Themeneinstellungen"; +$a->strings["Custom Theme Settings"] = "Benutzerdefinierte Theme Einstellungen"; +$a->strings["Content Settings"] = "Einstellungen zum Inhalt"; +$a->strings["Theme settings"] = "Themeneinstellungen"; +$a->strings["Account Types"] = "Kontenarten"; +$a->strings["Personal Page Subtypes"] = "Unterarten der persönlichen Seite"; +$a->strings["Community Forum Subtypes"] = "Unterarten des Gemeinschaftsforums"; +$a->strings["Personal Page"] = "Persönliche Seite"; +$a->strings["This account is a regular personal profile"] = "Dieses Konto ist ein normales persönliches Profil"; +$a->strings["Organisation Page"] = "Organisationsseite"; +$a->strings["This account is a profile for an organisation"] = "Diese Konto ist ein Profil für eine Organisation"; +$a->strings["News Page"] = "Nachrichtenseite"; +$a->strings["This account is a news account/reflector"] = "Dieses Konto ist ein News-Konto bzw. -Spiegel"; +$a->strings["Community Forum"] = "Gemeinschaftsforum"; +$a->strings["This account is a community forum where people can discuss with each other"] = "Dieses Konto ist ein Gemeinschaftskonto wo sich Leute untereinander austauschen können"; +$a->strings["Normal Account Page"] = "Normales Konto"; +$a->strings["This account is a normal personal profile"] = "Dieses Konto ist ein normales persönliches Profil"; +$a->strings["Soapbox Page"] = "Marktschreier-Konto"; +$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert"; +$a->strings["Public Forum"] = "Öffentliches Forum"; +$a->strings["Automatically approve all contact requests"] = "Bestätige alle Kontaktanfragen automatisch"; +$a->strings["Automatic Friend Page"] = "Automatische Freunde Seite"; +$a->strings["Automatically approve all connection/friend requests as friends"] = "Kontaktanfragen werden automatisch als Freund akzeptiert"; +$a->strings["Private Forum [Experimental]"] = "Privates Forum [Versuchsstadium]"; +$a->strings["Private forum - approved members only"] = "Privates Forum, nur für Mitglieder"; +$a->strings["OpenID:"] = "OpenID:"; +$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Optional) Erlaube die Anmeldung für dieses Konto mit dieser OpenID."; +$a->strings["Publish your default profile in your local site directory?"] = "Darf Dein Standardprofil im Verzeichnis dieses Servers veröffentlicht werden?"; +$a->strings["Your profile may be visible in public."] = "Dein Profil könnte öffentlich abrufbar sein."; +$a->strings["Publish your default profile in the global social directory?"] = "Darf Dein Standardprofil im weltweiten Verzeichnis veröffentlicht werden?"; +$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?"; +$a->strings["If enabled, posting public messages to Diaspora and other networks isn't possible."] = "Wenn aktiviert, ist das senden öffentliche Nachrichten zu Diaspora und anderen Netzwerken nicht möglich"; +$a->strings["Allow friends to post to your profile page?"] = "Dürfen Deine Kontakte auf Deine Pinnwand schreiben?"; +$a->strings["Allow friends to tag your posts?"] = "Dürfen Deine Kontakte Deine Beiträge mit Schlagwörtern versehen?"; +$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"; +$a->strings["Permit unknown people to send you private mail?"] = "Dürfen Dir Unbekannte private Nachrichten schicken?"; +$a->strings["Profile is not published."] = "Profil ist nicht veröffentlicht."; +$a->strings["Your Identity Address is '%s' or '%s'."] = "Die Adresse deines Profils lautet '%s' oder '%s'."; +$a->strings["Automatically expire posts after this many days:"] = "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:"; +$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht."; +$a->strings["Advanced expiration settings"] = "Erweiterte Verfallseinstellungen"; +$a->strings["Advanced Expiration"] = "Erweitertes Verfallen"; +$a->strings["Expire posts:"] = "Beiträge verfallen lassen:"; +$a->strings["Expire personal notes:"] = "Persönliche Notizen verfallen lassen:"; +$a->strings["Expire starred posts:"] = "Markierte Beiträge verfallen lassen:"; +$a->strings["Expire photos:"] = "Fotos verfallen lassen:"; +$a->strings["Only expire posts by others:"] = "Nur Beiträge anderer verfallen:"; +$a->strings["Account Settings"] = "Kontoeinstellungen"; +$a->strings["Password Settings"] = "Passwort-Einstellungen"; +$a->strings["Leave password fields blank unless changing"] = "Lass die Passwort-Felder leer, außer Du willst das Passwort ändern"; +$a->strings["Current Password:"] = "Aktuelles Passwort:"; +$a->strings["Your current password to confirm the changes"] = "Dein aktuelles Passwort um die Änderungen zu bestätigen"; +$a->strings["Password:"] = "Passwort:"; +$a->strings["Basic Settings"] = "Grundeinstellungen"; +$a->strings["Email Address:"] = "E-Mail-Adresse:"; +$a->strings["Your Timezone:"] = "Deine Zeitzone:"; +$a->strings["Your Language:"] = "Deine Sprache:"; +$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "Wähle die Sprache, in der wir Dir die Friendica-Oberfläche präsentieren sollen und Dir E-Mail schicken"; +$a->strings["Default Post Location:"] = "Standardstandort:"; +$a->strings["Use Browser Location:"] = "Standort des Browsers verwenden:"; +$a->strings["Security and Privacy Settings"] = "Sicherheits- und Privatsphäre-Einstellungen"; +$a->strings["Maximum Friend Requests/Day:"] = "Maximale Anzahl vonKontaktanfragen/Tag:"; +$a->strings["(to prevent spam abuse)"] = "(um SPAM zu vermeiden)"; +$a->strings["Default Post Permissions"] = "Standard-Zugriffsrechte für Beiträge"; +$a->strings["(click to open/close)"] = "(klicke zum öffnen/schließen)"; +$a->strings["Default Private Post"] = "Privater Standardbeitrag"; +$a->strings["Default Public Post"] = "Öffentlicher Standardbeitrag"; +$a->strings["Default Permissions for New Posts"] = "Standardberechtigungen für neue Beiträge"; +$a->strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten von Unbekannten pro Tag:"; +$a->strings["Notification Settings"] = "Benachrichtigungseinstellungen"; +$a->strings["By default post a status message when:"] = "Standardmäßig eine Statusnachricht posten, wenn:"; +$a->strings["accepting a friend request"] = "– Du eine Kontaktanfrage akzeptierst"; +$a->strings["joining a forum/community"] = "– Du einem Forum/einer Gemeinschaftsseite beitrittst"; +$a->strings["making an interesting profile change"] = "– Du eine interessante Änderung an Deinem Profil durchführst"; +$a->strings["Send a notification email when:"] = "Benachrichtigungs-E-Mail senden wenn:"; +$a->strings["You receive an introduction"] = "– Du eine Kontaktanfrage erhältst"; +$a->strings["Your introductions are confirmed"] = "– eine Deiner Kontaktanfragen akzeptiert wurde"; +$a->strings["Someone writes on your profile wall"] = "– jemand etwas auf Deine Pinnwand schreibt"; +$a->strings["Someone writes a followup comment"] = "– jemand auch einen Kommentar verfasst"; +$a->strings["You receive a private message"] = "– Du eine private Nachricht erhältst"; +$a->strings["You receive a friend suggestion"] = "– Du eine Empfehlung erhältst"; +$a->strings["You are tagged in a post"] = "– Du in einem Beitrag erwähnt wirst"; +$a->strings["You are poked/prodded/etc. in a post"] = "– Du von jemandem angestupst oder sonstwie behandelt wirst"; +$a->strings["Activate desktop notifications"] = "Desktop Benachrichtigungen einschalten"; +$a->strings["Show desktop popup on new notifications"] = "Desktop Benachrichtigungen einschalten"; +$a->strings["Text-only notification emails"] = "Benachrichtigungs E-Mail als Rein-Text."; +$a->strings["Send text only notification emails, without the html part"] = "Sende Benachrichtigungs E-Mail als Rein-Text - ohne HTML-Teil"; +$a->strings["Advanced Account/Page Type Settings"] = "Erweiterte Konto-/Seitentyp-Einstellungen"; +$a->strings["Change the behaviour of this account for special situations"] = "Verhalten dieses Kontos in bestimmten Situationen:"; +$a->strings["Relocate"] = "Umziehen"; +$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "Wenn Du Dein Profil von einem anderen Server umgezogen hast und einige Deiner Kontakte Deine Beiträge nicht erhalten, verwende diesen Button."; +$a->strings["Resend relocate message to contacts"] = "Umzugsbenachrichtigung erneut an Kontakte senden"; +$a->strings["Export account"] = "Account exportieren"; +$a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "Exportiere Deine Accountinformationen und Kontakte. Verwende dies um ein Backup Deines Accounts anzulegen und/oder damit auf einen anderen Server umzuziehen."; +$a->strings["Export all"] = "Alles exportieren"; +$a->strings["Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account (photos are not exported)"] = "Exportiere Deine Account Informationen, Kontakte und alle Einträge als JSON Datei. Dies könnte eine sehr große Datei werden und dementsprechend viel Zeit benötigen. Verwende dies um ein komplettes Backup Deines Accounts anzulegen (Fotos werden nicht exportiert)."; +$a->strings["Do you really want to delete this video?"] = "Möchtest Du dieses Video wirklich löschen?"; +$a->strings["Delete Video"] = "Video Löschen"; +$a->strings["No videos selected"] = "Keine Videos ausgewählt"; +$a->strings["Recent Videos"] = "Neueste Videos"; +$a->strings["Upload New Videos"] = "Neues Video hochladen"; $a->strings["Friendica Communications Server - Setup"] = "Friendica-Server für soziale Netzwerke – Setup"; $a->strings["Could not connect to database."] = "Verbindung zur Datenbank gescheitert."; $a->strings["Could not create table."] = "Tabelle konnte nicht angelegt werden."; @@ -1525,7 +1626,7 @@ $a->strings["Site settings"] = "Server-Einstellungen"; $a->strings["System Language:"] = "Systemsprache:"; $a->strings["Set the default language for your Friendica installation interface and to send emails."] = "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand"; $a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden."; -$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron. See 'Setup the poller'"] = "Wenn Du keine Kommandozeilen-Version von PHP auf Deinem Server installiert hast, kannst Du keine Hintergrundprozesse via cron starten. Siehe 'Setup the poller'"; +$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run the background processing. See 'Setup the poller'"] = "Wenn auf deinem Server keine Kommandozeilenversion von PHP installiert ist, kannst du den Hintergrundprozess nicht einrichten. Hier findest du alternative Möglichkeiten'für das Poller Setup'"; $a->strings["PHP executable path"] = "Pfad zu PHP"; $a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren."; $a->strings["Command line PHP"] = "Kommandozeilen-PHP"; @@ -1541,9 +1642,8 @@ $a->strings["Generate encryption keys"] = "Schlüssel erzeugen"; $a->strings["libCurl PHP module"] = "PHP: libCurl-Modul"; $a->strings["GD graphics PHP module"] = "PHP: GD-Grafikmodul"; $a->strings["OpenSSL PHP module"] = "PHP: OpenSSL-Modul"; -$a->strings["mysqli PHP module"] = "PHP: mysqli-Modul"; +$a->strings["PDO or MySQLi PHP module"] = "PDO oder MySQLi PHP Modul"; $a->strings["mb_string PHP module"] = "PHP: mb_string-Modul"; -$a->strings["mcrypt PHP module"] = "PHP mcrypt Modul"; $a->strings["XML PHP module"] = "XML PHP Modul"; $a->strings["iconv module"] = "iconv module"; $a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite module"; @@ -1551,13 +1651,10 @@ $a->strings["Error: Apache webserver mod-rewrite module is required but not inst $a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert."; $a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert."; $a->strings["Error: openssl PHP module required but not installed."] = "Fehler: Das openssl-Modul von PHP ist nicht installiert."; -$a->strings["Error: mysqli PHP module required but not installed."] = "Fehler: Das mysqli-Modul von PHP ist nicht installiert."; +$a->strings["Error: PDO or MySQLi PHP module required but not installed."] = "Fehler: PDO oder MySQLi PHP Modul erforderlich, aber nicht installiert."; +$a->strings["Error: The MySQL driver for PDO is not installed."] = "Fehler: der MySQL Treiber für PDO ist nicht installiert"; $a->strings["Error: mb_string PHP module required but not installed."] = "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert."; -$a->strings["Error: mcrypt PHP module required but not installed."] = "Fehler: Das mcrypt Modul von PHP ist nicht installiert"; $a->strings["Error: iconv PHP module required but not installed."] = "Fehler: Das iconv-Modul von PHP ist nicht installiert."; -$a->strings["If you are using php_cli, please make sure that mcrypt module is enabled in its config file"] = "Wenn du das Modul \"php_cli\" benutzt dann versichere dich, daß das mcrypt Modul in seiner Konfigurationsdatei aktiviert ist. "; -$a->strings["Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 encryption layer."] = "Die Funktion mcrypt_create_iv() ist nicht festgelegt. Dies ist notwendig um den RINO2-Encryption-Layer zu aktivieren."; -$a->strings["mcrypt_create_iv() function"] = "mcrypt_create_iv() function"; $a->strings["Error, XML PHP module required but not installed."] = "Fehler: XML PHP Modul erforderlich aber nicht installiert."; $a->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."] = "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun."; $a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast."; @@ -1577,86 +1674,49 @@ $a->strings["ImageMagick supports GIF"] = "ImageMagick unterstützt GIF"; $a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen."; $a->strings["

What next

"] = "

Wie geht es weiter?

"; $a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten."; -$a->strings["Profile deleted."] = "Profil gelöscht."; -$a->strings["Profile-"] = "Profil-"; -$a->strings["New profile created."] = "Neues Profil angelegt."; -$a->strings["Profile unavailable to clone."] = "Profil nicht zum Duplizieren verfügbar."; -$a->strings["Profile Name is required."] = "Profilname ist erforderlich."; -$a->strings["Marital Status"] = "Familienstand"; -$a->strings["Romantic Partner"] = "Romanze"; -$a->strings["Work/Employment"] = "Arbeit / Beschäftigung"; -$a->strings["Religion"] = "Religion"; -$a->strings["Political Views"] = "Politische Ansichten"; -$a->strings["Gender"] = "Geschlecht"; -$a->strings["Sexual Preference"] = "Sexuelle Vorlieben"; -$a->strings["XMPP"] = "XMPP"; -$a->strings["Homepage"] = "Webseite"; -$a->strings["Interests"] = "Interessen"; -$a->strings["Address"] = "Adresse"; -$a->strings["Location"] = "Wohnort"; -$a->strings["Profile updated."] = "Profil aktualisiert."; -$a->strings[" and "] = " und "; -$a->strings["public profile"] = "öffentliches Profil"; -$a->strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s hat %2\$s geändert auf “%3\$s”"; -$a->strings[" - Visit %1\$s's %2\$s"] = " – %1\$ss %2\$s besuchen"; -$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat folgendes aktualisiert %2\$s, verändert wurde %3\$s."; -$a->strings["Hide contacts and friends:"] = "Kontakte und Freunde verbergen"; -$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Liste der Kontakte vor Betrachtern dieses Profils verbergen?"; -$a->strings["Show more profile fields:"] = "Zeige mehr Profil-Felder:"; -$a->strings["Profile Actions"] = "Profilaktionen"; -$a->strings["Edit Profile Details"] = "Profil bearbeiten"; -$a->strings["Change Profile Photo"] = "Profilbild ändern"; -$a->strings["View this profile"] = "Dieses Profil anzeigen"; -$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen verwenden"; -$a->strings["Clone this profile"] = "Dieses Profil duplizieren"; -$a->strings["Delete this profile"] = "Dieses Profil löschen"; -$a->strings["Basic information"] = "Grundinformationen"; -$a->strings["Profile picture"] = "Profilbild"; -$a->strings["Preferences"] = "Vorlieben"; -$a->strings["Status information"] = "Status Informationen"; -$a->strings["Additional information"] = "Zusätzliche Informationen"; -$a->strings["Relation"] = "Beziehung"; -$a->strings["Your Gender:"] = "Dein Geschlecht:"; -$a->strings[" Marital Status:"] = " Beziehungsstatus:"; -$a->strings["Example: fishing photography software"] = "Beispiel: Fischen Fotografie Software"; -$a->strings["Profile Name:"] = "Profilname:"; -$a->strings["This is your public profile.
It may be visible to anybody using the internet."] = "Dies ist Dein öffentliches Profil.
Es könnte für jeden Nutzer des Internets sichtbar sein."; -$a->strings["Your Full Name:"] = "Dein kompletter Name:"; -$a->strings["Title/Description:"] = "Titel/Beschreibung:"; -$a->strings["Street Address:"] = "Adresse:"; -$a->strings["Locality/City:"] = "Wohnort:"; -$a->strings["Region/State:"] = "Region/Bundesstaat:"; -$a->strings["Postal/Zip Code:"] = "Postleitzahl:"; -$a->strings["Country:"] = "Land:"; -$a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)"; -$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com"; -$a->strings["Since [date]:"] = "Seit [Datum]:"; -$a->strings["Tell us about yourself..."] = "Erzähle uns ein bisschen von Dir …"; -$a->strings["XMPP (Jabber) address:"] = "XMPP (Jabber) Adresse"; -$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "Die XMPP Adresse wird an deine Kontakte verteilt werden, so dass sie auch über XMPP mit dir in Kontakt treten können."; -$a->strings["Homepage URL:"] = "Adresse der Homepage:"; -$a->strings["Religious Views:"] = "Religiöse Ansichten:"; -$a->strings["Public Keywords:"] = "Öffentliche Schlüsselwörter:"; -$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Wird verwendet, um potentielle Kontakte zu finden, kann von Kontakten eingesehen werden)"; -$a->strings["Private Keywords:"] = "Private Schlüsselwörter:"; -$a->strings["(Used for searching profiles, never shown to others)"] = "(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)"; -$a->strings["Musical interests"] = "Musikalische Interessen"; -$a->strings["Books, literature"] = "Bücher, Literatur"; -$a->strings["Television"] = "Fernsehen"; -$a->strings["Film/dance/culture/entertainment"] = "Filme/Tänze/Kultur/Unterhaltung"; -$a->strings["Hobbies/Interests"] = "Hobbies/Interessen"; -$a->strings["Love/romance"] = "Liebe/Romantik"; -$a->strings["Work/employment"] = "Arbeit/Anstellung"; -$a->strings["School/education"] = "Schule/Ausbildung"; -$a->strings["Contact information and Social Networks"] = "Kontaktinformationen und Soziale Netzwerke"; -$a->strings["Edit/Manage Profiles"] = "Bearbeite/Verwalte Profile"; -$a->strings["Item has been removed."] = "Eintrag wurde entfernt."; +$a->strings["Unable to locate original post."] = "Konnte den Originalbeitrag nicht finden."; +$a->strings["Empty post discarded."] = "Leerer Beitrag wurde verworfen."; +$a->strings["System error. Post not saved."] = "Systemfehler. Beitrag konnte nicht gespeichert werden."; +$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica."; +$a->strings["You may visit them online at %s"] = "Du kannst sie online unter %s besuchen"; +$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Falls Du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem Du auf diese Nachricht antwortest."; +$a->strings["%s posted an update."] = "%s hat ein Update veröffentlicht."; +$a->strings["Invalid request identifier."] = "Invalid request identifier."; +$a->strings["Discard"] = "Verwerfen"; +$a->strings["Network Notifications"] = "Netzwerk Benachrichtigungen"; +$a->strings["Personal Notifications"] = "Persönliche Benachrichtigungen"; +$a->strings["Home Notifications"] = "Pinnwand Benachrichtigungen"; +$a->strings["Show Ignored Requests"] = "Zeige ignorierte Anfragen"; +$a->strings["Hide Ignored Requests"] = "Verberge ignorierte Anfragen"; +$a->strings["Notification type: "] = "Benachrichtigungstyp: "; +$a->strings["suggested by %s"] = "vorgeschlagen von %s"; +$a->strings["Post a new friend activity"] = "Neue-Kontakt Nachricht senden"; +$a->strings["if applicable"] = "falls anwendbar"; +$a->strings["Approve"] = "Genehmigen"; +$a->strings["Claims to be known to you: "] = "Behauptet Dich zu kennen: "; +$a->strings["yes"] = "ja"; +$a->strings["no"] = "nein"; +$a->strings["Shall your connection be bidirectional or not?"] = "Soll die Verbindung beidseitig sein oder nicht?"; +$a->strings["Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed."] = "Akzeptierst du %s als Kontakt, erlaubst du damit das Lesen deiner Beiträge und abonnierst selbst auch die Beiträge von %s."; +$a->strings["Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Wenn du %s als Abonnent akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten."; +$a->strings["Accepting %s as a sharer allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Wenn du %s als Teilenden akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten."; +$a->strings["Friend"] = "Kontakt"; +$a->strings["Sharer"] = "Teilenden"; +$a->strings["Subscriber"] = "Abonnent"; +$a->strings["No introductions."] = "Keine Kontaktanfragen."; +$a->strings["Show unread"] = "Ungelesene anzeigen"; +$a->strings["Show all"] = "Alle anzeigen"; +$a->strings["No more %s notifications."] = "Keine weiteren %s Benachrichtigungen"; +$a->strings["{0} wants to be your friend"] = "{0} möchte mit Dir in Kontakt treten"; +$a->strings["{0} sent you a message"] = "{0} schickte Dir eine Nachricht"; +$a->strings["{0} requested registration"] = "{0} möchte sich registrieren"; $a->strings["Theme settings updated."] = "Themeneinstellungen aktualisiert."; $a->strings["Site"] = "Seite"; $a->strings["Users"] = "Nutzer"; $a->strings["Themes"] = "Themen"; $a->strings["DB updates"] = "DB Updates"; $a->strings["Inspect Queue"] = "Warteschlange Inspizieren"; +$a->strings["Server Blocklist"] = "Server Blockliste"; $a->strings["Federation Statistics"] = "Federation Statistik"; $a->strings["Logs"] = "Protokolle"; $a->strings["View Logs"] = "Protokolle anzeigen"; @@ -1665,10 +1725,27 @@ $a->strings["check webfinger"] = "Webfinger überprüfen"; $a->strings["Plugin Features"] = "Plugin Features"; $a->strings["diagnostics"] = "Diagnose"; $a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten"; +$a->strings["The blocked domain"] = "Die blockierte Domain"; +$a->strings["The reason why you blocked this domain."] = "Die Begründung warum du diese Domain blockiert hast."; +$a->strings["Delete domain"] = "Domain löschen"; +$a->strings["Check to delete this entry from the blocklist"] = "Markieren, um diesen Eintrag von der Blocklist zu entfernen"; +$a->strings["Administration"] = "Administration"; +$a->strings["This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server."] = "Auf dieser Seite kannst du die Liste der blockierten Domains aus dem föderalen Netzwerk verwalten, denen es untersagt ist mit deinem Knoten zu interagieren. Für jede der blockierten Domains musst du außerdem einen Grund für die Sperrung angeben."; +$a->strings["The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily."] = "Die Liste der blockierten Domains wird auf der /friendica Seite öffentlich einsehbar gemacht, damit deine Nutzer und Personen die Kommunikationsprobleme erkunden, die Ursachen einfach finden können."; +$a->strings["Add new entry to block list"] = "Neuen Eintrag in die Blockliste"; +$a->strings["Server Domain"] = "Domain des Servers"; +$a->strings["The domain of the new server to add to the block list. Do not include the protocol."] = "Der Domain-Name des Servers der geblockt werden soll. Gib das Protokoll nicht mit an!"; +$a->strings["Block reason"] = "Begründung der Blockierung"; +$a->strings["Add Entry"] = "Eintrag hinzufügen"; +$a->strings["Save changes to the blocklist"] = "Änderungen der Blockliste speichern"; +$a->strings["Current Entries in the Blocklist"] = "Aktuelle Einträge der Blockliste"; +$a->strings["Delete entry from blocklist"] = "Eintrag von der Blockliste entfernen"; +$a->strings["Delete entry from blocklist?"] = "Eintrag von der Blockliste entfernen?"; +$a->strings["Server added to blocklist."] = "Server zur Blockliste hinzugefügt."; +$a->strings["Site blocklist updated."] = "Blockliste aktualisiert."; $a->strings["unknown"] = "Unbekannt"; $a->strings["This page offers you some numbers to the known part of the federated social network your Friendica node is part of. These numbers are not complete but only reflect the part of the network your node is aware of."] = "Diese Seite präsentiert einige Zahlen zu dem bekannten Teil des föderalen sozialen Netzwerks, von dem deine Friendica Installation ein Teil ist. Diese Zahlen sind nicht absolut und reflektieren nur den Teil des Netzwerks, den dein Knoten kennt."; $a->strings["The Auto Discovered Contact Directory feature is not enabled, it will improve the data displayed here."] = "Die Funktion um Automatisch ein Kontaktverzeichnis erstellen ist nicht aktiv. Es wird die hier angezeigten Daten verbessern."; -$a->strings["Administration"] = "Administration"; $a->strings["Currently this node is aware of %d nodes from the following platforms:"] = "Momentan kennt dieser Knoten %d andere Knoten der folgenden Plattformen:"; $a->strings["ID"] = "ID"; $a->strings["Recipient Name"] = "Empfänger Name"; @@ -1676,7 +1753,7 @@ $a->strings["Recipient Profile"] = "Empfänger Profil"; $a->strings["Created"] = "Erstellt"; $a->strings["Last Tried"] = "Zuletzt versucht"; $a->strings["This page lists the content of the queue for outgoing postings. These are postings the initial delivery failed for. They will be resend later and eventually deleted if the delivery fails permanently."] = "Auf dieser Seite werden die in der Warteschlange eingereihten Beiträge aufgelistet. Bei diesen Beiträgen schlug die erste Zustellung fehl. Es wird später wiederholt versucht die Beiträge zuzustellen, bis sie schließlich gelöscht werden."; -$a->strings["Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the convert_innodb.sql in the /util directory of your Friendica installation.
"] = "Deine DB enthält einige Tabellen die noch auf MyISAM laufen. Du solltest den Engine-Type auf InnoDB umstellen, da Friendica in Zukunft einige InnoDB Features nutzen wird. Eine Anleitung zur Umstellung kannst du hier finden. Außerdem kannst du das convert_innodb.sql Skript verwenden, das du im /util Verzeichnis deiner Friendica Installation findest."; +$a->strings["Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the command php include/dbstructure.php toinnodb of your Friendica installation for an automatic conversion.
"] = "Deine DB verwendet derzeit noch MyISAM Tabellen. Du solltest die Datenbank Engine auf InnoDB umstellen, da Friendica in Zukunft InnoDB Features verwenden wird. Eine Anleitung zur Umstellung der Datenbank kannst du hier finden. Du kannst außerdem mit dem Befehl php include/dbstructure.php toinnodb auf der Kommandozeile die Umstellung automatisch vornehmen lassen."; $a->strings["You are using a MySQL version which does not support all features that Friendica uses. You should consider switching to MariaDB."] = "Du verwendets eine MySQL Version die nicht alle Features unterstützt die Friendica verwendet. Wir empfehlen dir einen Wechsel auf MariaDB, falls dies möglich ist."; $a->strings["Normal Account"] = "Normales Konto"; $a->strings["Soapbox Account"] = "Marktschreier-Konto"; @@ -1691,7 +1768,6 @@ $a->strings["Pending registrations"] = "Anstehende Anmeldungen"; $a->strings["Version"] = "Version"; $a->strings["Active plugins"] = "Aktive Plugins"; $a->strings["Can not parse base url. Must have at least ://"] = "Die Basis-URL konnte nicht analysiert werden. Sie muss mindestens aus :// bestehen"; -$a->strings["RINO2 needs mcrypt php extension to work."] = "RINO2 benötigt die PHP Extension mcrypt."; $a->strings["Site settings updated."] = "Seiteneinstellungen aktualisiert."; $a->strings["No community page"] = "Keine Gemeinschaftsseite"; $a->strings["Public postings from users of this site"] = "Öffentliche Beiträge von Nutzer_innen dieser Seite"; @@ -1736,8 +1812,6 @@ $a->strings["SSL link policy"] = "Regeln für SSL Links"; $a->strings["Determines whether generated links should be forced to use SSL"] = "Bestimmt, ob generierte Links SSL verwenden müssen"; $a->strings["Force SSL"] = "Erzwinge SSL"; $a->strings["Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops."] = "Erzinge alle Nicht-SSL Anfragen auf SSL - Achtung: auf manchen Systemen verursacht dies eine Endlosschleife."; -$a->strings["Old style 'Share'"] = "Altes \"Teilen\" Element"; -$a->strings["Deactivates the bbcode element 'share' for repeating items."] = "Deaktiviert das BBCode Element \"share\" beim Wiederholen von Beiträgen."; $a->strings["Hide help entry from navigation menu"] = "Verberge den Menüeintrag für die Hilfe im Navigationsmenü"; $a->strings["Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly."] = "Verbirgt den Menüeintrag für die Hilfe-Seiten im Navigationsmenü. Die Seiten können weiterhin über /help aufgerufen werden."; $a->strings["Single user instance"] = "Ein-Nutzer Instanz"; @@ -1783,8 +1857,6 @@ $a->strings["OpenID support"] = "OpenID Unterstützung"; $a->strings["OpenID support for registration and logins."] = "OpenID-Unterstützung für Registrierung und Login."; $a->strings["Fullname check"] = "Namen auf Vollständigkeit überprüfen"; $a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden."; -$a->strings["UTF-8 Regular expressions"] = "UTF-8 Reguläre Ausdrücke"; -$a->strings["Use PHP UTF8 regular expressions"] = "PHP UTF8 Ausdrücke verwenden"; $a->strings["Community Page Style"] = "Art der Gemeinschaftsseite"; $a->strings["Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server."] = "Welche Art der Gemeinschaftsseite soll verwendet werden? Globale Gemeinschaftsseite zeigt alle öffentlichen Beiträge eines offenen dezentralen Netzwerks an die auf diesem Server eintreffen."; $a->strings["Posts per user on community page"] = "Anzahl der Beiträge pro Benutzer auf der Gemeinschaftsseite"; @@ -1807,14 +1879,12 @@ $a->strings["Proxy user"] = "Proxy Nutzer"; $a->strings["Proxy URL"] = "Proxy URL"; $a->strings["Network timeout"] = "Netzwerk Wartezeit"; $a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)."; -$a->strings["Delivery interval"] = "Zustellungsintervall"; -$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl an 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."; -$a->strings["Poll interval"] = "Abfrageintervall"; -$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl an Sekunden, um die Systemlast zu reduzieren. Bei 0 Sekunden wird das Auslieferungsintervall verwendet."; $a->strings["Maximum Load Average"] = "Maximum Load Average"; $a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast bevor Verteil- und Empfangsprozesse verschoben werden - Standard 50"; $a->strings["Maximum Load Average (Frontend)"] = "Maximum Load Average (Frontend)"; $a->strings["Maximum system load before the frontend quits service - default 50."] = "Maximale Systemlast bevor Vordergrundprozesse pausiert werden - Standard 50."; +$a->strings["Minimal Memory"] = "Minimaler Speicher"; +$a->strings["Minimal free memory in MB for the poller. Needs access to /proc/meminfo - default 0 (deactivated)."] = "Minimal freier Speicher in MB für den Poller. Benötigt Zugriff auf /proc/meminfo - Standard 0 (Deaktiviert)."; $a->strings["Maximum table size for optimization"] = "Maximale Tabellengröße zur Optimierung"; $a->strings["Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it."] = "Maximale Tabellengröße (in MB) für die automatische Optimierung - Standard 100 MB. Gib -1 für Deaktivierung ein."; $a->strings["Minimum level of fragmentation"] = "Minimaler Fragmentationsgrad"; @@ -1831,10 +1901,6 @@ $a->strings["Search the local directory"] = "Lokales Verzeichnis durchsuchen"; $a->strings["Search the local directory instead of the global directory. When searching locally, every search will be executed on the global directory in the background. This improves the search results when the search is repeated."] = "Suche im lokalen Verzeichnis anstelle des globalen Verzeichnisses durchführen. Jede Suche wird im Hintergrund auch im globalen Verzeichnis durchgeführt umd die Suchresultate zu verbessern, wenn diese Suche wiederholt wird."; $a->strings["Publish server information"] = "Server Informationen veröffentlichen"; $a->strings["If enabled, general server and usage data will be published. The data contains the name and version of the server, number of users with public profiles, number of posts and the activated protocols and connectors. See the-federation.info for details."] = "Wenn aktiviert, werden allgemeine Informationen über den Server und Nutzungsdaten veröffentlicht. Die Daten beinhalten den Namen sowie die Version des Servers, die Anzahl der Nutzer_innen mit öffentlichen Profilen, die Anzahl der Beiträge sowie aktivierte Protokolle und Connectoren. Für Details bitte the-federation.info aufrufen."; -$a->strings["Use MySQL full text engine"] = "Nutze MySQL full text engine"; -$a->strings["Activates the full text engine. Speeds up search - but can only search for four and more characters."] = "Aktiviert die 'full text engine'. Beschleunigt die Suche - aber es kann nur nach vier oder mehr Zeichen gesucht werden."; -$a->strings["Suppress Language"] = "Sprachinformation unterdrücken"; -$a->strings["Suppress language information in meta information about a posting."] = "Verhindert das Erzeugen der Meta-Information zur Spracherkennung eines Beitrags."; $a->strings["Suppress Tags"] = "Tags Unterdrücken"; $a->strings["Suppress showing a list of hashtags at the end of the posting."] = "Unterdrückt die Anzeige von Tags am Ende eines Beitrags."; $a->strings["Path to item cache"] = "Pfad zum Eintrag Cache"; @@ -1843,26 +1909,18 @@ $a->strings["Cache duration in seconds"] = "Cache-Dauer in Sekunden"; $a->strings["How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1."] = "Wie lange sollen die gecachedten Dateien vorgehalten werden? Grundeinstellung sind 86400 Sekunden (ein Tag). Um den Item Cache zu deaktivieren, setze diesen Wert auf -1."; $a->strings["Maximum numbers of comments per post"] = "Maximale Anzahl von Kommentaren pro Beitrag"; $a->strings["How much comments should be shown for each post? Default value is 100."] = "Wie viele Kommentare sollen pro Beitrag angezeigt werden? Standardwert sind 100."; -$a->strings["Path for lock file"] = "Pfad für die Sperrdatei"; -$a->strings["The lock file is used to avoid multiple pollers at one time. Only define a folder here."] = "Die lock-Datei wird benutzt, damit nicht mehrere poller auf einmal laufen. Definiere hier einen Dateiverzeichnis."; $a->strings["Temp path"] = "Temp Pfad"; $a->strings["If you have a restricted system where the webserver can't access the system temp path, enter another path here."] = "Solltest du ein eingeschränktes System haben, auf dem der Webserver nicht auf das temp Verzeichnis des Systems zugreifen kann, setze hier einen anderen Pfad."; $a->strings["Base path to installation"] = "Basis-Pfad zur Installation"; $a->strings["If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."] = "Falls das System nicht den korrekten Pfad zu deiner Installation gefunden hat, gib den richtigen Pfad bitte hier ein. Du solltest hier den Pfad nur auf einem eingeschränkten System angeben müssen, bei dem du mit symbolischen Links auf dein Webverzeichnis verweist."; $a->strings["Disable picture proxy"] = "Bilder Proxy deaktivieren"; $a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith."] = "Der Proxy für Bilder verbessert die Leistung und Privatsphäre der Nutzer. Er sollte nicht auf Systemen verwendet werden, die nur über begrenzte Bandbreite verfügen."; -$a->strings["Enable old style pager"] = "Den Old-Style Pager aktiviren"; -$a->strings["The old style pager has page numbers but slows down massively the page speed."] = "Der Old-Style Pager zeigt Seitennummern an, verlangsamt aber auch drastisch das Laden einer Seite."; $a->strings["Only search in tags"] = "Nur in Tags suchen"; $a->strings["On large systems the text search can slow down the system extremely."] = "Auf großen Knoten kann die Volltext-Suche das System ausbremsen."; $a->strings["New base url"] = "Neue Basis-URL"; $a->strings["Change base url for this server. Sends relocate message to all DFRN contacts of all users."] = "Ändert die Basis-URL dieses Servers und sendet eine Umzugsmitteilung an alle DFRN Kontakte deiner Nutzer_innen."; $a->strings["RINO Encryption"] = "RINO Verschlüsselung"; $a->strings["Encryption layer between nodes."] = "Verschlüsselung zwischen Friendica Instanzen"; -$a->strings["Embedly API key"] = "Embedly API Schlüssel"; -$a->strings["Embedly is used to fetch additional data for web pages. This is an optional parameter."] = "Embedly wird verwendet um zusätzliche Informationen von Webseiten zu laden. Dies ist ein optionaler Parameter."; -$a->strings["Enable 'worker' background processing"] = "Aktiviere die 'Worker' Hintergrundprozesse"; -$a->strings["The worker background processing limits the number of parallel background jobs to a maximum number and respects the system load."] = "Der 'background worker' Prozess begrenzt die Zahl der Prozesse, die im Hintergrund parallel laufen und beachtet dabei die Systemlast."; $a->strings["Maximum number of parallel workers"] = "Maximale Anzahl parallel laufender Worker"; $a->strings["On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4."] = "Wenn dein Knoten bei einem Shared Hoster ist, setzte diesen Wert auf 2. Auf größeren Systemen funktioniert ein Wert von 10 recht gut. Standardeinstellung sind 4."; $a->strings["Don't use 'proc_open' with the worker"] = "'proc_open' nicht mit den Workern verwenden"; @@ -1907,7 +1965,6 @@ $a->strings["User waiting for permanent deletion"] = "Nutzer wartet auf permanen $a->strings["Request date"] = "Anfragedatum"; $a->strings["No registrations."] = "Keine Neuanmeldungen."; $a->strings["Note from the user"] = "Hinweis vom Nutzer"; -$a->strings["Approve"] = "Genehmigen"; $a->strings["Deny"] = "Verwehren"; $a->strings["Site admin"] = "Seitenadministrator"; $a->strings["Account expired"] = "Account ist abgelaufen"; @@ -1946,72 +2003,7 @@ $a->strings["PHP logging"] = "PHP Protokollieren"; $a->strings["To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "Um PHP Warnungen und Fehler zu protokollieren, kannst du die folgenden Zeilen zur .htconfig.php Datei deiner Installation hinzufügen. Den Dateinamen der Log-Datei legst du in der Zeile mit dem 'error_log' fest, Er ist relativ zum Friendica-Stammverzeichnis und muss schreibbar durch den Webserver sein. Eine \"1\" als Option für die Punkte 'log_errors' und 'display_errors' aktiviert die Funktionen zum Protokollieren bzw. Anzeigen der Fehler, eine \"0\" deaktiviert sie."; $a->strings["Lock feature %s"] = "Feature festlegen: %s"; $a->strings["Manage Additional Features"] = "Zusätzliche Features Verwalten"; -$a->strings["No contacts."] = "Keine Kontakte."; -$a->strings["Remove term"] = "Begriff entfernen"; -$a->strings["Warning: This group contains %s member from a network that doesn't allow non public messages."] = array( - 0 => "Warnung: Diese Gruppe beinhaltet %s Person aus einem Netzwerk das keine nicht öffentlichen Beiträge empfangen kann.", - 1 => "Warnung: Diese Gruppe beinhaltet %s Personen aus Netzwerken die keine nicht-öffentlichen Beiträge empfangen können.", -); -$a->strings["Messages in this group won't be send to these receivers."] = "Beiträge in dieser Gruppe werden deshalb nicht an diese Personen zugestellt werden."; -$a->strings["Private messages to this person are at risk of public disclosure."] = "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen."; -$a->strings["Invalid contact."] = "Ungültiger Kontakt."; -$a->strings["Commented Order"] = "Neueste Kommentare"; -$a->strings["Sort by Comment Date"] = "Nach Kommentardatum sortieren"; -$a->strings["Posted Order"] = "Neueste Beiträge"; -$a->strings["Sort by Post Date"] = "Nach Beitragsdatum sortieren"; -$a->strings["Posts that mention or involve you"] = "Beiträge, in denen es um Dich geht"; -$a->strings["New"] = "Neue"; -$a->strings["Activity Stream - by date"] = "Aktivitäten-Stream - nach Datum"; -$a->strings["Shared Links"] = "Geteilte Links"; -$a->strings["Interesting Links"] = "Interessante Links"; -$a->strings["Starred"] = "Markierte"; -$a->strings["Favourite Posts"] = "Favorisierte Beiträge"; -$a->strings["Only logged in users are permitted to perform a search."] = "Nur eingeloggten Benutzern ist das Suchen gestattet."; -$a->strings["Too Many Requests"] = "Zu viele Abfragen"; -$a->strings["Only one search per minute is permitted for not logged in users."] = "Es ist nur eine Suchanfrage pro Minute für nicht eingeloggte Benutzer gestattet."; -$a->strings["Items tagged with: %s"] = "Beiträge die mit %s getaggt sind"; -$a->strings["Invalid request identifier."] = "Invalid request identifier."; -$a->strings["Discard"] = "Verwerfen"; -$a->strings["Network Notifications"] = "Netzwerk Benachrichtigungen"; -$a->strings["Personal Notifications"] = "Persönliche Benachrichtigungen"; -$a->strings["Home Notifications"] = "Pinnwand Benachrichtigungen"; -$a->strings["Show Ignored Requests"] = "Zeige ignorierte Anfragen"; -$a->strings["Hide Ignored Requests"] = "Verberge ignorierte Anfragen"; -$a->strings["Notification type: "] = "Benachrichtigungstyp: "; -$a->strings["suggested by %s"] = "vorgeschlagen von %s"; -$a->strings["Post a new friend activity"] = "Neue-Kontakt Nachricht senden"; -$a->strings["if applicable"] = "falls anwendbar"; -$a->strings["Claims to be known to you: "] = "Behauptet Dich zu kennen: "; -$a->strings["yes"] = "ja"; -$a->strings["no"] = "nein"; -$a->strings["Shall your connection be bidirectional or not?"] = "Soll die Verbindung beidseitig sein oder nicht?"; -$a->strings["Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed."] = "Akzeptierst du %s als Kontakt, erlaubst du damit das Lesen deiner Beiträge und abonnierst selbst auch die Beiträge von %s."; -$a->strings["Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Wenn du %s als Abonnent akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten."; -$a->strings["Accepting %s as a sharer allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "Wenn du %s als Teilenden akzeptierst, erlaubst du damit das Lesen deiner Beiträge, wirst aber selbst die Beiträge der anderen Seite nicht erhalten."; -$a->strings["Friend"] = "Kontakt"; -$a->strings["Sharer"] = "Teilenden"; -$a->strings["Subscriber"] = "Abonnent"; -$a->strings["No introductions."] = "Keine Kontaktanfragen."; -$a->strings["Show unread"] = "Ungelesene anzeigen"; -$a->strings["Show all"] = "Alle anzeigen"; -$a->strings["No more %s notifications."] = "Keine weiteren %s Benachrichtigungen"; $a->strings["via"] = "via"; -$a->strings["Alignment"] = "Ausrichtung"; -$a->strings["Left"] = "Links"; -$a->strings["Center"] = "Mitte"; -$a->strings["Color scheme"] = "Farbschema"; -$a->strings["Posts font size"] = "Schriftgröße in Beiträgen"; -$a->strings["Textareas font size"] = "Schriftgröße in Eingabefeldern"; -$a->strings["Comma separated list of helper forums"] = "Komma-Separierte Liste der Helfer-Foren"; -$a->strings["Set style"] = "Stil auswählen"; -$a->strings["Community Pages"] = "Foren"; -$a->strings["Community Profiles"] = "Community-Profile"; -$a->strings["Help or @NewHere ?"] = "Hilfe oder @NewHere"; -$a->strings["Connect Services"] = "Verbinde Dienste"; -$a->strings["Find Friends"] = "Kontakte finden"; -$a->strings["Last users"] = "Letzte Nutzer"; -$a->strings["Local Directory"] = "Lokales Verzeichnis"; -$a->strings["Quick Start"] = "Schnell-Start"; $a->strings["greenzero"] = "greenzero"; $a->strings["purplezero"] = "purplezero"; $a->strings["easterbunny"] = "easterbunny"; @@ -2019,28 +2011,6 @@ $a->strings["darkzero"] = "darkzero"; $a->strings["comix"] = "comix"; $a->strings["slackr"] = "slackr"; $a->strings["Variations"] = "Variationen"; -$a->strings["Midnight"] = "Mitternacht"; -$a->strings["Zenburn"] = "Zenburn"; -$a->strings["Bootstrap"] = "Bootstrap"; -$a->strings["Shades of Pink"] = "Shades of Pink"; -$a->strings["Lime and Orange"] = "Lime and Orange"; -$a->strings["GeoCities Retro"] = "GeoCities Retro"; -$a->strings["Background Image"] = "Hintergrundbild"; -$a->strings["The URL to a picture (e.g. from your photo album) that should be used as background image."] = "Die URL zum Bild (z.B. aus deinem Foto Album), das als Hintergrundbild verwendet werden soll."; -$a->strings["Background Color"] = "Hintergrundfarbe"; -$a->strings["HEX value for the background color. Don't include the #"] = "HEX Wert der Hintergrundfarbe, ohne das #"; -$a->strings["font size"] = "Zeichengröße"; -$a->strings["base font size for your interface"] = "Basiszeichengröße für das Interface"; -$a->strings["Display Accesskeys"] = "Accesskeys anzeigen"; -$a->strings["Diaplay the access keys assigned to some menu element in the web interface."] = "Einige Menüelemente sind über Accesskeys aufrufbar. Sollen diese angezeigt werden?"; -$a->strings["Repeat the image"] = "Bild wiederholen"; -$a->strings["Will repeat your image to fill the background."] = "Wiederholt das Bild um den Hintergrund auszufüllen."; -$a->strings["Stretch"] = "Strecken"; -$a->strings["Will stretch to width/height of the image."] = "Streckt Breite/Höhe des Bildes."; -$a->strings["Resize fill and-clip"] = "Größe anpassen - Ausfüllen und abschneiden"; -$a->strings["Resize to fill and retain aspect ratio."] = "Größe anpassen: Ausfüllen und Seitenverhältnis beibehalten"; -$a->strings["Resize best fit"] = "Größe anpassen - Optimale Größe"; -$a->strings["Resize to best fit and retain aspect ratio."] = "Größe anpassen - Optimale Größe und Seitenverhältnisse beibehalten"; $a->strings["Default"] = "Standard"; $a->strings["Note: "] = "Hinweis:"; $a->strings["Check image permissions if all users are allowed to visit the image"] = "Überprüfe, dass alle Benutzer die Berechtigung haben dieses Bild anzusehen"; @@ -2051,8 +2021,32 @@ $a->strings["Link color"] = "Linkfarbe"; $a->strings["Set the background color"] = "Hintergrundfarbe festlegen"; $a->strings["Content background transparency"] = "Transparanz des Hintergrunds von Beiträgem"; $a->strings["Set the background image"] = "Hintergrundbild festlegen"; +$a->strings["Repeat the image"] = "Bild wiederholen"; +$a->strings["Will repeat your image to fill the background."] = "Wiederholt das Bild um den Hintergrund auszufüllen."; +$a->strings["Stretch"] = "Strecken"; +$a->strings["Will stretch to width/height of the image."] = "Streckt Breite/Höhe des Bildes."; +$a->strings["Resize fill and-clip"] = "Größe anpassen - Ausfüllen und abschneiden"; +$a->strings["Resize to fill and retain aspect ratio."] = "Größe anpassen: Ausfüllen und Seitenverhältnis beibehalten"; +$a->strings["Resize best fit"] = "Größe anpassen - Optimale Größe"; +$a->strings["Resize to best fit and retain aspect ratio."] = "Größe anpassen - Optimale Größe und Seitenverhältnisse beibehalten"; $a->strings["Guest"] = "Gast"; $a->strings["Visitor"] = "Besucher"; +$a->strings["Alignment"] = "Ausrichtung"; +$a->strings["Left"] = "Links"; +$a->strings["Center"] = "Mitte"; +$a->strings["Color scheme"] = "Farbschema"; +$a->strings["Posts font size"] = "Schriftgröße in Beiträgen"; +$a->strings["Textareas font size"] = "Schriftgröße in Eingabefeldern"; +$a->strings["Comma separated list of helper forums"] = "Komma-Separierte Liste der Helfer-Foren"; +$a->strings["Set style"] = "Stil auswählen"; +$a->strings["Community Pages"] = "Foren"; +$a->strings["Community Profiles"] = "Community-Profile"; +$a->strings["Help or @NewHere ?"] = "Hilfe oder @NewHere"; +$a->strings["Connect Services"] = "Verbinde Dienste"; +$a->strings["Find Friends"] = "Kontakte finden"; +$a->strings["Last users"] = "Letzte Nutzer"; +$a->strings["Local Directory"] = "Lokales Verzeichnis"; +$a->strings["Quick Start"] = "Schnell-Start"; $a->strings["toggle mobile"] = "auf/von Mobile Ansicht wechseln"; $a->strings["Delete this item?"] = "Diesen Beitrag löschen?"; $a->strings["show fewer"] = "weniger anzeigen"; diff --git a/view/php/default.php b/view/php/default.php index e51b531b5a..5adef21a2d 100644 --- a/view/php/default.php +++ b/view/php/default.php @@ -1,19 +1,19 @@ - - - - <?php if(x($page,'title')) echo $page['title'] ?> - - - - - - -
- -
- -
- -
- - + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + + + + +
+ +
+ +
+ +
+ + diff --git a/view/php/minimal.php b/view/php/minimal.php index e93aac1125..9831ca5e55 100644 --- a/view/php/minimal.php +++ b/view/php/minimal.php @@ -1,14 +1,13 @@ - - - - <?php if(x($page,'title')) echo $page['title'] ?> - - - - -
- -
- - - + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + + +
+ +
+ + diff --git a/view/templates/admin_blocklist.tpl b/view/templates/admin_blocklist.tpl new file mode 100644 index 0000000000..1484c987e9 --- /dev/null +++ b/view/templates/admin_blocklist.tpl @@ -0,0 +1,33 @@ + +
+

{{$title}} - {{$page}}

+

{{$intro}}

+

{{$public}}

+ +

{{$addtitle}}

+
+ + {{include file="field_input.tpl" field=$newdomain}} + {{include file="field_input.tpl" field=$newreason}} +
+
+ + {{if $entries}} +

{{$currenttitle}}

+

{{$currentintro}}

+
+ + {{foreach $entries as $e}} + {{include file="field_input.tpl" field=$e.domain}} + {{include file="field_input.tpl" field=$e.reason}} + {{include file="field_checkbox.tpl" field=$e.delete}} + {{/foreach}} +
+ {{/if}} +
+ +
diff --git a/view/templates/admin_site.tpl b/view/templates/admin_site.tpl index 196bc479b5..6a3c3fbcdd 100644 --- a/view/templates/admin_site.tpl +++ b/view/templates/admin_site.tpl @@ -118,7 +118,6 @@ {{include file="field_input.tpl" field=$proxy}} {{include file="field_input.tpl" field=$proxyuser}} {{include file="field_input.tpl" field=$timeout}} - {{include file="field_input.tpl" field=$maxloadavg}} {{include file="field_input.tpl" field=$maxloadavg_frontend}} {{include file="field_input.tpl" field=$optimize_max_tablesize}} {{include file="field_input.tpl" field=$optimize_fragmentation}} @@ -146,6 +145,8 @@

{{$worker_title}}

+ {{include file="field_input.tpl" field=$maxloadavg}} + {{include file="field_input.tpl" field=$min_memory}} {{include file="field_input.tpl" field=$worker_queues}} {{include file="field_checkbox.tpl" field=$worker_dont_fork}} {{include file="field_checkbox.tpl" field=$worker_fastlane}} diff --git a/view/templates/group_drop.tpl b/view/templates/group_drop.tpl index 9b8ff98708..b9a6953d8b 100644 --- a/view/templates/group_drop.tpl +++ b/view/templates/group_drop.tpl @@ -1,10 +1,12 @@
- + +
diff --git a/view/templates/groupeditor.tpl b/view/templates/groupeditor.tpl index 86458ded2e..bde686040b 100644 --- a/view/templates/groupeditor.tpl +++ b/view/templates/groupeditor.tpl @@ -1,21 +1,61 @@ +{{* Template for the contact group list *}} + +{{* The contacts who are already members of the contact group *}}
-

{{$groupeditor.label_members}}

-
-{{if $groupeditor.members }} - {{foreach $groupeditor.members as $c}} {{$c}} {{/foreach}} -{{else}} -{{$groupeditor.group_is_empty}} -{{/if}} -
-
-
+

{{$groupeditor.label_members}}

+
+ + {{if $groupeditor.members }} + + {{foreach $groupeditor.members as $c}} + {{* If there are too many contacts we use another view mode *}} + {{if $shortmode}} + + {{else}} + {{* The normal view mode *}} +
+ + {{$c.name}} + +
+ {{/if}} + {{/foreach}} + + {{else}} + {{$groupeditor.group_is_empty}} + {{/if}} +
+ +
+
+{{* The contacts who are not members of the contact group *}}
-

{{$groupeditor.label_contacts}}

-
-{{foreach $groupeditor.contacts as $m}} {{$m}} {{/foreach}} -
-
+

{{$groupeditor.label_contacts}}

+
+ {{foreach $groupeditor.contacts as $m}} + {{* If there are too many contacts we use another view mode *}} + {{if $shortmode}} + + {{else}} + {{* The normal view mode *}} +
+ + {{$m.name}} + +
+ {{/if}} + {{/foreach}} +
+
diff --git a/view/templates/intros.tpl b/view/templates/intros.tpl index e3933e3815..2d0bf9bd06 100644 --- a/view/templates/intros.tpl +++ b/view/templates/intros.tpl @@ -14,7 +14,7 @@
- +{{if $discard}}{{/if}}
diff --git a/view/theme/duepuntozero/config.php b/view/theme/duepuntozero/config.php index 381b067167..b1ec4bae53 100644 --- a/view/theme/duepuntozero/config.php +++ b/view/theme/duepuntozero/config.php @@ -1,8 +1,11 @@ diff --git a/view/theme/duepuntozero/theme.php b/view/theme/duepuntozero/theme.php index c674a99d99..dc8f29b2fa 100644 --- a/view/theme/duepuntozero/theme.php +++ b/view/theme/duepuntozero/theme.php @@ -1,5 +1,7 @@ li:hover, -.media-list > li.selected { +.media-list > li.selected, +.media-list > li.active { border-left: 3px solid $link_color; background-color: rgba(247, 247, 247, $contentbg_transp); } @@ -2045,9 +2061,9 @@ ul.dropdown-menu li:hover { .allfriends-content-wrapper, .match-content-wrapper, .dirfind-content-wrapper, .directory-content-wrapper, .manage-content-wrapper, .notes-content-wrapper, .message-content-wrapper, .apps-content-wrapper, .photos-content-wrapper, -.admin-content-wrapper, .group-content-wrapper, .viewcontacts-content-wrapper, -.dfrn_request-content-wrapper, .friendica-content-wrapper, .credits-content-wrapper, -.nogroup-content-wrapper, .profperm-content-wrapper { +.admin-content-wrapper, .viewcontacts-content-wrapper, .dfrn_request-content-wrapper, +.friendica-content-wrapper, .credits-content-wrapper, .nogroup-content-wrapper, +.profperm-content-wrapper { min-height: calc(100vh - 150px); padding: 15px; padding-bottom: 20px; @@ -2094,6 +2110,9 @@ ul.viewcontact_wrapper > li { position: relative;*/ /*border-left: 3px solid white;*/ } +.contact-wrapper .contact-photo-wrapper button { + padding: 0; +} .contact-wrapper.media { overflow: visible; word-wrap: break-word; @@ -2124,6 +2143,9 @@ ul.viewcontact_wrapper > li { .contact-wrapper .contact-photo-overlay-content.xl { font-size: 48px; } +.contact-wrapper .contact-photo-menu { + top: auto; +} .contact-entry-desc { color: #555; @@ -2197,6 +2219,61 @@ ul li:hover .contact-wrapper .contact-action-link:hover { padding-top: 10px; } +/* group edit page */ +.group-actions { + margin-top: 20px; + margin-bottom: 10px; + font-size: 30px; +} +.group-actions button, +.group-actions a { + font-size: 18px; +} +#group-edit-wrapper { + display: none; +} +#group-update-wrapper .contact-photo-overlay { + display: none; +} +#group-update-wrapper .viewcontact_wrapper .contact-group-actions { + height: 100%; + margin-top: -10px; + display: flex; +} +#group-update-wrapper .viewcontact_wrapper .contact-action-link { + opacity: 0.8; + font-size: 20px; + line-height: 50px; +} +#group-update-wrapper .viewcontact_wrapper .contact-action-link:hover { + opacity: 1; +} +#group-update-wrapper .shortmode { + height: 53px; + overflow: hidden; +} +#group-update-wrapper .shortmode .contact-photo { + height: 32px; + width: 32px; +} +#group-update-wrapper .shortmode .media { + overflow: hidden; +} +#group-update-wrapper .shortmode .contact-entry-desc { + font-size: 12px !important; +} +#group-update-wrapper .shortmode .contact-entry-desc h4.media-heading { + margin: 0; +} +#group-update-wrapper .shortmode .contact-entry-desc h4.media-heading a { + font-size: 13px !important; + white-space: nowrap; +} +#group-update-wrapper .shortmode .contact-entry-desc .contact-entry-rel, +#group-update-wrapper .shortmode .contact-entry-desc .contact-entry-network { + display: none; +} + /* private mail */ .message-content-wrapper > li { /* we need this overwriting because we have no template file diff --git a/view/theme/frio/js/mod_group.js b/view/theme/frio/js/mod_group.js new file mode 100644 index 0000000000..bc513aca9e --- /dev/null +++ b/view/theme/frio/js/mod_group.js @@ -0,0 +1,88 @@ + +/** + * @file view/theme/frio/js/mod_group.js + * @brief The javascript for the group module + */ + + +$(document).ready(function() { + // Add an event listeners on buttons for switching the contact list view + $("body").on("click", ".group-list-switcher", function() { + switchGroupViewMode(this); + }); +}); + +/** + * @brief Change the group membership of the contacts and fetch the new grup list + * as html + * + * @param {int} gid The group ID + * @param {int} cid The contact ID + * @param {string} sec_token The security token + * + * @returns {undefined} + */ +function groupChangeMember(gid, cid, sec_token) { + $("#contact-entry-wrapper-" + cid).fadeTo("fast", 0.33); + $(".tooltip").tooltip("hide"); + $("body").css("cursor", "wait"); + + $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { + // Insert the new group member list + $("#group-update-wrapper").html(data); + + // Apply the actual gropu list view mode to the new + // group list html + var activeMode = $(".group-list-switcher.active"); + switchGroupViewMode(activeMode[0]); + + $("body").css("cursor", "auto"); + }); +} + +/** + * @brief Change the group list view mode + * + * @param {object} elm The button element of the view mode switcher + * @returns {undefined} + */ +function switchGroupViewMode(elm) { + // Remove the active class from group list switcher buttons + $(".group-list-switcher").removeClass("active"); + // And add it to the active button element + $(elm).addClass("active"); + + // Add or remove the css classes for the group list with regard to the active view mode + if (elm.id === "group-list-small") { + $("#contact-group-list > li").addClass("shortmode col-lg-6 col-md-6 col-sm-6 col-xs-12"); + } else { + $("#contact-group-list > li").removeClass("shortmode col-lg-6 col-md-6 col-sm-6 col-xs-12"); + } +} + +/** + * @brief Filter the group member list for contacts + * + * @returns {undefined} + */ +function filterList() { + // Declare variables + var input, filter, ul, li, a, i; + input = document.getElementById("contacts-search"); + filter = input.value.toUpperCase(); + li = document.querySelectorAll("#contact-group-list>li"); + + // Loop through all list items, and hide those who don't match the search query + for (i = 0; i < li.length; i++) { + // Get the heading element + var mh = li[i].getElementsByClassName("media-heading")[0]; + // The first child of the heading element should contain + // the text which we want to filter + a = mh.firstChild; + if (a.innerHTML.toUpperCase().indexOf(filter) > -1) { + li[i].style.display = ""; + } else { + li[i].style.display = "none"; + } + } +} diff --git a/view/theme/frio/php/default.php b/view/theme/frio/php/default.php index c56f63d9e3..ef7e413ad8 100644 --- a/view/theme/frio/php/default.php +++ b/view/theme/frio/php/default.php @@ -15,14 +15,14 @@ <?php if(x($page,'title')) echo $page['title'] ?> - + - + - - + - + diff --git a/view/theme/frio/templates/admin_aside.tpl b/view/theme/frio/templates/admin_aside.tpl new file mode 100644 index 0000000000..ec19ec92e9 --- /dev/null +++ b/view/theme/frio/templates/admin_aside.tpl @@ -0,0 +1,85 @@ + + +
+

{{$admtxt}}

+ + + + {{if $admin.update}} + + {{/if}} +
+ +{{if $admin.plugins_admin}} +
+

{{$plugadmtxt}}

+
    + {{foreach $admin.plugins_admin as $name => $item}} + + {{/foreach}} +
+
+{{/if}} + + + + diff --git a/view/theme/frio/templates/contact_template.tpl b/view/theme/frio/templates/contact_template.tpl index 36564cf337..e1c059eddf 100644 --- a/view/theme/frio/templates/contact_template.tpl +++ b/view/theme/frio/templates/contact_template.tpl @@ -1,11 +1,11 @@ -
+
{{* This is a wrapper for the contact picture and the dropdown menu with contact relating actions *}} -