]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #11141 from urbalazs/language-names
authorPhilipp <admin+Github@philipp.info>
Sun, 23 Jan 2022 19:55:40 +0000 (20:55 +0100)
committerGitHub <noreply@github.com>
Sun, 23 Jan 2022 19:55:40 +0000 (20:55 +0100)
Add native language names to language selector & fix config during install

279 files changed:
.woodpecker/.code_standards_check.yml
.woodpecker/.license_check.yml [new file with mode: 0644]
composer.lock
images/diaspora-banner.jpg [new file with mode: 0644]
images/friendica-banner.jpg [new file with mode: 0644]
include/api.php [deleted file]
mod/fbrowser.php
mod/pubsub.php
mod/pubsubhubbub.php
mods/license/license_php.template [new file with mode: 0644]
mods/release-list-include.txt
src/App.php
src/App/Arguments.php
src/App/Page.php
src/App/Router.php
src/BaseModule.php
src/Capabilities/ICanCreateFromTableRow.php
src/Capabilities/ICanCreateResponses.php
src/Capabilities/ICanHandleRequests.php
src/Collection/Api/Mastodon/Mentions.php
src/Console/Addon.php
src/Console/Test.php
src/Contact/LocalRelationship/Entity/LocalRelationship.php
src/Contact/LocalRelationship/Exception/LocalRelationshipPersistenceException.php
src/Content/Nav.php
src/Content/Text/BBCode.php
src/Content/Text/HTMLPurifier_URIScheme_cid.php
src/Core/ACL.php
src/Core/Cache/Exception/CachePersistenceException.php
src/Core/Cache/Exception/InvalidCacheDriverException.php
src/Core/Config/Exception/ConfigFileException.php
src/Core/Config/Exception/ConfigPersistenceException.php
src/Core/Config/Util/ValueConversion.php
src/Core/Lock/Exception/InvalidLockDriverException.php
src/Core/Lock/Exception/LockPersistenceException.php
src/Core/Logger/Exception/LogLevelException.php
src/Core/Logger/Exception/LoggerArgumentException.php
src/Core/Logger/Exception/LoggerException.php
src/Core/PConfig/Exception/PConfigPersistenceException.php
src/Core/Storage/Repository/StorageManager.php
src/Core/System.php
src/DI.php
src/Database/Database.php
src/Database/DatabaseException.php
src/Factory/Api/Friendica/Activities.php
src/Factory/Api/Friendica/Group.php [new file with mode: 0644]
src/Factory/Api/Friendica/Photo.php [new file with mode: 0644]
src/Factory/Api/Mastodon/Error.php
src/Factory/Api/Twitter/DirectMessage.php
src/Model/Contact.php
src/Model/Item.php
src/Model/Log/ParsedLogIterator.php
src/Model/Photo.php
src/Model/Profile.php
src/Model/User.php
src/Module/Admin/Blocklist/Server/Add.php
src/Module/Admin/Blocklist/Server/Index.php
src/Module/Api/ApiResponse.php
src/Module/Api/Friendica/Activity.php
src/Module/Api/Friendica/DirectMessages/Search.php
src/Module/Api/Friendica/Events/Index.php
src/Module/Api/Friendica/Group/Create.php [new file with mode: 0644]
src/Module/Api/Friendica/Group/Delete.php
src/Module/Api/Friendica/Group/Show.php [new file with mode: 0644]
src/Module/Api/Friendica/Group/Update.php
src/Module/Api/Friendica/Index.php [deleted file]
src/Module/Api/Friendica/Notification.php
src/Module/Api/Friendica/Notification/Seen.php
src/Module/Api/Friendica/Photo.php [new file with mode: 0644]
src/Module/Api/Friendica/Photo/Create.php [new file with mode: 0644]
src/Module/Api/Friendica/Photo/Lists.php [new file with mode: 0644]
src/Module/Api/Friendica/Photo/Update.php [new file with mode: 0644]
src/Module/Api/Friendica/Profile/Show.php
src/Module/Api/GNUSocial/Help/Test.php
src/Module/Api/GNUSocial/Statusnet/Conversation.php
src/Module/Api/Mastodon/Accounts/Followers.php
src/Module/Api/Mastodon/Accounts/Following.php
src/Module/Api/Mastodon/Media.php
src/Module/Api/Twitter/Account/RateLimitStatus.php
src/Module/Api/Twitter/Account/UpdateProfile.php
src/Module/Api/Twitter/Account/UpdateProfileImage.php [new file with mode: 0644]
src/Module/Api/Twitter/Account/VerifyCredentials.php
src/Module/Api/Twitter/Blocks/Ids.php
src/Module/Api/Twitter/Blocks/Lists.php
src/Module/Api/Twitter/DirectMessages/All.php
src/Module/Api/Twitter/DirectMessages/Conversation.php
src/Module/Api/Twitter/DirectMessages/Destroy.php
src/Module/Api/Twitter/DirectMessages/Inbox.php
src/Module/Api/Twitter/DirectMessages/NewDM.php
src/Module/Api/Twitter/DirectMessages/Sent.php
src/Module/Api/Twitter/DirectMessagesEndpoint.php
src/Module/Api/Twitter/Favorites.php
src/Module/Api/Twitter/Followers/Ids.php
src/Module/Api/Twitter/Followers/Lists.php
src/Module/Api/Twitter/Friends/Ids.php
src/Module/Api/Twitter/Friends/Lists.php
src/Module/Api/Twitter/Friendships/Incoming.php
src/Module/Api/Twitter/Friendships/Show.php
src/Module/Api/Twitter/Lists/Create.php [new file with mode: 0644]
src/Module/Api/Twitter/Lists/Destroy.php [new file with mode: 0644]
src/Module/Api/Twitter/Lists/Lists.php [new file with mode: 0644]
src/Module/Api/Twitter/Lists/Ownership.php [new file with mode: 0644]
src/Module/Api/Twitter/Lists/Statuses.php
src/Module/Api/Twitter/Lists/Update.php [new file with mode: 0644]
src/Module/Api/Twitter/Search/Tweets.php
src/Module/Api/Twitter/Statuses/Destroy.php
src/Module/Api/Twitter/Statuses/HomeTimeline.php
src/Module/Api/Twitter/Statuses/Mentions.php
src/Module/Api/Twitter/Statuses/NetworkPublicTimeline.php
src/Module/Api/Twitter/Statuses/PublicTimeline.php
src/Module/Api/Twitter/Statuses/Retweet.php
src/Module/Api/Twitter/Statuses/Show.php
src/Module/Api/Twitter/Statuses/UserTimeline.php
src/Module/BaseApi.php
src/Module/Contact/Advanced.php
src/Module/Contact/Contacts.php
src/Module/Contact/Conversations.php
src/Module/Contact/Poke.php
src/Module/Contact/Profile.php
src/Module/Contact/Revoke.php
src/Module/Conversation/Network.php
src/Module/Events/Json.php
src/Module/FollowConfirm.php
src/Module/PermissionTooltip.php
src/Module/Photo.php
src/Module/Response.php
src/Module/Search/Filed.php
src/Module/Settings/TwoFactor/Trusted.php
src/Module/Settings/UserExport.php
src/Module/Special/HTTPException.php
src/Module/Special/Options.php [new file with mode: 0644]
src/Module/Update/Network.php
src/Module/Update/Profile.php
src/Navigation/Notifications/Entity/Notification.php
src/Navigation/Notifications/Entity/Notify.php
src/Navigation/Notifications/Exception/NotificationCreationInterceptedException.php
src/Navigation/Notifications/Exception/UnexpectedNotificationTypeException.php
src/Navigation/Notifications/Factory/FormattedNotification.php
src/Navigation/Notifications/Factory/Notification.php
src/Navigation/Notifications/Factory/Notify.php
src/Navigation/Notifications/Repository/Notification.php
src/Navigation/Notifications/Repository/Notify.php
src/Network/HTTPClient/Capability/ICanHandleHttpResponses.php
src/Network/HTTPClient/Capability/ICanSendHttpRequests.php
src/Network/HTTPClient/Client/HttpClient.php
src/Network/HTTPClient/Client/HttpClientOptions.php
src/Network/HTTPClient/Factory/HttpClient.php
src/Network/HTTPClient/Response/GuzzleResponse.php
src/Object/Api/Friendica/Group.php [new file with mode: 0644]
src/Object/Api/Friendica/Notification.php
src/Object/Api/Twitter/DirectMessage.php
src/Object/Log/ParsedLogLine.php
src/Object/Post.php
src/Protocol/ActivityPub/Processor.php
src/Protocol/ActivityPub/Receiver.php
src/Protocol/Diaspora.php
src/Security/ExAuth.php
src/Security/OAuth1/OAuthConsumer.php
src/Security/OAuth1/OAuthDataStore.php
src/Security/OAuth1/OAuthException.php
src/Security/OAuth1/OAuthRequest.php
src/Security/OAuth1/OAuthToken.php
src/Security/OAuth1/OAuthUtil.php
src/Security/OAuth1/Signature/OAuthSignatureMethod.php
src/Security/OAuth1/Signature/OAuthSignatureMethod_HMAC_SHA1.php
src/Security/OAuth1/Signature/OAuthSignatureMethod_PLAINTEXT.php
src/Security/OAuth1/Signature/OAuthSignatureMethod_RSA_SHA1.php
src/Security/PermissionSet/Exception/PermissionSetNotFoundException.php
src/Security/PermissionSet/Exception/PermissionSetPersistenceException.php
src/Security/TwoFactor/Model/AppSpecificPassword.php
src/Util/HTTPSignature.php
src/Util/Images.php
src/Util/ParseUrl.php
src/Util/ReversedFileReader.php
src/Util/Router/FriendicaGroupCountBased.php [new file with mode: 0644]
src/Worker/Notifier.php
static/routes.config.php
tests/FixtureTest.php
tests/Util/AppDouble.php
tests/Util/AuthTestConfig.php
tests/Util/CollectionDouble.php
tests/Util/DateTimeFormatMockTrait.php [deleted file]
tests/Util/EmailerSpy.php
tests/Util/EntityDouble.php
tests/Util/HookMockTrait.php
tests/legacy/ApiTest.php [deleted file]
tests/phpunit.xml
tests/src/App/ArgumentsTest.php
tests/src/CollectionTest.php
tests/src/Contact/FriendSuggest/Factory/FriendSuggestTest.php
tests/src/Contact/Introduction/Factory/IntroductionTest.php
tests/src/Content/SmiliesTest.php
tests/src/Core/ACLTest.php [new file with mode: 0644]
tests/src/Core/Storage/Repository/StorageManagerTest.php
tests/src/Core/Worker/Repository/ProcessTest.php
tests/src/Database/DBATest.php
tests/src/Factory/Api/Twitter/ActivitiesTest.php
tests/src/Factory/Api/Twitter/DirectMessageTest.php
tests/src/Factory/Api/Twitter/StatusTest.php
tests/src/Factory/Api/Twitter/UserTest.php
tests/src/Model/Post/MediaTest.php
tests/src/Module/Api/ApiResponseTest.php
tests/src/Module/Api/Friendica/DirectMessages/SearchTest.php
tests/src/Module/Api/Friendica/Photo/DeleteTest.php
tests/src/Module/Api/Friendica/Photoalbum/DeleteTest.php
tests/src/Module/Api/Friendica/Photoalbum/UpdateTest.php
tests/src/Module/Api/GnuSocial/GnuSocial/ConfigTest.php
tests/src/Module/Api/GnuSocial/GnuSocial/VersionTest.php
tests/src/Module/Api/GnuSocial/Help/TestTest.php
tests/src/Module/Api/Mastodon/Accounts/StatusesTest.php
tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php
tests/src/Module/Api/Mastodon/ConversationsTest.php
tests/src/Module/Api/Mastodon/SearchTest.php
tests/src/Module/Api/Mastodon/Timelines/HomeTest.php
tests/src/Module/Api/Mastodon/Timelines/PublicTimelineTest.php
tests/src/Module/Api/Twitter/Account/RateLimitStatusTest.php
tests/src/Module/Api/Twitter/Account/UpdateProfileTest.php
tests/src/Module/Api/Twitter/Blocks/ListsTest.php
tests/src/Module/Api/Twitter/DirectMessages/AllTest.php
tests/src/Module/Api/Twitter/DirectMessages/ConversationTest.php
tests/src/Module/Api/Twitter/DirectMessages/DestroyTest.php
tests/src/Module/Api/Twitter/DirectMessages/InboxTest.php
tests/src/Module/Api/Twitter/DirectMessages/NewDMTest.php
tests/src/Module/Api/Twitter/DirectMessages/SentTest.php
tests/src/Module/Api/Twitter/Favorites/CreateTest.php
tests/src/Module/Api/Twitter/Favorites/DestroyTest.php
tests/src/Module/Api/Twitter/FavoritesTest.php
tests/src/Module/Api/Twitter/Followers/ListsTest.php
tests/src/Module/Api/Twitter/Friends/ListsTest.php
tests/src/Module/Api/Twitter/Friendships/IncomingTest.php
tests/src/Module/Api/Twitter/Lists/StatusesTest.php
tests/src/Module/Api/Twitter/Media/UploadTest.php
tests/src/Module/Api/Twitter/SavedSearchesTest.php
tests/src/Module/Api/Twitter/Statuses/DestroyTest.php
tests/src/Module/Api/Twitter/Statuses/MentionsTest.php
tests/src/Module/Api/Twitter/Statuses/NetworkPublicTimelineTest.php
tests/src/Module/Api/Twitter/Statuses/RetweetTest.php
tests/src/Module/Api/Twitter/Statuses/ShowTest.php
tests/src/Module/Api/Twitter/Statuses/UpdateTest.php
tests/src/Module/Api/Twitter/Statuses/UserTimelineTest.php
tests/src/Module/Api/Twitter/Users/LookupTest.php
tests/src/Module/Api/Twitter/Users/SearchTest.php
tests/src/Module/Api/Twitter/Users/ShowTest.php
tests/src/Module/BaseApiTest.php
tests/src/Module/NodeInfoTest.php
tests/src/Module/Special/OptionsTest.php [new file with mode: 0644]
tests/src/Network/HTTPClient/Client/HTTPClientTest.php
tests/src/Network/ProbeTest.php
tests/src/Profile/ProfileField/Entity/ProfileFieldTest.php
tests/src/Profile/ProfileField/Repository/ProfileFieldTest.php
tests/src/Protocol/ActivityPub/ProcessorTest.php
tests/src/Security/BasicAuthTest.php [new file with mode: 0644]
tests/src/Security/PermissionSet/Entity/PermissionSetTest.php
tests/src/Security/PermissionSet/Factory/PermissionSetTest.php
tests/src/Security/PermissionSet/Repository/PermissionSetTest.php
tests/src/Security/TwoFactor/Factory/TrustedBrowserTest.php
tests/src/Security/TwoFactor/Model/TrustedBrowserTest.php
tests/src/Util/ArraysTest.php
tests/src/Util/BasePathTest.php
tests/src/Util/BaseURLTest.php
tests/src/Util/DateTimeFormatTest.php
tests/src/Util/EMailerTest.php
tests/src/Util/ImagesTest.php
tests/src/Util/Router/FriendicaGroupCountBasedTest.php [new file with mode: 0644]
view/lang/C/messages.po
view/lang/de/messages.po
view/lang/de/strings.php
view/lang/hu/messages.po
view/lang/hu/strings.php
view/lang/ru/messages.po
view/lang/ru/strings.php
view/lang/sv/messages.po
view/lang/sv/strings.php
view/templates/contact/advanced.tpl
view/templates/shared_content.tpl
view/theme/frio/js/theme.js
view/theme/frio/templates/contact/advanced.tpl
view/theme/frio/templates/search_item.tpl
view/theme/frio/templates/wall_thread.tpl

index d348b41af5696ae99432db1b0d8fd11782146809..f81ab960f72b24487bb20ce6b0f8370d99ebc507 100644 (file)
@@ -29,5 +29,10 @@ pipeline:
   check:
     image: friendicaci/php-cs
     commands:
-      - export CHANGED_FILES="$(git diff --name-status ${CI_PREV_COMMIT_SHA}..${CI_COMMIT_SHA} | grep ^A | cut -f2)"
+      - if [ ! -z "$${CI_COMMIT_PULL_REQUEST}" ]; then
+          git fetch --no-tags origin ${CI_COMMIT_TARGET_BRANCH};
+          export CHANGED_FILES="$(git diff --name-status $(git merge-base FETCH_HEAD origin/${CI_COMMIT_TARGET_BRANCH})..${CI_COMMIT_SHA} | grep ^A | cut -f2)";
+        else
+          export CHANGED_FILES="$(git diff --name-status ${CI_COMMIT_SHA} | grep ^A | cut -f2)";
+        fi
       - /check-php-cs.sh
diff --git a/.woodpecker/.license_check.yml b/.woodpecker/.license_check.yml
new file mode 100644 (file)
index 0000000..7779865
--- /dev/null
@@ -0,0 +1,11 @@
+pipeline:
+  check:
+    image: friendicaci/php-cs
+    commands:
+      - if [ ! -z "$${CI_COMMIT_PULL_REQUEST}" ]; then
+          git fetch --no-tags origin ${CI_COMMIT_TARGET_BRANCH};
+          export CHANGED_FILES="$(git diff --name-status $(git merge-base FETCH_HEAD origin/${CI_COMMIT_TARGET_BRANCH})..${CI_COMMIT_SHA} | grep -i '\.php$' | cut -f2)";
+        else
+          export CHANGED_FILES="$(git diff --name-status ${CI_COMMIT_SHA} | grep -i '\.php$' | cut -f2)";
+        fi
+      - /check-license.sh
index 97bea93ec5c84c423bc84c40c9fe5c04dbf08a9b..c0e14fe5251f17c8fbb7fbda85da00d7c1f8409b 100644 (file)
         },
         {
             "name": "smarty/smarty",
-            "version": "v3.1.40",
+            "version": "v3.1.43",
             "source": {
                 "type": "git",
                 "url": "https://github.com/smarty-php/smarty.git",
-                "reference": "9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d"
+                "reference": "273f7e00fec034f6d61112552e9caf08d19565b7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/smarty-php/smarty/zipball/9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d",
-                "reference": "9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d",
+                "url": "https://api.github.com/repos/smarty-php/smarty/zipball/273f7e00fec034f6d61112552e9caf08d19565b7",
+                "reference": "273f7e00fec034f6d61112552e9caf08d19565b7",
                 "shasum": ""
             },
             "require": {
             "keywords": [
                 "templating"
             ],
-            "time": "2021-10-13T10:04:31+00:00"
+            "time": "2022-01-10T09:52:40+00:00"
         },
         {
             "name": "spomky-labs/base64url",
diff --git a/images/diaspora-banner.jpg b/images/diaspora-banner.jpg
new file mode 100644 (file)
index 0000000..b0df6a2
Binary files /dev/null and b/images/diaspora-banner.jpg differ
diff --git a/images/friendica-banner.jpg b/images/friendica-banner.jpg
new file mode 100644 (file)
index 0000000..8b1d0fb
Binary files /dev/null and b/images/friendica-banner.jpg differ
diff --git a/include/api.php b/include/api.php
deleted file mode 100644 (file)
index 0f1a076..0000000
+++ /dev/null
@@ -1,1159 +0,0 @@
-<?php
-/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- * Friendica implementation of statusnet/twitter API
- *
- * @file include/api.php
- * @todo Automatically detect if incoming data is HTML or BBCode
- */
-
-use Friendica\App;
-use Friendica\Core\Logger;
-use Friendica\Core\System;
-use Friendica\Database\DBA;
-use Friendica\DI;
-use Friendica\Model\Contact;
-use Friendica\Model\Group;
-use Friendica\Model\Item;
-use Friendica\Model\Photo;
-use Friendica\Model\Post;
-use Friendica\Model\Profile;
-use Friendica\Module\BaseApi;
-use Friendica\Network\HTTPException;
-use Friendica\Network\HTTPException\BadRequestException;
-use Friendica\Network\HTTPException\ForbiddenException;
-use Friendica\Network\HTTPException\InternalServerErrorException;
-use Friendica\Network\HTTPException\NotFoundException;
-use Friendica\Network\HTTPException\UnauthorizedException;
-use Friendica\Object\Image;
-use Friendica\Util\Images;
-use Friendica\Util\Strings;
-
-$API = [];
-
-/**
- * Register a function to be the endpoint for defined API path.
- *
- * @param string $path   API URL path, relative to DI::baseUrl()
- * @param string $func   Function name to call on path request
- */
-function api_register_func($path, $func)
-{
-       global $API;
-
-       $API[$path] = [
-               'func'   => $func,
-       ];
-
-       // Workaround for hotot
-       $path = str_replace("api/", "api/1.1/", $path);
-
-       $API[$path] = [
-               'func'   => $func,
-       ];
-}
-
-/**
- * Main API entry point
- *
- * Authenticate user, call registered API function, set HTTP headers
- *
- * @param App\Arguments $args The app arguments (optional, will retrieved by the DI-Container in case of missing)
- * @return string|array API call result
- * @throws Exception
- */
-function api_call($command, $extension)
-{
-       global $API;
-
-       Logger::info('Legacy API call', ['command' => $command, 'extension' => $extension]);
-
-       try {
-               foreach ($API as $p => $info) {
-                       if (strpos($command, $p) === 0) {
-                               Logger::debug(BaseApi::LOG_PREFIX . 'parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]);
-
-                               $stamp =  microtime(true);
-                               $return = call_user_func($info['func'], $extension);
-                               $duration = floatval(microtime(true) - $stamp);
-
-                               Logger::info(BaseApi::LOG_PREFIX . 'duration {duration}', ['module' => 'api', 'action' => 'call', 'duration' => round($duration, 2)]);
-
-                               DI::profiler()->saveLog(DI::logger(), BaseApi::LOG_PREFIX . 'performance');
-
-                               if (false === $return) {
-                                       /*
-                                               * api function returned false withour throw an
-                                               * exception. This should not happend, throw a 500
-                                               */
-                                       throw new InternalServerErrorException();
-                               }
-
-                               switch ($extension) {
-                                       case "xml":
-                                               header("Content-Type: text/xml");
-                                               break;
-                                       case "json":
-                                               header("Content-Type: application/json");
-                                               if (!empty($return)) {
-                                                       $json = json_encode(end($return));
-                                                       if (!empty($_GET['callback'])) {
-                                                               $json = $_GET['callback'] . "(" . $json . ")";
-                                                       }
-                                                       $return = $json;
-                                               }
-                                               break;
-                                       case "rss":
-                                               header("Content-Type: application/rss+xml");
-                                               $return  = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . $return;
-                                               break;
-                                       case "atom":
-                                               header("Content-Type: application/atom+xml");
-                                               $return = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . $return;
-                                               break;
-                               }
-                               return $return;
-                       }
-               }
-
-               Logger::warning(BaseApi::LOG_PREFIX . 'not implemented', ['module' => 'api', 'action' => 'call', 'query' => DI::args()->getQueryString()]);
-               throw new NotFoundException();
-       } catch (HTTPException $e) {
-               Logger::notice(BaseApi::LOG_PREFIX . 'got exception', ['module' => 'api', 'action' => 'call', 'query' => DI::args()->getQueryString(), 'error' => $e]);
-               DI::apiResponse()->error($e->getCode(), $e->getDescription(), $e->getMessage(), $extension);
-       }
-}
-
-/**
- *
- * @param string $acl_string
- * @param int    $uid
- * @return bool
- * @throws Exception
- */
-function check_acl_input($acl_string, $uid)
-{
-       if (empty($acl_string)) {
-               return false;
-       }
-
-       $contact_not_found = false;
-
-       // split <x><y><z> 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);
-               $condition = ['id' => $cid, 'uid' => $uid];
-               $contact_not_found |= !DBA::exists('contact', $condition);
-       }
-       return $contact_not_found;
-}
-
-/**
- * @param string  $mediatype
- * @param array   $media
- * @param string  $type
- * @param string  $album
- * @param string  $allow_cid
- * @param string  $deny_cid
- * @param string  $allow_gid
- * @param string  $deny_gid
- * @param string  $desc
- * @param integer $phototype
- * @param boolean $visibility
- * @param string  $photo_id
- * @param int     $uid
- * @return array
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws NotFoundException
- * @throws UnauthorizedException
- */
-function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $desc, $phototype, $visibility, $photo_id, $uid)
-{
-       $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'];
-               }
-       }
-
-       $filetype = Images::getMimeTypeBySource($src, $filename, $filetype);
-
-       logger::info(
-               "File upload src: " . $src . " - filename: " . $filename .
-               " - size: " . $filesize . " - type: " . $filetype);
-
-       // 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 = DI::config()->get('system', 'maximagesize');
-       if ($maximagesize && ($filesize > $maximagesize)) {
-               $formattedBytes = Strings::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);
-       $Image = new Image($imagedata, $filetype);
-       if (!$Image->isValid()) {
-               throw new InternalServerErrorException("unable to process image data");
-       }
-
-       // check orientation of image
-       $Image->orient($src);
-       @unlink($src);
-
-       // check max length of images on server
-       $max_length = DI::config()->get('system', 'max_image_length');
-       if ($max_length > 0) {
-               $Image->scaleDown($max_length);
-               logger::info("File upload: Scaling picture to new size " . $max_length);
-       }
-       $width = $Image->getWidth();
-       $height = $Image->getHeight();
-
-       // create a new resource-id if not already provided
-       $resource_id = ($photo_id == null) ? Photo::newResource() : $photo_id;
-
-       if ($mediatype == "photo") {
-               // upload normal image (scales 0, 1, 2)
-               logger::info("photo upload: starting new photo upload");
-
-               $r = Photo::store($Image, $uid, $visitor, $resource_id, $filename, $album, 0, Photo::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
-               if (!$r) {
-                       logger::notice("photo upload: image upload with scale 0 (original size) failed");
-               }
-               if ($width > 640 || $height > 640) {
-                       $Image->scaleDown(640);
-                       $r = Photo::store($Image, $uid, $visitor, $resource_id, $filename, $album, 1, Photo::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
-                       if (!$r) {
-                               logger::notice("photo upload: image upload with scale 1 (640x640) failed");
-                       }
-               }
-
-               if ($width > 320 || $height > 320) {
-                       $Image->scaleDown(320);
-                       $r = Photo::store($Image, $uid, $visitor, $resource_id, $filename, $album, 2, Photo::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
-                       if (!$r) {
-                               logger::notice("photo upload: image upload with scale 2 (320x320) failed");
-                       }
-               }
-               logger::info("photo upload: new photo upload ended");
-       } elseif ($mediatype == "profileimage") {
-               // upload profile image (scales 4, 5, 6)
-               logger::info("photo upload: starting new profile image upload");
-
-               if ($width > 300 || $height > 300) {
-                       $Image->scaleDown(300);
-                       $r = Photo::store($Image, $uid, $visitor, $resource_id, $filename, $album, 4, $phototype, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
-                       if (!$r) {
-                               logger::notice("photo upload: profile image upload with scale 4 (300x300) failed");
-                       }
-               }
-
-               if ($width > 80 || $height > 80) {
-                       $Image->scaleDown(80);
-                       $r = Photo::store($Image, $uid, $visitor, $resource_id, $filename, $album, 5, $phototype, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
-                       if (!$r) {
-                               logger::notice("photo upload: profile image upload with scale 5 (80x80) failed");
-                       }
-               }
-
-               if ($width > 48 || $height > 48) {
-                       $Image->scaleDown(48);
-                       $r = Photo::store($Image, $uid, $visitor, $resource_id, $filename, $album, 6, $phototype, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
-                       if (!$r) {
-                               logger::notice("photo upload: profile image upload with scale 6 (48x48) failed");
-                       }
-               }
-               $Image->__destruct();
-               logger::info("photo upload: new profile image upload ended");
-       }
-
-       if (!empty($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($resource_id, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility, $uid);
-               }
-               // 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, $resource_id, $uid);
-       } else {
-               throw new InternalServerErrorException("image upload failed");
-               DI::page()->exit(DI::apiResponse());
-       }
-}
-
-/**
- *
- * @param string  $hash
- * @param string  $allow_cid
- * @param string  $deny_cid
- * @param string  $allow_gid
- * @param string  $deny_gid
- * @param string  $filetype
- * @param boolean $visibility
- * @param int     $uid
- * @throws InternalServerErrorException
- */
-function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility, $uid)
-{
-       // get data about the api authenticated user
-       $uri = Item::newURI(intval($uid));
-       $owner_record = DBA::selectFirst('contact', [], ['uid' => $uid, 'self' => true]);
-
-       $arr = [];
-       $arr['guid']          = System::createUUID();
-       $arr['uid']           = $uid;
-       $arr['uri']           = $uri;
-       $arr['post-type']     = Item::PT_IMAGE;
-       $arr['wall']          = 1;
-       $arr['resource-id']   = $hash;
-       $arr['contact-id']    = $owner_record['id'];
-       $arr['owner-name']    = $owner_record['name'];
-       $arr['owner-link']    = $owner_record['url'];
-       $arr['owner-avatar']  = $owner_record['thumb'];
-       $arr['author-name']   = $owner_record['name'];
-       $arr['author-link']   = $owner_record['url'];
-       $arr['author-avatar'] = $owner_record['thumb'];
-       $arr['title']         = '';
-       $arr['allow_cid']     = $allow_cid;
-       $arr['allow_gid']     = $allow_gid;
-       $arr['deny_cid']      = $deny_cid;
-       $arr['deny_gid']      = $deny_gid;
-       $arr['visible']       = $visibility;
-       $arr['origin']        = 1;
-
-       $typetoext = Images::supportedTypes();
-
-       // adds link to the thumbnail scale photo
-       $arr['body'] = '[url=' . DI::baseUrl() . '/photos/' . $owner_record['nick'] . '/image/' . $hash . ']'
-                               . '[img]' . DI::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::insert($arr);
-}
-
-/**
- *
- * @param string $type
- * @param int    $scale
- * @param string $photo_id
- *
- * @return array
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws NotFoundException
- * @throws UnauthorizedException
- */
-function prepare_photo_data($type, $scale, $photo_id, $uid)
-{
-       $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 = DBA::toArray(DBA::p(
-               "SELECT $data_sql `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` = ? AND `resource-id` = ? $scale_sql GROUP BY
-                                  `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`,
-                                  `type`, `height`, `width`, `datasize`, `profile`, `allow_cid`, `deny_cid`, `allow_gid`, `deny_gid`",
-               $uid,
-               $photo_id
-       ));
-
-       $typetoext = [
-               'image/jpeg' => 'jpg',
-               'image/png' => 'png',
-               'image/gif' => 'gif'
-       ];
-
-       // prepare output data for photo
-       if (DBA::isResult($r)) {
-               $data = ['photo' => $r[0]];
-               $data['photo']['id'] = $data['photo']['resource-id'];
-               if ($scale !== false) {
-                       $data['photo']['data'] = base64_encode($data['photo']['data']);
-               } else {
-                       unset($data['photo']['datasize']); //needed only with scale param
-               }
-               if ($type == "xml") {
-                       $data['photo']['links'] = [];
-                       for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) {
-                               $data['photo']['links'][$k . ":link"]["@attributes"] = ["type" => $data['photo']['type'],
-                                                                               "scale" => $k,
-                                                                               "href" => DI::baseUrl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]];
-                       }
-               } else {
-                       $data['photo']['link'] = [];
-                       // 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'][$i] = DI::baseUrl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']];
-                               $i++;
-                       }
-               }
-               unset($data['photo']['resource-id']);
-               unset($data['photo']['minscale']);
-               unset($data['photo']['maxscale']);
-       } else {
-               throw new NotFoundException();
-       }
-
-       // retrieve item element for getting activities (like, dislike etc.) related to photo
-       $condition = ['uid' => $uid, 'resource-id' => $photo_id];
-       $item = Post::selectFirst(['id', 'uid', 'uri', 'uri-id', 'parent', 'allow_cid', 'deny_cid', 'allow_gid', 'deny_gid'], $condition);
-       if (!DBA::isResult($item)) {
-               throw new NotFoundException('Photo-related item not found.');
-       }
-
-       $data['photo']['friendica_activities'] = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid'], $type);
-
-       // retrieve comments on photo
-       $condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)",
-               $item['parent'], $uid, GRAVITY_PARENT, GRAVITY_COMMENT];
-
-       $statuses = Post::selectForUser($uid, [], $condition);
-
-       // prepare output of comments
-       $commentData = [];
-       while ($status = DBA::fetch($statuses)) {
-               $commentData[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'])->toArray();
-       }
-       DBA::close($statuses);
-
-       $comments = [];
-       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['allow_cid'] ||
-               $data['photo']['deny_cid'] != $item['deny_cid'] ||
-               $data['photo']['allow_gid'] != $item['allow_gid'] ||
-               $data['photo']['deny_gid'] != $item['deny_gid'];
-       $data['photo']['rights_mismatch'] = $rights_mismatch;
-
-       return $data;
-}
-
-/**
- * Add a new group to the database.
- *
- * @param  string $name  Group name
- * @param  int    $uid   User ID
- * @param  array  $users List of users to add to the group
- *
- * @return array
- * @throws BadRequestException
- */
-function group_create($name, $uid, $users = [])
-{
-       // error if no name specified
-       if ($name == "") {
-               throw new BadRequestException('group name not specified');
-       }
-
-       // error message if specified group name already exists
-       if (DBA::exists('group', ['uid' => $uid, 'name' => $name, 'deleted' => false])) {
-               throw new BadRequestException('group name already exists');
-       }
-
-       // Check if the group needs to be reactivated
-       if (DBA::exists('group', ['uid' => $uid, 'name' => $name, 'deleted' => true])) {
-               $reactivate_group = true;
-       }
-
-       // create group
-       $ret = Group::create($uid, $name);
-       if ($ret) {
-               $gid = Group::getIdByName($uid, $name);
-       } else {
-               throw new BadRequestException('other API error');
-       }
-
-       // add members
-       $erroraddinguser = false;
-       $errorusers = [];
-       foreach ($users as $user) {
-               $cid = $user['cid'];
-               if (DBA::exists('contact', ['id' => $cid, 'uid' => $uid])) {
-                       Group::addMember($gid, $cid);
-               } else {
-                       $erroraddinguser = true;
-                       $errorusers[] = $cid;
-               }
-       }
-
-       // return success message incl. missing users in array
-       $status = ($erroraddinguser ? "missing user" : ((isset($reactivate_group) && $reactivate_group) ? "reactivated" : "ok"));
-
-       return ['success' => true, 'gid' => $gid, 'name' => $name, 'status' => $status, 'wrong users' => $errorusers];
-}
-
-/**
- * TWITTER API
- */
-
-/**
- * Returns all lists the user subscribes to.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-list
- */
-function api_lists_list($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
-       $ret = [];
-       /// @TODO $ret is not filled here?
-       return DI::apiResponse()->formatData('lists', $type, ["lists_list" => $ret]);
-}
-
-api_register_func('api/lists/list', 'api_lists_list', true);
-api_register_func('api/lists/subscriptions', 'api_lists_list', true);
-
-/**
- * Returns all groups the user owns.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships
- */
-function api_lists_ownerships($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
-       $uid = BaseApi::getCurrentUserID();
-
-       // params
-       $user_info = DI::twitterUser()->createFromUserId($uid, true)->toArray();
-
-       $groups = DBA::select('group', [], ['deleted' => 0, 'uid' => $uid]);
-
-       // loop through all groups
-       $lists = [];
-       foreach ($groups as $group) {
-               if ($group['visible']) {
-                       $mode = 'public';
-               } else {
-                       $mode = 'private';
-               }
-               $lists[] = [
-                       'name' => $group['name'],
-                       'id' => intval($group['id']),
-                       'id_str' => (string) $group['id'],
-                       'user' => $user_info,
-                       'mode' => $mode
-               ];
-       }
-       return DI::apiResponse()->formatData("lists", $type, ['lists' => ['lists' => $lists]]);
-}
-
-api_register_func('api/lists/ownerships', 'api_lists_ownerships', true);
-
-/**
- * list all photos of the authenticated user
- *
- * @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
- * @return string|array
- * @throws ForbiddenException
- * @throws InternalServerErrorException
- */
-function api_fr_photos_list($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
-       $uid = BaseApi::getCurrentUserID();
-
-       $r = DBA::toArray(DBA::p(
-               "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` = ? AND NOT `photo-type` IN (?, ?) GROUP BY `resource-id`, `album`, `filename`, `type`",
-               $uid, Photo::CONTACT_AVATAR, Photo::CONTACT_BANNER
-       ));
-       $typetoext = [
-               'image/jpeg' => 'jpg',
-               'image/png' => 'png',
-               'image/gif' => 'gif'
-       ];
-       $data = ['photo'=>[]];
-       if (DBA::isResult($r)) {
-               foreach ($r as $rr) {
-                       $photo = [];
-                       $photo['id'] = $rr['resource-id'];
-                       $photo['album'] = $rr['album'];
-                       $photo['filename'] = $rr['filename'];
-                       $photo['type'] = $rr['type'];
-                       $thumb = DI::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'][] = ["@attributes" => $photo, "1" => $thumb];
-                       } else {
-                               $photo['thumb'] = $thumb;
-                               $data['photo'][] = $photo;
-                       }
-               }
-       }
-       return DI::apiResponse()->formatData("photos", $type, $data);
-}
-
-api_register_func('api/friendica/photos/list', 'api_fr_photos_list', true);
-
-/**
- * upload a new photo or change an existing photo
- *
- * @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
- * @return string|array
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws NotFoundException
- */
-function api_fr_photo_create_update($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
-       $uid = BaseApi::getCurrentUserID();
-
-       // input params
-       $photo_id  = $_REQUEST['photo_id']  ?? null;
-       $desc      = $_REQUEST['desc']      ?? null;
-       $album     = $_REQUEST['album']     ?? null;
-       $album_new = $_REQUEST['album_new'] ?? null;
-       $allow_cid = $_REQUEST['allow_cid'] ?? null;
-       $deny_cid  = $_REQUEST['deny_cid' ] ?? null;
-       $allow_gid = $_REQUEST['allow_gid'] ?? null;
-       $deny_gid  = $_REQUEST['deny_gid' ] ?? null;
-       // Pictures uploaded via API never get posted as a visible status
-       // See https://github.com/friendica/friendica/issues/10990
-       $visibility = 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 (empty($_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 databasei
-               if (!Photo::exists(['resource-id' => $photo_id, 'uid' => $uid, 'album' => $album])) {
-                       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, $uid);
-       $acl_input_error |= check_acl_input($deny_cid, $uid);
-       $acl_input_error |= check_acl_input($allow_gid, $uid);
-       $acl_input_error |= check_acl_input($deny_gid, $uid);
-       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, Photo::DEFAULT, $visibility, null, $uid);
-
-               // return success of updating or error message
-               if (!is_null($data)) {
-                       return DI::apiResponse()->formatData("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") {
-               $updated_fields = [];
-
-               if (!is_null($desc)) {
-                       $updated_fields['desc'] = $desc;
-               }
-
-               if (!is_null($album_new)) {
-                       $updated_fields['album'] = $album_new;
-               }
-
-               if (!is_null($allow_cid)) {
-                       $allow_cid = trim($allow_cid);
-                       $updated_fields['allow_cid'] = $allow_cid;
-               }
-
-               if (!is_null($deny_cid)) {
-                       $deny_cid = trim($deny_cid);
-                       $updated_fields['deny_cid'] = $deny_cid;
-               }
-
-               if (!is_null($allow_gid)) {
-                       $allow_gid = trim($allow_gid);
-                       $updated_fields['allow_gid'] = $allow_gid;
-               }
-
-               if (!is_null($deny_gid)) {
-                       $deny_gid = trim($deny_gid);
-                       $updated_fields['deny_gid'] = $deny_gid;
-               }
-
-               $result = false;
-               if (count($updated_fields) > 0) {
-                       $nothingtodo = false;
-                       $result = Photo::update($updated_fields, ['uid' => $uid, 'resource-id' => $photo_id, 'album' => $album]);
-               } else {
-                       $nothingtodo = true;
-               }
-
-               if (!empty($_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, Photo::DEFAULT, $visibility, $photo_id, $uid);
-                       if (!is_null($data)) {
-                               return DI::apiResponse()->formatData("photo_update", $type, $data);
-                       }
-               }
-
-               // return success of updating or error message
-               if ($result) {
-                       $answer = ['result' => 'updated', 'message' => 'Image id `' . $photo_id . '` has been updated.'];
-                       return DI::apiResponse()->formatData("photo_update", $type, ['$result' => $answer]);
-               } else {
-                       if ($nothingtodo) {
-                               $answer = ['result' => 'cancelled', 'message' => 'Nothing to update for image id `' . $photo_id . '`.'];
-                               return DI::apiResponse()->formatData("photo_update", $type, ['$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");
-}
-
-api_register_func('api/friendica/photo/create', 'api_fr_photo_create_update', true);
-api_register_func('api/friendica/photo/update', 'api_fr_photo_create_update', true);
-
-/**
- * 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|array
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws InternalServerErrorException
- * @throws NotFoundException
- */
-function api_fr_photo_detail($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
-       $uid = BaseApi::getCurrentUserID();
-
-       if (empty($_REQUEST['photo_id'])) {
-               throw new BadRequestException("No photo id.");
-       }
-
-       $scale = (!empty($_REQUEST['scale']) ? intval($_REQUEST['scale']) : false);
-       $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, $uid);
-
-       return DI::apiResponse()->formatData("photo_detail", $type, $data);
-}
-
-api_register_func('api/friendica/photo', 'api_fr_photo_detail', true);
-
-/**
- * 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|array
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws NotFoundException
- * @see   https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image
- */
-function api_account_update_profile_image($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
-       $uid = BaseApi::getCurrentUserID();
-
-       // input params
-       $profile_id = $_REQUEST['profile_id'] ?? 0;
-
-       // error if image data is missing
-       if (empty($_FILES['image'])) {
-               throw new BadRequestException("no media data submitted");
-       }
-
-       // check if specified profile id is valid
-       if ($profile_id != 0) {
-               $profile = DBA::selectFirst('profile', ['is-default'], ['uid' => $uid, 'id' => $profile_id]);
-               // error message if specified profile id is not in database
-               if (!DBA::isResult($profile)) {
-                       throw new BadRequestException("profile_id not available");
-               }
-               $is_default_profile = $profile['is-default'];
-       } else {
-               $is_default_profile = 1;
-       }
-
-       // get mediadata from image or media (Twitter call api/account/update_profile_image provides image)
-       $media = null;
-       if (!empty($_FILES['image'])) {
-               $media = $_FILES['image'];
-       } elseif (!empty($_FILES['media'])) {
-               $media = $_FILES['media'];
-       }
-       // save new profile image
-       $data = save_media_to_database("profileimage", $media, $type, DI::l10n()->t(Photo::PROFILE_PHOTOS), "", "", "", "", "", Photo::USER_AVATAR, false, null, $uid);
-
-       // 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";
-       } else {
-               throw new InternalServerErrorException('Unsupported filetype');
-       }
-
-       // change specified profile or all profiles to the new resource-id
-       if ($is_default_profile) {
-               $condition = ["`profile` AND `resource-id` != ? AND `uid` = ?", $data['photo']['id'], $uid];
-               Photo::update(['profile' => false, 'photo-type' => Photo::DEFAULT], $condition);
-       } else {
-               $fields = ['photo' => DI::baseUrl() . '/photo/' . $data['photo']['id'] . '-4.' . $fileext,
-                       'thumb' => DI::baseUrl() . '/photo/' . $data['photo']['id'] . '-5.' . $fileext];
-               DBA::update('profile', $fields, ['id' => $_REQUEST['profile'], 'uid' => $uid]);
-       }
-
-       Contact::updateSelfFromUserID($uid, true);
-
-       // Update global directory in background
-       Profile::publishUpdate($uid);
-
-       // output for client
-       if ($data) {
-               $skip_status = $_REQUEST['skip_status'] ?? false;
-
-               $user_info = DI::twitterUser()->createFromUserId($uid, $skip_status)->toArray();
-
-               // "verified" isn't used here in the standard
-               unset($user_info["verified"]);
-
-               // "uid" is only needed for some internal stuff, so remove it from here
-               unset($user_info['uid']);
-
-               return DI::apiResponse()->formatData("user", $type, ['user' => $user_info]);
-       } else {
-               // SaveMediaToDatabase failed for some reason
-               throw new InternalServerErrorException("image upload failed");
-       }
-}
-
-api_register_func('api/account/update_profile_image', 'api_account_update_profile_image', true);
-
-/**
- * Return all or a specified group of the user with the containing contacts.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- */
-function api_friendica_group_show($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
-       $uid = BaseApi::getCurrentUserID();
-
-       // params
-       $gid = $_REQUEST['gid'] ?? 0;
-
-       // get data of the specified group id or all groups if not specified
-       if ($gid != 0) {
-               $groups = DBA::selectToArray('group', [], ['deleted' => false, 'uid' => $uid, 'id' => $gid]);
-
-               // error message if specified gid is not in database
-               if (!DBA::isResult($groups)) {
-                       throw new BadRequestException("gid not available");
-               }
-       } else {
-               $groups = DBA::selectToArray('group', [], ['deleted' => false, 'uid' => $uid]);
-       }
-
-       // loop through all groups and retrieve all members for adding data in the user array
-       $grps = [];
-       foreach ($groups as $rr) {
-               $members = Contact\Group::getById($rr['id']);
-               $users = [];
-
-               if ($type == "xml") {
-                       $user_element = "users";
-                       $k = 0;
-                       foreach ($members as $member) {
-                               $user = DI::twitterUser()->createFromContactId($member['contact-id'], $uid, true)->toArray();
-                               $users[$k++.":user"] = $user;
-                       }
-               } else {
-                       $user_element = "user";
-                       foreach ($members as $member) {
-                               $user = DI::twitterUser()->createFromContactId($member['contact-id'], $uid, true)->toArray();
-                               $users[] = $user;
-                       }
-               }
-               $grps[] = ['name' => $rr['name'], 'gid' => $rr['id'], $user_element => $users];
-       }
-       return DI::apiResponse()->formatData("groups", $type, ['group' => $grps]);
-}
-
-api_register_func('api/friendica/group_show', 'api_friendica_group_show', true);
-
-/**
- * Delete a group.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-destroy
- */
-function api_lists_destroy($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
-       $uid = BaseApi::getCurrentUserID();
-
-       // params
-       $gid = $_REQUEST['list_id'] ?? 0;
-
-       // error if no gid specified
-       if ($gid == 0) {
-               throw new BadRequestException('gid not specified');
-       }
-
-       // get data of the specified group id
-       $group = DBA::selectFirst('group', [], ['uid' => $uid, 'id' => $gid]);
-       // error message if specified gid is not in database
-       if (!$group) {
-               throw new BadRequestException('gid not available');
-       }
-
-       if (Group::remove($gid)) {
-               $list = [
-                       'name' => $group['name'],
-                       'id' => intval($gid),
-                       'id_str' => (string) $gid,
-                       'user' => DI::twitterUser()->createFromUserId($uid, true)->toArray()
-               ];
-
-               return DI::apiResponse()->formatData("lists", $type, ['lists' => $list]);
-       }
-}
-
-api_register_func('api/lists/destroy', 'api_lists_destroy', true);
-
-/**
- * Create the specified group with the posted array of contacts.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- */
-function api_friendica_group_create($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
-       $uid = BaseApi::getCurrentUserID();
-
-       // params
-       $name = $_REQUEST['name'] ?? '';
-       $json = json_decode($_POST['json'], true);
-       $users = $json['user'];
-
-       $success = group_create($name, $uid, $users);
-
-       return DI::apiResponse()->formatData("group_create", $type, ['result' => $success]);
-}
-
-api_register_func('api/friendica/group_create', 'api_friendica_group_create', true);
-
-/**
- * Create a new group.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-create
- */
-function api_lists_create($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
-       $uid = BaseApi::getCurrentUserID();
-
-       // params
-       $name = $_REQUEST['name'] ?? '';
-
-       $success = group_create($name, $uid);
-       if ($success['success']) {
-               $grp = [
-                       'name' => $success['name'],
-                       'id' => intval($success['gid']),
-                       'id_str' => (string) $success['gid'],
-                       'user' => DI::twitterUser()->createFromUserId($uid, true)->toArray()
-               ];
-
-               return DI::apiResponse()->formatData("lists", $type, ['lists' => $grp]);
-       }
-}
-
-api_register_func('api/lists/create', 'api_lists_create', true);
-
-/**
- * Update information about a group.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-update
- */
-function api_lists_update($type)
-{
-       BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
-       $uid = BaseApi::getCurrentUserID();
-
-       // params
-       $gid = $_REQUEST['list_id'] ?? 0;
-       $name = $_REQUEST['name'] ?? '';
-
-       // error if no gid specified
-       if ($gid == 0) {
-               throw new BadRequestException('gid not specified');
-       }
-
-       // get data of the specified group id
-       $group = DBA::selectFirst('group', [], ['uid' => $uid, 'id' => $gid]);
-       // error message if specified gid is not in database
-       if (!$group) {
-               throw new BadRequestException('gid not available');
-       }
-
-       if (Group::update($gid, $name)) {
-               $list = [
-                       'name' => $name,
-                       'id' => intval($gid),
-                       'id_str' => (string) $gid,
-                       'user' => DI::twitterUser()->createFromUserId($uid, true)->toArray()
-               ];
-
-               return DI::apiResponse()->formatData("lists", $type, ['lists' => $list]);
-       }
-}
-
-api_register_func('api/lists/update', 'api_lists_update', true);
index 9bd7793e4269811798075ee876ff04cf27f57455..d918021cf2d6e880c6151c337cdee6e2d58d4979 100644 (file)
@@ -1,5 +1,22 @@
 <?php
 /**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  * @package            Friendica\modules
  * @subpackage FileBrowser
  * @author             Fabio Comuni <fabrixxm@kirgroup.com>
index 7d5c70a54cd682251dce2a9d8eff069ef83a22b6..e07b15583c8eb5c3926e5b9a811d3234e54295f4 100644 (file)
@@ -53,7 +53,7 @@ function pubsub_init(App $a)
        $nick       = ((DI::args()->getArgc() > 1) ? trim(DI::args()->getArgv()[1])   : '');
        $contact_id = ((DI::args()->getArgc() > 2) ? intval(DI::args()->getArgv()[2]) : 0 );
 
-       if ($_SERVER['REQUEST_METHOD'] === 'GET') {
+       if (DI::args()->getMethod() === App\Router::GET) {
                $hub_mode      = trim($_GET['hub_mode']         ?? '');
                $hub_topic     = trim($_GET['hub_topic']        ?? '');
                $hub_challenge = trim($_GET['hub_challenge']    ?? '');
index 583167bbb036ac2d0e60642e85b27ae17e0d4c32..361cb0a597e1cda7bbfbe8a0bab0f06ab0a53bbe 100644 (file)
@@ -43,7 +43,7 @@ function pubsubhubbub_init(App $a) {
        // [hub_secret] => af11...
        // [hub_topic] => http://friendica.local/dfrn_poll/sazius
 
-       if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+       if (DI::args()->getMethod() === App\Router::POST) {
                $hub_mode         = $_POST['hub_mode']         ?? '';
                $hub_callback     = $_POST['hub_callback']     ?? '';
                $hub_verify_token = $_POST['hub_verify_token'] ?? '';
diff --git a/mods/license/license_php.template b/mods/license/license_php.template
new file mode 100644 (file)
index 0000000..f77cf62
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-%%YEAR%%, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
index 2c788d9d44a9e7cfa4e9da40e944f56934aa5247..24eff91c2888d74975e77aafc931a19966a3cbf8 100644 (file)
@@ -11,7 +11,6 @@ config/addon-sample.config.php
 config/local-sample.config.php
 doc/
 images/
-include/
 mod/
 mods/
 spec/
index e046a0ec576cd2ef1be6e70553cee0132f9feb03..f7c929820d308640f7b3156d684b58d997417d70 100644 (file)
@@ -580,7 +580,7 @@ class App
                try {
                        // Missing DB connection: ERROR
                        if ($this->mode->has(App\Mode::LOCALCONFIGPRESENT) && !$this->mode->has(App\Mode::DBAVAILABLE)) {
-                               throw new HTTPException\InternalServerErrorException('Apologies but the website is unavailable at the moment.');
+                               throw new HTTPException\InternalServerErrorException($this->l10n->t('Apologies but the website is unavailable at the moment.'));
                        }
 
                        if (!$this->mode->isInstall()) {
index ef1ed928563ea72665f17138c2776d0c012ea8d9..4d386fc2551d2c5138e80db4e4fca53872fbcd7d 100644 (file)
@@ -52,14 +52,19 @@ class Arguments
         * @var int The count of arguments
         */
        private $argc;
+       /**
+        * @var string The used HTTP method
+        */
+       private $method;
 
-       public function __construct(string $queryString = '', string $command = '', string $moduleName = '', array $argv = [], int $argc = 0)
+       public function __construct(string $queryString = '', string $command = '', string $moduleName = '', array $argv = [], int $argc = 0, string $method = Router::GET)
        {
                $this->queryString = $queryString;
                $this->command     = $command;
                $this->moduleName  = $moduleName;
                $this->argv        = $argv;
                $this->argc        = $argc;
+               $this->method      = $method;
        }
 
        /**
@@ -94,6 +99,14 @@ class Arguments
                return $this->argv;
        }
 
+       /**
+        * @return string The used HTTP method
+        */
+       public function getMethod()
+       {
+               return $this->method;
+       }
+
        /**
         * @return int The count of arguments of this call
         */
@@ -199,6 +212,8 @@ class Arguments
                        $module = "login";
                }
 
-               return new Arguments($queryString, $command, $module, $argv, $argc);
+               $httpMethod = in_array($server['REQUEST_METHOD'] ?? '', Router::ALLOWED_METHODS) ? $server['REQUEST_METHOD'] : Router::GET;
+
+               return new Arguments($queryString, $command, $module, $argv, $argc, $httpMethod);
        }
 }
index be5f8dc1e660664cd5d857d1ccbdb940509f4657..0d7b1643635cff55cab6248a8ff96c464f245fb8 100644 (file)
@@ -378,6 +378,12 @@ class Page implements ArrayAccess
         */
        public function exit(ResponseInterface $response)
        {
+               header(sprintf("HTTP/%s %s %s",
+                       $response->getProtocolVersion(),
+                       $response->getStatusCode(),
+                       $response->getReasonPhrase())
+               );
+
                foreach ($response->getHeaders() as $key => $header) {
                        if (is_array($header)) {
                                $header_str = implode(',', $header);
index bbc3dd348e2f585b535782bcf30c21dc78d950fb..6e390a84d9b145f4fcf76a86b1b30ff22001dc9c 100644 (file)
@@ -37,10 +37,11 @@ use Friendica\Core\Lock\Capability\ICanLock;
 use Friendica\LegacyModule;
 use Friendica\Module\HTTPException\MethodNotAllowed;
 use Friendica\Module\HTTPException\PageNotFound;
+use Friendica\Module\Special\Options;
 use Friendica\Network\HTTPException;
 use Friendica\Network\HTTPException\MethodNotAllowedException;
-use Friendica\Network\HTTPException\NoContentException;
 use Friendica\Network\HTTPException\NotFoundException;
+use Friendica\Util\Router\FriendicaGroupCountBased;
 use Psr\Log\LoggerInterface;
 
 /**
@@ -74,11 +75,6 @@ class Router
        /** @var RouteCollector */
        protected $routeCollector;
 
-       /**
-        * @var string The HTTP method
-        */
-       private $httpMethod;
-
        /**
         * @var array Module parameters
         */
@@ -128,31 +124,18 @@ class Router
         */
        public function __construct(array $server, string $baseRoutesFilepath, L10n $l10n, ICanCache $cache, ICanLock $lock, IManageConfigValues $config, Arguments $args, LoggerInterface $logger, Dice $dice, RouteCollector $routeCollector = null)
        {
-               $this->baseRoutesFilepath = $baseRoutesFilepath;
-               $this->l10n = $l10n;
-               $this->cache = $cache;
-               $this->lock = $lock;
-               $this->args = $args;
-               $this->config = $config;
-               $this->dice = $dice;
-               $this->server = $server;
-               $this->logger = $logger;
+               $this->baseRoutesFilepath      = $baseRoutesFilepath;
+               $this->l10n                    = $l10n;
+               $this->cache                   = $cache;
+               $this->lock                    = $lock;
+               $this->args                    = $args;
+               $this->config                  = $config;
+               $this->dice                    = $dice;
+               $this->server                  = $server;
+               $this->logger                  = $logger;
                $this->dice_profiler_threshold = $config->get('system', 'dice_profiler_threshold', 0);
 
-               $httpMethod = $this->server['REQUEST_METHOD'] ?? self::GET;
-
-               // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS
-               // @todo Check allowed methods per requested path
-               if ($httpMethod === static::OPTIONS) {
-                       header('Allow: ' . implode(',', Router::ALLOWED_METHODS));
-                       throw new NoContentException();
-               }
-
-               $this->httpMethod = in_array($httpMethod, self::ALLOWED_METHODS) ? $httpMethod : self::GET;
-
-               $this->routeCollector = isset($routeCollector) ?
-                       $routeCollector :
-                       new RouteCollector(new Std(), new GroupCountBased());
+               $this->routeCollector = $routeCollector ?? new RouteCollector(new Std(), new GroupCountBased());
 
                if ($this->baseRoutesFilepath && !file_exists($this->baseRoutesFilepath)) {
                        throw new HTTPException\InternalServerErrorException('Routes file path does\'n exist.');
@@ -171,9 +154,7 @@ class Router
         */
        public function loadRoutes(array $routes)
        {
-               $routeCollector = (isset($this->routeCollector) ?
-                       $this->routeCollector :
-                       new RouteCollector(new Std(), new GroupCountBased()));
+               $routeCollector = ($this->routeCollector ?? new RouteCollector(new Std(), new GroupCountBased()));
 
                $this->addRoutes($routeCollector, $routes);
 
@@ -191,7 +172,10 @@ class Router
                        if ($this->isGroup($config)) {
                                $this->addGroup($route, $config, $routeCollector);
                        } elseif ($this->isRoute($config)) {
-                               $routeCollector->addRoute($config[1], $route, $config[0]);
+                               // Always add the OPTIONS endpoint to a route
+                               $httpMethods   = (array) $config[1];
+                               $httpMethods[] = Router::OPTIONS;
+                               $routeCollector->addRoute($httpMethods, $route, $config[0]);
                        } else {
                                throw new HTTPException\InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
                        }
@@ -274,18 +258,24 @@ class Router
                $cmd = $this->args->getCommand();
                $cmd = '/' . ltrim($cmd, '/');
 
-               $dispatcher = new Dispatcher\GroupCountBased($this->getCachedDispatchData());
+               $dispatcher = new FriendicaGroupCountBased($this->getCachedDispatchData());
 
                $this->parameters = [];
 
-               $routeInfo  = $dispatcher->dispatch($this->httpMethod, $cmd);
-               if ($routeInfo[0] === Dispatcher::FOUND) {
-                       $moduleClass = $routeInfo[1];
-                       $this->parameters = $routeInfo[2];
-               } elseif ($routeInfo[0] === Dispatcher::METHOD_NOT_ALLOWED) {
-                       throw new HTTPException\MethodNotAllowedException($this->l10n->t('Method not allowed for this module. Allowed method(s): %s', implode(', ', $routeInfo[1])));
+               // Check if the HTTP method is OPTIONS and return the special Options Module with the possible HTTP methods
+               if ($this->args->getMethod() === static::OPTIONS) {
+                       $moduleClass      = Options::class;
+                       $this->parameters = ['allowedMethods' => $dispatcher->getOptions($cmd)];
                } else {
-                       throw new HTTPException\NotFoundException($this->l10n->t('Page not found.'));
+                       $routeInfo = $dispatcher->dispatch($this->args->getMethod(), $cmd);
+                       if ($routeInfo[0] === Dispatcher::FOUND) {
+                               $moduleClass      = $routeInfo[1];
+                               $this->parameters = $routeInfo[2];
+                       } elseif ($routeInfo[0] === Dispatcher::METHOD_NOT_ALLOWED) {
+                               throw new HTTPException\MethodNotAllowedException($this->l10n->t('Method not allowed for this module. Allowed method(s): %s', implode(', ', $routeInfo[1])));
+                       } else {
+                               throw new HTTPException\NotFoundException($this->l10n->t('Page not found.'));
+                       }
                }
 
                return $moduleClass;
@@ -385,13 +375,13 @@ class Router
         */
        private function getCachedDispatchData()
        {
-               $routerDispatchData = $this->cache->get('routerDispatchData');
+               $routerDispatchData         = $this->cache->get('routerDispatchData');
                $lastRoutesFileModifiedTime = $this->cache->get('lastRoutesFileModifiedTime');
-               $forceRecompute = false;
+               $forceRecompute             = false;
 
                if ($this->baseRoutesFilepath) {
                        $routesFileModifiedTime = filemtime($this->baseRoutesFilepath);
-                       $forceRecompute = $lastRoutesFileModifiedTime != $routesFileModifiedTime;
+                       $forceRecompute         = $lastRoutesFileModifiedTime != $routesFileModifiedTime;
                }
 
                if (!$forceRecompute && $routerDispatchData) {
index 08efff3d7858f4dec0a07c2536e4715c4c8f3957..c03a77e29e2e3cc935e7b43e2907d280efc89a23 100644 (file)
@@ -179,23 +179,23 @@ abstract class BaseModule implements ICanHandleRequests
        public function run(array $request = []): ResponseInterface
        {
                // @see https://github.com/tootsuite/mastodon/blob/c3aef491d66aec743a3a53e934a494f653745b61/config/initializers/cors.rb
-               if (substr($request['pagename'] ?? '', 0, 12) == '.well-known/') {
+               if (substr($this->args->getQueryString(), 0, 12) == '.well-known/') {
                        $this->response->setHeader('*', 'Access-Control-Allow-Origin');
                        $this->response->setHeader('*', 'Access-Control-Allow-Headers');
                        $this->response->setHeader(Router::GET, 'Access-Control-Allow-Methods');
                        $this->response->setHeader('false', 'Access-Control-Allow-Credentials');
-               } elseif (substr($request['pagename'] ?? '', 0, 8) == 'profile/') {
+               } elseif (substr($this->args->getQueryString(), 0, 8) == 'profile/') {
                        $this->response->setHeader('*', 'Access-Control-Allow-Origin');
                        $this->response->setHeader('*', 'Access-Control-Allow-Headers');
                        $this->response->setHeader(Router::GET, 'Access-Control-Allow-Methods');
                        $this->response->setHeader('false', 'Access-Control-Allow-Credentials');
-               } elseif (substr($request['pagename'] ?? '', 0, 4) == 'api/') {
+               } elseif (substr($this->args->getQueryString(), 0, 4) == 'api/') {
                        $this->response->setHeader('*', 'Access-Control-Allow-Origin');
                        $this->response->setHeader('*', 'Access-Control-Allow-Headers');
                        $this->response->setHeader(implode(',', Router::ALLOWED_METHODS), 'Access-Control-Allow-Methods');
                        $this->response->setHeader('false', 'Access-Control-Allow-Credentials');
                        $this->response->setHeader('Link', 'Access-Control-Expose-Headers');
-               } elseif (substr($request['pagename'] ?? '', 0, 11) == 'oauth/token') {
+               } elseif (substr($this->args->getQueryString(), 0, 11) == 'oauth/token') {
                        $this->response->setHeader('*', 'Access-Control-Allow-Origin');
                        $this->response->setHeader('*', 'Access-Control-Allow-Headers');
                        $this->response->setHeader(Router::POST, 'Access-Control-Allow-Methods');
@@ -211,7 +211,7 @@ abstract class BaseModule implements ICanHandleRequests
 
                $this->profiler->set(microtime(true) - $timestamp, 'init');
 
-               switch ($this->server['REQUEST_METHOD'] ?? Router::GET) {
+               switch ($this->args->getMethod()) {
                        case Router::DELETE:
                                $this->delete($request);
                                break;
@@ -260,19 +260,7 @@ abstract class BaseModule implements ICanHandleRequests
                $request = [];
 
                foreach ($defaults as $parameter => $defaultvalue) {
-                       if (is_string($defaultvalue)) {
-                               $request[$parameter] = $input[$parameter] ?? $defaultvalue;
-                       } elseif (is_int($defaultvalue)) {
-                               $request[$parameter] = (int)($input[$parameter] ?? $defaultvalue);
-                       } elseif (is_float($defaultvalue)) {
-                               $request[$parameter] = (float)($input[$parameter] ?? $defaultvalue);
-                       } elseif (is_array($defaultvalue)) {
-                               $request[$parameter] = $input[$parameter] ?? [];
-                       } elseif (is_bool($defaultvalue)) {
-                               $request[$parameter] = in_array(strtolower($input[$parameter] ?? ''), ['true', '1']);
-                       } else {
-                               $this->logger->notice('Unhandled default value type', ['parameter' => $parameter, 'type' => gettype($defaultvalue)]);
-                       }
+                       $request[$parameter] = $this->getRequestValue($input, $parameter, $defaultvalue);
                }
 
                foreach ($input ?? [] as $parameter => $value) {
@@ -288,6 +276,50 @@ abstract class BaseModule implements ICanHandleRequests
                return $request;
        }
 
+       /**
+        * Fetch a request value and apply default values and check against minimal and maximal values
+        *
+        * @param array $input 
+        * @param string $parameter 
+        * @param mixed $default 
+        * @param mixed $minimal_value 
+        * @param mixed $maximum_value 
+        * @return mixed 
+        */
+       public function getRequestValue(array $input, string $parameter, $default = null, $minimal_value = null, $maximum_value = null)
+       {
+               if (is_string($default)) {
+                       $value = (string)($input[$parameter] ?? $default);
+               } elseif (is_int($default)) {
+                       $value = filter_var($input[$parameter] ?? $default, FILTER_VALIDATE_INT);
+                       if (!is_null($minimal_value)) {
+                               $value = max(filter_var($minimal_value, FILTER_VALIDATE_INT), $value);
+                       }
+                       if (!is_null($maximum_value)) {
+                               $value = min(filter_var($maximum_value, FILTER_VALIDATE_INT), $value);
+                       }
+               } elseif (is_float($default)) {
+                       $value = filter_var($input[$parameter] ?? $default, FILTER_VALIDATE_FLOAT);
+                       if (!is_null($minimal_value)) {
+                               $value = max(filter_var($minimal_value, FILTER_VALIDATE_FLOAT), $value);
+                       }
+                       if (!is_null($maximum_value)) {
+                               $value = min(filter_var($maximum_value, FILTER_VALIDATE_FLOAT), $value);
+                       }
+               } elseif (is_array($default)) {
+                       $value = filter_var($input[$parameter] ?? $default, FILTER_DEFAULT, ['flags' => FILTER_FORCE_ARRAY]);
+               } elseif (is_bool($default)) {
+                       $value = filter_var($input[$parameter] ?? $default, FILTER_VALIDATE_BOOLEAN);
+               } elseif (is_null($default)) {
+                       $value = $input[$parameter] ?? null;
+               } else {
+                       $this->logger->notice('Unhandled default value type', ['parameter' => $parameter, 'type' => gettype($default)]);
+                       $value = null;
+               }
+
+               return $value;
+       }
+
        /*
         * Functions used to protect against Cross-Site Request Forgery
         * The security token has to base on at least one value that an attacker can't know - here it's the session ID and the private key.
index ad6053beb8f66fd4f665e84b5963b95a943cb0bf..8ce7c5a13d70f96aa127e651a8641811637a1bd1 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Capabilities;
 
index 0cd5348c5331fe3cb38d689fdc58c00a31ba0fd4..dbdc61d843a64b0bca16a2384618fb76a9c0ea24 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Capabilities;
 
@@ -12,18 +31,20 @@ interface ICanCreateResponses
         */
        const X_HEADER = 'X-RESPONSE-TYPE';
 
-       const TYPE_HTML = 'html';
-       const TYPE_XML  = 'xml';
-       const TYPE_JSON = 'json';
-       const TYPE_ATOM = 'atom';
-       const TYPE_RSS  = 'rss';
+       const TYPE_HTML  = 'html';
+       const TYPE_XML   = 'xml';
+       const TYPE_JSON  = 'json';
+       const TYPE_ATOM  = 'atom';
+       const TYPE_RSS   = 'rss';
+       const TYPE_BLANK = 'blank';
 
        const ALLOWED_TYPES = [
                self::TYPE_HTML,
                self::TYPE_XML,
                self::TYPE_JSON,
                self::TYPE_ATOM,
-               self::TYPE_RSS
+               self::TYPE_RSS,
+               self::TYPE_BLANK,
        ];
 
        /**
@@ -51,6 +72,16 @@ interface ICanCreateResponses
         */
        public function setType(string $type, ?string $content_type = null): void;
 
+       /**
+        * Sets the status and the reason for the response
+        *
+        * @param int $status The HTTP status code
+        * @param null|string $reason Reason phrase (when empty a default will be used based on the status code)
+        *
+        * @return void
+        */
+       public function setStatus(int $status = 200, ?string $reason = null): void;
+
        /**
         * Creates a PSR-7 compliant interface
         * @see https://www.php-fig.org/psr/psr-7/
index b30be1a1d26e53343779d98fbb891b99372b5bf5..154eae69e5b65ae534fa3057bdf09b4839a8efcf 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Capabilities;
 
index 5bc02716000f55fe9cc91c113b2f97bc6c18f00f..5bc339a80ecbfc919e2ded6666eefde839239cda 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Collection\Api\Mastodon;
 
index 3577982ba72bdb2f3c484ce7d3baed7a0d9269d0..1389e97bf4f75573c0423d09c16b5a0c0a396b5f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2021, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 86a317d8addbf3f08bd62f17c2c771608072d030..062e386f05a94ee26ca566bff99cbee6d6196a60 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 502630dfc7d14ed7dfa342778c5aa5ce8c0b23d6..7c47412ce202a4d5fb03dd63112d974425deb84c 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 78c5bc5f71f9c5b13895b62f612f5bbbfdab84a6..6d8717a080d4beb39921b04634ddf1d7b8293f1f 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Contact\LocalRelationship\Exception;
 
index 2bba14baf9a3b9b1780cf2acb7eeae0ebd332ee0..213b4599f06beb51bece5efccb4ff2a1db43a03c 100644 (file)
@@ -277,7 +277,7 @@ class Nav
                                $nav['introductions'] = ['notifications/intros', DI::l10n()->t('Introductions'), '', DI::l10n()->t('Friend Requests')];
                                $nav['notifications'] = ['notifications',       DI::l10n()->t('Notifications'), '', DI::l10n()->t('Notifications')];
                                $nav['notifications']['all'] = ['notifications/system', DI::l10n()->t('See all notifications'), '', ''];
-                               $nav['notifications']['mark'] = ['', DI::l10n()->t('Mark as seen'), '', DI::l10n()->t('Mark all system notifications seen')];
+                               $nav['notifications']['mark'] = ['', DI::l10n()->t('Mark as seen'), '', DI::l10n()->t('Mark all system notifications as seen')];
                        }
 
                        $nav['messages'] = ['message', DI::l10n()->t('Messages'), '', DI::l10n()->t('Private mail')];
index a3244aafc329ae06645e36b654c50ee85aa4b81b..4c895f533774afd07645a228f05ad3fb36ec6065 100644 (file)
@@ -1134,8 +1134,8 @@ class BBCode
                switch ($simplehtml) {
                        case self::API:
                                $text = ($is_quote_share? '<br>' : '') .
-                               '<b><a href="' . $attributes['link'] . '">' . html_entity_decode('&#x2672; ', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . "</a>:</b><br>\n" .
-                               '<blockquote class="shared_content">' . $content . '</blockquote>';
+                               '<b><a href="' . $attributes['link'] . '">' . html_entity_decode('&#x2672;', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . "</a>:</b><br>\n" .
+                               '<blockquote class="shared_content" dir="auto">' . $content . '</blockquote>';
                                break;
                        case self::DIASPORA:
                                if (stripos(Strings::normaliseLink($attributes['link']), 'http://twitter.com/') === 0) {
@@ -1160,7 +1160,7 @@ class BBCode
                                $headline .= DI::l10n()->t('<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a> %3$s', $attributes['link'], $mention, $attributes['posted']);
                                $headline .= ':</b></p>' . "\n";
 
-                               $text = ($is_quote_share? '<hr />' : '') . $headline . '<blockquote class="shared_content">' . trim($content) . '</blockquote>' . "\n";
+                               $text = ($is_quote_share? '<hr />' : '') . $headline . '<blockquote class="shared_content" dir="auto">' . trim($content) . '</blockquote>' . "\n";
 
                                break;
                        case self::OSTATUS:
index f11e646efc51bb307078042b2cab55f2fe2c1e56..9e9ed304699b8432ad0b395f18686425e9c9cdb9 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Content\Text;
 
index cb1ac6d58179d910d944b165a0fac3e2edc320b7..a4acf58bad4fb0fb54590ad47e63e268379af375 100644 (file)
@@ -341,4 +341,62 @@ class ACL
 
                return $o;
        }
+
+       /**
+        * Checks the validity of the given ACL string
+        *
+        * @param string $acl_string
+        * @param int    $uid
+        * @return bool
+        * @throws Exception
+        */
+       public static function isValidContact($acl_string, $uid)
+       {
+               if (empty($acl_string)) {
+                       return true;
+               }
+
+               // split <x><y><z> into array of cids
+               preg_match_all('/<[A-Za-z0-9]+>/', $acl_string, $array);
+
+               // check for each cid if the contact is valid for the given user
+               $cid_array = $array[0];
+               foreach ($cid_array as $cid) {
+                       $cid = str_replace(['<', '>'], ['', ''], $cid);
+                       if (!DBA::exists('contact', ['id' => $cid, 'uid' => $uid])) {
+                               return false;
+                       }
+               }
+
+               return true;
+       }
+
+       /**
+        * Checks the validity of the given ACL string
+        *
+        * @param string $acl_string
+        * @param int    $uid
+        * @return bool
+        * @throws Exception
+        */
+       public static function isValidGroup($acl_string, $uid)
+       {
+               if (empty($acl_string)) {
+                       return true;
+               }
+
+               // split <x><y><z> into array of cids
+               preg_match_all('/<[A-Za-z0-9]+>/', $acl_string, $array);
+
+               // check for each cid if the contact is valid for the given user
+               $gid_array = $array[0];
+               foreach ($gid_array as $gid) {
+                       $gid = str_replace(['<', '>'], ['', ''], $gid);
+                       if (!DBA::exists('group', ['id' => $gid, 'uid' => $uid, 'deleted' => false])) {
+                               return false;
+                       }
+               }
+
+               return true;
+       }
 }
index d50221ae7738b39ee195df3225d83d569e7a3549..d1165ea865a908000483cf29b9f123956819edb4 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Cache\Exception;
 
index 290f62069b30f41145f32adab4996f34219d1f21..96b156d5edf776d869663c200a994c20443e7e56 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Cache\Exception;
 
index e8d6cd657cda1e13eaada51c85b5d30dde80cc12..5745fb0e3ed4c3d1b7f3993b034609898a3e6d2e 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Config\Exception;
 
index 9b7a38564bbb4ed6be628c71abc6fed0d8116d7e..beb98f59f22d902f8d0201b9e5ac48b5b12466ac 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Config\Exception;
 
index a3cdf7ca2f35487539ed8d6198612602dc588952..cb81f51627d3b7060dbbe3920ceaed5a31e2f071 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Config\Util;
 
index 38f2399bf933630db9daaccfe77bb9ecaeb63287..c3c3fcdc11530955854f68c2738834e199ce7360 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Lock\Exception;
 
index 37553a866b1b1571a2e94ad87472d3c6232d6ad6..c5859b9cefe99af9d85288d0183aec77989f4862 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Lock\Exception;
 
index 96abd2a9a71adeb2d8de3aef7a26bc537c4446ff..004dd59375847c74ceed6329824e81f2eab5ab6f 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Logger\Exception;
 
index 1b5f653f432eefe1cb2d5843b2e8da12db444fe7..683e536c9d50ee6d96dee34cd215248f59e60bb6 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Logger\Exception;
 
index 665dc21efd57ad6fe5cfd5ef0e6aed364b325ef6..b9689afb01cc2066ab8df9c934dd5fcf5cb9572a 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\Logger\Exception;
 
index 4da14c8b478d8f9dfc60b0e2d567bb06a671d651..1d18c659d5886fa4a9fe124bf7c5d17b25c1042e 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core\PConfig\Exception;
 
index 3dcbef651178c9ad8d3bfe8e50110d6bbff8ea98..89a7a913ab8d42c347d56befdf8ba5b78e9bc57d 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Core\Storage\Repository;
 
 use Exception;
+use Friendica\Core\Addon;
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
@@ -79,11 +80,12 @@ class StorageManager
         * @param IManageConfigValues $config
         * @param LoggerInterface     $logger
         * @param L10n                $l10n
+        * @param bool                $includeAddon (DEVELOP ONLY) Used for testing only - avoids loading addons because of DB direct access
         *
         * @throws InvalidClassStorageException in case the active backend class is invalid
         * @throws StorageException in case of unexpected errors during the active backend class loading
         */
-       public function __construct(Database $dba, IManageConfigValues $config, LoggerInterface $logger, L10n $l10n)
+       public function __construct(Database $dba, IManageConfigValues $config, LoggerInterface $logger, L10n $l10n, bool $includeAddon = true)
        {
                $this->dba           = $dba;
                $this->config        = $config;
@@ -93,6 +95,13 @@ class StorageManager
 
                $currentName = $this->config->get('storage', 'name');
 
+               /// @fixme Loading the addons & hooks here is really bad practice, but solves https://github.com/friendica/friendica/issues/11178
+               /// clean solution = Making Addon & Hook dynamic and load them inside the constructor, so there's no custom load logic necessary anymore
+               if ($includeAddon) {
+                       Addon::loadAddons();
+                       Hook::loadHooks();
+               }
+
                // you can only use user backends as a "default" backend, so the second parameter is true
                $this->currentBackend = $this->getWritableStorageByName($currentName);
        }
index 562502895b6dbe61aac508e7e197a34473d755ff..de0c80b3de7f96530bdbf59ae34214f2305745db 100644 (file)
 
 namespace Friendica\Core;
 
-use Exception;
-use Friendica\App;
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\DI;
+use Friendica\Module\Response;
 use Friendica\Network\HTTPException\FoundException;
 use Friendica\Network\HTTPException\MovedPermanentlyException;
 use Friendica\Network\HTTPException\TemporaryRedirectException;
@@ -292,11 +291,9 @@ class System
                        Logger::notice('xml_status returning non_zero: ' . $st . " message=" . $message);
                }
 
-               header("Content-type: text/xml");
-
-               $xmldata = ["result" => $result];
-
-               echo XML::fromArray($xmldata, $xml);
+               DI::apiResponse()->setType(Response::TYPE_XML);
+               DI::apiResponse()->addContent(XML::fromArray(["result" => $result], $xml));
+               DI::page()->exit(DI::apiResponse()->generate());
 
                exit();
        }
@@ -312,11 +309,11 @@ class System
        public static function httpExit($val, $message = '', $content = '')
        {
                if ($val >= 400) {
-                       Logger::debug('Exit with error', ['code' => $val, 'message' => $message, 'callstack' => System::callstack(20), 'method' => $_SERVER['REQUEST_METHOD'], 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
+                       Logger::debug('Exit with error', ['code' => $val, 'message' => $message, 'callstack' => System::callstack(20), 'method' => DI::args()->getMethod(), 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
                }
-               header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $message);
-
-               echo $content;
+               DI::apiResponse()->setStatus($val, $message);
+               DI::apiResponse()->addContent($content);
+               DI::page()->exit(DI::apiResponse()->generate());
 
                exit();
        }
@@ -324,9 +321,9 @@ class System
        public static function jsonError($httpCode, $data, $content_type = 'application/json')
        {
                if ($httpCode >= 400) {
-                       Logger::debug('Exit with error', ['code' => $httpCode, 'content_type' => $content_type, 'callstack' => System::callstack(20), 'method' => $_SERVER['REQUEST_METHOD'], 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
+                       Logger::debug('Exit with error', ['code' => $httpCode, 'content_type' => $content_type, 'callstack' => System::callstack(20), 'method' => DI::args()->getMethod(), 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
                }
-               header($_SERVER["SERVER_PROTOCOL"] . ' ' . $httpCode);
+               DI::apiResponse()->setStatus($httpCode);
                self::jsonExit($data, $content_type);
        }
 
@@ -342,8 +339,9 @@ class System
         * @param integer $options JSON options
         */
        public static function jsonExit($x, $content_type = 'application/json', int $options = 0) {
-               header("Content-type: $content_type");
-               echo json_encode($x, $options);
+               DI::apiResponse()->setType(Response::TYPE_JSON, $content_type);
+               DI::apiResponse()->addContent(json_encode($x, $options));
+               DI::page()->exit(DI::apiResponse()->generate());
                exit();
        }
 
@@ -499,7 +497,7 @@ class System
         */
        public static function htmlUpdateExit($o)
        {
-               header("Content-type: text/html");
+               DI::apiResponse()->setType(Response::TYPE_HTML);
                echo "<!DOCTYPE html><html><body>\r\n";
                // We can remove this hack once Internet Explorer recognises HTML5 natively
                echo "<section>";
index 89b102afc330ce51e9d544409d543f6207e5cdb2..708fb7d836da3fe54a7c72bc40d81c4ce1a19a3b 100644 (file)
@@ -262,14 +262,6 @@ abstract class DI
        // "Factory" namespace instances
        //
 
-       /**
-        * @return Factory\Api\Friendica\Activities
-        */
-       public static function friendicaActivities()
-       {
-               return self::$dice->create(Factory\Api\Friendica\Activities::class);
-       }
-
        /**
         * @return Factory\Api\Mastodon\Account
         */
index a812efbdb9a9f09811118e389bd459fe96d7fc97..cc7f754ee6fda19e9f15f39b07386b7729a8f16d 100644 (file)
@@ -1367,6 +1367,45 @@ class Database
                return $this->toArray($this->select($table, $fields, $condition, $params));
        }
 
+       /**
+        * Escape fields, adding special treatment for "group by" handling
+        *
+        * @param array $fields 
+        * @param array $options 
+        * @return array 
+        */
+       private function escapeFields(array $fields, array $options)
+       {
+               // In the case of a "GROUP BY" we have to add all the ORDER fields to the fieldlist.
+               // This needs to done to apply the "ANY_VALUE(...)" treatment from below to them.
+               // Otherwise MySQL would report errors.
+               if (!empty($options['group_by']) && !empty($options['order'])) {
+                       foreach ($options['order'] as $key => $field) {
+                               if (!is_int($key)) {
+                                       if (!in_array($key, $fields)) {
+                                               $fields[] = $key;
+                                       }
+                               } else {
+                                       if (!in_array($field, $fields)) {
+                                               $fields[] = $field;
+                                       }
+                               }
+                       }
+               }
+
+               array_walk($fields, function(&$value, $key) use ($options)
+               {
+                       $field = $value;
+                       $value = '`' . str_replace('`', '``', $value) . '`';
+
+                       if (!empty($options['group_by']) && !in_array($field, $options['group_by'])) {
+                               $value = 'ANY_VALUE(' . $value . ') AS ' . $value;
+                       }
+               });
+
+               return $fields;
+       }
+
        /**
         * Select rows from a table
         *
@@ -1403,7 +1442,8 @@ class Database
                }
 
                if (count($fields) > 0) {
-                       $select_string = implode(', ', array_map([DBA::class, 'quoteIdentifier'], $fields));
+                       $fields = $this->escapeFields($fields, $params);
+                       $select_string = implode(', ', $fields);
                } else {
                        $select_string = '*';
                }
index 8bf5d8a6c23e6d27916adde5f34406bbb56bf0fe..8d9c2792cc4d10dbc99c92caa5de073c6c809da3 100644 (file)
@@ -1,4 +1,24 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
 declare(strict_types=1);
 
 namespace Friendica\Database;
index b4936f31079257d418bedfc0b70c399b19ba349c..7b8f458b048268787b8b5863c3205182d3f7e757 100644 (file)
@@ -21,7 +21,6 @@
 
 namespace Friendica\Factory\Api\Friendica;
 
-use Friendica\App\BaseURL;
 use Friendica\BaseFactory;
 use Friendica\Database\DBA;
 use Friendica\Model\Post;
@@ -32,17 +31,14 @@ use Friendica\Factory\Api\Twitter\User as TwitterUser;
 
 class Activities extends BaseFactory
 {
-       /** @var BaseURL */
-       private $baseUrl;
        /** @var twitterUser entity */
        private $twitterUser;
 
-       public function __construct(LoggerInterface $logger, BaseURL $baseURL, TwitterUser $twitteruser)
+       public function __construct(LoggerInterface $logger, TwitterUser $twitteruser)
        {
                parent::__construct($logger);
 
                $this->twitterUser = $twitteruser;
-               $this->baseUrl     = $baseURL;
        }
 
        /**
diff --git a/src/Factory/Api/Friendica/Group.php b/src/Factory/Api/Friendica/Group.php
new file mode 100644 (file)
index 0000000..868231c
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Factory\Api\Friendica;
+
+use Friendica\BaseFactory;
+use Friendica\Database\Database;
+use Friendica\Network\HTTPException;
+use Psr\Log\LoggerInterface;
+use Friendica\Factory\Api\Twitter\User as TwitterUser;
+
+class Group extends BaseFactory
+{
+       /** @var twitterUser entity */
+       private $twitterUser;
+       /** @var Database */
+       private $dba;
+
+       public function __construct(LoggerInterface $logger, TwitterUser $twitteruser, Database $dba)
+       {
+               parent::__construct($logger);
+
+               $this->twitterUser = $twitteruser;
+               $this->dba         = $dba;
+       }
+
+       /**
+        * @param int $id id of the group
+        * @return array
+        * @throws HTTPException\InternalServerErrorException
+        */
+       public function createFromId(int $id): array
+       {
+               $group = $this->dba->selectFirst('group', [], ['id' => $id, 'deleted' => false]);
+               if (empty($group)) {
+                       return [];
+               }
+
+               $user   = $this->twitterUser->createFromUserId($group['uid'])->toArray();
+               $object = new \Friendica\Object\Api\Friendica\Group($group, $user);
+
+               return $object->toArray();
+       }
+}
diff --git a/src/Factory/Api/Friendica/Photo.php b/src/Factory/Api/Friendica/Photo.php
new file mode 100644 (file)
index 0000000..dad90d1
--- /dev/null
@@ -0,0 +1,156 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Factory\Api\Friendica;
+
+use Friendica\App\BaseURL;
+use Friendica\BaseFactory;
+use Friendica\Database\DBA;
+use Friendica\Factory\Api\Twitter\Status;
+use Friendica\Model\Photo as ModelPhoto;
+use Friendica\Model\Post;
+use Friendica\Network\HTTPException;
+use Psr\Log\LoggerInterface;
+use Friendica\Util\Images;
+
+class Photo extends BaseFactory
+{
+       /** @var BaseURL */
+       private $baseUrl;
+       /** @var Status */
+       private $status;
+       /** @var Activities */
+       private $activities;
+
+       public function __construct(LoggerInterface $logger, BaseURL $baseURL, Status $status, Activities $activities)
+       {
+               parent::__construct($logger);
+
+               $this->activities = $activities;
+               $this->status     = $status;
+               $this->baseUrl    = $baseURL;
+       }
+
+       /**
+        * @param string $photo_id
+        * @param int    $scale
+        * @param int    $uid
+        * @param string $type
+        * @return Array
+        */
+       public function createFromId(string $photo_id, int $scale = null, int $uid, string $type = 'json', bool $with_posts = true): array
+       {
+               $fields = ['resource-id', 'created', 'edited', 'title', 'desc', 'album', 'filename','type',
+                       'height', 'width', 'datasize', 'profile', 'allow_cid', 'deny_cid', 'allow_gid', 'deny_gid',
+                       'backend-class', 'backend-ref', 'id', 'scale'];
+
+               $condition = ['uid' => $uid, 'resource-id' => $photo_id];
+               if (is_int($scale)) {
+                       $fields = array_merge(['data'], $fields);
+
+                       $condition['scale'] = $scale;
+               }
+
+               $photos = ModelPhoto::selectToArray($fields, $condition);
+               if (empty($photos)) {
+                       throw new HTTPException\NotFoundException();
+               }
+               $data       = $photos[0];
+               $data['id'] = $data['resource-id'];
+               if (is_int($scale)) {
+                       $data['data'] = base64_encode(ModelPhoto::getImageDataForPhoto($data));
+               } else {
+                       unset($data['datasize']); //needed only with scale param
+               }
+
+               if ($type == 'xml') {
+                       $data['links'] = [];
+               } else {
+                       $data['link'] = [];
+               }
+
+               foreach ($photos as $id => $photo) {
+                       $link = $this->baseUrl->get() . '/photo/' . $data['resource-id'] . '-' . $photo['scale'] . Images::getExtensionByMimeType($data['type']);
+                       if ($type == 'xml') {
+                               $data['links'][$photo['scale'] . ':link']['@attributes'] = [
+                                       'type'  => $data['type'],
+                                       'scale' => $photo['scale'],
+                                       'href'  => $link
+                               ];
+                       } else {
+                               $data['link'][$id] = $link;
+                       }
+               }
+
+               unset($data['backend-class']);
+               unset($data['backend-ref']);
+               unset($data['resource-id']);
+               unset($data['scale']);
+
+               if ($with_posts) {
+                       // retrieve item element for getting activities (like, dislike etc.) related to photo
+                       $condition = ['uid' => $uid, 'resource-id' => $photo_id];
+
+                       $item = Post::selectFirst(['id', 'uid', 'uri', 'uri-id', 'parent', 'allow_cid', 'deny_cid', 'allow_gid', 'deny_gid'], $condition);
+               }
+               if (!empty($item)) {
+                       $data['friendica_activities'] = $this->activities->createFromUriId($item['uri-id'], $item['uid'], $type);
+
+                       // retrieve comments on photo
+                       $condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)",
+                               $item['parent'], $uid, GRAVITY_PARENT, GRAVITY_COMMENT];
+
+                       $statuses = Post::selectForUser($uid, [], $condition);
+
+                       // prepare output of comments
+                       $commentData = [];
+                       while ($status = DBA::fetch($statuses)) {
+                               $commentData[] = $this->status->createFromUriId($status['uri-id'], $status['uid'])->toArray();
+                       }
+                       DBA::close($statuses);
+
+                       $comments = [];
+                       if ($type == 'xml') {
+                               $k = 0;
+                               foreach ($commentData as $comment) {
+                                       $comments[$k++ . ':comment'] = $comment;
+                               }
+                       } else {
+                               foreach ($commentData as $comment) {
+                                       $comments[] = $comment;
+                               }
+                       }
+                       $data['friendica_comments'] = $comments;
+
+                       // include info if rights on photo and rights on item are mismatching
+                       $data['rights_mismatch'] = $data['allow_cid'] != $item['allow_cid'] ||
+                               $data['deny_cid'] != $item['deny_cid'] ||
+                               $data['allow_gid'] != $item['allow_gid'] ||
+                               $data['deny_gid'] != $item['deny_gid'];
+               } elseif ($with_posts) {
+                       $data['friendica_activities'] = [];
+                       $data['friendica_comments']   = [];
+                       $data['rights_mismatch']      = false;
+               }
+
+               return $data;
+       }
+}
index 0d9d40a6030b22c10bc5790c9cb18d1d29ffeaf9..0f08ee90b321cdb8f5c08e2fa5a62741b7f85b28 100644 (file)
@@ -47,7 +47,7 @@ class Error extends BaseFactory
 
        private function logError(int $errorno, string $error)
        {
-               $this->logger->info('API Error', ['no' => $errorno, 'error' => $error, 'method' => $this->server['REQUEST_METHOD'] ?? '', 'command' => $this->args->getQueryString(), 'user-agent' => $this->server['HTTP_USER_AGENT'] ?? '']);
+               $this->logger->info('API Error', ['no' => $errorno, 'error' => $error, 'method' => $this->args->getMethod(), 'command' => $this->args->getQueryString(), 'user-agent' => $this->server['HTTP_USER_AGENT'] ?? '']);
        }
 
        public function RecordNotFound()
index 07d3367b017d28f41db63f36def5c37447b1f244..2599e557f03b2896d056af02c35ed9707824471c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index ee905a80d38afc99b75a004d8fea779e6fa4b6b5..9d609786e96a1880ec0c63d0ab31f29fdc587be6 100644 (file)
@@ -687,7 +687,7 @@ class Contact
        {
                $fields = ['id', 'name', 'nick', 'location', 'about', 'keywords', 'avatar', 'prvkey', 'pubkey',
                        'xmpp', 'matrix', 'contact-type', 'forum', 'prv', 'avatar-date', 'url', 'nurl', 'unsearchable',
-                       'photo', 'thumb', 'micro', 'addr', 'request', 'notify', 'poll', 'confirm', 'poco', 'network'];
+                       'photo', 'thumb', 'micro', 'header', 'addr', 'request', 'notify', 'poll', 'confirm', 'poco', 'network'];
                $self = DBA::selectFirst('contact', $fields, ['uid' => $uid, 'self' => true]);
                if (!DBA::isResult($self)) {
                        return false;
@@ -753,6 +753,7 @@ class Contact
                }
 
                $fields['avatar'] = User::getAvatarUrl($user);
+               $fields['header'] = User::getBannerUrl($user);
                $fields['forum'] = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
                $fields['prv'] = $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP;
                $fields['unsearchable'] = !$profile['net-publish'];
@@ -1659,6 +1660,59 @@ class Contact
                return $contact;
        }
 
+       /**
+        * Fetch the default header for the given contact
+        *
+        * @param array $contact  contact array
+        * @return string avatar URL
+        */
+       public static function getDefaultHeader(array $contact): string
+       {
+               if (!empty($contact['header'])) {
+                       return $contact['header'];
+               }
+
+               if (!empty($contact['gsid'])) {
+                       // Use default banners for certain platforms
+                       $gserver = DBA::selectFirst('gserver', ['platform'], ['id' => $contact['gsid']]);
+                       $platform = strtolower($gserver['platform'] ?? '');
+               } else {
+                       $platform = '';
+               }
+
+               switch ($platform) {
+                       case 'friendica':
+                       case 'friendika':
+                               /**
+                                * Picture credits
+                                * @author  Lostinlight <https://mastodon.xyz/@lightone>
+                                * @license CC0 https://creativecommons.org/share-your-work/public-domain/cc0/
+                                * @link    https://gitlab.com/lostinlight/per_aspera_ad_astra/-/blob/master/friendica-404/friendica-promo-bubbles.jpg
+                                */
+                               $header = DI::baseUrl() . '/images/friendica-banner.jpg';
+                               break;
+                       case 'diaspora':
+                               /**
+                                * Picture credits
+                                * @author  John Liu <https://www.flickr.com/photos/8047705@N02/>
+                                * @license CC BY 2.0 https://creativecommons.org/licenses/by/2.0/
+                                * @link    https://www.flickr.com/photos/8047705@N02/5572197407
+                                */
+                               $header = DI::baseUrl() . '/images/diaspora-banner.jpg';
+                               break;
+                       default:
+                               /**
+                                * Use a random picture. 
+                                * The service provides random pictures from Unsplash.
+                                * @license https://unsplash.com/license
+                                */
+                               $header = 'https://picsum.photos/seed/' . hash('ripemd128', $contact['url']) . '/960/300';
+                               break;
+               }
+
+               return $header;
+       }
+
        /**
         * Fetch the default avatar for the given contact and size
         *
index f923fe2691d84109e6ec20f0e918fed26a4d2da6..8c2f2e205ce865957a487bdc35f204b98cb31317 100644 (file)
@@ -56,6 +56,7 @@ class Item
        const PT_VIDEO = 18;
        const PT_DOCUMENT = 19;
        const PT_EVENT = 32;
+       const PT_POLL = 33;
        const PT_PERSONAL_NOTE = 128;
 
        // Posting reasons (Why had a post been stored for a user?)
@@ -80,7 +81,7 @@ class Item
                'commented', 'created', 'edited', 'received', 'verb', 'object-type', 'postopts', 'plink',
                'wall', 'private', 'starred', 'origin', 'parent-origin', 'title', 'body', 'language',
                'content-warning', 'location', 'coord', 'app', 'rendered-hash', 'rendered-html', 'object',
-               'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'mention',
+               'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'mention', 'global',
                'author-id', 'author-link', 'author-name', 'author-avatar', 'author-network',
                'owner-id', 'owner-link', 'owner-name', 'owner-avatar', 'owner-network', 'owner-contact-type',
                'causer-id', 'causer-link', 'causer-name', 'causer-avatar', 'causer-contact-type', 'causer-network',
index 0228fcf0535155e8ae1cb2166e5d4f3b59f7f0a7..711391cb011348bfd79e125b430220dd860c0ca7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2021, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 1d347f3d5f6c09db64009bac79f5b3148f6edcae..8ba01e33655d280ede203d5f774e3c6b51465a42 100644 (file)
@@ -46,6 +46,7 @@ class Photo
 {
        const CONTACT_PHOTOS = 'Contact Photos';
        const PROFILE_PHOTOS = 'Profile Photos';
+       const BANNER_PHOTOS  = 'Banner Photos';
 
        const DEFAULT        = 0;
        const USER_AVATAR    = 10;
@@ -632,7 +633,8 @@ class Photo
        {
                $sql_extra = Security::getPermissionsSQLByUserId($uid);
 
-               $avatar_type = (local_user() && (local_user() == $uid)) ? Photo::USER_AVATAR : Photo::DEFAULT;
+               $avatar_type = (local_user() && (local_user() == $uid)) ? self::USER_AVATAR : self::DEFAULT;
+               $banner_type = (local_user() && (local_user() == $uid)) ? self::USER_BANNER : self::DEFAULT;
 
                $key = "photo_albums:".$uid.":".local_user().":".remote_user();
                $albums = DI::cache()->get($key);
@@ -642,19 +644,21 @@ class Photo
                                // At this time we just store the data in the cache
                                $albums = DBA::toArray(DBA::p("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album`, ANY_VALUE(`created`) AS `created`
                                        FROM `photo`
-                                       WHERE `uid` = ? AND `photo-type` IN (?, ?) $sql_extra
+                                       WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra
                                        GROUP BY `album` ORDER BY `created` DESC",
                                        $uid,
                                        self::DEFAULT,
+                                       $banner_type,
                                        $avatar_type
                                ));
                        } else {
                                // This query doesn't do the count and is much faster
                                $albums = DBA::toArray(DBA::p("SELECT DISTINCT(`album`), '' AS `total`
                                        FROM `photo` USE INDEX (`uid_album_scale_created`)
-                                       WHERE `uid` = ? AND `photo-type` IN (?, ?) $sql_extra",
+                                       WHERE `uid` = ? AND `photo-type` IN (?, ?, ?) $sql_extra",
                                        $uid,
                                        self::DEFAULT,
+                                       $banner_type,
                                        $avatar_type
                                ));
                        }
@@ -742,7 +746,7 @@ class Photo
                                'allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '',
                                'resource-id' => $image_rid, 'uid' => $uid
                        ];
-                       if (!Photo::exists($condition)) {
+                       if (!self::exists($condition)) {
                                $photo = self::selectFirst(['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'uid'], ['resource-id' => $image_rid]);
                                if (!DBA::isResult($photo)) {
                                        Logger::info('Image not found', ['resource-id' => $image_rid]);
@@ -768,7 +772,7 @@ class Photo
        /**
         * Add permissions to photo ressource
         * @todo mix with previous photo permissions
-        * 
+        *
         * @param string $image_rid
         * @param integer $uid
         * @param string $str_contact_allow
@@ -785,7 +789,7 @@ class Photo
 
                $condition = ['resource-id' => $image_rid, 'uid' => $uid];
                Logger::info('Set permissions', ['condition' => $condition, 'permissions' => $fields]);
-               Photo::update($fields, $condition);
+               self::update($fields, $condition);
        }
 
        /**
@@ -870,22 +874,73 @@ class Photo
                return DBA::exists('photo', ['resource-id' => $guid]);
        }
 
-       /**
-        * 
-        * @param int   $uid   User ID
-        * @param array $files uploaded file array
-        * @return array photo record
-        */
-       public static function upload(int $uid, array $files)
+       private static function fitImageSize($Image)
        {
-               Logger::info('starting new upload');
+               $max_length = DI::config()->get('system', 'max_image_length');
+               if ($max_length > 0) {
+                       $Image->scaleDown($max_length);
+                       Logger::info('File upload: Scaling picture to new size', ['max-length' => $max_length]);
+               }
 
-               $user = User::getOwnerDataById($uid);
-               if (empty($user)) {
-                       Logger::notice('User not found', ['uid' => $uid]);
+               $filesize = strlen($Image->asString());
+               $width    = $Image->getWidth();
+               $height   = $Image->getHeight();
+
+               $maximagesize = DI::config()->get('system', 'maximagesize');
+
+               if (!empty($maximagesize) && ($filesize > $maximagesize)) {
+                       // Scale down to multiples of 640 until the maximum size isn't exceeded anymore
+                       foreach ([5120, 2560, 1280, 640] as $pixels) {
+                               if (($filesize > $maximagesize) && (max($width, $height) > $pixels)) {
+                                       Logger::info('Resize', ['size' => $filesize, 'width' => $width, 'height' => $height, 'max' => $maximagesize, 'pixels' => $pixels]);
+                                       $Image->scaleDown($pixels);
+                                       $filesize = strlen($Image->asString());
+                                       $width = $Image->getWidth();
+                                       $height = $Image->getHeight();
+                               }
+                       }
+                       if ($filesize > $maximagesize) {
+                               Logger::notice('Image size is too big', ['size' => $filesize, 'max' => $maximagesize]);
+                               return null;
+                       }
+               }
+
+               return $Image;
+       }
+
+       private static function loadImageFromURL(string $image_url)
+       {
+               $filename = basename($image_url);
+               if (!empty($image_url)) {
+                       $ret = DI::httpClient()->get($image_url);
+                       $img_str = $ret->getBody();
+                       $type = $ret->getContentType();
+               } else {
+                       $img_str = '';
+                       $type = '';
+               }
+
+               if (empty($img_str)) {
+                       Logger::notice('Empty content');
                        return [];
                }
 
+               $type = Images::getMimeTypeByData($img_str, $image_url, $type);
+
+               $Image = new Image($img_str, $type);
+
+               $Image = self::fitImageSize($Image);
+               if (empty($Image)) {
+                       return [];
+               }
+
+               return ['image' => $Image, 'filename' => $filename];
+       }
+
+       private static function uploadImage(array $files)
+       {
+               Logger::info('starting new upload');
+
                if (empty($files)) {
                        Logger::notice('Empty upload file');
                        return [];
@@ -932,7 +987,7 @@ class Photo
                }
 
                if (empty($src)) {
-                       Logger::notice('No source file name', ['uid' => $uid, 'files' => $files]);
+                       Logger::notice('No source file name', ['files' => $files]);
                        return [];
                }
 
@@ -943,50 +998,64 @@ class Photo
                $imagedata = @file_get_contents($src);
                $Image = new Image($imagedata, $filetype);
                if (!$Image->isValid()) {
-                       Logger::notice('Image is unvalid', ['uid' => $uid, 'files' => $files]);
+                       Logger::notice('Image is unvalid', ['files' => $files]);
                        return [];
                }
 
                $Image->orient($src);
                @unlink($src);
 
-               $max_length = DI::config()->get('system', 'max_image_length');
-               if ($max_length > 0) {
-                       $Image->scaleDown($max_length);
-                       $filesize = strlen($Image->asString());
-                       Logger::info('File upload: Scaling picture to new size', ['max-length' => $max_length]);
+               $Image = self::fitImageSize($Image);
+               if (empty($Image)) {
+                       return [];
                }
 
-               $width = $Image->getWidth();
-               $height = $Image->getHeight();
+               return ['image' => $Image, 'filename' => $filename];
+       }
 
-               $maximagesize = DI::config()->get('system', 'maximagesize');
+       /**
+        * @param int         $uid   User ID
+        * @param array       $files uploaded file array
+        * @param string      $album
+        * @param string|null $allow_cid
+        * @param string|null $allow_gid
+        * @param string      $deny_cid
+        * @param string      $deny_gid
+        * @param string      $desc
+        * @param string      $resource_id
+        * @return array photo record
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        */
+       public static function upload(int $uid, array $files, string $album = '', string $allow_cid = null, string $allow_gid = null, string $deny_cid = '', string $deny_gid = '', string $desc = '', string $resource_id = ''): array
+       {
+               $user = User::getOwnerDataById($uid);
+               if (empty($user)) {
+                       Logger::notice('User not found', ['uid' => $uid]);
+                       return [];
+               }
 
-               if (!empty($maximagesize) && ($filesize > $maximagesize)) {
-                       // Scale down to multiples of 640 until the maximum size isn't exceeded anymore
-                       foreach ([5120, 2560, 1280, 640] as $pixels) {
-                               if (($filesize > $maximagesize) && (max($width, $height) > $pixels)) {
-                                       Logger::info('Resize', ['size' => $filesize, 'width' => $width, 'height' => $height, 'max' => $maximagesize, 'pixels' => $pixels]);
-                                       $Image->scaleDown($pixels);
-                                       $filesize = strlen($Image->asString());
-                                       $width = $Image->getWidth();
-                                       $height = $Image->getHeight();
-                               }
-                       }
-                       if ($filesize > $maximagesize) {
-                               @unlink($src);
-                               Logger::notice('Image size is too big', ['size' => $filesize, 'max' => $maximagesize]);
-                               return [];
-                       }
+               $data = self::uploadImage($files);
+               if (empty($data)) {
+                       Logger::info('upload failed');
+                       return [];
                }
 
-               $resource_id = Photo::newResource();
-               $album       = DI::l10n()->t('Wall Photos');
-               $defperm     = '<' . $user['id'] . '>';
+               $Image    = $data['image'];
+               $filename = $data['filename'];
+               $width    = $Image->getWidth();
+               $height   = $Image->getHeight();
+
+               $resource_id = $resource_id ?: self::newResource();
+               $album       = $album ?: DI::l10n()->t('Wall Photos');
+
+               if (is_null($allow_cid) && is_null($allow_gid)) {
+                       $allow_cid = '<' . $user['id'] . '>';
+                       $allow_gid = '';
+               }
 
                $smallest = 0;
 
-               $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 0, self::DEFAULT, $defperm);
+               $r = self::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 0, self::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                if (!$r) {
                        Logger::notice('Photo could not be stored');
                        return [];
@@ -994,7 +1063,7 @@ class Photo
 
                if ($width > 640 || $height > 640) {
                        $Image->scaleDown(640);
-                       $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 1, self::DEFAULT, $defperm);
+                       $r = self::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 1, self::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if ($r) {
                                $smallest = 1;
                        }
@@ -1002,7 +1071,7 @@ class Photo
 
                if ($width > 320 || $height > 320) {
                        $Image->scaleDown(320);
-                       $r = Photo::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 2, self::DEFAULT, $defperm);
+                       $r = self::store($Image, $user['uid'], 0, $resource_id, $filename, $album, 2, self::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
                        if ($r && ($smallest == 0)) {
                                $smallest = 2;
                        }
@@ -1017,16 +1086,152 @@ class Photo
 
                $picture = [];
 
-               $picture['id']        = $photo['id'];
-               $picture['size']      = $photo['datasize'];
-               $picture['width']     = $photo['width'];
-               $picture['height']    = $photo['height'];
-               $picture['type']      = $photo['type'];
-               $picture['albumpage'] = DI::baseUrl() . '/photos/' . $user['nickname'] . '/image/' . $resource_id;
-               $picture['picture']   = DI::baseUrl() . '/photo/{$resource_id}-0.' . $Image->getExt();
-               $picture['preview']   = DI::baseUrl() . '/photo/{$resource_id}-{$smallest}.' . $Image->getExt();
+               $picture['id']          = $photo['id'];
+               $picture['resource_id'] = $resource_id;
+               $picture['size']        = $photo['datasize'];
+               $picture['width']       = $photo['width'];
+               $picture['height']      = $photo['height'];
+               $picture['type']        = $photo['type'];
+               $picture['albumpage']   = DI::baseUrl() . '/photos/' . $user['nickname'] . '/image/' . $resource_id;
+               $picture['picture']     = DI::baseUrl() . '/photo/{$resource_id}-0.' . $Image->getExt();
+               $picture['preview']     = DI::baseUrl() . '/photo/{$resource_id}-{$smallest}.' . $Image->getExt();
 
                Logger::info('upload done', ['picture' => $picture]);
                return $picture;
        }
+
+       /**
+        * Upload a user avatar
+        *
+        * @param int    $uid   User ID
+        * @param array  $files uploaded file array
+        * @param string $url   External image url
+        * @return string avatar resource
+        */
+       public static function uploadAvatar(int $uid, array $files, string $url = ''): string
+       {
+               if (!empty($files)) {
+                       $data = self::uploadImage($files);
+                       if (empty($data)) {
+                               Logger::info('upload failed');
+                               return '';
+                       }
+               } elseif (!empty($url)) {
+                       $data = self::loadImageFromURL($url);
+                       if (empty($data)) {
+                               Logger::info('loading from external url failed');
+                               return '';
+                       }
+               } else {
+                       Logger::info('Neither files nor url provided');
+                       return '';
+               }
+
+               $Image    = $data['image'];
+               $filename = $data['filename'];
+               $width    = $Image->getWidth();
+               $height   = $Image->getHeight();
+
+               $resource_id = self::newResource();
+               $album       = DI::l10n()->t(self::PROFILE_PHOTOS);
+
+               // upload profile image (scales 4, 5, 6)
+               logger::info('starting new profile image upload');
+
+               if ($width > 300 || $height > 300) {
+                       $Image->scaleDown(300);
+               }
+
+               $r = self::store($Image, $uid, 0, $resource_id, $filename, $album, 4, self::USER_AVATAR);
+               if (!$r) {
+                       logger::notice('profile image upload with scale 4 (300) failed');
+               }
+
+               if ($width > 80 || $height > 80) {
+                       $Image->scaleDown(80);
+               }
+
+               $r = self::store($Image, $uid, 0, $resource_id, $filename, $album, 5, self::USER_AVATAR);
+               if (!$r) {
+                       logger::notice('profile image upload with scale 5 (80) failed');
+               }
+
+               if ($width > 48 || $height > 48) {
+                       $Image->scaleDown(48);
+               }
+
+               $r = self::store($Image, $uid, 0, $resource_id, $filename, $album, 6, self::USER_AVATAR);
+               if (!$r) {
+                       logger::notice('profile image upload with scale 6 (48) failed');
+               }
+
+               logger::info('new profile image upload ended');
+
+               $condition = ["`profile` AND `resource-id` != ? AND `uid` = ?", $resource_id, $uid];
+               self::update(['profile' => false, 'photo-type' => self::DEFAULT], $condition);
+
+               Contact::updateSelfFromUserID($uid, true);
+
+               // Update global directory in background
+               Profile::publishUpdate($uid);
+
+               return $resource_id;
+       }
+
+       /**
+        * Upload a user banner
+        *
+        * @param int    $uid   User ID
+        * @param array  $files uploaded file array
+        * @param string $url   External image url
+        * @return string avatar resource
+        */
+       public static function uploadBanner(int $uid, array $files = [], string $url = ''): string
+       {
+               if (!empty($files)) {
+                       $data = self::uploadImage($files);
+                       if (empty($data)) {
+                               Logger::info('upload failed');
+                               return '';
+                       }
+               } elseif (!empty($url)) {
+                       $data = self::loadImageFromURL($url);
+                       if (empty($data)) {
+                               Logger::info('loading from external url failed');
+                               return '';
+                       }
+               } else {
+                       Logger::info('Neither files nor url provided');
+                       return '';
+               }
+
+               $Image    = $data['image'];
+               $filename = $data['filename'];
+               $width    = $Image->getWidth();
+               $height   = $Image->getHeight();
+
+               $resource_id = self::newResource();
+               $album       = DI::l10n()->t(self::BANNER_PHOTOS);
+
+               if ($width > 960) {
+                       $Image->scaleDown(960);
+               }
+
+               $r = self::store($Image, $uid, 0, $resource_id, $filename, $album, 3, self::USER_BANNER);
+               if (!$r) {
+                       logger::notice('profile banner upload with scale 3 (960) failed');
+               }
+
+               logger::info('new profile banner upload ended');
+
+               $condition = ["`photo-type` = ? AND `resource-id` != ? AND `uid` = ?", self::USER_BANNER, $resource_id, $uid];
+               self::update(['photo-type' => self::DEFAULT], $condition);
+
+               Contact::updateSelfFromUserID($uid, true);
+
+               // Update global directory in background
+               Profile::publishUpdate($uid);
+
+               return $resource_id;
+       }
 }
index 05f88a2b58ce89838c634c2ac1b9c1304ad281cb..cb7fa65479513f7ea99967fcbd6c491d227ee9f2 100644 (file)
@@ -477,13 +477,19 @@ class Profile
                return $o;
        }
 
-       public static function getBirthdays()
+       /**
+        * Returns the upcoming birthdays of contacts of the current user as HTML content
+        *
+        * @return string The upcoming birthdays (HTML)
+        *
+        * @throws HTTPException\InternalServerErrorException
+        * @throws HTTPException\ServiceUnavailableException
+        * @throws \ImagickException
+        */
+       public static function getBirthdays(): string
        {
-               $a = DI::app();
-               $o = '';
-
                if (!local_user() || DI::mode()->isMobile() || DI::mode()->isMobile()) {
-                       return $o;
+                       return '';
                }
 
                /*
@@ -493,13 +499,12 @@ class Profile
                *                       return $o;
                */
 
-               $bd_format = DI::l10n()->t('g A l F d'); // 8 AM Friday January 18
                $bd_short = DI::l10n()->t('F d');
 
-               $cachekey = 'get_birthdays:' . local_user();
-               $r = DI::cache()->get($cachekey);
-               if (is_null($r)) {
-                       $s = DBA::p(
+               $cacheKey = 'get_birthdays:' . local_user();
+               $events   = DI::cache()->get($cacheKey);
+               if (is_null($events)) {
+                       $result = DBA::p(
                                "SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event`
                                INNER JOIN `contact`
                                        ON `contact`.`id` = `event`.`cid`
@@ -510,67 +515,68 @@ class Profile
                                        AND NOT `contact`.`archive`
                                        AND NOT `contact`.`deleted`
                                WHERE `event`.`uid` = ? AND `type` = 'birthday' AND `start` < ? AND `finish` > ?
-                               ORDER BY `start` ASC ",
+                               ORDER BY `start`",
                                Contact::SHARING,
                                Contact::FRIEND,
                                local_user(),
                                DateTimeFormat::utc('now + 6 days'),
                                DateTimeFormat::utcNow()
                        );
-                       if (DBA::isResult($s)) {
-                               $r = DBA::toArray($s);
-                               DI::cache()->set($cachekey, $r, Duration::HOUR);
+                       if (DBA::isResult($result)) {
+                               $events = DBA::toArray($result);
+                               DI::cache()->set($cacheKey, $events, Duration::HOUR);
                        }
                }
 
-               $total = 0;
-               $classtoday = '';
-               if (DBA::isResult($r)) {
-                       $now = strtotime('now');
+               $total      = 0;
+               $classToday = '';
+               $tpl_events = [];
+               if (DBA::isResult($events)) {
+                       $now  = strtotime('now');
                        $cids = [];
 
-                       $istoday = false;
-                       foreach ($r as $rr) {
-                               if (strlen($rr['name'])) {
-                                       $total ++;
+                       $isToday = false;
+                       foreach ($events as $event) {
+                               if (strlen($event['name'])) {
+                                       $total++;
                                }
-                               if ((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) {
-                                       $istoday = true;
+                               if ((strtotime($event['start'] . ' +00:00') < $now) && (strtotime($event['finish'] . ' +00:00') > $now)) {
+                                       $isToday = true;
                                }
                        }
-                       $classtoday = $istoday ? ' birthday-today ' : '';
+                       $classToday = $isToday ? ' birthday-today ' : '';
                        if ($total) {
-                               foreach ($r as &$rr) {
-                                       if (!strlen($rr['name'])) {
+                               foreach ($events as $event) {
+                                       if (!strlen($event['name'])) {
                                                continue;
                                        }
 
                                        // avoid duplicates
-
-                                       if (in_array($rr['cid'], $cids)) {
+                                       if (in_array($event['cid'], $cids)) {
                                                continue;
                                        }
-                                       $cids[] = $rr['cid'];
+                                       $cids[] = $event['cid'];
 
-                                       $today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
+                                       $today = (strtotime($event['start'] . ' +00:00') < $now) && (strtotime($event['finish'] . ' +00:00') > $now);
 
-                                       $rr['link'] = Contact::magicLinkById($rr['cid']);
-                                       $rr['title'] = $rr['name'];
-                                       $rr['date'] = DI::l10n()->getDay(DateTimeFormat::local($rr['start'], $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : '');
-                                       $rr['startime'] = null;
-                                       $rr['today'] = $today;
+                                       $tpl_events[] = [
+                                               'id'    => $event['id'],
+                                               'link'  => Contact::magicLinkById($event['cid']),
+                                               'title' => $event['name'],
+                                               'date'  => DI::l10n()->getDay(DateTimeFormat::local($event['start'], $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : '')
+                                       ];
                                }
                        }
                }
                $tpl = Renderer::getMarkupTemplate('birthdays_reminder.tpl');
                return Renderer::replaceMacros($tpl, [
-                       '$classtoday' => $classtoday,
-                       '$count' => $total,
+                       '$classtoday'      => $classToday,
+                       '$count'           => $total,
                        '$event_reminders' => DI::l10n()->t('Birthday Reminders'),
-                       '$event_title' => DI::l10n()->t('Birthdays this week:'),
-                       '$events' => $r,
-                       '$lbr' => '{', // raw brackets mess up if/endif macro processing
-                       '$rbr' => '}'
+                       '$event_title'     => DI::l10n()->t('Birthdays this week:'),
+                       '$events'          => $tpl_events,
+                       '$lbr'             => '{', // raw brackets mess up if/endif macro processing
+                       '$rbr'             => '}'
                ]);
        }
 
index c8e9a61f17339ce59a22248b08de62cbe9028cc8..93538bce641d684ba3601767fdffcc1a67f7288d 100644 (file)
@@ -850,19 +850,46 @@ class User
                                break;
                }
 
-               $updated =  '';
-               $imagetype = IMAGETYPE_JPEG;
+               $updated  =  '';
+               $mimetype = '';
 
                $photo = Photo::selectFirst(['type', 'created', 'edited', 'updated'], ["scale" => $scale, 'uid' => $user['uid'], 'profile' => true]);
                if (!empty($photo)) {
-                       $updated = max($photo['created'], $photo['edited'], $photo['updated']);
+                       $updated  = max($photo['created'], $photo['edited'], $photo['updated']);
+                       $mimetype = $photo['type'];
+               }
 
-                       if (in_array($photo['type'], ['image/png', 'image/gif'])) {
-                               $imagetype = IMAGETYPE_PNG;
-                       }
+               return $url . $user['nickname'] . Images::getExtensionByMimeType($mimetype) . ($updated ? '?ts=' . strtotime($updated) : '');
+       }
+
+       /**
+        * Get banner link for given user
+        *
+        * @param array  $user
+        * @return string banner link
+        * @throws Exception
+        */
+       public static function getBannerUrl(array $user):string
+       {
+               if (empty($user['nickname'])) {
+                       DI::logger()->warning('Missing user nickname key', ['trace' => System::callstack(20)]);
+               }
+
+               $url = DI::baseUrl() . '/photo/banner/';
+
+               $updated  = '';
+               $mimetype = '';
+
+               $photo = Photo::selectFirst(['type', 'created', 'edited', 'updated'], ["scale" => 3, 'uid' => $user['uid'], 'photo-type' => Photo::USER_BANNER]);
+               if (!empty($photo)) {
+                       $updated  = max($photo['created'], $photo['edited'], $photo['updated']);
+                       $mimetype = $photo['type'];
+               } else {
+                       // Only for the RC phase: Don't return an image link for the default picture
+                       return '';
                }
 
-               return $url . $user['nickname'] . image_type_to_extension($imagetype) . ($updated ? '?ts=' . strtotime($updated) : '');
+               return $url . $user['nickname'] . Images::getExtensionByMimeType($mimetype) . ($updated ? '?ts=' . strtotime($updated) : '');
        }
 
        /**
index b728a6e148e0bcffd097e0a76bdcbd8da4ea64d9..a11a8ab21f12aa10eaa04fb6a8f6a8816b22f911 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 90a2ca7791164f31ab64000ac43aeccc1a97fa67..ed2b9a2c59abe2ed4e48a0e36c3de2cf61916dd9 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index a6a94ad81c559e209635013e2da2039b35eb1e73..0eb2f644b9fc57b5a893dad58c94914890dd524a 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Api;
 
index 70aeee613fc2b1164299638b397282501aaf16e7..3c892b3030e30628f1b100d27c0d75776e8524ca 100644 (file)
@@ -52,7 +52,7 @@ class Activity extends BaseApi
                $res = Item::performActivity($request['id'], $this->parameters['verb'], $uid);
 
                if ($res) {
-                       if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
+                       if (($this->parameters['extension'] ?? '') == 'xml') {
                                $ok = 'true';
                        } else {
                                $ok = 'ok';
index 679accb33ad4e009d9d1f290d0414bb322e66509..67f8193f251470fec1f0d071a74cb998344a3968 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index e6d26a96f5d939b494192ca211ed330724283cee..594f85d4188ba6219c9d4e48bf224a335d0c5258 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/src/Module/Api/Friendica/Group/Create.php b/src/Module/Api/Friendica/Group/Create.php
new file mode 100644 (file)
index 0000000..3b0f030
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Friendica\Group;
+
+use Friendica\Database\DBA;
+use Friendica\Model\Group;
+use Friendica\Module\BaseApi;
+use Friendica\Network\HTTPException;
+
+/**
+ * API endpoint: /api/friendica/group_create
+ */
+class Create extends BaseApi
+{
+       protected function post(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid = BaseApi::getCurrentUserID();
+
+               // params
+               $name  = $this->getRequestValue($request, 'name', '');
+               $json  = json_decode($request['json'], true);
+               $users = $json['user'];
+
+               // error if no name specified
+               if ($name == '') {
+                       throw new HTTPException\BadRequestException('group name not specified');
+               }
+
+               // error message if specified group name already exists
+               if (DBA::exists('group', ['uid' => $uid, 'name' => $name, 'deleted' => false])) {
+                       throw new HTTPException\BadRequestException('group name already exists');
+               }
+
+               // Check if the group needs to be reactivated
+               if (DBA::exists('group', ['uid' => $uid, 'name' => $name, 'deleted' => true])) {
+                       $reactivate_group = true;
+               }
+
+               // create group
+               $ret = Group::create($uid, $name);
+               if ($ret) {
+                       $gid = Group::getIdByName($uid, $name);
+               } else {
+                       throw new HTTPException\BadRequestException('other API error');
+               }
+
+               // add members
+               $erroraddinguser = false;
+               $errorusers      = [];
+               foreach ($users as $user) {
+                       $cid = $user['cid'];
+                       if (DBA::exists('contact', ['id' => $cid, 'uid' => $uid])) {
+                               Group::addMember($gid, $cid);
+                       } else {
+                               $erroraddinguser = true;
+                               $errorusers[]    = $cid;
+                       }
+               }
+
+               // return success message incl. missing users in array
+               $status = ($erroraddinguser ? 'missing user' : ((isset($reactivate_group) && $reactivate_group) ? 'reactivated' : 'ok'));
+
+               $result = ['success' => true, 'gid' => $gid, 'name' => $name, 'status' => $status, 'wrong users' => $errorusers];
+
+               $this->response->exit('group_create', ['$result' => $result], $this->parameters['extension'] ?? null);
+       }
+}
index e845bd7a73ad76d69881f1b6292f85b28c0ab08c..d48e9a4f9d49566c3cb0d8453d3ebab07ccad5b0 100644 (file)
@@ -22,7 +22,6 @@
 namespace Friendica\Module\Api\Friendica\Group;
 
 use Friendica\Database\DBA;
-use Friendica\DI;
 use Friendica\Model\Group;
 use Friendica\Module\BaseApi;
 use Friendica\Network\HTTPException\BadRequestException;
diff --git a/src/Module/Api/Friendica/Group/Show.php b/src/Module/Api/Friendica/Group/Show.php
new file mode 100644 (file)
index 0000000..d150827
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Friendica\Group;
+
+use Friendica\Database\DBA;
+use Friendica\DI;
+use Friendica\Model\Contact;
+use Friendica\Module\BaseApi;
+use Friendica\Network\HTTPException;
+
+/**
+ * API endpoint: /api/friendica/group_show
+ */
+class Show extends BaseApi
+{
+       protected function post(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
+               $uid  = BaseApi::getCurrentUserID();
+               $type = $this->getRequestValue($this->parameters, 'extension', 'json');
+
+               // params
+               $gid = $this->getRequestValue($request, 'gid', 0);
+
+               // get data of the specified group id or all groups if not specified
+               if ($gid != 0) {
+                       $groups = DBA::selectToArray('group', [], ['deleted' => false, 'uid' => $uid, 'id' => $gid]);
+
+                       // error message if specified gid is not in database
+                       if (!DBA::isResult($groups)) {
+                               throw new HTTPException\BadRequestException('gid not available');
+                       }
+               } else {
+                       $groups = DBA::selectToArray('group', [], ['deleted' => false, 'uid' => $uid]);
+               }
+
+               // loop through all groups and retrieve all members for adding data in the user array
+               $grps = [];
+               foreach ($groups as $rr) {
+                       $members = Contact\Group::getById($rr['id']);
+                       $users   = [];
+
+                       if ($type == 'xml') {
+                               $user_element = 'users';
+                               $k            = 0;
+                               foreach ($members as $member) {
+                                       $users[$k++.':user'] = DI::twitterUser()->createFromContactId($member['contact-id'], $uid, true)->toArray();
+                               }
+                       } else {
+                               $user_element = 'user';
+                               foreach ($members as $member) {
+                                       $users[] = DI::twitterUser()->createFromContactId($member['contact-id'], $uid, true)->toArray();
+                               }
+                       }
+                       $grps[] = ['name' => $rr['name'], 'gid' => $rr['id'], $user_element => $users];
+               }
+
+               $this->response->exit('group_update', ['group' => $grps], $this->parameters['extension'] ?? null);
+       }
+}
index 4faec89d8612170de2ee8a9e80ea22919eaa1d65..defbeed1c12bdb6c60582dede304e74d5e8a6032 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -38,9 +38,9 @@ class Update extends BaseApi
                $uid = BaseApi::getCurrentUserID();
 
                // params
-               $gid   = $request['gid']  ?? 0;
-               $name  = $request['name'] ?? '';
-               $json  = json_decode($_POST['json'], true);
+               $gid   = $this->getRequestValue($request, 'gid', 0);
+               $name  = $this->getRequestValue($request, 'name', '');
+               $json  = json_decode($request['json'], true);
                $users = $json['user'];
 
                // error if no name specified
diff --git a/src/Module/Api/Friendica/Index.php b/src/Module/Api/Friendica/Index.php
deleted file mode 100644 (file)
index 3cdf48a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
- *
- * @license   GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-namespace Friendica\Module\Api\Friendica;
-
-use Friendica\DI;
-use Friendica\Module\BaseApi;
-require_once __DIR__ . '/../../../../include/api.php';
-
-/**
- * api/friendica
- *
- * @package Friendica\Module\Api\Friendica
- */
-class Index extends BaseApi
-{
-       protected function post(array $request = [])
-       {
-               self::checkAllowedScope(self::SCOPE_WRITE);             
-       }
-
-       protected function delete(array $request = [])
-       {
-               self::checkAllowedScope(self::SCOPE_WRITE);
-       }
-
-       protected function rawContent(array $request = [])
-       {
-               echo api_call(DI::args()->getCommand(), $this->parameters['extension'] ?? 'json');
-               exit();
-       }
-}
index 1f5ac9b488b8d99b23757e0acffe63fc4ebef505..46320df153de0de88e77b360a9f3f7c2561de2a1 100644 (file)
@@ -43,7 +43,7 @@ class Notification extends BaseApi
                        $notifications[] = new ApiNotification($Notify);
                }
 
-               if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
+               if (($this->parameters['extension'] ?? '') == 'xml') {
                        $xmlnotes = [];
                        foreach ($notifications as $notification) {
                                $xmlnotes[] = ['@attributes' => $notification->toArray()];
index e2933726247d9ffa1fed053ba46a5f63fb7ebe38..7a52a124df97cabbf6b96da082e15b94843f1991 100644 (file)
@@ -47,7 +47,9 @@ class Seen extends BaseApi
                        throw new BadRequestException('Invalid argument count');
                }
 
-               $id = intval($_REQUEST['id'] ?? 0);
+               $id = intval($request['id'] ?? 0);
+
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                try {
                        $Notify = DI::notify()->selectOneById($id);
@@ -65,8 +67,6 @@ class Seen extends BaseApi
                        if ($Notify->otype === Notification\ObjectType::ITEM) {
                                $item = Post::selectFirstForUser($uid, [], ['id' => $Notify->iid, 'uid' => $uid]);
                                if (DBA::isResult($item)) {
-                                       $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                                        // we found the item, return it to the user
                                        $ret  = [DI::twitterStatus()->createFromUriId($item['uri-id'], $item['uid'], $include_entities)->toArray()];
                                        $data = ['status' => $ret];
diff --git a/src/Module/Api/Friendica/Photo.php b/src/Module/Api/Friendica/Photo.php
new file mode 100644 (file)
index 0000000..ba87081
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Friendica;
+
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Factory\Api\Friendica\Photo as FriendicaPhoto;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+class Photo extends BaseApi
+{
+       /** @var FriendicaPhoto */
+       private $friendicaPhoto;
+
+
+       public function __construct(FriendicaPhoto $friendicaPhoto, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->friendicaPhoto = $friendicaPhoto;
+       }
+
+       protected function post(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
+               $uid  = BaseApi::getCurrentUserID();
+               $type = $this->getRequestValue($this->parameters, 'extension', 'json');
+
+               if (empty($request['photo_id'])) {
+                       throw new HTTPException\BadRequestException('No photo id.');
+               }
+
+               $scale    = (!empty($request['scale']) ? intval($request['scale']) : false);
+               $photo_id = $request['photo_id'];
+
+               // prepare json/xml output with data from database for the requested photo
+               $data = ['photo' => $this->friendicaPhoto->createFromId($photo_id, $scale, $uid, $type)];
+
+               $this->response->exit('statuses', $data, $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+       }
+}
diff --git a/src/Module/Api/Friendica/Photo/Create.php b/src/Module/Api/Friendica/Photo/Create.php
new file mode 100644 (file)
index 0000000..bb3dc63
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Friendica\Photo;
+
+use Friendica\App;
+use Friendica\Core\ACL;
+use Friendica\Core\L10n;
+use Friendica\Factory\Api\Friendica\Photo as FriendicaPhoto;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Photo;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * API endpoint: /api/friendica/photo/create
+ */
+class Create extends BaseApi
+{
+       /** @var FriendicaPhoto */
+       private $friendicaPhoto;
+
+
+       public function __construct(FriendicaPhoto $friendicaPhoto, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->friendicaPhoto = $friendicaPhoto;
+       }
+
+       protected function post(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid  = BaseApi::getCurrentUserID();
+               $type = $this->getRequestValue($this->parameters, 'extension', 'json');
+
+               // input params
+               $desc      = $this->getRequestValue($request, 'desc', '');
+               $album     = $this->getRequestValue($request, 'album');
+               $allow_cid = $this->getRequestValue($request, 'allow_cid');
+               $deny_cid  = $this->getRequestValue($request, 'deny_cid');
+               $allow_gid = $this->getRequestValue($request, 'allow_gid');
+               $deny_gid  = $this->getRequestValue($request, 'deny_gid');
+
+               // do several checks on input parameters
+               // we do not allow calls without album string
+               if ($album == null) {
+                       throw new HTTPException\BadRequestException('no albumname specified');
+               }
+
+               // error if no media posted in create-mode
+               if (empty($_FILES['media'])) {
+                       // Output error
+                       throw new HTTPException\BadRequestException('no media data submitted');
+               }
+
+               // checks on acl strings provided by clients
+               $acl_input_error = false;
+               $acl_input_error |= !ACL::isValidContact($allow_cid, $uid);
+               $acl_input_error |= !ACL::isValidContact($deny_cid, $uid);
+               $acl_input_error |= !ACL::isValidGroup($allow_gid, $uid);
+               $acl_input_error |= !ACL::isValidGroup($deny_gid, $uid);
+               if ($acl_input_error) {
+                       throw new HTTPException\BadRequestException('acl data invalid');
+               }
+               // now let's upload the new media in create-mode
+               $photo = Photo::upload($uid, $_FILES['media'], $album, trim($allow_cid), trim($allow_gid), trim($deny_cid), trim($deny_gid), $desc);
+
+               // return success of updating or error message
+               if (!empty($photo)) {
+                       $data = ['photo' => $this->friendicaPhoto->createFromId($photo['resource_id'], null, $uid, $type)];
+                       $this->response->exit('photo_create', $data, $this->parameters['extension'] ?? null);
+               } else {
+                       throw new HTTPException\InternalServerErrorException('unknown error - uploading photo failed, see Friendica log for more information');
+               }
+       }
+}
diff --git a/src/Module/Api/Friendica/Photo/Lists.php b/src/Module/Api/Friendica/Photo/Lists.php
new file mode 100644 (file)
index 0000000..350d98a
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Friendica\Photo;
+
+use Friendica\Database\DBA;
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Factory\Api\Friendica\Photo as FriendicaPhoto;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+use Friendica\Model\Photo;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Returns all lists the user subscribes to.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-list
+ */
+class Lists extends BaseApi
+{
+       /** @var FriendicaPhoto */
+       private $friendicaPhoto;
+
+
+       public function __construct(FriendicaPhoto $friendicaPhoto, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->friendicaPhoto = $friendicaPhoto;
+       }
+
+       protected function rawContent(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
+               $uid  = BaseApi::getCurrentUserID();
+               $type = $this->getRequestValue($this->parameters, 'extension', 'json');
+
+               $photos = Photo::selectToArray(['resource-id'], ["`uid` = ? AND NOT `photo-type` IN (?, ?)", $uid, Photo::CONTACT_AVATAR, Photo::CONTACT_BANNER],
+                       ['order' => ['id'], 'group_by' => ['resource-id']]);
+
+               $data = ['photo' => []];
+               if (DBA::isResult($photos)) {
+                       foreach ($photos as $photo) {
+                               $element = $this->friendicaPhoto->createFromId($photo['resource-id'], null, $uid, 'json', false);
+
+                               $element['thumb'] = end($element['link']);
+                               unset($element['link']);
+
+                               if ($type == 'xml') {
+                                       $thumb = $element['thumb'];
+                                       unset($element['thumb']);
+                                       $data['photo'][] = ['@attributes' => $element, '1' => $thumb];
+                               } else {
+                                       $data['photo'][] = $element;
+                               }
+                       }
+               }
+
+               $this->response->exit('statuses', $data, $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+       }
+}
diff --git a/src/Module/Api/Friendica/Photo/Update.php b/src/Module/Api/Friendica/Photo/Update.php
new file mode 100644 (file)
index 0000000..44fd554
--- /dev/null
@@ -0,0 +1,152 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Friendica\Photo;
+
+use Friendica\App;
+use Friendica\Core\ACL;
+use Friendica\Core\L10n;
+use Friendica\Factory\Api\Friendica\Photo as FriendicaPhoto;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Photo;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * API endpoint: /api/friendica/photo/update
+ */
+class Update extends BaseApi
+{
+       /** @var FriendicaPhoto */
+       private $friendicaPhoto;
+
+
+       public function __construct(FriendicaPhoto $friendicaPhoto, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->friendicaPhoto = $friendicaPhoto;
+       }
+
+       protected function post(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid  = BaseApi::getCurrentUserID();
+               $type = $this->getRequestValue($this->parameters, 'extension', 'json');
+
+               // input params
+               $photo_id  = $this->getRequestValue($request, 'photo_id');
+               $desc      = $this->getRequestValue($request, 'desc');
+               $album     = $this->getRequestValue($request, 'album');
+               $album_new = $this->getRequestValue($request, 'album_new');
+               $allow_cid = $this->getRequestValue($request, 'allow_cid');
+               $deny_cid  = $this->getRequestValue($request, 'deny_cid');
+               $allow_gid = $this->getRequestValue($request, 'allow_gid');
+               $deny_gid  = $this->getRequestValue($request, 'deny_gid');
+
+               // do several checks on input parameters
+               // we do not allow calls without album string
+               if ($album == null) {
+                       throw new HTTPException\BadRequestException('no albumname specified');
+               }
+
+               // check if photo is existing in databasei
+               if (!Photo::exists(['resource-id' => $photo_id, 'uid' => $uid, 'album' => $album])) {
+                       throw new HTTPException\BadRequestException('photo not available');
+               }
+
+               // checks on acl strings provided by clients
+               $acl_input_error = false;
+               $acl_input_error |= !ACL::isValidContact($allow_cid, $uid);
+               $acl_input_error |= !ACL::isValidContact($deny_cid, $uid);
+               $acl_input_error |= !ACL::isValidGroup($allow_gid, $uid);
+               $acl_input_error |= !ACL::isValidGroup($deny_gid, $uid);
+               if ($acl_input_error) {
+                       throw new HTTPException\BadRequestException('acl data invalid');
+               }
+
+               $updated_fields = [];
+
+               if (!is_null($desc)) {
+                       $updated_fields['desc'] = $desc;
+               }
+
+               if (!is_null($album_new)) {
+                       $updated_fields['album'] = $album_new;
+               }
+
+               if (!is_null($allow_cid)) {
+                       $allow_cid                   = trim($allow_cid);
+                       $updated_fields['allow_cid'] = $allow_cid;
+               }
+
+               if (!is_null($deny_cid)) {
+                       $deny_cid                   = trim($deny_cid);
+                       $updated_fields['deny_cid'] = $deny_cid;
+               }
+
+               if (!is_null($allow_gid)) {
+                       $allow_gid                   = trim($allow_gid);
+                       $updated_fields['allow_gid'] = $allow_gid;
+               }
+
+               if (!is_null($deny_gid)) {
+                       $deny_gid                   = trim($deny_gid);
+                       $updated_fields['deny_gid'] = $deny_gid;
+               }
+
+               $result = false;
+               if (count($updated_fields) > 0) {
+                       $nothingtodo = false;
+                       $result      = Photo::update($updated_fields, ['uid' => $uid, 'resource-id' => $photo_id, 'album' => $album]);
+               } else {
+                       $nothingtodo = true;
+               }
+
+               if (!empty($_FILES['media'])) {
+                       $nothingtodo = false;
+                       $photo       = Photo::upload($uid, $_FILES['media'], $album, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc, $photo_id);
+                       if (!empty($photo)) {
+                               $data = ['photo' => $this->friendicaPhoto->createFromId($photo['resource_id'], null, $uid, $type)];
+                               $this->response->exit('photo_update', $data, $this->parameters['extension'] ?? null);
+                               return;
+                       }
+               }
+
+               // return success of updating or error message
+               if ($result) {
+                       $answer = ['result' => 'updated', 'message' => 'Image id `' . $photo_id . '` has been updated.'];
+                       $this->response->exit('photo_update', ['$result' => $answer], $this->parameters['extension'] ?? null);
+                       return;
+               } else {
+                       if ($nothingtodo) {
+                               $answer = ['result' => 'cancelled', 'message' => 'Nothing to update for image id `' . $photo_id . '`.'];
+                               $this->response->exit('photo_update', ['$result' => $answer], $this->parameters['extension'] ?? null);
+                               return;
+                       }
+                       throw new HTTPException\InternalServerErrorException('unknown error - update photo entry in database failed');
+               }
+
+               throw new HTTPException\InternalServerErrorException('unknown error - this error on uploading or updating a photo should never happen');
+       }
+}
index 60f4f024b0f2697c5c7545b8feb3f774f41efcc3..2d686d9cae6940892d5332fbc7ae298eaf5a7938 100644 (file)
@@ -48,7 +48,7 @@ class Show extends BaseApi
                $profile = self::formatProfile($profile, $profileFields);
 
                $profiles = [];
-               if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
+               if (($this->parameters['extension'] ?? '') == 'xml') {
                        $profiles['0:profile'] = $profile;
                } else {
                        $profiles[] = $profile;
index 4cfeda6abaf2697056eeb45e0024e77493deb95c..ecf99c78bf383dfe34ab9a0997fcafaa0ed7ded8 100644 (file)
@@ -31,7 +31,7 @@ class Test extends BaseApi
 {
        protected function rawContent(array $request = [])
        {
-               if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
+               if (($this->parameters['extension'] ?? '') == 'xml') {
                        $ok = 'true';
                } else {
                        $ok = 'ok';
index 76bc9b81657e26d5c6d3b42e8849b213d754d9b0..08cfe82fb928973b4fc95cb66a43d4ef7adb7850 100644 (file)
@@ -40,16 +40,17 @@ class Conversation extends BaseApi
                $uid = BaseApi::getCurrentUserID();
 
                // params
-               $id       = $this->parameters['id'] ?? 0;
-               $since_id = $_REQUEST['since_id']   ?? 0;
-               $max_id   = $_REQUEST['max_id']     ?? 0;
-               $count    = $_REQUEST['count']      ?? 20;
-               $page     = $_REQUEST['page']       ?? 1;
+               $id               = $this->getRequestValue($this->parameters, 'id', 0);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
                if ($id == 0) {
-                       $id = $_REQUEST['id'] ?? 0;
+                       $id = $request['id'] ?? 0;
                }
 
                Logger::info(BaseApi::LOG_PREFIX . '{subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $id]);
@@ -82,8 +83,6 @@ class Conversation extends BaseApi
                        throw new BadRequestException("There is no status with id $id.");
                }
 
-               $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index d5fef22a6ca2e1915f432d8a2cd60e2a9f3a9432..58d1f7d8348dddd85a12cc97accc3bca76b1d5f7 100644 (file)
@@ -73,6 +73,8 @@ class Followers extends BaseApi
                        $params['order'] = ['cid'];
                }
 
+               $accounts = [];
+
                $followers = DBA::select('contact-relation', ['relation-cid'], $condition, $params);
                while ($follower = DBA::fetch($followers)) {
                        self::setBoundaries($follower['relation-cid']);
index 5176a08cdae0392e7131375314db14f469d5fada..8e05a9b717baa96adfc2cafc61bb688f27e48776 100644 (file)
@@ -73,6 +73,8 @@ class Following extends BaseApi
                        $params['order'] = ['cid'];
                }
 
+               $accounts = [];
+
                $followers = DBA::select('contact-relation', ['cid'], $condition, $params);
                while ($follower = DBA::fetch($followers)) {
                        self::setBoundaries($follower['cid']);
index d6fcba3e4108e386f99a1967c6bd475b364c2800..1253026fdd07f3be03a857b605ba5c1e36915854 100644 (file)
@@ -37,7 +37,7 @@ class Media extends BaseApi
                self::checkAllowedScope(self::SCOPE_WRITE);
                $uid = self::getCurrentUserID();
 
-               Logger::info('Photo post', ['request' => $_REQUEST, 'files' => $_FILES]);
+               Logger::info('Photo post', ['request' => $request, 'files' => $_FILES]);
 
                if (empty($_FILES['file'])) {
                        DI::mstdnError()->UnprocessableEntity();
index 7a48f4f0e0712fd2f24e8cbd6f79a24757b78274..c5f052b39456b64950419caae58cb981bc5d1915 100644 (file)
@@ -31,7 +31,7 @@ class RateLimitStatus extends BaseApi
 {
        protected function rawContent(array $request = [])
        {
-               if (!empty($this->parameters['extension']) && ($this->parameters['extension'] == 'xml')) {
+               if (($this->parameters['extension'] ?? '') == 'xml') {
                        $hash = [
                                'remaining-hits'        => '150',
                                '@attributes'           => ["type" => "integer"],
index bcfd7d9092850a647e368d87d414298b7d9cd02f..06ebf3db1ecd60844a2a12263745c9770768f1e8 100644 (file)
@@ -52,9 +52,11 @@ class UpdateProfile extends BaseApi
                        Contact::update(['about' => $request['description']], ['id' => $api_user['id']]);
                }
 
+               Contact::updateSelfFromUserID($uid, true);
+
                Profile::publishUpdate($uid);
 
-               $skip_status = $request['skip_status'] ?? false;
+               $skip_status = $this->getRequestValue($request, 'skip_status', false);
 
                $user_info = DI::twitterUser()->createFromUserId($uid, $skip_status)->toArray();
 
diff --git a/src/Module/Api/Twitter/Account/UpdateProfileImage.php b/src/Module/Api/Twitter/Account/UpdateProfileImage.php
new file mode 100644 (file)
index 0000000..5af8352
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Twitter\Account;
+
+use Friendica\Module\BaseApi;
+use Friendica\DI;
+use Friendica\Model\Photo;
+use Friendica\Network\HTTPException;
+
+/**
+ * updates the profile image for the user (either a specified profile or the default profile)
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image
+ */
+class UpdateProfileImage extends BaseApi
+{
+       protected function post(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid = BaseApi::getCurrentUserID();
+
+               // get mediadata from image or media (Twitter call api/account/update_profile_image provides image)
+               if (!empty($_FILES['image'])) {
+                       $media = $_FILES['image'];
+               } elseif (!empty($_FILES['media'])) {
+                       $media = $_FILES['media'];
+               }
+
+               // error if image data is missing
+               if (empty($media)) {
+                       throw new HTTPException\BadRequestException('no media data submitted');
+               }
+
+               // save new profile image
+               $resource_id = Photo::uploadAvatar($uid, $media);
+               if (empty($resource_id)) {
+                       throw new HTTPException\InternalServerErrorException('image upload failed');
+               }
+
+               // output for client
+               $skip_status = $this->getRequestValue($request, 'skip_status', false);
+
+               $user_info = DI::twitterUser()->createFromUserId($uid, $skip_status)->toArray();
+
+               // "verified" isn't used here in the standard
+               unset($user_info['verified']);
+
+               // "uid" is only needed for some internal stuff, so remove it from here
+               unset($user_info['uid']);
+
+               $this->response->exit('user', ['user' => $user_info], $this->parameters['extension'] ?? null);
+       }
+}
index 592cff4c0c76f65177ee90bf48cec5696f429a01..af9c2a6f7092daefef33acf18f7fc00b34508dd2 100644 (file)
@@ -37,7 +37,7 @@ class VerifyCredentials extends BaseApi
                BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
-               $skip_status = $_REQUEST['skip_status'] ?? false;
+               $skip_status = $this->getRequestValue($request, 'skip_status', false);
 
                $user_info = DI::twitterUser()->createFromUserId($uid, $skip_status)->toArray();
 
index e411fc507fcefd7f6ce976db5549995648fa9741..d687b85a5c281d3cbbedc51298e90f9c3c96deb3 100644 (file)
@@ -37,17 +37,14 @@ class Ids extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $cursor        = filter_input(INPUT_GET, 'cursor'       , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $stringify_ids = filter_input(INPUT_GET, 'stringify_ids', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count         = filter_input(INPUT_GET, 'count'        , FILTER_VALIDATE_INT, ['options' => [
-                       'default'   => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
+               $cursor        = $this->getRequestValue($request, 'cursor', -1);
+               $stringify_ids = $this->getRequestValue($request, 'stringify_ids', false);
+               $count         = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
+
                // Friendica-specific
-               $since_id = filter_input(INPUT_GET, 'since_id', FILTER_VALIDATE_INT);
-               $max_id   = filter_input(INPUT_GET, 'max_id'  , FILTER_VALIDATE_INT);
-               $min_id   = filter_input(INPUT_GET, 'min_id'  , FILTER_VALIDATE_INT);
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['cid' => true], 'limit' => $count];
 
index da7b00f43c3089bbf7ee94977962aa2a9b8d5c2b..823336c087b7160e4375bf6d0169aa55a0745266 100644 (file)
@@ -37,18 +37,15 @@ class Lists extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $cursor                = filter_input(INPUT_GET, 'cursor'               , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $skip_status           = filter_input(INPUT_GET, 'skip_status'          , FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $include_user_entities = filter_input(INPUT_GET, 'include_user_entities', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count                 = filter_input(INPUT_GET, 'count'                , FILTER_VALIDATE_INT, ['options' => [
-                       'default'   => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
+               $cursor                = $this->getRequestValue($request, 'cursor', -1);
+               $skip_status           = $this->getRequestValue($request, 'skip_status', false);
+               $include_user_entities = $this->getRequestValue($request, 'include_user_entities', false);
+               $count                 = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
+
                // Friendica-specific
-               $since_id = filter_input(INPUT_GET, 'since_id', FILTER_VALIDATE_INT);
-               $max_id   = filter_input(INPUT_GET, 'max_id'  , FILTER_VALIDATE_INT);
-               $min_id   = filter_input(INPUT_GET, 'min_id'  , FILTER_VALIDATE_INT);
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['cid' => true], 'limit' => $count];
 
index 406e81174e2868113938e02cd7abb9d840abf0ab..f7ea3c0f9bcc8940a43b32c7515851a5b6235737 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 2467409860143ac0d044f07aeb252d3ab4621fa2..ebd4b6bbc46b3da2ad61c497258eae9b081e1c5e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index df760907d64d897075770d507153062e9453b156..9de09823640b79300d44096ddd6f9fdd5eaefecc 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -52,8 +52,10 @@ class Destroy extends BaseApi
                BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
                $uid = BaseApi::getCurrentUserID();
 
-               $id      = filter_var($request['id'] ?? 0,                    FILTER_VALIDATE_INT);
-               $verbose = filter_var($request['friendica_verbose'] ?? false, FILTER_VALIDATE_BOOLEAN);
+               $id = $this->getRequestValue($request, 'id', 0);
+               $id = $this->getRequestValue($this->parameters, 'id', $id);
+
+               $verbose = $this->getRequestValue($request, 'friendica_verbose', false);
 
                $parenturi = $request['friendica_parenturi'] ?? '';
 
@@ -64,11 +66,6 @@ class Destroy extends BaseApi
                        return;
                }
 
-               // BadRequestException if no id specified (for clients using Twitter API)
-               if ($id == 0) {
-                       throw new BadRequestException('Message id not specified');
-               }
-
                // add parent-uri to sql command if specified by calling app
                $sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . DBA::escape($parenturi) . "'" : "");
 
index 98da039869491b308e96df41626ed7d7da1e124e..5999022a3416e3133489645b9f39f652518622b8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 8df6c5ec066b1b4a175165a31b2a8dcee825f17d..7ac82533e843b1f50c81744e446f4e2723ee7ac0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index da93727f61807f4a9adc785987afcbfbba9da424..dacbabadfadd1c735ef84c2f3d61b5ab8cde5ebb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 0a51b0cbfc28f95fb647c24bc9e9f90f0abff94b..28b867889f600a08bebdd17e9cdf45521cb48a03 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -58,12 +58,12 @@ abstract class DirectMessagesEndpoint extends BaseApi
        protected function getMessages(array $request, int $uid, array $condition)
        {
                // params
-               $count    = filter_var($request['count'] ?? 20,                FILTER_VALIDATE_INT, ['options' => ['max_range' => 100]]);
-               $page     = filter_var($request['page'] ?? 1,                  FILTER_VALIDATE_INT, ['options' => ['min_range' => 1]]);
-               $since_id = filter_var($request['since_id'] ?? 0,              FILTER_VALIDATE_INT);
-               $max_id   = filter_var($request['max_id'] ?? 0,                FILTER_VALIDATE_INT);
-               $min_id   = filter_var($request['min_id'] ?? 0,                FILTER_VALIDATE_INT);
-               $verbose  = filter_var($request['friendica_verbose'] ?? false, FILTER_VALIDATE_BOOLEAN);
+               $count    = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page     = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
+               $verbose  = $this->getRequestValue($request, 'friendica_verbose', false);
 
                // pagination
                $start = max(0, ($page - 1) * $count);
@@ -84,7 +84,7 @@ abstract class DirectMessagesEndpoint extends BaseApi
                        $params['order'] = ['id'];
                }
 
-               $cid = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $_REQUEST['user_id'] ?? 0, 0);
+               $cid = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, 0);
                if (!empty($cid)) {
                        $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                        if (!empty($cdata['user'])) {
index 9a7149cab7c774afbbdf4dfb8c2b9eb07dd5749d..828741a195a7193034879a5b00cceba38837041c 100644 (file)
@@ -45,10 +45,11 @@ class Favorites extends BaseApi
                Logger::info(BaseApi::LOG_PREFIX . 'for {self}', ['module' => 'api', 'action' => 'favorites']);
 
                // params
-               $since_id = $request['since_id'] ?? 0;
-               $max_id   = $request['max_id']   ?? 0;
-               $count    = $request['count']    ?? 20;
-               $page     = $request['page']     ?? 1;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -64,8 +65,6 @@ class Favorites extends BaseApi
 
                $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-               $include_entities = strtolower(($request['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index a618304b218c1365297385ea91c0975c99eac231..df7120ab62ac1529664a10a39393efb114379937 100644 (file)
@@ -37,22 +37,15 @@ class Ids extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $contact_id    = filter_input(INPUT_GET, 'user_id'      , FILTER_VALIDATE_INT);
-               $screen_name   = filter_input(INPUT_GET, 'screen_name');
-               $profile_url   = filter_input(INPUT_GET, 'profile_url');
-               $cursor        = filter_input(INPUT_GET, 'cursor'       , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $stringify_ids = filter_input(INPUT_GET, 'stringify_ids', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count         = filter_input(INPUT_GET, 'count'        , FILTER_VALIDATE_INT, ['options' => [
-                       'default' => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
-               // Friendica-specific
-               $since_id      = filter_input(INPUT_GET, 'since_id'     , FILTER_VALIDATE_INT);
-               $max_id        = filter_input(INPUT_GET, 'max_id'       , FILTER_VALIDATE_INT);
-               $min_id        = filter_input(INPUT_GET, 'min_id'       , FILTER_VALIDATE_INT);
+               $cid           = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, $uid);
+               $cursor        = $this->getRequestValue($request, 'cursor', -1);
+               $stringify_ids = $this->getRequestValue($request, 'stringify_ids', false);
+               $count         = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
 
-               $cid = BaseApi::getContactIDForSearchterm($screen_name, $profile_url, $contact_id, $uid);
+               // Friendica-specific
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['relation-cid' => true], 'limit' => $count];
 
index a60226d05fb49aaef433a316325f72a4fe184079..0e9a2aa82a04a71da775a183ecbb75c4806fd8fc 100644 (file)
@@ -37,23 +37,16 @@ class Lists extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $contact_id            = filter_input(INPUT_GET, 'user_id'              , FILTER_VALIDATE_INT);
-               $screen_name           = filter_input(INPUT_GET, 'screen_name');
-               $profile_url           = filter_input(INPUT_GET, 'profile_url');
-               $cursor                = filter_input(INPUT_GET, 'cursor'               , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $skip_status           = filter_input(INPUT_GET, 'skip_status'          , FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $include_user_entities = filter_input(INPUT_GET, 'include_user_entities', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count                 = filter_input(INPUT_GET, 'count'                , FILTER_VALIDATE_INT, ['options' => [
-                       'default' => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
-               // Friendica-specific
-               $since_id              = filter_input(INPUT_GET, 'since_id', FILTER_VALIDATE_INT);
-               $max_id                = filter_input(INPUT_GET, 'max_id'  , FILTER_VALIDATE_INT);
-               $min_id                = filter_input(INPUT_GET, 'min_id'  , FILTER_VALIDATE_INT);
+               $cid                   = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, $uid);
+               $cursor                = $this->getRequestValue($request, 'cursor', -1);
+               $skip_status           = $this->getRequestValue($request, 'skip_status', false);
+               $include_user_entities = $this->getRequestValue($request, 'include_user_entities', false);
+               $count                 = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
 
-               $cid = BaseApi::getContactIDForSearchterm($screen_name, $profile_url, $contact_id, $uid);
+               // Friendica-specific
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['relation-cid' => true], 'limit' => $count];
 
index d810ceeb43033958b539ebef8e91f3b1ef272b3d..b5b571a9f06b6691b3346aa0ff444592908ca7a9 100644 (file)
@@ -37,22 +37,15 @@ class Ids extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $contact_id    = filter_input(INPUT_GET, 'user_id'      , FILTER_VALIDATE_INT);
-               $screen_name   = filter_input(INPUT_GET, 'screen_name');
-               $profile_url   = filter_input(INPUT_GET, 'profile_url');
-               $cursor        = filter_input(INPUT_GET, 'cursor'       , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $stringify_ids = filter_input(INPUT_GET, 'stringify_ids', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count         = filter_input(INPUT_GET, 'count'        , FILTER_VALIDATE_INT, ['options' => [
-                       'default' => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
-               // Friendica-specific
-               $since_id      = filter_input(INPUT_GET, 'since_id'     , FILTER_VALIDATE_INT);
-               $max_id        = filter_input(INPUT_GET, 'max_id'       , FILTER_VALIDATE_INT);
-               $min_id        = filter_input(INPUT_GET, 'min_id'       , FILTER_VALIDATE_INT);
+               $cid           = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, $uid);
+               $cursor        = $this->getRequestValue($request, 'cursor', -1);
+               $stringify_ids = $this->getRequestValue($request, 'stringify_ids', false);
+               $count         = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
 
-               $cid = BaseApi::getContactIDForSearchterm($screen_name, $profile_url, $contact_id, $uid);
+               // Friendica-specific
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['cid' => true], 'limit' => $count];
 
index dc2c26166d456c4675423ee30789d073737af1b1..750ba6db6128d93b8f8a1429c39fa2b8b537d45b 100644 (file)
@@ -37,23 +37,16 @@ class Lists extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $contact_id            = filter_input(INPUT_GET, 'user_id'              , FILTER_VALIDATE_INT);
-               $screen_name           = filter_input(INPUT_GET, 'screen_name');
-               $profile_url           = filter_input(INPUT_GET, 'profile_url');
-               $cursor                = filter_input(INPUT_GET, 'cursor'               , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $skip_status           = filter_input(INPUT_GET, 'skip_status'          , FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $include_user_entities = filter_input(INPUT_GET, 'include_user_entities', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count                 = filter_input(INPUT_GET, 'count'                , FILTER_VALIDATE_INT, ['options' => [
-                       'default' => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
-               // Friendica-specific
-               $since_id              = filter_input(INPUT_GET, 'since_id', FILTER_VALIDATE_INT);
-               $max_id                = filter_input(INPUT_GET, 'max_id'  , FILTER_VALIDATE_INT);
-               $min_id                = filter_input(INPUT_GET, 'min_id'  , FILTER_VALIDATE_INT);
+               $cid                   = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, $uid);
+               $cursor                = $this->getRequestValue($request, 'cursor', -1);
+               $skip_status           = $this->getRequestValue($request, 'skip_status', false);
+               $include_user_entities = $this->getRequestValue($request, 'include_user_entities', false);
+               $count                 = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
 
-               $cid = BaseApi::getContactIDForSearchterm($screen_name, $profile_url, $contact_id, $uid);
+               // Friendica-specific
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['cid' => true], 'limit' => $count];
 
index 315ef00332bc48e57769e96cdf184beae13b3dcd..378159c3c27c71b511b4b822027012d838fa3221 100644 (file)
@@ -37,17 +37,14 @@ class Incoming extends ContactEndpoint
                $uid = BaseApi::getCurrentUserID();
 
                // Expected value for user_id parameter: public/user contact id
-               $cursor        = filter_input(INPUT_GET, 'cursor'       , FILTER_VALIDATE_INT, ['options' => ['default' => -1]]);
-               $stringify_ids = filter_input(INPUT_GET, 'stringify_ids', FILTER_VALIDATE_BOOLEAN, ['options' => ['default' => false]]);
-               $count         = filter_input(INPUT_GET, 'count'        , FILTER_VALIDATE_INT, ['options' => [
-                       'default'   => self::DEFAULT_COUNT,
-                       'min_range' => 1,
-                       'max_range' => self::MAX_COUNT,
-               ]]);
+               $cursor        = $this->getRequestValue($request, 'cursor', -1);
+               $stringify_ids = $this->getRequestValue($request, 'stringify_ids', false);
+               $count         = $this->getRequestValue($request, 'count', self::DEFAULT_COUNT, 1, self::MAX_COUNT);
+
                // Friendica-specific
-               $since_id = filter_input(INPUT_GET, 'since_id', FILTER_VALIDATE_INT);
-               $max_id   = filter_input(INPUT_GET, 'max_id'  , FILTER_VALIDATE_INT);
-               $min_id   = filter_input(INPUT_GET, 'min_id'  , FILTER_VALIDATE_INT);
+               $since_id = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id   = $this->getRequestValue($request, 'max_id', 0, 0);
+               $min_id   = $this->getRequestValue($request, 'min_id', 0, 0);
 
                $params = ['order' => ['cid' => true], 'limit' => $count];
 
index 6db48506a34f5459c38d47f00ea1335de3241be8..66605e72650822f47483f75787ebb256dcffa083 100644 (file)
@@ -38,9 +38,9 @@ class Show extends ContactEndpoint
                self::checkAllowedScope(self::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
-               $source_cid = BaseApi::getContactIDForSearchterm($_REQUEST['source_screen_name'] ?? '', '', $_REQUEST['source_id'] ?? 0, $uid);
+               $source_cid = BaseApi::getContactIDForSearchterm($request['source_screen_name'] ?? '', '', $request['source_id'] ?? 0, $uid);
 
-               $target_cid = BaseApi::getContactIDForSearchterm($_REQUEST['target_screen_name'] ?? '', '', $_REQUEST['target_id'] ?? 0, $uid);
+               $target_cid = BaseApi::getContactIDForSearchterm($request['target_screen_name'] ?? '', '', $request['target_id'] ?? 0, $uid);
 
                $source = Contact::getById($source_cid);
                if (empty($source)) {
diff --git a/src/Module/Api/Twitter/Lists/Create.php b/src/Module/Api/Twitter/Lists/Create.php
new file mode 100644 (file)
index 0000000..26e94eb
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Twitter\Lists;
+
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Database\Database;
+use Friendica\Factory\Api\Friendica\Group as FriendicaGroup;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+use Friendica\Model\Group;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Update information about a group.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-update
+ */
+class Create extends BaseApi
+{
+       /** @var friendicaGroup */
+       private $friendicaGroup;
+
+       /** @var Database */
+       private $dba;
+
+       public function __construct(Database $dba, FriendicaGroup $friendicaGroup, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->dba            = $dba;
+               $this->friendicaGroup = $friendicaGroup;
+       }
+
+       protected function rawContent(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid = BaseApi::getCurrentUserID();
+
+               // params
+               $name = $this->getRequestValue($request, 'name', '');
+
+               if ($name == '') {
+                       throw new HTTPException\BadRequestException('group name not specified');
+               }
+
+               // error message if specified group name already exists
+               if ($this->dba->exists('group', ['uid' => $uid, 'name' => $name, 'deleted' => false])) {
+                       throw new HTTPException\BadRequestException('group name already exists');
+               }
+
+               $ret = Group::create($uid, $name);
+               if ($ret) {
+                       $gid = Group::getIdByName($uid, $name);
+               } else {
+                       throw new HTTPException\BadRequestException('other API error');
+               }
+
+               $grp = $this->friendicaGroup->createFromId($gid);
+
+               $this->response->exit('statuses', ['lists' => ['lists' => $grp]], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+       }
+}
diff --git a/src/Module/Api/Twitter/Lists/Destroy.php b/src/Module/Api/Twitter/Lists/Destroy.php
new file mode 100644 (file)
index 0000000..8390bab
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Twitter\Lists;
+
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Database\Database;
+use Friendica\Factory\Api\Friendica\Group as FriendicaGroup;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+use Friendica\Model\Group;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Delete a group.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-destroy
+ */
+class Destroy extends BaseApi
+{
+       /** @var friendicaGroup */
+       private $friendicaGroup;
+
+       /** @var Database */
+       private $dba;
+
+       public function __construct(Database $dba, FriendicaGroup $friendicaGroup, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->dba            = $dba;
+               $this->friendicaGroup = $friendicaGroup;
+       }
+
+       protected function rawContent(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid = BaseApi::getCurrentUserID();
+
+               // params
+               $gid = $this->getRequestValue($request, 'list_id', 0);
+
+               // error if no gid specified
+               if ($gid == 0) {
+                       throw new HTTPException\BadRequestException('gid not specified');
+               }
+
+               // get data of the specified group id
+               $group = $this->dba->selectFirst('group', [], ['uid' => $uid, 'id' => $gid]);
+               // error message if specified gid is not in database
+               if (!$group) {
+                       throw new HTTPException\BadRequestException('gid not available');
+               }
+
+               $list = $this->friendicaGroup->createFromId($gid);
+
+               if (Group::remove($gid)) {
+                       $this->response->exit('statuses', ['lists' => ['lists' => $list]], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+               }
+       }
+}
diff --git a/src/Module/Api/Twitter/Lists/Lists.php b/src/Module/Api/Twitter/Lists/Lists.php
new file mode 100644 (file)
index 0000000..09d740b
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Twitter\Lists;
+
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+
+/**
+ * Returns all lists the user subscribes to.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-list
+ */
+class Lists extends BaseApi
+{
+       protected function rawContent(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
+               $uid = BaseApi::getCurrentUserID();
+
+               // This is a dummy endpoint
+               $ret = [];
+               $this->response->exit('statuses', ["lists_list" => $ret], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+       }
+}
diff --git a/src/Module/Api/Twitter/Lists/Ownership.php b/src/Module/Api/Twitter/Lists/Ownership.php
new file mode 100644 (file)
index 0000000..e5aca1a
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Twitter\Lists;
+
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Database\Database;
+use Friendica\Factory\Api\Friendica\Group as FriendicaGroup;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Returns all groups the user owns.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships
+ */
+class Ownership extends BaseApi
+{
+       /** @var friendicaGroup */
+       private $friendicaGroup;
+
+       /** @var Database */
+       private $dba;
+
+       public function __construct(Database $dba, FriendicaGroup $friendicaGroup, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->dba            = $dba;
+               $this->friendicaGroup = $friendicaGroup;
+       }
+       protected function rawContent(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
+               $uid = BaseApi::getCurrentUserID();
+
+               $groups = $this->dba->select('group', [], ['deleted' => false, 'uid' => $uid]);
+
+               // loop through all groups
+               $lists = [];
+               foreach ($groups as $group) {
+                       $lists[] = $this->friendicaGroup->createFromId($group['id']);
+               }
+
+               $this->response->exit('statuses', ['lists' => ['lists' => $lists]], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+       }
+}
index 34220fe993bfd14e0e9198beef8065d86ef61703..2bf27697b4fd981106b0053c42c0613c19b446d1 100644 (file)
 
 namespace Friendica\Module\Api\Twitter\Lists;
 
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Database\Database;
 use Friendica\Database\DBA;
+use Friendica\Factory\Api\Twitter\Status as TwitterStatus;
 use Friendica\Module\BaseApi;
-use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Post;
-use Friendica\Network\HTTPException\BadRequestException;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
 
 /**
  * Returns recent statuses from users in the specified group.
@@ -35,26 +41,41 @@ use Friendica\Network\HTTPException\BadRequestException;
  */
 class Statuses extends BaseApi
 {
+       /** @var TwitterStatus */
+       private $twitterStatus;
+
+       /** @var Database */
+       private $dba;
+
+       public function __construct(Database $dba, TwitterStatus $twitterStatus, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->dba           = $dba;
+               $this->twitterStatus = $twitterStatus;
+       }
+
        protected function rawContent(array $request = [])
        {
                BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
                if (empty($request['list_id'])) {
-                       throw new BadRequestException('list_id not specified');
+                       throw new HTTPException\BadRequestException('list_id not specified');
                }
 
                // params
-               $count           = $request['count']    ?? 20;
-               $page            = $request['page']     ?? 1;
-               $since_id        = $request['since_id'] ?? 0;
-               $max_id          = $request['max_id']   ?? 0;
-               $exclude_replies = (!empty($request['exclude_replies']) ? 1 : 0);
-               $conversation_id = $request['conversation_id'] ?? 0;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $exclude_replies  = $this->getRequestValue($request, 'exclude_replies', false);
+               $conversation_id  = $this->getRequestValue($request, 'conversation_id', 0, 0);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
-               $groups    = DBA::selectToArray('group_member', ['contact-id'], ['gid' => $request['list_id']]);
+               $groups    = $this->dba->selectToArray('group_member', ['contact-id'], ['gid' => $request['list_id']]);
                $gids      = array_column($groups, 'contact-id');
                $condition = ['uid' => $uid, 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT], 'contact-id' => $gids];
                $condition = DBA::mergeConditions($condition, ["`id` > ?", $since_id]);
@@ -63,7 +84,7 @@ class Statuses extends BaseApi
                        $condition[0] .= " AND `id` <= ?";
                        $condition[] = $max_id;
                }
-               if ($exclude_replies > 0) {
+               if ($exclude_replies) {
                        $condition[0] .= ' AND `gravity` = ?';
                        $condition[] = GRAVITY_PARENT;
                }
@@ -75,13 +96,11 @@ class Statuses extends BaseApi
                $params   = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-               $include_entities = strtolower(($request['include_entities'] ?? 'false') == 'true');
-
                $items = [];
-               while ($status = DBA::fetch($statuses)) {
-                       $items[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
+               while ($status = $this->dba->fetch($statuses)) {
+                       $items[] = $this->twitterStatus->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
                }
-               DBA::close($statuses);
+               $this->dba->close($statuses);
 
                $this->response->exit('statuses', ['status' => $items], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
        }
diff --git a/src/Module/Api/Twitter/Lists/Update.php b/src/Module/Api/Twitter/Lists/Update.php
new file mode 100644 (file)
index 0000000..e7929e7
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Api\Twitter\Lists;
+
+use Friendica\App;
+use Friendica\Core\L10n;
+use Friendica\Database\Database;
+use Friendica\Factory\Api\Friendica\Group as FriendicaGroup;
+use Friendica\Module\BaseApi;
+use Friendica\Model\Contact;
+use Friendica\Model\Group;
+use Friendica\Module\Api\ApiResponse;
+use Friendica\Network\HTTPException;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Update information about a group.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/post-lists-update
+ */
+class Update extends BaseApi
+{
+       /** @var friendicaGroup */
+       private $friendicaGroup;
+
+       /** @var Database */
+       private $dba;
+
+       public function __construct(Database $dba, FriendicaGroup $friendicaGroup, App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
+       {
+               parent::__construct($app, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->dba            = $dba;
+               $this->friendicaGroup = $friendicaGroup;
+       }
+
+       protected function rawContent(array $request = [])
+       {
+               BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
+               $uid = BaseApi::getCurrentUserID();
+
+               // params
+               $gid  = $this->getRequestValue($request, 'list_id', 0);
+               $name = $this->getRequestValue($request, 'name', '');
+
+               // error if no gid specified
+               if ($gid == 0) {
+                       throw new HTTPException\BadRequestException('gid not specified');
+               }
+
+               // get data of the specified group id
+               $group = $this->dba->selectFirst('group', [], ['uid' => $uid, 'id' => $gid]);
+               // error message if specified gid is not in database
+               if (!$group) {
+                       throw new HTTPException\BadRequestException('gid not available');
+               }
+
+               if (Group::update($gid, $name)) {
+                       $list = $this->friendicaGroup->createFromId($gid);
+
+                       $this->response->exit('statuses', ['lists' => ['lists' => $list]], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+               }
+       }
+}
index 759c797a6e446756a9774e301e26eaa855dcf893..5da579b7cec6effd43ec240cb8b2f720d707ee6c 100644 (file)
@@ -41,26 +41,21 @@ class Tweets extends BaseApi
                BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
-               if (empty($_REQUEST['q'])) {
+               if (empty($request['q'])) {
                        throw new BadRequestException('q parameter is required.');
                }
 
-               $searchTerm = trim(rawurldecode($_REQUEST['q']));
+               $searchTerm = trim(rawurldecode($request['q']));
 
                $data['status'] = [];
 
-               $count = 15;
-
-               $exclude_replies = !empty($_REQUEST['exclude_replies']);
-               if (!empty($_REQUEST['rpp'])) {
-                       $count = $_REQUEST['rpp'];
-               } elseif (!empty($_REQUEST['count'])) {
-                       $count = $_REQUEST['count'];
-               }
-
-               $since_id = $_REQUEST['since_id'] ?? 0;
-               $max_id   = $_REQUEST['max_id']   ?? 0;
-               $page     = $_REQUEST['page']     ?? 1;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $count            = $this->getRequestValue($request, 'rpp', $count);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
+               $exclude_replies  = $this->getRequestValue($request, 'exclude_replies', false);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -115,8 +110,6 @@ class Tweets extends BaseApi
 
                $statuses = $statuses ?: Post::selectForUser($uid, [], $condition, $params);
 
-               $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index 784b8ef66f880299f61552cb11ec5f579d9bf7d2..be08483532887534edd1d8409075edd126f8e641 100644 (file)
@@ -21,7 +21,6 @@
 
 namespace Friendica\Module\Api\Twitter\Statuses;
 
-use Friendica\Core\Logger;
 use Friendica\Module\BaseApi;
 use Friendica\DI;
 use Friendica\Model\Contact;
@@ -40,17 +39,15 @@ class Destroy extends BaseApi
                BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
-               if (!empty($this->parameters['id'])) {
-                       $id = (int)$this->parameters['id'];
-               } elseif (!empty($request['id'])) {
-                       $id = (int)$request['id'];
-               } else {
+               $id = $this->getRequestValue($request, 'id', 0);
+               $id = $this->getRequestValue($this->parameters, 'id', $id);
+               if (empty($id)) {
                        throw new BadRequestException('An id is missing.');
                }
 
                $this->logger->notice('API: api_statuses_destroy: ' . $id);
 
-               $include_entities = strtolower(($request['include_entities'] ?? 'false') == 'true');
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $ret = DI::twitterStatus()->createFromItemId($id, $uid, $include_entities)->toArray();
 
index a9ed6a832bcd71bea4712ee2ac24aa0386beddcc..41314bb1b7ab614f62b67ba9532fdb7edc3425b6 100644 (file)
@@ -43,12 +43,13 @@ class HomeTimeline extends BaseApi
                // get last network messages
 
                // params
-               $count           = $_REQUEST['count']    ?? 20;
-               $page            = $_REQUEST['page']     ?? 0;
-               $since_id        = $_REQUEST['since_id'] ?? 0;
-               $max_id          = $_REQUEST['max_id']   ?? 0;
-               $exclude_replies = !empty($_REQUEST['exclude_replies']);
-               $conversation_id = $_REQUEST['conversation_id'] ?? 0;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $exclude_replies  = $this->getRequestValue($request, 'exclude_replies', false);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
+               $conversation_id  = $this->getRequestValue($request, 'conversation_id', 0, 0);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -71,8 +72,6 @@ class HomeTimeline extends BaseApi
                $params   = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-               $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                $ret     = [];
                $idarray = [];
                while ($status = DBA::fetch($statuses)) {
index 31cde911ebc1813e73ff64be0dbd1bc926284274..e9bbb93bdf413f00acc12e4bb0591f5780af053e 100644 (file)
@@ -42,10 +42,11 @@ class Mentions extends BaseApi
                // get last network messages
 
                // params
-               $since_id = $_REQUEST['since_id'] ?? 0;
-               $max_id   = $_REQUEST['max_id']   ?? 0;
-               $count    = $_REQUEST['count']    ?? 20;
-               $page     = $_REQUEST['page']     ?? 1;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -72,8 +73,6 @@ class Mentions extends BaseApi
                $params   = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-               $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index 5fa104e88f1049cd674f084f4424d624b1f8fd86..af0436b4a29afa6ae502ccd88ae1edb65c8f327e 100644 (file)
@@ -38,12 +38,11 @@ class NetworkPublicTimeline extends BaseApi
                BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
-               $since_id = $_REQUEST['since_id'] ?? 0;
-               $max_id   = $_REQUEST['max_id']   ?? 0;
-
-               // pagination
-               $count = $_REQUEST['count'] ?? 20;
-               $page  = $_REQUEST['page']  ?? 1;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -58,8 +57,6 @@ class NetworkPublicTimeline extends BaseApi
                $params   = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, Item::DISPLAY_FIELDLIST, $condition, $params);
 
-               $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index 0015d3e08d5420995e0e1a2b5e558583912a4d25..aba330a658bbc047a2d7991cdd46ffcc1af81e9d 100644 (file)
@@ -41,12 +41,13 @@ class PublicTimeline extends BaseApi
                // get last network messages
 
                // params
-               $count           = $_REQUEST['count']    ?? 20;
-               $page            = $_REQUEST['page']     ?? 1;
-               $since_id        = $_REQUEST['since_id'] ?? 0;
-               $max_id          = $_REQUEST['max_id']   ?? 0;
-               $exclude_replies = (!empty($_REQUEST['exclude_replies']) ? 1 : 0);
-               $conversation_id = $_REQUEST['conversation_id'] ?? 0;
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $exclude_replies  = $this->getRequestValue($request, 'exclude_replies', false);
+               $conversation_id  = $this->getRequestValue($request, 'conversation_id', 0, 0);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -78,8 +79,6 @@ class PublicTimeline extends BaseApi
                        $statuses = Post::selectForUser($uid, [], $condition, $params);
                }
 
-               $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index 587defb06f2c2968fdffbd2fe91c955901300928..1d67443b1c27d0d5b0c06c836b0260071f3ed1ba 100644 (file)
@@ -21,7 +21,6 @@
 
 namespace Friendica\Module\Api\Twitter\Statuses;
 
-use Friendica\Content\Text\BBCode;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\DI;
@@ -45,10 +44,10 @@ class Retweet extends BaseApi
                self::checkAllowedScope(self::SCOPE_WRITE);
                $uid = self::getCurrentUserID();
 
-               $id = $request['id'] ?? 0;
-
+               $id = $this->getRequestValue($request, 'id', 0);
+               $id = $this->getRequestValue($this->parameters, 'id', $id);
                if (empty($id)) {
-                       throw new BadRequestException('Item id not specified');
+                       throw new BadRequestException('An id is missing.');
                }
 
                $fields = ['uri-id', 'network', 'body', 'title', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink'];
index d0376975180df7b142e35b9b84c4268ec295cf15..64533d0bc9c89c52dda91e990f8bbdbe04ca363b 100644 (file)
@@ -41,10 +41,10 @@ class Show extends BaseApi
                BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
                $uid = BaseApi::getCurrentUserID();
 
-               if (empty($this->parameters['id'])) {
-                       $id = intval($request['id'] ?? 0);
-               } else {
-                       $id = (int)$this->parameters['id'];
+               $id = $this->getRequestValue($request, 'id', 0);
+               $id = $this->getRequestValue($this->parameters, 'id', $id);
+               if (empty($id)) {
+                       throw new BadRequestException('An id is missing.');
                }
 
                Logger::notice('API: api_statuses_show: ' . $id);
@@ -79,7 +79,7 @@ class Show extends BaseApi
                        throw new BadRequestException(sprintf("There is no status or conversation with the id %d.", $id));
                }
 
-               $include_entities = strtolower(($request['include_entities'] ?? 'false') == 'true');
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
index 2c884a6b6cb0063d8fc2f2a850bceeb4b63de81f..b6dcd86c9199041d3fb741ccd20f82056b3d401d 100644 (file)
@@ -42,15 +42,14 @@ class UserTimeline extends BaseApi
 
                Logger::info('api_statuses_user_timeline', ['api_user' => $uid, '_REQUEST' => $request]);
 
-               $cid             = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, $uid);
-               $since_id        = $request['since_id'] ?? 0;
-               $max_id          = $request['max_id']   ?? 0;
-               $exclude_replies = !empty($request['exclude_replies']);
-               $conversation_id = $request['conversation_id'] ?? 0;
-
-               // pagination
-               $count = $request['count'] ?? 20;
-               $page  = $request['page']  ?? 1;
+               $cid              = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, $uid);
+               $count            = $this->getRequestValue($request, 'count', 20, 1, 100);
+               $page             = $this->getRequestValue($request, 'page', 1, 1);
+               $since_id         = $this->getRequestValue($request, 'since_id', 0, 0);
+               $max_id           = $this->getRequestValue($request, 'max_id', 0, 0);
+               $exclude_replies  = $this->getRequestValue($request, 'exclude_replies', false);
+               $conversation_id  = $this->getRequestValue($request, 'conversation_id', 0, 0);
+               $include_entities = $this->getRequestValue($request, 'include_entities', false);
 
                $start = max(0, ($page - 1) * $count);
 
@@ -74,8 +73,6 @@ class UserTimeline extends BaseApi
                $params   = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-               $include_entities = strtolower(($request['include_entities'] ?? 'false') == 'true');
-
                $ret = [];
                while ($status = DBA::fetch($statuses)) {
                        $ret[] = DI::twitterStatus()->createFromUriId($status['uri-id'], $status['uid'], $include_entities)->toArray();
index 181a518356c007e7b58863c733e3b269241a001e..b6824140db632ab8b73afbff30f0042baf6af2ea 100644 (file)
@@ -82,7 +82,7 @@ class BaseApi extends BaseModule
        public function run(array $request = [], bool $scopecheck = true): ResponseInterface
        {
                if ($scopecheck) {
-                       switch ($this->server['REQUEST_METHOD'] ?? Router::GET) {
+                       switch ($this->args->getMethod()) {
                                case Router::DELETE:
                                case Router::PATCH:
                                case Router::POST:
index 3a45acb85c5dfffccb3bf10b7b835a9e4b70211c..bbb1d59e0d671142987449790811b6af76c22f2c 100644 (file)
@@ -73,12 +73,7 @@ class Advanced extends BaseModule
                $name        = ($_POST['name'] ?? '') ?: $contact['name'];
                $nick        = $_POST['nick'] ?? '';
                $url         = $_POST['url'] ?? '';
-               $alias       = $_POST['alias'] ?? '';
-               $request     = $_POST['request'] ?? '';
-               $confirm     = $_POST['confirm'] ?? '';
-               $notify      = $_POST['notify'] ?? '';
                $poll        = $_POST['poll'] ?? '';
-               $attag       = $_POST['attag'] ?? '';
                $photo       = $_POST['photo'] ?? '';
                $nurl        = Strings::normaliseLink($url);
 
@@ -89,12 +84,7 @@ class Advanced extends BaseModule
                                'nick'        => $nick,
                                'url'         => $url,
                                'nurl'        => $nurl,
-                               'alias'       => $alias,
-                               'request'     => $request,
-                               'confirm'     => $confirm,
-                               'notify'      => $notify,
                                'poll'        => $poll,
-                               'attag'       => $attag,
                        ],
                        ['id' => $contact['id'], 'uid' => local_user()]
                );
@@ -121,9 +111,6 @@ class Advanced extends BaseModule
 
                $this->page['aside'] = Widget\VCard::getHTML($contact);
 
-               $warning = $this->t('<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.');
-               $info    = $this->t('Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.');
-
                $returnaddr = "contact/$cid";
 
                // This data is fetched automatically for most networks.
@@ -139,22 +126,15 @@ class Advanced extends BaseModule
                $tpl = Renderer::getMarkupTemplate('contact/advanced.tpl');
                return Renderer::replaceMacros($tpl, [
                        '$tab_str'           => $tab_str,
-                       '$warning'           => $warning,
-                       '$info'              => $info,
                        '$returnaddr'        => $returnaddr,
                        '$return'            => $this->t('Return to contact editor'),
                        '$contact_id'        => $contact['id'],
                        '$lbl_submit'        => $this->t('Submit'),
 
                        '$name'    => ['name', $this->t('Name'), $contact['name'], '', '', $readonly],
-                       '$nick'    => ['nick', $this->t('Account Nickname'), $contact['nick'], '', '', $readonly],
-                       '$attag'   => ['attag', $this->t('@Tagname - overrides Name/Nickname'), $contact['attag']],
-                       '$url'     => ['url', $this->t('Account URL'), $contact['url'], '', '', $readonly],
-                       '$alias'   => ['alias', $this->t('Account URL Alias'), $contact['alias'], '', '', $readonly],
-                       '$request' => ['request', $this->t('Friend Request URL'), $contact['request'], '', '', $readonly],
-                       'confirm'  => ['confirm', $this->t('Friend Confirm URL'), $contact['confirm'], '', '', $readonly],
-                       'notify'   => ['notify', $this->t('Notification Endpoint URL'), $contact['notify'], '', '', $readonly],
-                       'poll'     => ['poll', $this->t('Poll/Feed URL'), $contact['poll'], '', '', $readonly],
+                       '$nick'    => ['nick', $this->t('Account Nickname'), $contact['nick'], '', '', 'readonly'],
+                       '$url'     => ['url', $this->t('Account URL'), $contact['url'], '', '', 'readonly'],
+                       'poll'     => ['poll', $this->t('Poll/Feed URL'), $contact['poll'], '', '', ($contact['network'] == Protocol::FEED) ? '' : 'readonly'],
                        'photo'    => ['photo', $this->t('New photo from this URL'), '', '', '', $readonly],
                ]);
        }
index 4d74935387e7633dd4041172344f3da13bbd8c60..65fb5a43ea454e5f643b78efa86219c364aebaad 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Contact;
 
index 0915a4bd21d63ce251ffb05fdcfd4144b49dc48f..a8f6254739c56a33753811f0ce19cbffbca02ed3 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 12ab757f3bb1dc1971b0c95cab7384f4e6bd672e..0bbc40a9806aac97ef6f2befffbec21135c4b772 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Contact;
 
index 9ade7ddc10a92e4d1bd996a120bac483509376f1..e02a6a3dc608562dba872ac608430ec8ba99e2bb 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 4ebd11d7ad20d15a5ea1c21930306b3a91a4043a..59b3bdafae803af66ca07bf072022dc5cf90a373 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index ac04cf2aef746ad2a50f2b45cb175c81b21bdf47..908d0a63b4df251c7c67935d8ab75b7a7d8963ba 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Conversation;
 
index 859b0621ebc5fa7d2ccd405afb1207042a8a4f97..8c6192e0a8ae80038fd9f6442130ee86de3d247c 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Events;
 
index 12055d7901b752236410786b40f0148b5a9de38a..b61cfd4326daa4140f7fb3874fb0c1cec26807c5 100644 (file)
@@ -1,4 +1,24 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
index 44176ecf8d3ea002b4ac3507cd579a329b693f33..71ce2beee2aca1a11a4402e3130266bf102c56fe 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module;
 
index a92568015ca72042361bb64425f90ba330feb578..6f58cb7f57caa8f741bc07078969f45511c08d38 100644 (file)
@@ -310,19 +310,26 @@ class Photo extends BaseModule
                                }
                                return MPhoto::createPhotoForExternalResource($url, 0, $mimetext);
                        case "header":
-                               $contact = Contact::getById($id, ['uid', 'url', 'header']);
+                               $fields = ['uid', 'url', 'header', 'network', 'gsid'];
+                               $contact = Contact::getById($id, $fields);
                                if (empty($contact)) {
                                        return false;
                                }
                                If (($contact['uid'] != 0) && empty($contact['header'])) {
-                                       $contact = Contact::getByURL($contact['url'], false, ['header']);
+                                       $contact = Contact::getByURL($contact['url'], false, $fields);
                                }
                                if (!empty($contact['header'])) {
                                        $url = $contact['header'];
                                } else {
-                                       $url = DI::baseUrl() . '/images/blank.png';
+                                       $url = Contact::getDefaultHeader($contact);
                                }
                                return MPhoto::createPhotoForExternalResource($url);
+                       case "banner":
+                               $photo = MPhoto::selectFirst([], ["scale" => 3, 'uid' => $id, 'photo-type' => MPhoto::USER_BANNER]);
+                               if (!empty($photo)) {
+                                       return $photo;
+                               }
+                               return MPhoto::createPhotoForExternalResource(DI::baseUrl() . '/images/friendica-banner.jpg');
                        case "profile":
                        case "custom":
                                $scale = 4;
index d24ebe954a8317aaa39a1fbf6a0cc1b8fb310a8f..f9d46da83b7c03679b188df009cb0f90075e5262 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module;
 
@@ -21,6 +40,10 @@ class Response implements ICanCreateResponses
         */
        protected $type = self::TYPE_HTML;
 
+       protected $status = 200;
+
+       protected $reason = null;
+
        /**
         * {@inheritDoc}
         */
@@ -73,6 +96,9 @@ class Response implements ICanCreateResponses
                }
 
                switch ($type) {
+                       case static::TYPE_HTML:
+                               $content_type = $content_type ?? 'text/html';
+                               break;
                        case static::TYPE_JSON:
                                $content_type = $content_type ?? 'application/json';
                                break;
@@ -92,6 +118,15 @@ class Response implements ICanCreateResponses
                $this->type = $type;
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       public function setStatus(int $status = 200, ?string $reason = null): void
+       {
+               $this->status = $status;
+               $this->reason = $reason;
+       }
+
        /**
         * {@inheritDoc}
         */
@@ -108,6 +143,6 @@ class Response implements ICanCreateResponses
                // Setting the response type as an X-header for direct usage
                $this->headers[static::X_HEADER] = $this->type;
 
-               return new \GuzzleHttp\Psr7\Response(200, $this->headers, $this->content);
+               return new \GuzzleHttp\Psr7\Response($this->status, $this->headers, $this->content, '1.1', $this->reason);
        }
 }
index cfecce8ebac289d8e6290902325317a3b2bfcdab..c3ad3df1c82aa006e21134b8c418ff1f0ba81b94 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Search;
 
index 97fb1660d575e6aa5e91f62fdc7379ef912cc1c0..12327a5918961af3875de186faa5d6b48acb23f7 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Settings\TwoFactor;
 
@@ -88,12 +107,12 @@ class Trusted extends BaseSettings
 
                $trustedBrowserDisplay = array_map(function (TwoFactor\Model\TrustedBrowser $trustedBrowser) use ($parser) {
                        $dates = [
-                               'created_ago' => Temporal::getRelativeDate($trustedBrowser->created),
-                               'created_utc' => DateTimeFormat::utc($trustedBrowser->created, 'c'),
-                               'created_local' => DateTimeFormat::local($trustedBrowser->created, 'r'),
-                               'last_used_ago' => Temporal::getRelativeDate($trustedBrowser->last_used),
-                               'last_used_utc' => DateTimeFormat::utc($trustedBrowser->last_used, 'c'),
-                               'last_used_local' => DateTimeFormat::local($trustedBrowser->last_used, 'r'),
+                               'created_ago'     => Temporal::getRelativeDate($trustedBrowser->created),
+                               'created_utc'     => DateTimeFormat::utc($trustedBrowser->created, 'c'),
+                               'created_local'   => DateTimeFormat::local($trustedBrowser->created, 'r'),
+                               'last_used_ago'   => Temporal::getRelativeDate($trustedBrowser->last_used),
+                               'last_used_utc'   => $trustedBrowser->last_used ? DateTimeFormat::utc($trustedBrowser->last_used, 'c') : '',
+                               'last_used_local' => $trustedBrowser->last_used ? DateTimeFormat::local($trustedBrowser->last_used, 'r') : '',
                        ];
 
                        $result = $parser->parse($trustedBrowser->user_agent);
index e1b247f10251f874ea5f0e2072a854aa80ea310c..1d47df4fd3d6b3b79a6e02febd4add097cf0d3e2 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 34bb67538555dd37e8103d59ba9a76263924c528..95448606e5020fd2142cab89082de4f6a47e13ff 100644 (file)
@@ -89,7 +89,7 @@ class HTTPException
                header($_SERVER["SERVER_PROTOCOL"] . ' ' . $e->getCode() . ' ' . $e->getDescription());
 
                if ($e->getCode() >= 400) {
-                       Logger::debug('Exit with error', ['code' => $e->getCode(), 'description' => $e->getDescription(), 'query' => DI::args()->getQueryString(), 'callstack' => System::callstack(20), 'method' => $_SERVER['REQUEST_METHOD'], 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
+                       Logger::debug('Exit with error', ['code' => $e->getCode(), 'description' => $e->getDescription(), 'query' => DI::args()->getQueryString(), 'callstack' => System::callstack(20), 'method' => DI::args()->getMethod(), 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
                }
 
                $tpl = Renderer::getMarkupTemplate('exception.tpl');
diff --git a/src/Module/Special/Options.php b/src/Module/Special/Options.php
new file mode 100644 (file)
index 0000000..79ce5d0
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Module\Special;
+
+use Friendica\App\Router;
+use Friendica\BaseModule;
+use Friendica\Module\Response;
+
+/**
+ * Returns the allowed HTTP methods based on the route information
+ *
+ * It's a special class which shouldn't be called directly
+ *
+ * @see Router::getModuleClass()
+ */
+class Options extends BaseModule
+{
+       protected function rawContent(array $request = [])
+       {
+               $allowedMethods = $this->parameters['AllowedMethods'] ?? Router::ALLOWED_METHODS;
+
+               // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS
+               $this->response->setHeader(implode(',', $allowedMethods), 'Allow');
+               $this->response->setStatus(204);
+               $this->response->setType(Response::TYPE_BLANK);
+       }
+}
index 073df23810400175dedbccb8f42557111e498b75..be842112d481a5d8f98a161ee2f93263bc9198f2 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module\Update;
 
index 22e6e4a997b1e371dd57624cb31cdfa7981f1d2c..b97b9f89e5d955a9c8286e8d20a0e3843343a477 100644 (file)
@@ -70,32 +70,35 @@ class Profile extends BaseModule
 
                $last_updated = $last_updated_array[$last_updated_key] ?? 0;
 
+               $condition = ["`uid` = ? AND NOT `contact-blocked` AND NOT `contact-pending`
+                               AND `visible` AND (NOT `deleted` OR `gravity` = ?)
+                               AND `wall` " . $sql_extra, $a->getProfileOwner(), GRAVITY_ACTIVITY];
+
                if ($_GET['force'] && !empty($_GET['item'])) {
                        // When the parent is provided, we only fetch this
-                       $sql_extra4 = " AND `parent` = " . intval($_GET['item']);
+                       $condition = DBA::mergeConditions($condition, ['parent' => $_GET['item']]);
                } elseif ($is_owner || !$last_updated) {
                        // 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.
-                       $sql_extra4 = " AND `unseen`";
+                       $condition = DBA::mergeConditions($condition, ['unseen' => true]);
                } else {
                        $gmupdate = gmdate(DateTimeFormat::MYSQL, $last_updated);
-                       $sql_extra4 = " AND `received` > '" . $gmupdate . "'";
+                       $condition = DBA::mergeConditions($condition, ["`received` > ?", $gmupdate]);
                }
 
-               $items_stmt = DBA::p(
-                       "SELECT `parent-uri-id` AS `uri-id`, MAX(`created`), MAX(`received`) FROM `post-user-view`
-                               WHERE `uid` = ? AND NOT `contact-blocked` AND NOT `contact-pending`
-                               AND `visible` AND (NOT `deleted` OR `gravity` = ?)
-                               AND `wall` $sql_extra4 $sql_extra
-                       GROUP BY `parent-uri-id` ORDER BY `received` DESC",
-                       $a->getProfileOwner(),
-                       GRAVITY_ACTIVITY
-               );
-
-               if (!DBA::isResult($items_stmt)) {
+               $items = Post::selectToArray(['parent-uri-id', 'created', 'received'], $condition, ['group_by' => ['parent-uri-id'], 'order' => ['received' => true]]);
+               if (!DBA::isResult($items)) {
                        return;
                }
 
+               // @todo the DBA functions should handle "SELECT field AS alias" in the future,
+               // so that this workaround here could be removed.
+               $items = array_map(function ($item) {
+                       $item['uri-id'] = $item['parent-uri-id'];
+                       unset($item['parent-uri-id']);
+                       return $item;
+               }, $items);
+
                // Set a time stamp for this page. We will make use of it when we
                // search for new items (update routine)
                $last_updated_array[$last_updated_key] = time();
@@ -113,8 +116,6 @@ class Profile extends BaseModule
                        }
                }
 
-               $items = DBA::toArray($items_stmt);
-
                $o .= DI::conversation()->create($items, 'profile', $a->getProfileOwner(), false, 'received', $a->getProfileOwner());
 
                System::htmlUpdateExit($o);
index e24db4e64b27a6aca2b9ad926a74da6208b0bce6..15cf3be537b93dc27867fbe3257d1bd6c9aa2206 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Entity;
 
index 1a97835b6ed96d8a397e82e1bcb46d0b4fe40ba5..bf47bdafc676e9df24bc4601e531a7b522f90d56 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Entity;
 
index 5dd78902833939cded18676d0b5796f9f96d2f91..0de8ca25e50c9619d894d31aabc5582e00d27788 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Exception;
 
index e370608af5a9ade2a608a9c3c5047aadf77e567f..ff0ac9ca2dde301d5eca5ff73fdbaf0f6fc71fb2 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Exception;
 
index 38a69504bc8473ac7bfcff30bcdbb3b06801dfd7..f1df3c173b271089923839a20aee2b0a942281a4 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index e8ff9ea30f40ea1d9f5f915c13ca656805d9758b..68b2e8a70108514c1c3b028f33d68452bac55aaa 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Factory;
 
index 87ba7d2fe73a51b89c14c187c5df31106b9a4442..fbc61447024504dfbf9d8389e9c43bca731df9f7 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Factory;
 
index 8dac7935433ea2b790fc2ab0b1b30c5168c6b8c2..c4035663b0203f497dc5a8748bb917b086339499 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Repository;
 
index bfef9bd207648217f9d636d372a354b0209cdd44..9b195a753bcf6e37968e81e44790fc3ab42c1712 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Navigation\Notifications\Repository;
 
index b0ad0a96827a1428b19c14f19c803cd746f4bee2..e2db2f50fca6263a1ae008010085dfabb4283d85 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Network\HTTPClient\Capability;
 
index 42df3bc74afcd188a426169484674bd7f457b3b3..d84b44d454f9ad3910879d0b73a3385475a3419e 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license GNU APGL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index bb7685dcf29fc04ea0fbe2df7f7b2289cdb5972d..f6d0cf577491747ef453314a0456ca10a61f51c3 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license GNU APGL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index fa684c76313ec89a31df2bc2335c03624dc945a2..fd0279a0ade5f5930bd6bf112e297817b74fe651 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Network\HTTPClient\Client;
 
index 18fc73ab88b25640f2458af21a651220f0066313..b3fd76936eb136a22b1fb3eba76ae654f06f7298 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Network\HTTPClient\Factory;
 
index 722ec5331526bd7fe20b3f616146dd413ceb0bc1..667ff09a6ee81fb7d9ed0c858d94ddbb5063a2d0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
diff --git a/src/Object/Api/Friendica/Group.php b/src/Object/Api/Friendica/Group.php
new file mode 100644 (file)
index 0000000..36dd6df
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Object\Api\Friendica;
+
+use Friendica\BaseDataTransferObject;
+
+/**
+ * Class Group
+ *
+ *
+ */
+class Group extends BaseDataTransferObject
+{
+       /** @var string */
+       protected $name;
+       /** @var int */
+       protected $id;
+       /** @var string */
+       protected $id_str;
+       /** @var array */
+       protected $user;
+       /** @var string */
+       protected $mode;
+
+       /**
+        * Creates an Group entity array
+        *
+        * @param array $group
+        * @param array $user
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        */
+       public function __construct(array $group, array $user)
+       {
+               $this->name   = $group['name'];
+               $this->id     = $group['id'];
+               $this->id_str = (string)$group['id'];
+               $this->user   = $user;
+               $this->mode   = $group['visible'] ? 'public' : 'private';
+       }
+}
index 02794ef1871c560e6fe025552a663318751f67c6..a8c4da9966eb819ba36e8eee69b98463c8fbd2fd 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * @copyright Copyright (C) 2010-2022, the Friendica project
  *
- * @license   GNU AGPL version 3 or any later version
+ * @license GNU AGPL version 3 or any later version
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index d34ef46b51c8814984b0f29026359f6a89dadeda..e67cc914958418a90f23ccd783437833b2cd3a68 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 93a15374bb759ff41ef731048a75b8c1ff7e02ad..7b330fdedaf0496414bf3861db71de9b74b596fc 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2021, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
index 827f1dc23809b55b1b618a1ebfff957367e36aa7..0561f5506c7a2680b245a34ede7bdd0e65e7a15e 100644 (file)
@@ -135,8 +135,6 @@ class Post
         */
        public function getTemplateData(array $conv_responses, string $formSecurityToken, $thread_level = 1)
        {
-               $a = DI::app();
-
                $item = $this->getData();
                $edited = false;
                // If the time between "created" and "edited" differs we add
@@ -177,6 +175,8 @@ class Post
                        ? DI::l10n()->t('Private Message')
                        : false);
 
+               $connector = !$item['global'] ? DI::l10n()->t('Connector Message') : false;
+
                $shareable = in_array($conv->getProfileOwner(), [0, local_user()]) && $item['private'] != Item::PRIVATE;
                $announceable = $shareable && in_array($item['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::TWITTER]);
 
@@ -469,6 +469,7 @@ class Post
                        'app'             => $item['app'],
                        'created'         => $ago,
                        'lock'            => $lock,
+                       'connector'       => $connector,
                        'location_html'   => $location_html,
                        'indent'          => $indent,
                        'shiny'           => $shiny,
@@ -477,6 +478,7 @@ class Post
                        'owner_photo'     => DI::baseUrl()->remove(Contact::getAvatarUrlForUrl($item['owner-link'], $item['uid'], Proxy::SIZE_THUMB)),
                        'owner_name'      => $this->getOwnerName(),
                        'plink'           => Item::getPlink($item),
+                       'browsershare'    => DI::l10n()->t('Share'),
                        'edpost'          => $edpost,
                        'ispinned'        => $ispinned,
                        'pin'             => $pin,
index 5941a408b7824dc779128b08e254a325bb7442f8..38999eb0dacd8602b820166fecffc6d09289c36f 100644 (file)
@@ -258,6 +258,8 @@ class Processor
                        $item['post-type'] = Item::PT_IMAGE;
                } elseif ($activity['object_type'] == 'as:Page') {
                        $item['post-type'] = Item::PT_PAGE;
+               } elseif ($activity['object_type'] == 'as:Question') {
+                       $item['post-type'] = Item::PT_POLL;
                } elseif ($activity['object_type'] == 'as:Video') {
                        $item['post-type'] = Item::PT_VIDEO;
                } else {
index 81cc9b4e63cd136151665d13ca4ba4b0d3ce18b7..4504cee4c49367b7e587d0b2d767ba21a0e55aff 100644 (file)
@@ -56,7 +56,7 @@ class Receiver
 {
        const PUBLIC_COLLECTION = 'as:Public';
        const ACCOUNT_TYPES = ['as:Person', 'as:Organization', 'as:Service', 'as:Group', 'as:Application'];
-       const CONTENT_TYPES = ['as:Note', 'as:Article', 'as:Video', 'as:Image', 'as:Event', 'as:Audio'];
+       const CONTENT_TYPES = ['as:Note', 'as:Article', 'as:Video', 'as:Image', 'as:Event', 'as:Audio', 'as:Page', 'as:Question'];
        const ACTIVITY_TYPES = ['as:Like', 'as:Dislike', 'as:Accept', 'as:Reject', 'as:TentativeAccept'];
 
        const TARGET_UNKNOWN = 0;
@@ -321,9 +321,32 @@ class Receiver
 
                $object_type = self::fetchObjectType($activity, $object_id, $uid);
 
+               // Fetch the activity on Lemmy "Announce" messages (announces of activities)
+               if (($type == 'as:Announce') && in_array($object_type, array_merge(self::ACTIVITY_TYPES, ['as:Delete', 'as:Undo', 'as:Update']))) {
+                       $data = ActivityPub::fetchContent($object_id, $uid);
+                       if (!empty($data)) {
+                               $type = $object_type;
+                               $activity = JsonLD::compact($data);
+
+                               // Some variables need to be refetched since the activity changed
+                               $actor = JsonLD::fetchElement($activity, 'as:actor', '@id');
+                               $object_id = JsonLD::fetchElement($activity, 'as:object', '@id');
+                               $object_type = self::fetchObjectType($activity, $object_id, $uid);
+                       }
+               }
+
+               // Any activities on account types must not be altered
+               if (in_array($object_type, self::ACCOUNT_TYPES)) {
+                       $object_data = [];
+                       $object_data['id'] = JsonLD::fetchElement($activity, '@id');
+                       $object_data['object_id'] = JsonLD::fetchElement($activity, 'as:object', '@id');
+                       $object_data['object_actor'] = JsonLD::fetchElement($activity['as:object'], 'as:actor', '@id');
+                       $object_data['object_object'] = JsonLD::fetchElement($activity['as:object'], 'as:object');
+                       $object_data['object_type'] = JsonLD::fetchElement($activity['as:object'], '@type');
+                       $object_data['push'] = $push;
+               } elseif (in_array($type, ['as:Create', 'as:Update', 'as:Announce']) || strpos($type, '#emojiReaction')) {
                // Fetch the content only on activities where this matters
                // We can receive "#emojiReaction" when fetching content from Hubzilla systems
-               if (in_array($type, ['as:Create', 'as:Update', 'as:Announce']) || strpos($type, '#emojiReaction')) {
                        // Always fetch on "Announce"
                        $object_data = self::fetchObject($object_id, $activity['as:object'], $trust_source && ($type != 'as:Announce'), $uid);
                        if (empty($object_data)) {
@@ -347,7 +370,7 @@ class Receiver
                        }
                } elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Follow'])) && in_array($object_type, self::CONTENT_TYPES)) {
                        // Create a mostly empty array out of the activity data (instead of the object).
-                       // This way we later don't have to check for the existence of ech individual array element.
+                       // This way we later don't have to check for the existence of each individual array element.
                        $object_data = self::processObject($activity);
                        $object_data['name'] = $type;
                        $object_data['author'] = JsonLD::fetchElement($activity, 'as:actor', '@id');
@@ -473,6 +496,12 @@ class Receiver
                        return;
                }
 
+               // Lemmy is announcing activities.
+               // We are changing the announces into regular activities.
+               if (($type == 'as:Announce') && in_array($object_data['type'] ?? '', array_merge(self::ACTIVITY_TYPES, ['as:Delete', 'as:Undo', 'as:Update']))) {
+                       $type = $object_data['type'];
+               }
+
                if (!$trust_source) {
                        Logger::info('Activity trust could not be achieved.',  ['id' => $object_data['object_id'], 'type' => $type, 'signer' => $signer, 'actor' => $actor, 'attributedTo' => $attributed_to]);
                        return;
@@ -955,6 +984,18 @@ class Receiver
                        return false;
                }
 
+               // Lemmy is resharing "create" activities instead of content
+               // We fetch the content from the activity.
+               if (in_array($type, ['as:Create'])) {
+                       $object = $object['as:object'];
+                       $type = JsonLD::fetchElement($object, '@type');
+                       if (empty($type)) {
+                               Logger::info('Empty type');
+                               return false;
+                       }
+                       $object_data = self::processObject($object);
+               }
+
                // We currently don't handle 'pt:CacheFile', but with this step we avoid logging
                if (in_array($type, self::CONTENT_TYPES) || ($type == 'pt:CacheFile')) {
                        $object_data = self::processObject($object);
@@ -1329,6 +1370,14 @@ class Receiver
                // An empty "id" field is translated to "./" by the compactor, so we have to check for this content
                if (empty($object_data['reply-to-id']) || ($object_data['reply-to-id'] == './')) {
                        $object_data['reply-to-id'] = $object_data['id'];
+
+                       // On activities the "reply to" is the id of the object it refers to
+                       if (in_array($object_data['object_type'], self::ACTIVITY_TYPES)) {
+                               $object_id = JsonLD::fetchElement($object, 'as:object', '@id');
+                               if (!empty($object_id)) {
+                                       $object_data['reply-to-id'] = $object_id;
+                               }
+                       }
                } else {
                        // Some systems (e.g. GNU Social) don't reply to the "id" field but the "uri" field.
                        $replyToId = Item::getURIByLink($object_data['reply-to-id']);
index d276814f5d3e21a17055d14bfd8198c5be77ec58..45879df2aef340a08a4ccfc8afa022ac79be35a5 100644 (file)
@@ -2712,6 +2712,9 @@ class Diaspora
 
                        $datarray["object-type"] = Activity\ObjectType::IMAGE;
                        $datarray["post-type"] = Item::PT_IMAGE;
+               } elseif ($data->poll) {
+                       $datarray["object-type"] = Activity\ObjectType::NOTE;
+                       $datarray["post-type"] = Item::PT_POLL;
                } else {
                        $datarray["object-type"] = Activity\ObjectType::NOTE;
                        $datarray["post-type"] = Item::PT_NOTE;
index 3b4e8c5b1a302a3eeb358f2dfe3c3b2f2bc43117..a402218f5662890c5bea84cbd9907695254b29d9 100644 (file)
@@ -1,6 +1,22 @@
 <?php
-
 /**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  * ejabberd extauth script for the integration with friendica
  *
  * Originally written for joomla by Dalibor Karlovic <dado@krizevci.info>
index 9ebff3eb6706f7c4e6a243bb7344a75bfb023d2c..9241313f7ed380aef719b49c14c1aa41a4897c45 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1;
 
index f4164255cd850ff8d646ab34728af419d9c4db19..899db15a5b2c1d5bbeb4e4aaad16aaf867596abd 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1;
 
index 917dbedf1cc55271af6177b5b976c1d5b7c2b128..dd0212bacf2d995fe58638ad6c6ed79a38c6ab88 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1;
 
index a4ceda7dd96721fd247006a63ee423ae8ee34220..18e9e1bc31d7feaece1022ade84c7b5f3fe6229e 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1;
 
index 749229e29bdbc548030037fc2dafa3c37cbc372e..2ff049e8b67bb2a31edd86a8db5e0f5fe0bb01d1 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1;
 
index 7f6fbadffe270a65291a036bc2b34fda27439255..e1ddfeace005150cbf8ea805641bc74519ee962c 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1;
 
index 52b10631fecdd79c673cd05330c9ce23617a6a24..20a287ea1e69beeabee82d7f5aa5c8c760b2eb36 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1\Signature;
 
index b7afe1d4c25bd35e51d218a8cc44f0abc055533d..30b4801f607a57321a96d68ca8ed20649cde3a60 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1\Signature;
 
index acf5e0e0dd7f336b4799ada6e768ac4efbf66ad5..158a72b15bcbe7718e1200cc4e5631b5635449fa 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1\Signature;
 
index 1d60aadda8c37ec33a5c34374e10f6ab5e733743..530c285e3bd157ee81ec5be35e5a9cba6431e765 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\OAuth1\Signature;
 
index b14e4d832021197174869f3f51506f9ec1485e89..30d19a35d64b250fb82840112a42a35a0f7a9d98 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\PermissionSet\Exception;
 
index edb2006ba7b22db4cc75665f027a12c930674e93..ae181fe5cd425d0713af3f0f6ad4bbd7a0672d83 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Security\PermissionSet\Exception;
 
index 13e03c6639fe7f7dce5347d9c1b7da4d60926f27..6d1ef0bdcc8e5b9a09f3f1551e38812d484828e7 100644 (file)
@@ -86,11 +86,9 @@ class AppSpecificPassword
                $appSpecificPasswords = DBA::toArray($appSpecificPasswordsStmt);
 
                array_walk($appSpecificPasswords, function (&$value) {
-                       $last_used = $value['last_used'] ?? DBA::NULL_DATETIME;
-
-                       $value['ago'] = Temporal::getRelativeDate($last_used);
-                       $value['utc'] = DateTimeFormat::utc($last_used, 'c');
-                       $value['local'] = DateTimeFormat::local($last_used, 'r');
+                       $value['ago']   = Temporal::getRelativeDate($value['last_used']);
+                       $value['utc']   = $value['last_used'] ? DateTimeFormat::utc($value['last_used'], 'c') : '';
+                       $value['local'] = $value['last_used'] ? DateTimeFormat::local($value['last_used'], 'r') : '';
                });
 
                return $appSpecificPasswords;
index de0ee93511cefdb28609c51993589e7c684ac610..7603b622b73e410b141a5e664282614136a3d695 100644 (file)
@@ -28,9 +28,7 @@ use Friendica\DI;
 use Friendica\Model\APContact;
 use Friendica\Model\Contact;
 use Friendica\Model\User;
-use Friendica\Network\HTTPClient\Response\CurlResult;
 use Friendica\Network\HTTPClient\Client\HttpClientOptions;
-use Friendica\Network\HTTPClient\Capability\ICanHandleHttpResponses;
 
 /**
  * Implements HTTP Signatures per draft-cavage-http-signatures-07.
@@ -66,7 +64,7 @@ class HTTPSignature
 
                // Decide if $data arrived via controller submission or curl.
                $headers = [];
-               $headers['(request-target)'] = strtolower($_SERVER['REQUEST_METHOD']).' '.$_SERVER['REQUEST_URI'];
+               $headers['(request-target)'] = strtolower(DI::args()->getMethod()).' '.$_SERVER['REQUEST_URI'];
 
                foreach ($_SERVER as $k => $v) {
                        if (strpos($k, 'HTTP_') === 0) {
@@ -493,7 +491,7 @@ class HTTPSignature
                }
 
                $headers = [];
-               $headers['(request-target)'] = strtolower($http_headers['REQUEST_METHOD']) . ' ' . parse_url($http_headers['REQUEST_URI'], PHP_URL_PATH);
+               $headers['(request-target)'] = strtolower(DI::args()->getMethod()) . ' ' . parse_url($http_headers['REQUEST_URI'], PHP_URL_PATH);
 
                // First take every header
                foreach ($http_headers as $k => $v) {
@@ -511,6 +509,15 @@ class HTTPSignature
 
                $sig_block = self::parseSigHeader($http_headers['HTTP_SIGNATURE']);
 
+               // Add fields from the signature block to the header. See issue 8845
+               if (!empty($sig_block['created']) && empty($headers['(created)'])) {
+                       $headers['(created)'] = $sig_block['created'];
+               }
+
+               if (!empty($sig_block['expires']) && empty($headers['(expires)'])) {
+                       $headers['(expires)'] = $sig_block['expires'];
+               }
+
                if (empty($sig_block) || empty($sig_block['headers']) || empty($sig_block['keyId'])) {
                        Logger::info('No headers or keyId');
                        return false;
@@ -520,6 +527,8 @@ class HTTPSignature
                foreach ($sig_block['headers'] as $h) {
                        if (array_key_exists($h, $headers)) {
                                $signed_data .= $h . ': ' . $headers[$h] . "\n";
+                       } else {
+                               Logger::info('Requested header field not found', ['field' => $h, 'header' => $headers]);
                        }
                }
                $signed_data = rtrim($signed_data, "\n");
@@ -574,7 +583,7 @@ class HTTPSignature
                }
 
                if (!Crypto::rsaVerify($signed_data, $sig_block['signature'], $key['pubkey'], $algorithm)) {
-                       Logger::info('Verification failed');
+                       Logger::info('Verification failed', ['signed_data' => $signed_data, 'algorithm' => $algorithm, 'header' => $sig_block['headers'], 'http_headers' => $http_headers]);
                        return false;
                }
 
@@ -600,13 +609,35 @@ class HTTPSignature
                        $hasGoodSignedContent = true;
                }
 
+               if (in_array('date', $sig_block['headers']) && !empty($headers['date'])) {
+                       $created = strtotime($headers['date']);
+               } elseif (in_array('(created)', $sig_block['headers']) && !empty($sig_block['created'])) {
+                       $created = $sig_block['created'];
+               } else {
+                       $created = 0;
+               }
+
+               if (in_array('(expires)', $sig_block['headers']) && !empty($sig_block['expires'])) {
+                       $expired = min($sig_block['expires'], $created + 300);
+               } else {
+                       $expired = $created + 300;
+               }
+
                //  Check if the signed date field is in an acceptable range
-               if (in_array('date', $sig_block['headers'])) {
-                       $diff = abs(strtotime($headers['date']) - time());
-                       if ($diff > 300) {
-                               Logger::notice("Header date '" . $headers['date'] . "' is with " . $diff . " seconds out of the 300 second frame. The signature is invalid.");
+               if (!empty($created)) {
+                       $current = time();
+
+                       if ($created > $current) {
+                               Logger::notice('Signature created in the future', ['created' => date(DateTimeFormat::MYSQL, $created), 'expired' => date(DateTimeFormat::MYSQL, $expired), 'current' => date(DateTimeFormat::MYSQL, $current)]);
                                return false;
                        }
+
+                       if ($current > $expired) {
+                               Logger::notice('Signature expired', ['created' => date(DateTimeFormat::MYSQL, $created), 'expired' => date(DateTimeFormat::MYSQL, $expired), 'current' => date(DateTimeFormat::MYSQL, $current)]);
+                               return false;
+                       }
+
+                       Logger::debug('Valid creation date', ['created' => date(DateTimeFormat::MYSQL, $created), 'expired' => date(DateTimeFormat::MYSQL, $expired), 'current' => date(DateTimeFormat::MYSQL, $current)]);
                        $hasGoodSignedContent = true;
                }
 
index cd4704dcee068018ec0f1a4c4b8a701930e257f6..077509d3cb5e6e1c64105e2a7886bd131cf31be5 100644 (file)
@@ -46,6 +46,30 @@ class Images
                return $m;
        }
 
+       /**
+        * Return file extension for mime type
+        * @param string $mimetype
+        * @return string
+        */
+       public static function getExtensionByMimeType(string $mimetype): string
+       {
+               switch ($mimetype) {
+                       case 'image/png':
+                               $imagetype = IMAGETYPE_PNG;
+                               break;
+
+                       case 'image/gif':
+                               $imagetype = IMAGETYPE_GIF;
+                               break;
+
+                       default:
+                               $imagetype = IMAGETYPE_JPEG;
+                               break;
+               }
+
+               return image_type_to_extension($imagetype);
+       }
+
        /**
         * Returns supported image mimetypes and corresponding file extensions
         *
index c1fcff28e6b2ef380eb3d8ec425a620c1435b4a3..2763f56abf52aefc8090779b7fca8090906478ab 100644 (file)
@@ -60,6 +60,12 @@ class ParseUrl
        public static function getContentType(string $url)
        {
                $curlResult = DI::httpClient()->head($url);
+
+               // Workaround for systems that can't handle a HEAD request
+               if (!$curlResult->isSuccess() && ($curlResult->getReturnCode() == 405)) {
+                       $curlResult = DI::httpClient()->get($url, [HttpClientOptions::CONTENT_LENGTH => 1000000]);
+               }
+
                if (!$curlResult->isSuccess()) {
                        return [];
                }
@@ -216,6 +222,7 @@ class ParseUrl
 
                $curlResult = DI::httpClient()->get($url, [HttpClientOptions::CONTENT_LENGTH => 1000000]);
                if (!$curlResult->isSuccess() || empty($curlResult->getBody())) {
+                       Logger::info('Empty body or error when fetching', ['url' => $url, 'success' => $curlResult->isSuccess(), 'code' => $curlResult->getReturnCode()]);
                        return $siteinfo;
                }
 
index 92c8cced184e1db5c8b602815ed3a4a9373af302..0566002de29e899e75034972d51f2fa4ad023be1 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2021, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
diff --git a/src/Util/Router/FriendicaGroupCountBased.php b/src/Util/Router/FriendicaGroupCountBased.php
new file mode 100644 (file)
index 0000000..46e718e
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Util\Router;
+
+use FastRoute\Dispatcher\GroupCountBased;
+
+/**
+ * Extends the Fast-Router collector for getting the possible HTTP method options for a given URI
+ */
+class FriendicaGroupCountBased extends GroupCountBased
+{
+       /**
+        * Returns all possible HTTP methods for a given URI
+        *
+        * @param $uri
+        *
+        * @return array
+        *
+        * @todo Distinguish between an invalid route and the asterisk (*) default route
+        */
+       public function getOptions($uri): array
+       {
+               $varRouteData = $this->variableRouteData;
+
+               // Find allowed methods for this URI by matching against all other HTTP methods as well
+               $allowedMethods = [];
+
+               foreach ($this->staticRouteMap as $method => $uriMap) {
+                       if (isset($uriMap[$uri])) {
+                               $allowedMethods[] = $method;
+                       }
+               }
+
+               foreach ($varRouteData as $method => $routeData) {
+                       $result = $this->dispatchVariableRoute($routeData, $uri);
+                       if ($result[0] === self::FOUND) {
+                               $allowedMethods[] = $method;
+                       }
+               }
+
+               return $allowedMethods;
+       }
+}
index bb66270860ec79d81f844a8533b7f23b640f735a..f46b1b0d9a3bd3f3c7048e77bead9ded198d985d 100644 (file)
@@ -446,26 +446,9 @@ class Notifier
                        if ($diaspora_delivery && !$unlisted) {
                                $batch_delivery = true;
 
-                               $participants_stmt = DBA::p(
-                                       "SELECT
-                                               `batch`, `network`, `protocol`,
-                                               ANY_VALUE(`id`) AS `id`,
-                                               ANY_VALUE(`url`) AS `url`,
-                                               ANY_VALUE(`name`) AS `name`
-                                       FROM `contact`
-                                       WHERE `network` = ?
-                                       AND `batch` != ''
-                                       AND `uid` = ?
-                                       AND `rel` != ?
-                                       AND NOT `blocked`
-                                       AND NOT `pending`
-                                       AND NOT `archive`
-                                       GROUP BY `batch`, `network`, `protocol`",
-                                       Protocol::DIASPORA,
-                                       $owner['uid'],
-                                       Contact::SHARING
-                               );
-                               $participants = DBA::toArray($participants_stmt);
+                               $participants = DBA::selectToArray('contact', ['batch', 'network', 'protocol', 'id', 'url', 'name'],
+                                       ["`network` = ? AND `batch` != '' AND `uid` = ? AND `rel` != ? AND NOT `blocked` AND NOT `pending` AND NOT `archive`", Protocol::DIASPORA, $owner['uid'], Contact::SHARING],
+                                       ['group_by' => ['batch', 'network', 'protocol']]);
 
                                // Fetch the participation list
                                // The function will ensure that there are no duplicates
index 37c3d54d04f2f8fcc98bb209ffbdc35f5ae65449..758462ca034911afa578d667d082471fc415819d 100644 (file)
@@ -42,10 +42,10 @@ $profileRoutes = [
 
 $apiRoutes = [
        '/account' => [
-               '/verify_credentials[.{extension:json|xml|rss|atom}]'      => [Module\Api\Twitter\Account\VerifyCredentials::class, [R::GET         ]],
-               '/rate_limit_status[.{extension:json|xml|rss|atom}]'       => [Module\Api\Twitter\Account\RateLimitStatus::class,   [R::GET         ]],
-               '/update_profile[.{extension:json|xml|rss|atom}]'          => [Module\Api\Twitter\Account\UpdateProfile ::class,    [        R::POST]],
-               '/update_profile_image[.{extension:json|xml|rss|atom}]'    => [Module\Api\Friendica\Index::class,                   [        R::POST]],
+               '/verify_credentials[.{extension:json|xml|rss|atom}]'      => [Module\Api\Twitter\Account\VerifyCredentials::class,  [R::GET         ]],
+               '/rate_limit_status[.{extension:json|xml|rss|atom}]'       => [Module\Api\Twitter\Account\RateLimitStatus::class,    [R::GET         ]],
+               '/update_profile[.{extension:json|xml|rss|atom}]'          => [Module\Api\Twitter\Account\UpdateProfile ::class,     [        R::POST]],
+               '/update_profile_image[.{extension:json|xml|rss|atom}]'    => [Module\Api\Twitter\Account\UpdateProfileImage::class, [        R::POST]],
        ],
 
        '/blocks/ids[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Twitter\Blocks\Ids::class,               [R::GET         ]],
@@ -80,18 +80,18 @@ $apiRoutes = [
                '/direct_messages_setseen[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\DirectMessages\Setseen::class, [        R::POST]],
                '/direct_messages_search[.{extension:json|xml|rss|atom}]'  => [Module\Api\Friendica\DirectMessages\Search ::class, [R::GET         ]],
                '/events[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Friendica\Events\Index::class,           [R::GET         ]],
-               '/group_show[.{extension:json|xml|rss|atom}]'              => [Module\Api\Friendica\Index::class,                  [R::GET         ]],
-               '/group_create[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Index::class,                  [        R::POST]],
+               '/group_show[.{extension:json|xml|rss|atom}]'              => [Module\Api\Friendica\Group\Show::class,             [R::GET         ]],
+               '/group_create[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Group\Create::class,           [        R::POST]],
                '/group_delete[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Group\Delete::class,           [        R::POST]],
                '/group_update[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Group\Update::class,           [        R::POST]],
                '/profile/show[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Profile\Show::class,           [R::GET         ]],
                '/photoalbum/delete[.{extension:json|xml|rss|atom}]'       => [Module\Api\Friendica\Photoalbum\Delete::class,      [        R::POST]],
                '/photoalbum/update[.{extension:json|xml|rss|atom}]'       => [Module\Api\Friendica\Photoalbum\Update::class,      [        R::POST]],
-               '/photos/list[.{extension:json|xml|rss|atom}]'             => [Module\Api\Friendica\Index::class,                  [R::GET         ]],
-               '/photo/create[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Index::class,                  [        R::POST]],
+               '/photos/list[.{extension:json|xml|rss|atom}]'             => [Module\Api\Friendica\Photo\Lists::class,            [R::GET         ]],
+               '/photo/create[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Photo\Create::class,           [        R::POST]],
                '/photo/delete[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Photo\Delete::class,           [        R::POST]],
-               '/photo/update[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Index::class,                  [        R::POST]],
-               '/photo[.{extension:json|xml|rss|atom}]'                   => [Module\Api\Friendica\Index::class,                  [R::GET         ]],
+               '/photo/update[.{extension:json|xml|rss|atom}]'            => [Module\Api\Friendica\Photo\Update::class,           [        R::POST]],
+               '/photo[.{extension:json|xml|rss|atom}]'                   => [Module\Api\Friendica\Photo::class,                  [R::GET         ]],
        ],
 
        '/gnusocial/config[.{extension:json|xml|rss|atom}]'            => [Module\Api\GNUSocial\GNUSocial\Config::class,  [R::GET         ]],
@@ -99,13 +99,13 @@ $apiRoutes = [
        '/help/test[.{extension:json|xml|rss|atom}]'                   => [Module\Api\GNUSocial\Help\Test::class,         [R::GET         ]],
 
        '/lists' => [
-               '/create[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Friendica\Index::class,        [        R::POST]],
-               '/destroy[.{extension:json|xml|rss|atom}]'                 => [Module\Api\Friendica\Index::class,        [        R::POST]],
-               '/list[.{extension:json|xml|rss|atom}]'                    => [Module\Api\Friendica\Index::class,        [R::GET         ]],
-               '/ownerships[.{extension:json|xml|rss|atom}]'              => [Module\Api\Friendica\Index::class,        [R::GET         ]],
-               '/statuses[.{extension:json|xml|rss|atom}]'                => [Module\Api\Twitter\Lists\Statuses::class, [R::GET         ]],
-               '/subscriptions[.{extension:json|xml|rss|atom}]'           => [Module\Api\Friendica\Index::class,        [R::GET         ]],
-               '/update[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Friendica\Index::class,        [        R::POST]],
+               '/create[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Twitter\Lists\Create::class,    [        R::POST]],
+               '/destroy[.{extension:json|xml|rss|atom}]'                 => [Module\Api\Twitter\Lists\Destroy::class,   [        R::POST]],
+               '/list[.{extension:json|xml|rss|atom}]'                    => [Module\Api\Twitter\Lists\Lists::class,     [R::GET         ]],
+               '/ownerships[.{extension:json|xml|rss|atom}]'              => [Module\Api\Twitter\Lists\Ownership::class, [R::GET         ]],
+               '/statuses[.{extension:json|xml|rss|atom}]'                => [Module\Api\Twitter\Lists\Statuses::class,  [R::GET         ]],
+               '/subscriptions[.{extension:json|xml|rss|atom}]'           => [Module\Api\Friendica\Lists\Lists::class,   [R::GET         ]],
+               '/update[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Twitter\Lists\Update::class,    [        R::POST]],
        ],
 
        '/media/upload[.{extension:json|xml|rss|atom}]'                    => [Module\Api\Twitter\Media\Upload::class,             [        R::POST]],
@@ -120,6 +120,7 @@ $apiRoutes = [
 
        '/statuses' => [
                '/destroy[.{extension:json|xml|rss|atom}]'                 => [Module\Api\Twitter\Statuses\Destroy::class,               [        R::POST]],
+               '/destroy/{id:\d+}[.{extension:json|xml|rss|atom}]'        => [Module\Api\Twitter\Statuses\Destroy::class,               [        R::POST]],
                '/followers[.{extension:json|xml|rss|atom}]'               => [Module\Api\Twitter\Followers\Lists::class,                [R::GET         ]],
                '/friends[.{extension:json|xml|rss|atom}]'                 => [Module\Api\Twitter\Friends\Lists::class,                  [R::GET         ]],
                '/friends_timeline[.{extension:json|xml|rss|atom}]'        => [Module\Api\Twitter\Statuses\HomeTimeline::class,          [R::GET         ]],
@@ -131,6 +132,7 @@ $apiRoutes = [
                '/public_timeline[.{extension:json|xml|rss|atom}]'         => [Module\Api\Twitter\Statuses\PublicTimeline::class,        [R::GET         ]],
                '/replies[.{extension:json|xml|rss|atom}]'                 => [Module\Api\Twitter\Statuses\Mentions::class,              [R::GET         ]],
                '/retweet[.{extension:json|xml|rss|atom}]'                 => [Module\Api\Twitter\Statuses\Retweet::class,               [        R::POST]],
+               '/retweet/{id:\d+}[.{extension:json|xml|rss|atom}]'        => [Module\Api\Twitter\Statuses\Retweet::class,               [        R::POST]],
                '/show[.{extension:json|xml|rss|atom}]'                    => [Module\Api\Twitter\Statuses\Show::class,                  [R::GET         ]],
                '/show/{id:\d+}[.{extension:json|xml|rss|atom}]'           => [Module\Api\Twitter\Statuses\Show::class,                  [R::GET         ]],
                '/update[.{extension:json|xml|rss|atom}]'                  => [Module\Api\Twitter\Statuses\Update::class,                [        R::POST]],
index 17760c85d4b5c41c3929d263e85b0c7ca80132b0..94b6a35b71286b1dd733f6c593efc28a3343b70d 100644 (file)
@@ -1,11 +1,30 @@
 <?php
 /**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  * FixtureTest class.
  */
 
 namespace Friendica\Test;
 
 use Dice\Dice;
+use Friendica\App\Arguments;
+use Friendica\App\Router;
 use Friendica\Core\Config\ValueObject\Cache;
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\Session;
@@ -30,10 +49,19 @@ abstract class FixtureTest extends DatabaseTest
        {
                parent::setUp();
 
+               $server                   = $_SERVER;
+               $server['REQUEST_METHOD'] = Router::GET;
+
                $this->dice = (new Dice())
                        ->addRules(include __DIR__ . '/../static/dependencies.config.php')
                        ->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true])
-                       ->addRule(IHandleSessions::class, ['instanceOf' => Session\Type\Memory::class, 'shared' => true, 'call' => null]);
+                       ->addRule(IHandleSessions::class, ['instanceOf' => Session\Type\Memory::class, 'shared' => true, 'call' => null])
+                       ->addRule(Arguments::class, [
+                               'instanceOf' => Arguments::class,
+                               'call'       => [
+                                       ['determine', [$server, $_GET], Dice::CHAIN_CALL],
+                               ],
+                       ]);
                DI::init($this->dice);
 
                /** @var IManageConfigValues $config */
@@ -50,4 +78,20 @@ abstract class FixtureTest extends DatabaseTest
                // Load the API dataset for the whole API
                $this->loadFixture(__DIR__ . '/datasets/api.fixture.php', $dba);
        }
+
+       protected function useHttpMethod(string $method = Router::GET)
+       {
+               $server                   = $_SERVER;
+               $server['REQUEST_METHOD'] = $method;
+
+               $this->dice = $this->dice
+                       ->addRule(Arguments::class, [
+                               'instanceOf' => Arguments::class,
+                               'call'       => [
+                                       ['determine', [$server, $_GET], Dice::CHAIN_CALL],
+                               ],
+                       ]);
+
+               DI::init($this->dice);
+       }
 }
index dc9f635c39712bf80c36c1dc48ccf1438e54d694..1288ec68be4010a1661d15ade2b5fc3f684792df 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\Util;
 
index ad2592d0777a53a665bb670890932afbdb7d493e..fa29191d9040d9ec5c9ee83b849c2d821ed0575e 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\Util;
 
index ed5e371e455d50629b2f4bc6f2037e37901a7b3c..d29f088d275bd611aef22957b3d86db662584733 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\Util;
 
diff --git a/tests/Util/DateTimeFormatMockTrait.php b/tests/Util/DateTimeFormatMockTrait.php
deleted file mode 100644 (file)
index 9052096..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-namespace Friendica\Test\Util;
-
-use Friendica\Util\DateTimeFormat;
-use Mockery\MockInterface;
-
-trait DateTimeFormatMockTrait
-{
-       /**
-        * @var MockInterface The mocking interface of Friendica\Database\DBA
-        */
-       private $dtfMock;
-
-       public function mockUtcNow($time, $times = null)
-       {
-               if (!isset($this->dtfMock)) {
-                       $this->dtfMock = \Mockery::mock('alias:'. DateTimeFormat::class);
-               }
-
-               $this->dtfMock
-                       ->shouldReceive('utcNow')
-                       ->andReturn($time)
-                       ->times($times);
-       }
-
-       public function mockUtc($input, $time, $times = null)
-       {
-               if (!isset($this->dtfMock)) {
-                       $this->dtfMock = \Mockery::mock('alias:' . DateTimeFormat::class);
-               }
-
-               $this->dtfMock
-                       ->shouldReceive('utc')
-                       ->with($input)
-                       ->andReturn($time)
-                       ->times($times);
-       }
-}
index 161e0f0db5ca730c331792fed7cad54565b72421..b0dbbd8634cc51c329a51e8b2fed18e67b4b614c 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\Util;
 
index 414e96dc944a6cc43656a4211588a544d8a5ae00..603462387a33a4ce4d1500d7a09bcef0caba50a1 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\Util;
 
index fbc95aa9af86527d8b5f9756752d6dce897ecf1a..bcaa9f1063786d43fe2754003ed89280e0943321 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\Util;
 
diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php
deleted file mode 100644 (file)
index 7d08b6e..0000000
+++ /dev/null
@@ -1,805 +0,0 @@
-<?php
-/**
- * ApiTest class.
- */
-
-namespace Friendica\Test\legacy;
-
-use Friendica\App;
-use Friendica\Core\Config\Capability\IManageConfigValues;
-use Friendica\DI;
-use Friendica\Module\BaseApi;
-use Friendica\Security\BasicAuth;
-use Friendica\Test\FixtureTest;
-use Friendica\Util\Arrays;
-use Friendica\Util\DateTimeFormat;
-use Monolog\Handler\TestHandler;
-
-require_once __DIR__ . '/../../include/api.php';
-
-/**
- * Tests for the API functions.
- *
- * Functions that use header() need to be tested in a separate process.
- * @see https://phpunit.de/manual/5.7/en/appendixes.annotations.html#appendixes.annotations.runTestsInSeparateProcesses
- *
- * @backupGlobals enabled
- */
-class ApiTest extends FixtureTest
-{
-       /**
-        * @var TestHandler Can handle log-outputs
-        */
-       protected $logOutput;
-
-       /** @var array */
-       protected $selfUser;
-       /** @var array */
-       protected $friendUser;
-       /** @var array */
-       protected $otherUser;
-
-       protected $wrongUserId;
-
-       /** @var App */
-       protected $app;
-
-       /** @var IManageConfigValues */
-       protected $config;
-
-       /**
-        * Create variables used by tests.
-        */
-       protected function setUp() : void
-       {
-               global $API, $called_api;
-               $API = [];
-               $called_api = [];
-
-               parent::setUp();
-
-               /** @var IManageConfigValues $config */
-               $this->config = $this->dice->create(IManageConfigValues::class);
-
-               $this->config->set('system', 'url', 'http://localhost');
-               $this->config->set('system', 'hostname', 'localhost');
-               $this->config->set('system', 'worker_dont_fork', true);
-
-               // Default config
-               $this->config->set('config', 'hostname', 'localhost');
-               $this->config->set('system', 'throttle_limit_day', 100);
-               $this->config->set('system', 'throttle_limit_week', 100);
-               $this->config->set('system', 'throttle_limit_month', 100);
-               $this->config->set('system', 'theme', 'system_theme');
-
-
-               /** @var App app */
-               $this->app = DI::app();
-
-               DI::args()->setArgc(1);
-
-               // User data that the test database is populated with
-               $this->selfUser   = [
-                       'id'   => 42,
-                       'name' => 'Self contact',
-                       'nick' => 'selfcontact',
-                       'nurl' => 'http://localhost/profile/selfcontact'
-               ];
-               $this->friendUser = [
-                       'id'   => 44,
-                       'name' => 'Friend contact',
-                       'nick' => 'friendcontact',
-                       'nurl' => 'http://localhost/profile/friendcontact'
-               ];
-               $this->otherUser  = [
-                       'id'   => 43,
-                       'name' => 'othercontact',
-                       'nick' => 'othercontact',
-                       'nurl' => 'http://localhost/profile/othercontact'
-               ];
-
-               // User ID that we know is not in the database
-               $this->wrongUserId = 666;
-
-               DI::session()->start();
-
-               // Most API require login so we force the session
-               $_SESSION = [
-                       'authenticated' => true,
-                       'uid'           => $this->selfUser['id']
-               ];
-               BasicAuth::setCurrentUserID($this->selfUser['id']);
-       }
-
-       /**
-        * Assert that a list array contains expected keys.
-        *
-        * @param array $list List array
-        *
-        * @return void
-        */
-       private function assertList(array $list = [])
-       {
-               self::assertIsString($list['name']);
-               self::assertIsInt($list['id']);
-               self::assertIsString('string', $list['id_str']);
-               self::assertContains($list['mode'], ['public', 'private']);
-               // We could probably do more checks here.
-       }
-
-       /**
-        * Assert that the string is XML and contain the root element.
-        *
-        * @param string $result       XML string
-        * @param string $root_element Root element name
-        *
-        * @return void
-        */
-       private function assertXml($result = '', $root_element = '')
-       {
-               self::assertStringStartsWith('<?xml version="1.0"?>', $result);
-               self::assertStringContainsString('<' . $root_element, $result);
-               // We could probably do more checks here.
-       }
-
-       /**
-        * Test the api_user() function.
-        *
-        * @return void
-        */
-       public function testApiUser()
-       {
-               self::assertEquals($this->selfUser['id'], BaseApi::getCurrentUserID());
-       }
-
-
-
-       /**
-        * Test the api_source() function.
-        *
-        * @return void
-        */
-       public function testApiSource()
-       {
-               self::assertEquals('api', BasicAuth::getCurrentApplicationToken()['name']);
-       }
-
-       /**
-        * Test the api_source() function with a Twidere user agent.
-        *
-        * @return void
-        */
-       public function testApiSourceWithTwidere()
-       {
-               $_SERVER['HTTP_USER_AGENT'] = 'Twidere';
-               self::assertEquals('Twidere', BasicAuth::getCurrentApplicationToken()['name']);
-       }
-
-       /**
-        * Test the api_source() function with a GET parameter.
-        *
-        * @return void
-        */
-       public function testApiSourceWithGet()
-       {
-               $_REQUEST['source'] = 'source_name';
-               self::assertEquals('source_name', BasicAuth::getCurrentApplicationToken()['name']);
-       }
-
-       /**
-        * Test the api_date() function.
-        *
-        * @return void
-        */
-       public function testApiDate()
-       {
-               self::assertEquals('Wed Oct 10 00:00:00 +0000 1990', DateTimeFormat::utc('1990-10-10', DateTimeFormat::API));
-       }
-
-       /**
-        * Test the api_register_func() function.
-        *
-        * @return void
-        */
-       public function testApiRegisterFunc()
-       {
-               global $API;
-               self::assertNull(
-                       api_register_func(
-                               'api_path',
-                               function () {
-                               },
-                               true,
-                               'method'
-                       )
-               );
-               self::assertTrue(is_callable($API['api_path']['func']));
-       }
-
-       /**
-        * Test the BasicAuth::getCurrentUserID() function without any login.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        * @preserveGlobalState disabled
-        */
-       public function testApiLoginWithoutLogin()
-       {
-               BasicAuth::setCurrentUserID();
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               BasicAuth::getCurrentUserID(true);
-       }
-
-       /**
-        * Test the BasicAuth::getCurrentUserID() function with a bad login.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        * @preserveGlobalState disabled
-        */
-       public function testApiLoginWithBadLogin()
-       {
-               BasicAuth::setCurrentUserID();
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               $_SERVER['PHP_AUTH_USER'] = 'user@server';
-               BasicAuth::getCurrentUserID(true);
-       }
-
-       /**
-        * Test the BasicAuth::getCurrentUserID() function with oAuth.
-        *
-        * @return void
-        */
-       public function testApiLoginWithOauth()
-       {
-               $this->markTestIncomplete('Can we test this easily?');
-       }
-
-       /**
-        * Test the BasicAuth::getCurrentUserID() function with authentication provided by an addon.
-        *
-        * @return void
-        */
-       public function testApiLoginWithAddonAuth()
-       {
-               $this->markTestIncomplete('Can we test this easily?');
-       }
-
-       /**
-        * Test the BasicAuth::getCurrentUserID() function with a correct login.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        * @doesNotPerformAssertions
-        */
-       public function testApiLoginWithCorrectLogin()
-       {
-               BasicAuth::setCurrentUserID();
-               $_SERVER['PHP_AUTH_USER'] = 'Test user';
-               $_SERVER['PHP_AUTH_PW']   = 'password';
-               BasicAuth::getCurrentUserID(true);
-       }
-
-       /**
-        * Test the BasicAuth::getCurrentUserID() function with a remote user.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiLoginWithRemoteUser()
-       {
-               BasicAuth::setCurrentUserID();
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               $_SERVER['REDIRECT_REMOTE_USER'] = '123456dXNlcjpwYXNzd29yZA==';
-               BasicAuth::getCurrentUserID(true);
-       }
-
-       /**
-        * Test the api_call() function.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiCall()
-       {
-               global $API;
-               $API['api_path']           = [
-                       'method' => 'method',
-                       'func'   => function () {
-                               return ['data' => ['some_data']];
-                       }
-               ];
-               $_SERVER['REQUEST_METHOD'] = 'method';
-               $_SERVER['QUERY_STRING'] = 'pagename=api_path';
-               $_GET['callback']          = 'callback_name';
-
-               self::assertEquals(
-                       'callback_name(["some_data"])',
-                       api_call('api_path', 'json')
-               );
-       }
-
-       /**
-        * Test the api_call() function with the profiled enabled.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiCallWithProfiler()
-       {
-               global $API;
-               $API['api_path']           = [
-                       'method' => 'method',
-                       'func'   => function () {
-                               return ['data' => ['some_data']];
-                       }
-               ];
-
-               $_SERVER['REQUEST_METHOD'] = 'method';
-               $_SERVER['QUERY_STRING'] = 'pagename=api_path';
-
-               $this->config->set('system', 'profiler', true);
-               $this->config->set('rendertime', 'callstack', true);
-               $this->app->callstack = [
-                       'database'       => ['some_function' => 200],
-                       'database_write' => ['some_function' => 200],
-                       'cache'          => ['some_function' => 200],
-                       'cache_write'    => ['some_function' => 200],
-                       'network'        => ['some_function' => 200]
-               ];
-
-               self::assertEquals(
-                       '["some_data"]',
-                       api_call('api_path', 'json')
-               );
-       }
-
-       /**
-        * Test the api_call() function with a JSON result.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiCallWithJson()
-       {
-               global $API;
-               $API['api_path']           = [
-                       'method' => 'method',
-                       'func'   => function () {
-                               return ['data' => ['some_data']];
-                       }
-               ];
-               $_SERVER['REQUEST_METHOD'] = 'method';
-               $_SERVER['QUERY_STRING'] = 'pagename=api_path.json';
-
-               self::assertEquals(
-                       '["some_data"]',
-                       api_call('api_path.json', 'json')
-               );
-       }
-
-       /**
-        * Test the api_call() function with an XML result.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiCallWithXml()
-       {
-               global $API;
-               $API['api_path']           = [
-                       'method' => 'method',
-                       'func'   => function () {
-                               return 'some_data';
-                       }
-               ];
-               $_SERVER['REQUEST_METHOD'] = 'method';
-               $_SERVER['QUERY_STRING'] = 'pagename=api_path.xml';
-
-               $args = DI::args()->determine($_SERVER, $_GET);
-
-               self::assertEquals(
-                       'some_data',
-                       api_call('api_path.xml', 'xml')
-               );
-       }
-
-       /**
-        * Test the api_call() function with an RSS result.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiCallWithRss()
-       {
-               global $API;
-               $API['api_path']           = [
-                       'method' => 'method',
-                       'func'   => function () {
-                               return 'some_data';
-                       }
-               ];
-               $_SERVER['REQUEST_METHOD'] = 'method';
-               $_SERVER['QUERY_STRING'] = 'pagename=api_path.rss';
-
-               self::assertEquals(
-                       '<?xml version="1.0" encoding="UTF-8"?>' . "\n" .
-                       'some_data',
-                       api_call('api_path.rss', 'rss')
-               );
-       }
-
-       /**
-        * Test the api_call() function with an Atom result.
-        *
-        * @runInSeparateProcess
-        * @preserveGlobalState disabled
-        */
-       public function testApiCallWithAtom()
-       {
-               global $API;
-               $API['api_path']           = [
-                       'method' => 'method',
-                       'func'   => function () {
-                               return 'some_data';
-                       }
-               ];
-               $_SERVER['REQUEST_METHOD'] = 'method';
-               $_SERVER['QUERY_STRING'] = 'pagename=api_path.atom';
-
-               self::assertEquals(
-                       '<?xml version="1.0" encoding="UTF-8"?>' . "\n" .
-                       'some_data',
-                       api_call('api_path.atom', 'atom')
-               );
-       }
-
-       /**
-        * Test the Arrays::walkRecursive() function.
-        *
-        * @return void
-        */
-       public function testApiWalkRecursive()
-       {
-               $array = ['item1'];
-               self::assertEquals(
-                       $array,
-                       Arrays::walkRecursive(
-                               $array,
-                               function () {
-                                       // Should we test this with a callback that actually does something?
-                                       return true;
-                               }
-                       )
-               );
-       }
-
-       /**
-        * Test the Arrays::walkRecursive() function with an array.
-        *
-        * @return void
-        */
-       public function testApiWalkRecursiveWithArray()
-       {
-               $array = [['item1'], ['item2']];
-               self::assertEquals(
-                       $array,
-                       Arrays::walkRecursive(
-                               $array,
-                               function () {
-                                       // Should we test this with a callback that actually does something?
-                                       return true;
-                               }
-                       )
-               );
-       }
-
-       /**
-        * Test the api_lists_list() function.
-        *
-        * @return void
-        */
-       public function testApiListsList()
-       {
-               $result = api_lists_list('json');
-               self::assertEquals(['lists_list' => []], $result);
-       }
-
-       /**
-        * Test the api_lists_ownerships() function.
-        *
-        * @return void
-        */
-       public function testApiListsOwnerships()
-       {
-               $result = api_lists_ownerships('json');
-               foreach ($result['lists']['lists'] as $list) {
-                       self::assertList($list);
-               }
-       }
-
-       /**
-        * Test the api_lists_ownerships() function without an authenticated user.
-        *
-        * @return void
-        */
-       public function testApiListsOwnershipsWithoutAuthenticatedUser()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               BasicAuth::setCurrentUserID();
-               $_SESSION['authenticated'] = false;
-               api_lists_ownerships('json');
-       }
-
-       /**
-        * Test the api_fr_photos_list() function.
-        *
-        * @return void
-        */
-       public function testApiFrPhotosList()
-       {
-               $result = api_fr_photos_list('json');
-               self::assertArrayHasKey('photo', $result);
-       }
-
-       /**
-        * Test the api_fr_photos_list() function without an authenticated user.
-        *
-        * @return void
-        */
-       public function testApiFrPhotosListWithoutAuthenticatedUser()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               BasicAuth::setCurrentUserID();
-               $_SESSION['authenticated'] = false;
-               api_fr_photos_list('json');
-       }
-
-       /**
-        * Test the api_fr_photo_create_update() function.
-        */
-       public function testApiFrPhotoCreateUpdate()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               api_fr_photo_create_update('json');
-       }
-
-       /**
-        * Test the api_fr_photo_create_update() function without an authenticated user.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoCreateUpdateWithoutAuthenticatedUser()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               BasicAuth::setCurrentUserID();
-               $_SESSION['authenticated'] = false;
-               api_fr_photo_create_update('json');
-       }
-
-       /**
-        * Test the api_fr_photo_create_update() function with an album name.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoCreateUpdateWithAlbum()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               $_REQUEST['album'] = 'album_name';
-               api_fr_photo_create_update('json');
-       }
-
-       /**
-        * Test the api_fr_photo_create_update() function with the update mode.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoCreateUpdateWithUpdate()
-       {
-               $this->markTestIncomplete('We need to create a dataset for this');
-       }
-
-       /**
-        * Test the api_fr_photo_create_update() function with an uploaded file.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoCreateUpdateWithFile()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the api_fr_photo_detail() function.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoDetail()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               api_fr_photo_detail('json');
-       }
-
-       /**
-        * Test the api_fr_photo_detail() function without an authenticated user.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoDetailWithoutAuthenticatedUser()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               BasicAuth::setCurrentUserID();
-               $_SESSION['authenticated'] = false;
-               api_fr_photo_detail('json');
-       }
-
-       /**
-        * Test the api_fr_photo_detail() function with a photo ID.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoDetailWithPhotoId()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\NotFoundException::class);
-               $_REQUEST['photo_id'] = 1;
-               api_fr_photo_detail('json');
-       }
-
-       /**
-        * Test the api_fr_photo_detail() function with a correct photo ID.
-        *
-        * @return void
-        */
-       public function testApiFrPhotoDetailCorrectPhotoId()
-       {
-               $this->markTestIncomplete('We need to create a dataset for this.');
-       }
-
-       /**
-        * Test the api_account_update_profile_image() function.
-        *
-        * @return void
-        */
-       public function testApiAccountUpdateProfileImage()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               api_account_update_profile_image('json');
-       }
-
-       /**
-        * Test the api_account_update_profile_image() function without an authenticated user.
-        *
-        * @return void
-        */
-       public function testApiAccountUpdateProfileImageWithoutAuthenticatedUser()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
-               BasicAuth::setCurrentUserID();
-               $_SESSION['authenticated'] = false;
-               api_account_update_profile_image('json');
-       }
-
-       /**
-        * Test the api_account_update_profile_image() function with an uploaded file.
-        *
-        * @return void
-        */
-       public function testApiAccountUpdateProfileImageWithUpload()
-       {
-               $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the check_acl_input() function.
-        *
-        * @return void
-        */
-       public function testCheckAclInput()
-       {
-               $result = check_acl_input('<aclstring>', BaseApi::getCurrentUserID());
-               // Where does this result come from?
-               self::assertEquals(1, $result);
-       }
-
-       /**
-        * Test the check_acl_input() function with an empty ACL string.
-        *
-        * @return void
-        */
-       public function testCheckAclInputWithEmptyAclString()
-       {
-               $result = check_acl_input(' ', BaseApi::getCurrentUserID());
-               self::assertFalse($result);
-       }
-
-       /**
-        * Test the save_media_to_database() function.
-        *
-        * @return void
-        */
-       public function testSaveMediaToDatabase()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the post_photo_item() function.
-        *
-        * @return void
-        */
-       public function testPostPhotoItem()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the prepare_photo_data() function.
-        *
-        * @return void
-        */
-       public function testPreparePhotoData()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the api_friendica_group_show() function.
-        *
-        * @return void
-        */
-       public function testApiFriendicaGroupShow()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the api_lists_destroy() function.
-        *
-        * @return void
-        */
-       public function testApiListsDestroy()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the group_create() function.
-        *
-        * @return void
-        */
-       public function testGroupCreate()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the api_friendica_group_create() function.
-        *
-        * @return void
-        */
-       public function testApiFriendicaGroupCreate()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the api_lists_create() function.
-        *
-        * @return void
-        */
-       public function testApiListsCreate()
-       {
-               $this->markTestIncomplete();
-       }
-
-       /**
-        * Test the api_lists_update() function.
-        *
-        * @return void
-        */
-       public function testApiListsUpdate()
-       {
-               $this->markTestIncomplete();
-       }
-}
index 721c99ae259a95326d5e2aaaafb72161d949349c..6f16c7a73e74a337d9b2324f8b631721db764e17 100644 (file)
@@ -9,7 +9,6 @@
                xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
        <testsuite name="friendica">
                <directory suffix=".php">functional/</directory>
-               <directory suffix=".php">legacy/</directory>
                <directory suffix=".php">src/</directory>
        </testsuite>
        <!-- Filters for Code Coverage -->
index e41c99acb8ca8170643b4ae931f912598c799007..51931fe812c67b7c9b0ff6f1267b22fc4e2e5706 100644 (file)
@@ -32,6 +32,7 @@ class ArgumentsTest extends TestCase
                self::assertEquals($assert['command'], $arguments->getCommand());
                self::assertEquals($assert['argv'], $arguments->getArgv());
                self::assertEquals($assert['argc'], $arguments->getArgc());
+               self::assertEquals($assert['method'], $arguments->getMethod());
                self::assertCount($assert['argc'], $arguments->getArgv());
        }
 
@@ -47,6 +48,7 @@ class ArgumentsTest extends TestCase
                        'command'     => '',
                        'argv'        => [],
                        'argc'        => 0,
+                       'method'      => App\Router::GET
                ],
                        $arguments);
        }
@@ -60,6 +62,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => 'profile/test/it',
                                        'argv'        => ['profile', 'test', 'it'],
                                        'argc'        => 3,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'pagename=profile/test/it&arg1=value1&arg2=value2',
@@ -74,6 +77,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => '~test/it',
                                        'argv'        => ['~test', 'it'],
                                        'argc'        => 2,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'pagename=~test/it&arg1=value1&arg2=value2',
@@ -88,6 +92,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => 'u/test/it',
                                        'argv'        => ['u', 'test', 'it'],
                                        'argc'        => 3,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'pagename=u/test/it&arg1=value1&arg2=value2',
@@ -102,6 +107,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => 'profile/test/it',
                                        'argv'        => ['profile', 'test', 'it'],
                                        'argc'        => 3,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'pagename=profile/test/it&arg1=value1&arg2=value2/',
@@ -116,6 +122,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => 'profile/test/it',
                                        'argv'        => ['profile', 'test', 'it'],
                                        'argc'        => 3,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'wrong=profile/test/it&arg1=value1&arg2=value2/',
@@ -130,6 +137,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => 'notvalid/it',
                                        'argv'        => ['notvalid', 'it'],
                                        'argc'        => 2,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'pagename=notvalid/it&arg1=value1&arg2=value2/',
@@ -143,6 +151,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => '',
                                        'argv'        => [],
                                        'argc'        => 0,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'arg1=value1&arg2=value2/',
@@ -156,6 +165,7 @@ class ArgumentsTest extends TestCase
                                        'command'     => 'api/call.json',
                                        'argv'        => ['api', 'call.json'],
                                        'argc'        => 2,
+                                       'method'      => App\Router::GET,
                                ],
                                'server' => [
                                        'QUERY_STRING' => 'pagename=api/call.json',
@@ -164,6 +174,22 @@ class ArgumentsTest extends TestCase
                                        'pagename' => 'api/call.json'
                                ],
                        ],
+                       'withHTTPMethod'  => [
+                               'assert' => [
+                                       'queryString' => 'api/call.json',
+                                       'command'     => 'api/call.json',
+                                       'argv'        => ['api', 'call.json'],
+                                       'argc'        => 2,
+                                       'method'      => App\Router::POST,
+                               ],
+                               'server' => [
+                                       'QUERY_STRING' => 'pagename=api/call.json',
+                                       'REQUEST_METHOD' => App\Router::POST,
+                               ],
+                               'get'    => [
+                                       'pagename' => 'api/call.json'
+                               ],
+                       ],
                ];
        }
 
index 9e198c985984934cc35acd22a6e5aab3abee8188..a02916ef40ebea9237ee6e4feb6528932f1873d7 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src;
 
index 575a29a6024e9600a15c6069d9f4b40110223ba4..a764b53410c578a2f723604fedce34687a50211c 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Contact\FriendSuggest\Factory;
 
index e5efd03ddcbe1422543f8ba5b802d77d34028a29..6ed11c99c925331df627b565d9fdc53f0f995b23 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Contact\Introduction\Factory;
 
index 74d18912f9e65ba655fea6eebfaa6b6b397d1b21..690c701fec0a8afd9fbfee6210e575cc0f573d10 100644 (file)
@@ -1,5 +1,22 @@
 <?php
 /**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  * Created by PhpStorm.
  * User: benlo
  * Date: 25/03/19
diff --git a/tests/src/Core/ACLTest.php b/tests/src/Core/ACLTest.php
new file mode 100644 (file)
index 0000000..d8a9cab
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Test\src\Core;
+
+use Friendica\Core\ACL;
+use Friendica\Test\FixtureTest;
+
+class ACLTest extends FixtureTest
+{
+       /**
+        * Test the ACL::isValidContact() function.
+        *
+        * @return void
+        */
+       public function testCheckAclInput()
+       {
+               $result = ACL::isValidContact('<aclstring>', '42');
+               self::assertFalse($result);
+       }
+
+       /**
+        * Test the ACL::isValidContact() function with an empty ACL string.
+        *
+        * @return void
+        */
+       public function testCheckAclInputWithEmptyAclString()
+       {
+               $result = ACL::isValidContact('', '42');
+               self::assertTrue($result);
+       }
+}
index a366dca9c242dbf7420418fdb9c987f210bbb345..cce12b790a24353c5a193ba06ab45ddc5a654c31 100644 (file)
@@ -41,7 +41,6 @@ use Friendica\DI;
 use Friendica\Core\Config\Factory\Config;
 use Friendica\Core\Config\Repository;
 use Friendica\Core\Storage\Type;
-use Friendica\Network\HTTPClient\Client\HttpClient;
 use Friendica\Test\DatabaseTest;
 use Friendica\Test\Util\Database\StaticDatabase;
 use Friendica\Test\Util\VFSTrait;
@@ -62,8 +61,6 @@ class StorageManagerTest extends DatabaseTest
        private $logger;
        /** @var L10n */
        private $l10n;
-       /** @var HttpClient */
-       private $httpRequest;
 
        protected function setUp(): void
        {
@@ -93,8 +90,6 @@ class StorageManagerTest extends DatabaseTest
                $this->config->set('storage', 'filesystem_path', $this->root->getChild(Type\FilesystemConfig::DEFAULT_BASE_FOLDER)->url());
 
                $this->l10n = \Mockery::mock(L10n::class);
-
-               $this->httpRequest = \Mockery::mock(HttpClient::class);
        }
 
        protected function tearDown(): void
@@ -109,7 +104,7 @@ class StorageManagerTest extends DatabaseTest
         */
        public function testInstance()
        {
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, $this->httpRequest);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                self::assertInstanceOf(StorageManager::class, $storageManager);
        }
@@ -171,7 +166,7 @@ class StorageManagerTest extends DatabaseTest
                        $this->config->set('storage', 'name', $name);
                }
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                if ($interface === ICanWriteToStorage::class) {
                        $storage = $storageManager->getWritableStorageByName($name);
@@ -191,7 +186,7 @@ class StorageManagerTest extends DatabaseTest
         */
        public function testIsValidBackend($name, $valid, $interface, $assert, $assertName)
        {
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                // true in every of the backends
                self::assertEquals(!empty($assertName), $storageManager->isValidBackend($name));
@@ -205,7 +200,7 @@ class StorageManagerTest extends DatabaseTest
         */
        public function testListBackends()
        {
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                self::assertEquals(StorageManager::DEFAULT_BACKENDS, $storageManager->listBackends());
        }
@@ -221,7 +216,7 @@ class StorageManagerTest extends DatabaseTest
                        static::markTestSkipped('only works for ICanWriteToStorage');
                }
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                $selBackend = $storageManager->getWritableStorageByName($name);
                $storageManager->setBackend($selBackend);
@@ -241,7 +236,7 @@ class StorageManagerTest extends DatabaseTest
                        $this->expectException(InvalidClassStorageException::class);
                }
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                self::assertInstanceOf($assert, $storageManager->getBackend());
        }
@@ -262,7 +257,7 @@ class StorageManagerTest extends DatabaseTest
                        ->addRule(IHandleSessions::class, ['instanceOf' => Memory::class, 'shared' => true, 'call' => null]);
                DI::init($dice);
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                self::assertTrue($storageManager->register(SampleStorageBackend::class));
 
@@ -290,7 +285,7 @@ class StorageManagerTest extends DatabaseTest
                        ->addRule(IHandleSessions::class, ['instanceOf' => Memory::class, 'shared' => true, 'call' => null]);
                DI::init($dice);
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
 
                self::assertTrue($storageManager->register(SampleStorageBackend::class));
 
@@ -329,7 +324,7 @@ class StorageManagerTest extends DatabaseTest
 
                $this->loadFixture(__DIR__ . '/../../../../datasets/storage/database.fixture.php', $this->dba);
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
                $storage        = $storageManager->getWritableStorageByName($name);
                $storageManager->move($storage);
 
@@ -353,7 +348,7 @@ class StorageManagerTest extends DatabaseTest
                $this->expectException(InvalidClassStorageException::class);
                $this->expectExceptionMessage('Backend SystemResource is not valid');
 
-               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
+               $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n, false);
                $storage        = $storageManager->getWritableStorageByName(SystemResource::getName());
                $storageManager->move($storage);
        }
index be7b87a69466da6a55014eacd0ade616cfd3f6a8..db6763c5a232c2db337c0f50eec3009007f8cb00 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Core\Worker\Repository;
 
index b5dbf2f2c58316531d455313e89301601ebf1f28..c92133ac54ba2dd068da9a7fd807628be1ebb75d 100644 (file)
@@ -1,4 +1,24 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
 namespace Friendica\Test\src\Database;
 
 use Dice\Dice;
index b468bdd1e7cae89c249e9805dd7ae3a98474f4b9..7acdc09556f95dc4bd56957f3d1aa2224404e0ea 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Factory\Api\Twitter;
 
@@ -17,7 +36,7 @@ class ActivitiesTest extends FixtureTest
        {
                $item = ['uid' => 0, 'uri-id' => 1];
 
-               $result = (new Activities(DI::logger(), DI::baseUrl(), DI::twitterUser()))
+               $result = (new Activities(DI::logger(), DI::twitterUser()))
                        ->createFromUriId($item['uri-id'], $item['uid']);
 
                self::assertArrayHasKey('like', $result);
@@ -36,7 +55,7 @@ class ActivitiesTest extends FixtureTest
        {
                $item = ['uid' => 0, 'uri-id' => 1];
 
-               $result = (new Activities(DI::logger(), DI::baseUrl(), DI::twitterUser()))
+               $result = (new Activities(DI::logger(), DI::twitterUser()))
                        ->createFromUriId($item['uri-id'], $item['uid'], 'xml');
 
                self::assertArrayHasKey('friendica:like', $result);
index 8ba821c760b6b610de4fc890f289cfa55593f423..ec8a0aa662e759458aebf9a66a8b702db7dd0a15 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Factory\Api\Twitter;
 
index a2d9d7171c6a41d99482ba997b10ee0398b9d77f..f608b66bb13f29a71314571a5cd8b91e04bd2dfc 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Factory\Api\Twitter;
 
@@ -29,7 +48,7 @@ class StatusTest extends FixtureTest
                        new Media(DI::logger(), DI::baseUrl()),
                        new Url(DI::logger()),
                        new Mention(DI::logger(), DI::baseUrl()),
-                       new Activities(DI::logger(), DI::baseUrl(), DI::twitterUser()),
+                       new Activities(DI::logger(), DI::twitterUser()),
                        new Attachment(DI::logger()));
        }
 
index 9a279ee7fea131a7ce276db925810ceb81017ce8..4425f83adc384d3498fca61c3789a06ca80ff4be 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Factory\Api\Twitter;
 
index ee675524b8e4be21bd1609f12db6aa7d3d0cb4d0..b8aabec376f0223eb1b7467c278af0d364c99721 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Model\Post;
 
index 33239caf22fd63eb2e20d07ed7334ac99a89ca92..00ec15a9b6aa4541d255769718e2ce279a68bcd7 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api;
 
index af12be2c1b1993d7b69d493d9d5159bdcca4aa9f..09845a99b490f9af615eb958ca3f0deb35e61a5c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -34,7 +34,7 @@ class SearchTest extends ApiTest
        {
                $directMessage = new DirectMessage(new NullLogger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
@@ -52,7 +52,7 @@ class SearchTest extends ApiTest
 
                $directMessage = new DirectMessage(new NullLogger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'searchstring' => 'item_body'
                        ]);
@@ -73,7 +73,7 @@ class SearchTest extends ApiTest
        {
                $directMessage = new DirectMessage(new NullLogger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'searchstring' => 'test'
                        ]);
index e80b863a228c48a93f5fbfb21fdbff506288773d..e3e208ff02363e1a0eb526d914ff3d45bbf9a2f1 100644 (file)
@@ -29,10 +29,17 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class DeleteTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        public function testEmpty()
        {
                $this->expectException(BadRequestException::class);
-               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run();
+               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
        }
 
        public function testWithoutAuthenticatedUser()
@@ -43,14 +50,14 @@ class DeleteTest extends ApiTest
        public function testWrong()
        {
                $this->expectException(BadRequestException::class);
-               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run(['photo_id' => 1]);
+               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run(['photo_id' => 1]);
        }
 
        public function testValidWithPost()
        {
                $this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
 
-               $response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'photo_id' => '709057080661a283a6aa598501504178'
                        ]);
@@ -65,7 +72,7 @@ class DeleteTest extends ApiTest
        {
                $this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
 
-               $response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'photo_id' => '709057080661a283a6aa598501504178'
                        ]);
index 24c223ef80a41f8e5cc66abc77388878a014c3d2..6ce77f63aad483186f4ad15b2fa76b4fc5fbb0a9 100644 (file)
@@ -29,10 +29,17 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class DeleteTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        public function testEmpty()
        {
                $this->expectException(BadRequestException::class);
-               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
        }
@@ -40,7 +47,7 @@ class DeleteTest extends ApiTest
        public function testWrong()
        {
                $this->expectException(BadRequestException::class);
-               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'album' => 'album_name'
                        ]);
@@ -50,7 +57,7 @@ class DeleteTest extends ApiTest
        {
                $this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
 
-               $response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'album' => 'test_album']
                        );
index 49197cbeccaccbdd20aa0bb9beef40eb923b5714..5f25a62ac0e8d38607e17704151316088a8ca3f2 100644 (file)
@@ -29,17 +29,24 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class UpdateTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        public function testEmpty()
        {
                $this->expectException(BadRequestException::class);
-               (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
        public function testTooFewArgs()
        {
                $this->expectException(BadRequestException::class);
-               (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'album' => 'album_name'
                        ]);
@@ -48,7 +55,7 @@ class UpdateTest extends ApiTest
        public function testWrongUpdate()
        {
                $this->expectException(BadRequestException::class);
-               (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'album'     => 'album_name',
                                'album_new' => 'album_name'
@@ -64,7 +71,7 @@ class UpdateTest extends ApiTest
        {
                $this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
 
-               $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'album'     => 'test_album',
                                'album_new' => 'test_album_2'
index 07e43479d25562080e4b92b343967074b394d8b4..64d2a778268cb0d37d16ab1bdd41915a0f98e792 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\GnuSocial\GnuSocial;
 
@@ -17,9 +36,8 @@ class ConfigTest extends ApiTest
        {
                DI::config()->set('system', 'ssl_policy', BaseURL::SSL_POLICY_FULL);
 
-               $response = (new Config(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Config(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
-
                $json = $this->toJson($response);
 
                self::assertEquals('localhost', $json->site->server);
index 7d98e365c1c3c60ecd8a09b261fa97903485f22c..175aaabda39ed2d1dba67173e9db20393326bfd0 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\GnuSocial\GnuSocial;
 
index 4c9e0c169e4b9b56ed890bd6022842514e399c71..be0e187a63ae2edee730284b0e7574b2073cd272 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\GnuSocial\Help;
 
index 297c92bae10b996c48428892343d21af6b6ed4c9..f905f488afa63ea83d3622f260f0d54f9af9bcf0 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Mastodon\Accounts;
 
index 5942aa1d273c016f76dadb9afa4a200855c47fff..5d3e33d1328f649bc1cf72ffaf584e1536df5f57 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Mastodon\Accounts;
 
@@ -16,7 +35,7 @@ class VerifyCredentialsTest extends ApiTest
         */
        public function testApiAccountVerifyCredentials()
        {
-               $response = (new VerifyCredentials(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new VerifyCredentials(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
index e645cb8ddf3dfac459991fbbab1a8bed51df9f2d..a36a8429370180a7e16851227799c73171396c18 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Mastodon;
 
index caa0ed976d91710194ebd61108f8a39f6e2c54af..c25b83fbf7ffbc8a0351ae664958435be2324357 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Mastodon;
 
index b25cee378398d04de06231b19da8c3bec69a9f5c..4518215ada01164efd78d15dd6805538b35f23d6 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Mastodon\Timelines;
 
index a75c2f11167b3c7780a7f91e90b68c8155475cf7..a96ea49473d7780d9153280e1e1532439b50fe19 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Mastodon\Timelines;
 
index 9b29d314be113efc12b4edf72b5a97074807ffb6..8d928b3ee33bbead6716bf64c9b718160f4a8053 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Account;
 
@@ -12,7 +31,7 @@ class RateLimitStatusTest extends ApiTest
 {
        public function testWithJson()
        {
-               $response = (new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run();
 
                $result = $this->toJson($response);
index 76cb27c9197637e2eb50551c73505ece26a104fb..d3c8f930240a7c8761797bbe62743caca9f1d545 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Account;
 
@@ -14,7 +33,9 @@ class UpdateProfileTest extends ApiTest
         */
        public function testApiAccountUpdateProfile()
        {
-               $response = (new UpdateProfile(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST], ['extension' => 'json']))
+               $this->useHttpMethod(Router::POST);
+
+               $response = (new UpdateProfile(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'name'        => 'new_name',
                                'description' => 'new_description'
index 77c45ada83ba12caf9e824fa7ac56b5c1f79fd61..1212a3f8e961c7246ff1dfea71ef62f6b299aa53 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Blocks;
 
@@ -14,7 +33,7 @@ class ListsTest extends ApiTest
         */
        public function testApiStatusesFWithBlocks()
        {
-               $response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
index 63290368aadb9f44c5c0b7b64d9bd723f8972ab2..666299cc6907dadb93cbbbdb66279e7a1c2c0d91 100644 (file)
@@ -1,8 +1,26 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
 
-use Friendica\App\Router;
 use Friendica\DI;
 use Friendica\Module\Api\Twitter\DirectMessages\All;
 use Friendica\Factory\Api\Twitter\DirectMessage;
@@ -21,7 +39,7 @@ class AllTest extends ApiTest
 
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new All($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new All($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run();
 
                $json = $this->toJson($response);
index 5667b72768bd70ddfd0e5928cd9be62b857a3a3a..e895845aad3ad913a757e3e53eabba2d8cde34c0 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
 
@@ -19,7 +38,7 @@ class ConversationTest extends ApiTest
        {
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Conversation($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new Conversation($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'friendica_verbose' => true,
                        ]);
index b743227789f32aac1244dad0940a4c8907c34b46..b9317190b67c82c256a862d1f59933e3cee556ee 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
 
@@ -18,7 +37,7 @@ class DestroyTest extends ApiTest
        public function testApiDirectMessagesDestroy()
        {
                $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run();
        }
 
@@ -29,7 +48,7 @@ class DestroyTest extends ApiTest
         */
        public function testApiDirectMessagesDestroyWithVerbose()
        {
-               $response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'friendica_verbose' => true,
                        ]);
@@ -65,7 +84,7 @@ class DestroyTest extends ApiTest
        public function testApiDirectMessagesDestroyWithId()
        {
                $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-               (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'id' => 1
                        ]);
@@ -78,7 +97,7 @@ class DestroyTest extends ApiTest
         */
        public function testApiDirectMessagesDestroyWithIdAndVerbose()
        {
-               $response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'id'                  => 1,
                                'friendica_parenturi' => 'parent_uri',
@@ -102,7 +121,7 @@ class DestroyTest extends ApiTest
                $ids = DBA::selectToArray('mail', ['id']);
                $id  = $ids[0]['id'];
 
-               $response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'id'                => $id,
                                'friendica_verbose' => true,
index beb61ee968f11202ed93c0f422aba83da4a25043..cee1450cf767986e0af0734f9df1d6aca654bfa5 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
 
@@ -21,7 +40,7 @@ class InboxTest extends ApiTest
 
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Inbox($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new Inbox($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run();
 
                $json = $this->toJson($response);
index 3cae992fa2099e3805afa912ce862efa31491c14..b2bcfb37fa835b8b56c05e45a362eb51ce3e8da2 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
 
@@ -19,7 +38,7 @@ class NewDMTest extends ApiTest
        {
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run();
 
                self::assertEmpty((string)$response->getBody());
@@ -51,7 +70,7 @@ class NewDMTest extends ApiTest
        {
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'text'    => 'message_text',
                                'user_id' => 43
@@ -73,7 +92,7 @@ class NewDMTest extends ApiTest
 
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'text'    => 'message_text',
                                'user_id' => 44
@@ -97,7 +116,7 @@ class NewDMTest extends ApiTest
 
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'text'    => 'message_text',
                                'user_id' => 44,
@@ -123,7 +142,7 @@ class NewDMTest extends ApiTest
 
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'rss']))
+               $response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
                        ->run([
                                'text'    => 'message_text',
                                'user_id' => 44,
index ccea4fd539b9bca8ecfa5900de74f38d0cc96986..9c498af5f66cfd87550106767fef967c1dfacb07 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\DirectMessages;
 
@@ -19,7 +38,7 @@ class SentTest extends ApiTest
        {
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Sent($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']))
+               $response = (new Sent($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
                        ->run([
                                'friendica_verbose' => true,
                        ]);
@@ -39,7 +58,7 @@ class SentTest extends ApiTest
        {
                $directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
 
-               $response = (new Sent($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'rss']))
+               $response = (new Sent($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
                        ->run();
 
                self::assertXml((string)$response->getBody(), 'direct-messages');
index 1055dd9d1acc7193777f9e363dff2dfe042cd747..61e235700c27a45f34f338e306633504560ac3ca 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Favorites;
 
@@ -11,6 +30,13 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class CreateTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        /**
         * Test the api_favorites_create_destroy() function with an invalid ID.
         *
@@ -20,7 +46,7 @@ class CreateTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -31,7 +57,7 @@ class CreateTest extends ApiTest
         */
        public function testApiFavoritesCreateDestroyWithCreateAction()
        {
-               $response = (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id' => 3
                        ]);
@@ -48,7 +74,7 @@ class CreateTest extends ApiTest
         */
        public function testApiFavoritesCreateDestroyWithCreateActionAndRss()
        {
-               $response = (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST], ['extension' => ICanCreateResponses::TYPE_RSS]))
+               $response = (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => ICanCreateResponses::TYPE_RSS]))
                        ->run([
                                'id' => 3
                        ]);
index 65113f556870a78ce1efbf12931d4dbf72e4d568..bb7b54ee4222124bf033469a995d9edfccf8d564 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Favorites;
 
@@ -10,6 +29,13 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class DestroyTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        /**
         * Test the api_favorites_create_destroy() function with an invalid ID.
         *
@@ -19,7 +45,7 @@ class DestroyTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -30,7 +56,7 @@ class DestroyTest extends ApiTest
         */
        public function testApiFavoritesCreateDestroyWithDestroyAction()
        {
-               $response = (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id' => 3
                        ]);
index 1f0faa971a6b1af62a5e7596d47278bc896e9395..6da92e667d95993b00b688b561dd6d784d6ed06e 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter;
 
@@ -17,7 +36,7 @@ class FavoritesTest extends ApiTest
         */
        public function testApiFavorites()
        {
-               $response = (new Favorites(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Favorites(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'page'   => -1,
                                'max_id' => 10,
@@ -37,7 +56,7 @@ class FavoritesTest extends ApiTest
         */
        public function testApiFavoritesWithRss()
        {
-               $response = (new Favorites(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], [
+               $response = (new Favorites(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
                        'extension' => ICanCreateResponses::TYPE_RSS
                ]))->run();
 
index e9946bb7354f2046c6b9a9764b94c5b918db65c3..02e2745492d2dc2be9ba3dba1edc14de7adbd58f 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Followers;
 
@@ -14,7 +33,7 @@ class ListsTest extends ApiTest
         */
        public function testApiStatusesFWithFollowers()
        {
-               $response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
index 3628f5c963c52c627de073a29620f84c41471d1a..07fdc891f3d3f6018d7ad1ea8a7442e1209291a0 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Friends;
 
@@ -16,7 +35,7 @@ class ListsTest extends ApiTest
         */
        public function testApiStatusesFWithFriends()
        {
-               $response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
index d8e5cc3da0b4b315bd5e9e44f8f0a4baac5dddc3..89a296b06653f23724b50ab8bd6933c6f1cb797d 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Friendships;
 
@@ -16,7 +35,7 @@ class IncomingTest extends ApiTest
         */
        public function testApiFriendshipsIncoming()
        {
-               $response = (new Incoming(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Incoming(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
index 66ebf8bbd7bbd9f1bab262d3c860124d3d98d363..8bc8257c0c06b515a8b441bb35873eceeaff4837 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Lists;
 
@@ -19,7 +38,7 @@ class StatusesTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Statuses(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               (new Statuses(DI::dba(), DI::twitterStatus(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -28,7 +47,7 @@ class StatusesTest extends ApiTest
         */
        public function testApiListsStatusesWithListId()
        {
-               $response = (new Statuses(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Statuses(DI::dba(), DI::twitterStatus(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'list_id' => 1,
                                'page'    => -1,
@@ -48,7 +67,7 @@ class StatusesTest extends ApiTest
         */
        public function testApiListsStatusesWithListIdAndRss()
        {
-               $response = (new Statuses(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'rss']))
+               $response = (new Statuses(DI::dba(), DI::twitterStatus(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
                        ->run([
                                'list_id' => 1
                        ]);
index b3516c307914639e27bc545f74ac8262bd327381..7d649719177acf4370b46d5e4f6ffb51f6077ba3 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Media;
 
@@ -13,6 +32,13 @@ use Friendica\Test\Util\AuthTestConfig;
 
 class UploadTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        /**
         * Test the \Friendica\Module\Api\Twitter\Media\Upload module.
         */
@@ -20,7 +46,7 @@ class UploadTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -34,7 +60,7 @@ class UploadTest extends ApiTest
                $this->expectException(UnauthorizedException::class);
                AuthTestConfig::$authenticated = false;
 
-               (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -53,7 +79,7 @@ class UploadTest extends ApiTest
                        ]
                ];
 
-               (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -76,7 +102,7 @@ class UploadTest extends ApiTest
                        ]
                ];
 
-               $response = (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $media = $this->toJson($response);
index 667caf98ca6f20ec45f5d95e45d26b8c4aa8110d..1d6e140bd1312b15cef23e62e7e53771e1ce65fd 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter;
 
index 0480ba8c2b72f17483d8a9e6afc25054bd9440c8..68ec195ce35ebbd895954a238932341b8fdc4cea 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -10,6 +29,13 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class DestroyTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        /**
         * Test the api_statuses_destroy() function.
         *
@@ -19,7 +45,7 @@ class DestroyTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -45,7 +71,7 @@ class DestroyTest extends ApiTest
         */
        public function testApiStatusesDestroyWithId()
        {
-               $response = (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id' => 1
                        ]);
index d92f26f72bad58511bf2eeb1127d114392bd65f5..0bb694528de1e3509c6bd07c7a0a9835495ea461 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -17,7 +36,7 @@ class MentionsTest extends ApiTest
         */
        public function testApiStatusesMentions()
        {
-               $response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'max_id' => 10
                        ]);
@@ -35,7 +54,7 @@ class MentionsTest extends ApiTest
         */
        public function testApiStatusesMentionsWithNegativePage()
        {
-               $response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'page' => -2
                        ]);
@@ -67,7 +86,7 @@ class MentionsTest extends ApiTest
         */
        public function testApiStatusesMentionsWithRss()
        {
-               $response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => ICanCreateResponses::TYPE_RSS]))
+               $response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => ICanCreateResponses::TYPE_RSS]))
                        ->run([
                                'page' => -2
                        ]);
index a5217fb715c43aa866537e19b4c5d9a80c2a74a9..a09cd44d1e49a7f26d8278bc770f8f3f9dfffc4d 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -17,7 +36,7 @@ class NetworkPublicTimelineTest extends ApiTest
         */
        public function testApiStatusesNetworkpublicTimeline()
        {
-               $response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'max_id' => 10
                        ]);
@@ -39,7 +58,7 @@ class NetworkPublicTimelineTest extends ApiTest
         */
        public function testApiStatusesNetworkpublicTimelineWithNegativePage()
        {
-               $response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'page' => -2
                        ]);
@@ -75,7 +94,7 @@ class NetworkPublicTimelineTest extends ApiTest
         */
        public function testApiStatusesNetworkpublicTimelineWithRss()
        {
-               $response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], [
+               $response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
                        'extension' => ICanCreateResponses::TYPE_RSS
                ]))->run([
                        'page' => -2
index 1d93c02969e6648a1175640fad4a6504f0c3a952..f2c99baa8fbe341933b6ecfe85fa14911daa1769 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -10,6 +29,13 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class RetweetTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        /**
         * Test the api_statuses_repeat() function.
         *
@@ -19,7 +45,7 @@ class RetweetTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -45,7 +71,7 @@ class RetweetTest extends ApiTest
         */
        public function testApiStatusesRepeatWithId()
        {
-               $response = (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id' => 1
                        ]);
@@ -62,7 +88,7 @@ class RetweetTest extends ApiTest
         */
        public function testApiStatusesRepeatWithSharedId()
        {
-               $response = (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id' => 5
                        ]);
index f9d302f0efeb1f2b6d85d9eadf94b147f6518e13..656aa5e91a9f38bb96c1139c5232bcea65f97946 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -20,7 +39,7 @@ class ShowTest extends ApiTest
                $this->expectException(BadRequestException::class);
 
 
-               (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -31,7 +50,7 @@ class ShowTest extends ApiTest
         */
        public function testApiStatusesShowWithId()
        {
-               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id' => 1
                        ]);
@@ -49,7 +68,7 @@ class ShowTest extends ApiTest
         */
        public function testApiStatusesShowWithConversation()
        {
-               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'id'           => 1,
                                'conversation' => 1
index f3f6b5a929c27938d6386aa75323d70432a9e429..92ca0702e3af0b8bdc3e552c63dd99c4c760e954 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -9,6 +28,13 @@ use Friendica\Test\src\Module\Api\ApiTest;
 
 class UpdateTest extends ApiTest
 {
+       protected function setUp(): void
+       {
+               parent::setUp();
+
+               $this->useHttpMethod(Router::POST);
+       }
+
        /**
         * Test the api_statuses_update() function.
         *
@@ -28,7 +54,7 @@ class UpdateTest extends ApiTest
                        ]
                ];
 
-               $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'status'                => 'Status content #friendica',
                                'in_reply_to_status_id' => 0,
@@ -50,7 +76,7 @@ class UpdateTest extends ApiTest
         */
        public function testApiStatusesUpdateWithHtml()
        {
-               $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))
+               $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'htmlstatus' => '<b>Status content</b>',
                        ]);
index eb06133f36046dbabfd102394e03bc672ecf67cd..6ad57c247dc55d919f04084bc33f5d18df65751f 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Statuses;
 
@@ -17,7 +36,7 @@ class UserTimelineTest extends ApiTest
         */
        public function testApiStatusesUserTimeline()
        {
-               $response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'user_id'         => 42,
                                'max_id'          => 10,
@@ -42,7 +61,7 @@ class UserTimelineTest extends ApiTest
         */
        public function testApiStatusesUserTimelineWithNegativePage()
        {
-               $response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'user_id' => 42,
                                'page'    => -2,
@@ -65,7 +84,7 @@ class UserTimelineTest extends ApiTest
         */
        public function testApiStatusesUserTimelineWithRss()
        {
-               $response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], [
+               $response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
                        'extension' => ICanCreateResponses::TYPE_RSS
                ]))->run();
 
index 2c5739e828392c83fa76576d75ffb0edc14b141c..9b5134fd8a27a52645d23418024293611fd0d30a 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Users;
 
@@ -19,7 +38,7 @@ class LookupTest extends ApiTest
        {
                $this->expectException(NotFoundException::class);
 
-               (new Lookup(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               (new Lookup(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 
@@ -30,7 +49,7 @@ class LookupTest extends ApiTest
         */
        public function testApiUsersLookupWithUserId()
        {
-               $respone = (new Lookup(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $respone = (new Lookup(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'user_id' => static::OTHER_USER['id']
                        ]);
index c88999e4594a97916a4ae4258040c4bbd8aaab9d..903bbe9fda990e57da05e2b4c3723032665915bb 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Users;
 
@@ -18,7 +37,7 @@ class SearchTest extends ApiTest
         */
        public function testApiUsersSearch()
        {
-               $respone = (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $respone = (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run([
                                'q' => static::OTHER_USER['name']
                        ]);
@@ -35,7 +54,7 @@ class SearchTest extends ApiTest
         */
        public function testApiUsersSearchWithXml()
        {
-               $respone = (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], [
+               $respone = (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
                        'extension' => ICanCreateResponses::TYPE_XML
                ]))->run([
                        'q' => static::OTHER_USER['name']
@@ -53,7 +72,7 @@ class SearchTest extends ApiTest
        {
                $this->expectException(BadRequestException::class);
 
-               (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
        }
 }
index dd63c3e519cc2b9ffc92aa9262f0446600b492e2..703ad4f6cb805adf2699b45c2ad016848d566eed 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module\Api\Twitter\Users;
 
@@ -17,7 +36,7 @@ class ShowTest extends ApiTest
         */
        public function testApiUsersShow()
        {
-               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]))
+               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
                        ->run();
 
                $json = $this->toJson($response);
@@ -37,7 +56,7 @@ class ShowTest extends ApiTest
         */
        public function testApiUsersShowWithXml()
        {
-               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], [
+               $response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
                        'extension' => ICanCreateResponses::TYPE_XML
                ]))->run();
 
index 6e9fbaf1a7c25fbb85cac1c11e3f42cfac35deaa..f0b2b4f66953c33a6a5a597d314d8c2e62fca9cd 100644 (file)
@@ -1,7 +1,27 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module;
 
+use Friendica\Module\BaseApi;
 use Friendica\Test\src\Module\Api\ApiTest;
 
 class BaseApiTest extends ApiTest
@@ -28,4 +48,14 @@ class BaseApiTest extends ApiTest
                );
                */
        }
+
+       /**
+        * Test the BaseApi::getCurrentUserID() function.
+        *
+        * @return void
+        */
+       public function testApiUser()
+       {
+               self::assertEquals(parent::SELF_USER['id'], BaseApi::getCurrentUserID());
+       }
 }
index b80057e174cb498b05d93abcb2fae45895e369e1..ac3916fafd5891772e64cdf630fff220af99bc15 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Module;
 
diff --git a/tests/src/Module/Special/OptionsTest.php b/tests/src/Module/Special/OptionsTest.php
new file mode 100644 (file)
index 0000000..62ad1b3
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Test\src\Module\Special;
+
+use Friendica\App\Router;
+use Friendica\Capabilities\ICanCreateResponses;
+use Friendica\DI;
+use Friendica\Module\Special\Options;
+use Friendica\Test\FixtureTest;
+
+class OptionsTest extends FixtureTest
+{
+       public function testOptionsAll()
+       {
+               $this->useHttpMethod(Router::OPTIONS);
+
+               $response = (new Options(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
+
+               self::assertEmpty((string)$response->getBody());
+               self::assertEquals(204, $response->getStatusCode());
+               self::assertEquals('No Content', $response->getReasonPhrase());
+               self::assertEquals([
+                       'Allow'                       => [implode(',', Router::ALLOWED_METHODS)],
+                       ICanCreateResponses::X_HEADER => ['blank'],
+               ], $response->getHeaders());
+               self::assertEquals(implode(',', Router::ALLOWED_METHODS), $response->getHeaderLine('Allow'));
+       }
+
+       public function testOptionsSpecific()
+       {
+               $this->useHttpMethod(Router::OPTIONS);
+
+               $response = (new Options(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
+                       'AllowedMethods' => [Router::GET, Router::POST],
+               ]))->run();
+
+               self::assertEmpty((string)$response->getBody());
+               self::assertEquals(204, $response->getStatusCode());
+               self::assertEquals('No Content', $response->getReasonPhrase());
+               self::assertEquals([
+                       'Allow'                       => [implode(',', [Router::GET, Router::POST])],
+                       ICanCreateResponses::X_HEADER => ['blank'],
+               ], $response->getHeaders());
+               self::assertEquals(implode(',', [Router::GET, Router::POST]), $response->getHeaderLine('Allow'));
+       }
+}
index 0e2c0b3e3b396a5b1fd840a904129452f52f93c5..a6a873c83ad1e24c5eeac9762452b5bc469c7a4b 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Network\HTTPClient\Client;
 
index 3b6b2e3a10578bddb723328b20429e893da06cb3..ba177ef8439dd64b1cd0b4c8ea1a13894de57881 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Network;
 
index 9e89c9c543bcc1344fe0bce8f7e49841bd5f8395..665baf295d63aeb1433ba3ad3e80d6a0a7d1dbb5 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Profile\ProfileField\Entity;
 
index 0da41f51c25b1569510cc4c30f19a3beda93f3fc..553b94723931ef08c7102bf1d95ff73643f86243 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Profile\ProfileField\Repository;
 
index eeed1a34f28bfa53c03464fcb626eafc0e843c92..a6fa02be9b1e3adabebcf2bd79353d32e4881fde 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Protocol\ActivityPub;
 
diff --git a/tests/src/Security/BasicAuthTest.php b/tests/src/Security/BasicAuthTest.php
new file mode 100644 (file)
index 0000000..45d4d7c
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Test\src\Security;
+
+use Friendica\Security\BasicAuth;
+use Friendica\Test\src\Module\Api\ApiTest;
+
+class BasicAuthTest extends ApiTest
+{
+       /**
+        * Test the api_source() function.
+        *
+        * @return void
+        */
+       public function testApiSource()
+       {
+               self::assertEquals('api', BasicAuth::getCurrentApplicationToken()['name']);
+       }
+
+       /**
+        * Test the api_source() function with a Twidere user agent.
+        *
+        * @return void
+        */
+       public function testApiSourceWithTwidere()
+       {
+               $_SERVER['HTTP_USER_AGENT'] = 'Twidere';
+               self::assertEquals('Twidere', BasicAuth::getCurrentApplicationToken()['name']);
+       }
+
+       /**
+        * Test the api_source() function with a GET parameter.
+        *
+        * @return void
+        */
+       public function testApiSourceWithGet()
+       {
+               $_REQUEST['source'] = 'source_name';
+               self::assertEquals('source_name', BasicAuth::getCurrentApplicationToken()['name']);
+       }
+
+       /**
+        * Test the BasicAuth::getCurrentUserID() function without any login.
+        */
+       public function testApiLoginWithoutLogin()
+       {
+               self::markTestIncomplete('Needs Refactoring of BasicAuth first.');
+               /*
+               BasicAuth::setCurrentUserID();
+               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
+               BasicAuth::getCurrentUserID(true);
+               */
+       }
+
+       /**
+        * Test the BasicAuth::getCurrentUserID() function with a bad login.
+        */
+       public function testApiLoginWithBadLogin()
+       {
+               self::markTestIncomplete('Needs Refactoring of BasicAuth first.');
+               /*
+               BasicAuth::setCurrentUserID();
+               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
+               $_SERVER['PHP_AUTH_USER'] = 'user@server';
+               BasicAuth::getCurrentUserID(true);
+               */
+       }
+
+       /**
+        * Test the BasicAuth::getCurrentUserID() function with a correct login.
+        */
+       public function testApiLoginWithCorrectLogin()
+       {
+               BasicAuth::setCurrentUserID();
+               $_SERVER['PHP_AUTH_USER'] = 'Test user';
+               $_SERVER['PHP_AUTH_PW']   = 'password';
+               self::assertEquals(parent::SELF_USER['id'], BasicAuth::getCurrentUserID(true));
+       }
+
+       /**
+        * Test the BasicAuth::getCurrentUserID() function with a remote user.
+        */
+       public function testApiLoginWithRemoteUser()
+       {
+               self::markTestIncomplete('Needs Refactoring of BasicAuth first.');
+               /*
+               BasicAuth::setCurrentUserID();
+               $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
+               $_SERVER['REDIRECT_REMOTE_USER'] = '123456dXNlcjpwYXNzd29yZA==';
+               BasicAuth::getCurrentUserID(true);
+               */
+       }
+}
index e404694d4da703db67a08cb7387f766c7a820214..b73bc5c8c2895ce9f543deffdc09008b0330525c 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Security\PermissionSet\Entity;
 
index 1cb1c16add3940bd8f5121d36f63ec78bc7da22d..a21e3ef8f412e9bf8dac6d9f2e58895a8db6b061 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Security\PermissionSet\Factory;
 
index 250a61bf33ebe2618cca60dcdad62f56121723c9..eb6098be80186570d184ef7a370754497545b9e6 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Security\PermissionSet\Repository;
 
index ca29e13a1cbfcc7cc324b178356adeaa6a2b5ccd..84a118eb80b003b57690e5c324718a49168c0377 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Security\TwoFactor\Factory;
 
index eae7f580f38736aaab1182b2aa72f8b4bd3bfc56..0c91ea5e5ea90a2707f87567b38ba26f72d94a87 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Security\TwoFactor\Model;
 
index 705a6e369ae6e642e5539d52e0b8a2ec95c4e823..2dabfd89c75f225b70f3aa6b19736b90f0320655 100644 (file)
@@ -127,4 +127,42 @@ class ArraysTest extends TestCase
                $str = Arrays::recursiveImplode([[1], [2, [3]]], ',');
                self::assertSame($str, '{1},{2,{3}}');
        }
+
+       /**
+        * Test the Arrays::walkRecursive() function.
+        */
+       public function testApiWalkRecursive()
+       {
+               $array = ['item1'];
+               self::assertEquals(
+                       $array,
+                       Arrays::walkRecursive(
+                               $array,
+                               function () {
+                                       // Should we test this with a callback that actually does something?
+                                       return true;
+                               }
+                       )
+               );
+       }
+
+       /**
+        * Test the Arrays::walkRecursive() function with an array.
+        *
+        * @return void
+        */
+       public function testApiWalkRecursiveWithArray()
+       {
+               $array = [['item1'], ['item2']];
+               self::assertEquals(
+                       $array,
+                       Arrays::walkRecursive(
+                               $array,
+                               function () {
+                                       // Should we test this with a callback that actually does something?
+                                       return true;
+                               }
+                       )
+               );
+       }
 }
index 7cdf612e64aa2ce31f40aeba0408ce8362c41335..3d233896a79c0fbf51bc791829acbc157996b18a 100644 (file)
@@ -1,4 +1,24 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
 namespace Friendica\Test\src\Util;
 
 use Friendica\Test\MockedTest;
index 4c15f440dc452b23457ad70090b950b71425c455..0702f88b49cd78d88001fe86498979a825079d9d 100644 (file)
@@ -1,4 +1,24 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
 namespace Friendica\Test\src\Util;
 
 use Friendica\App\BaseURL;
index d7bafe8b7bcef13261ea18c6395eb979f03ac9be..db0954122172d537063459e5e2789c0c7b6c767c 100644 (file)
@@ -77,4 +77,14 @@ class DateTimeFormatTest extends MockedTest
 
                self::assertEquals($assert, $dtFormat->isYearMonth($input));
        }
+
+       /**
+        * Test the DateTimeFormat::API output.
+        *
+        * @return void
+        */
+       public function testApiDate()
+       {
+               self::assertEquals('Wed Oct 10 00:00:00 +0000 1990', DateTimeFormat::utc('1990-10-10', DateTimeFormat::API));
+       }
 }
index ec10ee089e5e4d4222425085a54c6204dfa73e79..8ede0fc7770961503900dd8ecb9dbbfd39accd0a 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Util;
 
index 4bbdba87b5a7416abe75d61aa762f5171f2406dd..8e2881aa6639d5e1d524febe07c4096249c9af17 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Util;
 
diff --git a/tests/src/Util/Router/FriendicaGroupCountBasedTest.php b/tests/src/Util/Router/FriendicaGroupCountBasedTest.php
new file mode 100644 (file)
index 0000000..114082e
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Test\src\Util\Router;
+
+use FastRoute\DataGenerator\GroupCountBased;
+use FastRoute\RouteCollector;
+use FastRoute\RouteParser\Std;
+use Friendica\Module\Special\Options;
+use Friendica\Test\MockedTest;
+use Friendica\Util\Router\FriendicaGroupCountBased;
+
+class FriendicaGroupCountBasedTest extends MockedTest
+{
+       public function testOptions()
+       {
+               $collector = new RouteCollector(new Std(), new GroupCountBased());
+               $collector->addRoute('GET', '/get', Options::class);
+               $collector->addRoute('POST', '/post', Options::class);
+               $collector->addRoute('GET', '/multi', Options::class);
+               $collector->addRoute('POST', '/multi', Options::class);
+
+               $dispatcher = new FriendicaGroupCountBased($collector->getData());
+
+               self::assertEquals(['GET'], $dispatcher->getOptions('/get'));
+               self::assertEquals(['POST'], $dispatcher->getOptions('/post'));
+               self::assertEquals(['GET', 'POST'], $dispatcher->getOptions('/multi'));
+       }
+}
index 6a4c6d225e5f15bb231fabfbeb54a17ec503a2e3..222820342b83656cc69f49a43f3270fe3b458f89 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 2021.12-rc\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-12 07:58-0500\n"
+"POT-Creation-Date: 2022-01-21 14:21+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -87,7 +87,7 @@ msgstr ""
 #: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:659
 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
-#: src/Module/Api/Twitter/ContactEndpoint.php:76
+#: src/Module/Api/Twitter/ContactEndpoint.php:74
 msgid "User not found"
 msgstr ""
 
@@ -126,9 +126,9 @@ msgstr ""
 #: mod/unfollow.php:50 mod/unfollow.php:82 mod/wall_attach.php:68
 #: mod/wall_attach.php:71 mod/wall_upload.php:90 mod/wall_upload.php:93
 #: mod/wallmessage.php:37 mod/wallmessage.php:56 mod/wallmessage.php:90
-#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:92
+#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:93
 #: src/Module/BaseNotifications.php:97 src/Module/Contact/Advanced.php:60
-#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:18
+#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:38
 #: src/Module/FriendSuggest.php:56 src/Module/Group.php:42
 #: src/Module/Group.php:85 src/Module/Invite.php:41 src/Module/Invite.php:130
 #: src/Module/Notifications/Notification.php:48
@@ -163,7 +163,7 @@ msgid "Save"
 msgstr ""
 
 #: mod/editpost.php:92 mod/photos.php:1344 src/Content/Conversation.php:326
-#: src/Module/Contact/Poke.php:157 src/Object/Post.php:964
+#: src/Module/Contact/Poke.php:176 src/Object/Post.php:966
 msgid "Loading..."
 msgstr ""
 
@@ -229,7 +229,7 @@ msgstr ""
 #: mod/editpost.php:107 mod/message.php:200 mod/message.php:358
 #: mod/photos.php:1495 mod/wallmessage.php:142 src/Content/Conversation.php:355
 #: src/Content/Conversation.php:690 src/Module/Item/Compose.php:165
-#: src/Object/Post.php:502
+#: src/Object/Post.php:504
 msgid "Please wait"
 msgstr ""
 
@@ -261,11 +261,11 @@ msgstr ""
 
 #: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1343
 #: mod/photos.php:1399 mod/photos.php:1473 src/Content/Conversation.php:370
-#: src/Module/Item/Compose.php:160 src/Object/Post.php:974
+#: src/Module/Item/Compose.php:160 src/Object/Post.php:976
 msgid "Preview"
 msgstr ""
 
-#: mod/editpost.php:130 mod/fbrowser.php:100 mod/fbrowser.php:127
+#: mod/editpost.php:130 mod/fbrowser.php:117 mod/fbrowser.php:144
 #: mod/follow.php:144 mod/photos.php:1010 mod/photos.php:1111 mod/tagrm.php:35
 #: mod/tagrm.php:127 mod/unfollow.php:97 src/Content/Conversation.php:373
 #: src/Module/Contact/Revoke.php:110 src/Module/RemoteFollow.php:127
@@ -273,37 +273,37 @@ msgid "Cancel"
 msgstr ""
 
 #: mod/editpost.php:134 src/Content/Conversation.php:331
-#: src/Module/Item/Compose.php:151 src/Object/Post.php:965
+#: src/Module/Item/Compose.php:151 src/Object/Post.php:967
 msgid "Bold"
 msgstr ""
 
 #: mod/editpost.php:135 src/Content/Conversation.php:332
-#: src/Module/Item/Compose.php:152 src/Object/Post.php:966
+#: src/Module/Item/Compose.php:152 src/Object/Post.php:968
 msgid "Italic"
 msgstr ""
 
 #: mod/editpost.php:136 src/Content/Conversation.php:333
-#: src/Module/Item/Compose.php:153 src/Object/Post.php:967
+#: src/Module/Item/Compose.php:153 src/Object/Post.php:969
 msgid "Underline"
 msgstr ""
 
 #: mod/editpost.php:137 src/Content/Conversation.php:334
-#: src/Module/Item/Compose.php:154 src/Object/Post.php:968
+#: src/Module/Item/Compose.php:154 src/Object/Post.php:970
 msgid "Quote"
 msgstr ""
 
 #: mod/editpost.php:138 src/Content/Conversation.php:335
-#: src/Module/Item/Compose.php:155 src/Object/Post.php:969
+#: src/Module/Item/Compose.php:155 src/Object/Post.php:971
 msgid "Code"
 msgstr ""
 
 #: mod/editpost.php:139 src/Content/Conversation.php:337
-#: src/Module/Item/Compose.php:157 src/Object/Post.php:971
+#: src/Module/Item/Compose.php:157 src/Object/Post.php:973
 msgid "Link"
 msgstr ""
 
 #: mod/editpost.php:140 src/Content/Conversation.php:338
-#: src/Module/Item/Compose.php:158 src/Object/Post.php:972
+#: src/Module/Item/Compose.php:158 src/Object/Post.php:974
 msgid "Link or Media"
 msgstr ""
 
@@ -314,7 +314,7 @@ msgid "Message"
 msgstr ""
 
 #: mod/editpost.php:144 src/Content/Conversation.php:381
-#: src/Module/Settings/TwoFactor/Trusted.php:118
+#: src/Module/Settings/TwoFactor/Trusted.php:137
 msgid "Browser"
 msgstr ""
 
@@ -366,7 +366,7 @@ msgstr ""
 #: src/Module/Install.php:347 src/Module/Register.php:148
 #: src/Module/Security/TwoFactor/Verify.php:100
 #: src/Module/Settings/TwoFactor/Index.php:133
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Required"
 msgstr ""
 
@@ -402,8 +402,8 @@ msgstr ""
 #: mod/events.php:519 mod/message.php:201 mod/message.php:357
 #: mod/photos.php:927 mod/photos.php:1031 mod/photos.php:1301
 #: mod/photos.php:1342 mod/photos.php:1398 mod/photos.php:1472
-#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:147
-#: src/Module/Contact/Poke.php:158 src/Module/Contact/Profile.php:327
+#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:132
+#: src/Module/Contact/Poke.php:177 src/Module/Contact/Profile.php:327
 #: src/Module/Debug/ActivityPubConversion.php:141
 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
 #: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
@@ -411,7 +411,7 @@ msgstr ""
 #: src/Module/Install.php:252 src/Module/Install.php:294
 #: src/Module/Install.php:331 src/Module/Invite.php:177
 #: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247
-#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:963
+#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:965
 #: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
 #: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
 msgid "Submit"
@@ -430,17 +430,17 @@ msgstr ""
 msgid "Failed to remove event"
 msgstr ""
 
-#: mod/fbrowser.php:43 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
+#: mod/fbrowser.php:60 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
 #: view/theme/frio/theme.php:227
 msgid "Photos"
 msgstr ""
 
-#: mod/fbrowser.php:102 mod/fbrowser.php:129
+#: mod/fbrowser.php:119 mod/fbrowser.php:146
 #: src/Module/Settings/Profile/Photo/Index.php:129
 msgid "Upload"
 msgstr ""
 
-#: mod/fbrowser.php:124
+#: mod/fbrowser.php:141
 msgid "Files"
 msgstr ""
 
@@ -465,7 +465,7 @@ msgid "OStatus support is disabled. Contact can't be added."
 msgstr ""
 
 #: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
-#: src/Model/Contact.php:1042 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1055 src/Model/Contact.php:1067
 #: view/theme/vier/theme.php:172
 msgid "Connect/Follow"
 msgstr ""
@@ -1066,12 +1066,12 @@ msgstr ""
 
 #: mod/photos.php:1339 mod/photos.php:1395 mod/photos.php:1469
 #: src/Module/Contact.php:544 src/Module/Item/Compose.php:148
-#: src/Object/Post.php:960
+#: src/Object/Post.php:962
 msgid "This is you"
 msgstr ""
 
 #: mod/photos.php:1341 mod/photos.php:1397 mod/photos.php:1471
-#: src/Object/Post.php:496 src/Object/Post.php:962
+#: src/Object/Post.php:498 src/Object/Post.php:964
 msgid "Comment"
 msgstr ""
 
@@ -1127,7 +1127,7 @@ msgid "Bad Request."
 msgstr ""
 
 #: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:70
-#: src/Module/Contact/Advanced.php:119 src/Module/Contact/Contacts.php:36
+#: src/Module/Contact/Advanced.php:109 src/Module/Contact/Contacts.php:55
 #: src/Module/Contact/Conversations.php:78
 #: src/Module/Contact/Conversations.php:83
 #: src/Module/Contact/Conversations.php:88 src/Module/Contact/Media.php:43
@@ -1139,7 +1139,7 @@ msgstr ""
 msgid "Contact not found."
 msgstr ""
 
-#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:454
+#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:473
 msgid "[Friendica System Notify]"
 msgstr ""
 
@@ -1255,7 +1255,7 @@ msgstr ""
 #: src/Module/Admin/Users/Active.php:129 src/Module/Admin/Users/Blocked.php:130
 #: src/Module/Admin/Users/Create.php:71 src/Module/Admin/Users/Deleted.php:88
 #: src/Module/Admin/Users/Index.php:142 src/Module/Admin/Users/Index.php:162
-#: src/Module/Admin/Users/Pending.php:104 src/Module/Contact/Advanced.php:149
+#: src/Module/Admin/Users/Pending.php:104 src/Module/Contact/Advanced.php:134
 msgid "Name"
 msgstr ""
 
@@ -1475,7 +1475,7 @@ msgstr ""
 msgid "Community Forum Subtypes"
 msgstr ""
 
-#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:106
+#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:107
 msgid "Personal Page"
 msgstr ""
 
@@ -1483,7 +1483,7 @@ msgstr ""
 msgid "Account for a personal profile."
 msgstr ""
 
-#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:107
+#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:108
 msgid "Organisation Page"
 msgstr ""
 
@@ -1493,7 +1493,7 @@ msgid ""
 "\"Followers\"."
 msgstr ""
 
-#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:108
+#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:109
 msgid "News Page"
 msgstr ""
 
@@ -1503,7 +1503,7 @@ msgid ""
 "\"Followers\"."
 msgstr ""
 
-#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:109
+#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:110
 msgid "Community Forum"
 msgstr ""
 
@@ -1511,7 +1511,7 @@ msgstr ""
 msgid "Account for community discussions."
 msgstr ""
 
-#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:99
+#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:100
 msgid "Normal Account Page"
 msgstr ""
 
@@ -1521,7 +1521,7 @@ msgid ""
 "\"Friends\" and \"Followers\"."
 msgstr ""
 
-#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:100
+#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:101
 msgid "Soapbox Page"
 msgstr ""
 
@@ -1531,7 +1531,7 @@ msgid ""
 "\"Followers\"."
 msgstr ""
 
-#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:101
+#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:102
 msgid "Public Forum"
 msgstr ""
 
@@ -1539,7 +1539,7 @@ msgstr ""
 msgid "Automatically approves all contact requests."
 msgstr ""
 
-#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:102
+#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:103
 msgid "Automatic Friend Page"
 msgstr ""
 
@@ -1965,7 +1965,7 @@ msgstr ""
 msgid "Friend Suggestions"
 msgstr ""
 
-#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2626
+#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2628
 msgid "photo"
 msgstr ""
 
@@ -1987,7 +1987,7 @@ msgid "Select a tag to remove: "
 msgstr ""
 
 #: mod/tagrm.php:126 src/Module/Settings/Delegation.php:179
-#: src/Module/Settings/TwoFactor/Trusted.php:121
+#: src/Module/Settings/TwoFactor/Trusted.php:140
 msgid "Remove"
 msgstr ""
 
@@ -2085,7 +2085,7 @@ msgstr ""
 msgid "File upload failed."
 msgstr ""
 
-#: mod/wall_upload.php:221 src/Model/Photo.php:984
+#: mod/wall_upload.php:221 src/Model/Photo.php:1008
 msgid "Wall Photos"
 msgstr ""
 
@@ -2113,6 +2113,10 @@ msgstr ""
 msgid "No system theme config value set."
 msgstr ""
 
+#: src/App.php:583
+msgid "Apologies but the website is unavailable at the moment."
+msgstr ""
+
 #: src/App/Page.php:250
 msgid "Delete this item?"
 msgstr ""
@@ -2127,44 +2131,44 @@ msgstr ""
 msgid "toggle mobile"
 msgstr ""
 
-#: src/App/Router.php:286
+#: src/App/Router.php:275
 #, php-format
 msgid "Method not allowed for this module. Allowed method(s): %s"
 msgstr ""
 
-#: src/App/Router.php:288 src/Module/HTTPException/PageNotFound.php:33
+#: src/App/Router.php:277 src/Module/HTTPException/PageNotFound.php:33
 msgid "Page not found."
 msgstr ""
 
-#: src/App/Router.php:315
+#: src/App/Router.php:305
 msgid "You must be logged in to use addons. "
 msgstr ""
 
-#: src/BaseModule.php:345
+#: src/BaseModule.php:377
 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 ""
 
-#: src/BaseModule.php:372
+#: src/BaseModule.php:404
 msgid "All contacts"
 msgstr ""
 
-#: src/BaseModule.php:377 src/Content/Widget.php:231 src/Core/ACL.php:193
-#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:79
-#: src/Module/PermissionTooltip.php:101
+#: src/BaseModule.php:409 src/Content/Widget.php:231 src/Core/ACL.php:193
+#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:98
+#: src/Module/PermissionTooltip.php:120
 msgid "Followers"
 msgstr ""
 
-#: src/BaseModule.php:382 src/Content/Widget.php:232 src/Module/Contact.php:368
+#: src/BaseModule.php:414 src/Content/Widget.php:232 src/Module/Contact.php:368
 msgid "Following"
 msgstr ""
 
-#: src/BaseModule.php:387 src/Content/Widget.php:233 src/Module/Contact.php:369
+#: src/BaseModule.php:419 src/Content/Widget.php:233 src/Module/Contact.php:369
 msgid "Mutual friends"
 msgstr ""
 
-#: src/BaseModule.php:395
+#: src/BaseModule.php:427
 msgid "Common"
 msgstr ""
 
@@ -2478,7 +2482,7 @@ msgid "Visible to <strong>everybody</strong>"
 msgstr ""
 
 #: src/Content/Conversation.php:308 src/Module/Item/Compose.php:159
-#: src/Object/Post.php:973
+#: src/Object/Post.php:975
 msgid "Please enter a image/video/audio/webpage URL:"
 msgstr ""
 
@@ -2502,12 +2506,12 @@ msgstr ""
 msgid "New Post"
 msgstr ""
 
-#: src/Content/Conversation.php:325
+#: src/Content/Conversation.php:325 src/Object/Post.php:481
 msgid "Share"
 msgstr ""
 
 #: src/Content/Conversation.php:336 src/Module/Item/Compose.php:156
-#: src/Object/Post.php:970
+#: src/Object/Post.php:972
 msgid "Image"
 msgstr ""
 
@@ -2715,7 +2719,7 @@ msgstr ""
 msgid "%1$s poked %2$s"
 msgstr ""
 
-#: src/Content/Item.php:338 src/Model/Item.php:2624
+#: src/Content/Item.php:338 src/Model/Item.php:2626
 msgid "event"
 msgstr ""
 
@@ -2723,31 +2727,31 @@ msgstr ""
 msgid "Follow Thread"
 msgstr ""
 
-#: src/Content/Item.php:443 src/Model/Contact.php:1047
+#: src/Content/Item.php:443 src/Model/Contact.php:1060
 msgid "View Status"
 msgstr ""
 
-#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:981
-#: src/Model/Contact.php:1039 src/Model/Contact.php:1048
+#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:994
+#: src/Model/Contact.php:1052 src/Model/Contact.php:1061
 #: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:225
 msgid "View Profile"
 msgstr ""
 
-#: src/Content/Item.php:445 src/Model/Contact.php:1049
+#: src/Content/Item.php:445 src/Model/Contact.php:1062
 msgid "View Photos"
 msgstr ""
 
-#: src/Content/Item.php:446 src/Model/Contact.php:1040
-#: src/Model/Contact.php:1050
+#: src/Content/Item.php:446 src/Model/Contact.php:1053
+#: src/Model/Contact.php:1063
 msgid "Network Posts"
 msgstr ""
 
-#: src/Content/Item.php:447 src/Model/Contact.php:1041
-#: src/Model/Contact.php:1051
+#: src/Content/Item.php:447 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1064
 msgid "View Contact"
 msgstr ""
 
-#: src/Content/Item.php:448 src/Model/Contact.php:1052
+#: src/Content/Item.php:448 src/Model/Contact.php:1065
 msgid "Send PM"
 msgstr ""
 
@@ -2770,7 +2774,7 @@ msgstr ""
 msgid "Languages"
 msgstr ""
 
-#: src/Content/Item.php:458 src/Model/Contact.php:1053
+#: src/Content/Item.php:458 src/Model/Contact.php:1066
 msgid "Poke"
 msgstr ""
 
@@ -2872,7 +2876,7 @@ msgstr ""
 #: src/Module/Settings/TwoFactor/AppSpecific.php:127
 #: src/Module/Settings/TwoFactor/Index.php:111
 #: src/Module/Settings/TwoFactor/Recovery.php:105
-#: src/Module/Settings/TwoFactor/Verify.php:144 view/theme/vier/theme.php:217
+#: src/Module/Settings/TwoFactor/Verify.php:145 view/theme/vier/theme.php:217
 msgid "Help"
 msgstr ""
 
@@ -2978,7 +2982,7 @@ msgid "See all notifications"
 msgstr ""
 
 #: src/Content/Nav.php:280
-msgid "Mark all system notifications seen"
+msgid "Mark all system notifications as seen"
 msgstr ""
 
 #: src/Content/Nav.php:283 view/theme/frio/theme.php:234
@@ -3066,8 +3070,8 @@ msgid ""
 "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3155
-#: src/Model/Item.php:3161 src/Model/Item.php:3162
+#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3157
+#: src/Model/Item.php:3163 src/Model/Item.php:3164
 msgid "Link to source"
 msgstr ""
 
@@ -3222,11 +3226,11 @@ msgstr ""
 msgid "Organisations"
 msgstr ""
 
-#: src/Content/Widget.php:522 src/Model/Contact.php:1476
+#: src/Content/Widget.php:522 src/Model/Contact.php:1493
 msgid "News"
 msgstr ""
 
-#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:50
+#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:51
 msgid "All"
 msgstr ""
 
@@ -3299,8 +3303,8 @@ msgstr ""
 msgid "Yourself"
 msgstr ""
 
-#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:85
-#: src/Module/PermissionTooltip.php:107
+#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:104
+#: src/Module/PermissionTooltip.php:126
 msgid "Mutuals"
 msgstr ""
 
@@ -4045,81 +4049,81 @@ msgstr ""
 msgid "Legacy module file not found: %s"
 msgstr ""
 
-#: src/Model/Contact.php:1043 src/Model/Contact.php:1055
+#: src/Model/Contact.php:1056 src/Model/Contact.php:1068
 msgid "UnFollow"
 msgstr ""
 
-#: src/Model/Contact.php:1061 src/Module/Admin/Users/Pending.php:107
+#: src/Model/Contact.php:1074 src/Module/Admin/Users/Pending.php:107
 #: src/Module/Notifications/Introductions.php:130
 #: src/Module/Notifications/Introductions.php:202
 msgid "Approve"
 msgstr ""
 
-#: src/Model/Contact.php:1472
+#: src/Model/Contact.php:1489
 msgid "Organisation"
 msgstr ""
 
-#: src/Model/Contact.php:1480
+#: src/Model/Contact.php:1497
 msgid "Forum"
 msgstr ""
 
-#: src/Model/Contact.php:2350
+#: src/Model/Contact.php:2372
 msgid "Disallowed profile URL."
 msgstr ""
 
-#: src/Model/Contact.php:2355 src/Module/Friendica.php:81
+#: src/Model/Contact.php:2377 src/Module/Friendica.php:81
 msgid "Blocked domain"
 msgstr ""
 
-#: src/Model/Contact.php:2360
+#: src/Model/Contact.php:2382
 msgid "Connect URL missing."
 msgstr ""
 
-#: src/Model/Contact.php:2369
+#: src/Model/Contact.php:2391
 msgid ""
 "The contact could not be added. Please check the relevant network "
 "credentials in your Settings -> Social Networks page."
 msgstr ""
 
-#: src/Model/Contact.php:2406
+#: src/Model/Contact.php:2428
 msgid "The profile address specified does not provide adequate information."
 msgstr ""
 
-#: src/Model/Contact.php:2408
+#: src/Model/Contact.php:2430
 msgid "No compatible communication protocols or feeds were discovered."
 msgstr ""
 
-#: src/Model/Contact.php:2411
+#: src/Model/Contact.php:2433
 msgid "An author or name was not found."
 msgstr ""
 
-#: src/Model/Contact.php:2414
+#: src/Model/Contact.php:2436
 msgid "No browser URL could be matched to this address."
 msgstr ""
 
-#: src/Model/Contact.php:2417
+#: src/Model/Contact.php:2439
 msgid ""
 "Unable to match @-style Identity Address with a known protocol or email "
 "contact."
 msgstr ""
 
-#: src/Model/Contact.php:2418
+#: src/Model/Contact.php:2440
 msgid "Use mailto: in front of address to force email check."
 msgstr ""
 
-#: src/Model/Contact.php:2424
+#: src/Model/Contact.php:2446
 msgid ""
 "The profile address specified belongs to a network which has been disabled "
 "on this site."
 msgstr ""
 
-#: src/Model/Contact.php:2429
+#: src/Model/Contact.php:2451
 msgid ""
 "Limited profile. This person will be unable to receive direct/personal "
 "notifications from you."
 msgstr ""
 
-#: src/Model/Contact.php:2488
+#: src/Model/Contact.php:2510
 msgid "Unable to retrieve contact information."
 msgstr ""
 
@@ -4239,33 +4243,33 @@ msgstr ""
 msgid "Edit groups"
 msgstr ""
 
-#: src/Model/Item.php:1677
+#: src/Model/Item.php:1679
 #, php-format
 msgid "Detected languages in this post:\\n%s"
 msgstr ""
 
-#: src/Model/Item.php:2628
+#: src/Model/Item.php:2630
 msgid "activity"
 msgstr ""
 
-#: src/Model/Item.php:2630
+#: src/Model/Item.php:2632
 msgid "comment"
 msgstr ""
 
-#: src/Model/Item.php:2633
+#: src/Model/Item.php:2635
 msgid "post"
 msgstr ""
 
-#: src/Model/Item.php:2770
+#: src/Model/Item.php:2772
 #, php-format
 msgid "Content warning: %s"
 msgstr ""
 
-#: src/Model/Item.php:3120
+#: src/Model/Item.php:3122
 msgid "bytes"
 msgstr ""
 
-#: src/Model/Item.php:3149 src/Model/Item.php:3150
+#: src/Model/Item.php:3151 src/Model/Item.php:3152
 msgid "View on separate page"
 msgstr ""
 
@@ -4296,120 +4300,120 @@ msgstr ""
 msgid "Atom feed"
 msgstr ""
 
-#: src/Model/Profile.php:496 src/Model/Profile.php:593
-msgid "g A l F d"
-msgstr ""
-
-#: src/Model/Profile.php:497
+#: src/Model/Profile.php:502
 msgid "F d"
 msgstr ""
 
-#: src/Model/Profile.php:559 src/Model/Profile.php:644
+#: src/Model/Profile.php:566 src/Model/Profile.php:650
 msgid "[today]"
 msgstr ""
 
-#: src/Model/Profile.php:569
+#: src/Model/Profile.php:575
 msgid "Birthday Reminders"
 msgstr ""
 
-#: src/Model/Profile.php:570
+#: src/Model/Profile.php:576
 msgid "Birthdays this week:"
 msgstr ""
 
-#: src/Model/Profile.php:631
+#: src/Model/Profile.php:599
+msgid "g A l F d"
+msgstr ""
+
+#: src/Model/Profile.php:637
 msgid "[No description]"
 msgstr ""
 
-#: src/Model/Profile.php:657
+#: src/Model/Profile.php:663
 msgid "Event Reminders"
 msgstr ""
 
-#: src/Model/Profile.php:658
+#: src/Model/Profile.php:664
 msgid "Upcoming events the next 7 days:"
 msgstr ""
 
-#: src/Model/Profile.php:846
+#: src/Model/Profile.php:852
 #, php-format
 msgid "OpenWebAuth: %1$s welcomes %2$s"
 msgstr ""
 
-#: src/Model/Profile.php:978
+#: src/Model/Profile.php:984
 msgid "Hometown:"
 msgstr ""
 
-#: src/Model/Profile.php:979
+#: src/Model/Profile.php:985
 msgid "Marital Status:"
 msgstr ""
 
-#: src/Model/Profile.php:980
+#: src/Model/Profile.php:986
 msgid "With:"
 msgstr ""
 
-#: src/Model/Profile.php:981
+#: src/Model/Profile.php:987
 msgid "Since:"
 msgstr ""
 
-#: src/Model/Profile.php:982
+#: src/Model/Profile.php:988
 msgid "Sexual Preference:"
 msgstr ""
 
-#: src/Model/Profile.php:983
+#: src/Model/Profile.php:989
 msgid "Political Views:"
 msgstr ""
 
-#: src/Model/Profile.php:984
+#: src/Model/Profile.php:990
 msgid "Religious Views:"
 msgstr ""
 
-#: src/Model/Profile.php:985
+#: src/Model/Profile.php:991
 msgid "Likes:"
 msgstr ""
 
-#: src/Model/Profile.php:986
+#: src/Model/Profile.php:992
 msgid "Dislikes:"
 msgstr ""
 
-#: src/Model/Profile.php:987
+#: src/Model/Profile.php:993
 msgid "Title/Description:"
 msgstr ""
 
-#: src/Model/Profile.php:988 src/Module/Admin/Summary.php:233
+#: src/Model/Profile.php:994 src/Module/Admin/Summary.php:233
 msgid "Summary"
 msgstr ""
 
-#: src/Model/Profile.php:989
+#: src/Model/Profile.php:995
 msgid "Musical interests"
 msgstr ""
 
-#: src/Model/Profile.php:990
+#: src/Model/Profile.php:996
 msgid "Books, literature"
 msgstr ""
 
-#: src/Model/Profile.php:991
+#: src/Model/Profile.php:997
 msgid "Television"
 msgstr ""
 
-#: src/Model/Profile.php:992
+#: src/Model/Profile.php:998
 msgid "Film/dance/culture/entertainment"
 msgstr ""
 
-#: src/Model/Profile.php:993
+#: src/Model/Profile.php:999
 msgid "Hobbies/Interests"
 msgstr ""
 
-#: src/Model/Profile.php:994
+#: src/Model/Profile.php:1000
 msgid "Love/romance"
 msgstr ""
 
-#: src/Model/Profile.php:995
+#: src/Model/Profile.php:1001
 msgid "Work/employment"
 msgstr ""
 
-#: src/Model/Profile.php:996
+#: src/Model/Profile.php:1002
 msgid "School/education"
 msgstr ""
 
-#: src/Model/Profile.php:997
+#: src/Model/Profile.php:1003
 msgid "Contact information and Social Networks"
 msgstr ""
 
@@ -4748,49 +4752,49 @@ msgid ""
 "the open addon registry at %2$s"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:53
+#: src/Module/Admin/BaseUsers.php:54
 msgid "List of all users"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:58
+#: src/Module/Admin/BaseUsers.php:59
 msgid "Active"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:61
+#: src/Module/Admin/BaseUsers.php:62
 msgid "List of active accounts"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:314
+#: src/Module/Admin/BaseUsers.php:67 src/Module/Contact.php:314
 #: src/Module/Contact.php:374
 msgid "Pending"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:69
+#: src/Module/Admin/BaseUsers.php:70
 msgid "List of pending registrations"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:322
+#: src/Module/Admin/BaseUsers.php:75 src/Module/Contact.php:322
 #: src/Module/Contact.php:375
 msgid "Blocked"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:77
+#: src/Module/Admin/BaseUsers.php:78
 msgid "List of blocked users"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:82
+#: src/Module/Admin/BaseUsers.php:83
 msgid "Deleted"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:85
+#: src/Module/Admin/BaseUsers.php:86
 msgid "List of pending user deletions"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:103
+#: src/Module/Admin/BaseUsers.php:104
 msgid "Private Forum"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:110
+#: src/Module/Admin/BaseUsers.php:111
 msgid "Relay"
 msgstr ""
 
@@ -6785,17 +6789,17 @@ msgstr ""
 msgid "Deny"
 msgstr ""
 
-#: src/Module/Api/ApiResponse.php:253
+#: src/Module/Api/ApiResponse.php:272
 #, php-format
 msgid "API endpoint %s %s is not implemented"
 msgstr ""
 
-#: src/Module/Api/ApiResponse.php:254
+#: src/Module/Api/ApiResponse.php:273
 msgid ""
 "The API endpoint is currently not implemented but might be in the future."
 msgstr ""
 
-#: src/Module/Api/Mastodon/Apps.php:57
+#: src/Module/Api/Mastodon/Apps.php:63
 msgid "Missing parameters"
 msgstr ""
 
@@ -6830,7 +6834,7 @@ msgstr ""
 msgid "Posts from %s can't be unshared"
 msgstr ""
 
-#: src/Module/Api/Twitter/ContactEndpoint.php:68
+#: src/Module/Api/Twitter/ContactEndpoint.php:66
 msgid "Contact not found"
 msgstr ""
 
@@ -6932,26 +6936,26 @@ msgstr ""
 msgid "User registrations waiting for confirmation"
 msgstr ""
 
-#: src/Module/BaseApi.php:239 src/Module/BaseApi.php:255
-#: src/Module/BaseApi.php:271
+#: src/Module/BaseApi.php:241 src/Module/BaseApi.php:257
+#: src/Module/BaseApi.php:273
 msgid "Too Many Requests"
 msgstr ""
 
-#: src/Module/BaseApi.php:240
+#: src/Module/BaseApi.php:242
 #, php-format
 msgid "Daily posting limit of %d post reached. The post was rejected."
 msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/BaseApi.php:256
+#: src/Module/BaseApi.php:258
 #, php-format
 msgid "Weekly posting limit of %d post reached. The post was rejected."
 msgid_plural "Weekly posting limit of %d posts reached. The post was rejected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/BaseApi.php:272
+#: src/Module/BaseApi.php:274
 #, php-format
 msgid "Monthly posting limit of %d post reached. The post was rejected."
 msgstr ""
@@ -7138,143 +7142,111 @@ msgstr ""
 msgid "Visit %s's profile [%s]"
 msgstr ""
 
-#: src/Module/Contact/Advanced.php:109
+#: src/Module/Contact/Advanced.php:99
 msgid "Contact update failed."
 msgstr ""
 
-#: src/Module/Contact/Advanced.php:124
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect "
-"information your communications with this contact may stop working."
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:125
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:145
+#: src/Module/Contact/Advanced.php:130
 msgid "Return to contact editor"
 msgstr ""
 
-#: src/Module/Contact/Advanced.php:150
+#: src/Module/Contact/Advanced.php:135
 msgid "Account Nickname"
 msgstr ""
 
-#: src/Module/Contact/Advanced.php:151
-msgid "@Tagname - overrides Name/Nickname"
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:152
+#: src/Module/Contact/Advanced.php:136
 msgid "Account URL"
 msgstr ""
 
-#: src/Module/Contact/Advanced.php:153
-msgid "Account URL Alias"
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:154
-msgid "Friend Request URL"
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:155
-msgid "Friend Confirm URL"
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:156
-msgid "Notification Endpoint URL"
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:157
+#: src/Module/Contact/Advanced.php:137
 msgid "Poll/Feed URL"
 msgstr ""
 
-#: src/Module/Contact/Advanced.php:158
+#: src/Module/Contact/Advanced.php:138
 msgid "New photo from this URL"
 msgstr ""
 
-#: src/Module/Contact/Contacts.php:31 src/Module/Conversation/Network.php:168
+#: src/Module/Contact/Contacts.php:50 src/Module/Conversation/Network.php:187
 #: src/Module/Group.php:103
 msgid "Invalid contact."
 msgstr ""
 
-#: src/Module/Contact/Contacts.php:54
+#: src/Module/Contact/Contacts.php:73
 msgid "No known contacts."
 msgstr ""
 
-#: src/Module/Contact/Contacts.php:68 src/Module/Profile/Common.php:98
+#: src/Module/Contact/Contacts.php:87 src/Module/Profile/Common.php:98
 msgid "No common contacts."
 msgstr ""
 
-#: src/Module/Contact/Contacts.php:80 src/Module/Profile/Contacts.php:96
+#: src/Module/Contact/Contacts.php:99 src/Module/Profile/Contacts.php:96
 #, php-format
 msgid "Follower (%s)"
 msgid_plural "Followers (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/Contact/Contacts.php:84 src/Module/Profile/Contacts.php:99
+#: src/Module/Contact/Contacts.php:103 src/Module/Profile/Contacts.php:99
 #, php-format
 msgid "Following (%s)"
 msgid_plural "Following (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/Contact/Contacts.php:88 src/Module/Profile/Contacts.php:102
+#: src/Module/Contact/Contacts.php:107 src/Module/Profile/Contacts.php:102
 #, php-format
 msgid "Mutual friend (%s)"
 msgid_plural "Mutual friends (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/Contact/Contacts.php:90 src/Module/Profile/Contacts.php:104
+#: src/Module/Contact/Contacts.php:109 src/Module/Profile/Contacts.php:104
 #, php-format
 msgid "These contacts both follow and are followed by <strong>%s</strong>."
 msgstr ""
 
-#: src/Module/Contact/Contacts.php:96 src/Module/Profile/Common.php:86
+#: src/Module/Contact/Contacts.php:115 src/Module/Profile/Common.php:86
 #, php-format
 msgid "Common contact (%s)"
 msgid_plural "Common contacts (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/Contact/Contacts.php:98 src/Module/Profile/Common.php:88
+#: src/Module/Contact/Contacts.php:117 src/Module/Profile/Common.php:88
 #, php-format
 msgid ""
 "Both <strong>%s</strong> and yourself have publicly interacted with these "
 "contacts (follow, comment or likes on public posts)."
 msgstr ""
 
-#: src/Module/Contact/Contacts.php:104 src/Module/Profile/Contacts.php:110
+#: src/Module/Contact/Contacts.php:123 src/Module/Profile/Contacts.php:110
 #, php-format
 msgid "Contact (%s)"
 msgid_plural "Contacts (%s)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Module/Contact/Poke.php:116
+#: src/Module/Contact/Poke.php:135
 msgid "Error while sending poke, please retry."
 msgstr ""
 
-#: src/Module/Contact/Poke.php:129 src/Module/Search/Acl.php:54
+#: src/Module/Contact/Poke.php:148 src/Module/Search/Acl.php:54
 msgid "You must be logged in to use this module."
 msgstr ""
 
-#: src/Module/Contact/Poke.php:152
+#: src/Module/Contact/Poke.php:171
 msgid "Poke/Prod"
 msgstr ""
 
-#: src/Module/Contact/Poke.php:153
+#: src/Module/Contact/Poke.php:172
 msgid "poke, prod or do other things to somebody"
 msgstr ""
 
-#: src/Module/Contact/Poke.php:155
+#: src/Module/Contact/Poke.php:174
 msgid "Choose what you wish to do to recipient"
 msgstr ""
 
-#: src/Module/Contact/Poke.php:156
+#: src/Module/Contact/Poke.php:175
 msgid "Make this post private"
 msgstr ""
 
@@ -7541,7 +7513,7 @@ msgstr ""
 
 #: src/Module/Contact/Revoke.php:109
 #: src/Module/Notifications/Introductions.php:142
-#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:130
+#: src/Module/OAuth/Acknowledge.php:53 src/Module/Register.php:130
 msgid "Yes"
 msgstr ""
 
@@ -7592,45 +7564,45 @@ msgstr ""
 msgid "Not available."
 msgstr ""
 
-#: src/Module/Conversation/Network.php:154
+#: src/Module/Conversation/Network.php:173
 msgid "No such group"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:158
+#: src/Module/Conversation/Network.php:177
 #, php-format
 msgid "Group: %s"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:234
+#: src/Module/Conversation/Network.php:253
 msgid "Latest Activity"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:237
+#: src/Module/Conversation/Network.php:256
 msgid "Sort by latest activity"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:242
+#: src/Module/Conversation/Network.php:261
 msgid "Latest Posts"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:245
+#: src/Module/Conversation/Network.php:264
 msgid "Sort by post received date"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:250
+#: src/Module/Conversation/Network.php:269
 #: src/Module/Settings/Profile/Index.php:227
 msgid "Personal"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:253
+#: src/Module/Conversation/Network.php:272
 msgid "Posts that mention or involve you"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:258 src/Object/Post.php:321
+#: src/Module/Conversation/Network.php:277 src/Object/Post.php:321
 msgid "Starred"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:261
+#: src/Module/Conversation/Network.php:280
 msgid "Favourite Posts"
 msgstr ""
 
@@ -8446,7 +8418,7 @@ msgid "Claims to be known to you: "
 msgstr ""
 
 #: src/Module/Notifications/Introductions.php:142
-#: src/Module/OAuth/Acknowledge.php:48 src/Module/Register.php:131
+#: src/Module/OAuth/Acknowledge.php:54 src/Module/Register.php:131
 msgid "No"
 msgstr ""
 
@@ -8510,11 +8482,11 @@ msgstr ""
 msgid "Show unread"
 msgstr ""
 
-#: src/Module/OAuth/Acknowledge.php:44
+#: src/Module/OAuth/Acknowledge.php:50
 msgid "Authorize application connection"
 msgstr ""
 
-#: src/Module/OAuth/Acknowledge.php:46
+#: src/Module/OAuth/Acknowledge.php:52
 msgid ""
 "Do you want to authorize this application to access your posts and contacts, "
 "and/or create new posts for you?"
@@ -8524,7 +8496,7 @@ msgstr ""
 msgid "Unsupported or missing response type"
 msgstr ""
 
-#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:66
+#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:72
 msgid "Incomplete request data"
 msgstr ""
 
@@ -8535,24 +8507,24 @@ msgid ""
 "close this window: %s"
 msgstr ""
 
-#: src/Module/OAuth/Token.php:90
+#: src/Module/OAuth/Token.php:96
 msgid "Unsupported or missing grant type"
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:25
+#: src/Module/PermissionTooltip.php:44
 #, php-format
 msgid "Wrong type \"%s\", expected one of: %s"
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:42
+#: src/Module/PermissionTooltip.php:61
 msgid "Model not found"
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:64
+#: src/Module/PermissionTooltip.php:83
 msgid "Remote privacy information not available."
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:73
+#: src/Module/PermissionTooltip.php:92
 msgid "Visible to:"
 msgstr ""
 
@@ -8971,7 +8943,7 @@ msgid ""
 msgstr ""
 
 #: src/Module/Security/TwoFactor/Verify.php:100
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Please enter a code from your authentication app"
 msgstr ""
 
@@ -9396,7 +9368,7 @@ msgstr ""
 
 #: src/Module/Settings/TwoFactor/AppSpecific.php:64
 #: src/Module/Settings/TwoFactor/Recovery.php:62
-#: src/Module/Settings/TwoFactor/Trusted.php:46
+#: src/Module/Settings/TwoFactor/Trusted.php:65
 #: src/Module/Settings/TwoFactor/Verify.php:68
 msgid "Please enter your password to access this page."
 msgstr ""
@@ -9599,42 +9571,42 @@ msgstr ""
 msgid "Next: Verification"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:63
+#: src/Module/Settings/TwoFactor/Trusted.php:82
 msgid "Trusted browsers successfully removed."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:73
+#: src/Module/Settings/TwoFactor/Trusted.php:92
 msgid "Trusted browser successfully removed."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:114
+#: src/Module/Settings/TwoFactor/Trusted.php:133
 msgid "Two-factor Trusted Browsers"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:115
+#: src/Module/Settings/TwoFactor/Trusted.php:134
 msgid ""
 "Trusted browsers are individual browsers you chose to skip two-factor "
 "authentication to access Friendica. Please use this feature sparingly, as it "
 "can negate the benefit of two-factor authentication."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:116
+#: src/Module/Settings/TwoFactor/Trusted.php:135
 msgid "Device"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:117
+#: src/Module/Settings/TwoFactor/Trusted.php:136
 msgid "OS"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:119
+#: src/Module/Settings/TwoFactor/Trusted.php:138
 msgid "Trusted"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:120
+#: src/Module/Settings/TwoFactor/Trusted.php:139
 msgid "Last Use"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:122
+#: src/Module/Settings/TwoFactor/Trusted.php:141
 msgid "Remove All"
 msgstr ""
 
@@ -9642,7 +9614,7 @@ msgstr ""
 msgid "Two-factor authentication successfully activated."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:123
+#: src/Module/Settings/TwoFactor/Verify.php:124
 #, php-format
 msgid ""
 "<p>Or you can submit the authentication settings manually:</p>\n"
@@ -9662,24 +9634,24 @@ msgid ""
 "</dl>"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:143
+#: src/Module/Settings/TwoFactor/Verify.php:144
 msgid "Two-factor code verification"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:145
+#: src/Module/Settings/TwoFactor/Verify.php:146
 msgid ""
 "<p>Please scan this QR Code with your authenticator app and submit the "
 "provided code.</p>"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:147
+#: src/Module/Settings/TwoFactor/Verify.php:148
 #, php-format
 msgid ""
 "<p>Or you can open the following URL in your mobile device:</p><p><a href="
 "\"%s\">%s</a></p>"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:154
+#: src/Module/Settings/TwoFactor/Verify.php:155
 msgid "Verify code and enable two-factor authentication"
 msgstr ""
 
@@ -9975,310 +9947,310 @@ msgstr ""
 msgid "New Follower"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:74
+#: src/Navigation/Notifications/Factory/Notification.php:93
 #, php-format
 msgid "%1$s wants to follow you"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:76
+#: src/Navigation/Notifications/Factory/Notification.php:95
 #, php-format
 msgid "%1$s had started following you"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:141
+#: src/Navigation/Notifications/Factory/Notification.php:160
 #, php-format
 msgid "%1$s liked your comment %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:144
+#: src/Navigation/Notifications/Factory/Notification.php:163
 #, php-format
 msgid "%1$s liked your post %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:151
+#: src/Navigation/Notifications/Factory/Notification.php:170
 #, php-format
 msgid "%1$s disliked your comment %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:154
+#: src/Navigation/Notifications/Factory/Notification.php:173
 #, php-format
 msgid "%1$s disliked your post %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:161
+#: src/Navigation/Notifications/Factory/Notification.php:180
 #, php-format
 msgid "%1$s shared your comment %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:164
+#: src/Navigation/Notifications/Factory/Notification.php:183
 #, php-format
 msgid "%1$s shared your post %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:171
+#: src/Navigation/Notifications/Factory/Notification.php:190
 #, php-format
 msgid "%1$s tagged you on %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:175
+#: src/Navigation/Notifications/Factory/Notification.php:194
 #, php-format
 msgid "%1$s replied to you on %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:179
+#: src/Navigation/Notifications/Factory/Notification.php:198
 #, php-format
 msgid "%1$s commented in your thread %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:183
+#: src/Navigation/Notifications/Factory/Notification.php:202
 #, php-format
 msgid "%1$s commented on your comment %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:189
+#: src/Navigation/Notifications/Factory/Notification.php:208
 #, php-format
 msgid "%1$s commented in their thread %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:191
+#: src/Navigation/Notifications/Factory/Notification.php:210
 #, php-format
 msgid "%1$s commented in their thread"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:193
+#: src/Navigation/Notifications/Factory/Notification.php:212
 #, php-format
 msgid "%1$s commented in the thread %2$s from %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:195
+#: src/Navigation/Notifications/Factory/Notification.php:214
 #, php-format
 msgid "%1$s commented in the thread from %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:200
+#: src/Navigation/Notifications/Factory/Notification.php:219
 #, php-format
 msgid "%1$s commented on your thread %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:205
+#: src/Navigation/Notifications/Factory/Notification.php:224
 #, php-format
 msgid "%1$s shared the post %2$s from %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:207
+#: src/Navigation/Notifications/Factory/Notification.php:226
 #, php-format
 msgid "%1$s shared a post from %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:209
+#: src/Navigation/Notifications/Factory/Notification.php:228
 #, php-format
 msgid "%1$s shared the post %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Factory/Notification.php:211
+#: src/Navigation/Notifications/Factory/Notification.php:230
 #, php-format
 msgid "%1$s shared a post"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:192
-#: src/Navigation/Notifications/Repository/Notify.php:675
+#: src/Navigation/Notifications/Repository/Notify.php:211
+#: src/Navigation/Notifications/Repository/Notify.php:694
 msgid "[Friendica:Notify]"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:256
+#: src/Navigation/Notifications/Repository/Notify.php:275
 #, php-format
 msgid "%s New mail received at %s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:258
+#: src/Navigation/Notifications/Repository/Notify.php:277
 #, php-format
 msgid "%1$s sent you a new private message at %2$s."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 msgid "a private message"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 #, php-format
 msgid "%1$s sent you %2$s."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:261
+#: src/Navigation/Notifications/Repository/Notify.php:280
 #, php-format
 msgid "Please visit %s to view and/or reply to your private messages."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:292
+#: src/Navigation/Notifications/Repository/Notify.php:311
 #, php-format
 msgid "%1$s commented on %2$s's %3$s %4$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:297
+#: src/Navigation/Notifications/Repository/Notify.php:316
 #, php-format
 msgid "%1$s commented on your %2$s %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:301
+#: src/Navigation/Notifications/Repository/Notify.php:320
 #, php-format
 msgid "%1$s commented on their %2$s %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:305
-#: src/Navigation/Notifications/Repository/Notify.php:710
+#: src/Navigation/Notifications/Repository/Notify.php:324
+#: src/Navigation/Notifications/Repository/Notify.php:729
 #, php-format
 msgid "%1$s Comment to conversation #%2$d by %3$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:307
+#: src/Navigation/Notifications/Repository/Notify.php:326
 #, php-format
 msgid "%s commented on an item/conversation you have been following."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:311
-#: src/Navigation/Notifications/Repository/Notify.php:326
+#: src/Navigation/Notifications/Repository/Notify.php:330
 #: src/Navigation/Notifications/Repository/Notify.php:345
-#: src/Navigation/Notifications/Repository/Notify.php:725
+#: src/Navigation/Notifications/Repository/Notify.php:364
+#: src/Navigation/Notifications/Repository/Notify.php:744
 #, php-format
 msgid "Please visit %s to view and/or reply to the conversation."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:318
+#: src/Navigation/Notifications/Repository/Notify.php:337
 #, php-format
 msgid "%s %s posted to your profile wall"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:320
+#: src/Navigation/Notifications/Repository/Notify.php:339
 #, php-format
 msgid "%1$s posted to your profile wall at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:321
+#: src/Navigation/Notifications/Repository/Notify.php:340
 #, php-format
 msgid "%1$s posted to [url=%2$s]your wall[/url]"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:333
+#: src/Navigation/Notifications/Repository/Notify.php:352
 #, php-format
 msgid "%1$s %2$s poked you"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:335
+#: src/Navigation/Notifications/Repository/Notify.php:354
 #, php-format
 msgid "%1$s poked you at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:336
+#: src/Navigation/Notifications/Repository/Notify.php:355
 #, php-format
 msgid "%1$s [url=%2$s]poked you[/url]."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:353
+#: src/Navigation/Notifications/Repository/Notify.php:372
 #, php-format
 msgid "%s Introduction received"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:355
+#: src/Navigation/Notifications/Repository/Notify.php:374
 #, php-format
 msgid "You've received an introduction from '%1$s' at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:356
+#: src/Navigation/Notifications/Repository/Notify.php:375
 #, php-format
 msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:361
-#: src/Navigation/Notifications/Repository/Notify.php:407
+#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:426
 #, php-format
 msgid "You may visit their profile at %s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:363
+#: src/Navigation/Notifications/Repository/Notify.php:382
 #, php-format
 msgid "Please visit %s to approve or reject the introduction."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:370
+#: src/Navigation/Notifications/Repository/Notify.php:389
 #, php-format
 msgid "%s A new person is sharing with you"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:372
-#: src/Navigation/Notifications/Repository/Notify.php:373
+#: src/Navigation/Notifications/Repository/Notify.php:391
+#: src/Navigation/Notifications/Repository/Notify.php:392
 #, php-format
 msgid "%1$s is sharing with you at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:399
 #, php-format
 msgid "%s You have a new follower"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:382
-#: src/Navigation/Notifications/Repository/Notify.php:383
+#: src/Navigation/Notifications/Repository/Notify.php:401
+#: src/Navigation/Notifications/Repository/Notify.php:402
 #, php-format
 msgid "You have a new follower at %2$s : %1$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:396
+#: src/Navigation/Notifications/Repository/Notify.php:415
 #, php-format
 msgid "%s Friend suggestion received"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:398
+#: src/Navigation/Notifications/Repository/Notify.php:417
 #, php-format
 msgid "You've received a friend suggestion from '%1$s' at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:399
+#: src/Navigation/Notifications/Repository/Notify.php:418
 #, php-format
 msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:405
+#: src/Navigation/Notifications/Repository/Notify.php:424
 msgid "Name:"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:406
+#: src/Navigation/Notifications/Repository/Notify.php:425
 msgid "Photo:"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:409
+#: src/Navigation/Notifications/Repository/Notify.php:428
 #, php-format
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:417
-#: src/Navigation/Notifications/Repository/Notify.php:432
+#: src/Navigation/Notifications/Repository/Notify.php:436
+#: src/Navigation/Notifications/Repository/Notify.php:451
 #, php-format
 msgid "%s Connection accepted"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:419
-#: src/Navigation/Notifications/Repository/Notify.php:434
+#: src/Navigation/Notifications/Repository/Notify.php:438
+#: src/Navigation/Notifications/Repository/Notify.php:453
 #, php-format
 msgid "'%1$s' has accepted your connection request at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:420
-#: src/Navigation/Notifications/Repository/Notify.php:435
+#: src/Navigation/Notifications/Repository/Notify.php:439
+#: src/Navigation/Notifications/Repository/Notify.php:454
 #, php-format
 msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:425
+#: src/Navigation/Notifications/Repository/Notify.php:444
 msgid ""
 "You are now mutual friends and may exchange status updates, photos, and "
 "email without restriction."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:427
+#: src/Navigation/Notifications/Repository/Notify.php:446
 #, php-format
 msgid "Please visit %s if you wish to make any changes to this relationship."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:440
+#: src/Navigation/Notifications/Repository/Notify.php:459
 #, php-format
 msgid ""
 "'%1$s' has chosen to accept you a fan, which restricts some forms of "
@@ -10287,33 +10259,33 @@ msgid ""
 "automatically."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:442
+#: src/Navigation/Notifications/Repository/Notify.php:461
 #, php-format
 msgid ""
 "'%1$s' may choose to extend this into a two-way or more permissive "
 "relationship in the future."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:444
+#: src/Navigation/Notifications/Repository/Notify.php:463
 #, php-format
 msgid "Please visit %s  if you wish to make any changes to this relationship."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:454
+#: src/Navigation/Notifications/Repository/Notify.php:473
 msgid "registration request"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:456
+#: src/Navigation/Notifications/Repository/Notify.php:475
 #, php-format
 msgid "You've received a registration request from '%1$s' at %2$s"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:457
+#: src/Navigation/Notifications/Repository/Notify.php:476
 #, php-format
 msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:462
+#: src/Navigation/Notifications/Repository/Notify.php:481
 #, php-format
 msgid ""
 "Full Name:\t%s\n"
@@ -10321,17 +10293,17 @@ msgid ""
 "Login Name:\t%s (%s)"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:468
+#: src/Navigation/Notifications/Repository/Notify.php:487
 #, php-format
 msgid "Please visit %s to approve or reject the request."
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:704
+#: src/Navigation/Notifications/Repository/Notify.php:723
 #, php-format
 msgid "%s %s tagged you"
 msgstr ""
 
-#: src/Navigation/Notifications/Repository/Notify.php:707
+#: src/Navigation/Notifications/Repository/Notify.php:726
 #, php-format
 msgid "%s %s shared a new post"
 msgstr ""
@@ -10358,14 +10330,18 @@ msgstr ""
 msgid "%s posted an update."
 msgstr ""
 
-#: src/Object/Post.php:149
+#: src/Object/Post.php:147
 msgid "This entry was edited"
 msgstr ""
 
-#: src/Object/Post.php:177
+#: src/Object/Post.php:175
 msgid "Private Message"
 msgstr ""
 
+#: src/Object/Post.php:178
+msgid "Connector Message"
+msgstr ""
+
 #: src/Object/Post.php:193 src/Object/Post.php:195
 msgid "Edit"
 msgstr ""
@@ -10508,47 +10484,47 @@ msgstr ""
 msgid "via Wall-To-Wall:"
 msgstr ""
 
-#: src/Object/Post.php:497
+#: src/Object/Post.php:499
 #, php-format
 msgid "Reply to %s"
 msgstr ""
 
-#: src/Object/Post.php:500
+#: src/Object/Post.php:502
 msgid "More"
 msgstr ""
 
-#: src/Object/Post.php:518
+#: src/Object/Post.php:520
 msgid "Notifier task is pending"
 msgstr ""
 
-#: src/Object/Post.php:519
+#: src/Object/Post.php:521
 msgid "Delivery to remote servers is pending"
 msgstr ""
 
-#: src/Object/Post.php:520
+#: src/Object/Post.php:522
 msgid "Delivery to remote servers is underway"
 msgstr ""
 
-#: src/Object/Post.php:521
+#: src/Object/Post.php:523
 msgid "Delivery to remote servers is mostly done"
 msgstr ""
 
-#: src/Object/Post.php:522
+#: src/Object/Post.php:524
 msgid "Delivery to remote servers is done"
 msgstr ""
 
-#: src/Object/Post.php:542
+#: src/Object/Post.php:544
 #, php-format
 msgid "%d comment"
 msgid_plural "%d comments"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/Object/Post.php:543
+#: src/Object/Post.php:545
 msgid "Show more"
 msgstr ""
 
-#: src/Object/Post.php:544
+#: src/Object/Post.php:546
 msgid "Show fewer"
 msgstr ""
 
index 6655f0a487ac694eb2bfeef91309f01727431636..edc84ed90ec7619e38074e65e39749138f80940f 100644 (file)
@@ -40,7 +40,7 @@
 # Steffen K9, 2019
 # Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2013-2016
 # Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2011-2013
-# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016-2021
+# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2016-2022
 # zottel <transifex@zottel.net>, 2011-2012
 # tschlotfeldt <ts+transifex@ml.tschlotfeldt.de>, 2011
 # Ulf Rompe <transifex.com@rompe.org>, 2019
@@ -49,8 +49,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-11-21 19:02-0500\n"
-"PO-Revision-Date: 2021-11-22 06:49+0000\n"
+"POT-Creation-Date: 2022-01-21 14:21+0100\n"
+"PO-Revision-Date: 2022-01-22 17:09+0000\n"
 "Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
 "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
 "MIME-Version: 1.0\n"
@@ -59,26 +59,6 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/api.php:415 src/Module/BaseApi.php:257
-#, php-format
-msgid "Daily posting limit of %d post reached. The post was rejected."
-msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
-msgstr[0] "Das tägliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen."
-msgstr[1] "Das tägliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
-
-#: include/api.php:429 src/Module/BaseApi.php:273
-#, php-format
-msgid "Weekly posting limit of %d post reached. The post was rejected."
-msgid_plural ""
-"Weekly posting limit of %d posts reached. The post was rejected."
-msgstr[0] "Das wöchentliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen."
-msgstr[1] "Das wöchentliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
-
-#: include/api.php:443 src/Module/BaseApi.php:289
-#, php-format
-msgid "Monthly posting limit of %d post reached. The post was rejected."
-msgstr "Das monatliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
-
 #: mod/cal.php:44 mod/cal.php:48 mod/follow.php:39 mod/redir.php:34
 #: mod/redir.php:175 src/Module/Conversation/Community.php:181
 #: src/Module/Debug/ItemBody.php:37 src/Module/Diaspora/Receive.php:57
@@ -93,7 +73,7 @@ msgstr "Zugriff verweigert."
 #: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52
 #: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50
 #: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:58
-#: src/Module/Register.php:263 src/Module/RemoteFollow.php:58
+#: src/Module/Register.php:267 src/Module/RemoteFollow.php:58
 msgid "User not found."
 msgstr "Benutzer nicht gefunden."
 
@@ -118,7 +98,7 @@ msgstr "Ansehen"
 msgid "Previous"
 msgstr "Vorherige"
 
-#: mod/cal.php:245 mod/events.php:381 src/Module/Install.php:215
+#: mod/cal.php:245 mod/events.php:381 src/Module/Install.php:214
 msgid "Next"
 msgstr "Nächste"
 
@@ -148,7 +128,7 @@ msgstr "Liste"
 #: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:659
 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
-#: src/Module/Api/Twitter/ContactEndpoint.php:72
+#: src/Module/Api/Twitter/ContactEndpoint.php:74
 msgid "User not found"
 msgstr "Nutzer nicht gefunden"
 
@@ -182,23 +162,22 @@ msgstr "Der Feed für diesen Beitrag ist nicht verfügbar."
 #: mod/item.php:185 mod/item.php:190 mod/item.php:937 mod/message.php:69
 #: mod/message.php:111 mod/notes.php:44 mod/ostatus_subscribe.php:32
 #: mod/photos.php:160 mod/photos.php:897 mod/repair_ostatus.php:31
-#: mod/settings.php:46 mod/settings.php:56 mod/settings.php:410
+#: mod/settings.php:46 mod/settings.php:56 mod/settings.php:412
 #: mod/suggest.php:34 mod/uimport.php:33 mod/unfollow.php:35
 #: mod/unfollow.php:50 mod/unfollow.php:82 mod/wall_attach.php:68
 #: mod/wall_attach.php:71 mod/wall_upload.php:90 mod/wall_upload.php:93
-#: mod/wallmessage.php:36 mod/wallmessage.php:55 mod/wallmessage.php:89
-#: mod/wallmessage.php:109 src/Module/Attach.php:55 src/Module/BaseApi.php:59
-#: src/Module/BaseApi.php:68 src/Module/BaseApi.php:77
-#: src/Module/BaseApi.php:86 src/Module/BaseNotifications.php:94
-#: src/Module/Contact/Advanced.php:60 src/Module/Delegation.php:118
-#: src/Module/FollowConfirm.php:17 src/Module/FriendSuggest.php:56
-#: src/Module/Group.php:44 src/Module/Group.php:89 src/Module/Invite.php:41
-#: src/Module/Invite.php:130 src/Module/Notifications/Notification.php:48
+#: mod/wallmessage.php:37 mod/wallmessage.php:56 mod/wallmessage.php:90
+#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:93
+#: src/Module/BaseNotifications.php:97 src/Module/Contact/Advanced.php:60
+#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:38
+#: src/Module/FriendSuggest.php:56 src/Module/Group.php:42
+#: src/Module/Group.php:85 src/Module/Invite.php:41 src/Module/Invite.php:130
+#: src/Module/Notifications/Notification.php:48
 #: src/Module/Notifications/Notification.php:79
 #: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:56
 #: src/Module/Profile/Schedule.php:39 src/Module/Profile/Schedule.php:56
-#: src/Module/Register.php:73 src/Module/Register.php:86
-#: src/Module/Register.php:202 src/Module/Register.php:241
+#: src/Module/Register.php:77 src/Module/Register.php:90
+#: src/Module/Register.php:206 src/Module/Register.php:245
 #: src/Module/Search/Directory.php:37 src/Module/Settings/Delegation.php:42
 #: src/Module/Settings/Delegation.php:70 src/Module/Settings/Display.php:42
 #: src/Module/Settings/Display.php:120
@@ -220,17 +199,17 @@ msgid "Edit post"
 msgstr "Beitrag bearbeiten"
 
 #: mod/editpost.php:91 mod/notes.php:56 src/Content/Text/HTML.php:875
-#: src/Module/Admin/Storage.php:142 src/Module/Filer/SaveTag.php:76
+#: src/Module/Admin/Storage.php:142 src/Module/Filer/SaveTag.php:73
 msgid "Save"
 msgstr "Speichern"
 
 #: mod/editpost.php:92 mod/photos.php:1344 src/Content/Conversation.php:326
-#: src/Module/Contact/Poke.php:157 src/Object/Post.php:964
+#: src/Module/Contact/Poke.php:176 src/Object/Post.php:966
 msgid "Loading..."
 msgstr "lädt..."
 
 #: mod/editpost.php:93 mod/message.php:198 mod/message.php:355
-#: mod/wallmessage.php:139 src/Content/Conversation.php:327
+#: mod/wallmessage.php:140 src/Content/Conversation.php:327
 msgid "Upload photo"
 msgstr "Foto hochladen"
 
@@ -247,7 +226,7 @@ msgid "attach file"
 msgstr "Datei anhängen"
 
 #: mod/editpost.php:97 mod/message.php:199 mod/message.php:356
-#: mod/wallmessage.php:140
+#: mod/wallmessage.php:141
 msgid "Insert web link"
 msgstr "Einen Link einfügen"
 
@@ -289,9 +268,9 @@ msgid "clear location"
 msgstr "Ort löschen"
 
 #: mod/editpost.php:107 mod/message.php:200 mod/message.php:358
-#: mod/photos.php:1495 mod/wallmessage.php:141
-#: src/Content/Conversation.php:355 src/Content/Conversation.php:689
-#: src/Module/Item/Compose.php:165 src/Object/Post.php:502
+#: mod/photos.php:1495 mod/wallmessage.php:142
+#: src/Content/Conversation.php:355 src/Content/Conversation.php:690
+#: src/Module/Item/Compose.php:165 src/Object/Post.php:504
 msgid "Please wait"
 msgstr "Bitte warten"
 
@@ -323,49 +302,49 @@ msgstr "Z.B.: bob@example.com, mary@example.com"
 
 #: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1343
 #: mod/photos.php:1399 mod/photos.php:1473 src/Content/Conversation.php:370
-#: src/Module/Item/Compose.php:160 src/Object/Post.php:974
+#: src/Module/Item/Compose.php:160 src/Object/Post.php:976
 msgid "Preview"
 msgstr "Vorschau"
 
-#: mod/editpost.php:130 mod/fbrowser.php:100 mod/fbrowser.php:127
+#: mod/editpost.php:130 mod/fbrowser.php:117 mod/fbrowser.php:144
 #: mod/follow.php:144 mod/photos.php:1010 mod/photos.php:1111 mod/tagrm.php:35
 #: mod/tagrm.php:127 mod/unfollow.php:97 src/Content/Conversation.php:373
-#: src/Module/Contact/Revoke.php:114 src/Module/RemoteFollow.php:128
+#: src/Module/Contact/Revoke.php:110 src/Module/RemoteFollow.php:127
 msgid "Cancel"
 msgstr "Abbrechen"
 
 #: mod/editpost.php:134 src/Content/Conversation.php:331
-#: src/Module/Item/Compose.php:151 src/Object/Post.php:965
+#: src/Module/Item/Compose.php:151 src/Object/Post.php:967
 msgid "Bold"
 msgstr "Fett"
 
 #: mod/editpost.php:135 src/Content/Conversation.php:332
-#: src/Module/Item/Compose.php:152 src/Object/Post.php:966
+#: src/Module/Item/Compose.php:152 src/Object/Post.php:968
 msgid "Italic"
 msgstr "Kursiv"
 
 #: mod/editpost.php:136 src/Content/Conversation.php:333
-#: src/Module/Item/Compose.php:153 src/Object/Post.php:967
+#: src/Module/Item/Compose.php:153 src/Object/Post.php:969
 msgid "Underline"
 msgstr "Unterstrichen"
 
 #: mod/editpost.php:137 src/Content/Conversation.php:334
-#: src/Module/Item/Compose.php:154 src/Object/Post.php:968
+#: src/Module/Item/Compose.php:154 src/Object/Post.php:970
 msgid "Quote"
 msgstr "Zitat"
 
 #: mod/editpost.php:138 src/Content/Conversation.php:335
-#: src/Module/Item/Compose.php:155 src/Object/Post.php:969
+#: src/Module/Item/Compose.php:155 src/Object/Post.php:971
 msgid "Code"
 msgstr "Code"
 
 #: mod/editpost.php:139 src/Content/Conversation.php:337
-#: src/Module/Item/Compose.php:157 src/Object/Post.php:971
+#: src/Module/Item/Compose.php:157 src/Object/Post.php:973
 msgid "Link"
 msgstr "Link"
 
 #: mod/editpost.php:140 src/Content/Conversation.php:338
-#: src/Module/Item/Compose.php:158 src/Object/Post.php:972
+#: src/Module/Item/Compose.php:158 src/Object/Post.php:974
 msgid "Link or Media"
 msgstr "Link oder Mediendatei"
 
@@ -376,7 +355,7 @@ msgid "Message"
 msgstr "Nachricht"
 
 #: mod/editpost.php:144 src/Content/Conversation.php:381
-#: src/Module/Settings/TwoFactor/Trusted.php:113
+#: src/Module/Settings/TwoFactor/Trusted.php:137
 msgid "Browser"
 msgstr "Browser"
 
@@ -419,16 +398,16 @@ msgstr "Veranstaltungsbeginn:"
 #: src/Module/Admin/Blocklist/Server/Index.php:68
 #: src/Module/Admin/Blocklist/Server/Index.php:69
 #: src/Module/Admin/Blocklist/Server/Index.php:96
-#: src/Module/Admin/Item/Delete.php:70 src/Module/Debug/Probe.php:59
-#: src/Module/Install.php:208 src/Module/Install.php:241
-#: src/Module/Install.php:246 src/Module/Install.php:265
-#: src/Module/Install.php:276 src/Module/Install.php:281
-#: src/Module/Install.php:287 src/Module/Install.php:292
-#: src/Module/Install.php:306 src/Module/Install.php:321
-#: src/Module/Install.php:348 src/Module/Register.php:144
+#: src/Module/Admin/Item/Delete.php:69 src/Module/Debug/Probe.php:59
+#: src/Module/Install.php:207 src/Module/Install.php:240
+#: src/Module/Install.php:245 src/Module/Install.php:264
+#: src/Module/Install.php:275 src/Module/Install.php:280
+#: src/Module/Install.php:286 src/Module/Install.php:291
+#: src/Module/Install.php:305 src/Module/Install.php:320
+#: src/Module/Install.php:347 src/Module/Register.php:148
 #: src/Module/Security/TwoFactor/Verify.php:100
 #: src/Module/Settings/TwoFactor/Index.php:133
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Required"
 msgstr "Benötigt"
 
@@ -447,8 +426,8 @@ msgstr "Beschreibung"
 
 #: mod/events.php:508 src/Content/Widget/VCard.php:98 src/Model/Event.php:80
 #: src/Model/Event.php:107 src/Model/Event.php:466 src/Model/Event.php:915
-#: src/Model/Profile.php:368 src/Module/Contact/Profile.php:375
-#: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:181
+#: src/Model/Profile.php:368 src/Module/Contact/Profile.php:369
+#: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:185
 #: src/Module/Profile/Profile.php:194
 msgid "Location:"
 msgstr "Ort:"
@@ -464,16 +443,16 @@ msgstr "Veranstaltung teilen"
 #: mod/events.php:519 mod/message.php:201 mod/message.php:357
 #: mod/photos.php:927 mod/photos.php:1031 mod/photos.php:1301
 #: mod/photos.php:1342 mod/photos.php:1398 mod/photos.php:1472
-#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:147
-#: src/Module/Contact/Poke.php:158 src/Module/Contact/Profile.php:333
+#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:132
+#: src/Module/Contact/Poke.php:177 src/Module/Contact/Profile.php:327
 #: src/Module/Debug/ActivityPubConversion.php:141
 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
 #: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
-#: src/Module/Delegation.php:147 src/Module/FriendSuggest.php:145
-#: src/Module/Install.php:253 src/Module/Install.php:295
-#: src/Module/Install.php:332 src/Module/Invite.php:177
+#: src/Module/Delegation.php:148 src/Module/FriendSuggest.php:144
+#: src/Module/Install.php:252 src/Module/Install.php:294
+#: src/Module/Install.php:331 src/Module/Invite.php:177
 #: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247
-#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:963
+#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:965
 #: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
 #: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
 msgid "Submit"
@@ -492,21 +471,21 @@ msgstr "Erweitert"
 msgid "Failed to remove event"
 msgstr "Entfernen der Veranstaltung fehlgeschlagen"
 
-#: mod/fbrowser.php:43 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
+#: mod/fbrowser.php:60 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
 #: view/theme/frio/theme.php:227
 msgid "Photos"
 msgstr "Bilder"
 
-#: mod/fbrowser.php:102 mod/fbrowser.php:129
+#: mod/fbrowser.php:119 mod/fbrowser.php:146
 #: src/Module/Settings/Profile/Photo/Index.php:129
 msgid "Upload"
 msgstr "Hochladen"
 
-#: mod/fbrowser.php:124
+#: mod/fbrowser.php:141
 msgid "Files"
 msgstr "Dateien"
 
-#: mod/follow.php:74 mod/unfollow.php:96 src/Module/RemoteFollow.php:127
+#: mod/follow.php:74 mod/unfollow.php:96 src/Module/RemoteFollow.php:126
 msgid "Submit Request"
 msgstr "Anfrage abschicken"
 
@@ -527,12 +506,12 @@ 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/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
-#: src/Model/Contact.php:1042 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1055 src/Model/Contact.php:1067
 #: view/theme/vier/theme.php:172
 msgid "Connect/Follow"
 msgstr "Verbinden/Folgen"
 
-#: mod/follow.php:139 src/Module/RemoteFollow.php:126
+#: mod/follow.php:139 src/Module/RemoteFollow.php:125
 msgid "Please answer the following:"
 msgstr "Bitte beantworte folgendes:"
 
@@ -542,14 +521,14 @@ msgstr "Adresse Deines Profils:"
 
 #: mod/follow.php:141 mod/unfollow.php:100
 #: src/Module/Admin/Blocklist/Contact.php:116
-#: src/Module/Contact/Profile.php:371
-#: src/Module/Notifications/Introductions.php:123
-#: src/Module/Notifications/Introductions.php:192
+#: src/Module/Contact/Profile.php:365
+#: src/Module/Notifications/Introductions.php:127
+#: src/Module/Notifications/Introductions.php:196
 msgid "Profile URL"
 msgstr "Profil URL"
 
-#: mod/follow.php:142 src/Module/Contact/Profile.php:383
-#: src/Module/Notifications/Introductions.php:185
+#: mod/follow.php:142 src/Module/Contact/Profile.php:377
+#: src/Module/Notifications/Introductions.php:189
 #: src/Module/Profile/Profile.php:207
 msgid "Tags:"
 msgstr "Tags:"
@@ -748,7 +727,7 @@ msgstr "Profilübereinstimmungen"
 msgid "New Message"
 msgstr "Neue Nachricht"
 
-#: mod/message.php:83 mod/wallmessage.php:69
+#: mod/message.php:83 mod/wallmessage.php:70
 msgid "No recipient selected."
 msgstr "Kein Empfänger gewählt."
 
@@ -756,16 +735,16 @@ msgstr "Kein Empfänger gewählt."
 msgid "Unable to locate contact information."
 msgstr "Konnte die Kontaktinformationen nicht finden."
 
-#: mod/message.php:90 mod/wallmessage.php:75
+#: mod/message.php:90 mod/wallmessage.php:76
 msgid "Message could not be sent."
 msgstr "Nachricht konnte nicht gesendet werden."
 
-#: mod/message.php:93 mod/wallmessage.php:78
+#: mod/message.php:93 mod/wallmessage.php:79
 msgid "Message collection failure."
 msgstr "Konnte Nachrichten nicht abrufen."
 
-#: mod/message.php:120 src/Module/Notifications/Introductions.php:129
-#: src/Module/Notifications/Introductions.php:164
+#: mod/message.php:120 src/Module/Notifications/Introductions.php:133
+#: src/Module/Notifications/Introductions.php:168
 #: src/Module/Notifications/Notification.php:57
 msgid "Discard"
 msgstr "Verwerfen"
@@ -786,23 +765,23 @@ msgstr "Nachricht wurde nicht gelöscht"
 msgid "Conversation was not removed."
 msgstr "Unterhaltung wurde nicht entfernt"
 
-#: mod/message.php:180 mod/message.php:286 mod/wallmessage.php:123
+#: mod/message.php:180 mod/message.php:286 mod/wallmessage.php:124
 msgid "Please enter a link URL:"
 msgstr "Bitte gib die URL des Links ein:"
 
-#: mod/message.php:189 mod/wallmessage.php:128
+#: mod/message.php:189 mod/wallmessage.php:129
 msgid "Send Private Message"
 msgstr "Private Nachricht senden"
 
-#: mod/message.php:190 mod/message.php:347 mod/wallmessage.php:130
+#: mod/message.php:190 mod/message.php:347 mod/wallmessage.php:131
 msgid "To:"
 msgstr "An:"
 
-#: mod/message.php:191 mod/message.php:348 mod/wallmessage.php:131
+#: mod/message.php:191 mod/message.php:348 mod/wallmessage.php:132
 msgid "Subject:"
 msgstr "Betreff:"
 
-#: mod/message.php:195 mod/message.php:351 mod/wallmessage.php:137
+#: mod/message.php:195 mod/message.php:351 mod/wallmessage.php:138
 #: src/Module/Invite.php:170
 msgid "Your message:"
 msgstr "Deine Nachricht:"
@@ -927,7 +906,7 @@ msgstr "Neueste Fotos"
 msgid "Upload New Photos"
 msgstr "Neue Fotos hochladen"
 
-#: mod/photos.php:129 src/Module/BaseSettings.php:37
+#: mod/photos.php:129 src/Module/BaseSettings.php:35
 msgid "everybody"
 msgstr "jeder"
 
@@ -1125,12 +1104,12 @@ msgstr "Drehen EUS (links)"
 
 #: mod/photos.php:1339 mod/photos.php:1395 mod/photos.php:1469
 #: src/Module/Contact.php:544 src/Module/Item/Compose.php:148
-#: src/Object/Post.php:960
+#: src/Object/Post.php:962
 msgid "This is you"
 msgstr "Das bist du"
 
 #: mod/photos.php:1341 mod/photos.php:1397 mod/photos.php:1471
-#: src/Object/Post.php:496 src/Object/Post.php:962
+#: src/Object/Post.php:498 src/Object/Post.php:964
 msgid "Comment"
 msgstr "Kommentar"
 
@@ -1139,7 +1118,7 @@ msgstr "Kommentar"
 msgid "Select"
 msgstr "Auswählen"
 
-#: mod/photos.php:1431 mod/settings.php:564 src/Content/Conversation.php:616
+#: mod/photos.php:1431 mod/settings.php:596 src/Content/Conversation.php:616
 #: src/Module/Admin/Users/Active.php:139
 #: src/Module/Admin/Users/Blocked.php:140 src/Module/Admin/Users/Index.php:153
 msgid "Delete"
@@ -1187,19 +1166,19 @@ msgid "Bad Request."
 msgstr "Ungültige Anfrage."
 
 #: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:70
-#: src/Module/Contact/Advanced.php:119 src/Module/Contact/Contacts.php:36
-#: src/Module/Contact/Conversations.php:80
-#: src/Module/Contact/Conversations.php:85
-#: src/Module/Contact/Conversations.php:90 src/Module/Contact/Media.php:43
-#: src/Module/Contact/Posts.php:74 src/Module/Contact/Posts.php:79
-#: src/Module/Contact/Posts.php:84 src/Module/Contact/Profile.php:147
-#: src/Module/Contact/Profile.php:152 src/Module/Contact/Profile.php:157
-#: src/Module/FriendSuggest.php:71 src/Module/FriendSuggest.php:109
-#: src/Module/Group.php:104
+#: src/Module/Contact/Advanced.php:109 src/Module/Contact/Contacts.php:55
+#: src/Module/Contact/Conversations.php:78
+#: src/Module/Contact/Conversations.php:83
+#: src/Module/Contact/Conversations.php:88 src/Module/Contact/Media.php:43
+#: src/Module/Contact/Posts.php:72 src/Module/Contact/Posts.php:77
+#: src/Module/Contact/Posts.php:82 src/Module/Contact/Profile.php:141
+#: src/Module/Contact/Profile.php:146 src/Module/Contact/Profile.php:151
+#: src/Module/FriendSuggest.php:70 src/Module/FriendSuggest.php:108
+#: src/Module/Group.php:99 src/Module/Group.php:108
 msgid "Contact not found."
 msgstr "Kontakt nicht gefunden."
 
-#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:454
+#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:473
 msgid "[Friendica System Notify]"
 msgstr "[Friendica-Systembenachrichtigung]"
 
@@ -1243,157 +1222,158 @@ msgid_plural "Errors"
 msgstr[0] "Fehler"
 msgstr[1] "Fehler"
 
-#: mod/settings.php:127
+#: mod/settings.php:128
 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/settings.php:156
+#: mod/settings.php:158
 msgid "Contact CSV file upload error"
 msgstr "Fehler beim Hochladen der Kontakt CSV Datei"
 
-#: mod/settings.php:175
+#: mod/settings.php:177
 msgid "Importing Contacts done"
 msgstr "Kontakte wurden importiert."
 
-#: mod/settings.php:188
+#: mod/settings.php:190
 msgid "Relocate message has been send to your contacts"
 msgstr "Die Umzugsbenachrichtigung wurde an Deine Kontakte versendet."
 
-#: mod/settings.php:200
+#: mod/settings.php:202
 msgid "Passwords do not match."
 msgstr "Die Passwörter stimmen nicht überein."
 
-#: mod/settings.php:208 src/Console/User.php:210
+#: mod/settings.php:210 src/Console/User.php:210
 msgid "Password update failed. Please try again."
 msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal."
 
-#: mod/settings.php:211 src/Console/User.php:213
+#: mod/settings.php:213 src/Console/User.php:213
 msgid "Password changed."
 msgstr "Passwort geändert."
 
-#: mod/settings.php:214
+#: mod/settings.php:216
 msgid "Password unchanged."
 msgstr "Passwort unverändert."
 
-#: mod/settings.php:302
+#: mod/settings.php:304
 msgid "Please use a shorter name."
 msgstr "Bitte verwende einen kürzeren Namen."
 
-#: mod/settings.php:305
+#: mod/settings.php:307
 msgid "Name too short."
 msgstr "Der Name ist zu kurz."
 
-#: mod/settings.php:314
+#: mod/settings.php:316
 msgid "Wrong Password."
 msgstr "Falsches Passwort"
 
-#: mod/settings.php:319
+#: mod/settings.php:321
 msgid "Invalid email."
 msgstr "Ungültige E-Mail-Adresse."
 
-#: mod/settings.php:325
+#: mod/settings.php:327
 msgid "Cannot change to that email."
 msgstr "Ändern der E-Mail nicht möglich. "
 
-#: mod/settings.php:366
+#: mod/settings.php:368
 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/settings.php:369
+#: mod/settings.php:371
 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/settings.php:388
+#: mod/settings.php:390
 msgid "Settings were not updated."
 msgstr "Einstellungen nicht aktualisiert"
 
-#: mod/settings.php:429
+#: mod/settings.php:431
 msgid "Connected Apps"
 msgstr "Verbundene Programme"
 
-#: mod/settings.php:430 src/Module/Admin/Blocklist/Contact.php:106
+#: mod/settings.php:432 src/Module/Admin/Blocklist/Contact.php:106
 #: src/Module/Admin/Users/Active.php:129
 #: src/Module/Admin/Users/Blocked.php:130 src/Module/Admin/Users/Create.php:71
 #: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
 #: src/Module/Admin/Users/Index.php:162 src/Module/Admin/Users/Pending.php:104
-#: src/Module/Contact/Advanced.php:149
+#: src/Module/Contact/Advanced.php:134
 msgid "Name"
 msgstr "Name"
 
-#: mod/settings.php:431 src/Content/Nav.php:212
+#: mod/settings.php:433 src/Content/Nav.php:212
 msgid "Home Page"
 msgstr "Homepage"
 
-#: mod/settings.php:432 src/Module/Admin/Queue.php:78
+#: mod/settings.php:434 src/Module/Admin/Queue.php:78
 msgid "Created"
 msgstr "Erstellt"
 
-#: mod/settings.php:433
+#: mod/settings.php:435
 msgid "Remove authorization"
 msgstr "Autorisierung entziehen"
 
-#: mod/settings.php:451
+#: mod/settings.php:461 mod/settings.php:493 mod/settings.php:524
+#: mod/settings.php:598 mod/settings.php:735
+#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
+#: src/Module/Admin/Logs/Settings.php:81 src/Module/Admin/Site.php:501
+#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:83
+#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:193
+msgid "Save Settings"
+msgstr "Einstellungen speichern"
+
+#: mod/settings.php:469
 msgid "Addon Settings"
 msgstr "Addon Einstellungen"
 
-#: mod/settings.php:452
+#: mod/settings.php:470
 msgid "No Addon settings configured"
 msgstr "Keine Addon-Einstellungen konfiguriert"
 
-#: mod/settings.php:473
+#: mod/settings.php:491
 msgid "Additional Features"
 msgstr "Zusätzliche Features"
 
-#: mod/settings.php:475 mod/settings.php:566 mod/settings.php:703
-#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
-#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:501
-#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:83
-#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:193
-msgid "Save Settings"
-msgstr "Einstellungen speichern"
-
-#: mod/settings.php:497
+#: mod/settings.php:529
 msgid "Diaspora (Socialhome, Hubzilla)"
 msgstr "Diaspora (Socialhome, Hubzilla)"
 
-#: mod/settings.php:497 mod/settings.php:498
+#: mod/settings.php:529 mod/settings.php:530
 msgid "enabled"
 msgstr "eingeschaltet"
 
-#: mod/settings.php:497 mod/settings.php:498
+#: mod/settings.php:529 mod/settings.php:530
 msgid "disabled"
 msgstr "ausgeschaltet"
 
-#: mod/settings.php:497 mod/settings.php:498
+#: mod/settings.php:529 mod/settings.php:530
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s"
 
-#: mod/settings.php:498
+#: mod/settings.php:530
 msgid "OStatus (GNU Social)"
 msgstr "OStatus (GNU Social)"
 
-#: mod/settings.php:524
+#: mod/settings.php:556
 msgid "Email access is disabled on this site."
 msgstr "Zugriff auf E-Mails für diese Seite deaktiviert."
 
-#: mod/settings.php:529 mod/settings.php:564
+#: mod/settings.php:561 mod/settings.php:596
 msgid "None"
 msgstr "Keine"
 
-#: mod/settings.php:535 src/Module/BaseSettings.php:80
+#: mod/settings.php:567 src/Module/BaseSettings.php:78
 msgid "Social Networks"
 msgstr "Soziale Netzwerke"
 
-#: mod/settings.php:540
+#: mod/settings.php:572
 msgid "General Social Media Settings"
 msgstr "Allgemeine Einstellungen zu Sozialen Medien"
 
-#: mod/settings.php:541
+#: mod/settings.php:573
 msgid "Accept only top level posts by contacts you follow"
 msgstr "Ausschließlich Unterhaltungen von meinen Kontakten anzeigen"
 
-#: mod/settings.php:541
+#: mod/settings.php:573
 msgid ""
 "The system does an auto completion of threads when a comment arrives. This "
 "has got the side effect that you can receive posts that had been started by "
@@ -1402,11 +1382,11 @@ msgid ""
 "posts from people you really do follow."
 msgstr "Wenn neue Kommentare empfangen werden führt das System eine Vervollständigung der Unterhaltung durch. Die hat den Nebeneffekt, dass Unterhaltungen in denen einer deiner Kontakte kommentiert haben, die aber nicht von einem deiner Kontakte begonnen wurden in deinem Netzwerk-Stream angezeigt werden können. Diese Option unterbindet dieses Verhalten. Ist sie aktiviert, wirst du ausschließlich die Unterhaltungen angezeigt bekommen, die von deinen Kontakten begonnen wurden."
 
-#: mod/settings.php:542
+#: mod/settings.php:574
 msgid "Enable Content Warning"
 msgstr "Inhaltswarnungen einschalten"
 
-#: mod/settings.php:542
+#: mod/settings.php:574
 msgid ""
 "Users on networks like Mastodon or Pleroma are able to set a content warning"
 " field which collapse their post by default. This enables the automatic "
@@ -1414,223 +1394,223 @@ msgid ""
 " affect any other content filtering you eventually set up."
 msgstr "Benutzer in Netzwerken wie Mastodon oder Pleroma können eine Warnung für sensitive Inhalte ihrer Beiträge erstellen. Mit dieser Option werden derart markierte Beiträge automatisch zusammengeklappt und die Inhaltswarnung wird als Titel des Beitrags angezeigt. Diese Option hat keinen Einfluss auf andere Inhaltsfilterungen, die du eventuell eingerichtet hast."
 
-#: mod/settings.php:543
+#: mod/settings.php:575
 msgid "Enable intelligent shortening"
 msgstr "Intelligentes kürzen einschalten"
 
-#: mod/settings.php:543
+#: mod/settings.php:575
 msgid ""
 "Normally the system tries to find the best link to add to shortened posts. "
 "If disabled, every shortened post will always point to the original "
 "friendica post."
 msgstr "Normalerweise versucht das System, den besten Link zu finden, um ihn zum gekürzten Postings hinzuzufügen. Wird diese Option ausgewählt, wird stets ein Link auf die originale Friendica-Nachricht beigefügt."
 
-#: mod/settings.php:544
+#: mod/settings.php:576
 msgid "Enable simple text shortening"
 msgstr "Einfache Textkürzung aktivieren"
 
-#: mod/settings.php:544
+#: mod/settings.php:576
 msgid ""
 "Normally the system shortens posts at the next line feed. If this option is "
 "enabled then the system will shorten the text at the maximum character "
 "limit."
 msgstr "Normalerweise kürzt das System Beiträge bei Zeilenumbrüchen. Ist diese Option aktiv, wird das System die Kürzung beim Erreichen der maximalen Zeichenzahl vornehmen."
 
-#: mod/settings.php:545
+#: mod/settings.php:577
 msgid "Attach the link title"
 msgstr "Link Titel hinzufügen"
 
-#: mod/settings.php:545
+#: mod/settings.php:577
 msgid ""
 "When activated, the title of the attached link will be added as a title on "
 "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that"
 " share feed content."
 msgstr "Ist dies aktiviert, wird der Titel von angehangenen Links bei Beiträgen nach Diaspora* angefügt. Dies ist vorallem bei Entfernten Konten nützlich die Beiträge von Feeds weiterleiten."
 
-#: mod/settings.php:546
+#: mod/settings.php:578
 msgid "Your legacy ActivityPub/GNU Social account"
 msgstr "Dein alter ActivityPub/GNU Social-Account"
 
-#: mod/settings.php:546
+#: mod/settings.php:578
 msgid ""
 "If you enter your old account name from an ActivityPub based system or your "
 "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 ActivityPub oder GNU Social/Statusnet-Account-Namen hier angibst (Format name@domain.tld), werden deine Kontakte automatisch hinzugefügt. Dieses Feld wird geleert, wenn die Kontakte hinzugefügt wurden."
 
-#: mod/settings.php:549
+#: mod/settings.php:581
 msgid "Repair OStatus subscriptions"
 msgstr "OStatus-Abonnements reparieren"
 
-#: mod/settings.php:553
+#: mod/settings.php:585
 msgid "Email/Mailbox Setup"
 msgstr "E-Mail/Postfach-Einstellungen"
 
-#: mod/settings.php:554
+#: mod/settings.php:586
 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/settings.php:555
+#: mod/settings.php:587
 msgid "Last successful email check:"
 msgstr "Letzter erfolgreicher E-Mail-Check"
 
-#: mod/settings.php:557
+#: mod/settings.php:589
 msgid "IMAP server name:"
 msgstr "IMAP-Server-Name:"
 
-#: mod/settings.php:558
+#: mod/settings.php:590
 msgid "IMAP port:"
 msgstr "IMAP-Port:"
 
-#: mod/settings.php:559
+#: mod/settings.php:591
 msgid "Security:"
 msgstr "Sicherheit:"
 
-#: mod/settings.php:560
+#: mod/settings.php:592
 msgid "Email login name:"
 msgstr "E-Mail-Login-Name:"
 
-#: mod/settings.php:561
+#: mod/settings.php:593
 msgid "Email password:"
 msgstr "E-Mail-Passwort:"
 
-#: mod/settings.php:562
+#: mod/settings.php:594
 msgid "Reply-to address:"
 msgstr "Reply-to Adresse:"
 
-#: mod/settings.php:563
+#: mod/settings.php:595
 msgid "Send public posts to all email contacts:"
 msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:"
 
-#: mod/settings.php:564
+#: mod/settings.php:596
 msgid "Action after import:"
 msgstr "Aktion nach Import:"
 
-#: mod/settings.php:564 src/Content/Nav.php:280
+#: mod/settings.php:596 src/Content/Nav.php:280
 msgid "Mark as seen"
 msgstr "Als gelesen markieren"
 
-#: mod/settings.php:564
+#: mod/settings.php:596
 msgid "Move to folder"
 msgstr "In einen Ordner verschieben"
 
-#: mod/settings.php:565
+#: mod/settings.php:597
 msgid "Move to folder:"
 msgstr "In diesen Ordner verschieben:"
 
-#: mod/settings.php:579
+#: mod/settings.php:611
 msgid "Unable to find your profile. Please contact your admin."
 msgstr "Konnte dein Profil nicht finden. Bitte kontaktiere den Admin."
 
-#: mod/settings.php:617 src/Content/Widget.php:526
+#: mod/settings.php:649 src/Content/Widget.php:526
 msgid "Account Types"
 msgstr "Kontenarten"
 
-#: mod/settings.php:618
+#: mod/settings.php:650
 msgid "Personal Page Subtypes"
 msgstr "Unterarten der persönlichen Seite"
 
-#: mod/settings.php:619
+#: mod/settings.php:651
 msgid "Community Forum Subtypes"
 msgstr "Unterarten des Gemeinschaftsforums"
 
-#: mod/settings.php:626 src/Module/Admin/BaseUsers.php:106
+#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:107
 msgid "Personal Page"
 msgstr "Persönliche Seite"
 
-#: mod/settings.php:627
+#: mod/settings.php:659
 msgid "Account for a personal profile."
 msgstr "Konto für ein persönliches Profil."
 
-#: mod/settings.php:630 src/Module/Admin/BaseUsers.php:107
+#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:108
 msgid "Organisation Page"
 msgstr "Organisationsseite"
 
-#: mod/settings.php:631
+#: mod/settings.php:663
 msgid ""
 "Account for an organisation that automatically approves contact requests as "
 "\"Followers\"."
 msgstr "Konto für eine Organisation, das Kontaktanfragen automatisch als \"Follower\" annimmt."
 
-#: mod/settings.php:634 src/Module/Admin/BaseUsers.php:108
+#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:109
 msgid "News Page"
 msgstr "Nachrichtenseite"
 
-#: mod/settings.php:635
+#: mod/settings.php:667
 msgid ""
 "Account for a news reflector that automatically approves contact requests as"
 " \"Followers\"."
 msgstr "Konto für einen Feedspiegel, das Kontaktanfragen automatisch als \"Follower\" annimmt."
 
-#: mod/settings.php:638 src/Module/Admin/BaseUsers.php:109
+#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:110
 msgid "Community Forum"
 msgstr "Gemeinschaftsforum"
 
-#: mod/settings.php:639
+#: mod/settings.php:671
 msgid "Account for community discussions."
 msgstr "Konto für Diskussionsforen. "
 
-#: mod/settings.php:642 src/Module/Admin/BaseUsers.php:99
+#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:100
 msgid "Normal Account Page"
 msgstr "Normales Konto"
 
-#: mod/settings.php:643
+#: mod/settings.php:675
 msgid ""
 "Account for a regular personal profile that requires manual approval of "
 "\"Friends\" and \"Followers\"."
 msgstr "Konto für ein normales, persönliches Profil. Kontaktanfragen müssen manuell als \"Friend\" oder \"Follower\" bestätigt werden."
 
-#: mod/settings.php:646 src/Module/Admin/BaseUsers.php:100
+#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:101
 msgid "Soapbox Page"
 msgstr "Marktschreier-Konto"
 
-#: mod/settings.php:647
+#: mod/settings.php:679
 msgid ""
 "Account for a public profile that automatically approves contact requests as"
 " \"Followers\"."
 msgstr "Konto für ein öffentliches Profil, das Kontaktanfragen automatisch als \"Follower\" annimmt."
 
-#: mod/settings.php:650 src/Module/Admin/BaseUsers.php:101
+#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:102
 msgid "Public Forum"
 msgstr "Öffentliches Forum"
 
-#: mod/settings.php:651
+#: mod/settings.php:683
 msgid "Automatically approves all contact requests."
 msgstr "Bestätigt alle Kontaktanfragen automatisch."
 
-#: mod/settings.php:654 src/Module/Admin/BaseUsers.php:102
+#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:103
 msgid "Automatic Friend Page"
 msgstr "Automatische Freunde-Seite"
 
-#: mod/settings.php:655
+#: mod/settings.php:687
 msgid ""
 "Account for a popular profile that automatically approves contact requests "
 "as \"Friends\"."
 msgstr "Konto für ein gefragtes Profil, das Kontaktanfragen automatisch als \"Friend\" annimmt."
 
-#: mod/settings.php:658
+#: mod/settings.php:690
 msgid "Private Forum [Experimental]"
 msgstr "Privates Forum [Versuchsstadium]"
 
-#: mod/settings.php:659
+#: mod/settings.php:691
 msgid "Requires manual approval of contact requests."
 msgstr "Kontaktanfragen müssen manuell bestätigt werden."
 
-#: mod/settings.php:670
+#: mod/settings.php:702
 msgid "OpenID:"
 msgstr "OpenID:"
 
-#: mod/settings.php:670
+#: mod/settings.php:702
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr "(Optional) Erlaube die Anmeldung für dieses Konto mit dieser OpenID."
 
-#: mod/settings.php:678
+#: mod/settings.php:710
 msgid "Publish your profile in your local site directory?"
 msgstr "Darf dein Profil im lokalen Verzeichnis dieses Servers veröffentlicht werden?"
 
-#: mod/settings.php:678
+#: mod/settings.php:710
 #, php-format
 msgid ""
 "Your profile will be published in this node's <a href=\"%s\">local "
@@ -1638,115 +1618,115 @@ msgid ""
 " system settings."
 msgstr "Dein Profil wird im <a href=\"%s\">lokalen Verzeichnis</a> dieses Knotens veröffentlicht. Je nach Systemeinstellungen kann es öffentlich auffindbar sein."
 
-#: mod/settings.php:684
+#: mod/settings.php:716
 #, php-format
 msgid ""
 "Your profile will also be published in the global friendica directories "
 "(e.g. <a href=\"%s\">%s</a>)."
 msgstr "Dein Profil wird auch in den globalen Friendica Verzeichnissen (z.B. <a href=\"%s\">%s</a>) veröffentlicht werden."
 
-#: mod/settings.php:690
+#: mod/settings.php:722
 #, php-format
 msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr "Die Adresse deines Profils lautet <strong>'%s'</strong> oder '%s'."
 
-#: mod/settings.php:701
+#: mod/settings.php:733
 msgid "Account Settings"
 msgstr "Kontoeinstellungen"
 
-#: mod/settings.php:709
+#: mod/settings.php:741
 msgid "Password Settings"
 msgstr "Passwort-Einstellungen"
 
-#: mod/settings.php:710 src/Module/Register.php:158
+#: mod/settings.php:742 src/Module/Register.php:162
 msgid "New Password:"
 msgstr "Neues Passwort:"
 
-#: mod/settings.php:710
+#: mod/settings.php:742
 msgid ""
 "Allowed characters are a-z, A-Z, 0-9 and special characters except white "
 "spaces, accentuated letters and colon (:)."
 msgstr "Erlaubte Zeichen sind a-z, A-Z, 0-9 und Sonderzeichen, abgesehen von Leerzeichen, Doppelpunkten (:) und akzentuierten Buchstaben."
 
-#: mod/settings.php:711 src/Module/Register.php:159
+#: mod/settings.php:743 src/Module/Register.php:163
 msgid "Confirm:"
 msgstr "Bestätigen:"
 
-#: mod/settings.php:711
+#: mod/settings.php:743
 msgid "Leave password fields blank unless changing"
 msgstr "Lass die Passwort-Felder leer, außer du willst das Passwort ändern"
 
-#: mod/settings.php:712
+#: mod/settings.php:744
 msgid "Current Password:"
 msgstr "Aktuelles Passwort:"
 
-#: mod/settings.php:712
+#: mod/settings.php:744
 msgid "Your current password to confirm the changes"
 msgstr "Dein aktuelles Passwort um die Änderungen zu bestätigen"
 
-#: mod/settings.php:713
+#: mod/settings.php:745
 msgid "Password:"
 msgstr "Passwort:"
 
-#: mod/settings.php:713
+#: mod/settings.php:745
 msgid "Your current password to confirm the changes of the email address"
 msgstr "Dein aktuelles Passwort um die Änderungen deiner E-Mail Adresse zu bestätigen"
 
-#: mod/settings.php:716
+#: mod/settings.php:748
 msgid "Delete OpenID URL"
 msgstr "OpenID URL löschen"
 
-#: mod/settings.php:718
+#: mod/settings.php:750
 msgid "Basic Settings"
 msgstr "Grundeinstellungen"
 
-#: mod/settings.php:719 src/Module/Profile/Profile.php:144
+#: mod/settings.php:751 src/Module/Profile/Profile.php:144
 msgid "Full Name:"
 msgstr "Kompletter Name:"
 
-#: mod/settings.php:720
+#: mod/settings.php:752
 msgid "Email Address:"
 msgstr "E-Mail-Adresse:"
 
-#: mod/settings.php:721
+#: mod/settings.php:753
 msgid "Your Timezone:"
 msgstr "Deine Zeitzone:"
 
-#: mod/settings.php:722
+#: mod/settings.php:754
 msgid "Your Language:"
 msgstr "Deine Sprache:"
 
-#: mod/settings.php:722
+#: mod/settings.php:754
 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/settings.php:723
+#: mod/settings.php:755
 msgid "Default Post Location:"
 msgstr "Standardstandort:"
 
-#: mod/settings.php:724
+#: mod/settings.php:756
 msgid "Use Browser Location:"
 msgstr "Standort des Browsers verwenden:"
 
-#: mod/settings.php:726
+#: mod/settings.php:758
 msgid "Security and Privacy Settings"
 msgstr "Sicherheits- und Privatsphäre-Einstellungen"
 
-#: mod/settings.php:728
+#: mod/settings.php:760
 msgid "Maximum Friend Requests/Day:"
 msgstr "Maximale Anzahl von Kontaktanfragen/Tag:"
 
-#: mod/settings.php:728 mod/settings.php:738
+#: mod/settings.php:760 mod/settings.php:770
 msgid "(to prevent spam abuse)"
 msgstr "(um SPAM zu vermeiden)"
 
-#: mod/settings.php:730
+#: mod/settings.php:762
 msgid "Allow your profile to be searchable globally?"
 msgstr "Darf dein Profil bei Suchanfragen gefunden werden?"
 
-#: mod/settings.php:730
+#: mod/settings.php:762
 msgid ""
 "Activate this setting if you want others to easily find and follow you. Your"
 " profile will be searchable on remote systems. This setting also determines "
@@ -1754,43 +1734,43 @@ msgid ""
 "indexed or not."
 msgstr "Aktiviere diese Einstellung, wenn du von anderen einfach gefunden und gefolgt werden möchtest. Dei Profil wird dann auf anderen Systemen leicht durchsuchbar. Außerdem regelt diese Einstellung ob Friendica Suchmaschinen mitteilen soll, ob dein Profil indiziert werden soll oder nicht."
 
-#: mod/settings.php:731
+#: mod/settings.php:763
 msgid "Hide your contact/friend list from viewers of your profile?"
 msgstr "Liste der Kontakte vor Betrachtern des Profil verbergen?"
 
-#: mod/settings.php:731
+#: mod/settings.php:763
 msgid ""
 "A list of your contacts is displayed on your profile page. Activate this "
 "option to disable the display of your contact list."
 msgstr "Auf deiner Profilseite wird eine Liste deiner Kontakte angezeigt. Aktiviere diese Option wenn du das nicht möchtest."
 
-#: mod/settings.php:732
+#: mod/settings.php:764
 msgid "Hide your profile details from anonymous viewers?"
 msgstr "Profil-Details vor unbekannten Betrachtern verbergen?"
 
-#: mod/settings.php:732
+#: mod/settings.php:764
 msgid ""
 "Anonymous visitors will only see your profile picture, your display name and"
 " the nickname you are using on your profile page. Your public posts and "
 "replies will still be accessible by other means."
 msgstr "Anonyme Besucher deines Profils werden ausschließlich dein Profilbild, deinen Namen sowie deinen Spitznamen sehen. Deine öffentlichen Beiträge und Kommentare werden weiterhin sichtbar sein."
 
-#: mod/settings.php:733
+#: mod/settings.php:765
 msgid "Make public posts unlisted"
 msgstr "Öffentliche Beiträge nicht listen"
 
-#: mod/settings.php:733
+#: mod/settings.php:765
 msgid ""
 "Your public posts will not appear on the community pages or in search "
 "results, nor be sent to relay servers. However they can still appear on "
 "public feeds on remote servers."
 msgstr "Deine öffentlichen Beiträge werden nicht auf der Gemeinschaftsseite oder in den Suchergebnissen erscheinen, außerdem werden sie nicht an Relay-Server geschickt. Sie werden aber weiterhin in allen öffentlichen Feeds, auch auf entfernten Servern, erscheinen."
 
-#: mod/settings.php:734
+#: mod/settings.php:766
 msgid "Make all posted pictures accessible"
 msgstr "Alle geposteten Bilder zugreifbar machen"
 
-#: mod/settings.php:734
+#: mod/settings.php:766
 msgid ""
 "This option makes every posted picture accessible via the direct link. This "
 "is a workaround for the problem that most other networks can't handle "
@@ -1798,221 +1778,221 @@ msgid ""
 "public on your photo albums though."
 msgstr "Diese Option macht jedes veröffentlichte Bild über den direkten Link zugänglich. Dies ist eine Problemumgehung für das Problem, dass die meisten anderen Netzwerke keine Berechtigungen für Bilder verarbeiten können. Nicht öffentliche Bilder sind in Ihren Fotoalben jedoch immer noch nicht für die Öffentlichkeit sichtbar."
 
-#: mod/settings.php:735
+#: mod/settings.php:767
 msgid "Allow friends to post to your profile page?"
 msgstr "Dürfen deine Kontakte auf deine Pinnwand schreiben?"
 
-#: mod/settings.php:735
+#: mod/settings.php:767
 msgid ""
 "Your contacts may write posts on your profile wall. These posts will be "
 "distributed to your contacts"
 msgstr "Deine Kontakte können Beiträge auf deiner Pinnwand hinterlassen. Diese werden an deine Kontakte verteilt."
 
-#: mod/settings.php:736
+#: mod/settings.php:768
 msgid "Allow friends to tag your posts?"
 msgstr "Dürfen deine Kontakte deine Beiträge mit Schlagwörtern versehen?"
 
-#: mod/settings.php:736
+#: mod/settings.php:768
 msgid "Your contacts can add additional tags to your posts."
 msgstr "Deine Kontakte dürfen deine Beiträge mit zusätzlichen Schlagworten versehen."
 
-#: mod/settings.php:737
+#: mod/settings.php:769
 msgid "Permit unknown people to send you private mail?"
 msgstr "Dürfen dir Unbekannte private Nachrichten schicken?"
 
-#: mod/settings.php:737
+#: mod/settings.php:769
 msgid ""
 "Friendica network users may send you private messages even if they are not "
 "in your contact list."
 msgstr "Nutzer des Friendica Netzwerks können dir private Nachrichten senden, selbst wenn sie nicht in deine Kontaktliste sind."
 
-#: mod/settings.php:738
+#: mod/settings.php:770
 msgid "Maximum private messages per day from unknown people:"
 msgstr "Maximale Anzahl privater Nachrichten von Unbekannten pro Tag:"
 
-#: mod/settings.php:740
+#: mod/settings.php:772
 msgid "Default Post Permissions"
 msgstr "Standard-Zugriffsrechte für Beiträge"
 
-#: mod/settings.php:744
+#: mod/settings.php:776
 msgid "Expiration settings"
 msgstr "Verfalls-Einstellungen"
 
-#: mod/settings.php:745
+#: mod/settings.php:777
 msgid "Automatically expire posts after this many days:"
 msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen:"
 
-#: mod/settings.php:745
+#: mod/settings.php:777
 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/settings.php:746
+#: mod/settings.php:778
 msgid "Expire posts"
 msgstr "Beiträge verfallen lassen"
 
-#: mod/settings.php:746
+#: mod/settings.php:778
 msgid "When activated, posts and comments will be expired."
 msgstr "Ist dies aktiviert, werden Beiträge und Kommentare verfallen."
 
-#: mod/settings.php:747
+#: mod/settings.php:779
 msgid "Expire personal notes"
 msgstr "Persönliche Notizen verfallen lassen"
 
-#: mod/settings.php:747
+#: mod/settings.php:779
 msgid ""
 "When activated, the personal notes on your profile page will be expired."
 msgstr "Ist dies aktiviert, werden persönliche Notizen auf deiner Pinnwand verfallen."
 
-#: mod/settings.php:748
+#: mod/settings.php:780
 msgid "Expire starred posts"
 msgstr "Markierte Beiträge verfallen lassen"
 
-#: mod/settings.php:748
+#: mod/settings.php:780
 msgid ""
 "Starring posts keeps them from being expired. That behaviour is overwritten "
 "by this setting."
 msgstr "Markierte Beiträge verfallen eigentlich nicht. Mit dieser Option kannst du sie verfallen lassen."
 
-#: mod/settings.php:749
+#: mod/settings.php:781
 msgid "Expire photos"
 msgstr "Fotos verfallen lassen"
 
-#: mod/settings.php:749
+#: mod/settings.php:781
 msgid "When activated, photos will be expired."
 msgstr "Wenn aktiviert, verfallen Fotos."
 
-#: mod/settings.php:750
+#: mod/settings.php:782
 msgid "Only expire posts by others"
 msgstr "Nur Beiträge anderer verfallen lassen."
 
-#: mod/settings.php:750
+#: mod/settings.php:782
 msgid ""
 "When activated, your own posts never expire. Then the settings above are "
 "only valid for posts you received."
 msgstr "Wenn aktiviert werden deine eigenen Beiträge niemals verfallen. Die obigen Einstellungen betreffen dann ausschließlich die Beiträge von anderen Accounts."
 
-#: mod/settings.php:753
+#: mod/settings.php:785
 msgid "Notification Settings"
 msgstr "Benachrichtigungseinstellungen"
 
-#: mod/settings.php:754
+#: mod/settings.php:786
 msgid "Send a notification email when:"
 msgstr "Benachrichtigungs-E-Mail senden, wenn:"
 
-#: mod/settings.php:755
+#: mod/settings.php:787
 msgid "You receive an introduction"
 msgstr "– du eine Kontaktanfrage erhältst"
 
-#: mod/settings.php:756
+#: mod/settings.php:788
 msgid "Your introductions are confirmed"
 msgstr "– eine Deiner Kontaktanfragen akzeptiert wurde"
 
-#: mod/settings.php:757
+#: mod/settings.php:789
 msgid "Someone writes on your profile wall"
 msgstr "– jemand etwas auf Deine Pinnwand schreibt"
 
-#: mod/settings.php:758
+#: mod/settings.php:790
 msgid "Someone writes a followup comment"
 msgstr "– jemand auch einen Kommentar verfasst"
 
-#: mod/settings.php:759
+#: mod/settings.php:791
 msgid "You receive a private message"
 msgstr "– du eine private Nachricht erhältst"
 
-#: mod/settings.php:760
+#: mod/settings.php:792
 msgid "You receive a friend suggestion"
 msgstr "– du eine Empfehlung erhältst"
 
-#: mod/settings.php:761
+#: mod/settings.php:793
 msgid "You are tagged in a post"
 msgstr "– du in einem Beitrag erwähnt wirst"
 
-#: mod/settings.php:762
+#: mod/settings.php:794
 msgid "You are poked/prodded/etc. in a post"
 msgstr "– du von jemandem angestupst oder sonstwie behandelt wirst"
 
-#: mod/settings.php:764
+#: mod/settings.php:796
 msgid "Create a desktop notification when:"
 msgstr "Benachrichtigungen anzeigen wenn:"
 
-#: mod/settings.php:765
+#: mod/settings.php:797
 msgid "Someone liked your content"
 msgstr "Einer deiner Beiträge gemocht wurde"
 
-#: mod/settings.php:766
+#: mod/settings.php:798
 msgid "Someone shared your content"
 msgstr "Einer deiner Beiträge geteilt wurde"
 
-#: mod/settings.php:768
+#: mod/settings.php:800
 msgid "Activate desktop notifications"
 msgstr "Desktop-Benachrichtigungen einschalten"
 
-#: mod/settings.php:768
+#: mod/settings.php:800
 msgid "Show desktop popup on new notifications"
 msgstr "Desktop-Benachrichtigungen einschalten"
 
-#: mod/settings.php:770
+#: mod/settings.php:802
 msgid "Text-only notification emails"
 msgstr "Benachrichtigungs-E-Mail als Rein-Text."
 
-#: mod/settings.php:772
+#: mod/settings.php:804
 msgid "Send text only notification emails, without the html part"
 msgstr "Sende Benachrichtigungs-E-Mail als Rein-Text - ohne HTML-Teil"
 
-#: mod/settings.php:774
+#: mod/settings.php:806
 msgid "Show detailled notifications"
 msgstr "Detaillierte Benachrichtigungen anzeigen"
 
-#: mod/settings.php:776
+#: mod/settings.php:808
 msgid ""
 "Per default, notifications are condensed to a single notification per item. "
 "When enabled every notification is displayed."
 msgstr "Normalerweise werden alle Benachrichtigungen zu einem Thema in einer einzigen Benachrichtigung zusammengefasst. Wenn diese Option aktiviert ist, wird jede Benachrichtigung einzeln angezeigt."
 
-#: mod/settings.php:778
+#: mod/settings.php:810
 msgid "Show notifications of ignored contacts"
 msgstr "Zeige Benachrichtigungen von ignorierten Kontakten"
 
-#: mod/settings.php:780
+#: mod/settings.php:812
 msgid ""
 "You don't see posts from ignored contacts. But you still see their comments."
 " This setting controls if you want to still receive regular notifications "
 "that are caused by ignored contacts or not."
 msgstr "Beiträge von ignorierten Kontakten werden dir nicht angezeigt. Aber du siehst immer noch ihre Kommentare. Diese Einstellung legt fest, ob du dazu weiterhin Benachrichtigungen erhalten willst oder ob diese einfach verworfen werden sollen."
 
-#: mod/settings.php:782
+#: mod/settings.php:814
 msgid "Advanced Account/Page Type Settings"
 msgstr "Erweiterte Konto-/Seitentyp-Einstellungen"
 
-#: mod/settings.php:783
+#: mod/settings.php:815
 msgid "Change the behaviour of this account for special situations"
 msgstr "Verhalten dieses Kontos in bestimmten Situationen:"
 
-#: mod/settings.php:786
+#: mod/settings.php:818
 msgid "Import Contacts"
 msgstr "Kontakte Importieren"
 
-#: mod/settings.php:787
+#: mod/settings.php:819
 msgid ""
 "Upload a CSV file that contains the handle of your followed accounts in the "
 "first column you exported from the old account."
 msgstr "Lade eine CSV Datei hoch, die das Handle der Kontakte deines alten Nutzerkontos in der ersten Spalte enthält."
 
-#: mod/settings.php:788
+#: mod/settings.php:820
 msgid "Upload File"
 msgstr "Datei hochladen"
 
-#: mod/settings.php:790
+#: mod/settings.php:822
 msgid "Relocate"
 msgstr "Umziehen"
 
-#: mod/settings.php:791
+#: mod/settings.php:823
 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/settings.php:792
+#: mod/settings.php:824
 msgid "Resend relocate message to contacts"
 msgstr "Umzugsbenachrichtigung erneut an Kontakte senden"
 
@@ -2026,7 +2006,7 @@ msgstr "Keine Vorschläge verfügbar. Falls der Server frisch aufgesetzt wurde,
 msgid "Friend Suggestions"
 msgstr "Kontaktvorschläge"
 
-#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2626
+#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2628
 msgid "photo"
 msgstr "Foto"
 
@@ -2048,7 +2028,7 @@ msgid "Select a tag to remove: "
 msgstr "Wähle ein Tag zum Entfernen aus: "
 
 #: mod/tagrm.php:126 src/Module/Settings/Delegation.php:179
-#: src/Module/Settings/TwoFactor/Trusted.php:116
+#: src/Module/Settings/TwoFactor/Trusted.php:140
 msgid "Remove"
 msgstr "Entfernen"
 
@@ -2056,13 +2036,13 @@ msgstr "Entfernen"
 msgid "User imports on closed servers can only be done by an administrator."
 msgstr "Auf geschlossenen Servern können ausschließlich die Administratoren Benutzerkonten importieren."
 
-#: mod/uimport.php:55 src/Module/Register.php:95
+#: mod/uimport.php:55 src/Module/Register.php:99
 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/uimport.php:62 src/Module/Register.php:169
+#: mod/uimport.php:62 src/Module/Register.php:173
 msgid "Import"
 msgstr "Import"
 
@@ -2146,37 +2126,37 @@ msgstr "Die Datei ist größer als das erlaubte Limit von %s"
 msgid "File upload failed."
 msgstr "Hochladen der Datei fehlgeschlagen."
 
-#: mod/wall_upload.php:221 src/Model/Photo.php:984
+#: mod/wall_upload.php:221 src/Model/Photo.php:1008
 msgid "Wall Photos"
 msgstr "Pinnwand-Bilder"
 
-#: mod/wallmessage.php:61 mod/wallmessage.php:115
+#: mod/wallmessage.php:62 mod/wallmessage.php:116
 #, 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/wallmessage.php:72
+#: mod/wallmessage.php:73
 msgid "Unable to check your home location."
 msgstr "Konnte Deinen Heimatort nicht bestimmen."
 
-#: mod/wallmessage.php:96 mod/wallmessage.php:103
+#: mod/wallmessage.php:97 mod/wallmessage.php:104
 msgid "No recipient."
 msgstr "Kein Empfänger."
 
-#: mod/wallmessage.php:129
+#: mod/wallmessage.php:130
 #, 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."
 
-#: src/App.php:470
+#: src/App.php:463
 msgid "No system theme config value set."
 msgstr "Es wurde kein Konfigurationswert für das systemweite Theme gesetzt."
 
-#: src/App/ModuleController.php:233
-msgid "You must be logged in to use addons. "
-msgstr "Du musst angemeldet sein, um Addons benutzen zu können."
+#: src/App.php:583
+msgid "Apologies but the website is unavailable at the moment."
+msgstr "Entschuldigung, aber die Webseite ist derzeit nicht erreichbar."
 
 #: src/App/Page.php:250
 msgid "Delete this item?"
@@ -2192,42 +2172,46 @@ msgstr "Soll dieser Autor geblockt werden? Sie werden nicht in der Lage sein, di
 msgid "toggle mobile"
 msgstr "mobile Ansicht umschalten"
 
-#: src/App/Router.php:241
+#: src/App/Router.php:275
 #, php-format
 msgid "Method not allowed for this module. Allowed method(s): %s"
 msgstr "Diese Methode ist in diesem Modul nicht erlaubt. Erlaubte Methoden sind: %s"
 
-#: src/App/Router.php:243 src/Module/HTTPException/PageNotFound.php:32
+#: src/App/Router.php:277 src/Module/HTTPException/PageNotFound.php:33
 msgid "Page not found."
 msgstr "Seite nicht gefunden."
 
-#: src/BaseModule.php:178
+#: src/App/Router.php:305
+msgid "You must be logged in to use addons. "
+msgstr "Du musst angemeldet sein, um Addons benutzen zu können."
+
+#: src/BaseModule.php:377
 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)."
 
-#: src/BaseModule.php:205
+#: src/BaseModule.php:404
 msgid "All contacts"
 msgstr "Alle Kontakte"
 
-#: src/BaseModule.php:210 src/Content/Widget.php:231 src/Core/ACL.php:193
-#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:79
-#: src/Module/PermissionTooltip.php:101
+#: src/BaseModule.php:409 src/Content/Widget.php:231 src/Core/ACL.php:193
+#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:98
+#: src/Module/PermissionTooltip.php:120
 msgid "Followers"
 msgstr "Folgende"
 
-#: src/BaseModule.php:215 src/Content/Widget.php:232
+#: src/BaseModule.php:414 src/Content/Widget.php:232
 #: src/Module/Contact.php:368
 msgid "Following"
 msgstr "Gefolgte"
 
-#: src/BaseModule.php:220 src/Content/Widget.php:233
+#: src/BaseModule.php:419 src/Content/Widget.php:233
 #: src/Module/Contact.php:369
 msgid "Mutual friends"
 msgstr "Beidseitige Freundschaft"
 
-#: src/BaseModule.php:228
+#: src/BaseModule.php:427
 msgid "Common"
 msgstr "Gemeinsam"
 
@@ -2467,7 +2451,7 @@ msgid "%s attends maybe."
 msgstr "%s nimmt eventuell teil."
 
 #: src/Content/Conversation.php:222 src/Content/Conversation.php:260
-#: src/Content/Conversation.php:848
+#: src/Content/Conversation.php:849
 #, php-format
 msgid "%s reshared this."
 msgstr "%s hat dies geteilt"
@@ -2541,7 +2525,7 @@ msgid "Visible to <strong>everybody</strong>"
 msgstr "Für <strong>jedermann</strong> sichtbar"
 
 #: src/Content/Conversation.php:308 src/Module/Item/Compose.php:159
-#: src/Object/Post.php:973
+#: src/Object/Post.php:975
 msgid "Please enter a image/video/audio/webpage URL:"
 msgstr "Bitte gib eine Bild/Video/Audio/Webseiten-URL ein:"
 
@@ -2549,7 +2533,7 @@ msgstr "Bitte gib eine Bild/Video/Audio/Webseiten-URL ein:"
 msgid "Tag term:"
 msgstr "Tag:"
 
-#: src/Content/Conversation.php:310 src/Module/Filer/SaveTag.php:75
+#: src/Content/Conversation.php:310 src/Module/Filer/SaveTag.php:72
 msgid "Save to Folder:"
 msgstr "In diesem Ordner speichern:"
 
@@ -2565,12 +2549,12 @@ msgstr "Einträge löschen?"
 msgid "New Post"
 msgstr "Neuer Beitrag"
 
-#: src/Content/Conversation.php:325
+#: src/Content/Conversation.php:325 src/Object/Post.php:481
 msgid "Share"
 msgstr "Teilen"
 
 #: src/Content/Conversation.php:336 src/Module/Item/Compose.php:156
-#: src/Object/Post.php:970
+#: src/Object/Post.php:972
 msgid "Image"
 msgstr "Bild"
 
@@ -2596,74 +2580,74 @@ msgstr "Kategorien:"
 msgid "Filed under:"
 msgstr "Abgelegt unter:"
 
-#: src/Content/Conversation.php:672 src/Object/Post.php:468
+#: src/Content/Conversation.php:673 src/Object/Post.php:468
 #, php-format
 msgid "%s from %s"
 msgstr "%s von %s"
 
-#: src/Content/Conversation.php:687
+#: src/Content/Conversation.php:688
 msgid "View in context"
 msgstr "Im Zusammenhang betrachten"
 
-#: src/Content/Conversation.php:752
+#: src/Content/Conversation.php:753
 msgid "remove"
 msgstr "löschen"
 
-#: src/Content/Conversation.php:756
+#: src/Content/Conversation.php:757
 msgid "Delete Selected Items"
 msgstr "Lösche die markierten Beiträge"
 
-#: src/Content/Conversation.php:820 src/Content/Conversation.php:823
-#: src/Content/Conversation.php:826 src/Content/Conversation.php:829
+#: src/Content/Conversation.php:821 src/Content/Conversation.php:824
+#: src/Content/Conversation.php:827 src/Content/Conversation.php:830
 #, php-format
 msgid "You had been addressed (%s)."
 msgstr "Du wurdest angeschrieben (%s)."
 
-#: src/Content/Conversation.php:832
+#: src/Content/Conversation.php:833
 #, php-format
 msgid "You are following %s."
 msgstr "Du folgst %s."
 
-#: src/Content/Conversation.php:835
+#: src/Content/Conversation.php:836
 msgid "Tagged"
 msgstr "Verschlagwortet"
 
-#: src/Content/Conversation.php:850
+#: src/Content/Conversation.php:851
 msgid "Reshared"
 msgstr "Geteilt"
 
-#: src/Content/Conversation.php:850
+#: src/Content/Conversation.php:851
 #, php-format
 msgid "Reshared by %s <%s>"
 msgstr "Geteilt von %s <%s>"
 
-#: src/Content/Conversation.php:853
+#: src/Content/Conversation.php:854
 #, php-format
 msgid "%s is participating in this thread."
 msgstr "%s ist an der Unterhaltung beteiligt."
 
-#: src/Content/Conversation.php:856
+#: src/Content/Conversation.php:857
 msgid "Stored"
 msgstr "Gespeichert"
 
-#: src/Content/Conversation.php:859
+#: src/Content/Conversation.php:860
 msgid "Global"
 msgstr "Global"
 
-#: src/Content/Conversation.php:862
+#: src/Content/Conversation.php:863
 msgid "Relayed"
 msgstr "Übermittelt"
 
-#: src/Content/Conversation.php:862
+#: src/Content/Conversation.php:863
 #, php-format
 msgid "Relayed by %s <%s>"
 msgstr "Weitergeleitet von %s <%s>"
 
-#: src/Content/Conversation.php:865
+#: src/Content/Conversation.php:866
 msgid "Fetched"
 msgstr "Abgerufen"
 
-#: src/Content/Conversation.php:865
+#: src/Content/Conversation.php:866
 #, php-format
 msgid "Fetched because of %s <%s>"
 msgstr "Wegen %s <%s> abgerufen"
@@ -2778,7 +2762,7 @@ msgstr "mehr anzeigen"
 msgid "%1$s poked %2$s"
 msgstr "%1$s stupste %2$s"
 
-#: src/Content/Item.php:338 src/Model/Item.php:2624
+#: src/Content/Item.php:338 src/Model/Item.php:2626
 msgid "event"
 msgstr "Veranstaltung"
 
@@ -2786,45 +2770,45 @@ msgstr "Veranstaltung"
 msgid "Follow Thread"
 msgstr "Folge der Unterhaltung"
 
-#: src/Content/Item.php:443 src/Model/Contact.php:1047
+#: src/Content/Item.php:443 src/Model/Contact.php:1060
 msgid "View Status"
 msgstr "Status anschauen"
 
-#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:981
-#: src/Model/Contact.php:1039 src/Model/Contact.php:1048
+#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:994
+#: src/Model/Contact.php:1052 src/Model/Contact.php:1061
 #: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:225
 msgid "View Profile"
 msgstr "Profil anschauen"
 
-#: src/Content/Item.php:445 src/Model/Contact.php:1049
+#: src/Content/Item.php:445 src/Model/Contact.php:1062
 msgid "View Photos"
 msgstr "Bilder anschauen"
 
-#: src/Content/Item.php:446 src/Model/Contact.php:1040
-#: src/Model/Contact.php:1050
+#: src/Content/Item.php:446 src/Model/Contact.php:1053
+#: src/Model/Contact.php:1063
 msgid "Network Posts"
 msgstr "Netzwerkbeiträge"
 
-#: src/Content/Item.php:447 src/Model/Contact.php:1041
-#: src/Model/Contact.php:1051
+#: src/Content/Item.php:447 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1064
 msgid "View Contact"
 msgstr "Kontakt anzeigen"
 
-#: src/Content/Item.php:448 src/Model/Contact.php:1052
+#: src/Content/Item.php:448 src/Model/Contact.php:1065
 msgid "Send PM"
 msgstr "Private Nachricht senden"
 
 #: src/Content/Item.php:449 src/Module/Admin/Blocklist/Contact.php:100
 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154
-#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:354
-#: src/Module/Contact/Profile.php:455
+#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:449
 msgid "Block"
 msgstr "Sperren"
 
 #: src/Content/Item.php:450 src/Module/Contact.php:399
-#: src/Module/Contact/Profile.php:355 src/Module/Contact/Profile.php:463
-#: src/Module/Notifications/Introductions.php:128
-#: src/Module/Notifications/Introductions.php:200
+#: src/Module/Contact/Profile.php:349 src/Module/Contact/Profile.php:457
+#: src/Module/Notifications/Introductions.php:132
+#: src/Module/Notifications/Introductions.php:204
 #: src/Module/Notifications/Notification.php:61
 msgid "Ignore"
 msgstr "Ignorieren"
@@ -2833,7 +2817,7 @@ msgstr "Ignorieren"
 msgid "Languages"
 msgstr "Sprachen"
 
-#: src/Content/Item.php:458 src/Model/Contact.php:1053
+#: src/Content/Item.php:458 src/Model/Contact.php:1066
 msgid "Poke"
 msgstr "Anstupsen"
 
@@ -2871,7 +2855,7 @@ msgid "Sign in"
 msgstr "Anmelden"
 
 #: src/Content/Nav.php:190 src/Module/BaseProfile.php:56
-#: src/Module/Contact.php:433 src/Module/Contact/Profile.php:386
+#: src/Module/Contact.php:433 src/Module/Contact/Profile.php:380
 #: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:225
 msgid "Status"
 msgstr "Status"
@@ -2882,8 +2866,8 @@ msgid "Your posts and conversations"
 msgstr "Deine Beiträge und Unterhaltungen"
 
 #: src/Content/Nav.php:191 src/Module/BaseProfile.php:48
-#: src/Module/BaseSettings.php:57 src/Module/Contact.php:457
-#: src/Module/Contact/Profile.php:388 src/Module/Profile/Profile.php:241
+#: src/Module/BaseSettings.php:55 src/Module/Contact.php:457
+#: src/Module/Contact/Profile.php:382 src/Module/Profile/Profile.php:241
 #: src/Module/Welcome.php:57 view/theme/frio/theme.php:226
 msgid "Profile"
 msgstr "Profil"
@@ -2922,7 +2906,7 @@ msgstr "Deine persönlichen Notizen"
 msgid "Home"
 msgstr "Pinnwand"
 
-#: src/Content/Nav.php:216 src/Module/Register.php:164
+#: src/Content/Nav.php:216 src/Module/Register.php:168
 #: src/Module/Security/Login.php:105
 msgid "Register"
 msgstr "Registrieren"
@@ -2935,7 +2919,7 @@ msgstr "Nutzerkonto erstellen"
 #: src/Module/Settings/TwoFactor/AppSpecific.php:127
 #: src/Module/Settings/TwoFactor/Index.php:111
 #: src/Module/Settings/TwoFactor/Recovery.php:105
-#: src/Module/Settings/TwoFactor/Verify.php:144 view/theme/vier/theme.php:217
+#: src/Module/Settings/TwoFactor/Verify.php:145 view/theme/vier/theme.php:217
 msgid "Help"
 msgstr "Hilfe"
 
@@ -3006,8 +2990,8 @@ msgid "Information about this friendica instance"
 msgstr "Informationen zu dieser Friendica-Instanz"
 
 #: src/Content/Nav.php:266 src/Module/Admin/Tos.php:76
-#: src/Module/BaseAdmin.php:96 src/Module/Register.php:172
-#: src/Module/Tos.php:88
+#: src/Module/BaseAdmin.php:96 src/Module/Register.php:176
+#: src/Module/Tos.php:87
 msgid "Terms of Service"
 msgstr "Nutzungsbedingungen"
 
@@ -3031,8 +3015,8 @@ msgstr "Kontaktanfragen"
 msgid "Friend Requests"
 msgstr "Kontaktanfragen"
 
-#: src/Content/Nav.php:278 src/Module/BaseNotifications.php:147
-#: src/Module/Notifications/Introductions.php:69
+#: src/Content/Nav.php:278 src/Module/BaseNotifications.php:148
+#: src/Module/Notifications/Introductions.php:73
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
@@ -3041,7 +3025,7 @@ msgid "See all notifications"
 msgstr "Alle Benachrichtigungen anzeigen"
 
 #: src/Content/Nav.php:280
-msgid "Mark all system notifications seen"
+msgid "Mark all system notifications as seen"
 msgstr "Markiere alle Systembenachrichtigungen als gelesen"
 
 #: src/Content/Nav.php:283 view/theme/frio/theme.php:234
@@ -3065,7 +3049,7 @@ msgid "Manage other pages"
 msgstr "Andere Seiten verwalten"
 
 #: src/Content/Nav.php:292 src/Module/Admin/Addons/Details.php:114
-#: src/Module/Admin/Themes/Details.php:93 src/Module/BaseSettings.php:124
+#: src/Module/Admin/Themes/Details.php:93 src/Module/BaseSettings.php:122
 #: src/Module/Welcome.php:52 view/theme/frio/theme.php:235
 msgid "Settings"
 msgstr "Einstellungen"
@@ -3128,8 +3112,8 @@ msgstr "Bild/Foto"
 msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 msgstr "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a>%3$s"
 
-#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3154
-#: src/Model/Item.php:3160 src/Model/Item.php:3161
+#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3157
+#: src/Model/Item.php:3163 src/Model/Item.php:3164
 msgid "Link to source"
 msgstr "Link zum Originalbeitrag"
 
@@ -3227,7 +3211,7 @@ msgstr "Weltweites Verzeichnis"
 msgid "Local Directory"
 msgstr "Lokales Verzeichnis"
 
-#: src/Content/Widget.php:207 src/Model/Group.php:493
+#: src/Content/Widget.php:207 src/Model/Group.php:507
 #: src/Module/Contact.php:354 src/Module/Welcome.php:76
 msgid "Groups"
 msgstr "Gruppen"
@@ -3241,7 +3225,7 @@ msgid "Relationships"
 msgstr "Beziehungen"
 
 #: src/Content/Widget.php:240 src/Module/Contact.php:306
-#: src/Module/Group.php:291
+#: src/Module/Group.php:293
 msgid "All Contacts"
 msgstr "Alle Kontakte"
 
@@ -3284,11 +3268,11 @@ msgstr "Personen"
 msgid "Organisations"
 msgstr "Organisationen"
 
-#: src/Content/Widget.php:522 src/Model/Contact.php:1476
+#: src/Content/Widget.php:522 src/Model/Contact.php:1493
 msgid "News"
 msgstr "Nachrichten"
 
-#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:50
+#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:51
 msgid "All"
 msgstr "Alle"
 
@@ -3339,17 +3323,17 @@ msgid "More Trending Tags"
 msgstr "mehr Trending Tags"
 
 #: src/Content/Widget/VCard.php:96 src/Model/Profile.php:373
-#: src/Module/Contact/Profile.php:377 src/Module/Profile/Profile.php:176
+#: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:176
 msgid "XMPP:"
 msgstr "XMPP:"
 
 #: src/Content/Widget/VCard.php:97 src/Model/Profile.php:374
-#: src/Module/Contact/Profile.php:379 src/Module/Profile/Profile.php:180
+#: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:180
 msgid "Matrix:"
 msgstr "Matrix:"
 
 #: src/Content/Widget/VCard.php:101 src/Model/Profile.php:466
-#: src/Module/Notifications/Introductions.php:195
+#: src/Module/Notifications/Introductions.php:199
 msgid "Network:"
 msgstr "Netzwerk:"
 
@@ -3361,8 +3345,8 @@ msgstr "Entfolgen"
 msgid "Yourself"
 msgstr "Du selbst"
 
-#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:85
-#: src/Module/PermissionTooltip.php:107
+#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:104
+#: src/Module/PermissionTooltip.php:126
 msgid "Mutuals"
 msgstr "Beidseitige Freundschaft"
 
@@ -3416,8 +3400,8 @@ msgid ""
 "or mysql."
 msgstr "Möglicherweise musst du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren."
 
-#: src/Core/Installer.php:203 src/Module/Install.php:214
-#: src/Module/Install.php:373
+#: src/Core/Installer.php:203 src/Module/Install.php:213
+#: src/Module/Install.php:372
 msgid "Please see the file \"doc/INSTALL.md\"."
 msgstr "Lies bitte die \"doc/INSTALL.md\"."
 
@@ -4102,86 +4086,86 @@ msgstr "Token ist nicht durch einen gültigen Benutzer autorisiert oder es fehlt
 msgid "Internal Server Error"
 msgstr "Interner Serverfehler"
 
-#: src/LegacyModule.php:60
+#: src/LegacyModule.php:63
 #, php-format
 msgid "Legacy module file not found: %s"
 msgstr "Legacy-Moduldatei nicht gefunden: %s"
 
-#: src/Model/Contact.php:1043 src/Model/Contact.php:1055
+#: src/Model/Contact.php:1056 src/Model/Contact.php:1068
 msgid "UnFollow"
 msgstr "Entfolgen"
 
-#: src/Model/Contact.php:1061 src/Module/Admin/Users/Pending.php:107
-#: src/Module/Notifications/Introductions.php:126
-#: src/Module/Notifications/Introductions.php:198
+#: src/Model/Contact.php:1074 src/Module/Admin/Users/Pending.php:107
+#: src/Module/Notifications/Introductions.php:130
+#: src/Module/Notifications/Introductions.php:202
 msgid "Approve"
 msgstr "Genehmigen"
 
-#: src/Model/Contact.php:1472
+#: src/Model/Contact.php:1489
 msgid "Organisation"
 msgstr "Organisation"
 
-#: src/Model/Contact.php:1480
+#: src/Model/Contact.php:1497
 msgid "Forum"
 msgstr "Forum"
 
-#: src/Model/Contact.php:2350
+#: src/Model/Contact.php:2372
 msgid "Disallowed profile URL."
 msgstr "Nicht erlaubte Profil-URL."
 
-#: src/Model/Contact.php:2355 src/Module/Friendica.php:81
+#: src/Model/Contact.php:2377 src/Module/Friendica.php:81
 msgid "Blocked domain"
 msgstr "Blockierte Domain"
 
-#: src/Model/Contact.php:2360
+#: src/Model/Contact.php:2382
 msgid "Connect URL missing."
 msgstr "Connect-URL fehlt"
 
-#: src/Model/Contact.php:2369
+#: src/Model/Contact.php:2391
 msgid ""
 "The contact could not be added. Please check the relevant network "
 "credentials in your Settings -> Social Networks page."
 msgstr "Der Kontakt konnte nicht hinzugefügt werden. Bitte überprüfe die Einstellungen unter Einstellungen -> Soziale Netzwerke"
 
-#: src/Model/Contact.php:2406
+#: src/Model/Contact.php:2428
 msgid "The profile address specified does not provide adequate information."
 msgstr "Die angegebene Profiladresse liefert unzureichende Informationen."
 
-#: src/Model/Contact.php:2408
+#: src/Model/Contact.php:2430
 msgid "No compatible communication protocols or feeds were discovered."
 msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden."
 
-#: src/Model/Contact.php:2411
+#: src/Model/Contact.php:2433
 msgid "An author or name was not found."
 msgstr "Es wurde kein Autor oder Name gefunden."
 
-#: src/Model/Contact.php:2414
+#: src/Model/Contact.php:2436
 msgid "No browser URL could be matched to this address."
 msgstr "Zu dieser Adresse konnte keine passende Browser-URL gefunden werden."
 
-#: src/Model/Contact.php:2417
+#: src/Model/Contact.php:2439
 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."
 
-#: src/Model/Contact.php:2418
+#: src/Model/Contact.php:2440
 msgid "Use mailto: in front of address to force email check."
 msgstr "Verwende mailto: vor der E-Mail-Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen."
 
-#: src/Model/Contact.php:2424
+#: src/Model/Contact.php:2446
 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."
 
-#: src/Model/Contact.php:2429
+#: src/Model/Contact.php:2451
 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."
 
-#: src/Model/Contact.php:2488
+#: src/Model/Contact.php:2510
 msgid "Unable to retrieve contact information."
 msgstr "Konnte die Kontaktinformationen nicht empfangen."
 
@@ -4257,77 +4241,77 @@ msgstr "%ss Geburtstag"
 msgid "Happy Birthday %s"
 msgstr "Herzlichen Glückwunsch, %s"
 
-#: src/Model/Group.php:92
+#: src/Model/Group.php:94
 msgid ""
 "A deleted group with this name was revived. Existing item permissions "
 "<strong>may</strong> apply to this group and any future members. If this is "
 "not what you intended, please create another group with a different name."
 msgstr "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen <strong>könnten</strong> auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen."
 
-#: src/Model/Group.php:409
+#: src/Model/Group.php:423
 msgid "Default privacy group for new contacts"
 msgstr "Voreingestellte Gruppe für neue Kontakte"
 
-#: src/Model/Group.php:441
+#: src/Model/Group.php:455
 msgid "Everybody"
 msgstr "Alle Kontakte"
 
-#: src/Model/Group.php:460
+#: src/Model/Group.php:474
 msgid "edit"
 msgstr "bearbeiten"
 
-#: src/Model/Group.php:492
+#: src/Model/Group.php:506
 msgid "add"
 msgstr "hinzufügen"
 
-#: src/Model/Group.php:497
+#: src/Model/Group.php:511
 msgid "Edit group"
 msgstr "Gruppe bearbeiten"
 
-#: src/Model/Group.php:498 src/Module/Group.php:192
+#: src/Model/Group.php:512 src/Module/Group.php:194
 msgid "Contacts not in any group"
 msgstr "Kontakte in keiner Gruppe"
 
-#: src/Model/Group.php:500
+#: src/Model/Group.php:514
 msgid "Create a new group"
 msgstr "Neue Gruppe erstellen"
 
-#: src/Model/Group.php:501 src/Module/Group.php:177 src/Module/Group.php:200
-#: src/Module/Group.php:275
+#: src/Model/Group.php:515 src/Module/Group.php:179 src/Module/Group.php:202
+#: src/Module/Group.php:277
 msgid "Group Name: "
 msgstr "Gruppenname:"
 
-#: src/Model/Group.php:502
+#: src/Model/Group.php:516
 msgid "Edit groups"
 msgstr "Gruppen bearbeiten"
 
-#: src/Model/Item.php:1677
+#: src/Model/Item.php:1679
 #, php-format
 msgid "Detected languages in this post:\\n%s"
 msgstr "Erkannte Sprachen in diesem Beitrag:\\n%s"
 
-#: src/Model/Item.php:2628
+#: src/Model/Item.php:2630
 msgid "activity"
 msgstr "Aktivität"
 
-#: src/Model/Item.php:2630
+#: src/Model/Item.php:2632
 msgid "comment"
 msgstr "Kommentar"
 
-#: src/Model/Item.php:2633
+#: src/Model/Item.php:2635
 msgid "post"
 msgstr "Beitrag"
 
-#: src/Model/Item.php:2770
+#: src/Model/Item.php:2772
 #, php-format
 msgid "Content warning: %s"
 msgstr "Inhaltswarnung: %s"
 
-#: src/Model/Item.php:3119
+#: src/Model/Item.php:3122
 msgid "bytes"
 msgstr "Byte"
 
-#: src/Model/Item.php:3148 src/Model/Item.php:3149
+#: src/Model/Item.php:3151 src/Model/Item.php:3152
 msgid "View on separate page"
 msgstr "Auf separater Seite ansehen"
 
@@ -4349,8 +4333,8 @@ msgstr "Profilbild ändern"
 msgid "Homepage:"
 msgstr "Homepage:"
 
-#: src/Model/Profile.php:372 src/Module/Contact/Profile.php:381
-#: src/Module/Notifications/Introductions.php:183
+#: src/Model/Profile.php:372 src/Module/Contact/Profile.php:375
+#: src/Module/Notifications/Introductions.php:187
 msgid "About:"
 msgstr "Über:"
 
@@ -4358,120 +4342,120 @@ msgstr "Über:"
 msgid "Atom feed"
 msgstr "Atom-Feed"
 
-#: src/Model/Profile.php:496 src/Model/Profile.php:593
-msgid "g A l F d"
-msgstr "l, d. F G \\U\\h\\r"
-
-#: src/Model/Profile.php:497
+#: src/Model/Profile.php:502
 msgid "F d"
 msgstr "d. F"
 
-#: src/Model/Profile.php:559 src/Model/Profile.php:644
+#: src/Model/Profile.php:566 src/Model/Profile.php:650
 msgid "[today]"
 msgstr "[heute]"
 
-#: src/Model/Profile.php:569
+#: src/Model/Profile.php:575
 msgid "Birthday Reminders"
 msgstr "Geburtstagserinnerungen"
 
-#: src/Model/Profile.php:570
+#: src/Model/Profile.php:576
 msgid "Birthdays this week:"
 msgstr "Geburtstage diese Woche:"
 
-#: src/Model/Profile.php:631
+#: src/Model/Profile.php:599
+msgid "g A l F d"
+msgstr "l, d. F G \\U\\h\\r"
+
+#: src/Model/Profile.php:637
 msgid "[No description]"
 msgstr "[keine Beschreibung]"
 
-#: src/Model/Profile.php:657
+#: src/Model/Profile.php:663
 msgid "Event Reminders"
 msgstr "Veranstaltungserinnerungen"
 
-#: src/Model/Profile.php:658
+#: src/Model/Profile.php:664
 msgid "Upcoming events the next 7 days:"
 msgstr "Veranstaltungen der nächsten 7 Tage:"
 
-#: src/Model/Profile.php:846
+#: src/Model/Profile.php:852
 #, php-format
 msgid "OpenWebAuth: %1$s welcomes %2$s"
 msgstr "OpenWebAuth: %1$s heißt %2$s herzlich willkommen"
 
-#: src/Model/Profile.php:978
+#: src/Model/Profile.php:984
 msgid "Hometown:"
 msgstr "Heimatort:"
 
-#: src/Model/Profile.php:979
+#: src/Model/Profile.php:985
 msgid "Marital Status:"
 msgstr "Familienstand:"
 
-#: src/Model/Profile.php:980
+#: src/Model/Profile.php:986
 msgid "With:"
 msgstr "Mit:"
 
-#: src/Model/Profile.php:981
+#: src/Model/Profile.php:987
 msgid "Since:"
 msgstr "Seit:"
 
-#: src/Model/Profile.php:982
+#: src/Model/Profile.php:988
 msgid "Sexual Preference:"
 msgstr "Sexuelle Vorlieben:"
 
-#: src/Model/Profile.php:983
+#: src/Model/Profile.php:989
 msgid "Political Views:"
 msgstr "Politische Ansichten:"
 
-#: src/Model/Profile.php:984
+#: src/Model/Profile.php:990
 msgid "Religious Views:"
 msgstr "Religiöse Ansichten:"
 
-#: src/Model/Profile.php:985
+#: src/Model/Profile.php:991
 msgid "Likes:"
 msgstr "Likes:"
 
-#: src/Model/Profile.php:986
+#: src/Model/Profile.php:992
 msgid "Dislikes:"
 msgstr "Dislikes:"
 
-#: src/Model/Profile.php:987
+#: src/Model/Profile.php:993
 msgid "Title/Description:"
 msgstr "Titel/Beschreibung:"
 
-#: src/Model/Profile.php:988 src/Module/Admin/Summary.php:233
+#: src/Model/Profile.php:994 src/Module/Admin/Summary.php:233
 msgid "Summary"
 msgstr "Zusammenfassung"
 
-#: src/Model/Profile.php:989
+#: src/Model/Profile.php:995
 msgid "Musical interests"
 msgstr "Musikalische Interessen"
 
-#: src/Model/Profile.php:990
+#: src/Model/Profile.php:996
 msgid "Books, literature"
 msgstr "Bücher, Literatur"
 
-#: src/Model/Profile.php:991
+#: src/Model/Profile.php:997
 msgid "Television"
 msgstr "Fernsehen"
 
-#: src/Model/Profile.php:992
+#: src/Model/Profile.php:998
 msgid "Film/dance/culture/entertainment"
 msgstr "Filme/Tänze/Kultur/Unterhaltung"
 
-#: src/Model/Profile.php:993
+#: src/Model/Profile.php:999
 msgid "Hobbies/Interests"
 msgstr "Hobbies/Interessen"
 
-#: src/Model/Profile.php:994
+#: src/Model/Profile.php:1000
 msgid "Love/romance"
 msgstr "Liebe/Romantik"
 
-#: src/Model/Profile.php:995
+#: src/Model/Profile.php:1001
 msgid "Work/employment"
 msgstr "Arbeit/Anstellung"
 
-#: src/Model/Profile.php:996
+#: src/Model/Profile.php:1002
 msgid "School/education"
 msgstr "Schule/Ausbildung"
 
-#: src/Model/Profile.php:997
+#: src/Model/Profile.php:1003
 msgid "Contact information and Social Networks"
 msgstr "Kontaktinformationen und Soziale Netzwerke"
 
@@ -4745,8 +4729,8 @@ msgstr "Einschalten"
 #: src/Module/Admin/Blocklist/Contact.php:94
 #: src/Module/Admin/Blocklist/Server/Add.php:89
 #: src/Module/Admin/Blocklist/Server/Index.php:78
-#: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:65
-#: src/Module/Admin/Logs/Settings.php:80 src/Module/Admin/Logs/View.php:83
+#: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:64
+#: src/Module/Admin/Logs/Settings.php:79 src/Module/Admin/Logs/View.php:83
 #: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:498
 #: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:232
 #: src/Module/Admin/Themes/Details.php:90
@@ -4760,7 +4744,7 @@ msgstr "Administration"
 
 #: src/Module/Admin/Addons/Details.php:112
 #: src/Module/Admin/Addons/Index.php:68 src/Module/BaseAdmin.php:93
-#: src/Module/BaseSettings.php:87
+#: src/Module/BaseSettings.php:85
 msgid "Addons"
 msgstr "Addons"
 
@@ -4800,49 +4784,49 @@ msgid ""
 " the open addon registry at %2$s"
 msgstr "Es sind derzeit keine Addons auf diesem Knoten verfügbar. Du findest das offizielle Addon-Repository unter %1$s und weitere eventuell interessante Addons im offenen Addon-Verzeichnis auf %2$s."
 
-#: src/Module/Admin/BaseUsers.php:53
+#: src/Module/Admin/BaseUsers.php:54
 msgid "List of all users"
 msgstr "Liste aller Benutzerkonten"
 
-#: src/Module/Admin/BaseUsers.php:58
+#: src/Module/Admin/BaseUsers.php:59
 msgid "Active"
 msgstr "Aktive"
 
-#: src/Module/Admin/BaseUsers.php:61
+#: src/Module/Admin/BaseUsers.php:62
 msgid "List of active accounts"
 msgstr "Liste der aktiven Benutzerkonten"
 
-#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:314
+#: src/Module/Admin/BaseUsers.php:67 src/Module/Contact.php:314
 #: src/Module/Contact.php:374
 msgid "Pending"
 msgstr "Ausstehend"
 
-#: src/Module/Admin/BaseUsers.php:69
+#: src/Module/Admin/BaseUsers.php:70
 msgid "List of pending registrations"
 msgstr "Liste der anstehenden Benutzerkonten"
 
-#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:322
+#: src/Module/Admin/BaseUsers.php:75 src/Module/Contact.php:322
 #: src/Module/Contact.php:375
 msgid "Blocked"
 msgstr "Geblockt"
 
-#: src/Module/Admin/BaseUsers.php:77
+#: src/Module/Admin/BaseUsers.php:78
 msgid "List of blocked users"
 msgstr "Liste der geblockten Benutzer"
 
-#: src/Module/Admin/BaseUsers.php:82
+#: src/Module/Admin/BaseUsers.php:83
 msgid "Deleted"
 msgstr "Gelöscht"
 
-#: src/Module/Admin/BaseUsers.php:85
+#: src/Module/Admin/BaseUsers.php:86
 msgid "List of pending user deletions"
 msgstr "Liste der auf Löschung wartenden Benutzer"
 
-#: src/Module/Admin/BaseUsers.php:103
+#: src/Module/Admin/BaseUsers.php:104
 msgid "Private Forum"
 msgstr "Privates Forum"
 
-#: src/Module/Admin/BaseUsers.php:110
+#: src/Module/Admin/BaseUsers.php:111
 msgid "Relay"
 msgstr "Relais"
 
@@ -4884,8 +4868,8 @@ msgstr "Auswahl aufheben"
 
 #: src/Module/Admin/Blocklist/Contact.php:101
 #: src/Module/Admin/Users/Blocked.php:142 src/Module/Admin/Users/Index.php:156
-#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:354
-#: src/Module/Contact/Profile.php:455
+#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:449
 msgid "Unblock"
 msgstr "Entsperren"
 
@@ -4927,7 +4911,7 @@ msgstr "Kontakt auch löschen"
 #: src/Module/Admin/Blocklist/Contact.php:117
 msgid ""
 "Removes all content related to this contact from the node. Keeps the contact"
-" record. This action canoot be undone."
+" record. This action cannot be undone."
 msgstr "Entfernt alle Inhalte von diesem Knoten, die in Verbindung zu dem Kontakt stehen. Der Kontakt-Eintrag bleibt erhalten. Dieser Vorgang kann nicht rückgängig gemacht werden."
 
 #: src/Module/Admin/Blocklist/Contact.php:118
@@ -5183,36 +5167,36 @@ msgid ""
 "following platforms:"
 msgstr "Momentan kennt dieser Knoten %d Knoten mit insgesamt %d registrierten Nutzern, die die folgenden Plattformen verwenden:"
 
-#: src/Module/Admin/Item/Delete.php:54
+#: src/Module/Admin/Item/Delete.php:53
 msgid "Item marked for deletion."
 msgstr "Eintrag wurden zur Löschung markiert"
 
-#: src/Module/Admin/Item/Delete.php:66 src/Module/BaseAdmin.php:106
+#: src/Module/Admin/Item/Delete.php:65 src/Module/BaseAdmin.php:106
 msgid "Delete Item"
 msgstr "Eintrag löschen"
 
-#: src/Module/Admin/Item/Delete.php:67
+#: src/Module/Admin/Item/Delete.php:66
 msgid "Delete this Item"
 msgstr "Diesen Eintrag löschen"
 
-#: src/Module/Admin/Item/Delete.php:68
+#: src/Module/Admin/Item/Delete.php:67
 msgid ""
 "On this page you can delete an item from your node. If the item is a top "
 "level posting, the entire thread will be deleted."
 msgstr "Auf dieser Seite kannst du Einträge von deinem Knoten löschen. Wenn der Eintrag der Anfang einer Diskussion ist, wird der gesamte Diskussionsverlauf gelöscht."
 
-#: src/Module/Admin/Item/Delete.php:69
+#: src/Module/Admin/Item/Delete.php:68
 msgid ""
 "You need to know the GUID of the item. You can find it e.g. by looking at "
 "the display URL. The last part of http://example.com/display/123456 is the "
 "GUID, here 123456."
 msgstr "Zur Löschung musst du die GUID des Eintrags kennen. Diese findest du z.B. durch die /display URL des Eintrags. Der letzte Teil der URL ist die GUID. Lautet die URL beispielsweise http://example.com/display/123456, ist die GUID 123456."
 
-#: src/Module/Admin/Item/Delete.php:70
+#: src/Module/Admin/Item/Delete.php:69
 msgid "GUID"
 msgstr "GUID"
 
-#: src/Module/Admin/Item/Delete.php:70
+#: src/Module/Admin/Item/Delete.php:69
 msgid "The GUID of the item you want to delete."
 msgstr "Die GUID des zu löschenden Eintrags"
 
@@ -5266,51 +5250,51 @@ msgstr "Implicit Mention"
 msgid "Source"
 msgstr "Quelle"
 
-#: src/Module/Admin/Logs/Settings.php:48
+#: src/Module/Admin/Logs/Settings.php:47
 #, php-format
 msgid "The logfile '%s' is not writable. No logging possible"
 msgstr "Die Logdatei '%s' ist nicht beschreibbar. Derzeit ist keine Aufzeichnung möglich."
 
-#: src/Module/Admin/Logs/Settings.php:72
+#: src/Module/Admin/Logs/Settings.php:71
 msgid "PHP log currently enabled."
 msgstr "PHP Protokollierung ist derzeit aktiviert."
 
-#: src/Module/Admin/Logs/Settings.php:74
+#: src/Module/Admin/Logs/Settings.php:73
 msgid "PHP log currently disabled."
 msgstr "PHP Protokollierung ist derzeit nicht aktiviert."
 
-#: src/Module/Admin/Logs/Settings.php:81 src/Module/BaseAdmin.php:108
+#: src/Module/Admin/Logs/Settings.php:80 src/Module/BaseAdmin.php:108
 #: src/Module/BaseAdmin.php:109
 msgid "Logs"
 msgstr "Protokolle"
 
-#: src/Module/Admin/Logs/Settings.php:83
+#: src/Module/Admin/Logs/Settings.php:82
 msgid "Clear"
 msgstr "löschen"
 
-#: src/Module/Admin/Logs/Settings.php:87
+#: src/Module/Admin/Logs/Settings.php:86
 msgid "Enable Debugging"
 msgstr "Protokoll führen"
 
-#: src/Module/Admin/Logs/Settings.php:88
+#: src/Module/Admin/Logs/Settings.php:87
 msgid "Log file"
 msgstr "Protokolldatei"
 
-#: src/Module/Admin/Logs/Settings.php:88
+#: src/Module/Admin/Logs/Settings.php:87
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis."
 
-#: src/Module/Admin/Logs/Settings.php:89
+#: src/Module/Admin/Logs/Settings.php:88
 msgid "Log level"
 msgstr "Protokoll-Level"
 
-#: src/Module/Admin/Logs/Settings.php:91
+#: src/Module/Admin/Logs/Settings.php:90
 msgid "PHP logging"
 msgstr "PHP Protokollieren"
 
-#: src/Module/Admin/Logs/Settings.php:92
+#: src/Module/Admin/Logs/Settings.php:91
 msgid ""
 "To temporarily enable logging of PHP errors and warnings you can prepend the"
 " following to the index.php file of your installation. The filename set in "
@@ -5342,7 +5326,7 @@ msgid "Search in logs"
 msgstr "Logs durchsuchen"
 
 #: src/Module/Admin/Logs/View.php:88
-#: src/Module/Notifications/Notifications.php:140
+#: src/Module/Notifications/Notifications.php:139
 msgid "Show all"
 msgstr "Alle anzeigen"
 
@@ -5487,15 +5471,15 @@ msgstr "Bedarf der Zustimmung"
 msgid "Open"
 msgstr "Offen"
 
-#: src/Module/Admin/Site.php:475 src/Module/Install.php:223
+#: src/Module/Admin/Site.php:475 src/Module/Install.php:222
 msgid "No SSL policy, links will track page SSL state"
 msgstr "Keine SSL-Richtlinie, Links werden das verwendete Protokoll beibehalten"
 
-#: src/Module/Admin/Site.php:476 src/Module/Install.php:224
+#: src/Module/Admin/Site.php:476 src/Module/Install.php:223
 msgid "Force all links to use SSL"
 msgstr "SSL für alle Links erzwingen"
 
-#: src/Module/Admin/Site.php:477 src/Module/Install.php:225
+#: src/Module/Admin/Site.php:477 src/Module/Install.php:224
 msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr "Selbst-unterzeichnetes Zertifikat, SSL nur für lokale Links verwenden (nicht empfohlen)"
 
@@ -5535,7 +5519,7 @@ msgstr "Allgemeine Informationen"
 msgid "Republish users to directory"
 msgstr "Nutzer erneut im globalen Verzeichnis veröffentlichen."
 
-#: src/Module/Admin/Site.php:503 src/Module/Register.php:148
+#: src/Module/Admin/Site.php:503 src/Module/Register.php:152
 msgid "Registration"
 msgstr "Registrierung"
 
@@ -5668,11 +5652,11 @@ msgstr "Systemweites mobiles Theme"
 msgid "Theme for mobile devices"
 msgstr "Theme für mobile Geräte"
 
-#: src/Module/Admin/Site.php:531 src/Module/Install.php:233
+#: src/Module/Admin/Site.php:531 src/Module/Install.php:232
 msgid "SSL link policy"
 msgstr "Regeln für SSL Links"
 
-#: src/Module/Admin/Site.php:531 src/Module/Install.php:235
+#: src/Module/Admin/Site.php:531 src/Module/Install.php:234
 msgid "Determines whether generated links should be forced to use SSL"
 msgstr "Bestimmt, ob generierte Links SSL verwenden müssen"
 
@@ -6306,7 +6290,7 @@ msgid ""
 "received."
 msgstr "Der Wert kann entweder 'Alle' oder 'Schlagwörter' sein. 'Alle' bedeutet, dass alle öffentliche Beiträge empfangen werden sollen. 'Schlagwörter' schränkt dem Empfang auf Beiträge ein, die bestimmte Schlagwörter beinhalten."
 
-#: src/Module/Admin/Site.php:610 src/Module/Contact/Profile.php:279
+#: src/Module/Admin/Site.php:610 src/Module/Contact/Profile.php:273
 #: src/Module/Settings/TwoFactor/Index.php:118
 msgid "Disabled"
 msgstr "Deaktiviert"
@@ -6635,8 +6619,8 @@ msgstr "Datenschutzerklärung anzeigen"
 #, php-format
 msgid ""
 "Show some informations regarding the needed information to operate the node "
-"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer"
-"\">EU-GDPR</a>."
+"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener "
+"noreferrer\">EU-GDPR</a>."
 msgstr "Zeige Informationen über die zum Betrieb der Seite notwendigen, personenbezogenen Daten an, wie es z.B. die <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">EU.-DSGVO</a> verlangt."
 
 #: src/Module/Admin/Tos.php:79
@@ -6842,17 +6826,17 @@ msgstr "Hinweis vom Nutzer"
 msgid "Deny"
 msgstr "Verwehren"
 
-#: src/Module/Api/ApiResponse.php:266
+#: src/Module/Api/ApiResponse.php:272
 #, php-format
 msgid "API endpoint %s %s is not implemented"
 msgstr "API Endpunkt %s %s ist nicht implementiert"
 
-#: src/Module/Api/ApiResponse.php:267
+#: src/Module/Api/ApiResponse.php:273
 msgid ""
 "The API endpoint is currently not implemented but might be in the future."
 msgstr "The API endpoint is currently not implemented but might be in the future."
 
-#: src/Module/Api/Mastodon/Apps.php:57
+#: src/Module/Api/Mastodon/Apps.php:63
 msgid "Missing parameters"
 msgstr "Fehlende Parameter"
 
@@ -6887,15 +6871,15 @@ msgstr "Nur die ersten Beiträge einer Unterhaltung können wieder auf laut gest
 msgid "Posts from %s can't be unshared"
 msgstr "Beiträge von %s können nicht ungeteilt werden"
 
-#: src/Module/Api/Twitter/ContactEndpoint.php:64
+#: src/Module/Api/Twitter/ContactEndpoint.php:66
 msgid "Contact not found"
 msgstr "Kontakt nicht gefunden"
 
-#: src/Module/Apps.php:51
+#: src/Module/Apps.php:54
 msgid "No installed applications."
 msgstr "Keine Applikationen installiert."
 
-#: src/Module/Apps.php:56
+#: src/Module/Apps.php:59
 msgid "Applications"
 msgstr "Anwendungen"
 
@@ -6925,7 +6909,7 @@ msgstr "Übersicht"
 msgid "Configuration"
 msgstr "Konfiguration"
 
-#: src/Module/BaseAdmin.php:95 src/Module/BaseSettings.php:65
+#: src/Module/BaseAdmin.php:95 src/Module/BaseSettings.php:63
 msgid "Additional features"
 msgstr "Zusätzliche Features"
 
@@ -6989,11 +6973,31 @@ msgstr "Addon Features"
 msgid "User registrations waiting for confirmation"
 msgstr "Nutzeranmeldungen, die auf Bestätigung warten"
 
-#: src/Module/BaseApi.php:256 src/Module/BaseApi.php:272
-#: src/Module/BaseApi.php:288
+#: src/Module/BaseApi.php:241 src/Module/BaseApi.php:257
+#: src/Module/BaseApi.php:273
 msgid "Too Many Requests"
 msgstr "Zu viele Abfragen"
 
+#: src/Module/BaseApi.php:242
+#, php-format
+msgid "Daily posting limit of %d post reached. The post was rejected."
+msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
+msgstr[0] "Das tägliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen."
+msgstr[1] "Das tägliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
+
+#: src/Module/BaseApi.php:258
+#, php-format
+msgid "Weekly posting limit of %d post reached. The post was rejected."
+msgid_plural ""
+"Weekly posting limit of %d posts reached. The post was rejected."
+msgstr[0] "Das wöchentliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen."
+msgstr[1] "Das wöchentliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
+
+#: src/Module/BaseApi.php:274
+#, php-format
+msgid "Monthly posting limit of %d post reached. The post was rejected."
+msgstr "Das monatliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
+
 #: src/Module/BaseProfile.php:51 src/Module/Contact.php:460
 msgid "Profile Details"
 msgstr "Profildetails"
@@ -7024,32 +7028,32 @@ msgstr "Personensuche - %s"
 msgid "Forum Search - %s"
 msgstr "Forensuche - %s"
 
-#: src/Module/BaseSettings.php:43
+#: src/Module/BaseSettings.php:41
 msgid "Account"
 msgstr "Nutzerkonto"
 
-#: src/Module/BaseSettings.php:50 src/Module/Security/TwoFactor/Verify.php:95
+#: src/Module/BaseSettings.php:48 src/Module/Security/TwoFactor/Verify.php:95
 #: src/Module/Settings/TwoFactor/Index.php:110
 msgid "Two-factor authentication"
 msgstr "Zwei-Faktor Authentifizierung"
 
-#: src/Module/BaseSettings.php:73
+#: src/Module/BaseSettings.php:71
 msgid "Display"
 msgstr "Anzeige"
 
-#: src/Module/BaseSettings.php:94 src/Module/Settings/Delegation.php:171
+#: src/Module/BaseSettings.php:92 src/Module/Settings/Delegation.php:171
 msgid "Manage Accounts"
 msgstr "Accounts Verwalten"
 
-#: src/Module/BaseSettings.php:101
+#: src/Module/BaseSettings.php:99
 msgid "Connected apps"
 msgstr "Verbundene Programme"
 
-#: src/Module/BaseSettings.php:108 src/Module/Settings/UserExport.php:75
+#: src/Module/BaseSettings.php:106 src/Module/Settings/UserExport.php:75
 msgid "Export personal data"
 msgstr "Persönliche Daten exportieren"
 
-#: src/Module/BaseSettings.php:115
+#: src/Module/BaseSettings.php:113
 msgid "Remove account"
 msgstr "Konto löschen"
 
@@ -7122,8 +7126,8 @@ msgstr "Ergebnisse für: %s"
 msgid "Update"
 msgstr "Aktualisierungen"
 
-#: src/Module/Contact.php:399 src/Module/Contact/Profile.php:355
-#: src/Module/Contact/Profile.php:463
+#: src/Module/Contact.php:399 src/Module/Contact/Profile.php:349
+#: src/Module/Contact/Profile.php:457
 msgid "Unignore"
 msgstr "Ignorieren aufheben"
 
@@ -7171,415 +7175,384 @@ msgstr "Ausstehende ausgehende Kontaktanfrage"
 msgid "Pending incoming contact request"
 msgstr "Ausstehende eingehende Kontaktanfrage"
 
-#: src/Module/Contact.php:552 src/Module/Contact/Profile.php:340
+#: src/Module/Contact.php:552 src/Module/Contact/Profile.php:334
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr "Besuche %ss Profil [%s]"
 
-#: src/Module/Contact/Advanced.php:109
+#: src/Module/Contact/Advanced.php:99
 msgid "Contact update failed."
 msgstr "Konnte den Kontakt nicht aktualisieren."
 
-#: src/Module/Contact/Advanced.php:124
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr "<strong>ACHTUNG: Das sind Experten-Einstellungen!</strong> Wenn du etwas Falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr."
-
-#: src/Module/Contact/Advanced.php:125
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "Bitte nutze den Zurück-Button Deines Browsers <strong>jetzt</strong>, wenn du dir unsicher bist, was du tun willst."
-
-#: src/Module/Contact/Advanced.php:145
+#: src/Module/Contact/Advanced.php:130
 msgid "Return to contact editor"
 msgstr "Zurück zum Kontakteditor"
 
-#: src/Module/Contact/Advanced.php:150
+#: src/Module/Contact/Advanced.php:135
 msgid "Account Nickname"
 msgstr "Konto-Spitzname"
 
-#: src/Module/Contact/Advanced.php:151
-msgid "@Tagname - overrides Name/Nickname"
-msgstr "@Tagname - überschreibt Name/Spitzname"
-
-#: src/Module/Contact/Advanced.php:152
+#: src/Module/Contact/Advanced.php:136
 msgid "Account URL"
 msgstr "Konto-URL"
 
-#: src/Module/Contact/Advanced.php:153
-msgid "Account URL Alias"
-msgstr "Konto URL Alias"
-
-#: src/Module/Contact/Advanced.php:154
-msgid "Friend Request URL"
-msgstr "URL für Kontaktschaftsanfragen"
-
-#: src/Module/Contact/Advanced.php:155
-msgid "Friend Confirm URL"
-msgstr "URL für Bestätigungen von Kontaktanfragen"
-
-#: src/Module/Contact/Advanced.php:156
-msgid "Notification Endpoint URL"
-msgstr "URL-Endpunkt für Benachrichtigungen"
-
-#: src/Module/Contact/Advanced.php:157
+#: src/Module/Contact/Advanced.php:137
 msgid "Poll/Feed URL"
 msgstr "Pull/Feed-URL"
 
-#: src/Module/Contact/Advanced.php:158
+#: src/Module/Contact/Advanced.php:138
 msgid "New photo from this URL"
 msgstr "Neues Foto von dieser URL"
 
-#: src/Module/Contact/Contacts.php:31 src/Module/Conversation/Network.php:168
+#: src/Module/Contact/Contacts.php:50 src/Module/Conversation/Network.php:187
+#: src/Module/Group.php:103
 msgid "Invalid contact."
 msgstr "Ungültiger Kontakt."
 
-#: src/Module/Contact/Contacts.php:54
+#: src/Module/Contact/Contacts.php:73
 msgid "No known contacts."
 msgstr "Keine bekannten Kontakte."
 
-#: src/Module/Contact/Contacts.php:68 src/Module/Profile/Common.php:98
+#: src/Module/Contact/Contacts.php:87 src/Module/Profile/Common.php:98
 msgid "No common contacts."
 msgstr "Keine gemeinsamen Kontakte."
 
-#: src/Module/Contact/Contacts.php:80 src/Module/Profile/Contacts.php:96
+#: src/Module/Contact/Contacts.php:99 src/Module/Profile/Contacts.php:96
 #, php-format
 msgid "Follower (%s)"
 msgid_plural "Followers (%s)"
 msgstr[0] "Folgende (%s)"
 msgstr[1] "Folgende (%s)"
 
-#: src/Module/Contact/Contacts.php:84 src/Module/Profile/Contacts.php:99
+#: src/Module/Contact/Contacts.php:103 src/Module/Profile/Contacts.php:99
 #, php-format
 msgid "Following (%s)"
 msgid_plural "Following (%s)"
 msgstr[0] "Gefolgte (%s)"
 msgstr[1] "Gefolgte (%s)"
 
-#: src/Module/Contact/Contacts.php:88 src/Module/Profile/Contacts.php:102
+#: src/Module/Contact/Contacts.php:107 src/Module/Profile/Contacts.php:102
 #, php-format
 msgid "Mutual friend (%s)"
 msgid_plural "Mutual friends (%s)"
 msgstr[0] "Beidseitige Freundschafte (%s)"
 msgstr[1] "Beidseitige Freundschaften (%s)"
 
-#: src/Module/Contact/Contacts.php:90 src/Module/Profile/Contacts.php:104
+#: src/Module/Contact/Contacts.php:109 src/Module/Profile/Contacts.php:104
 #, php-format
 msgid "These contacts both follow and are followed by <strong>%s</strong>."
 msgstr "Diese Kontakte sind sowohl Folgende als auch Gefolgte von <strong>%s</strong>."
 
-#: src/Module/Contact/Contacts.php:96 src/Module/Profile/Common.php:86
+#: src/Module/Contact/Contacts.php:115 src/Module/Profile/Common.php:86
 #, php-format
 msgid "Common contact (%s)"
 msgid_plural "Common contacts (%s)"
 msgstr[0] "Gemeinsamer Kontakt (%s)"
 msgstr[1] "Gemeinsame Kontakte (%s)"
 
-#: src/Module/Contact/Contacts.php:98 src/Module/Profile/Common.php:88
+#: src/Module/Contact/Contacts.php:117 src/Module/Profile/Common.php:88
 #, php-format
 msgid ""
 "Both <strong>%s</strong> and yourself have publicly interacted with these "
 "contacts (follow, comment or likes on public posts)."
 msgstr "Du und <strong>%s</strong> haben mit diesen Kontakten öffentlich interagiert (Folgen, Kommentare und Likes in öffentlichen Beiträgen)"
 
-#: src/Module/Contact/Contacts.php:104 src/Module/Profile/Contacts.php:110
+#: src/Module/Contact/Contacts.php:123 src/Module/Profile/Contacts.php:110
 #, php-format
 msgid "Contact (%s)"
 msgid_plural "Contacts (%s)"
 msgstr[0] "Kontakt (%s)"
 msgstr[1] "Kontakte (%s)"
 
-#: src/Module/Contact/Poke.php:116
+#: src/Module/Contact/Poke.php:135
 msgid "Error while sending poke, please retry."
 msgstr "Beim Versenden des Stupsers ist ein Fehler aufgetreten. Bitte erneut versuchen."
 
-#: src/Module/Contact/Poke.php:129 src/Module/Search/Acl.php:54
+#: src/Module/Contact/Poke.php:148 src/Module/Search/Acl.php:54
 msgid "You must be logged in to use this module."
 msgstr "Du musst eingeloggt sein, um dieses Modul benutzen zu können."
 
-#: src/Module/Contact/Poke.php:152
+#: src/Module/Contact/Poke.php:171
 msgid "Poke/Prod"
 msgstr "Anstupsen"
 
-#: src/Module/Contact/Poke.php:153
+#: src/Module/Contact/Poke.php:172
 msgid "poke, prod or do other things to somebody"
 msgstr "Stupse Leute an oder mache anderes mit ihnen"
 
-#: src/Module/Contact/Poke.php:155
+#: src/Module/Contact/Poke.php:174
 msgid "Choose what you wish to do to recipient"
 msgstr "Was willst du mit dem Empfänger machen:"
 
-#: src/Module/Contact/Poke.php:156
+#: src/Module/Contact/Poke.php:175
 msgid "Make this post private"
 msgstr "Diesen Beitrag privat machen"
 
-#: src/Module/Contact/Profile.php:133
+#: src/Module/Contact/Profile.php:127
 msgid "Failed to update contact record."
 msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen."
 
-#: src/Module/Contact/Profile.php:183
+#: src/Module/Contact/Profile.php:177
 msgid "Contact has been unblocked"
 msgstr "Kontakt wurde wieder freigegeben"
 
-#: src/Module/Contact/Profile.php:187
+#: src/Module/Contact/Profile.php:181
 msgid "Contact has been blocked"
 msgstr "Kontakt wurde blockiert"
 
-#: src/Module/Contact/Profile.php:199
+#: src/Module/Contact/Profile.php:193
 msgid "Contact has been unignored"
 msgstr "Kontakt wird nicht mehr ignoriert"
 
-#: src/Module/Contact/Profile.php:203
+#: src/Module/Contact/Profile.php:197
 msgid "Contact has been ignored"
 msgstr "Kontakt wurde ignoriert"
 
-#: src/Module/Contact/Profile.php:235
+#: src/Module/Contact/Profile.php:229
 #, php-format
 msgid "You are mutual friends with %s"
 msgstr "Du hast mit %s eine beidseitige Freundschaft"
 
-#: src/Module/Contact/Profile.php:236
+#: src/Module/Contact/Profile.php:230
 #, php-format
 msgid "You are sharing with %s"
 msgstr "Du teilst mit %s"
 
-#: src/Module/Contact/Profile.php:237
+#: src/Module/Contact/Profile.php:231
 #, php-format
 msgid "%s is sharing with you"
 msgstr "%s teilt mit dir"
 
-#: src/Module/Contact/Profile.php:253
+#: src/Module/Contact/Profile.php:247
 msgid "Private communications are not available for this contact."
 msgstr "Private Kommunikation ist für diesen Kontakt nicht verfügbar."
 
-#: src/Module/Contact/Profile.php:255
+#: src/Module/Contact/Profile.php:249
 msgid "Never"
 msgstr "Niemals"
 
-#: src/Module/Contact/Profile.php:258
+#: src/Module/Contact/Profile.php:252
 msgid "(Update was not successful)"
 msgstr "(Aktualisierung war nicht erfolgreich)"
 
-#: src/Module/Contact/Profile.php:258
+#: src/Module/Contact/Profile.php:252
 msgid "(Update was successful)"
 msgstr "(Aktualisierung war erfolgreich)"
 
-#: src/Module/Contact/Profile.php:260 src/Module/Contact/Profile.php:426
+#: src/Module/Contact/Profile.php:254 src/Module/Contact/Profile.php:420
 msgid "Suggest friends"
 msgstr "Kontakte vorschlagen"
 
-#: src/Module/Contact/Profile.php:264
+#: src/Module/Contact/Profile.php:258
 #, php-format
 msgid "Network type: %s"
 msgstr "Netzwerktyp: %s"
 
-#: src/Module/Contact/Profile.php:269
+#: src/Module/Contact/Profile.php:263
 msgid "Communications lost with this contact!"
 msgstr "Verbindungen mit diesem Kontakt verloren!"
 
-#: src/Module/Contact/Profile.php:275
+#: src/Module/Contact/Profile.php:269
 msgid "Fetch further information for feeds"
 msgstr "Weitere Informationen zu Feeds holen"
 
-#: src/Module/Contact/Profile.php:277
+#: src/Module/Contact/Profile.php:271
 msgid ""
 "Fetch information like preview pictures, title and teaser from the feed "
 "item. You can activate this if the feed doesn't contain much text. Keywords "
 "are taken from the meta header in the feed item and are posted as hash tags."
 msgstr "Zusätzliche Informationen wie Vorschaubilder, Titel und Zusammenfassungen vom Feed-Eintrag laden. Du kannst diese Option aktivieren, wenn der Feed nicht allzu viel Text beinhaltet. Schlagwörter werden aus den Meta-Informationen des Feed-Headers bezogen und als Hash-Tags verwendet."
 
-#: src/Module/Contact/Profile.php:280
+#: src/Module/Contact/Profile.php:274
 msgid "Fetch information"
 msgstr "Beziehe Information"
 
-#: src/Module/Contact/Profile.php:281
+#: src/Module/Contact/Profile.php:275
 msgid "Fetch keywords"
 msgstr "Schlüsselwörter abrufen"
 
-#: src/Module/Contact/Profile.php:282
+#: src/Module/Contact/Profile.php:276
 msgid "Fetch information and keywords"
 msgstr "Beziehe Information und Schlüsselworte"
 
-#: src/Module/Contact/Profile.php:292 src/Module/Contact/Profile.php:298
-#: src/Module/Contact/Profile.php:303 src/Module/Contact/Profile.php:309
+#: src/Module/Contact/Profile.php:286 src/Module/Contact/Profile.php:292
+#: src/Module/Contact/Profile.php:297 src/Module/Contact/Profile.php:303
 msgid "No mirroring"
 msgstr "Kein Spiegeln"
 
-#: src/Module/Contact/Profile.php:293
+#: src/Module/Contact/Profile.php:287
 msgid "Mirror as forwarded posting"
 msgstr "Spiegeln als weitergeleitete Beiträge"
 
-#: src/Module/Contact/Profile.php:294 src/Module/Contact/Profile.php:304
-#: src/Module/Contact/Profile.php:310
+#: src/Module/Contact/Profile.php:288 src/Module/Contact/Profile.php:298
+#: src/Module/Contact/Profile.php:304
 msgid "Mirror as my own posting"
 msgstr "Spiegeln als meine eigenen Beiträge"
 
-#: src/Module/Contact/Profile.php:299 src/Module/Contact/Profile.php:305
+#: src/Module/Contact/Profile.php:293 src/Module/Contact/Profile.php:299
 msgid "Native reshare"
 msgstr "Natives Teilen"
 
-#: src/Module/Contact/Profile.php:322
+#: src/Module/Contact/Profile.php:316
 msgid "Contact Information / Notes"
 msgstr "Kontakt-Informationen / -Notizen"
 
-#: src/Module/Contact/Profile.php:323
+#: src/Module/Contact/Profile.php:317
 msgid "Contact Settings"
 msgstr "Kontakteinstellungen"
 
-#: src/Module/Contact/Profile.php:331
+#: src/Module/Contact/Profile.php:325
 msgid "Contact"
 msgstr "Kontakt"
 
-#: src/Module/Contact/Profile.php:335
+#: src/Module/Contact/Profile.php:329
 msgid "Their personal note"
 msgstr "Die persönliche Mitteilung"
 
-#: src/Module/Contact/Profile.php:337
+#: src/Module/Contact/Profile.php:331
 msgid "Edit contact notes"
 msgstr "Notizen zum Kontakt bearbeiten"
 
-#: src/Module/Contact/Profile.php:341
+#: src/Module/Contact/Profile.php:335
 msgid "Block/Unblock contact"
 msgstr "Kontakt blockieren/freischalten"
 
-#: src/Module/Contact/Profile.php:342
+#: src/Module/Contact/Profile.php:336
 msgid "Ignore contact"
 msgstr "Ignoriere den Kontakt"
 
-#: src/Module/Contact/Profile.php:343
+#: src/Module/Contact/Profile.php:337
 msgid "View conversations"
 msgstr "Unterhaltungen anzeigen"
 
-#: src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:342
 msgid "Last update:"
 msgstr "Letzte Aktualisierung: "
 
-#: src/Module/Contact/Profile.php:350
+#: src/Module/Contact/Profile.php:344
 msgid "Update public posts"
 msgstr "Öffentliche Beiträge aktualisieren"
 
-#: src/Module/Contact/Profile.php:352 src/Module/Contact/Profile.php:436
+#: src/Module/Contact/Profile.php:346 src/Module/Contact/Profile.php:430
 msgid "Update now"
 msgstr "Jetzt aktualisieren"
 
-#: src/Module/Contact/Profile.php:359
+#: src/Module/Contact/Profile.php:353
 msgid "Currently blocked"
 msgstr "Derzeit geblockt"
 
-#: src/Module/Contact/Profile.php:360
+#: src/Module/Contact/Profile.php:354
 msgid "Currently ignored"
 msgstr "Derzeit ignoriert"
 
-#: src/Module/Contact/Profile.php:361
+#: src/Module/Contact/Profile.php:355
 msgid "Currently archived"
 msgstr "Momentan archiviert"
 
-#: src/Module/Contact/Profile.php:362
+#: src/Module/Contact/Profile.php:356
 msgid "Awaiting connection acknowledge"
 msgstr "Bedarf der Bestätigung des Kontakts"
 
-#: src/Module/Contact/Profile.php:363
-#: src/Module/Notifications/Introductions.php:186
+#: src/Module/Contact/Profile.php:357
+#: src/Module/Notifications/Introductions.php:190
 msgid "Hide this contact from others"
 msgstr "Verbirg diesen Kontakt vor Anderen"
 
-#: src/Module/Contact/Profile.php:363
+#: src/Module/Contact/Profile.php:357
 msgid ""
 "Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein"
 
-#: src/Module/Contact/Profile.php:364
+#: src/Module/Contact/Profile.php:358
 msgid "Notification for new posts"
 msgstr "Benachrichtigung bei neuen Beiträgen"
 
-#: src/Module/Contact/Profile.php:364
+#: src/Module/Contact/Profile.php:358
 msgid "Send a notification of every new post of this contact"
 msgstr "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt."
 
-#: src/Module/Contact/Profile.php:366
+#: src/Module/Contact/Profile.php:360
 msgid "Keyword Deny List"
 msgstr "Liste der gesperrten Schlüsselwörter"
 
-#: src/Module/Contact/Profile.php:366
+#: src/Module/Contact/Profile.php:360
 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"
 
-#: src/Module/Contact/Profile.php:384
+#: src/Module/Contact/Profile.php:378
 #: src/Module/Settings/TwoFactor/Index.php:132
 msgid "Actions"
 msgstr "Aktionen"
 
-#: src/Module/Contact/Profile.php:392
+#: src/Module/Contact/Profile.php:386
 msgid "Mirror postings from this contact"
 msgstr "Spiegle Beiträge dieses Kontakts"
 
-#: src/Module/Contact/Profile.php:394
+#: src/Module/Contact/Profile.php:388
 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 (spiegeln)."
 
-#: src/Module/Contact/Profile.php:446
+#: src/Module/Contact/Profile.php:440
 msgid "Refetch contact data"
 msgstr "Kontaktdaten neu laden"
 
-#: src/Module/Contact/Profile.php:457
+#: src/Module/Contact/Profile.php:451
 msgid "Toggle Blocked status"
 msgstr "Geblockt-Status ein-/ausschalten"
 
-#: src/Module/Contact/Profile.php:465
+#: src/Module/Contact/Profile.php:459
 msgid "Toggle Ignored status"
 msgstr "Ignoriert-Status ein-/ausschalten"
 
-#: src/Module/Contact/Profile.php:472 src/Module/Contact/Revoke.php:111
+#: src/Module/Contact/Profile.php:466 src/Module/Contact/Revoke.php:107
 msgid "Revoke Follow"
 msgstr "Folgen widerrufen"
 
-#: src/Module/Contact/Profile.php:474
+#: src/Module/Contact/Profile.php:468
 msgid "Revoke the follow from this contact"
 msgstr "Widerruft das Folgen dieses Kontaktes"
 
-#: src/Module/Contact/Revoke.php:63
+#: src/Module/Contact/Revoke.php:59
 msgid "Unknown contact."
 msgstr "Unbekannter Kontakt."
 
-#: src/Module/Contact/Revoke.php:73 src/Module/Group.php:108
+#: src/Module/Contact/Revoke.php:69 src/Module/Group.php:112
 msgid "Contact is deleted."
 msgstr "Kontakt wurde gelöscht"
 
-#: src/Module/Contact/Revoke.php:77
+#: src/Module/Contact/Revoke.php:73
 msgid "Contact is being deleted."
 msgstr "Kontakt wurde gelöscht."
 
-#: src/Module/Contact/Revoke.php:91
+#: src/Module/Contact/Revoke.php:87
 msgid "Follow was successfully revoked."
 msgstr "Folgen wurde erfolgreich widerrufen."
 
-#: src/Module/Contact/Revoke.php:93
+#: src/Module/Contact/Revoke.php:89
 msgid ""
 "Follow was successfully revoked, however the remote contact won't be aware "
 "of this revokation."
 msgstr "Folgen wurde erfolgreich widerrufen, allerdings wird der entfernte Kontakt keine Notiz dieses Widerrufs erhalten."
 
-#: src/Module/Contact/Revoke.php:95
+#: src/Module/Contact/Revoke.php:91
 msgid ""
 "Unable to revoke follow, please try again later or contact the "
 "administrator."
 msgstr "Konnte das Folgen des Kontakts nicht widerrufen. Versuche es bitte später nochmal oder kontaktiere deinen Administrator."
 
-#: src/Module/Contact/Revoke.php:112
+#: src/Module/Contact/Revoke.php:108
 msgid ""
 "Do you really want to revoke this contact's follow? This cannot be undone "
 "and they will have to manually follow you back again."
 msgstr "Willst du das Folgen dieses Kontakt wirklich widerrufen? Dies kann nicht rückgängig gemacht werden und der Kontakt muss Ihnen manuell wieder folgen."
 
-#: src/Module/Contact/Revoke.php:113
-#: src/Module/Notifications/Introductions.php:138
-#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:126
+#: src/Module/Contact/Revoke.php:109
+#: src/Module/Notifications/Introductions.php:142
+#: src/Module/OAuth/Acknowledge.php:53 src/Module/Register.php:130
 msgid "Yes"
 msgstr "Ja"
 
@@ -7630,45 +7603,45 @@ msgstr "Optionen für die Gemeinschaftsseite nicht verfügbar."
 msgid "Not available."
 msgstr "Nicht verfügbar."
 
-#: src/Module/Conversation/Network.php:154
+#: src/Module/Conversation/Network.php:173
 msgid "No such group"
 msgstr "Es gibt keine solche Gruppe"
 
-#: src/Module/Conversation/Network.php:158
+#: src/Module/Conversation/Network.php:177
 #, php-format
 msgid "Group: %s"
 msgstr "Gruppe: %s"
 
-#: src/Module/Conversation/Network.php:234
+#: src/Module/Conversation/Network.php:253
 msgid "Latest Activity"
 msgstr "Neueste Aktivität"
 
-#: src/Module/Conversation/Network.php:237
+#: src/Module/Conversation/Network.php:256
 msgid "Sort by latest activity"
 msgstr "Sortiere nach neueste Aktivität"
 
-#: src/Module/Conversation/Network.php:242
+#: src/Module/Conversation/Network.php:261
 msgid "Latest Posts"
 msgstr "Neueste Beiträge"
 
-#: src/Module/Conversation/Network.php:245
+#: src/Module/Conversation/Network.php:264
 msgid "Sort by post received date"
 msgstr "Nach Empfangsdatum der Beiträge sortiert"
 
-#: src/Module/Conversation/Network.php:250
+#: src/Module/Conversation/Network.php:269
 #: src/Module/Settings/Profile/Index.php:227
 msgid "Personal"
 msgstr "Persönlich"
 
-#: src/Module/Conversation/Network.php:253
+#: src/Module/Conversation/Network.php:272
 msgid "Posts that mention or involve you"
 msgstr "Beiträge, in denen es um dich geht"
 
-#: src/Module/Conversation/Network.php:258 src/Object/Post.php:321
+#: src/Module/Conversation/Network.php:277 src/Object/Post.php:321
 msgid "Starred"
 msgstr "Markierte"
 
-#: src/Module/Conversation/Network.php:261
+#: src/Module/Conversation/Network.php:280
 msgid "Favourite Posts"
 msgstr "Favorisierte Beiträge"
 
@@ -7879,12 +7852,12 @@ msgstr "HTML"
 msgid "Twitter Source / Tweet URL (requires API key)"
 msgstr "Twitter Quelle / Tweet URL (benötigt API Schlüssel)"
 
-#: src/Module/Debug/Feed.php:47 src/Module/Filer/SaveTag.php:49
+#: src/Module/Debug/Feed.php:50 src/Module/Filer/SaveTag.php:46
 #: src/Module/Settings/Profile/Index.php:141
 msgid "You must be logged in to use this module"
 msgstr "Du musst eingeloggt sein, um dieses Modul benutzen zu können."
 
-#: src/Module/Debug/Feed.php:72
+#: src/Module/Debug/Feed.php:75
 msgid "Source URL"
 msgstr "URL der Quelle"
 
@@ -7941,21 +7914,26 @@ msgstr "Webfinger Diagnostik"
 msgid "Lookup address:"
 msgstr "Adresse nachschlagen:"
 
-#: src/Module/Delegation.php:142
+#: src/Module/Delegation.php:111
+#, php-format
+msgid "You are now logged in as %s"
+msgstr "Du bist jetzt als %s angemeldet"
+
+#: src/Module/Delegation.php:143
 msgid "Switch between your accounts"
 msgstr "Wechsle deine Konten"
 
-#: src/Module/Delegation.php:143
+#: src/Module/Delegation.php:144
 msgid "Manage your accounts"
 msgstr "Verwalte deine Konten"
 
-#: src/Module/Delegation.php:144
+#: src/Module/Delegation.php:145
 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."
 
-#: src/Module/Delegation.php:145
+#: src/Module/Delegation.php:146
 msgid "Select an identity to manage: "
 msgstr "Wähle eine Identität zum Verwalten aus: "
 
@@ -7983,23 +7961,23 @@ msgstr "Item wurde nicht entfernt"
 msgid "Item was not deleted"
 msgstr "Item wurde nicht gelöscht"
 
-#: src/Module/Filer/SaveTag.php:75
+#: src/Module/Filer/SaveTag.php:72
 msgid "- select -"
 msgstr "- auswählen -"
 
-#: src/Module/FriendSuggest.php:82
+#: src/Module/FriendSuggest.php:81
 msgid "Suggested contact not found."
 msgstr "Vorgeschlagener Kontakt wurde nicht gefunden."
 
-#: src/Module/FriendSuggest.php:100
+#: src/Module/FriendSuggest.php:99
 msgid "Friend suggestion sent."
 msgstr "Kontaktvorschlag gesendet."
 
-#: src/Module/FriendSuggest.php:137
+#: src/Module/FriendSuggest.php:136
 msgid "Suggest Friends"
 msgstr "Kontakte vorschlagen"
 
-#: src/Module/FriendSuggest.php:140
+#: src/Module/FriendSuggest.php:139
 #, php-format
 msgid "Suggest a friend for %s"
 msgstr "Schlage %s einen Kontakt vor"
@@ -8046,87 +8024,83 @@ msgstr "den Bugtracker auf github"
 msgid "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
 msgstr "Vorschläge, Lob usw.: E-Mail an \"Info\" at \"Friendi - dot ca\""
 
-#: src/Module/Group.php:60
+#: src/Module/Group.php:58
 msgid "Could not create group."
 msgstr "Konnte die Gruppe nicht erstellen."
 
-#: src/Module/Group.php:71 src/Module/Group.php:213 src/Module/Group.php:237
+#: src/Module/Group.php:69 src/Module/Group.php:215 src/Module/Group.php:239
 msgid "Group not found."
 msgstr "Gruppe nicht gefunden."
 
-#: src/Module/Group.php:77
+#: src/Module/Group.php:75
 msgid "Group name was not changed."
 msgstr "Der Name der Gruppe wurde nicht verändert."
 
-#: src/Module/Group.php:99
+#: src/Module/Group.php:93
 msgid "Unknown group."
 msgstr "Unbekannte Gruppe"
 
-#: src/Module/Group.php:114
+#: src/Module/Group.php:118
 msgid "Unable to add the contact to the group."
 msgstr "Konnte den Kontakt nicht zur Gruppe hinzufügen"
 
-#: src/Module/Group.php:117
+#: src/Module/Group.php:121
 msgid "Contact successfully added to group."
 msgstr "Kontakt zur Gruppe hinzugefügt"
 
-#: src/Module/Group.php:121
+#: src/Module/Group.php:125
 msgid "Unable to remove the contact from the group."
 msgstr "Konnte den Kontakt nicht aus der Gruppe entfernen"
 
-#: src/Module/Group.php:124
+#: src/Module/Group.php:128
 msgid "Contact successfully removed from group."
 msgstr "Kontakt aus Gruppe entfernt"
 
-#: src/Module/Group.php:127
-msgid "Unknown group command."
-msgstr "Unbekannter Gruppen Befehl"
-
-#: src/Module/Group.php:130
+#: src/Module/Group.php:132
 msgid "Bad request."
 msgstr "Ungültige Anfrage."
 
-#: src/Module/Group.php:169
+#: src/Module/Group.php:171
 msgid "Save Group"
 msgstr "Gruppe speichern"
 
-#: src/Module/Group.php:170
+#: src/Module/Group.php:172
 msgid "Filter"
 msgstr "Filter"
 
-#: src/Module/Group.php:176
+#: src/Module/Group.php:178
 msgid "Create a group of contacts/friends."
 msgstr "Eine Kontaktgruppe anlegen."
 
-#: src/Module/Group.php:218
+#: src/Module/Group.php:220
 msgid "Unable to remove group."
 msgstr "Konnte die Gruppe nicht entfernen."
 
-#: src/Module/Group.php:269
+#: src/Module/Group.php:271
 msgid "Delete Group"
 msgstr "Gruppe löschen"
 
-#: src/Module/Group.php:279
+#: src/Module/Group.php:281
 msgid "Edit Group Name"
 msgstr "Gruppen Name bearbeiten"
 
-#: src/Module/Group.php:289
+#: src/Module/Group.php:291
 msgid "Members"
 msgstr "Mitglieder"
 
-#: src/Module/Group.php:292
+#: src/Module/Group.php:294
 msgid "Group is empty"
 msgstr "Gruppe ist leer"
 
-#: src/Module/Group.php:305
+#: src/Module/Group.php:307
 msgid "Remove contact from group"
 msgstr "Entferne den Kontakt aus der Gruppe"
 
-#: src/Module/Group.php:326
+#: src/Module/Group.php:328
 msgid "Click on a contact to add or remove."
 msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"
 
-#: src/Module/Group.php:340
+#: src/Module/Group.php:342
 msgid "Add contact to group"
 msgstr "Füge den Kontakt zur Gruppe hinzu"
 
@@ -8147,156 +8121,156 @@ msgstr "Hilfe:"
 msgid "Welcome to %s"
 msgstr "Willkommen zu %s"
 
-#: src/Module/Install.php:196
+#: src/Module/Install.php:195
 msgid "Friendica Communications Server - Setup"
 msgstr "Friendica Komunikationsserver - Installation"
 
-#: src/Module/Install.php:207
+#: src/Module/Install.php:206
 msgid "System check"
 msgstr "Systemtest"
 
-#: src/Module/Install.php:209 src/Module/Install.php:266
-#: src/Module/Install.php:349
+#: src/Module/Install.php:208 src/Module/Install.php:265
+#: src/Module/Install.php:348
 msgid "Requirement not satisfied"
 msgstr "Anforderung ist nicht erfüllt"
 
-#: src/Module/Install.php:210
+#: src/Module/Install.php:209
 msgid "Optional requirement not satisfied"
 msgstr "Optionale Anforderung ist nicht erfüllt"
 
-#: src/Module/Install.php:211
+#: src/Module/Install.php:210
 msgid "OK"
 msgstr "Ok"
 
-#: src/Module/Install.php:216
+#: src/Module/Install.php:215
 msgid "Check again"
 msgstr "Noch einmal testen"
 
-#: src/Module/Install.php:231
+#: src/Module/Install.php:230
 msgid "Base settings"
 msgstr "Grundeinstellungen"
 
-#: src/Module/Install.php:238
+#: src/Module/Install.php:237
 msgid "Host name"
 msgstr "Host Name"
 
-#: src/Module/Install.php:240
+#: src/Module/Install.php:239
 msgid ""
 "Overwrite this field in case the determinated hostname isn't right, "
 "otherweise leave it as is."
 msgstr "Sollte der ermittelte Hostname nicht stimmen, korrigiere bitte den Eintrag."
 
-#: src/Module/Install.php:243
+#: src/Module/Install.php:242
 msgid "Base path to installation"
 msgstr "Basis-Pfad zur Installation"
 
-#: src/Module/Install.php:245
+#: src/Module/Install.php:244
 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."
 
-#: src/Module/Install.php:248
+#: src/Module/Install.php:247
 msgid "Sub path of the URL"
 msgstr "Unterverzeichnis (Pfad) der URL"
 
-#: src/Module/Install.php:250
+#: src/Module/Install.php:249
 msgid ""
 "Overwrite this field in case the sub path determination isn't right, "
 "otherwise leave it as is. Leaving this field blank means the installation is"
 " at the base URL without sub path."
 msgstr "Sollte das ermittelte Unterverzeichnis der Friendica Installation nicht stimmen, korrigiere es bitte. Wenn dieses Feld leer ist, bedeutet dies, dass die Installation direkt unter der Basis-URL installiert wird."
 
-#: src/Module/Install.php:261
+#: src/Module/Install.php:260
 msgid "Database connection"
 msgstr "Datenbankverbindung"
 
-#: src/Module/Install.php:262
+#: src/Module/Install.php:261
 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."
 
-#: src/Module/Install.php:263
+#: src/Module/Install.php:262
 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."
 
-#: src/Module/Install.php:264
+#: src/Module/Install.php:263
 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."
 
-#: src/Module/Install.php:273
+#: src/Module/Install.php:272
 msgid "Database Server Name"
 msgstr "Datenbank-Server"
 
-#: src/Module/Install.php:278
+#: src/Module/Install.php:277
 msgid "Database Login Name"
 msgstr "Datenbank-Nutzer"
 
-#: src/Module/Install.php:284
+#: src/Module/Install.php:283
 msgid "Database Login Password"
 msgstr "Datenbank-Passwort"
 
-#: src/Module/Install.php:286
+#: src/Module/Install.php:285
 msgid "For security reasons the password must not be empty"
 msgstr "Aus Sicherheitsgründen darf das Passwort nicht leer sein."
 
-#: src/Module/Install.php:289
+#: src/Module/Install.php:288
 msgid "Database Name"
 msgstr "Datenbank-Name"
 
-#: src/Module/Install.php:293 src/Module/Install.php:323
+#: src/Module/Install.php:292 src/Module/Install.php:322
 msgid "Please select a default timezone for your website"
 msgstr "Bitte wähle die Standardzeitzone Deiner Webseite"
 
-#: src/Module/Install.php:308
+#: src/Module/Install.php:307
 msgid "Site settings"
 msgstr "Server-Einstellungen"
 
-#: src/Module/Install.php:318
+#: src/Module/Install.php:317
 msgid "Site administrator email address"
 msgstr "E-Mail-Adresse des Administrators"
 
-#: src/Module/Install.php:320
+#: src/Module/Install.php:319
 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."
 
-#: src/Module/Install.php:327
+#: src/Module/Install.php:326
 msgid "System Language:"
 msgstr "Systemsprache:"
 
-#: src/Module/Install.php:329
+#: src/Module/Install.php:328
 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"
 
-#: src/Module/Install.php:341
+#: src/Module/Install.php:340
 msgid "Your Friendica site database has been installed."
 msgstr "Die Datenbank Deiner Friendica-Seite wurde installiert."
 
-#: src/Module/Install.php:351
+#: src/Module/Install.php:350
 msgid "Installation finished"
 msgstr "Installation abgeschlossen"
 
-#: src/Module/Install.php:371
+#: src/Module/Install.php:370
 msgid "<h1>What next</h1>"
 msgstr "<h1>Wie geht es weiter?</h1>"
 
-#: src/Module/Install.php:372
+#: src/Module/Install.php:371
 msgid ""
 "IMPORTANT: You will need to [manually] setup a scheduled task for the "
 "worker."
 msgstr "Wichtig: du musst [manuell] einen Cronjob (o.ä.) für den Worker einrichten."
 
-#: src/Module/Install.php:375
+#: src/Module/Install.php:374
 #, php-format
 msgid ""
 "Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
@@ -8461,64 +8435,64 @@ msgstr "Diese Friendica Instanz befindet sich derzeit im Wartungsmodus, entweder
 msgid "A Decentralized Social Network"
 msgstr "Ein dezentrales Soziales Netzwerk"
 
-#: src/Module/Notifications/Introductions.php:93
+#: src/Module/Notifications/Introductions.php:97
 msgid "Show Ignored Requests"
 msgstr "Zeige ignorierte Anfragen"
 
-#: src/Module/Notifications/Introductions.php:93
+#: src/Module/Notifications/Introductions.php:97
 msgid "Hide Ignored Requests"
 msgstr "Verberge ignorierte Anfragen"
 
-#: src/Module/Notifications/Introductions.php:109
-#: src/Module/Notifications/Introductions.php:172
+#: src/Module/Notifications/Introductions.php:113
+#: src/Module/Notifications/Introductions.php:176
 msgid "Notification type:"
 msgstr "Art der Benachrichtigung:"
 
-#: src/Module/Notifications/Introductions.php:112
+#: src/Module/Notifications/Introductions.php:116
 msgid "Suggested by:"
 msgstr "Vorgeschlagen von:"
 
-#: src/Module/Notifications/Introductions.php:137
+#: src/Module/Notifications/Introductions.php:141
 msgid "Claims to be known to you: "
 msgstr "Behauptet, dich zu kennen: "
 
-#: src/Module/Notifications/Introductions.php:138
-#: src/Module/OAuth/Acknowledge.php:48 src/Module/Register.php:127
+#: src/Module/Notifications/Introductions.php:142
+#: src/Module/OAuth/Acknowledge.php:54 src/Module/Register.php:131
 msgid "No"
 msgstr "Nein"
 
-#: src/Module/Notifications/Introductions.php:146
+#: src/Module/Notifications/Introductions.php:150
 msgid "Shall your connection be bidirectional or not?"
 msgstr "Soll die Verbindung beidseitig sein oder nicht?"
 
-#: src/Module/Notifications/Introductions.php:147
+#: src/Module/Notifications/Introductions.php:151
 #, 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."
 
-#: src/Module/Notifications/Introductions.php:148
+#: src/Module/Notifications/Introductions.php:152
 #, 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."
 
-#: src/Module/Notifications/Introductions.php:150
+#: src/Module/Notifications/Introductions.php:154
 msgid "Friend"
 msgstr "Kontakt"
 
-#: src/Module/Notifications/Introductions.php:151
+#: src/Module/Notifications/Introductions.php:155
 msgid "Subscriber"
 msgstr "Abonnent"
 
-#: src/Module/Notifications/Introductions.php:210
+#: src/Module/Notifications/Introductions.php:214
 msgid "No introductions."
 msgstr "Keine Kontaktanfragen."
 
-#: src/Module/Notifications/Introductions.php:211
-#: src/Module/Notifications/Notifications.php:135
+#: src/Module/Notifications/Introductions.php:215
+#: src/Module/Notifications/Notifications.php:134
 #, php-format
 msgid "No more %s notifications."
 msgstr "Keine weiteren %s-Benachrichtigungen"
@@ -8527,31 +8501,31 @@ msgstr "Keine weiteren %s-Benachrichtigungen"
 msgid "You must be logged in to show this page."
 msgstr "Du musst eingeloggt sein damit diese Seite angezeigt werden kann."
 
-#: src/Module/Notifications/Notifications.php:66
+#: src/Module/Notifications/Notifications.php:65
 msgid "Network Notifications"
 msgstr "Netzwerkbenachrichtigungen"
 
-#: src/Module/Notifications/Notifications.php:72
+#: src/Module/Notifications/Notifications.php:71
 msgid "System Notifications"
 msgstr "Systembenachrichtigungen"
 
-#: src/Module/Notifications/Notifications.php:78
+#: src/Module/Notifications/Notifications.php:77
 msgid "Personal Notifications"
 msgstr "Persönliche Benachrichtigungen"
 
-#: src/Module/Notifications/Notifications.php:84
+#: src/Module/Notifications/Notifications.php:83
 msgid "Home Notifications"
 msgstr "Pinnwandbenachrichtigungen"
 
-#: src/Module/Notifications/Notifications.php:140
+#: src/Module/Notifications/Notifications.php:139
 msgid "Show unread"
 msgstr "Ungelesene anzeigen"
 
-#: src/Module/OAuth/Acknowledge.php:44
+#: src/Module/OAuth/Acknowledge.php:50
 msgid "Authorize application connection"
 msgstr "Verbindung der Applikation autorisieren"
 
-#: src/Module/OAuth/Acknowledge.php:46
+#: src/Module/OAuth/Acknowledge.php:52
 msgid ""
 "Do you want to authorize this application to access your posts and contacts,"
 " and/or create new posts for you?"
@@ -8561,7 +8535,7 @@ msgstr "Möchtest du dieser Anwendung den Zugriff auf Deine Beiträge und Kontak
 msgid "Unsupported or missing response type"
 msgstr "Der Typ der Antwort fehlt oder wird nicht unterstützt"
 
-#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:65
+#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:72
 msgid "Incomplete request data"
 msgstr "Daten der Anfrage sind nicht vollständig"
 
@@ -8572,24 +8546,24 @@ msgid ""
 "close this window: %s"
 msgstr "Bitte kopiere den folgenden Authentifizierungscode in deine App und schließe dieses Fenster: %s"
 
-#: src/Module/OAuth/Token.php:89
+#: src/Module/OAuth/Token.php:96
 msgid "Unsupported or missing grant type"
 msgstr "Der Grant-Typ fehlt oder wird nicht unterstützt"
 
-#: src/Module/PermissionTooltip.php:25
+#: src/Module/PermissionTooltip.php:44
 #, php-format
 msgid "Wrong type \"%s\", expected one of: %s"
 msgstr "Falscher Typ \"%s\", hatte einen der Folgenden erwartet: %s"
 
-#: src/Module/PermissionTooltip.php:42
+#: src/Module/PermissionTooltip.php:61
 msgid "Model not found"
 msgstr "Model nicht gefunden"
 
-#: src/Module/PermissionTooltip.php:64
+#: src/Module/PermissionTooltip.php:83
 msgid "Remote privacy information not available."
 msgstr "Entfernte Privatsphäreneinstellungen nicht verfügbar."
 
-#: src/Module/PermissionTooltip.php:73
+#: src/Module/PermissionTooltip.php:92
 msgid "Visible to:"
 msgstr "Sichtbar für:"
 
@@ -8670,19 +8644,19 @@ msgstr "Betrachten als"
 
 #: src/Module/Profile/Profile.php:326 src/Module/Profile/Profile.php:329
 #: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68
-#: src/Protocol/Feed.php:953 src/Protocol/OStatus.php:1242
+#: src/Protocol/Feed.php:985 src/Protocol/OStatus.php:1242
 #, php-format
 msgid "%s's timeline"
 msgstr "Timeline von %s"
 
 #: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:66
-#: src/Protocol/Feed.php:957 src/Protocol/OStatus.php:1246
+#: src/Protocol/Feed.php:989 src/Protocol/OStatus.php:1246
 #, php-format
 msgid "%s's posts"
 msgstr "Beiträge von %s"
 
 #: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:67
-#: src/Protocol/Feed.php:960 src/Protocol/OStatus.php:1249
+#: src/Protocol/Feed.php:992 src/Protocol/OStatus.php:1249
 #, php-format
 msgid "%s's comments"
 msgstr "Kommentare von %s"
@@ -8699,163 +8673,163 @@ msgstr "Inhalt"
 msgid "Remove post"
 msgstr "Beitrag entfernen"
 
-#: src/Module/Register.php:80
+#: src/Module/Register.php:84
 msgid "Only parent users can create additional accounts."
 msgstr "Zusätzliche Nutzerkonten können nur von Verwaltern angelegt werden."
 
-#: src/Module/Register.php:112
+#: src/Module/Register.php:116
 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."
 
-#: src/Module/Register.php:113
+#: src/Module/Register.php:117
 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."
 
-#: src/Module/Register.php:114
+#: src/Module/Register.php:118
 msgid "Your OpenID (optional): "
 msgstr "Deine OpenID (optional): "
 
-#: src/Module/Register.php:123
+#: src/Module/Register.php:127
 msgid "Include your profile in member directory?"
 msgstr "Soll dein Profil im Nutzerverzeichnis angezeigt werden?"
 
-#: src/Module/Register.php:144
+#: src/Module/Register.php:148
 msgid "Note for the admin"
 msgstr "Hinweis für den Admin"
 
-#: src/Module/Register.php:144
+#: src/Module/Register.php:148
 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."
 
-#: src/Module/Register.php:145
+#: src/Module/Register.php:149
 msgid "Membership on this site is by invitation only."
 msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
 
-#: src/Module/Register.php:146
+#: src/Module/Register.php:150
 msgid "Your invitation code: "
 msgstr "Dein Ein­la­dungs­code"
 
-#: src/Module/Register.php:154
+#: src/Module/Register.php:158
 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):"
 
-#: src/Module/Register.php:155
+#: src/Module/Register.php:159
 msgid ""
 "Your Email Address: (Initial information will be send there, so this has to "
 "be an existing address.)"
 msgstr "Deine E-Mail Adresse (Informationen zur Registrierung werden an diese Adresse gesendet, darum muss sie existieren.)"
 
-#: src/Module/Register.php:156
+#: src/Module/Register.php:160
 msgid "Please repeat your e-mail address:"
 msgstr "Bitte wiederhole deine E-Mail Adresse"
 
-#: src/Module/Register.php:158
+#: src/Module/Register.php:162
 msgid "Leave empty for an auto generated password."
 msgstr "Leer lassen, um das Passwort automatisch zu generieren."
 
-#: src/Module/Register.php:160
+#: src/Module/Register.php:164
 #, php-format
 msgid ""
 "Choose a profile nickname. This must begin with a text character. Your "
 "profile address on this site will then be \"<strong>nickname@%s</strong>\"."
 msgstr "Wähle einen Spitznamen für dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse deines Profils auf dieser Seite wird '<strong>spitzname@%s</strong>' sein."
 
-#: src/Module/Register.php:161
+#: src/Module/Register.php:165
 msgid "Choose a nickname: "
 msgstr "Spitznamen wählen: "
 
-#: src/Module/Register.php:170
+#: src/Module/Register.php:174
 msgid "Import your profile to this friendica instance"
 msgstr "Importiere dein Profil auf diese Friendica-Instanz"
 
-#: src/Module/Register.php:177
+#: src/Module/Register.php:181
 msgid "Note: This node explicitly contains adult content"
 msgstr "Hinweis: Dieser Knoten enthält explizit Inhalte für Erwachsene"
 
-#: src/Module/Register.php:179 src/Module/Settings/Delegation.php:155
+#: src/Module/Register.php:183 src/Module/Settings/Delegation.php:155
 msgid "Parent Password:"
 msgstr "Passwort des Verwalters"
 
-#: src/Module/Register.php:179 src/Module/Settings/Delegation.php:155
+#: src/Module/Register.php:183 src/Module/Settings/Delegation.php:155
 msgid ""
 "Please enter the password of the parent account to legitimize your request."
 msgstr "Bitte gib das Passwort des Verwalters ein, um deine Anfrage zu bestätigen."
 
-#: src/Module/Register.php:208
+#: src/Module/Register.php:212
 msgid "Password doesn't match."
 msgstr "Das Passwort stimmt nicht."
 
-#: src/Module/Register.php:214
+#: src/Module/Register.php:218
 msgid "Please enter your password."
 msgstr "Bitte gib dein Passwort an."
 
-#: src/Module/Register.php:256
+#: src/Module/Register.php:260
 msgid "You have entered too much information."
 msgstr "Du hast zu viele Informationen eingegeben."
 
-#: src/Module/Register.php:279
+#: src/Module/Register.php:283
 msgid "Please enter the identical mail address in the second field."
 msgstr "Bitte gib die gleiche E-Mail Adresse noch einmal an."
 
-#: src/Module/Register.php:306
+#: src/Module/Register.php:310
 msgid "The additional account was created."
 msgstr "Das zusätzliche Nutzerkonto wurde angelegt."
 
-#: src/Module/Register.php:331
+#: src/Module/Register.php:335
 msgid ""
 "Registration successful. Please check your email for further instructions."
 msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an dich gesendet."
 
-#: src/Module/Register.php:335
+#: src/Module/Register.php:339
 #, php-format
 msgid ""
 "Failed to send email message. Here your accout details:<br> login: %s<br> "
 "password: %s<br><br>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."
 
-#: src/Module/Register.php:341
+#: src/Module/Register.php:345
 msgid "Registration successful."
 msgstr "Registrierung erfolgreich."
 
-#: src/Module/Register.php:346 src/Module/Register.php:353
+#: src/Module/Register.php:350 src/Module/Register.php:357
 msgid "Your registration can not be processed."
 msgstr "Deine Registrierung konnte nicht verarbeitet werden."
 
-#: src/Module/Register.php:352
+#: src/Module/Register.php:356
 msgid "You have to leave a request note for the admin."
 msgstr "Du musst eine Nachricht für den Administrator als Begründung deiner Anfrage hinterlegen."
 
-#: src/Module/Register.php:398
+#: src/Module/Register.php:402
 msgid "Your registration is pending approval by the site owner."
 msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
 
-#: src/Module/RemoteFollow.php:72
+#: src/Module/RemoteFollow.php:71
 msgid "Profile unavailable."
 msgstr "Profil nicht verfügbar."
 
-#: src/Module/RemoteFollow.php:78
+#: src/Module/RemoteFollow.php:77
 msgid "Invalid locator"
 msgstr "Ungültiger Locator"
 
-#: src/Module/RemoteFollow.php:85
+#: src/Module/RemoteFollow.php:84
 msgid "The provided profile link doesn't seem to be valid"
 msgstr "Der angegebene Profil-Link scheint nicht gültig zu sein."
 
-#: src/Module/RemoteFollow.php:90
+#: src/Module/RemoteFollow.php:89
 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.   "
 
-#: src/Module/RemoteFollow.php:122
+#: src/Module/RemoteFollow.php:121
 msgid "Friend/Connection Request"
 msgstr "Kontaktanfrage"
 
-#: src/Module/RemoteFollow.php:123
+#: src/Module/RemoteFollow.php:122
 #, php-format
 msgid ""
 "Enter your Webfinger address (user@domain.tld) or profile URL here. If this "
@@ -8863,14 +8837,14 @@ msgid ""
 " or <strong>%s</strong> directly on your system."
 msgstr "Gib entweder deine Webfinger- (user@domain.tld) oder die Profil-Adresse an. Wenn dies von deinem System nicht unterstützt wird, folge bitte <strong>%s</strong> oder <strong>%s</strong> direkt von deinem System. "
 
-#: src/Module/RemoteFollow.php:124
+#: src/Module/RemoteFollow.php:123
 #, php-format
 msgid ""
 "If you are not yet a member of the free social web, <a href=\"%s\">follow "
 "this link to find a public Friendica node and join us today</a>."
 msgstr "Solltest du das freie Soziale Netzwerk noch nicht benutzen, kannst du <a href=\"%s\">diesem Link folgen</a> um eine öffentliche Friendica Instanz zu finden um noch heute dem Netzwerk beizutreten."
 
-#: src/Module/RemoteFollow.php:125
+#: src/Module/RemoteFollow.php:124
 msgid "Your Webfinger address or profile URL:"
 msgstr "Deine Webfinger Adresse oder Profil-URL"
 
@@ -8887,15 +8861,15 @@ msgstr "Es ist nur eine Suchanfrage pro Minute für nicht eingeloggte Benutzer g
 msgid "Items tagged with: %s"
 msgstr "Beiträge, die mit %s getaggt sind"
 
-#: src/Module/Search/Saved.php:62
+#: src/Module/Search/Saved.php:58
 msgid "Search term was not saved."
 msgstr "Der Suchbegriff wurde nicht gespeichert."
 
-#: src/Module/Search/Saved.php:65
+#: src/Module/Search/Saved.php:61
 msgid "Search term already saved."
 msgstr "Suche ist bereits gespeichert."
 
-#: src/Module/Search/Saved.php:71
+#: src/Module/Search/Saved.php:67
 msgid "Search term was not removed."
 msgstr "Der Suchbegriff wurde nicht entfernt."
 
@@ -9007,7 +8981,7 @@ msgid ""
 msgstr "<p>Öffne die Zwei-Faktor-Authentifizierungs-App auf deinem Gerät, um einen Authentifizierungscode abzurufen und deine Identität zu überprüfen.</p>"
 
 #: src/Module/Security/TwoFactor/Verify.php:100
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Please enter a code from your authentication app"
 msgstr "Bitte gebe einen Code aus Ihrer Authentifizierungs-App ein"
 
@@ -9434,7 +9408,7 @@ msgstr "wähle ein Foto aus deinen Fotoalben"
 
 #: src/Module/Settings/TwoFactor/AppSpecific.php:64
 #: src/Module/Settings/TwoFactor/Recovery.php:62
-#: src/Module/Settings/TwoFactor/Trusted.php:45
+#: src/Module/Settings/TwoFactor/Trusted.php:65
 #: src/Module/Settings/TwoFactor/Verify.php:68
 msgid "Please enter your password to access this page."
 msgstr "Bitte gib dein Passwort ein, um auf diese Seite zuzugreifen."
@@ -9638,42 +9612,42 @@ msgstr "Generiere neue Wiederherstellungscodes"
 msgid "Next: Verification"
 msgstr "Weiter: Überprüfung"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:62
+#: src/Module/Settings/TwoFactor/Trusted.php:82
 msgid "Trusted browsers successfully removed."
 msgstr "Die vertrauenswürdigen Browser wurden erfolgreich entfernt."
 
-#: src/Module/Settings/TwoFactor/Trusted.php:72
+#: src/Module/Settings/TwoFactor/Trusted.php:92
 msgid "Trusted browser successfully removed."
 msgstr "Der vertrauenswürdige Browser erfolgreich entfernt."
 
-#: src/Module/Settings/TwoFactor/Trusted.php:109
+#: src/Module/Settings/TwoFactor/Trusted.php:133
 msgid "Two-factor Trusted Browsers"
 msgstr "Zwei-Faktor vertrauenswürdige Browser"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:110
+#: src/Module/Settings/TwoFactor/Trusted.php:134
 msgid ""
 "Trusted browsers are individual browsers you chose to skip two-factor "
 "authentication to access Friendica. Please use this feature sparingly, as it"
 " can negate the benefit of two-factor authentication."
 msgstr "Vertrauenswürdige Browser sind spezielle Browser für die du entscheidest, dass die Zwei-Faktor Authentifikation übersprungen werden soll. Bitte verwende diese Option sparsam, da sie die Vorteile der 2FA aufhebt."
 
-#: src/Module/Settings/TwoFactor/Trusted.php:111
+#: src/Module/Settings/TwoFactor/Trusted.php:135
 msgid "Device"
 msgstr "Gerät"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:112
+#: src/Module/Settings/TwoFactor/Trusted.php:136
 msgid "OS"
 msgstr "OS"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:114
+#: src/Module/Settings/TwoFactor/Trusted.php:138
 msgid "Trusted"
 msgstr "Vertrauenswürdig"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:115
+#: src/Module/Settings/TwoFactor/Trusted.php:139
 msgid "Last Use"
 msgstr "Zuletzt verwendet"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:117
+#: src/Module/Settings/TwoFactor/Trusted.php:141
 msgid "Remove All"
 msgstr "Alle entfernen"
 
@@ -9681,7 +9655,7 @@ msgstr "Alle entfernen"
 msgid "Two-factor authentication successfully activated."
 msgstr "Zwei-Faktor-Authentifizierung erfolgreich aktiviert."
 
-#: src/Module/Settings/TwoFactor/Verify.php:123
+#: src/Module/Settings/TwoFactor/Verify.php:124
 #, php-format
 msgid ""
 "<p>Or you can submit the authentication settings manually:</p>\n"
@@ -9701,24 +9675,24 @@ msgid ""
 "</dl>"
 msgstr "<p>Oder du kannst die Authentifizierungseinstellungen manuell übermitteln:</p>\n<dl>\n\tVerursacher\n\t<dd>%s</dd>\n\t<dt>Kontoname</dt>\n\t<dd>%s</dd>\n\t<dt>Geheimer Schlüssel</dt>\n\t<dd>%s</dd>\n\t<dt>Typ</dt>\n\t<dd>Zeitbasiert</dd>\n\t<dt>Anzahl an Ziffern</dt>\n\t<dd>6</dd>\n\t<dt>Hashing-Algorithmus</dt>\n\t<dd>SHA-1</dd>\n</dl>"
 
-#: src/Module/Settings/TwoFactor/Verify.php:143
+#: src/Module/Settings/TwoFactor/Verify.php:144
 msgid "Two-factor code verification"
 msgstr "Überprüfung des Zwei-Faktor-Codes"
 
-#: src/Module/Settings/TwoFactor/Verify.php:145
+#: src/Module/Settings/TwoFactor/Verify.php:146
 msgid ""
 "<p>Please scan this QR Code with your authenticator app and submit the "
 "provided code.</p>"
 msgstr "<p>Bitte scanne diesen QR-Code mit deiner Authentifikator-App und übermittele den bereitgestellten Code.</p>"
 
-#: src/Module/Settings/TwoFactor/Verify.php:147
+#: src/Module/Settings/TwoFactor/Verify.php:148
 #, php-format
 msgid ""
 "<p>Or you can open the following URL in your mobile device:</p><p><a "
 "href=\"%s\">%s</a></p>"
 msgstr "<p>Oder du kannst die folgende URL in deinem Mobilgerät öffnen:</p><p><a href=\"%s\">%s</a></p>"
 
-#: src/Module/Settings/TwoFactor/Verify.php:154
+#: src/Module/Settings/TwoFactor/Verify.php:155
 msgid "Verify code and enable two-factor authentication"
 msgstr "Überprüfe den Code und aktiviere die Zwei-Faktor-Authentifizierung"
 
@@ -9762,7 +9736,7 @@ msgstr "Stack trace:"
 msgid "Exception thrown in %s:%d"
 msgstr "Exception thrown in %s:%d"
 
-#: src/Module/Tos.php:58 src/Module/Tos.php:92
+#: src/Module/Tos.php:57 src/Module/Tos.php:91
 msgid ""
 "At the time of registration, and for providing communications between the "
 "user account and their contacts, the user has to provide a display name (pen"
@@ -9775,14 +9749,14 @@ msgid ""
 "settings, it is not necessary for communication."
 msgstr "Zum Zwecke der Registrierung und um die Kommunikation zwischen dem Nutzer und seinen Kontakten zu gewährleisten, muß der Nutzer einen Namen (auch Pseudonym) und einen Nutzernamen (Spitzname) sowie eine funktionierende E-Mail-Adresse angeben. Der Name ist auf der Profilseite für alle Nutzer sichtbar, auch wenn die Profildetails nicht angezeigt werden.\nDie E-Mail-Adresse wird nur zur Benachrichtigung des Nutzers verwendet, sie wird nirgends angezeigt. Die Anzeige des Nutzerkontos im Server-Verzeichnis bzw. dem weltweiten Verzeichnis erfolgt gemäß den Einstellungen des Nutzers, sie ist zur Kommunikation nicht zwingend notwendig."
 
-#: src/Module/Tos.php:59 src/Module/Tos.php:93
+#: src/Module/Tos.php:58 src/Module/Tos.php:92
 msgid ""
 "This data is required for communication and is passed on to the nodes of the"
 " communication partners and is stored there. Users can enter additional "
 "private data that may be transmitted to the communication partners accounts."
 msgstr "Diese Daten sind für die Kommunikation notwendig und werden an die Knoten der Kommunikationspartner übermittelt und dort gespeichert. Nutzer können weitere, private Angaben machen, die ebenfalls an die verwendeten Server der Kommunikationspartner übermittelt werden können."
 
-#: src/Module/Tos.php:60 src/Module/Tos.php:94
+#: src/Module/Tos.php:59 src/Module/Tos.php:93
 #, php-format
 msgid ""
 "At any point in time a logged in user can export their account data from the"
@@ -9793,7 +9767,7 @@ msgid ""
 "the communication partners."
 msgstr "Angemeldete Nutzer können ihre Nutzerdaten jederzeit von den <a href=\"%1$s/settings/userexport\">Kontoeinstellungen</a> aus exportieren. Wenn ein Nutzer wünscht das Nutzerkonto zu löschen, so ist dies jederzeit unter <a href=\"%1$s/removeme\">%1$s/removeme</a> möglich. Die Löschung des Nutzerkontos ist permanent. Die Löschung der Daten wird auch von den Knoten der Kommunikationspartner angefordert."
 
-#: src/Module/Tos.php:63 src/Module/Tos.php:91
+#: src/Module/Tos.php:62 src/Module/Tos.php:90
 msgid "Privacy Statement"
 msgstr "Datenschutzerklärung"
 
@@ -10015,311 +9989,311 @@ msgstr "Kontakt-/Freundschaftsanfrage"
 msgid "New Follower"
 msgstr "Neuer Bewunderer"
 
-#: src/Navigation/Notifications/Factory/Notification.php:74
+#: src/Navigation/Notifications/Factory/Notification.php:93
 #, php-format
 msgid "%1$s wants to follow you"
 msgstr "%1$s möchte dir folgen"
 
-#: src/Navigation/Notifications/Factory/Notification.php:76
+#: src/Navigation/Notifications/Factory/Notification.php:95
 #, php-format
 msgid "%1$s had started following you"
 msgstr "%1$s hat angefangen dir zu folgen"
 
-#: src/Navigation/Notifications/Factory/Notification.php:141
+#: src/Navigation/Notifications/Factory/Notification.php:160
 #, php-format
 msgid "%1$s liked your comment %2$s"
 msgstr "%1$s mag deinen Kommentar %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:144
+#: src/Navigation/Notifications/Factory/Notification.php:163
 #, php-format
 msgid "%1$s liked your post %2$s"
 msgstr "%1$s mag deinen Beitrag %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:151
+#: src/Navigation/Notifications/Factory/Notification.php:170
 #, php-format
 msgid "%1$s disliked your comment %2$s"
 msgstr "%1$s mag deinen Kommentar %2$s nicht"
 
-#: src/Navigation/Notifications/Factory/Notification.php:154
+#: src/Navigation/Notifications/Factory/Notification.php:173
 #, php-format
 msgid "%1$s disliked your post %2$s"
 msgstr "%1$s mag deinen Beitrag %2$s nicht"
 
-#: src/Navigation/Notifications/Factory/Notification.php:161
+#: src/Navigation/Notifications/Factory/Notification.php:180
 #, php-format
 msgid "%1$s shared your comment %2$s"
 msgstr "%1$s hat deinen Kommentar %2$s geteilt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:164
+#: src/Navigation/Notifications/Factory/Notification.php:183
 #, php-format
 msgid "%1$s shared your post %2$s"
 msgstr "%1$s hat deinen Beitrag %2$s geteilt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:171
+#: src/Navigation/Notifications/Factory/Notification.php:190
 #, php-format
 msgid "%1$s tagged you on %2$s"
 msgstr "%1$s erwähnte dich auf %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:175
+#: src/Navigation/Notifications/Factory/Notification.php:194
 #, php-format
 msgid "%1$s replied to you on %2$s"
 msgstr "%1$s hat dir auf %2$s geantwortet"
 
-#: src/Navigation/Notifications/Factory/Notification.php:179
+#: src/Navigation/Notifications/Factory/Notification.php:198
 #, php-format
 msgid "%1$s commented in your thread %2$s"
 msgstr "%1$s hat deine Unterhaltung %2$s kommentiert"
 
-#: src/Navigation/Notifications/Factory/Notification.php:183
+#: src/Navigation/Notifications/Factory/Notification.php:202
 #, php-format
 msgid "%1$s commented on your comment %2$s"
 msgstr "%1$s hat deinen Kommentar %2$s kommentiert"
 
-#: src/Navigation/Notifications/Factory/Notification.php:189
+#: src/Navigation/Notifications/Factory/Notification.php:208
 #, php-format
 msgid "%1$s commented in their thread %2$s"
 msgstr "%1$s hat in der eigenen Unterhaltung %2$s kommentiert"
 
-#: src/Navigation/Notifications/Factory/Notification.php:191
+#: src/Navigation/Notifications/Factory/Notification.php:210
 #, php-format
 msgid "%1$s commented in their thread"
 msgstr "%1$s kommentierte in der eigenen Unterhaltung"
 
-#: src/Navigation/Notifications/Factory/Notification.php:193
+#: src/Navigation/Notifications/Factory/Notification.php:212
 #, php-format
 msgid "%1$s commented in the thread %2$s from %3$s"
 msgstr "%1$s hat in der Unterhaltung %2$s von %3$s kommentiert"
 
-#: src/Navigation/Notifications/Factory/Notification.php:195
+#: src/Navigation/Notifications/Factory/Notification.php:214
 #, php-format
 msgid "%1$s commented in the thread from %3$s"
 msgstr "%1$s hat in der Unterhaltung von %3$s kommentiert"
 
-#: src/Navigation/Notifications/Factory/Notification.php:200
+#: src/Navigation/Notifications/Factory/Notification.php:219
 #, php-format
 msgid "%1$s commented on your thread %2$s"
 msgstr "%1$s hat in deiner Unterhaltung %2$s kommentiert"
 
-#: src/Navigation/Notifications/Factory/Notification.php:205
+#: src/Navigation/Notifications/Factory/Notification.php:224
 #, php-format
 msgid "%1$s shared the post %2$s from %3$s"
 msgstr "%1$s hat den Beitrag %2$s von %3$s geteilt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:207
+#: src/Navigation/Notifications/Factory/Notification.php:226
 #, php-format
 msgid "%1$s shared a post from %3$s"
 msgstr "%1$s hat einen Beitrag von %3$s geteilt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:209
+#: src/Navigation/Notifications/Factory/Notification.php:228
 #, php-format
 msgid "%1$s shared the post %2$s"
 msgstr "%1$s hat den Beitrag %2$s geteilt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:211
+#: src/Navigation/Notifications/Factory/Notification.php:230
 #, php-format
 msgid "%1$s shared a post"
 msgstr "%1$s hat einen Beitrag geteilt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:192
-#: src/Navigation/Notifications/Repository/Notify.php:675
+#: src/Navigation/Notifications/Repository/Notify.php:211
+#: src/Navigation/Notifications/Repository/Notify.php:694
 msgid "[Friendica:Notify]"
 msgstr "[Friendica Meldung]"
 
-#: src/Navigation/Notifications/Repository/Notify.php:256
+#: src/Navigation/Notifications/Repository/Notify.php:275
 #, php-format
 msgid "%s New mail received at %s"
 msgstr "%sNeue Nachricht auf %s empfangen"
 
-#: src/Navigation/Notifications/Repository/Notify.php:258
+#: src/Navigation/Notifications/Repository/Notify.php:277
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 msgid "a private message"
 msgstr "eine private Nachricht"
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 #, php-format
 msgid "%1$s sent you %2$s."
 msgstr "%1$s schickte dir %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:261
+#: src/Navigation/Notifications/Repository/Notify.php:280
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:292
+#: src/Navigation/Notifications/Repository/Notify.php:311
 #, php-format
 msgid "%1$s commented on %2$s's %3$s %4$s"
 msgstr "%1$s kommentierte %2$s's %3$s%4$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:297
+#: src/Navigation/Notifications/Repository/Notify.php:316
 #, php-format
 msgid "%1$s commented on your %2$s %3$s"
 msgstr "%1$s kommentierte auf  (%2$s) %3$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:301
+#: src/Navigation/Notifications/Repository/Notify.php:320
 #, php-format
 msgid "%1$s commented on their %2$s %3$s"
 msgstr "%1$s hat den eigenen %2$s %3$s kommentiert"
 
-#: src/Navigation/Notifications/Repository/Notify.php:305
-#: src/Navigation/Notifications/Repository/Notify.php:710
+#: src/Navigation/Notifications/Repository/Notify.php:324
+#: src/Navigation/Notifications/Repository/Notify.php:729
 #, php-format
 msgid "%1$s Comment to conversation #%2$d by %3$s"
 msgstr "%1$sKommentar von %3$s auf Unterhaltung %2$d"
 
-#: src/Navigation/Notifications/Repository/Notify.php:307
+#: src/Navigation/Notifications/Repository/Notify.php:326
 #, php-format
 msgid "%s commented on an item/conversation you have been following."
 msgstr "%s hat einen Beitrag kommentiert, dem du folgst."
 
-#: src/Navigation/Notifications/Repository/Notify.php:311
-#: src/Navigation/Notifications/Repository/Notify.php:326
+#: src/Navigation/Notifications/Repository/Notify.php:330
 #: src/Navigation/Notifications/Repository/Notify.php:345
-#: src/Navigation/Notifications/Repository/Notify.php:725
+#: src/Navigation/Notifications/Repository/Notify.php:364
+#: src/Navigation/Notifications/Repository/Notify.php:744
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:318
+#: src/Navigation/Notifications/Repository/Notify.php:337
 #, php-format
 msgid "%s %s posted to your profile wall"
 msgstr "%s%s hat auf deine Pinnwand gepostet"
 
-#: src/Navigation/Notifications/Repository/Notify.php:320
+#: src/Navigation/Notifications/Repository/Notify.php:339
 #, php-format
 msgid "%1$s posted to your profile wall at %2$s"
 msgstr "%1$s schrieb um %2$s auf Deine Pinnwand"
 
-#: src/Navigation/Notifications/Repository/Notify.php:321
+#: src/Navigation/Notifications/Repository/Notify.php:340
 #, 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"
 
-#: src/Navigation/Notifications/Repository/Notify.php:333
+#: src/Navigation/Notifications/Repository/Notify.php:352
 #, php-format
 msgid "%1$s %2$s poked you"
 msgstr "%1$s%2$shat dich angestubst"
 
-#: src/Navigation/Notifications/Repository/Notify.php:335
+#: src/Navigation/Notifications/Repository/Notify.php:354
 #, php-format
 msgid "%1$s poked you at %2$s"
 msgstr "%1$s hat dich auf %2$s angestupst"
 
-#: src/Navigation/Notifications/Repository/Notify.php:336
+#: src/Navigation/Notifications/Repository/Notify.php:355
 #, php-format
 msgid "%1$s [url=%2$s]poked you[/url]."
 msgstr "%1$s [url=%2$s]hat dich angestupst[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:353
+#: src/Navigation/Notifications/Repository/Notify.php:372
 #, php-format
 msgid "%s Introduction received"
 msgstr "%sVorstellung erhalten"
 
-#: src/Navigation/Notifications/Repository/Notify.php:355
+#: src/Navigation/Notifications/Repository/Notify.php:374
 #, 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"
 
-#: src/Navigation/Notifications/Repository/Notify.php:356
+#: src/Navigation/Notifications/Repository/Notify.php:375
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:361
-#: src/Navigation/Notifications/Repository/Notify.php:407
+#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:426
 #, php-format
 msgid "You may visit their profile at %s"
 msgstr "Hier kannst du das Profil betrachten: %s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:363
+#: src/Navigation/Notifications/Repository/Notify.php:382
 #, php-format
 msgid "Please visit %s to approve or reject the introduction."
 msgstr "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."
 
-#: src/Navigation/Notifications/Repository/Notify.php:370
+#: src/Navigation/Notifications/Repository/Notify.php:389
 #, php-format
 msgid "%s A new person is sharing with you"
 msgstr "%sEine neue Person teilt nun mit dir"
 
-#: src/Navigation/Notifications/Repository/Notify.php:372
-#: src/Navigation/Notifications/Repository/Notify.php:373
+#: src/Navigation/Notifications/Repository/Notify.php:391
+#: src/Navigation/Notifications/Repository/Notify.php:392
 #, php-format
 msgid "%1$s is sharing with you at %2$s"
 msgstr "%1$s teilt mit dir auf %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:399
 #, php-format
 msgid "%s You have a new follower"
 msgstr "%sDu hast einen neuen Kontakt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:382
-#: src/Navigation/Notifications/Repository/Notify.php:383
+#: src/Navigation/Notifications/Repository/Notify.php:401
+#: src/Navigation/Notifications/Repository/Notify.php:402
 #, php-format
 msgid "You have a new follower at %2$s : %1$s"
 msgstr "Du hast einen neuen Kontakt auf %2$s: %1$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:396
+#: src/Navigation/Notifications/Repository/Notify.php:415
 #, php-format
 msgid "%s Friend suggestion received"
 msgstr "%sKontaktvorschlag erhalten"
 
-#: src/Navigation/Notifications/Repository/Notify.php:398
+#: src/Navigation/Notifications/Repository/Notify.php:417
 #, 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"
 
-#: src/Navigation/Notifications/Repository/Notify.php:399
+#: src/Navigation/Notifications/Repository/Notify.php:418
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:405
+#: src/Navigation/Notifications/Repository/Notify.php:424
 msgid "Name:"
 msgstr "Name:"
 
-#: src/Navigation/Notifications/Repository/Notify.php:406
+#: src/Navigation/Notifications/Repository/Notify.php:425
 msgid "Photo:"
 msgstr "Foto:"
 
-#: src/Navigation/Notifications/Repository/Notify.php:409
+#: src/Navigation/Notifications/Repository/Notify.php:428
 #, php-format
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."
 
-#: src/Navigation/Notifications/Repository/Notify.php:417
-#: src/Navigation/Notifications/Repository/Notify.php:432
+#: src/Navigation/Notifications/Repository/Notify.php:436
+#: src/Navigation/Notifications/Repository/Notify.php:451
 #, php-format
 msgid "%s Connection accepted"
 msgstr "%sKontaktanfrage bestätigt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:419
-#: src/Navigation/Notifications/Repository/Notify.php:434
+#: src/Navigation/Notifications/Repository/Notify.php:438
+#: src/Navigation/Notifications/Repository/Notify.php:453
 #, php-format
 msgid "'%1$s' has accepted your connection request at %2$s"
 msgstr "'%1$s' hat Deine Kontaktanfrage auf  %2$s bestätigt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:420
-#: src/Navigation/Notifications/Repository/Notify.php:435
+#: src/Navigation/Notifications/Repository/Notify.php:439
+#: src/Navigation/Notifications/Repository/Notify.php:454
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:425
+#: src/Navigation/Notifications/Repository/Notify.php:444
 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 E-Mails ohne Einschränkungen austauschen."
 
-#: src/Navigation/Notifications/Repository/Notify.php:427
+#: src/Navigation/Notifications/Repository/Notify.php:446
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:440
+#: src/Navigation/Notifications/Repository/Notify.php:459
 #, php-format
 msgid ""
 "'%1$s' has chosen to accept you a fan, which restricts some forms of "
@@ -10328,33 +10302,33 @@ msgid ""
 "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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:442
+#: src/Navigation/Notifications/Repository/Notify.php:461
 #, 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. "
 
-#: src/Navigation/Notifications/Repository/Notify.php:444
+#: src/Navigation/Notifications/Repository/Notify.php:463
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:454
+#: src/Navigation/Notifications/Repository/Notify.php:473
 msgid "registration request"
 msgstr "Registrierungsanfrage"
 
-#: src/Navigation/Notifications/Repository/Notify.php:456
+#: src/Navigation/Notifications/Repository/Notify.php:475
 #, 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"
 
-#: src/Navigation/Notifications/Repository/Notify.php:457
+#: src/Navigation/Notifications/Repository/Notify.php:476
 #, 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."
 
-#: src/Navigation/Notifications/Repository/Notify.php:462
+#: src/Navigation/Notifications/Repository/Notify.php:481
 #, php-format
 msgid ""
 "Full Name:\t%s\n"
@@ -10362,17 +10336,17 @@ msgid ""
 "Login Name:\t%s (%s)"
 msgstr "Kompletter Name: %s\nURL der Seite: %s\nLogin Name: %s(%s)"
 
-#: src/Navigation/Notifications/Repository/Notify.php:468
+#: src/Navigation/Notifications/Repository/Notify.php:487
 #, php-format
 msgid "Please visit %s to approve or reject the request."
 msgstr "Bitte besuche %s, um die Anfrage zu bearbeiten."
 
-#: src/Navigation/Notifications/Repository/Notify.php:704
+#: src/Navigation/Notifications/Repository/Notify.php:723
 #, php-format
 msgid "%s %s tagged you"
 msgstr "%s %s hat dich erwähnt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:707
+#: src/Navigation/Notifications/Repository/Notify.php:726
 #, php-format
 msgid "%s %s shared a new post"
 msgstr "%s%shat einen Beitrag geteilt"
@@ -10400,14 +10374,18 @@ msgstr "Falls du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den
 msgid "%s posted an update."
 msgstr "%s hat ein Update veröffentlicht."
 
-#: src/Object/Post.php:149
+#: src/Object/Post.php:147
 msgid "This entry was edited"
 msgstr "Dieser Beitrag wurde bearbeitet."
 
-#: src/Object/Post.php:177
+#: src/Object/Post.php:175
 msgid "Private Message"
 msgstr "Private Nachricht"
 
+#: src/Object/Post.php:178
+msgid "Connector Message"
+msgstr "Connector Nachricht"
+
 #: src/Object/Post.php:193 src/Object/Post.php:195
 msgid "Edit"
 msgstr "Bearbeiten"
@@ -10550,54 +10528,50 @@ msgstr "Wall-to-Wall"
 msgid "via Wall-To-Wall:"
 msgstr "via Wall-To-Wall:"
 
-#: src/Object/Post.php:497
+#: src/Object/Post.php:499
 #, php-format
 msgid "Reply to %s"
 msgstr "Antworte %s"
 
-#: src/Object/Post.php:500
+#: src/Object/Post.php:502
 msgid "More"
 msgstr "Mehr"
 
-#: src/Object/Post.php:518
+#: src/Object/Post.php:520
 msgid "Notifier task is pending"
 msgstr "Die Benachrichtigungsaufgabe ist ausstehend"
 
-#: src/Object/Post.php:519
+#: src/Object/Post.php:521
 msgid "Delivery to remote servers is pending"
 msgstr "Die Auslieferung an Remote-Server steht noch aus"
 
-#: src/Object/Post.php:520
+#: src/Object/Post.php:522
 msgid "Delivery to remote servers is underway"
 msgstr "Die Auslieferung an Remote-Server ist unterwegs"
 
-#: src/Object/Post.php:521
+#: src/Object/Post.php:523
 msgid "Delivery to remote servers is mostly done"
 msgstr "Die Zustellung an Remote-Server ist fast erledigt"
 
-#: src/Object/Post.php:522
+#: src/Object/Post.php:524
 msgid "Delivery to remote servers is done"
 msgstr "Die Zustellung an die Remote-Server ist erledigt"
 
-#: src/Object/Post.php:542
+#: src/Object/Post.php:544
 #, php-format
 msgid "%d comment"
 msgid_plural "%d comments"
 msgstr[0] "%d Kommentar"
 msgstr[1] "%d Kommentare"
 
-#: src/Object/Post.php:543
+#: src/Object/Post.php:545
 msgid "Show more"
 msgstr "Zeige mehr"
 
-#: src/Object/Post.php:544
+#: src/Object/Post.php:546
 msgid "Show fewer"
 msgstr "Zeige weniger"
 
-#: src/Protocol/Diaspora.php:3414
-msgid "Attachments:"
-msgstr "Anhänge:"
-
 #: src/Protocol/OStatus.php:1645
 #, php-format
 msgid "%s is now following %s."
index ecefade00c67f4d39816a2007a511c1598eae097..bcf63d01a01bd0a3428ca6d4bc8308fd0b16dceb 100644 (file)
@@ -5,15 +5,6 @@ function string_plural_select_de($n){
        $n = intval($n);
        return intval($n != 1);
 }}
-$a->strings['Daily posting limit of %d post reached. The post was rejected.'] = [
-       0 => 'Das tägliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen.',
-       1 => 'Das tägliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen.',
-];
-$a->strings['Weekly posting limit of %d post reached. The post was rejected.'] = [
-       0 => 'Das wöchentliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen.',
-       1 => 'Das wöchentliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen.',
-];
-$a->strings['Monthly posting limit of %d post reached. The post was rejected.'] = 'Das monatliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen.';
 $a->strings['Access denied.'] = 'Zugriff verweigert.';
 $a->strings['User not found.'] = 'Benutzer nicht gefunden.';
 $a->strings['Access to this profile has been restricted.'] = 'Der Zugriff zu diesem Profil wurde eingeschränkt.';
@@ -343,10 +334,10 @@ $a->strings['Name'] = 'Name';
 $a->strings['Home Page'] = 'Homepage';
 $a->strings['Created'] = 'Erstellt';
 $a->strings['Remove authorization'] = 'Autorisierung entziehen';
+$a->strings['Save Settings'] = 'Einstellungen speichern';
 $a->strings['Addon Settings'] = 'Addon Einstellungen';
 $a->strings['No Addon settings configured'] = 'Keine Addon-Einstellungen konfiguriert';
 $a->strings['Additional Features'] = 'Zusätzliche Features';
-$a->strings['Save Settings'] = 'Einstellungen speichern';
 $a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
 $a->strings['enabled'] = 'eingeschaltet';
 $a->strings['disabled'] = 'ausgeschaltet';
@@ -527,12 +518,13 @@ $a->strings['Unable to check your home location.'] = 'Konnte Deinen Heimatort ni
 $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['No system theme config value set.'] = 'Es wurde kein Konfigurationswert für das systemweite Theme gesetzt.';
-$a->strings['You must be logged in to use addons. '] = 'Du musst angemeldet sein, um Addons benutzen zu können.';
+$a->strings['Apologies but the website is unavailable at the moment.'] = 'Entschuldigung, aber die Webseite ist derzeit nicht erreichbar.';
 $a->strings['Delete this item?'] = 'Diesen Beitrag löschen?';
 $a->strings['Block this author? They won\'t be able to follow you nor see your public posts, and you won\'t be able to see their posts and their notifications.'] = 'Soll dieser Autor geblockt werden? Sie werden nicht in der Lage sein, dir zu folgen oder deine öffentlichen Beiträge zu sehen. Außerdem wirst du nicht in der Lage sein ihre Beiträge und Benachrichtigungen zu lesen.';
 $a->strings['toggle mobile'] = 'mobile Ansicht umschalten';
 $a->strings['Method not allowed for this module. Allowed method(s): %s'] = 'Diese Methode ist in diesem Modul nicht erlaubt. Erlaubte Methoden sind: %s';
 $a->strings['Page not found.'] = 'Seite nicht gefunden.';
+$a->strings['You must be logged in to use addons. '] = 'Du musst angemeldet sein, um Addons benutzen zu können.';
 $a->strings['The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it.'] = 'Das Sicherheitsmerkmal war nicht korrekt. Das passiert meistens, wenn das Formular vor dem Absenden zu lange geöffnet war (länger als 3 Stunden).';
 $a->strings['All contacts'] = 'Alle Kontakte';
 $a->strings['Followers'] = 'Folgende';
@@ -720,7 +712,7 @@ $a->strings['Introductions'] = 'Kontaktanfragen';
 $a->strings['Friend Requests'] = 'Kontaktanfragen';
 $a->strings['Notifications'] = 'Benachrichtigungen';
 $a->strings['See all notifications'] = 'Alle Benachrichtigungen anzeigen';
-$a->strings['Mark all system notifications seen'] = 'Markiere alle Systembenachrichtigungen als gelesen';
+$a->strings['Mark all system notifications as seen'] = 'Markiere alle Systembenachrichtigungen als gelesen';
 $a->strings['Private mail'] = 'Private E-Mail';
 $a->strings['Inbox'] = 'Eingang';
 $a->strings['Outbox'] = 'Ausgang';
@@ -1043,11 +1035,11 @@ $a->strings['Change profile photo'] = 'Profilbild ändern';
 $a->strings['Homepage:'] = 'Homepage:';
 $a->strings['About:'] = 'Über:';
 $a->strings['Atom feed'] = 'Atom-Feed';
-$a->strings['g A l F d'] = 'l, d. F G \U\h\r';
 $a->strings['F d'] = 'd. F';
 $a->strings['[today]'] = '[heute]';
 $a->strings['Birthday Reminders'] = 'Geburtstagserinnerungen';
 $a->strings['Birthdays this week:'] = 'Geburtstage diese Woche:';
+$a->strings['g A l F d'] = 'l, d. F G \U\h\r';
 $a->strings['[No description]'] = '[keine Beschreibung]';
 $a->strings['Event Reminders'] = 'Veranstaltungserinnerungen';
 $a->strings['Upcoming events the next 7 days:'] = 'Veranstaltungen der nächsten 7 Tage:';
@@ -1280,7 +1272,7 @@ $a->strings['%s total blocked contact'] = [
 ];
 $a->strings['URL of the remote contact to block.'] = 'Die URL des entfernten Kontakts, der blockiert werden soll.';
 $a->strings['Also purge contact'] = 'Kontakt auch löschen';
-$a->strings['Removes all content related to this contact from the node. Keeps the contact record. This action canoot be undone.'] = 'Entfernt alle Inhalte von diesem Knoten, die in Verbindung zu dem Kontakt stehen. Der Kontakt-Eintrag bleibt erhalten. Dieser Vorgang kann nicht rückgängig gemacht werden.';
+$a->strings['Removes all content related to this contact from the node. Keeps the contact record. This action cannot be undone.'] = 'Entfernt alle Inhalte von diesem Knoten, die in Verbindung zu dem Kontakt stehen. Der Kontakt-Eintrag bleibt erhalten. Dieser Vorgang kann nicht rückgängig gemacht werden.';
 $a->strings['Block Reason'] = 'Sperrgrund';
 $a->strings['Server domain pattern added to the blocklist.'] = 'Server Domain Muster zur Blockliste hinzugefügt';
 $a->strings['%s server scheduled to be purged.'] = [
@@ -1745,6 +1737,15 @@ $a->strings['ActivityPub Conversion'] = 'Umwandlung nach ActivityPub';
 $a->strings['Addon Features'] = 'Addon Features';
 $a->strings['User registrations waiting for confirmation'] = 'Nutzeranmeldungen, die auf Bestätigung warten';
 $a->strings['Too Many Requests'] = 'Zu viele Abfragen';
+$a->strings['Daily posting limit of %d post reached. The post was rejected.'] = [
+       0 => 'Das tägliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen.',
+       1 => 'Das tägliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen.',
+];
+$a->strings['Weekly posting limit of %d post reached. The post was rejected.'] = [
+       0 => 'Das wöchentliche Limit von %d Beitrag wurde erreicht. Die Nachricht wurde verworfen.',
+       1 => 'Das wöchentliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen.',
+];
+$a->strings['Monthly posting limit of %d post reached. The post was rejected.'] = 'Das monatliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen.';
 $a->strings['Profile Details'] = 'Profildetails';
 $a->strings['Only You Can See This'] = 'Nur du kannst das sehen';
 $a->strings['Scheduled Posts'] = 'Geplante Beiträge';
@@ -1792,16 +1793,9 @@ $a->strings['Pending outgoing contact request'] = 'Ausstehende ausgehende Kontak
 $a->strings['Pending incoming contact request'] = 'Ausstehende eingehende Kontaktanfrage';
 $a->strings['Visit %s\'s profile [%s]'] = 'Besuche %ss Profil [%s]';
 $a->strings['Contact update failed.'] = 'Konnte den Kontakt nicht aktualisieren.';
-$a->strings['<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.'] = '<strong>ACHTUNG: Das sind Experten-Einstellungen!</strong> Wenn du etwas Falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr.';
-$a->strings['Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.'] = 'Bitte nutze den Zurück-Button Deines Browsers <strong>jetzt</strong>, wenn du dir unsicher bist, was du tun willst.';
 $a->strings['Return to contact editor'] = 'Zurück zum Kontakteditor';
 $a->strings['Account Nickname'] = 'Konto-Spitzname';
-$a->strings['@Tagname - overrides Name/Nickname'] = '@Tagname - überschreibt Name/Spitzname';
 $a->strings['Account URL'] = 'Konto-URL';
-$a->strings['Account URL Alias'] = 'Konto URL Alias';
-$a->strings['Friend Request URL'] = 'URL für Kontaktschaftsanfragen';
-$a->strings['Friend Confirm URL'] = 'URL für Bestätigungen von Kontaktanfragen';
-$a->strings['Notification Endpoint URL'] = 'URL-Endpunkt für Benachrichtigungen';
 $a->strings['Poll/Feed URL'] = 'Pull/Feed-URL';
 $a->strings['New photo from this URL'] = 'Neues Foto von dieser URL';
 $a->strings['Invalid contact.'] = 'Ungültiger Kontakt.';
@@ -1982,6 +1976,7 @@ $a->strings['Output'] = 'Ergebnis';
 $a->strings['Lookup address'] = 'Adresse nachschlagen';
 $a->strings['Webfinger Diagnostic'] = 'Webfinger Diagnostik';
 $a->strings['Lookup address:'] = 'Adresse nachschlagen:';
+$a->strings['You are now logged in as %s'] = 'Du bist jetzt als %s angemeldet';
 $a->strings['Switch between your accounts'] = 'Wechsle deine Konten';
 $a->strings['Manage your accounts'] = 'Verwalte deine Konten';
 $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.';
@@ -2014,7 +2009,6 @@ $a->strings['Unable to add the contact to the group.'] = 'Konnte den Kontakt nic
 $a->strings['Contact successfully added to group.'] = 'Kontakt zur Gruppe hinzugefügt';
 $a->strings['Unable to remove the contact from the group.'] = 'Konnte den Kontakt nicht aus der Gruppe entfernen';
 $a->strings['Contact successfully removed from group.'] = 'Kontakt aus Gruppe entfernt';
-$a->strings['Unknown group command.'] = 'Unbekannter Gruppen Befehl';
 $a->strings['Bad request.'] = 'Ungültige Anfrage.';
 $a->strings['Save Group'] = 'Gruppe speichern';
 $a->strings['Filter'] = 'Filter';
@@ -2552,6 +2546,7 @@ $a->strings['Please contact the sender by replying to this post if you do not wi
 $a->strings['%s posted an update.'] = '%s hat ein Update veröffentlicht.';
 $a->strings['This entry was edited'] = 'Dieser Beitrag wurde bearbeitet.';
 $a->strings['Private Message'] = 'Private Nachricht';
+$a->strings['Connector Message'] = 'Connector Nachricht';
 $a->strings['Edit'] = 'Bearbeiten';
 $a->strings['Pinned item'] = 'Angehefteter Beitrag';
 $a->strings['Delete globally'] = 'Global löschen';
@@ -2600,7 +2595,6 @@ $a->strings['%d comment'] = [
 ];
 $a->strings['Show more'] = 'Zeige mehr';
 $a->strings['Show fewer'] = 'Zeige weniger';
-$a->strings['Attachments:'] = 'Anhänge:';
 $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';
index 2f42f3dbe376e416605683ee8ebb62930a313467..2658bd362c1b94b366cbf1a606de0caa994b2cf2 100644 (file)
@@ -3,7 +3,7 @@
 # This file is distributed under the same license as the Friendica package.
 # 
 # Translators:
-# Balázs Úr, 2020-2021
+# Balázs Úr, 2020-2022
 # Balázs Úr <ur.balazs@fsf.hu>, 2020
 # Kastal András <kastal@gmail.com>, 2018
 # Kastal András <kastal@gmail.com>, 2018
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-11-27 12:46+0100\n"
-"PO-Revision-Date: 2021-12-03 07:37+0000\n"
+"POT-Creation-Date: 2022-01-21 14:21+0100\n"
+"PO-Revision-Date: 2022-01-21 19:41+0000\n"
 "Last-Translator: Balázs Úr\n"
 "Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
 "MIME-Version: 1.0\n"
@@ -22,26 +22,6 @@ msgstr ""
 "Language: hu\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/api.php:771 src/Module/BaseApi.php:275
-#, php-format
-msgid "Daily posting limit of %d post reached. The post was rejected."
-msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
-msgstr[0] "A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
-msgstr[1] "A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
-
-#: include/api.php:785 src/Module/BaseApi.php:291
-#, php-format
-msgid "Weekly posting limit of %d post reached. The post was rejected."
-msgid_plural ""
-"Weekly posting limit of %d posts reached. The post was rejected."
-msgstr[0] "A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
-msgstr[1] "A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
-
-#: include/api.php:799 src/Module/BaseApi.php:307
-#, php-format
-msgid "Monthly posting limit of %d post reached. The post was rejected."
-msgstr "A havi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
-
 #: mod/cal.php:44 mod/cal.php:48 mod/follow.php:39 mod/redir.php:34
 #: mod/redir.php:175 src/Module/Conversation/Community.php:181
 #: src/Module/Debug/ItemBody.php:37 src/Module/Diaspora/Receive.php:57
@@ -56,7 +36,7 @@ msgstr "Hozzáférés megtagadva."
 #: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52
 #: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50
 #: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:58
-#: src/Module/Register.php:266 src/Module/RemoteFollow.php:58
+#: src/Module/Register.php:267 src/Module/RemoteFollow.php:58
 msgid "User not found."
 msgstr "A felhasználó nem található."
 
@@ -111,7 +91,7 @@ msgstr "lista"
 #: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:659
 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
-#: src/Module/Api/Twitter/ContactEndpoint.php:76
+#: src/Module/Api/Twitter/ContactEndpoint.php:74
 msgid "User not found"
 msgstr "A felhasználó nem található"
 
@@ -145,23 +125,22 @@ msgstr "Ennek az elemnek a hírforrása nem érhető el."
 #: mod/item.php:185 mod/item.php:190 mod/item.php:937 mod/message.php:69
 #: mod/message.php:111 mod/notes.php:44 mod/ostatus_subscribe.php:32
 #: mod/photos.php:160 mod/photos.php:897 mod/repair_ostatus.php:31
-#: mod/settings.php:46 mod/settings.php:56 mod/settings.php:410
+#: mod/settings.php:46 mod/settings.php:56 mod/settings.php:412
 #: mod/suggest.php:34 mod/uimport.php:33 mod/unfollow.php:35
 #: mod/unfollow.php:50 mod/unfollow.php:82 mod/wall_attach.php:68
 #: mod/wall_attach.php:71 mod/wall_upload.php:90 mod/wall_upload.php:93
-#: mod/wallmessage.php:36 mod/wallmessage.php:55 mod/wallmessage.php:89
-#: mod/wallmessage.php:109 src/Module/Attach.php:55 src/Module/BaseApi.php:77
-#: src/Module/BaseApi.php:86 src/Module/BaseApi.php:95
-#: src/Module/BaseApi.php:104 src/Module/BaseNotifications.php:97
-#: src/Module/Contact/Advanced.php:60 src/Module/Delegation.php:118
-#: src/Module/FollowConfirm.php:18 src/Module/FriendSuggest.php:56
-#: src/Module/Group.php:42 src/Module/Group.php:85 src/Module/Invite.php:41
-#: src/Module/Invite.php:130 src/Module/Notifications/Notification.php:48
+#: mod/wallmessage.php:37 mod/wallmessage.php:56 mod/wallmessage.php:90
+#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:93
+#: src/Module/BaseNotifications.php:97 src/Module/Contact/Advanced.php:60
+#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:38
+#: src/Module/FriendSuggest.php:56 src/Module/Group.php:42
+#: src/Module/Group.php:85 src/Module/Invite.php:41 src/Module/Invite.php:130
+#: src/Module/Notifications/Notification.php:48
 #: src/Module/Notifications/Notification.php:79
 #: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:56
 #: src/Module/Profile/Schedule.php:39 src/Module/Profile/Schedule.php:56
-#: src/Module/Register.php:76 src/Module/Register.php:89
-#: src/Module/Register.php:205 src/Module/Register.php:244
+#: src/Module/Register.php:77 src/Module/Register.php:90
+#: src/Module/Register.php:206 src/Module/Register.php:245
 #: src/Module/Search/Directory.php:37 src/Module/Settings/Delegation.php:42
 #: src/Module/Settings/Delegation.php:70 src/Module/Settings/Display.php:42
 #: src/Module/Settings/Display.php:120
@@ -188,12 +167,12 @@ msgid "Save"
 msgstr "Mentés"
 
 #: mod/editpost.php:92 mod/photos.php:1344 src/Content/Conversation.php:326
-#: src/Module/Contact/Poke.php:157 src/Object/Post.php:964
+#: src/Module/Contact/Poke.php:176 src/Object/Post.php:966
 msgid "Loading..."
 msgstr "Betöltés…"
 
 #: mod/editpost.php:93 mod/message.php:198 mod/message.php:355
-#: mod/wallmessage.php:139 src/Content/Conversation.php:327
+#: mod/wallmessage.php:140 src/Content/Conversation.php:327
 msgid "Upload photo"
 msgstr "Fénykép feltöltése"
 
@@ -210,7 +189,7 @@ msgid "attach file"
 msgstr "fájl csatolása"
 
 #: mod/editpost.php:97 mod/message.php:199 mod/message.php:356
-#: mod/wallmessage.php:140
+#: mod/wallmessage.php:141
 msgid "Insert web link"
 msgstr "Webhivatkozás beszúrása"
 
@@ -252,9 +231,9 @@ msgid "clear location"
 msgstr "hely törlése"
 
 #: mod/editpost.php:107 mod/message.php:200 mod/message.php:358
-#: mod/photos.php:1495 mod/wallmessage.php:141
+#: mod/photos.php:1495 mod/wallmessage.php:142
 #: src/Content/Conversation.php:355 src/Content/Conversation.php:690
-#: src/Module/Item/Compose.php:165 src/Object/Post.php:502
+#: src/Module/Item/Compose.php:165 src/Object/Post.php:504
 msgid "Please wait"
 msgstr "Kis türelmet"
 
@@ -286,11 +265,11 @@ msgstr "Példa: bob@example.com, mary@example.com"
 
 #: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1343
 #: mod/photos.php:1399 mod/photos.php:1473 src/Content/Conversation.php:370
-#: src/Module/Item/Compose.php:160 src/Object/Post.php:974
+#: src/Module/Item/Compose.php:160 src/Object/Post.php:976
 msgid "Preview"
 msgstr "Előnézet"
 
-#: mod/editpost.php:130 mod/fbrowser.php:100 mod/fbrowser.php:127
+#: mod/editpost.php:130 mod/fbrowser.php:117 mod/fbrowser.php:144
 #: mod/follow.php:144 mod/photos.php:1010 mod/photos.php:1111 mod/tagrm.php:35
 #: mod/tagrm.php:127 mod/unfollow.php:97 src/Content/Conversation.php:373
 #: src/Module/Contact/Revoke.php:110 src/Module/RemoteFollow.php:127
@@ -298,37 +277,37 @@ msgid "Cancel"
 msgstr "Mégse"
 
 #: mod/editpost.php:134 src/Content/Conversation.php:331
-#: src/Module/Item/Compose.php:151 src/Object/Post.php:965
+#: src/Module/Item/Compose.php:151 src/Object/Post.php:967
 msgid "Bold"
 msgstr "Félkövér"
 
 #: mod/editpost.php:135 src/Content/Conversation.php:332
-#: src/Module/Item/Compose.php:152 src/Object/Post.php:966
+#: src/Module/Item/Compose.php:152 src/Object/Post.php:968
 msgid "Italic"
 msgstr "Dőlt"
 
 #: mod/editpost.php:136 src/Content/Conversation.php:333
-#: src/Module/Item/Compose.php:153 src/Object/Post.php:967
+#: src/Module/Item/Compose.php:153 src/Object/Post.php:969
 msgid "Underline"
 msgstr "Aláhúzott"
 
 #: mod/editpost.php:137 src/Content/Conversation.php:334
-#: src/Module/Item/Compose.php:154 src/Object/Post.php:968
+#: src/Module/Item/Compose.php:154 src/Object/Post.php:970
 msgid "Quote"
 msgstr "Idézet"
 
 #: mod/editpost.php:138 src/Content/Conversation.php:335
-#: src/Module/Item/Compose.php:155 src/Object/Post.php:969
+#: src/Module/Item/Compose.php:155 src/Object/Post.php:971
 msgid "Code"
 msgstr "Kód"
 
 #: mod/editpost.php:139 src/Content/Conversation.php:337
-#: src/Module/Item/Compose.php:157 src/Object/Post.php:971
+#: src/Module/Item/Compose.php:157 src/Object/Post.php:973
 msgid "Link"
 msgstr "Hivatkozás"
 
 #: mod/editpost.php:140 src/Content/Conversation.php:338
-#: src/Module/Item/Compose.php:158 src/Object/Post.php:972
+#: src/Module/Item/Compose.php:158 src/Object/Post.php:974
 msgid "Link or Media"
 msgstr "Hivatkozás vagy média"
 
@@ -339,7 +318,7 @@ msgid "Message"
 msgstr "Üzenet"
 
 #: mod/editpost.php:144 src/Content/Conversation.php:381
-#: src/Module/Settings/TwoFactor/Trusted.php:118
+#: src/Module/Settings/TwoFactor/Trusted.php:137
 msgid "Browser"
 msgstr "Böngésző"
 
@@ -382,16 +361,16 @@ msgstr "Esemény kezdete:"
 #: src/Module/Admin/Blocklist/Server/Index.php:68
 #: src/Module/Admin/Blocklist/Server/Index.php:69
 #: src/Module/Admin/Blocklist/Server/Index.php:96
-#: src/Module/Admin/Item/Delete.php:70 src/Module/Debug/Probe.php:59
+#: src/Module/Admin/Item/Delete.php:69 src/Module/Debug/Probe.php:59
 #: src/Module/Install.php:207 src/Module/Install.php:240
 #: src/Module/Install.php:245 src/Module/Install.php:264
 #: src/Module/Install.php:275 src/Module/Install.php:280
 #: src/Module/Install.php:286 src/Module/Install.php:291
 #: src/Module/Install.php:305 src/Module/Install.php:320
-#: src/Module/Install.php:347 src/Module/Register.php:147
+#: src/Module/Install.php:347 src/Module/Register.php:148
 #: src/Module/Security/TwoFactor/Verify.php:100
 #: src/Module/Settings/TwoFactor/Index.php:133
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Required"
 msgstr "Kötelező"
 
@@ -410,7 +389,7 @@ msgstr "Leírás:"
 
 #: mod/events.php:508 src/Content/Widget/VCard.php:98 src/Model/Event.php:80
 #: src/Model/Event.php:107 src/Model/Event.php:466 src/Model/Event.php:915
-#: src/Model/Profile.php:368 src/Module/Contact/Profile.php:376
+#: src/Model/Profile.php:368 src/Module/Contact/Profile.php:369
 #: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:185
 #: src/Module/Profile/Profile.php:194
 msgid "Location:"
@@ -427,16 +406,16 @@ msgstr "Az esemény megosztása"
 #: mod/events.php:519 mod/message.php:201 mod/message.php:357
 #: mod/photos.php:927 mod/photos.php:1031 mod/photos.php:1301
 #: mod/photos.php:1342 mod/photos.php:1398 mod/photos.php:1472
-#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:147
-#: src/Module/Contact/Poke.php:158 src/Module/Contact/Profile.php:334
+#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:132
+#: src/Module/Contact/Poke.php:177 src/Module/Contact/Profile.php:327
 #: src/Module/Debug/ActivityPubConversion.php:141
 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
 #: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
-#: src/Module/Delegation.php:147 src/Module/FriendSuggest.php:144
+#: src/Module/Delegation.php:148 src/Module/FriendSuggest.php:144
 #: src/Module/Install.php:252 src/Module/Install.php:294
 #: src/Module/Install.php:331 src/Module/Invite.php:177
 #: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247
-#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:963
+#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:965
 #: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
 #: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
 msgid "Submit"
@@ -455,17 +434,17 @@ msgstr "Speciális"
 msgid "Failed to remove event"
 msgstr "Nem sikerült eltávolítani az eseményt"
 
-#: mod/fbrowser.php:43 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
+#: mod/fbrowser.php:60 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
 #: view/theme/frio/theme.php:227
 msgid "Photos"
 msgstr "Fényképek"
 
-#: mod/fbrowser.php:102 mod/fbrowser.php:129
+#: mod/fbrowser.php:119 mod/fbrowser.php:146
 #: src/Module/Settings/Profile/Photo/Index.php:129
 msgid "Upload"
 msgstr "Feltöltés"
 
-#: mod/fbrowser.php:124
+#: mod/fbrowser.php:141
 msgid "Files"
 msgstr "Fájlok"
 
@@ -490,7 +469,7 @@ msgid "OStatus support is disabled. Contact can't be added."
 msgstr "Az OStatus támogatása le van tiltva. A partnert nem lehet hozzáadni."
 
 #: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
-#: src/Model/Contact.php:1042 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1055 src/Model/Contact.php:1067
 #: view/theme/vier/theme.php:172
 msgid "Connect/Follow"
 msgstr "Kapcsolódás vagy követés"
@@ -505,13 +484,13 @@ msgstr "Az Ön személyazonosság-címe:"
 
 #: mod/follow.php:141 mod/unfollow.php:100
 #: src/Module/Admin/Blocklist/Contact.php:116
-#: src/Module/Contact/Profile.php:372
+#: src/Module/Contact/Profile.php:365
 #: src/Module/Notifications/Introductions.php:127
 #: src/Module/Notifications/Introductions.php:196
 msgid "Profile URL"
 msgstr "Profil URL"
 
-#: mod/follow.php:142 src/Module/Contact/Profile.php:384
+#: mod/follow.php:142 src/Module/Contact/Profile.php:377
 #: src/Module/Notifications/Introductions.php:189
 #: src/Module/Profile/Profile.php:207
 msgid "Tags:"
@@ -711,7 +690,7 @@ msgstr "Profilegyezés"
 msgid "New Message"
 msgstr "Új üzenet"
 
-#: mod/message.php:83 mod/wallmessage.php:69
+#: mod/message.php:83 mod/wallmessage.php:70
 msgid "No recipient selected."
 msgstr "Nincs címzett kiválasztva."
 
@@ -719,11 +698,11 @@ msgstr "Nincs címzett kiválasztva."
 msgid "Unable to locate contact information."
 msgstr "Nem lehet megtalálni a partner információit."
 
-#: mod/message.php:90 mod/wallmessage.php:75
+#: mod/message.php:90 mod/wallmessage.php:76
 msgid "Message could not be sent."
 msgstr "Az üzenetet nem sikerült elküldeni."
 
-#: mod/message.php:93 mod/wallmessage.php:78
+#: mod/message.php:93 mod/wallmessage.php:79
 msgid "Message collection failure."
 msgstr "Üzenet-összegyűjtési hiba."
 
@@ -749,23 +728,23 @@ msgstr "Az üzenet nem lett törölve."
 msgid "Conversation was not removed."
 msgstr "A beszélgetés nem lett eltávolítva."
 
-#: mod/message.php:180 mod/message.php:286 mod/wallmessage.php:123
+#: mod/message.php:180 mod/message.php:286 mod/wallmessage.php:124
 msgid "Please enter a link URL:"
 msgstr "Írjon be egy hivatkozás URL-t:"
 
-#: mod/message.php:189 mod/wallmessage.php:128
+#: mod/message.php:189 mod/wallmessage.php:129
 msgid "Send Private Message"
 msgstr "Személyes üzenet küldése"
 
-#: mod/message.php:190 mod/message.php:347 mod/wallmessage.php:130
+#: mod/message.php:190 mod/message.php:347 mod/wallmessage.php:131
 msgid "To:"
 msgstr "Címzett:"
 
-#: mod/message.php:191 mod/message.php:348 mod/wallmessage.php:131
+#: mod/message.php:191 mod/message.php:348 mod/wallmessage.php:132
 msgid "Subject:"
 msgstr "Tárgy:"
 
-#: mod/message.php:195 mod/message.php:351 mod/wallmessage.php:137
+#: mod/message.php:195 mod/message.php:351 mod/wallmessage.php:138
 #: src/Module/Invite.php:170
 msgid "Your message:"
 msgstr "Az üzenete:"
@@ -1088,12 +1067,12 @@ msgstr "Forgatás balra"
 
 #: mod/photos.php:1339 mod/photos.php:1395 mod/photos.php:1469
 #: src/Module/Contact.php:544 src/Module/Item/Compose.php:148
-#: src/Object/Post.php:960
+#: src/Object/Post.php:962
 msgid "This is you"
 msgstr "Ez Ön"
 
 #: mod/photos.php:1341 mod/photos.php:1397 mod/photos.php:1471
-#: src/Object/Post.php:496 src/Object/Post.php:962
+#: src/Object/Post.php:498 src/Object/Post.php:964
 msgid "Comment"
 msgstr "Hozzászólás"
 
@@ -1102,7 +1081,7 @@ msgstr "Hozzászólás"
 msgid "Select"
 msgstr "Kiválasztás"
 
-#: mod/photos.php:1431 mod/settings.php:564 src/Content/Conversation.php:616
+#: mod/photos.php:1431 mod/settings.php:596 src/Content/Conversation.php:616
 #: src/Module/Admin/Users/Active.php:139
 #: src/Module/Admin/Users/Blocked.php:140 src/Module/Admin/Users/Index.php:153
 msgid "Delete"
@@ -1150,19 +1129,19 @@ msgid "Bad Request."
 msgstr "Hibás kérés."
 
 #: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:70
-#: src/Module/Contact/Advanced.php:119 src/Module/Contact/Contacts.php:36
-#: src/Module/Contact/Conversations.php:80
-#: src/Module/Contact/Conversations.php:85
-#: src/Module/Contact/Conversations.php:90 src/Module/Contact/Media.php:43
-#: src/Module/Contact/Posts.php:74 src/Module/Contact/Posts.php:79
-#: src/Module/Contact/Posts.php:84 src/Module/Contact/Profile.php:148
-#: src/Module/Contact/Profile.php:153 src/Module/Contact/Profile.php:158
+#: src/Module/Contact/Advanced.php:109 src/Module/Contact/Contacts.php:55
+#: src/Module/Contact/Conversations.php:78
+#: src/Module/Contact/Conversations.php:83
+#: src/Module/Contact/Conversations.php:88 src/Module/Contact/Media.php:43
+#: src/Module/Contact/Posts.php:72 src/Module/Contact/Posts.php:77
+#: src/Module/Contact/Posts.php:82 src/Module/Contact/Profile.php:141
+#: src/Module/Contact/Profile.php:146 src/Module/Contact/Profile.php:151
 #: src/Module/FriendSuggest.php:70 src/Module/FriendSuggest.php:108
 #: src/Module/Group.php:99 src/Module/Group.php:108
 msgid "Contact not found."
 msgstr "A partner nem található."
 
-#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:454
+#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:473
 msgid "[Friendica System Notify]"
 msgstr "[Friendica rendszerértesítés]"
 
@@ -1206,157 +1185,158 @@ msgid_plural "Errors"
 msgstr[0] "Hiba"
 msgstr[1] "Hibák"
 
-#: mod/settings.php:127
+#: mod/settings.php:128
 msgid "Failed to connect with email account using the settings provided."
 msgstr "Nem sikerült kapcsolódni a megadott beállításokat használó e-mail-fiókkal."
 
-#: mod/settings.php:156
+#: mod/settings.php:158
 msgid "Contact CSV file upload error"
 msgstr "Partner CSV-fájl feltöltési hiba"
 
-#: mod/settings.php:175
+#: mod/settings.php:177
 msgid "Importing Contacts done"
 msgstr "A partnerek importálása kész"
 
-#: mod/settings.php:188
+#: mod/settings.php:190
 msgid "Relocate message has been send to your contacts"
 msgstr "Az áthelyezési üzenet el lett küldve a partnereknek"
 
-#: mod/settings.php:200
+#: mod/settings.php:202
 msgid "Passwords do not match."
 msgstr "A jelszavak nem egyeznek."
 
-#: mod/settings.php:208 src/Console/User.php:210
+#: mod/settings.php:210 src/Console/User.php:210
 msgid "Password update failed. Please try again."
 msgstr "A jelszó frissítése sikertelen. Próbálja újra."
 
-#: mod/settings.php:211 src/Console/User.php:213
+#: mod/settings.php:213 src/Console/User.php:213
 msgid "Password changed."
 msgstr "A jelszó megváltoztatva."
 
-#: mod/settings.php:214
+#: mod/settings.php:216
 msgid "Password unchanged."
 msgstr "A jelszó nincs megváltoztatva."
 
-#: mod/settings.php:302
+#: mod/settings.php:304
 msgid "Please use a shorter name."
 msgstr "Használjon rövidebb nevet."
 
-#: mod/settings.php:305
+#: mod/settings.php:307
 msgid "Name too short."
 msgstr "A név túl rövid."
 
-#: mod/settings.php:314
+#: mod/settings.php:316
 msgid "Wrong Password."
 msgstr "Hibás jelszó."
 
-#: mod/settings.php:319
+#: mod/settings.php:321
 msgid "Invalid email."
 msgstr "Érvénytelen e-mail-cím."
 
-#: mod/settings.php:325
+#: mod/settings.php:327
 msgid "Cannot change to that email."
 msgstr "Nem lehet megváltoztatni arra az e-mail-címre."
 
-#: mod/settings.php:366
+#: mod/settings.php:368
 msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr "A személyes fórumnak nincsenek adatvédelmi jogosultságai. Alapértelmezett adatvédelmi csoport használata."
 
-#: mod/settings.php:369
+#: mod/settings.php:371
 msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr "A személyes fórumnak nincsenek adatvédelmi jogosultságai és nincs alapértelmezett adatvédelmi csoportja."
 
-#: mod/settings.php:388
+#: mod/settings.php:390
 msgid "Settings were not updated."
 msgstr "A beállítások nem lettek frissítve."
 
-#: mod/settings.php:429
+#: mod/settings.php:431
 msgid "Connected Apps"
 msgstr "Kapcsolt alkalmazások"
 
-#: mod/settings.php:430 src/Module/Admin/Blocklist/Contact.php:106
+#: mod/settings.php:432 src/Module/Admin/Blocklist/Contact.php:106
 #: src/Module/Admin/Users/Active.php:129
 #: src/Module/Admin/Users/Blocked.php:130 src/Module/Admin/Users/Create.php:71
 #: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
 #: src/Module/Admin/Users/Index.php:162 src/Module/Admin/Users/Pending.php:104
-#: src/Module/Contact/Advanced.php:149
+#: src/Module/Contact/Advanced.php:134
 msgid "Name"
 msgstr "Név"
 
-#: mod/settings.php:431 src/Content/Nav.php:212
+#: mod/settings.php:433 src/Content/Nav.php:212
 msgid "Home Page"
 msgstr "Kezdőlap"
 
-#: mod/settings.php:432 src/Module/Admin/Queue.php:78
+#: mod/settings.php:434 src/Module/Admin/Queue.php:78
 msgid "Created"
 msgstr "Létrehozva"
 
-#: mod/settings.php:433
+#: mod/settings.php:435
 msgid "Remove authorization"
 msgstr "Felhatalmazás eltávolítása"
 
-#: mod/settings.php:451
+#: mod/settings.php:461 mod/settings.php:493 mod/settings.php:524
+#: mod/settings.php:598 mod/settings.php:735
+#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
+#: src/Module/Admin/Logs/Settings.php:81 src/Module/Admin/Site.php:501
+#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:83
+#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:193
+msgid "Save Settings"
+msgstr "Beállítások mentése"
+
+#: mod/settings.php:469
 msgid "Addon Settings"
 msgstr "Bővítménybeállítások"
 
-#: mod/settings.php:452
+#: mod/settings.php:470
 msgid "No Addon settings configured"
 msgstr "Nincsenek bővítménybeállítások meghatározva"
 
-#: mod/settings.php:473
+#: mod/settings.php:491
 msgid "Additional Features"
 msgstr "További funkciók"
 
-#: mod/settings.php:475 mod/settings.php:566 mod/settings.php:703
-#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
-#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:501
-#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:83
-#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:193
-msgid "Save Settings"
-msgstr "Beállítások mentése"
-
-#: mod/settings.php:497
+#: mod/settings.php:529
 msgid "Diaspora (Socialhome, Hubzilla)"
 msgstr "Diaspora (Socialhome, Hubzilla)"
 
-#: mod/settings.php:497 mod/settings.php:498
+#: mod/settings.php:529 mod/settings.php:530
 msgid "enabled"
 msgstr "engedélyezve"
 
-#: mod/settings.php:497 mod/settings.php:498
+#: mod/settings.php:529 mod/settings.php:530
 msgid "disabled"
 msgstr "letiltva"
 
-#: mod/settings.php:497 mod/settings.php:498
+#: mod/settings.php:529 mod/settings.php:530
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr "A(z) %s összekapcsolhatóságának beépített támogatása %s"
 
-#: mod/settings.php:498
+#: mod/settings.php:530
 msgid "OStatus (GNU Social)"
 msgstr "OStatus (GNU Social)"
 
-#: mod/settings.php:524
+#: mod/settings.php:556
 msgid "Email access is disabled on this site."
 msgstr "Az e-mailes hozzáférés le van tiltva ezen az oldalon."
 
-#: mod/settings.php:529 mod/settings.php:564
+#: mod/settings.php:561 mod/settings.php:596
 msgid "None"
 msgstr "Nincs"
 
-#: mod/settings.php:535 src/Module/BaseSettings.php:78
+#: mod/settings.php:567 src/Module/BaseSettings.php:78
 msgid "Social Networks"
 msgstr "Közösségi hálózatok"
 
-#: mod/settings.php:540
+#: mod/settings.php:572
 msgid "General Social Media Settings"
 msgstr "Általános közösségimédia-beállítások"
 
-#: mod/settings.php:541
+#: mod/settings.php:573
 msgid "Accept only top level posts by contacts you follow"
 msgstr "Csak felső szintű bejegyzések elfogadása azoktól a partnerektől, akiket követ"
 
-#: mod/settings.php:541
+#: mod/settings.php:573
 msgid ""
 "The system does an auto completion of threads when a comment arrives. This "
 "has got the side effect that you can receive posts that had been started by "
@@ -1365,11 +1345,11 @@ msgid ""
 "posts from people you really do follow."
 msgstr "A rendszer elvégezi a szálak automatikus kiegészítést, ha egy hozzászólás érkezik. Ennek az a mellékhatása, hogy olyan bejegyzéseket is kaphat, amelyeket egy nem követő indított el, de valaki olyan szólt hozzá, akit Ön követ. Ez a beállítás kikapcsolja ezt a viselkedést. Ha be van kapcsolva, akkor szigorúan csak olyan emberektől fog bejegyzéseket kapni, akiket valóban követ."
 
-#: mod/settings.php:542
+#: mod/settings.php:574
 msgid "Enable Content Warning"
 msgstr "Tartalomfigyelmeztetés engedélyezése"
 
-#: mod/settings.php:542
+#: mod/settings.php:574
 msgid ""
 "Users on networks like Mastodon or Pleroma are able to set a content warning"
 " field which collapse their post by default. This enables the automatic "
@@ -1377,223 +1357,223 @@ msgid ""
 " affect any other content filtering you eventually set up."
 msgstr "Például a Mastodon vagy a Pleroma hálózatán lévő felhasználók képesek egy olyan tartalomfigyelmeztetési mezőt beállítani, amely alapértelmezetten összecsukja a bejegyzéseiket. Ez engedélyezi az automatikus összecsukást, ahelyett hogy beállítaná a tartalomfigyelmeztetést a bejegyzés címeként. Nincs hatással semmilyen más tartalomszűrésre, amelyet végül beállított."
 
-#: mod/settings.php:543
+#: mod/settings.php:575
 msgid "Enable intelligent shortening"
 msgstr "Intelligens rövidítés engedélyezése"
 
-#: mod/settings.php:543
+#: mod/settings.php:575
 msgid ""
 "Normally the system tries to find the best link to add to shortened posts. "
 "If disabled, every shortened post will always point to the original "
 "friendica post."
 msgstr "Általában a rendszer megpróbálja megkeresni a legjobb hivatkozást a rövidített bejegyzésekhez történő hozzáadáshoz. Ha le van tiltva, akkor minden egyes rövidített bejegyzés mindig az eredeti Friendica bejegyzésre fog mutatni."
 
-#: mod/settings.php:544
+#: mod/settings.php:576
 msgid "Enable simple text shortening"
 msgstr "Egyszerű szövegrövidítés engedélyezése"
 
-#: mod/settings.php:544
+#: mod/settings.php:576
 msgid ""
 "Normally the system shortens posts at the next line feed. If this option is "
 "enabled then the system will shorten the text at the maximum character "
 "limit."
 msgstr "Általában a rendszer lerövidíti a bejegyzéseket a következő soremelésnél. Ha ez a beállítás engedélyezve van, akkor a rendszer a legnagyobb karakterkorlátnál fogja rövidíteni a szöveget."
 
-#: mod/settings.php:545
+#: mod/settings.php:577
 msgid "Attach the link title"
 msgstr "A hivatkozás címének csatolása"
 
-#: mod/settings.php:545
+#: mod/settings.php:577
 msgid ""
 "When activated, the title of the attached link will be added as a title on "
 "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that"
 " share feed content."
 msgstr "Ha be van kapcsolva, akkor a csatolt hivatkozás címe címként lesz hozzáadva a Diaspora hálózatra küldött bejegyzéseknél. Ez többnyire az olyan „távoli önmaga” partnerekkel hasznos, amelyek megosztják a hírforrás tartalmát."
 
-#: mod/settings.php:546
+#: mod/settings.php:578
 msgid "Your legacy ActivityPub/GNU Social account"
 msgstr "Az örökölt ActivityPub/GNU Social fiókja"
 
-#: mod/settings.php:546
+#: mod/settings.php:578
 msgid ""
 "If you enter your old account name from an ActivityPub based system or your "
 "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 "Ha megadja itt a régi, egy ActivityPub alapú rendszerből származó fiókja nevét, illetve a GNU Social vagy Statusnet fiókja nevét (felhasználó@tartomány.tld formátumban), akkor a partnerei automatikusan hozzá lesznek adva. A mező ki lesz ürítve, ha elkészült."
 
-#: mod/settings.php:549
+#: mod/settings.php:581
 msgid "Repair OStatus subscriptions"
 msgstr "OStatus feliratkozások javítása"
 
-#: mod/settings.php:553
+#: mod/settings.php:585
 msgid "Email/Mailbox Setup"
 msgstr "E-mail vagy postafiók-beállítások"
 
-#: mod/settings.php:554
+#: mod/settings.php:586
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr "Ha e-mailes partnerekkel szeretne kommunikálni ezen szolgáltatás használatával (opcionális), akkor adja meg, hogy hogyan kell kapcsolódni a postafiókjához."
 
-#: mod/settings.php:555
+#: mod/settings.php:587
 msgid "Last successful email check:"
 msgstr "Legutóbbi sikeres e-mail-ellenőrzés:"
 
-#: mod/settings.php:557
+#: mod/settings.php:589
 msgid "IMAP server name:"
 msgstr "IMAP-kiszolgáló neve:"
 
-#: mod/settings.php:558
+#: mod/settings.php:590
 msgid "IMAP port:"
 msgstr "IMAP port:"
 
-#: mod/settings.php:559
+#: mod/settings.php:591
 msgid "Security:"
 msgstr "Biztonság:"
 
-#: mod/settings.php:560
+#: mod/settings.php:592
 msgid "Email login name:"
 msgstr "E-mail bejelentkezési neve:"
 
-#: mod/settings.php:561
+#: mod/settings.php:593
 msgid "Email password:"
 msgstr "E-mail jelszava:"
 
-#: mod/settings.php:562
+#: mod/settings.php:594
 msgid "Reply-to address:"
 msgstr "Válaszcím:"
 
-#: mod/settings.php:563
+#: mod/settings.php:595
 msgid "Send public posts to all email contacts:"
 msgstr "Nyilvános bejegyzések küldése az összes e-mail partnernek:"
 
-#: mod/settings.php:564
+#: mod/settings.php:596
 msgid "Action after import:"
 msgstr "Importálás utáni művelet:"
 
-#: mod/settings.php:564 src/Content/Nav.php:280
+#: mod/settings.php:596 src/Content/Nav.php:280
 msgid "Mark as seen"
 msgstr "Megjelölés olvasottként"
 
-#: mod/settings.php:564
+#: mod/settings.php:596
 msgid "Move to folder"
 msgstr "Áthelyezés mappába"
 
-#: mod/settings.php:565
+#: mod/settings.php:597
 msgid "Move to folder:"
 msgstr "Áthelyezés mappába:"
 
-#: mod/settings.php:579
+#: mod/settings.php:611
 msgid "Unable to find your profile. Please contact your admin."
 msgstr "Nem található a profilja. Vegye fel a kapcsolatot a rendszergazdával."
 
-#: mod/settings.php:617 src/Content/Widget.php:526
+#: mod/settings.php:649 src/Content/Widget.php:526
 msgid "Account Types"
 msgstr "Fióktípusok"
 
-#: mod/settings.php:618
+#: mod/settings.php:650
 msgid "Personal Page Subtypes"
 msgstr "Személyes oldal altípusai"
 
-#: mod/settings.php:619
+#: mod/settings.php:651
 msgid "Community Forum Subtypes"
 msgstr "Közösségi fórum altípusai"
 
-#: mod/settings.php:626 src/Module/Admin/BaseUsers.php:106
+#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:107
 msgid "Personal Page"
 msgstr "Személyes oldal"
 
-#: mod/settings.php:627
+#: mod/settings.php:659
 msgid "Account for a personal profile."
 msgstr "Egy személyes profil fiókja."
 
-#: mod/settings.php:630 src/Module/Admin/BaseUsers.php:107
+#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:108
 msgid "Organisation Page"
 msgstr "Szervezeti oldal"
 
-#: mod/settings.php:631
+#: mod/settings.php:663
 msgid ""
 "Account for an organisation that automatically approves contact requests as "
 "\"Followers\"."
 msgstr "Egy szervezet fiókja, amely automatikusan jóváhagyja a partnerkéréseket, mint például a „követőket”."
 
-#: mod/settings.php:634 src/Module/Admin/BaseUsers.php:108
+#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:109
 msgid "News Page"
 msgstr "Hírek oldal"
 
-#: mod/settings.php:635
+#: mod/settings.php:667
 msgid ""
 "Account for a news reflector that automatically approves contact requests as"
 " \"Followers\"."
 msgstr "Egy hírportál fiókja, amely automatikusan jóváhagyja a partnerkéréseket, mint például a „követőket”."
 
-#: mod/settings.php:638 src/Module/Admin/BaseUsers.php:109
+#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:110
 msgid "Community Forum"
 msgstr "Közösségi fórum"
 
-#: mod/settings.php:639
+#: mod/settings.php:671
 msgid "Account for community discussions."
 msgstr "Közösségi beszélgetések fiókja."
 
-#: mod/settings.php:642 src/Module/Admin/BaseUsers.php:99
+#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:100
 msgid "Normal Account Page"
 msgstr "Normál fiókoldal"
 
-#: mod/settings.php:643
+#: mod/settings.php:675
 msgid ""
 "Account for a regular personal profile that requires manual approval of "
 "\"Friends\" and \"Followers\"."
 msgstr "Egy szokásos személyes profil fiókja, amely az „ismerősök” és a „követők” kézi jóváhagyását igényli."
 
-#: mod/settings.php:646 src/Module/Admin/BaseUsers.php:100
+#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:101
 msgid "Soapbox Page"
 msgstr "Szappantartó oldal"
 
-#: mod/settings.php:647
+#: mod/settings.php:679
 msgid ""
 "Account for a public profile that automatically approves contact requests as"
 " \"Followers\"."
 msgstr "Egy nyilvános profil fiókja, amely automatikusan jóváhagyja a partnerkéréseket, mint például a „követőket”."
 
-#: mod/settings.php:650 src/Module/Admin/BaseUsers.php:101
+#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:102
 msgid "Public Forum"
 msgstr "Nyilvános fórum"
 
-#: mod/settings.php:651
+#: mod/settings.php:683
 msgid "Automatically approves all contact requests."
 msgstr "Automatikusan jóváhagyja az összes partnerkérést."
 
-#: mod/settings.php:654 src/Module/Admin/BaseUsers.php:102
+#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:103
 msgid "Automatic Friend Page"
 msgstr "Automatikus ismerős oldal"
 
-#: mod/settings.php:655
+#: mod/settings.php:687
 msgid ""
 "Account for a popular profile that automatically approves contact requests "
 "as \"Friends\"."
 msgstr "Egy népszerű profil fiókja, amely automatikusan jóváhagyja a partnerkéréseket, mint például az „ismerősöket”."
 
-#: mod/settings.php:658
+#: mod/settings.php:690
 msgid "Private Forum [Experimental]"
 msgstr "Személyes fórum [kísérleti]"
 
-#: mod/settings.php:659
+#: mod/settings.php:691
 msgid "Requires manual approval of contact requests."
 msgstr "A partnerkérések kézi jóváhagyását igényli."
 
-#: mod/settings.php:670
+#: mod/settings.php:702
 msgid "OpenID:"
 msgstr "OpenID:"
 
-#: mod/settings.php:670
+#: mod/settings.php:702
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr "(Kihagyható) Lehetővé teszi ezen OpenID számára, hogy bejelentkezzen ebbe a fiókba."
 
-#: mod/settings.php:678
+#: mod/settings.php:710
 msgid "Publish your profile in your local site directory?"
 msgstr "Közzéteszi a profilját a helyi oldal könyvtárában?"
 
-#: mod/settings.php:678
+#: mod/settings.php:710
 #, php-format
 msgid ""
 "Your profile will be published in this node's <a href=\"%s\">local "
@@ -1601,115 +1581,115 @@ msgid ""
 " system settings."
 msgstr "A profilja közzé lesz téve ennek a csomópontnak a <a href=\"%s\">helyi könyvtárában</a>. A profilrészletei esetleg nyilvánosan láthatóak lehetnek a rendszerbeállításoktól függően."
 
-#: mod/settings.php:684
+#: mod/settings.php:716
 #, php-format
 msgid ""
 "Your profile will also be published in the global friendica directories "
 "(e.g. <a href=\"%s\">%s</a>)."
 msgstr "A profilja közzé lesz téve a globális Friendica könyvtárakban is (például itt: <a href=\"%s\">%s</a>)."
 
-#: mod/settings.php:690
+#: mod/settings.php:722
 #, php-format
 msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr "Az Ön személyazonosság-címe <strong>„%s”</strong> vagy „%s”."
 
-#: mod/settings.php:701
+#: mod/settings.php:733
 msgid "Account Settings"
 msgstr "Fiókbeállítások"
 
-#: mod/settings.php:709
+#: mod/settings.php:741
 msgid "Password Settings"
 msgstr "Jelszóbeállítások"
 
-#: mod/settings.php:710 src/Module/Register.php:161
+#: mod/settings.php:742 src/Module/Register.php:162
 msgid "New Password:"
 msgstr "Új jelszó:"
 
-#: mod/settings.php:710
+#: mod/settings.php:742
 msgid ""
 "Allowed characters are a-z, A-Z, 0-9 and special characters except white "
 "spaces, accentuated letters and colon (:)."
 msgstr "Az engedélyezett karakterek az a-z, A-Z, 0-9 tartományokban lévők és a különleges karakterek, kivéve az üres karaktereket, ékezetes betűket és a kettőspontot (:)."
 
-#: mod/settings.php:711 src/Module/Register.php:162
+#: mod/settings.php:743 src/Module/Register.php:163
 msgid "Confirm:"
 msgstr "Megerősítés:"
 
-#: mod/settings.php:711
+#: mod/settings.php:743
 msgid "Leave password fields blank unless changing"
 msgstr "Hagyja üresen a jelszómezőket, különben megváltozik"
 
-#: mod/settings.php:712
+#: mod/settings.php:744
 msgid "Current Password:"
 msgstr "Jelenlegi jelszó:"
 
-#: mod/settings.php:712
+#: mod/settings.php:744
 msgid "Your current password to confirm the changes"
 msgstr "A jelenlegi jelszava a változtatások megerősítéséhez"
 
-#: mod/settings.php:713
+#: mod/settings.php:745
 msgid "Password:"
 msgstr "Jelszó:"
 
-#: mod/settings.php:713
+#: mod/settings.php:745
 msgid "Your current password to confirm the changes of the email address"
 msgstr "A jelenlegi jelszava az e-mail-címe megváltoztatásának megerősítéséhez"
 
-#: mod/settings.php:716
+#: mod/settings.php:748
 msgid "Delete OpenID URL"
 msgstr "OpenID URL törlése"
 
-#: mod/settings.php:718
+#: mod/settings.php:750
 msgid "Basic Settings"
 msgstr "Alapvető beállítások"
 
-#: mod/settings.php:719 src/Module/Profile/Profile.php:144
+#: mod/settings.php:751 src/Module/Profile/Profile.php:144
 msgid "Full Name:"
 msgstr "Teljes név:"
 
-#: mod/settings.php:720
+#: mod/settings.php:752
 msgid "Email Address:"
 msgstr "E-mail-cím:"
 
-#: mod/settings.php:721
+#: mod/settings.php:753
 msgid "Your Timezone:"
 msgstr "Az Ön időzónája:"
 
-#: mod/settings.php:722
+#: mod/settings.php:754
 msgid "Your Language:"
 msgstr "Az Ön nyelve:"
 
-#: mod/settings.php:722
+#: mod/settings.php:754
 msgid ""
 "Set the language we use to show you friendica interface and to send you "
 "emails"
 msgstr "Annak a nyelvnek a beállítása, amelyet a Friendica felületének megjelenítéséhez és a levelek küldéséhez használunk"
 
-#: mod/settings.php:723
+#: mod/settings.php:755
 msgid "Default Post Location:"
 msgstr "Alapértelmezett bejegyzésküldési hely:"
 
-#: mod/settings.php:724
+#: mod/settings.php:756
 msgid "Use Browser Location:"
 msgstr "Böngésző helyének használata:"
 
-#: mod/settings.php:726
+#: mod/settings.php:758
 msgid "Security and Privacy Settings"
 msgstr "Biztonsági és adatvédelmi beállítások"
 
-#: mod/settings.php:728
+#: mod/settings.php:760
 msgid "Maximum Friend Requests/Day:"
 msgstr "Legtöbb ismerőskérés naponta:"
 
-#: mod/settings.php:728 mod/settings.php:738
+#: mod/settings.php:760 mod/settings.php:770
 msgid "(to prevent spam abuse)"
 msgstr "(a levélszeméttel való visszaélés elkerüléséhez)"
 
-#: mod/settings.php:730
+#: mod/settings.php:762
 msgid "Allow your profile to be searchable globally?"
 msgstr "Engedélyezi, hogy a profilja globálisan kereshető legyen?"
 
-#: mod/settings.php:730
+#: mod/settings.php:762
 msgid ""
 "Activate this setting if you want others to easily find and follow you. Your"
 " profile will be searchable on remote systems. This setting also determines "
@@ -1717,43 +1697,43 @@ msgid ""
 "indexed or not."
 msgstr "Akkor kapcsolja be ezt a beállítást, ha azt szeretné, hogy mások egyszerűen megtalálják és kövessék Önt. A profilja kereshető lesz a távoli rendszereken. Ez a beállítás azt is meghatározza, hogy a Friendica tájékoztatja-e a keresőmotorokat arról, hogy a profilját indexelni kell-e vagy sem."
 
-#: mod/settings.php:731
+#: mod/settings.php:763
 msgid "Hide your contact/friend list from viewers of your profile?"
 msgstr "Elrejti a partnerlistáját vagy ismerőslistáját a profilja megtekintői elől?"
 
-#: mod/settings.php:731
+#: mod/settings.php:763
 msgid ""
 "A list of your contacts is displayed on your profile page. Activate this "
 "option to disable the display of your contact list."
 msgstr "A partnereinek listája a profiloldalán van megjelenítve. Kapcsolja be ezt a beállítást, hogy letiltsa a partnerlistája megjelenítését."
 
-#: mod/settings.php:732
+#: mod/settings.php:764
 msgid "Hide your profile details from anonymous viewers?"
 msgstr "Elrejti a profilja részleteit a névtelen megtekintők elől?"
 
-#: mod/settings.php:732
+#: mod/settings.php:764
 msgid ""
 "Anonymous visitors will only see your profile picture, your display name and"
 " the nickname you are using on your profile page. Your public posts and "
 "replies will still be accessible by other means."
 msgstr "A névtelen látogatók csak azt profilfényképét, megjelenített nevét és becenevét láthatják, amelyet a profiloldalán használ. A nyilvános bejegyzései és válaszai továbbra is elérhetők lesznek más eszközökkel."
 
-#: mod/settings.php:733
+#: mod/settings.php:765
 msgid "Make public posts unlisted"
 msgstr "Nyilvános bejegyzések felsorolatlanná tétele"
 
-#: mod/settings.php:733
+#: mod/settings.php:765
 msgid ""
 "Your public posts will not appear on the community pages or in search "
 "results, nor be sent to relay servers. However they can still appear on "
 "public feeds on remote servers."
 msgstr "A nyilvános bejegyzései nem fognak megjelenni a közösségi oldalakon vagy a keresési találatokban, és nem lesznek elküldve az átjátszó kiszolgálóknak. Azonban továbbra is megjelenhetnek a nyilvános hírforrásokban a távoli kiszolgálókon."
 
-#: mod/settings.php:734
+#: mod/settings.php:766
 msgid "Make all posted pictures accessible"
 msgstr "Az összes beküldött fénykép elérhetővé tétele"
 
-#: mod/settings.php:734
+#: mod/settings.php:766
 msgid ""
 "This option makes every posted picture accessible via the direct link. This "
 "is a workaround for the problem that most other networks can't handle "
@@ -1761,221 +1741,221 @@ msgid ""
 "public on your photo albums though."
 msgstr "Ez a beállítás elérhetővé tesz minden egyes beküldött fényképet a közvetlen hivatkozáson keresztül. Ez egy kerülőmegoldás arra a problémára, hogy a legtöbb más hálózat nem tudja kezelni a fényképek jogosultságait. A nem nyilvános fényképek továbbra sem lesznek láthatóak a nyilvánosság számára a fényképalbumán keresztül."
 
-#: mod/settings.php:735
+#: mod/settings.php:767
 msgid "Allow friends to post to your profile page?"
 msgstr "Engedélyezi az ismerősöknek, hogy beküldjenek a profiloldalára?"
 
-#: mod/settings.php:735
+#: mod/settings.php:767
 msgid ""
 "Your contacts may write posts on your profile wall. These posts will be "
 "distributed to your contacts"
 msgstr "A partnerei bejegyzéseket írhatnak az Ön profilfalára. Ezek a bejegyzések továbbítva lesznek a partnereinek."
 
-#: mod/settings.php:736
+#: mod/settings.php:768
 msgid "Allow friends to tag your posts?"
 msgstr "Engedélyezi az ismerőseinek, hogy címkézzék a bejegyzéseit?"
 
-#: mod/settings.php:736
+#: mod/settings.php:768
 msgid "Your contacts can add additional tags to your posts."
 msgstr "A partnerei további címkéket adhatnak a bejegyzéseihez."
 
-#: mod/settings.php:737
+#: mod/settings.php:769
 msgid "Permit unknown people to send you private mail?"
 msgstr "Engedélyt ad ismeretlen embereknek, hogy személyes levelet küldjenek Önnek?"
 
-#: mod/settings.php:737
+#: mod/settings.php:769
 msgid ""
 "Friendica network users may send you private messages even if they are not "
 "in your contact list."
 msgstr "A Friendica hálózat felhasználói akkor is küldhetnek Önnek személyes üzeneteket, ha nincsenek a partnerlistáján."
 
-#: mod/settings.php:738
+#: mod/settings.php:770
 msgid "Maximum private messages per day from unknown people:"
 msgstr "Legtöbb személyes üzenet naponta az ismeretlen emberektől:"
 
-#: mod/settings.php:740
+#: mod/settings.php:772
 msgid "Default Post Permissions"
 msgstr "Alapértelmezett bejegyzés-jogosultságok"
 
-#: mod/settings.php:744
+#: mod/settings.php:776
 msgid "Expiration settings"
 msgstr "Lejárati jogosultságok"
 
-#: mod/settings.php:745
+#: mod/settings.php:777
 msgid "Automatically expire posts after this many days:"
 msgstr "Bejegyzések automatikus lejárata ennyi nap után:"
 
-#: mod/settings.php:745
+#: mod/settings.php:777
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr "Ha üres, akkor a bejegyzések nem járnak le. A lejárt bejegyzések törölve lesznek."
 
-#: mod/settings.php:746
+#: mod/settings.php:778
 msgid "Expire posts"
 msgstr "Bejegyzések lejárata"
 
-#: mod/settings.php:746
+#: mod/settings.php:778
 msgid "When activated, posts and comments will be expired."
 msgstr "Ha be van kapcsolva, akkor a bejegyzések és a hozzászólások le fognak járni."
 
-#: mod/settings.php:747
+#: mod/settings.php:779
 msgid "Expire personal notes"
 msgstr "Személyes jegyzetek lejárata"
 
-#: mod/settings.php:747
+#: mod/settings.php:779
 msgid ""
 "When activated, the personal notes on your profile page will be expired."
 msgstr "Ha be van kapcsolva, akkor a profiloldalán lévő személyes jegyzetek le fognak járni."
 
-#: mod/settings.php:748
+#: mod/settings.php:780
 msgid "Expire starred posts"
 msgstr "Csillagozott bejegyzések lejárata"
 
-#: mod/settings.php:748
+#: mod/settings.php:780
 msgid ""
 "Starring posts keeps them from being expired. That behaviour is overwritten "
 "by this setting."
 msgstr "A bejegyzések csillagozása megakadályozza azok lejáratát. Ez a viselkedés felülírható ezzel a beállítással."
 
-#: mod/settings.php:749
+#: mod/settings.php:781
 msgid "Expire photos"
 msgstr "Fényképek lejárata"
 
-#: mod/settings.php:749
+#: mod/settings.php:781
 msgid "When activated, photos will be expired."
 msgstr "Ha be van kapcsolva, akkor a fényképek le fognak járni."
 
-#: mod/settings.php:750
+#: mod/settings.php:782
 msgid "Only expire posts by others"
 msgstr "Csak a másoktól származó bejegyzések lejárata"
 
-#: mod/settings.php:750
+#: mod/settings.php:782
 msgid ""
 "When activated, your own posts never expire. Then the settings above are "
 "only valid for posts you received."
 msgstr "Ha be van kapcsolva, akkor a saját bejegyzései sosem járnak le. Ekkor a fenti beállítás csak azokra a bejegyzésekre érvényes, amelyeket megkap."
 
-#: mod/settings.php:753
+#: mod/settings.php:785
 msgid "Notification Settings"
 msgstr "Értesítési beállítások"
 
-#: mod/settings.php:754
+#: mod/settings.php:786
 msgid "Send a notification email when:"
 msgstr "Értesítési e-mail küldése a következő esetekben:"
 
-#: mod/settings.php:755
+#: mod/settings.php:787
 msgid "You receive an introduction"
 msgstr "Egy bemutatkozást fogad"
 
-#: mod/settings.php:756
+#: mod/settings.php:788
 msgid "Your introductions are confirmed"
 msgstr "A bemutatkozásait jóváhagyták"
 
-#: mod/settings.php:757
+#: mod/settings.php:789
 msgid "Someone writes on your profile wall"
 msgstr "Valaki ír a profilfalára"
 
-#: mod/settings.php:758
+#: mod/settings.php:790
 msgid "Someone writes a followup comment"
 msgstr "Valaki egy követő hozzászólást ír"
 
-#: mod/settings.php:759
+#: mod/settings.php:791
 msgid "You receive a private message"
 msgstr "Személyes üzenetet kap"
 
-#: mod/settings.php:760
+#: mod/settings.php:792
 msgid "You receive a friend suggestion"
 msgstr "Ismerősajánlást kap"
 
-#: mod/settings.php:761
+#: mod/settings.php:793
 msgid "You are tagged in a post"
 msgstr "Bejelölték egy bejegyzésben"
 
-#: mod/settings.php:762
+#: mod/settings.php:794
 msgid "You are poked/prodded/etc. in a post"
 msgstr "Megbökték, megdöfték, stb. egy bejegyzésben"
 
-#: mod/settings.php:764
+#: mod/settings.php:796
 msgid "Create a desktop notification when:"
 msgstr "Asztali értesítés létrehozása ekkor:"
 
-#: mod/settings.php:765
+#: mod/settings.php:797
 msgid "Someone liked your content"
 msgstr "Valaki kedvelte az Ön tartalmát"
 
-#: mod/settings.php:766
+#: mod/settings.php:798
 msgid "Someone shared your content"
 msgstr "Valaki megosztotta az Ön tartalmát"
 
-#: mod/settings.php:768
+#: mod/settings.php:800
 msgid "Activate desktop notifications"
 msgstr "Asztali értesítések bekapcsolása"
 
-#: mod/settings.php:768
+#: mod/settings.php:800
 msgid "Show desktop popup on new notifications"
 msgstr "Felugró üzenet megjelenítése az asztalon új értesítések esetén."
 
-#: mod/settings.php:770
+#: mod/settings.php:802
 msgid "Text-only notification emails"
 msgstr "Csak szöveges értesítési e-mailek"
 
-#: mod/settings.php:772
+#: mod/settings.php:804
 msgid "Send text only notification emails, without the html part"
 msgstr "Csak szöveges értesítési e-mailek küldése a HTML rész nélkül."
 
-#: mod/settings.php:774
+#: mod/settings.php:806
 msgid "Show detailled notifications"
 msgstr "Részletes értesítések megjelenítése"
 
-#: mod/settings.php:776
+#: mod/settings.php:808
 msgid ""
 "Per default, notifications are condensed to a single notification per item. "
 "When enabled every notification is displayed."
 msgstr "Alapértelmezetten az értesítések elemenként egyetlen értesítésbe vannak összevonva. Ha engedélyezve van, akkor minden értesítés megjelenik."
 
-#: mod/settings.php:778
+#: mod/settings.php:810
 msgid "Show notifications of ignored contacts"
 msgstr "Figyelmen kívül hagyott partnerek értesítéseinek megjelenítése"
 
-#: mod/settings.php:780
+#: mod/settings.php:812
 msgid ""
 "You don't see posts from ignored contacts. But you still see their comments."
 " This setting controls if you want to still receive regular notifications "
 "that are caused by ignored contacts or not."
 msgstr "Nem látja a figyelmen kívül hagyott partnerektől érkező bejegyzéseket. Viszont továbbra is látja a hozzászólásaikat. Ez a beállítás azt vezérli, hogy továbbra is szeretne-e olyan normál értesítéseket kapni vagy sem, amelyeket figyelmen kívül hagyott partnerek okoznak."
 
-#: mod/settings.php:782
+#: mod/settings.php:814
 msgid "Advanced Account/Page Type Settings"
 msgstr "Speciális fióktípus vagy oldaltípus beállítások"
 
-#: mod/settings.php:783
+#: mod/settings.php:815
 msgid "Change the behaviour of this account for special situations"
 msgstr "A fiók viselkedésének megváltoztatása bizonyos helyzetekre."
 
-#: mod/settings.php:786
+#: mod/settings.php:818
 msgid "Import Contacts"
 msgstr "Partnerek importálása"
 
-#: mod/settings.php:787
+#: mod/settings.php:819
 msgid ""
 "Upload a CSV file that contains the handle of your followed accounts in the "
 "first column you exported from the old account."
 msgstr "Töltsön fel egy olyan CSV-fájlt, amely a követett fiókok kezelőjét tartalmazza az első oszlopban, ahogy a régi fiókból exportálta."
 
-#: mod/settings.php:788
+#: mod/settings.php:820
 msgid "Upload File"
 msgstr "Fájl feltöltése"
 
-#: mod/settings.php:790
+#: mod/settings.php:822
 msgid "Relocate"
 msgstr "Áthelyezés"
 
-#: mod/settings.php:791
+#: mod/settings.php:823
 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 "Ha áthelyezte ezt a profilt egy másik kiszolgálóról, és néhány partnere nem kapta meg a frissítéseket, akkor próbálja meg megnyomni ezt a gombot."
 
-#: mod/settings.php:792
+#: mod/settings.php:824
 msgid "Resend relocate message to contacts"
 msgstr "Áthelyezési üzenet küldése a partnereknek"
 
@@ -1989,7 +1969,7 @@ msgstr "Nem érhetők el javaslatok. Ha ez egy új oldal, akkor próbálja újra
 msgid "Friend Suggestions"
 msgstr "Ismerős javaslatok"
 
-#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2626
+#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2628
 msgid "photo"
 msgstr "fénykép"
 
@@ -2011,7 +1991,7 @@ msgid "Select a tag to remove: "
 msgstr "Eltávolítandó címke kiválasztása: "
 
 #: mod/tagrm.php:126 src/Module/Settings/Delegation.php:179
-#: src/Module/Settings/TwoFactor/Trusted.php:121
+#: src/Module/Settings/TwoFactor/Trusted.php:140
 msgid "Remove"
 msgstr "Eltávolítás"
 
@@ -2019,13 +1999,13 @@ msgstr "Eltávolítás"
 msgid "User imports on closed servers can only be done by an administrator."
 msgstr "A lezárt kiszolgálókon történő felhasználó-importálásokat csak egy adminisztrátor végezheti el."
 
-#: mod/uimport.php:55 src/Module/Register.php:98
+#: mod/uimport.php:55 src/Module/Register.php:99
 msgid ""
 "This site has exceeded the number of allowed daily account registrations. "
 "Please try again tomorrow."
 msgstr "Ez az oldal túllépte a fiókregisztrációk naponta megengedett számát. Próbálja újra holnap."
 
-#: mod/uimport.php:62 src/Module/Register.php:172
+#: mod/uimport.php:62 src/Module/Register.php:173
 msgid "Import"
 msgstr "Importálás"
 
@@ -2109,24 +2089,24 @@ msgstr "A fájl meghaladja a beállított %s méretkorlátot"
 msgid "File upload failed."
 msgstr "A fájl feltöltése sikertelen."
 
-#: mod/wall_upload.php:221 src/Model/Photo.php:984
+#: mod/wall_upload.php:221 src/Model/Photo.php:1008
 msgid "Wall Photos"
 msgstr "Falfényképek"
 
-#: mod/wallmessage.php:61 mod/wallmessage.php:115
+#: mod/wallmessage.php:62 mod/wallmessage.php:116
 #, php-format
 msgid "Number of daily wall messages for %s exceeded. Message failed."
 msgstr "A(z) %s napi falüzeneteinek száma túllépve. Az üzenet sikertelen."
 
-#: mod/wallmessage.php:72
+#: mod/wallmessage.php:73
 msgid "Unable to check your home location."
 msgstr "Nem lehet ellenőrizni az otthona helyét."
 
-#: mod/wallmessage.php:96 mod/wallmessage.php:103
+#: mod/wallmessage.php:97 mod/wallmessage.php:104
 msgid "No recipient."
 msgstr "Nincs címzett."
 
-#: mod/wallmessage.php:129
+#: mod/wallmessage.php:130
 #, php-format
 msgid ""
 "If you wish for %s to respond, please check that the privacy settings on "
@@ -2137,6 +2117,10 @@ msgstr "Ha azt szeretné, hogy %s válaszoljon, ellenőrizze, hogy az Ön oldal
 msgid "No system theme config value set."
 msgstr "Nincs rendszertéma beállítási érték megadva."
 
+#: src/App.php:583
+msgid "Apologies but the website is unavailable at the moment."
+msgstr "Elnézést, de a weboldal jelenleg nem érhető el."
+
 #: src/App/Page.php:250
 msgid "Delete this item?"
 msgstr "Törli ezt az elemet?"
@@ -2151,12 +2135,12 @@ msgstr "Tiltja ezt a szerzőt? Nem lesz képes követni Önt, és a nyilvános b
 msgid "toggle mobile"
 msgstr "váltás mobilra"
 
-#: src/App/Router.php:276
+#: src/App/Router.php:275
 #, php-format
 msgid "Method not allowed for this module. Allowed method(s): %s"
 msgstr "A módszer nem engedélyezett ennél a modulnál. Az engedélyezett módszerek: %s"
 
-#: src/App/Router.php:278 src/Module/HTTPException/PageNotFound.php:33
+#: src/App/Router.php:277 src/Module/HTTPException/PageNotFound.php:33
 msgid "Page not found."
 msgstr "Az oldal nem található."
 
@@ -2164,33 +2148,33 @@ msgstr "Az oldal nem található."
 msgid "You must be logged in to use addons. "
 msgstr "Bejelentkezve kell lennie a bővítmények használatához."
 
-#: src/BaseModule.php:299
+#: src/BaseModule.php:377
 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 "Az űrlap biztonsági tokenje nem volt helyes. Ez valószínűleg azért történt, mert az űrlapot túl hosszan tartották nyitva (>3 óra), mielőtt elküldték volna."
 
-#: src/BaseModule.php:326
+#: src/BaseModule.php:404
 msgid "All contacts"
 msgstr "Összes partner"
 
-#: src/BaseModule.php:331 src/Content/Widget.php:231 src/Core/ACL.php:193
-#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:79
-#: src/Module/PermissionTooltip.php:101
+#: src/BaseModule.php:409 src/Content/Widget.php:231 src/Core/ACL.php:193
+#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:98
+#: src/Module/PermissionTooltip.php:120
 msgid "Followers"
 msgstr "Követők"
 
-#: src/BaseModule.php:336 src/Content/Widget.php:232
+#: src/BaseModule.php:414 src/Content/Widget.php:232
 #: src/Module/Contact.php:368
 msgid "Following"
 msgstr "Követés"
 
-#: src/BaseModule.php:341 src/Content/Widget.php:233
+#: src/BaseModule.php:419 src/Content/Widget.php:233
 #: src/Module/Contact.php:369
 msgid "Mutual friends"
 msgstr "Kölcsönösen ismerősök"
 
-#: src/BaseModule.php:349
+#: src/BaseModule.php:427
 msgid "Common"
 msgstr "Közös"
 
@@ -2504,7 +2488,7 @@ msgid "Visible to <strong>everybody</strong>"
 msgstr "Látható <strong>mindenkinek</strong>"
 
 #: src/Content/Conversation.php:308 src/Module/Item/Compose.php:159
-#: src/Object/Post.php:973
+#: src/Object/Post.php:975
 msgid "Please enter a image/video/audio/webpage URL:"
 msgstr "Írjon be egy kép, videó, hang vagy weboldal URL-t:"
 
@@ -2528,12 +2512,12 @@ msgstr "Törli az elemeket?"
 msgid "New Post"
 msgstr "Új bejegyzés"
 
-#: src/Content/Conversation.php:325
+#: src/Content/Conversation.php:325 src/Object/Post.php:481
 msgid "Share"
 msgstr "Megosztás"
 
 #: src/Content/Conversation.php:336 src/Module/Item/Compose.php:156
-#: src/Object/Post.php:970
+#: src/Object/Post.php:972
 msgid "Image"
 msgstr "Kép"
 
@@ -2741,7 +2725,7 @@ msgstr "több megjelenítése"
 msgid "%1$s poked %2$s"
 msgstr "%1$s megbökte őt: %2$s"
 
-#: src/Content/Item.php:338 src/Model/Item.php:2624
+#: src/Content/Item.php:338 src/Model/Item.php:2626
 msgid "event"
 msgstr "esemény"
 
@@ -2749,43 +2733,43 @@ msgstr "esemény"
 msgid "Follow Thread"
 msgstr "Szál követése"
 
-#: src/Content/Item.php:443 src/Model/Contact.php:1047
+#: src/Content/Item.php:443 src/Model/Contact.php:1060
 msgid "View Status"
 msgstr "Állapot megtekintése"
 
-#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:981
-#: src/Model/Contact.php:1039 src/Model/Contact.php:1048
+#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:994
+#: src/Model/Contact.php:1052 src/Model/Contact.php:1061
 #: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:225
 msgid "View Profile"
 msgstr "Profil megtekintése"
 
-#: src/Content/Item.php:445 src/Model/Contact.php:1049
+#: src/Content/Item.php:445 src/Model/Contact.php:1062
 msgid "View Photos"
 msgstr "Fényképek megtekintése"
 
-#: src/Content/Item.php:446 src/Model/Contact.php:1040
-#: src/Model/Contact.php:1050
+#: src/Content/Item.php:446 src/Model/Contact.php:1053
+#: src/Model/Contact.php:1063
 msgid "Network Posts"
 msgstr "Hálózati bejegyzések"
 
-#: src/Content/Item.php:447 src/Model/Contact.php:1041
-#: src/Model/Contact.php:1051
+#: src/Content/Item.php:447 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1064
 msgid "View Contact"
 msgstr "Partner megtekintése"
 
-#: src/Content/Item.php:448 src/Model/Contact.php:1052
+#: src/Content/Item.php:448 src/Model/Contact.php:1065
 msgid "Send PM"
 msgstr "Személyes üzenet küldése"
 
 #: src/Content/Item.php:449 src/Module/Admin/Blocklist/Contact.php:100
 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154
-#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:355
-#: src/Module/Contact/Profile.php:456
+#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:449
 msgid "Block"
 msgstr "Tiltás"
 
 #: src/Content/Item.php:450 src/Module/Contact.php:399
-#: src/Module/Contact/Profile.php:356 src/Module/Contact/Profile.php:464
+#: src/Module/Contact/Profile.php:349 src/Module/Contact/Profile.php:457
 #: src/Module/Notifications/Introductions.php:132
 #: src/Module/Notifications/Introductions.php:204
 #: src/Module/Notifications/Notification.php:61
@@ -2796,7 +2780,7 @@ msgstr "Mellőzés"
 msgid "Languages"
 msgstr "Nyelvek"
 
-#: src/Content/Item.php:458 src/Model/Contact.php:1053
+#: src/Content/Item.php:458 src/Model/Contact.php:1066
 msgid "Poke"
 msgstr "Megbökés"
 
@@ -2834,7 +2818,7 @@ msgid "Sign in"
 msgstr "Bejelentkezés"
 
 #: src/Content/Nav.php:190 src/Module/BaseProfile.php:56
-#: src/Module/Contact.php:433 src/Module/Contact/Profile.php:387
+#: src/Module/Contact.php:433 src/Module/Contact/Profile.php:380
 #: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:225
 msgid "Status"
 msgstr "Állapot"
@@ -2846,7 +2830,7 @@ msgstr "Az Ön bejegyzései és beszélgetései"
 
 #: src/Content/Nav.php:191 src/Module/BaseProfile.php:48
 #: src/Module/BaseSettings.php:55 src/Module/Contact.php:457
-#: src/Module/Contact/Profile.php:389 src/Module/Profile/Profile.php:241
+#: src/Module/Contact/Profile.php:382 src/Module/Profile/Profile.php:241
 #: src/Module/Welcome.php:57 view/theme/frio/theme.php:226
 msgid "Profile"
 msgstr "Profil"
@@ -2885,7 +2869,7 @@ msgstr "Az Ön személyes jegyzetei"
 msgid "Home"
 msgstr "Kezdőlap"
 
-#: src/Content/Nav.php:216 src/Module/Register.php:167
+#: src/Content/Nav.php:216 src/Module/Register.php:168
 #: src/Module/Security/Login.php:105
 msgid "Register"
 msgstr "Regisztráció"
@@ -2898,7 +2882,7 @@ msgstr "Fiók létrehozása"
 #: src/Module/Settings/TwoFactor/AppSpecific.php:127
 #: src/Module/Settings/TwoFactor/Index.php:111
 #: src/Module/Settings/TwoFactor/Recovery.php:105
-#: src/Module/Settings/TwoFactor/Verify.php:144 view/theme/vier/theme.php:217
+#: src/Module/Settings/TwoFactor/Verify.php:145 view/theme/vier/theme.php:217
 msgid "Help"
 msgstr "Súgó"
 
@@ -2969,7 +2953,7 @@ msgid "Information about this friendica instance"
 msgstr "Információk erről a Friendica példányról"
 
 #: src/Content/Nav.php:266 src/Module/Admin/Tos.php:76
-#: src/Module/BaseAdmin.php:96 src/Module/Register.php:175
+#: src/Module/BaseAdmin.php:96 src/Module/Register.php:176
 #: src/Module/Tos.php:87
 msgid "Terms of Service"
 msgstr "Használati feltételek"
@@ -3004,7 +2988,7 @@ msgid "See all notifications"
 msgstr "Összes értesítés megtekintése"
 
 #: src/Content/Nav.php:280
-msgid "Mark all system notifications seen"
+msgid "Mark all system notifications as seen"
 msgstr "Összes rendszerértesítés megjelölése olvasottként"
 
 #: src/Content/Nav.php:283 view/theme/frio/theme.php:234
@@ -3091,8 +3075,8 @@ msgstr "Kép vagy fénykép"
 msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 msgstr "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 
-#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3154
-#: src/Model/Item.php:3160 src/Model/Item.php:3161
+#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3157
+#: src/Model/Item.php:3163 src/Model/Item.php:3164
 msgid "Link to source"
 msgstr "Hivatkozás a forráshoz"
 
@@ -3247,11 +3231,11 @@ msgstr "Személyek"
 msgid "Organisations"
 msgstr "Szervezetek"
 
-#: src/Content/Widget.php:522 src/Model/Contact.php:1476
+#: src/Content/Widget.php:522 src/Model/Contact.php:1493
 msgid "News"
 msgstr "Hírek"
 
-#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:50
+#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:51
 msgid "All"
 msgstr "Összes"
 
@@ -3302,12 +3286,12 @@ msgid "More Trending Tags"
 msgstr "További népszerű címkék"
 
 #: src/Content/Widget/VCard.php:96 src/Model/Profile.php:373
-#: src/Module/Contact/Profile.php:378 src/Module/Profile/Profile.php:176
+#: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:176
 msgid "XMPP:"
 msgstr "XMPP:"
 
 #: src/Content/Widget/VCard.php:97 src/Model/Profile.php:374
-#: src/Module/Contact/Profile.php:380 src/Module/Profile/Profile.php:180
+#: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:180
 msgid "Matrix:"
 msgstr "Mátrix:"
 
@@ -3324,8 +3308,8 @@ msgstr "Követés megszüntetése"
 msgid "Yourself"
 msgstr "Önmaga"
 
-#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:85
-#: src/Module/PermissionTooltip.php:107
+#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:104
+#: src/Module/PermissionTooltip.php:126
 msgid "Mutuals"
 msgstr "Kölcsönösen ismerősök"
 
@@ -3833,7 +3817,7 @@ msgstr "megbökés"
 
 #: src/Core/L10n.php:420
 msgid "poked"
-msgstr "megbökve"
+msgstr "megbökte őt:"
 
 #: src/Core/L10n.php:421
 msgid "ping"
@@ -3841,7 +3825,7 @@ msgstr "pingelés"
 
 #: src/Core/L10n.php:421
 msgid "pinged"
-msgstr "pingelve"
+msgstr "megpingelte őt:"
 
 #: src/Core/L10n.php:422
 msgid "prod"
@@ -3849,7 +3833,7 @@ msgstr "döfés"
 
 #: src/Core/L10n.php:422
 msgid "prodded"
-msgstr "megdöfve"
+msgstr "megdöfte őt:"
 
 #: src/Core/L10n.php:423
 msgid "slap"
@@ -3857,7 +3841,7 @@ msgstr "ütés"
 
 #: src/Core/L10n.php:423
 msgid "slapped"
-msgstr "megütve"
+msgstr "megütötte őt:"
 
 #: src/Core/L10n.php:424
 msgid "finger"
@@ -3865,15 +3849,15 @@ msgstr "fogdosás"
 
 #: src/Core/L10n.php:424
 msgid "fingered"
-msgstr "megfogdosva"
+msgstr "megfogdosta őt:"
 
 #: src/Core/L10n.php:425
 msgid "rebuff"
-msgstr "elutasítás"
+msgstr "visszautasítás"
 
 #: src/Core/L10n.php:425
 msgid "rebuffed"
-msgstr "elutasítva"
+msgstr "visszautasította őt:"
 
 #: src/Core/Renderer.php:89 src/Core/Renderer.php:118
 #: src/Core/Renderer.php:145 src/Core/Renderer.php:179
@@ -4070,81 +4054,81 @@ msgstr "Belső kiszolgálóhiba"
 msgid "Legacy module file not found: %s"
 msgstr "Az örökölt modulfájl nem található: %s"
 
-#: src/Model/Contact.php:1043 src/Model/Contact.php:1055
+#: src/Model/Contact.php:1056 src/Model/Contact.php:1068
 msgid "UnFollow"
 msgstr "Követés megszüntetése"
 
-#: src/Model/Contact.php:1061 src/Module/Admin/Users/Pending.php:107
+#: src/Model/Contact.php:1074 src/Module/Admin/Users/Pending.php:107
 #: src/Module/Notifications/Introductions.php:130
 #: src/Module/Notifications/Introductions.php:202
 msgid "Approve"
 msgstr "Jóváhagyás"
 
-#: src/Model/Contact.php:1472
+#: src/Model/Contact.php:1489
 msgid "Organisation"
 msgstr "Szervezet"
 
-#: src/Model/Contact.php:1480
+#: src/Model/Contact.php:1497
 msgid "Forum"
 msgstr "Fórum"
 
-#: src/Model/Contact.php:2350
+#: src/Model/Contact.php:2372
 msgid "Disallowed profile URL."
 msgstr "Nem engedélyezett profil URL."
 
-#: src/Model/Contact.php:2355 src/Module/Friendica.php:81
+#: src/Model/Contact.php:2377 src/Module/Friendica.php:81
 msgid "Blocked domain"
 msgstr "Tiltott tartomány"
 
-#: src/Model/Contact.php:2360
+#: src/Model/Contact.php:2382
 msgid "Connect URL missing."
 msgstr "A kapcsolódási URL hiányzik."
 
-#: src/Model/Contact.php:2369
+#: src/Model/Contact.php:2391
 msgid ""
 "The contact could not be added. Please check the relevant network "
 "credentials in your Settings -> Social Networks page."
 msgstr "A partnert nem sikerült hozzáadni. Ellenőrizze a hozzá tartozó hálózat hitelesítési adatait a Beállítások → Közösségi hálózatok oldalon."
 
-#: src/Model/Contact.php:2406
+#: src/Model/Contact.php:2428
 msgid "The profile address specified does not provide adequate information."
 msgstr "A megadott profilcím nem biztosít elegendő információt."
 
-#: src/Model/Contact.php:2408
+#: src/Model/Contact.php:2430
 msgid "No compatible communication protocols or feeds were discovered."
 msgstr "Nem lettek megfelelő kommunikációs protokollok vagy hírforrások felfedezve."
 
-#: src/Model/Contact.php:2411
+#: src/Model/Contact.php:2433
 msgid "An author or name was not found."
 msgstr "Egy szerző vagy név nem található."
 
-#: src/Model/Contact.php:2414
+#: src/Model/Contact.php:2436
 msgid "No browser URL could be matched to this address."
 msgstr "Egyetlen böngésző URL-t sem sikerült illeszteni ehhez a címhez."
 
-#: src/Model/Contact.php:2417
+#: src/Model/Contact.php:2439
 msgid ""
 "Unable to match @-style Identity Address with a known protocol or email "
 "contact."
 msgstr "Nem lehet illeszteni @-stílusú személyazonosság-címet egy ismert protokollal vagy e-mailes partnerrel."
 
-#: src/Model/Contact.php:2418
+#: src/Model/Contact.php:2440
 msgid "Use mailto: in front of address to force email check."
 msgstr "Használja a mailto: előtagot a cím előtt az e-mail-ellenőrzés kényszerítéséhez."
 
-#: src/Model/Contact.php:2424
+#: src/Model/Contact.php:2446
 msgid ""
 "The profile address specified belongs to a network which has been disabled "
 "on this site."
 msgstr "A megadott profilcím egy olyan hálózathoz tartozik, amely le lett tiltva ezen az oldalon."
 
-#: src/Model/Contact.php:2429
+#: src/Model/Contact.php:2451
 msgid ""
 "Limited profile. This person will be unable to receive direct/personal "
 "notifications from you."
 msgstr "Korlátozott profil. Ez a személy nem lesz képes közvetlen vagy személyes értesítéseket fogadni Öntől."
 
-#: src/Model/Contact.php:2488
+#: src/Model/Contact.php:2510
 msgid "Unable to retrieve contact information."
 msgstr "Nem lehet lekérni a partner információit."
 
@@ -4264,33 +4248,33 @@ msgstr "Csoport neve: "
 msgid "Edit groups"
 msgstr "Csoportok szerkesztése"
 
-#: src/Model/Item.php:1677
+#: src/Model/Item.php:1679
 #, php-format
 msgid "Detected languages in this post:\\n%s"
 msgstr "A bejegyzésben felismert nyelvek:\\n%s"
 
-#: src/Model/Item.php:2628
+#: src/Model/Item.php:2630
 msgid "activity"
 msgstr "tevékenység"
 
-#: src/Model/Item.php:2630
+#: src/Model/Item.php:2632
 msgid "comment"
 msgstr "hozzászólás"
 
-#: src/Model/Item.php:2633
+#: src/Model/Item.php:2635
 msgid "post"
 msgstr "bejegyzés"
 
-#: src/Model/Item.php:2770
+#: src/Model/Item.php:2772
 #, php-format
 msgid "Content warning: %s"
 msgstr "Tartalom figyelmeztetés: %s"
 
-#: src/Model/Item.php:3119
+#: src/Model/Item.php:3122
 msgid "bytes"
 msgstr "bájt"
 
-#: src/Model/Item.php:3148 src/Model/Item.php:3149
+#: src/Model/Item.php:3151 src/Model/Item.php:3152
 msgid "View on separate page"
 msgstr "Megtekintés külön oldalon"
 
@@ -4312,7 +4296,7 @@ msgstr "Profilfénykép megváltoztatása"
 msgid "Homepage:"
 msgstr "Honlap:"
 
-#: src/Model/Profile.php:372 src/Module/Contact/Profile.php:382
+#: src/Model/Profile.php:372 src/Module/Contact/Profile.php:375
 #: src/Module/Notifications/Introductions.php:187
 msgid "About:"
 msgstr "Névjegy:"
@@ -4321,120 +4305,120 @@ msgstr "Névjegy:"
 msgid "Atom feed"
 msgstr "Atom hírforrás"
 
-#: src/Model/Profile.php:496 src/Model/Profile.php:593
-msgid "g A l F d"
-msgstr "F j., l, H"
-
-#: src/Model/Profile.php:497
+#: src/Model/Profile.php:502
 msgid "F d"
 msgstr "F j."
 
-#: src/Model/Profile.php:559 src/Model/Profile.php:644
+#: src/Model/Profile.php:566 src/Model/Profile.php:650
 msgid "[today]"
 msgstr "[ma]"
 
-#: src/Model/Profile.php:569
+#: src/Model/Profile.php:575
 msgid "Birthday Reminders"
-msgstr "Születésnapi emlékeztető"
+msgstr "Születésnapi emlékeztetők"
 
-#: src/Model/Profile.php:570
+#: src/Model/Profile.php:576
 msgid "Birthdays this week:"
 msgstr "Születésnapok ezen a héten:"
 
-#: src/Model/Profile.php:631
+#: src/Model/Profile.php:599
+msgid "g A l F d"
+msgstr "F j., l, H"
+
+#: src/Model/Profile.php:637
 msgid "[No description]"
 msgstr "[Nincs leírás]"
 
-#: src/Model/Profile.php:657
+#: src/Model/Profile.php:663
 msgid "Event Reminders"
 msgstr "Eseményemlékeztetők"
 
-#: src/Model/Profile.php:658
+#: src/Model/Profile.php:664
 msgid "Upcoming events the next 7 days:"
 msgstr "Közelgő események a következő 7 napon:"
 
-#: src/Model/Profile.php:846
+#: src/Model/Profile.php:852
 #, php-format
 msgid "OpenWebAuth: %1$s welcomes %2$s"
 msgstr "OpenWebAuth: %1$s üdvözli őt: %2$s"
 
-#: src/Model/Profile.php:978
+#: src/Model/Profile.php:984
 msgid "Hometown:"
 msgstr "Szülőváros:"
 
-#: src/Model/Profile.php:979
+#: src/Model/Profile.php:985
 msgid "Marital Status:"
 msgstr "Családi állapot:"
 
-#: src/Model/Profile.php:980
+#: src/Model/Profile.php:986
 msgid "With:"
 msgstr "Ezzel:"
 
-#: src/Model/Profile.php:981
+#: src/Model/Profile.php:987
 msgid "Since:"
 msgstr "Ekkortól:"
 
-#: src/Model/Profile.php:982
+#: src/Model/Profile.php:988
 msgid "Sexual Preference:"
 msgstr "Szexuális irányultság:"
 
-#: src/Model/Profile.php:983
+#: src/Model/Profile.php:989
 msgid "Political Views:"
 msgstr "Politikai nézetek:"
 
-#: src/Model/Profile.php:984
+#: src/Model/Profile.php:990
 msgid "Religious Views:"
 msgstr "Vallási néztek:"
 
-#: src/Model/Profile.php:985
+#: src/Model/Profile.php:991
 msgid "Likes:"
 msgstr "Kedvelések:"
 
-#: src/Model/Profile.php:986
+#: src/Model/Profile.php:992
 msgid "Dislikes:"
 msgstr "Nem kedvelések:"
 
-#: src/Model/Profile.php:987
+#: src/Model/Profile.php:993
 msgid "Title/Description:"
 msgstr "Cím vagy leírás:"
 
-#: src/Model/Profile.php:988 src/Module/Admin/Summary.php:233
+#: src/Model/Profile.php:994 src/Module/Admin/Summary.php:233
 msgid "Summary"
 msgstr "Összefoglaló"
 
-#: src/Model/Profile.php:989
+#: src/Model/Profile.php:995
 msgid "Musical interests"
 msgstr "Zenei érdeklődések"
 
-#: src/Model/Profile.php:990
+#: src/Model/Profile.php:996
 msgid "Books, literature"
 msgstr "Könyvek, irodalom"
 
-#: src/Model/Profile.php:991
+#: src/Model/Profile.php:997
 msgid "Television"
 msgstr "Televízió"
 
-#: src/Model/Profile.php:992
+#: src/Model/Profile.php:998
 msgid "Film/dance/culture/entertainment"
 msgstr "Film, tánc, kultúra, szórakozás"
 
-#: src/Model/Profile.php:993
+#: src/Model/Profile.php:999
 msgid "Hobbies/Interests"
 msgstr "Hobbik, érdeklődések"
 
-#: src/Model/Profile.php:994
+#: src/Model/Profile.php:1000
 msgid "Love/romance"
 msgstr "Szerelem, romantika"
 
-#: src/Model/Profile.php:995
+#: src/Model/Profile.php:1001
 msgid "Work/employment"
 msgstr "Munka, foglalkoztatás"
 
-#: src/Model/Profile.php:996
+#: src/Model/Profile.php:1002
 msgid "School/education"
 msgstr "Iskola, oktatás"
 
-#: src/Model/Profile.php:997
+#: src/Model/Profile.php:1003
 msgid "Contact information and Social Networks"
 msgstr "Partnerinformációk és közösségi hálózatok"
 
@@ -4708,8 +4692,8 @@ msgstr "Engedélyezés"
 #: src/Module/Admin/Blocklist/Contact.php:94
 #: src/Module/Admin/Blocklist/Server/Add.php:89
 #: src/Module/Admin/Blocklist/Server/Index.php:78
-#: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:65
-#: src/Module/Admin/Logs/Settings.php:80 src/Module/Admin/Logs/View.php:83
+#: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:64
+#: src/Module/Admin/Logs/Settings.php:79 src/Module/Admin/Logs/View.php:83
 #: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:498
 #: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:232
 #: src/Module/Admin/Themes/Details.php:90
@@ -4763,49 +4747,49 @@ msgid ""
 " the open addon registry at %2$s"
 msgstr "Jelenleg nem érhetők el bővítmények az Ön csomópontján. A hivatalos bővítménytároló megtalálható a %1$s oldalon, és esetleg egyéb érdekes bővítményeket is találhat a %2$s címen elérhető nyílt bővítményjegyzékben."
 
-#: src/Module/Admin/BaseUsers.php:53
+#: src/Module/Admin/BaseUsers.php:54
 msgid "List of all users"
 msgstr "Összes felhasználó listája"
 
-#: src/Module/Admin/BaseUsers.php:58
+#: src/Module/Admin/BaseUsers.php:59
 msgid "Active"
 msgstr "Aktív"
 
-#: src/Module/Admin/BaseUsers.php:61
+#: src/Module/Admin/BaseUsers.php:62
 msgid "List of active accounts"
 msgstr "Aktív fiókok listája"
 
-#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:314
+#: src/Module/Admin/BaseUsers.php:67 src/Module/Contact.php:314
 #: src/Module/Contact.php:374
 msgid "Pending"
 msgstr "Függőben"
 
-#: src/Module/Admin/BaseUsers.php:69
+#: src/Module/Admin/BaseUsers.php:70
 msgid "List of pending registrations"
 msgstr "Függőben lévő regisztrációk listája"
 
-#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:322
+#: src/Module/Admin/BaseUsers.php:75 src/Module/Contact.php:322
 #: src/Module/Contact.php:375
 msgid "Blocked"
 msgstr "Tiltva"
 
-#: src/Module/Admin/BaseUsers.php:77
+#: src/Module/Admin/BaseUsers.php:78
 msgid "List of blocked users"
 msgstr "Tiltott felhasználók listája"
 
-#: src/Module/Admin/BaseUsers.php:82
+#: src/Module/Admin/BaseUsers.php:83
 msgid "Deleted"
 msgstr "Törölve"
 
-#: src/Module/Admin/BaseUsers.php:85
+#: src/Module/Admin/BaseUsers.php:86
 msgid "List of pending user deletions"
 msgstr "Függőben lévő felhasználó-törlések listája"
 
-#: src/Module/Admin/BaseUsers.php:103
+#: src/Module/Admin/BaseUsers.php:104
 msgid "Private Forum"
 msgstr "Személyes fórum"
 
-#: src/Module/Admin/BaseUsers.php:110
+#: src/Module/Admin/BaseUsers.php:111
 msgid "Relay"
 msgstr "Továbbítás"
 
@@ -4847,8 +4831,8 @@ msgstr "kijelölés törlése"
 
 #: src/Module/Admin/Blocklist/Contact.php:101
 #: src/Module/Admin/Users/Blocked.php:142 src/Module/Admin/Users/Index.php:156
-#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:355
-#: src/Module/Contact/Profile.php:456
+#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:449
 msgid "Unblock"
 msgstr "Tiltás feloldása"
 
@@ -4890,7 +4874,7 @@ msgstr "Távolítsa el a partnert is"
 #: src/Module/Admin/Blocklist/Contact.php:117
 msgid ""
 "Removes all content related to this contact from the node. Keeps the contact"
-" record. This action canoot be undone."
+" record. This action cannot be undone."
 msgstr "Eltávolítja az ehhez a partnerhez kapcsolódó összes partnert a csomópontról. Megtartja a partner rekordját. Ezt a műveletet nem lehet visszavonni."
 
 #: src/Module/Admin/Blocklist/Contact.php:118
@@ -5146,36 +5130,36 @@ msgid ""
 "following platforms:"
 msgstr "Jelenleg erről a csomópontról %d csomópontnak van tudomása %d regisztrált felhasználóval a következő platformokról:"
 
-#: src/Module/Admin/Item/Delete.php:54
+#: src/Module/Admin/Item/Delete.php:53
 msgid "Item marked for deletion."
 msgstr "Az elem megjelölve törlésre."
 
-#: src/Module/Admin/Item/Delete.php:66 src/Module/BaseAdmin.php:106
+#: src/Module/Admin/Item/Delete.php:65 src/Module/BaseAdmin.php:106
 msgid "Delete Item"
 msgstr "Elem törlése"
 
-#: src/Module/Admin/Item/Delete.php:67
+#: src/Module/Admin/Item/Delete.php:66
 msgid "Delete this Item"
 msgstr "Az elem törlése"
 
-#: src/Module/Admin/Item/Delete.php:68
+#: src/Module/Admin/Item/Delete.php:67
 msgid ""
 "On this page you can delete an item from your node. If the item is a top "
 "level posting, the entire thread will be deleted."
 msgstr "Ezen az oldalon törölhet egy elemet a csomópontjáról. Ha az elem egy felső szintű beküldés, akkor a teljes szál törlésre fog kerülni."
 
-#: src/Module/Admin/Item/Delete.php:69
+#: src/Module/Admin/Item/Delete.php:68
 msgid ""
 "You need to know the GUID of the item. You can find it e.g. by looking at "
 "the display URL. The last part of http://example.com/display/123456 is the "
 "GUID, here 123456."
 msgstr "Tudnia kell az elem GUID értékét. Ezt megtalálhatja például a megjelenített URL-re tekintve. A http://example.com/display/123456 utolsó része a GUID, itt az 123456."
 
-#: src/Module/Admin/Item/Delete.php:70
+#: src/Module/Admin/Item/Delete.php:69
 msgid "GUID"
 msgstr "GUID"
 
-#: src/Module/Admin/Item/Delete.php:70
+#: src/Module/Admin/Item/Delete.php:69
 msgid "The GUID of the item you want to delete."
 msgstr "Annak az elemnek GUID értéke, amelyet törölni szeretne."
 
@@ -5229,51 +5213,51 @@ msgstr "Implicit említés"
 msgid "Source"
 msgstr "Forrás"
 
-#: src/Module/Admin/Logs/Settings.php:48
+#: src/Module/Admin/Logs/Settings.php:47
 #, php-format
 msgid "The logfile '%s' is not writable. No logging possible"
 msgstr "A(z) „%s” naplófájl nem írható. A naplózás nem lehetséges."
 
-#: src/Module/Admin/Logs/Settings.php:72
+#: src/Module/Admin/Logs/Settings.php:71
 msgid "PHP log currently enabled."
 msgstr "A PHP-naplózás jelenleg engedélyezve van."
 
-#: src/Module/Admin/Logs/Settings.php:74
+#: src/Module/Admin/Logs/Settings.php:73
 msgid "PHP log currently disabled."
 msgstr "A PHP-naplózás jelenleg le van tiltva."
 
-#: src/Module/Admin/Logs/Settings.php:81 src/Module/BaseAdmin.php:108
+#: src/Module/Admin/Logs/Settings.php:80 src/Module/BaseAdmin.php:108
 #: src/Module/BaseAdmin.php:109
 msgid "Logs"
 msgstr "Naplók"
 
-#: src/Module/Admin/Logs/Settings.php:83
+#: src/Module/Admin/Logs/Settings.php:82
 msgid "Clear"
 msgstr "Törlés"
 
-#: src/Module/Admin/Logs/Settings.php:87
+#: src/Module/Admin/Logs/Settings.php:86
 msgid "Enable Debugging"
 msgstr "Hibakeresés engedélyezése"
 
-#: src/Module/Admin/Logs/Settings.php:88
+#: src/Module/Admin/Logs/Settings.php:87
 msgid "Log file"
 msgstr "Naplófájl"
 
-#: src/Module/Admin/Logs/Settings.php:88
+#: src/Module/Admin/Logs/Settings.php:87
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr "Írhatónak kell lennie a webkiszolgáló által. Relatívan kell megadni a Friendica felső szintű könyvtárához képest."
 
-#: src/Module/Admin/Logs/Settings.php:89
+#: src/Module/Admin/Logs/Settings.php:88
 msgid "Log level"
 msgstr "Naplózási szint"
 
-#: src/Module/Admin/Logs/Settings.php:91
+#: src/Module/Admin/Logs/Settings.php:90
 msgid "PHP logging"
 msgstr "PHP-naplózás"
 
-#: src/Module/Admin/Logs/Settings.php:92
+#: src/Module/Admin/Logs/Settings.php:91
 msgid ""
 "To temporarily enable logging of PHP errors and warnings you can prepend the"
 " following to the index.php file of your installation. The filename set in "
@@ -5498,7 +5482,7 @@ msgstr "Általános információk"
 msgid "Republish users to directory"
 msgstr "Felhasználók újra közzé tétele a könyvtárba"
 
-#: src/Module/Admin/Site.php:503 src/Module/Register.php:151
+#: src/Module/Admin/Site.php:503 src/Module/Register.php:152
 msgid "Registration"
 msgstr "Regisztráció"
 
@@ -6269,7 +6253,7 @@ msgid ""
 "received."
 msgstr "Lehet „összes” vagy „címkék”. Az „összes” azt jelenti, hogy minden nyilvános bejegyzést meg kell kapni. A „címkék” jelentése, hogy csak a kijelölt címkékkel rendelkező bejegyzéseket kell megkapni."
 
-#: src/Module/Admin/Site.php:610 src/Module/Contact/Profile.php:280
+#: src/Module/Admin/Site.php:610 src/Module/Contact/Profile.php:273
 #: src/Module/Settings/TwoFactor/Index.php:118
 msgid "Disabled"
 msgstr "Letiltva"
@@ -6598,8 +6582,8 @@ msgstr "Adatvédelmi nyilatkozatok megjelenítése"
 #, php-format
 msgid ""
 "Show some informations regarding the needed information to operate the node "
-"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer"
-"\">EU-GDPR</a>."
+"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener "
+"noreferrer\">EU-GDPR</a>."
 msgstr "Néhány információ megjelenítése a csomópont üzemeltetésére vonatkozó szükséges információkról, például az <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">EU-GDPR</a> szerint."
 
 #: src/Module/Admin/Tos.php:79
@@ -6805,17 +6789,17 @@ msgstr "Jegyzet a felhasználótól"
 msgid "Deny"
 msgstr "Elutasítás"
 
-#: src/Module/Api/ApiResponse.php:243
+#: src/Module/Api/ApiResponse.php:272
 #, php-format
 msgid "API endpoint %s %s is not implemented"
 msgstr "A(z) %s %s API-végpont nincs megvalósítva"
 
-#: src/Module/Api/ApiResponse.php:244
+#: src/Module/Api/ApiResponse.php:273
 msgid ""
 "The API endpoint is currently not implemented but might be in the future."
 msgstr "Az API-végpont jelenleg nincs megvalósítva, de ez változhat a jövőben."
 
-#: src/Module/Api/Mastodon/Apps.php:57
+#: src/Module/Api/Mastodon/Apps.php:63
 msgid "Missing parameters"
 msgstr "Hiányzó paraméterek"
 
@@ -6850,7 +6834,7 @@ msgstr "Csak a kezdeti bejegyzéseket némítását lehet megszüntetni"
 msgid "Posts from %s can't be unshared"
 msgstr "%s bejegyzéseinek megosztását nem lehet visszavonni"
 
-#: src/Module/Api/Twitter/ContactEndpoint.php:68
+#: src/Module/Api/Twitter/ContactEndpoint.php:66
 msgid "Contact not found"
 msgstr "A partner nem található"
 
@@ -6952,11 +6936,31 @@ msgstr "Bővítményszolgáltatások"
 msgid "User registrations waiting for confirmation"
 msgstr "Megerősítésre váró felhasználói regisztrációk"
 
-#: src/Module/BaseApi.php:274 src/Module/BaseApi.php:290
-#: src/Module/BaseApi.php:306
+#: src/Module/BaseApi.php:241 src/Module/BaseApi.php:257
+#: src/Module/BaseApi.php:273
 msgid "Too Many Requests"
 msgstr "Túl sok kérés"
 
+#: src/Module/BaseApi.php:242
+#, php-format
+msgid "Daily posting limit of %d post reached. The post was rejected."
+msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
+msgstr[0] "A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
+msgstr[1] "A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
+
+#: src/Module/BaseApi.php:258
+#, php-format
+msgid "Weekly posting limit of %d post reached. The post was rejected."
+msgid_plural ""
+"Weekly posting limit of %d posts reached. The post was rejected."
+msgstr[0] "A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
+msgstr[1] "A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
+
+#: src/Module/BaseApi.php:274
+#, php-format
+msgid "Monthly posting limit of %d post reached. The post was rejected."
+msgstr "A havi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva."
+
 #: src/Module/BaseProfile.php:51 src/Module/Contact.php:460
 msgid "Profile Details"
 msgstr "Profil részletei"
@@ -7085,8 +7089,8 @@ msgstr "Találatok erre: %s"
 msgid "Update"
 msgstr "Frissítés"
 
-#: src/Module/Contact.php:399 src/Module/Contact/Profile.php:356
-#: src/Module/Contact/Profile.php:464
+#: src/Module/Contact.php:399 src/Module/Contact/Profile.php:349
+#: src/Module/Contact/Profile.php:457
 msgid "Unignore"
 msgstr "Mellőzés feloldása"
 
@@ -7134,376 +7138,344 @@ msgstr "Függőben lévő kimenő partnerkérés"
 msgid "Pending incoming contact request"
 msgstr "Függőben lévő bejövő partnerkérés"
 
-#: src/Module/Contact.php:552 src/Module/Contact/Profile.php:341
+#: src/Module/Contact.php:552 src/Module/Contact/Profile.php:334
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr "%s profiljának megtekintése [%s]"
 
-#: src/Module/Contact/Advanced.php:109
+#: src/Module/Contact/Advanced.php:99
 msgid "Contact update failed."
 msgstr "A partner frissítése sikertelen."
 
-#: src/Module/Contact/Advanced.php:124
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr "<strong>FIGYELMEZTETÉS: ez erősen speciális</strong>, és ha hibás információkat ad meg, akkor a partnerrel való kommunikációi esetleg nem működnek többé."
-
-#: src/Module/Contact/Advanced.php:125
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "Használja a böngésző „Vissza” gombját <strong>most</strong>, ha nem biztos abban, hogy mit kell tenni ezen az oldalon."
-
-#: src/Module/Contact/Advanced.php:145
+#: src/Module/Contact/Advanced.php:130
 msgid "Return to contact editor"
 msgstr "Visszatérés a partnerszerkesztőhöz"
 
-#: src/Module/Contact/Advanced.php:150
+#: src/Module/Contact/Advanced.php:135
 msgid "Account Nickname"
 msgstr "Fiók beceneve"
 
-#: src/Module/Contact/Advanced.php:151
-msgid "@Tagname - overrides Name/Nickname"
-msgstr "@Címkenév – felülbírálja a nevet vagy a becenevet"
-
-#: src/Module/Contact/Advanced.php:152
+#: src/Module/Contact/Advanced.php:136
 msgid "Account URL"
 msgstr "Fiók URL"
 
-#: src/Module/Contact/Advanced.php:153
-msgid "Account URL Alias"
-msgstr "Fiók URL álneve"
-
-#: src/Module/Contact/Advanced.php:154
-msgid "Friend Request URL"
-msgstr "Ismerőskérési URL"
-
-#: src/Module/Contact/Advanced.php:155
-msgid "Friend Confirm URL"
-msgstr "Ismerősmegerősítési URL"
-
-#: src/Module/Contact/Advanced.php:156
-msgid "Notification Endpoint URL"
-msgstr "Értesítésvégpont URL"
-
-#: src/Module/Contact/Advanced.php:157
+#: src/Module/Contact/Advanced.php:137
 msgid "Poll/Feed URL"
 msgstr "Lekérés vagy hírforrás URL"
 
-#: src/Module/Contact/Advanced.php:158
+#: src/Module/Contact/Advanced.php:138
 msgid "New photo from this URL"
 msgstr "Új fénykép erről az URL-ről"
 
-#: src/Module/Contact/Contacts.php:31 src/Module/Conversation/Network.php:168
+#: src/Module/Contact/Contacts.php:50 src/Module/Conversation/Network.php:187
 #: src/Module/Group.php:103
 msgid "Invalid contact."
 msgstr "Érvénytelen partner."
 
-#: src/Module/Contact/Contacts.php:54
+#: src/Module/Contact/Contacts.php:73
 msgid "No known contacts."
 msgstr "Nincsenek ismert partnerek."
 
-#: src/Module/Contact/Contacts.php:68 src/Module/Profile/Common.php:98
+#: src/Module/Contact/Contacts.php:87 src/Module/Profile/Common.php:98
 msgid "No common contacts."
 msgstr "Nincsenek közös partnerek."
 
-#: src/Module/Contact/Contacts.php:80 src/Module/Profile/Contacts.php:96
+#: src/Module/Contact/Contacts.php:99 src/Module/Profile/Contacts.php:96
 #, php-format
 msgid "Follower (%s)"
 msgid_plural "Followers (%s)"
 msgstr[0] "Követő (%s)"
 msgstr[1] "Követők (%s)"
 
-#: src/Module/Contact/Contacts.php:84 src/Module/Profile/Contacts.php:99
+#: src/Module/Contact/Contacts.php:103 src/Module/Profile/Contacts.php:99
 #, php-format
 msgid "Following (%s)"
 msgid_plural "Following (%s)"
 msgstr[0] "Követés (%s)"
 msgstr[1] "Követés (%s)"
 
-#: src/Module/Contact/Contacts.php:88 src/Module/Profile/Contacts.php:102
+#: src/Module/Contact/Contacts.php:107 src/Module/Profile/Contacts.php:102
 #, php-format
 msgid "Mutual friend (%s)"
 msgid_plural "Mutual friends (%s)"
 msgstr[0] "Kölcsönösen ismerősök (%s)"
 msgstr[1] "Kölcsönösen ismerősök (%s)"
 
-#: src/Module/Contact/Contacts.php:90 src/Module/Profile/Contacts.php:104
+#: src/Module/Contact/Contacts.php:109 src/Module/Profile/Contacts.php:104
 #, php-format
 msgid "These contacts both follow and are followed by <strong>%s</strong>."
 msgstr "Ezeket a partnereket <strong>%s</strong> követi és ők is követik őt."
 
-#: src/Module/Contact/Contacts.php:96 src/Module/Profile/Common.php:86
+#: src/Module/Contact/Contacts.php:115 src/Module/Profile/Common.php:86
 #, php-format
 msgid "Common contact (%s)"
 msgid_plural "Common contacts (%s)"
 msgstr[0] "Közös partner (%s)"
 msgstr[1] "Közös partnerek (%s)"
 
-#: src/Module/Contact/Contacts.php:98 src/Module/Profile/Common.php:88
+#: src/Module/Contact/Contacts.php:117 src/Module/Profile/Common.php:88
 #, php-format
 msgid ""
 "Both <strong>%s</strong> and yourself have publicly interacted with these "
 "contacts (follow, comment or likes on public posts)."
 msgstr "<strong>%s</strong> és Ön is nyilvánosan kapcsolatba léptek ezekkel a partnerekkel (követés, hozzászólás vagy kedvelések a nyilvános bejegyzéseknél)."
 
-#: src/Module/Contact/Contacts.php:104 src/Module/Profile/Contacts.php:110
+#: src/Module/Contact/Contacts.php:123 src/Module/Profile/Contacts.php:110
 #, php-format
 msgid "Contact (%s)"
 msgid_plural "Contacts (%s)"
 msgstr[0] "Partner (%s)"
 msgstr[1] "Partnerek (%s)"
 
-#: src/Module/Contact/Poke.php:116
+#: src/Module/Contact/Poke.php:135
 msgid "Error while sending poke, please retry."
 msgstr "Hiba a bökés küldése során. Próbálja újra."
 
-#: src/Module/Contact/Poke.php:129 src/Module/Search/Acl.php:54
+#: src/Module/Contact/Poke.php:148 src/Module/Search/Acl.php:54
 msgid "You must be logged in to use this module."
 msgstr "Bejelentkezve kell lennie a modul használatához."
 
-#: src/Module/Contact/Poke.php:152
+#: src/Module/Contact/Poke.php:171
 msgid "Poke/Prod"
 msgstr "Bökés vagy döfés"
 
-#: src/Module/Contact/Poke.php:153
+#: src/Module/Contact/Poke.php:172
 msgid "poke, prod or do other things to somebody"
-msgstr "bökés, döfés vagy egyéb dolgok művelése valakivel"
+msgstr "Bökés, döfés vagy egyéb dolgok művelése valakivel."
 
-#: src/Module/Contact/Poke.php:155
+#: src/Module/Contact/Poke.php:174
 msgid "Choose what you wish to do to recipient"
 msgstr "Válassza ki, hogy mit szeretne tenni a címzettel"
 
-#: src/Module/Contact/Poke.php:156
+#: src/Module/Contact/Poke.php:175
 msgid "Make this post private"
 msgstr "A bejegyzés személyessé tétele"
 
-#: src/Module/Contact/Profile.php:134
+#: src/Module/Contact/Profile.php:127
 msgid "Failed to update contact record."
 msgstr "Nem sikerült frissíteni a partner rekordját."
 
-#: src/Module/Contact/Profile.php:184
+#: src/Module/Contact/Profile.php:177
 msgid "Contact has been unblocked"
 msgstr "A partner tiltása fel lett oldva"
 
-#: src/Module/Contact/Profile.php:188
+#: src/Module/Contact/Profile.php:181
 msgid "Contact has been blocked"
 msgstr "A partner tiltva lett"
 
-#: src/Module/Contact/Profile.php:200
+#: src/Module/Contact/Profile.php:193
 msgid "Contact has been unignored"
 msgstr "A partner figyelmen kívül hagyása fel lett oldva"
 
-#: src/Module/Contact/Profile.php:204
+#: src/Module/Contact/Profile.php:197
 msgid "Contact has been ignored"
 msgstr "A partner figyelmen kívül lett hagyva"
 
-#: src/Module/Contact/Profile.php:236
+#: src/Module/Contact/Profile.php:229
 #, php-format
 msgid "You are mutual friends with %s"
 msgstr "Ön kölcsönösen ismerős %s partnerrel"
 
-#: src/Module/Contact/Profile.php:237
+#: src/Module/Contact/Profile.php:230
 #, php-format
 msgid "You are sharing with %s"
 msgstr "Ön megoszt %s partnerrel"
 
-#: src/Module/Contact/Profile.php:238
+#: src/Module/Contact/Profile.php:231
 #, php-format
 msgid "%s is sharing with you"
 msgstr "%s megoszt Önnel"
 
-#: src/Module/Contact/Profile.php:254
+#: src/Module/Contact/Profile.php:247
 msgid "Private communications are not available for this contact."
 msgstr "A személyes kommunikációk nem érhetők el ennél a partnernél."
 
-#: src/Module/Contact/Profile.php:256
+#: src/Module/Contact/Profile.php:249
 msgid "Never"
 msgstr "Soha"
 
-#: src/Module/Contact/Profile.php:259
+#: src/Module/Contact/Profile.php:252
 msgid "(Update was not successful)"
 msgstr "(a frissítés nem volt sikeres)"
 
-#: src/Module/Contact/Profile.php:259
+#: src/Module/Contact/Profile.php:252
 msgid "(Update was successful)"
 msgstr "(a frissítés sikeres volt)"
 
-#: src/Module/Contact/Profile.php:261 src/Module/Contact/Profile.php:427
+#: src/Module/Contact/Profile.php:254 src/Module/Contact/Profile.php:420
 msgid "Suggest friends"
 msgstr "Ismerősök ajánlása"
 
-#: src/Module/Contact/Profile.php:265
+#: src/Module/Contact/Profile.php:258
 #, php-format
 msgid "Network type: %s"
 msgstr "Hálózat típusa: %s"
 
-#: src/Module/Contact/Profile.php:270
+#: src/Module/Contact/Profile.php:263
 msgid "Communications lost with this contact!"
 msgstr "A kommunikációk megszakadtak ezzel a partnerrel!"
 
-#: src/Module/Contact/Profile.php:276
+#: src/Module/Contact/Profile.php:269
 msgid "Fetch further information for feeds"
 msgstr "További információk lekérése a hírforrásokhoz"
 
-#: src/Module/Contact/Profile.php:278
+#: src/Module/Contact/Profile.php:271
 msgid ""
 "Fetch information like preview pictures, title and teaser from the feed "
 "item. You can activate this if the feed doesn't contain much text. Keywords "
 "are taken from the meta header in the feed item and are posted as hash tags."
 msgstr "Információk lekérése a hírforrás eleméből, mint például előnézeti képek, cím és előzetes. Akkor kapcsolhatja be ezt, ha a hírforrás nem tartalmaz sok szöveget. A kulcsszavak a hírforrás elemében lévő metafejlécéből lesznek kiszedve, és kettős keresztes címkékként lesznek beküldve."
 
-#: src/Module/Contact/Profile.php:281
+#: src/Module/Contact/Profile.php:274
 msgid "Fetch information"
 msgstr "Információk lekérése"
 
-#: src/Module/Contact/Profile.php:282
+#: src/Module/Contact/Profile.php:275
 msgid "Fetch keywords"
 msgstr "Kulcsszavak lekérése"
 
-#: src/Module/Contact/Profile.php:283
+#: src/Module/Contact/Profile.php:276
 msgid "Fetch information and keywords"
 msgstr "Információk és kulcsszavak lekérése"
 
-#: src/Module/Contact/Profile.php:293 src/Module/Contact/Profile.php:299
-#: src/Module/Contact/Profile.php:304 src/Module/Contact/Profile.php:310
+#: src/Module/Contact/Profile.php:286 src/Module/Contact/Profile.php:292
+#: src/Module/Contact/Profile.php:297 src/Module/Contact/Profile.php:303
 msgid "No mirroring"
 msgstr "Nincs tükrözés"
 
-#: src/Module/Contact/Profile.php:294
+#: src/Module/Contact/Profile.php:287
 msgid "Mirror as forwarded posting"
 msgstr "Tükrözés továbbított beküldésként"
 
-#: src/Module/Contact/Profile.php:295 src/Module/Contact/Profile.php:305
-#: src/Module/Contact/Profile.php:311
+#: src/Module/Contact/Profile.php:288 src/Module/Contact/Profile.php:298
+#: src/Module/Contact/Profile.php:304
 msgid "Mirror as my own posting"
 msgstr "Tükrözés saját beküldésként"
 
-#: src/Module/Contact/Profile.php:300 src/Module/Contact/Profile.php:306
+#: src/Module/Contact/Profile.php:293 src/Module/Contact/Profile.php:299
 msgid "Native reshare"
 msgstr "Natív újra megosztás"
 
-#: src/Module/Contact/Profile.php:323
+#: src/Module/Contact/Profile.php:316
 msgid "Contact Information / Notes"
 msgstr "Partner információ vagy jegyzetek"
 
-#: src/Module/Contact/Profile.php:324
+#: src/Module/Contact/Profile.php:317
 msgid "Contact Settings"
 msgstr "Partnerbeállítások"
 
-#: src/Module/Contact/Profile.php:332
+#: src/Module/Contact/Profile.php:325
 msgid "Contact"
 msgstr "Partner"
 
-#: src/Module/Contact/Profile.php:336
+#: src/Module/Contact/Profile.php:329
 msgid "Their personal note"
 msgstr "A személyes jegyzeteik"
 
-#: src/Module/Contact/Profile.php:338
+#: src/Module/Contact/Profile.php:331
 msgid "Edit contact notes"
 msgstr "Partner jegyzeteinek szerkesztése"
 
-#: src/Module/Contact/Profile.php:342
+#: src/Module/Contact/Profile.php:335
 msgid "Block/Unblock contact"
 msgstr "Partner tiltása vagy tiltásának feloldása"
 
-#: src/Module/Contact/Profile.php:343
+#: src/Module/Contact/Profile.php:336
 msgid "Ignore contact"
 msgstr "Partner mellőzése"
 
-#: src/Module/Contact/Profile.php:344
+#: src/Module/Contact/Profile.php:337
 msgid "View conversations"
 msgstr "Beszélgetések megtekintése"
 
-#: src/Module/Contact/Profile.php:349
+#: src/Module/Contact/Profile.php:342
 msgid "Last update:"
 msgstr "Utolsó frissítés:"
 
-#: src/Module/Contact/Profile.php:351
+#: src/Module/Contact/Profile.php:344
 msgid "Update public posts"
 msgstr "Nyilvános bejegyzések frissítése"
 
-#: src/Module/Contact/Profile.php:353 src/Module/Contact/Profile.php:437
+#: src/Module/Contact/Profile.php:346 src/Module/Contact/Profile.php:430
 msgid "Update now"
 msgstr "Frissítés most"
 
-#: src/Module/Contact/Profile.php:360
+#: src/Module/Contact/Profile.php:353
 msgid "Currently blocked"
 msgstr "Jelenleg tiltva"
 
-#: src/Module/Contact/Profile.php:361
+#: src/Module/Contact/Profile.php:354
 msgid "Currently ignored"
 msgstr "Jelenleg mellőzve"
 
-#: src/Module/Contact/Profile.php:362
+#: src/Module/Contact/Profile.php:355
 msgid "Currently archived"
 msgstr "Jelenleg archiválva"
 
-#: src/Module/Contact/Profile.php:363
+#: src/Module/Contact/Profile.php:356
 msgid "Awaiting connection acknowledge"
 msgstr "Várakozás a kapcsolat nyugtázására"
 
-#: src/Module/Contact/Profile.php:364
+#: src/Module/Contact/Profile.php:357
 #: src/Module/Notifications/Introductions.php:190
 msgid "Hide this contact from others"
 msgstr "A partner elrejtése mások elől"
 
-#: src/Module/Contact/Profile.php:364
+#: src/Module/Contact/Profile.php:357
 msgid ""
 "Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr "A nyilvános bejegyzéseire adott válaszok vagy kedvelések továbbra is láthatóak <strong>lehetnek</strong>."
 
-#: src/Module/Contact/Profile.php:365
+#: src/Module/Contact/Profile.php:358
 msgid "Notification for new posts"
 msgstr "Értesítés új bejegyzéseknél"
 
-#: src/Module/Contact/Profile.php:365
+#: src/Module/Contact/Profile.php:358
 msgid "Send a notification of every new post of this contact"
 msgstr "Értesítés küldése a partner minden új bejegyzéséről."
 
-#: src/Module/Contact/Profile.php:367
+#: src/Module/Contact/Profile.php:360
 msgid "Keyword Deny List"
 msgstr "Kulcsszavas tiltólista"
 
-#: src/Module/Contact/Profile.php:367
+#: src/Module/Contact/Profile.php:360
 msgid ""
 "Comma separated list of keywords that should not be converted to hashtags, "
 "when \"Fetch information and keywords\" is selected"
 msgstr "Kulcsszavak vesszővel elválasztott listája, amelyeket nem szabad kettős keresztes címkékké átalakítani, ha az „Információk és kulcsszavak lekérése” ki van jelölve."
 
-#: src/Module/Contact/Profile.php:385
+#: src/Module/Contact/Profile.php:378
 #: src/Module/Settings/TwoFactor/Index.php:132
 msgid "Actions"
 msgstr "Műveletek"
 
-#: src/Module/Contact/Profile.php:393
+#: src/Module/Contact/Profile.php:386
 msgid "Mirror postings from this contact"
 msgstr "Beküldés tükrözése ettől a partnertől"
 
-#: src/Module/Contact/Profile.php:395
+#: src/Module/Contact/Profile.php:388
 msgid ""
 "Mark this contact as remote_self, this will cause friendica to repost new "
 "entries from this contact."
 msgstr "A partner megjelölése távoli önmagaként. Ezt azt fogja okozni, hogy a Friendica újraküldi az ettől a partnertől származó új bejegyzéseket."
 
-#: src/Module/Contact/Profile.php:447
+#: src/Module/Contact/Profile.php:440
 msgid "Refetch contact data"
 msgstr "Partneradatok ismételt lekérése"
 
-#: src/Module/Contact/Profile.php:458
+#: src/Module/Contact/Profile.php:451
 msgid "Toggle Blocked status"
 msgstr "Tiltott állapot átváltása"
 
-#: src/Module/Contact/Profile.php:466
+#: src/Module/Contact/Profile.php:459
 msgid "Toggle Ignored status"
 msgstr "Mellőzött állapot átváltása"
 
-#: src/Module/Contact/Profile.php:473 src/Module/Contact/Revoke.php:107
+#: src/Module/Contact/Profile.php:466 src/Module/Contact/Revoke.php:107
 msgid "Revoke Follow"
 msgstr "Követés visszavonása"
 
-#: src/Module/Contact/Profile.php:475
+#: src/Module/Contact/Profile.php:468
 msgid "Revoke the follow from this contact"
 msgstr "A követés visszavonása ettől a partnertől"
 
@@ -7543,7 +7515,7 @@ msgstr "Valóban vissza szeretné vonni ennek a partnernek a követését? Ezt a
 
 #: src/Module/Contact/Revoke.php:109
 #: src/Module/Notifications/Introductions.php:142
-#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:129
+#: src/Module/OAuth/Acknowledge.php:53 src/Module/Register.php:130
 msgid "Yes"
 msgstr "Igen"
 
@@ -7594,45 +7566,45 @@ msgstr "A közösségi beállítás nem érhető el."
 msgid "Not available."
 msgstr "Nem érhető el."
 
-#: src/Module/Conversation/Network.php:154
+#: src/Module/Conversation/Network.php:173
 msgid "No such group"
 msgstr "Nincs ilyen csoport"
 
-#: src/Module/Conversation/Network.php:158
+#: src/Module/Conversation/Network.php:177
 #, php-format
 msgid "Group: %s"
 msgstr "Csoport: %s"
 
-#: src/Module/Conversation/Network.php:234
+#: src/Module/Conversation/Network.php:253
 msgid "Latest Activity"
 msgstr "Legutóbbi tevékenység"
 
-#: src/Module/Conversation/Network.php:237
+#: src/Module/Conversation/Network.php:256
 msgid "Sort by latest activity"
 msgstr "Rendezés a legutóbbi tevékenység szerint"
 
-#: src/Module/Conversation/Network.php:242
+#: src/Module/Conversation/Network.php:261
 msgid "Latest Posts"
 msgstr "Legutóbbi bejegyzések"
 
-#: src/Module/Conversation/Network.php:245
+#: src/Module/Conversation/Network.php:264
 msgid "Sort by post received date"
 msgstr "Rendezés a bejegyzés érkezési dátuma szerint"
 
-#: src/Module/Conversation/Network.php:250
+#: src/Module/Conversation/Network.php:269
 #: src/Module/Settings/Profile/Index.php:227
 msgid "Personal"
 msgstr "Személyes"
 
-#: src/Module/Conversation/Network.php:253
+#: src/Module/Conversation/Network.php:272
 msgid "Posts that mention or involve you"
 msgstr "Bejegyzések, amelyek említik vagy tartalmazzák Önt"
 
-#: src/Module/Conversation/Network.php:258 src/Object/Post.php:321
+#: src/Module/Conversation/Network.php:277 src/Object/Post.php:321
 msgid "Starred"
 msgstr "Csillagozott"
 
-#: src/Module/Conversation/Network.php:261
+#: src/Module/Conversation/Network.php:280
 msgid "Favourite Posts"
 msgstr "Kedvenc bejegyzések"
 
@@ -7905,21 +7877,26 @@ msgstr "WebFinger diagnosztika"
 msgid "Lookup address:"
 msgstr "Keresési cím:"
 
-#: src/Module/Delegation.php:142
+#: src/Module/Delegation.php:111
+#, php-format
+msgid "You are now logged in as %s"
+msgstr "Most a következő néven van bejelentkezve: %s"
+
+#: src/Module/Delegation.php:143
 msgid "Switch between your accounts"
 msgstr "Váltás a fiókjai között"
 
-#: src/Module/Delegation.php:143
+#: src/Module/Delegation.php:144
 msgid "Manage your accounts"
 msgstr "Fiókok kezelése"
 
-#: src/Module/Delegation.php:144
+#: src/Module/Delegation.php:145
 msgid ""
 "Toggle between different identities or community/group pages which share "
 "your account details or which you have been granted \"manage\" permissions"
 msgstr "Váltás a különböző személyazonosságok vagy közösségi és csoportoldalak között, amelyek megosztják a fiókja részleteit, vagy amelyeket „kezelés” jogosultságokkal ruházott fel"
 
-#: src/Module/Delegation.php:145
+#: src/Module/Delegation.php:146
 msgid "Select an identity to manage: "
 msgstr "A kezelendő személyazonosság kiválasztása: "
 
@@ -8443,7 +8420,7 @@ msgid "Claims to be known to you: "
 msgstr "Azt állítja, hogy Ön ismeri: "
 
 #: src/Module/Notifications/Introductions.php:142
-#: src/Module/OAuth/Acknowledge.php:48 src/Module/Register.php:130
+#: src/Module/OAuth/Acknowledge.php:54 src/Module/Register.php:131
 msgid "No"
 msgstr "Nem"
 
@@ -8507,11 +8484,11 @@ msgstr "Saját értesítések"
 msgid "Show unread"
 msgstr "Olvasatlanok megjelenítése"
 
-#: src/Module/OAuth/Acknowledge.php:44
+#: src/Module/OAuth/Acknowledge.php:50
 msgid "Authorize application connection"
 msgstr "Alkalmazáskapcsolat felhatalmazása"
 
-#: src/Module/OAuth/Acknowledge.php:46
+#: src/Module/OAuth/Acknowledge.php:52
 msgid ""
 "Do you want to authorize this application to access your posts and contacts,"
 " and/or create new posts for you?"
@@ -8521,7 +8498,7 @@ msgstr "Szeretné felhatalmazni ezt az alkalmazást, hogy hozzáférjen a bejegy
 msgid "Unsupported or missing response type"
 msgstr "Nem támogatott vagy hiányzó választípus"
 
-#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:65
+#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:72
 msgid "Incomplete request data"
 msgstr "Befejezetlen kérésadat"
 
@@ -8532,24 +8509,24 @@ msgid ""
 "close this window: %s"
 msgstr "Másolja be a következő hitelesítési kódot az alkalmazásába, és zárja be ezt az ablakot: %s"
 
-#: src/Module/OAuth/Token.php:89
+#: src/Module/OAuth/Token.php:96
 msgid "Unsupported or missing grant type"
 msgstr "Nem támogatott vagy hiányzó felhatalmazástípus"
 
-#: src/Module/PermissionTooltip.php:25
+#: src/Module/PermissionTooltip.php:44
 #, php-format
 msgid "Wrong type \"%s\", expected one of: %s"
 msgstr "Hibás típus: „%s”, a következők egyike várt: %s"
 
-#: src/Module/PermissionTooltip.php:42
+#: src/Module/PermissionTooltip.php:61
 msgid "Model not found"
 msgstr "A modell nem található"
 
-#: src/Module/PermissionTooltip.php:64
+#: src/Module/PermissionTooltip.php:83
 msgid "Remote privacy information not available."
 msgstr "A távoli adatvédelmi információk nem érhetők el."
 
-#: src/Module/PermissionTooltip.php:73
+#: src/Module/PermissionTooltip.php:92
 msgid "Visible to:"
 msgstr "Látható nekik:"
 
@@ -8630,19 +8607,19 @@ msgstr "Megtekintés másként"
 
 #: src/Module/Profile/Profile.php:326 src/Module/Profile/Profile.php:329
 #: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68
-#: src/Protocol/Feed.php:953 src/Protocol/OStatus.php:1242
+#: src/Protocol/Feed.php:985 src/Protocol/OStatus.php:1242
 #, php-format
 msgid "%s's timeline"
 msgstr "%s idővonala"
 
 #: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:66
-#: src/Protocol/Feed.php:957 src/Protocol/OStatus.php:1246
+#: src/Protocol/Feed.php:989 src/Protocol/OStatus.php:1246
 #, php-format
 msgid "%s's posts"
 msgstr "%s bejegyzései"
 
 #: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:67
-#: src/Protocol/Feed.php:960 src/Protocol/OStatus.php:1249
+#: src/Protocol/Feed.php:992 src/Protocol/OStatus.php:1249
 #, php-format
 msgid "%s's comments"
 msgstr "%s hozzászólásai"
@@ -8659,137 +8636,137 @@ msgstr "Tartalom"
 msgid "Remove post"
 msgstr "Bejegyzés eltávolítása"
 
-#: src/Module/Register.php:83
+#: src/Module/Register.php:84
 msgid "Only parent users can create additional accounts."
 msgstr "Csak fölérendelt felhasználók hozhatnak létre további fiókokat."
 
-#: src/Module/Register.php:115
+#: src/Module/Register.php:116
 msgid ""
 "You may (optionally) fill in this form via OpenID by supplying your OpenID "
 "and clicking \"Register\"."
 msgstr "Kitöltheti ezt az űrlapot OpenID használatán keresztül is az OpenID azonosítója megadásával és „Regisztráció” gombra kattintva (nem kötelező)."
 
-#: src/Module/Register.php:116
+#: src/Module/Register.php:117
 msgid ""
 "If you are not familiar with OpenID, please leave that field blank and fill "
 "in the rest of the items."
 msgstr "Ha nem ismeri az OpenID-t, akkor hagyja a mezőt üresen, és töltse ki a többi elemet."
 
-#: src/Module/Register.php:117
+#: src/Module/Register.php:118
 msgid "Your OpenID (optional): "
 msgstr "Az Ön OpenID-ja (opcionális): "
 
-#: src/Module/Register.php:126
+#: src/Module/Register.php:127
 msgid "Include your profile in member directory?"
 msgstr "Felveszi a profilját a tagkönyvtárba?"
 
-#: src/Module/Register.php:147
+#: src/Module/Register.php:148
 msgid "Note for the admin"
 msgstr "Jegyzet az adminisztrátornak"
 
-#: src/Module/Register.php:147
+#: src/Module/Register.php:148
 msgid "Leave a message for the admin, why you want to join this node"
 msgstr "Hagyjon üzenetet az adminisztrátornak, hogy miért szeretne ehhez a csomóponthoz csatlakozni"
 
-#: src/Module/Register.php:148
+#: src/Module/Register.php:149
 msgid "Membership on this site is by invitation only."
 msgstr "Ezen az oldalon a tagság csak meghívás alapján van."
 
-#: src/Module/Register.php:149
+#: src/Module/Register.php:150
 msgid "Your invitation code: "
 msgstr "A meghívási kódja: "
 
-#: src/Module/Register.php:157
+#: src/Module/Register.php:158
 msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
 msgstr "A teljes neve (például Kovács János, valódi vagy valódinak látszó): "
 
-#: src/Module/Register.php:158
+#: src/Module/Register.php:159
 msgid ""
 "Your Email Address: (Initial information will be send there, so this has to "
 "be an existing address.)"
 msgstr "Az e-mail-címe (a kezdeti információk ide lesznek elküldve, szóval ennek létező címnek kell lennie):"
 
-#: src/Module/Register.php:159
+#: src/Module/Register.php:160
 msgid "Please repeat your e-mail address:"
 msgstr "Ismételje meg az e-mail-címét:"
 
-#: src/Module/Register.php:161
+#: src/Module/Register.php:162
 msgid "Leave empty for an auto generated password."
 msgstr "Hagyja üresen egy automatikusan előállított jelszóhoz."
 
-#: src/Module/Register.php:163
+#: src/Module/Register.php:164
 #, php-format
 msgid ""
 "Choose a profile nickname. This must begin with a text character. Your "
 "profile address on this site will then be \"<strong>nickname@%s</strong>\"."
 msgstr "Válasszon profilbecenevet. Ennek betűvel kell kezdődnie. Ezután a profilcíme ezen az oldalon „<strong>becenév@%s</strong>” lesz."
 
-#: src/Module/Register.php:164
+#: src/Module/Register.php:165
 msgid "Choose a nickname: "
 msgstr "Becenév választása: "
 
-#: src/Module/Register.php:173
+#: src/Module/Register.php:174
 msgid "Import your profile to this friendica instance"
 msgstr "A profilja importálása erre a Friendica példányra"
 
-#: src/Module/Register.php:180
+#: src/Module/Register.php:181
 msgid "Note: This node explicitly contains adult content"
 msgstr "Megjegyzés: ez a csomópont kifejezetten tartalmaz felnőtt tartalmat"
 
-#: src/Module/Register.php:182 src/Module/Settings/Delegation.php:155
+#: src/Module/Register.php:183 src/Module/Settings/Delegation.php:155
 msgid "Parent Password:"
 msgstr "Fölérendelt jelszó:"
 
-#: src/Module/Register.php:182 src/Module/Settings/Delegation.php:155
+#: src/Module/Register.php:183 src/Module/Settings/Delegation.php:155
 msgid ""
 "Please enter the password of the parent account to legitimize your request."
 msgstr "Adja meg a fölérendelt fiók jelszavát a kérése törvényesítéséhez."
 
-#: src/Module/Register.php:211
+#: src/Module/Register.php:212
 msgid "Password doesn't match."
 msgstr "A jelszó nem egyezik."
 
-#: src/Module/Register.php:217
+#: src/Module/Register.php:218
 msgid "Please enter your password."
 msgstr "Adja meg a jelszavát."
 
-#: src/Module/Register.php:259
+#: src/Module/Register.php:260
 msgid "You have entered too much information."
 msgstr "Túl sok információt adott meg."
 
-#: src/Module/Register.php:282
+#: src/Module/Register.php:283
 msgid "Please enter the identical mail address in the second field."
 msgstr "Adja meg a megegyező e-mail-címet a második mezőben."
 
-#: src/Module/Register.php:309
+#: src/Module/Register.php:310
 msgid "The additional account was created."
 msgstr "A további fiók létre lett hozva."
 
-#: src/Module/Register.php:334
+#: src/Module/Register.php:335
 msgid ""
 "Registration successful. Please check your email for further instructions."
 msgstr "A regisztráció sikerült. Nézze meg a postafiókját a további utasításokért."
 
-#: src/Module/Register.php:338
+#: src/Module/Register.php:339
 #, php-format
 msgid ""
 "Failed to send email message. Here your accout details:<br> login: %s<br> "
 "password: %s<br><br>You can change your password after login."
 msgstr "Nem sikerült elküldeni az e-mail üzenetet. Itt vannak a fiók részletei:<br> Bejelentkezés: %s<br> Jelszó: %s<br><br>A jelszavát bejelentkezés után változtathatja meg."
 
-#: src/Module/Register.php:344
+#: src/Module/Register.php:345
 msgid "Registration successful."
 msgstr "A regisztráció sikerült."
 
-#: src/Module/Register.php:349 src/Module/Register.php:356
+#: src/Module/Register.php:350 src/Module/Register.php:357
 msgid "Your registration can not be processed."
 msgstr "A regisztrációját nem lehet feldolgozni."
 
-#: src/Module/Register.php:355
+#: src/Module/Register.php:356
 msgid "You have to leave a request note for the admin."
 msgstr "Hagynia kell egy kérelmi jegyzetet az adminisztrátornak."
 
-#: src/Module/Register.php:401
+#: src/Module/Register.php:402
 msgid "Your registration is pending approval by the site owner."
 msgstr "A regisztrációja jóváhagyásra vár az oldal tulajdonosától."
 
@@ -8967,7 +8944,7 @@ msgid ""
 msgstr "<p>Nyissa meg a kétlépcsős hitelesítés alkalmazást az eszközén, hogy megkapjon egy hitelesítő kódot és ellenőrizze a személyazonosságát.</p>"
 
 #: src/Module/Security/TwoFactor/Verify.php:100
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Please enter a code from your authentication app"
 msgstr "Adjon meg egy kódot a hitelesítő alkalmazásából"
 
@@ -9394,7 +9371,7 @@ msgstr "fénykép kiválasztása a fényképalbumából"
 
 #: src/Module/Settings/TwoFactor/AppSpecific.php:64
 #: src/Module/Settings/TwoFactor/Recovery.php:62
-#: src/Module/Settings/TwoFactor/Trusted.php:46
+#: src/Module/Settings/TwoFactor/Trusted.php:65
 #: src/Module/Settings/TwoFactor/Verify.php:68
 msgid "Please enter your password to access this page."
 msgstr "Adja meg a jelszavát az oldal eléréséhez."
@@ -9598,42 +9575,42 @@ msgstr "Új visszaszerzési kódok előállítása"
 msgid "Next: Verification"
 msgstr "Következő: ellenőrzés"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:63
+#: src/Module/Settings/TwoFactor/Trusted.php:82
 msgid "Trusted browsers successfully removed."
 msgstr "A megbízható böngészők sikeresen eltávolítva."
 
-#: src/Module/Settings/TwoFactor/Trusted.php:73
+#: src/Module/Settings/TwoFactor/Trusted.php:92
 msgid "Trusted browser successfully removed."
 msgstr "A megbízható böngésző sikeresen eltávolítva."
 
-#: src/Module/Settings/TwoFactor/Trusted.php:114
+#: src/Module/Settings/TwoFactor/Trusted.php:133
 msgid "Two-factor Trusted Browsers"
 msgstr "Kétlépcsős megbízható böngészők"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:115
+#: src/Module/Settings/TwoFactor/Trusted.php:134
 msgid ""
 "Trusted browsers are individual browsers you chose to skip two-factor "
 "authentication to access Friendica. Please use this feature sparingly, as it"
 " can negate the benefit of two-factor authentication."
 msgstr "A megbízható böngészők azok az egyéni böngészők, amelyeknél a kétlépcsős hitelesítés kihagyását választotta a Friendica alkalmazáshoz való hozzáféréshez. Lehetőleg mellőzze ennek a funkciónak a használatát, mivel ez megszüntetheti a kétlépcsős hitelesítés előnyeit."
 
-#: src/Module/Settings/TwoFactor/Trusted.php:116
+#: src/Module/Settings/TwoFactor/Trusted.php:135
 msgid "Device"
 msgstr "Eszköz"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:117
+#: src/Module/Settings/TwoFactor/Trusted.php:136
 msgid "OS"
 msgstr "Operációs rendszer"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:119
+#: src/Module/Settings/TwoFactor/Trusted.php:138
 msgid "Trusted"
 msgstr "Megbízható"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:120
+#: src/Module/Settings/TwoFactor/Trusted.php:139
 msgid "Last Use"
 msgstr "Utolsó használat"
 
-#: src/Module/Settings/TwoFactor/Trusted.php:122
+#: src/Module/Settings/TwoFactor/Trusted.php:141
 msgid "Remove All"
 msgstr "Összes eltávolítása"
 
@@ -9641,7 +9618,7 @@ msgstr "Összes eltávolítása"
 msgid "Two-factor authentication successfully activated."
 msgstr "A kétlépcsős hitelesítés sikeresen bekapcsolva."
 
-#: src/Module/Settings/TwoFactor/Verify.php:123
+#: src/Module/Settings/TwoFactor/Verify.php:124
 #, php-format
 msgid ""
 "<p>Or you can submit the authentication settings manually:</p>\n"
@@ -9661,24 +9638,24 @@ msgid ""
 "</dl>"
 msgstr "<p>Vagy elküldheti a hitelesítési beállításokat kézzel:</p>\n<dl>\n\t<dt>Kibocsájtó</dt>\n\t<dd>%s</dd>\n\t<dt>Fiók neve</dt>\n\t<dd>%s</dd>\n\t<dt>Titkos kulcs</dt>\n\t<dd>%s</dd>\n\t<dt>Típus</dt>\n\t<dd>Időalapú</dd>\n\t<dt>Számjegyek száma</dt>\n\t<dd>6</dd>\n\t<dt>Kivonatoló algoritmus</dt>\n\t<dd>SHA-1</dd>\n</dl>"
 
-#: src/Module/Settings/TwoFactor/Verify.php:143
+#: src/Module/Settings/TwoFactor/Verify.php:144
 msgid "Two-factor code verification"
 msgstr "Kétlépcsős kód ellenőrzése"
 
-#: src/Module/Settings/TwoFactor/Verify.php:145
+#: src/Module/Settings/TwoFactor/Verify.php:146
 msgid ""
 "<p>Please scan this QR Code with your authenticator app and submit the "
 "provided code.</p>"
 msgstr "<p>Olvassa be ezt a QR-kódot a hitelesítő alkalmazásával, és küldje el a megkapott kódot.</p>"
 
-#: src/Module/Settings/TwoFactor/Verify.php:147
+#: src/Module/Settings/TwoFactor/Verify.php:148
 #, php-format
 msgid ""
 "<p>Or you can open the following URL in your mobile device:</p><p><a "
 "href=\"%s\">%s</a></p>"
 msgstr "<p>Vagy megnyithatja a következő URL-t a mobil eszközén:</p><p><a href=\"%s\">%s</a></p>"
 
-#: src/Module/Settings/TwoFactor/Verify.php:154
+#: src/Module/Settings/TwoFactor/Verify.php:155
 msgid "Verify code and enable two-factor authentication"
 msgstr "Kód ellenőrzése és a kétlépcsős hitelesítés engedélyezése"
 
@@ -9975,311 +9952,311 @@ msgstr "Ismerős vagy kapcsolódási kérés"
 msgid "New Follower"
 msgstr "Új követő"
 
-#: src/Navigation/Notifications/Factory/Notification.php:74
+#: src/Navigation/Notifications/Factory/Notification.php:93
 #, php-format
 msgid "%1$s wants to follow you"
 msgstr "%1$s követni szeretné Önt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:76
+#: src/Navigation/Notifications/Factory/Notification.php:95
 #, php-format
 msgid "%1$s had started following you"
 msgstr "%1$s elkezdte követni Önt"
 
-#: src/Navigation/Notifications/Factory/Notification.php:141
+#: src/Navigation/Notifications/Factory/Notification.php:160
 #, php-format
 msgid "%1$s liked your comment %2$s"
 msgstr "%1$s kedvelte az Ön %2$s hozzászólását"
 
-#: src/Navigation/Notifications/Factory/Notification.php:144
+#: src/Navigation/Notifications/Factory/Notification.php:163
 #, php-format
 msgid "%1$s liked your post %2$s"
 msgstr "%1$s kedvelte az Ön %2$s bejegyzését"
 
-#: src/Navigation/Notifications/Factory/Notification.php:151
+#: src/Navigation/Notifications/Factory/Notification.php:170
 #, php-format
 msgid "%1$s disliked your comment %2$s"
 msgstr "%1$s nem kedvelte az Ön %2$s hozzászólását"
 
-#: src/Navigation/Notifications/Factory/Notification.php:154
+#: src/Navigation/Notifications/Factory/Notification.php:173
 #, php-format
 msgid "%1$s disliked your post %2$s"
 msgstr "%1$s nem kedvelte az Ön %2$s bejegyzését"
 
-#: src/Navigation/Notifications/Factory/Notification.php:161
+#: src/Navigation/Notifications/Factory/Notification.php:180
 #, php-format
 msgid "%1$s shared your comment %2$s"
 msgstr "%1$s megosztotta az Ön %2$s hozzászólását"
 
-#: src/Navigation/Notifications/Factory/Notification.php:164
+#: src/Navigation/Notifications/Factory/Notification.php:183
 #, php-format
 msgid "%1$s shared your post %2$s"
 msgstr "%1$s megosztotta az Ön %2$s bejegyzését"
 
-#: src/Navigation/Notifications/Factory/Notification.php:171
+#: src/Navigation/Notifications/Factory/Notification.php:190
 #, php-format
 msgid "%1$s tagged you on %2$s"
 msgstr "%1$s bejelölte Önt ezen: %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:175
+#: src/Navigation/Notifications/Factory/Notification.php:194
 #, php-format
 msgid "%1$s replied to you on %2$s"
 msgstr "%1$s válaszolt Önnek ezen: %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:179
+#: src/Navigation/Notifications/Factory/Notification.php:198
 #, php-format
 msgid "%1$s commented in your thread %2$s"
 msgstr "%1$s hozzászólt az Ön %2$s szálában"
 
-#: src/Navigation/Notifications/Factory/Notification.php:183
+#: src/Navigation/Notifications/Factory/Notification.php:202
 #, php-format
 msgid "%1$s commented on your comment %2$s"
 msgstr "%1$s hozzászólt az Ön %2$s hozzászólásánál"
 
-#: src/Navigation/Notifications/Factory/Notification.php:189
+#: src/Navigation/Notifications/Factory/Notification.php:208
 #, php-format
 msgid "%1$s commented in their thread %2$s"
 msgstr "%1$s hozzászólt az ő %2$s szálában"
 
-#: src/Navigation/Notifications/Factory/Notification.php:191
+#: src/Navigation/Notifications/Factory/Notification.php:210
 #, php-format
 msgid "%1$s commented in their thread"
 msgstr "%1$s hozzászólt az ő szálában"
 
-#: src/Navigation/Notifications/Factory/Notification.php:193
+#: src/Navigation/Notifications/Factory/Notification.php:212
 #, php-format
 msgid "%1$s commented in the thread %2$s from %3$s"
 msgstr "%1$s hozzászólt egy %3$s által közzétett %2$s szálában"
 
-#: src/Navigation/Notifications/Factory/Notification.php:195
+#: src/Navigation/Notifications/Factory/Notification.php:214
 #, php-format
 msgid "%1$s commented in the thread from %3$s"
 msgstr "%1$s hozzászólt egy %3$s által közzétett szálában"
 
-#: src/Navigation/Notifications/Factory/Notification.php:200
+#: src/Navigation/Notifications/Factory/Notification.php:219
 #, php-format
 msgid "%1$s commented on your thread %2$s"
 msgstr "%1$s hozzászólt az Ön %2$s szálánál"
 
-#: src/Navigation/Notifications/Factory/Notification.php:205
+#: src/Navigation/Notifications/Factory/Notification.php:224
 #, php-format
 msgid "%1$s shared the post %2$s from %3$s"
 msgstr "%1$s megosztott egy %3$s által közzétett %2$s bejegyzést"
 
-#: src/Navigation/Notifications/Factory/Notification.php:207
+#: src/Navigation/Notifications/Factory/Notification.php:226
 #, php-format
 msgid "%1$s shared a post from %3$s"
 msgstr "%1$s megosztott egy %3$s által közzétett bejegyzést"
 
-#: src/Navigation/Notifications/Factory/Notification.php:209
+#: src/Navigation/Notifications/Factory/Notification.php:228
 #, php-format
 msgid "%1$s shared the post %2$s"
 msgstr "%1$s megosztotta a(z) %2$s bejegyzést"
 
-#: src/Navigation/Notifications/Factory/Notification.php:211
+#: src/Navigation/Notifications/Factory/Notification.php:230
 #, php-format
 msgid "%1$s shared a post"
 msgstr "%1$s megosztott egy bejegyzést"
 
-#: src/Navigation/Notifications/Repository/Notify.php:192
-#: src/Navigation/Notifications/Repository/Notify.php:675
+#: src/Navigation/Notifications/Repository/Notify.php:211
+#: src/Navigation/Notifications/Repository/Notify.php:694
 msgid "[Friendica:Notify]"
 msgstr "[Friendica: értesítés]"
 
-#: src/Navigation/Notifications/Repository/Notify.php:256
+#: src/Navigation/Notifications/Repository/Notify.php:275
 #, php-format
 msgid "%s New mail received at %s"
 msgstr "%s Új levél érkezett ekkor: %s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:258
+#: src/Navigation/Notifications/Repository/Notify.php:277
 #, php-format
 msgid "%1$s sent you a new private message at %2$s."
 msgstr "%1$s személyes üzenetet küldött ekkor: %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 msgid "a private message"
 msgstr "egy személyes üzenetet"
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 #, php-format
 msgid "%1$s sent you %2$s."
 msgstr "%1$s küldött Önnek %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:261
+#: src/Navigation/Notifications/Repository/Notify.php:280
 #, php-format
 msgid "Please visit %s to view and/or reply to your private messages."
 msgstr "Látogassa meg a(z) %s oldalt a személyes üzenete megtekintéséhez és/vagy megválaszolásához."
 
-#: src/Navigation/Notifications/Repository/Notify.php:292
+#: src/Navigation/Notifications/Repository/Notify.php:311
 #, php-format
 msgid "%1$s commented on %2$s's %3$s %4$s"
 msgstr "%1$s hozzászólt egy %2$s által megosztott %3$s kapcsán: %4$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:297
+#: src/Navigation/Notifications/Repository/Notify.php:316
 #, php-format
 msgid "%1$s commented on your %2$s %3$s"
 msgstr "%1$s hozzászólt egy vele megosztott %2$s kapcsán: %3$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:301
+#: src/Navigation/Notifications/Repository/Notify.php:320
 #, php-format
 msgid "%1$s commented on their %2$s %3$s"
 msgstr "%1$s hozzászólt egy saját %2$s kapcsán: %3$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:305
-#: src/Navigation/Notifications/Repository/Notify.php:710
+#: src/Navigation/Notifications/Repository/Notify.php:324
+#: src/Navigation/Notifications/Repository/Notify.php:729
 #, php-format
 msgid "%1$s Comment to conversation #%2$d by %3$s"
 msgstr "%1$s Hozzászólás a #%2$d beszélgetéshez %3$s által"
 
-#: src/Navigation/Notifications/Repository/Notify.php:307
+#: src/Navigation/Notifications/Repository/Notify.php:326
 #, php-format
 msgid "%s commented on an item/conversation you have been following."
 msgstr "%s hozzászólt egy olyan elemhez vagy beszélgetéshez, amelyet Ön követ."
 
-#: src/Navigation/Notifications/Repository/Notify.php:311
-#: src/Navigation/Notifications/Repository/Notify.php:326
+#: src/Navigation/Notifications/Repository/Notify.php:330
 #: src/Navigation/Notifications/Repository/Notify.php:345
-#: src/Navigation/Notifications/Repository/Notify.php:725
+#: src/Navigation/Notifications/Repository/Notify.php:364
+#: src/Navigation/Notifications/Repository/Notify.php:744
 #, php-format
 msgid "Please visit %s to view and/or reply to the conversation."
 msgstr "Látogassa meg a %s oldalt a beszélgetés megtekintéséhez és/vagy megválaszolásához."
 
-#: src/Navigation/Notifications/Repository/Notify.php:318
+#: src/Navigation/Notifications/Repository/Notify.php:337
 #, php-format
 msgid "%s %s posted to your profile wall"
 msgstr "%s %s bejegyzést írt az Ön profilfalára"
 
-#: src/Navigation/Notifications/Repository/Notify.php:320
+#: src/Navigation/Notifications/Repository/Notify.php:339
 #, php-format
 msgid "%1$s posted to your profile wall at %2$s"
 msgstr "%1$s bejegyzést írt az Ön profilfalára itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:321
+#: src/Navigation/Notifications/Repository/Notify.php:340
 #, php-format
 msgid "%1$s posted to [url=%2$s]your wall[/url]"
 msgstr "%1$s bejegyzést írt [url=%2$s]az Ön falára[/url]"
 
-#: src/Navigation/Notifications/Repository/Notify.php:333
+#: src/Navigation/Notifications/Repository/Notify.php:352
 #, php-format
 msgid "%1$s %2$s poked you"
 msgstr "%1$s %2$s megbökte Önt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:335
+#: src/Navigation/Notifications/Repository/Notify.php:354
 #, php-format
 msgid "%1$s poked you at %2$s"
 msgstr "%1$s megbökte Önt itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:336
+#: src/Navigation/Notifications/Repository/Notify.php:355
 #, php-format
 msgid "%1$s [url=%2$s]poked you[/url]."
 msgstr "%1$s [url=%2$s]megbökte Önt[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:353
+#: src/Navigation/Notifications/Repository/Notify.php:372
 #, php-format
 msgid "%s Introduction received"
 msgstr "%s Bemutatkozás érkezett"
 
-#: src/Navigation/Notifications/Repository/Notify.php:355
+#: src/Navigation/Notifications/Repository/Notify.php:374
 #, php-format
 msgid "You've received an introduction from '%1$s' at %2$s"
 msgstr "Kapott egy %1$s által elküldött bemutatkozását itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:356
+#: src/Navigation/Notifications/Repository/Notify.php:375
 #, php-format
 msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
 msgstr "Kapott egy %2$s által elküldött [url=%1$s]bemutatkozást[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:361
-#: src/Navigation/Notifications/Repository/Notify.php:407
+#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:426
 #, php-format
 msgid "You may visit their profile at %s"
 msgstr "Meglátogathatja a profilját itt: %s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:363
+#: src/Navigation/Notifications/Repository/Notify.php:382
 #, php-format
 msgid "Please visit %s to approve or reject the introduction."
 msgstr "Látogassa meg a(z) %s oldalt a bemutatkozás jóváhagyásához vagy visszautasításához."
 
-#: src/Navigation/Notifications/Repository/Notify.php:370
+#: src/Navigation/Notifications/Repository/Notify.php:389
 #, php-format
 msgid "%s A new person is sharing with you"
 msgstr "%s Egy új személy megoszt Önnel"
 
-#: src/Navigation/Notifications/Repository/Notify.php:372
-#: src/Navigation/Notifications/Repository/Notify.php:373
+#: src/Navigation/Notifications/Repository/Notify.php:391
+#: src/Navigation/Notifications/Repository/Notify.php:392
 #, php-format
 msgid "%1$s is sharing with you at %2$s"
 msgstr "%1$s megoszt Önnel itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:399
 #, php-format
 msgid "%s You have a new follower"
 msgstr "%s Van egy új követője"
 
-#: src/Navigation/Notifications/Repository/Notify.php:382
-#: src/Navigation/Notifications/Repository/Notify.php:383
+#: src/Navigation/Notifications/Repository/Notify.php:401
+#: src/Navigation/Notifications/Repository/Notify.php:402
 #, php-format
 msgid "You have a new follower at %2$s : %1$s"
 msgstr "Van egy új követője, %1$s itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:396
+#: src/Navigation/Notifications/Repository/Notify.php:415
 #, php-format
 msgid "%s Friend suggestion received"
 msgstr "%s Ismerősajánlás érkezett"
 
-#: src/Navigation/Notifications/Repository/Notify.php:398
+#: src/Navigation/Notifications/Repository/Notify.php:417
 #, php-format
 msgid "You've received a friend suggestion from '%1$s' at %2$s"
 msgstr "Kapott egy %1$s által elküldött ismerősajánlást itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:399
+#: src/Navigation/Notifications/Repository/Notify.php:418
 #, php-format
 msgid ""
 "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
 msgstr "Kapott egy %3$s által elküldött [url=%1$s]ismerősajánlást[/url] %2$s partnerhez."
 
-#: src/Navigation/Notifications/Repository/Notify.php:405
+#: src/Navigation/Notifications/Repository/Notify.php:424
 msgid "Name:"
 msgstr "Név:"
 
-#: src/Navigation/Notifications/Repository/Notify.php:406
+#: src/Navigation/Notifications/Repository/Notify.php:425
 msgid "Photo:"
 msgstr "Fénykép:"
 
-#: src/Navigation/Notifications/Repository/Notify.php:409
+#: src/Navigation/Notifications/Repository/Notify.php:428
 #, php-format
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr "Látogassa meg a(z) %s oldalt az ajánlás jóváhagyásához vagy visszautasításához."
 
-#: src/Navigation/Notifications/Repository/Notify.php:417
-#: src/Navigation/Notifications/Repository/Notify.php:432
+#: src/Navigation/Notifications/Repository/Notify.php:436
+#: src/Navigation/Notifications/Repository/Notify.php:451
 #, php-format
 msgid "%s Connection accepted"
 msgstr "%s Kapcsolat elfogadva"
 
-#: src/Navigation/Notifications/Repository/Notify.php:419
-#: src/Navigation/Notifications/Repository/Notify.php:434
+#: src/Navigation/Notifications/Repository/Notify.php:438
+#: src/Navigation/Notifications/Repository/Notify.php:453
 #, php-format
 msgid "'%1$s' has accepted your connection request at %2$s"
 msgstr "%1$s elfogadta a kapcsolódási kérését itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:420
-#: src/Navigation/Notifications/Repository/Notify.php:435
+#: src/Navigation/Notifications/Repository/Notify.php:439
+#: src/Navigation/Notifications/Repository/Notify.php:454
 #, php-format
 msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
 msgstr "%2$s elfogadta a [url=%1$s]kapcsolódási kérését[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:425
+#: src/Navigation/Notifications/Repository/Notify.php:444
 msgid ""
 "You are now mutual friends and may exchange status updates, photos, and "
 "email without restriction."
 msgstr "Önök most már kölcsönösen ismerősök, és korlátozások nélkül megoszthatják az állapotfrissítéseiket, fényképeiket és az e-mail-címüket egymással."
 
-#: src/Navigation/Notifications/Repository/Notify.php:427
+#: src/Navigation/Notifications/Repository/Notify.php:446
 #, php-format
 msgid "Please visit %s if you wish to make any changes to this relationship."
 msgstr "Látogassa meg a(z) %s oldalt, ha bármilyen változtatást szeretne tenni ebben a kapcsolatban."
 
-#: src/Navigation/Notifications/Repository/Notify.php:440
+#: src/Navigation/Notifications/Repository/Notify.php:459
 #, php-format
 msgid ""
 "'%1$s' has chosen to accept you a fan, which restricts some forms of "
@@ -10288,33 +10265,33 @@ msgid ""
 "automatically."
 msgstr "%1$s úgy döntött, hogy elfogadja Önt rajongóként, ami korlátozza a kommunikáció néhány formáját, mint például a személyes üzenet küldését és néhány profil-interakciót. Ha ez egy híres ember vagy egy közösségi oldal, akkor ezek a beállítások automatikusan alkalmazva lettek."
 
-#: src/Navigation/Notifications/Repository/Notify.php:442
+#: src/Navigation/Notifications/Repository/Notify.php:461
 #, php-format
 msgid ""
 "'%1$s' may choose to extend this into a two-way or more permissive "
 "relationship in the future."
 msgstr "%1$s dönthet úgy, hogy kiterjeszti ezt egy kétirányú vagy egy megengedőbb kapcsolattá a jövőben."
 
-#: src/Navigation/Notifications/Repository/Notify.php:444
+#: src/Navigation/Notifications/Repository/Notify.php:463
 #, php-format
 msgid "Please visit %s  if you wish to make any changes to this relationship."
 msgstr "Látogassa meg a(z) %s oldalt, ha bármilyen változtatást szeretne tenni ebben a kapcsolatban."
 
-#: src/Navigation/Notifications/Repository/Notify.php:454
+#: src/Navigation/Notifications/Repository/Notify.php:473
 msgid "registration request"
 msgstr "regisztrációs kérés"
 
-#: src/Navigation/Notifications/Repository/Notify.php:456
+#: src/Navigation/Notifications/Repository/Notify.php:475
 #, php-format
 msgid "You've received a registration request from '%1$s' at %2$s"
 msgstr "Kapott egy regisztrációs kérést %1$s partnertől itt: %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:457
+#: src/Navigation/Notifications/Repository/Notify.php:476
 #, php-format
 msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
 msgstr "Kapott egy %2$s által elküldött [url=%1$s]regisztrációs kérést[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:462
+#: src/Navigation/Notifications/Repository/Notify.php:481
 #, php-format
 msgid ""
 "Full Name:\t%s\n"
@@ -10322,17 +10299,17 @@ msgid ""
 "Login Name:\t%s (%s)"
 msgstr "Teljes név:\t%s\nOldal címe:\t%s\nBejelentkezési név:\t%s (%s)"
 
-#: src/Navigation/Notifications/Repository/Notify.php:468
+#: src/Navigation/Notifications/Repository/Notify.php:487
 #, php-format
 msgid "Please visit %s to approve or reject the request."
 msgstr "Látogassa meg a(z) %s oldalt a kérés jóváhagyásához vagy visszautasításához."
 
-#: src/Navigation/Notifications/Repository/Notify.php:704
+#: src/Navigation/Notifications/Repository/Notify.php:723
 #, php-format
 msgid "%s %s tagged you"
 msgstr "%s %s bejelölte Önt"
 
-#: src/Navigation/Notifications/Repository/Notify.php:707
+#: src/Navigation/Notifications/Repository/Notify.php:726
 #, php-format
 msgid "%s %s shared a new post"
 msgstr "%s %s megosztott egy új bejegyzést"
@@ -10360,14 +10337,18 @@ msgstr "Vegye fel a kapcsolatot a küldővel erre a bejegyzésre válaszolva, ha
 msgid "%s posted an update."
 msgstr "%s frissítést küldött."
 
-#: src/Object/Post.php:149
+#: src/Object/Post.php:147
 msgid "This entry was edited"
 msgstr "Ezt a bejegyzést szerkesztették"
 
-#: src/Object/Post.php:177
+#: src/Object/Post.php:175
 msgid "Private Message"
 msgstr "Személyes üzenet"
 
+#: src/Object/Post.php:178
+msgid "Connector Message"
+msgstr "Csatlakozóüzenet"
+
 #: src/Object/Post.php:193 src/Object/Post.php:195
 msgid "Edit"
 msgstr "Szerkesztés"
@@ -10510,54 +10491,50 @@ msgstr "Falról-falra"
 msgid "via Wall-To-Wall:"
 msgstr "falról-falra szolgáltatáson keresztül:"
 
-#: src/Object/Post.php:497
+#: src/Object/Post.php:499
 #, php-format
 msgid "Reply to %s"
 msgstr "Válasz erre: %s"
 
-#: src/Object/Post.php:500
+#: src/Object/Post.php:502
 msgid "More"
 msgstr "Több"
 
-#: src/Object/Post.php:518
+#: src/Object/Post.php:520
 msgid "Notifier task is pending"
 msgstr "Az értesítőfeladat függőben van"
 
-#: src/Object/Post.php:519
+#: src/Object/Post.php:521
 msgid "Delivery to remote servers is pending"
 msgstr "A távoli kiszolgálókra történő kézbesítés függőben van"
 
-#: src/Object/Post.php:520
+#: src/Object/Post.php:522
 msgid "Delivery to remote servers is underway"
 msgstr "A távoli kiszolgálókra történő kézbesítés úton van"
 
-#: src/Object/Post.php:521
+#: src/Object/Post.php:523
 msgid "Delivery to remote servers is mostly done"
 msgstr "A távoli kiszolgálókra történő kézbesítés többnyire készen van"
 
-#: src/Object/Post.php:522
+#: src/Object/Post.php:524
 msgid "Delivery to remote servers is done"
 msgstr "A távoli kiszolgálókra történő kézbesítés készen van"
 
-#: src/Object/Post.php:542
+#: src/Object/Post.php:544
 #, php-format
 msgid "%d comment"
 msgid_plural "%d comments"
 msgstr[0] "%d hozzászólás"
 msgstr[1] "%d hozzászólás"
 
-#: src/Object/Post.php:543
+#: src/Object/Post.php:545
 msgid "Show more"
 msgstr "Több megjelenítése"
 
-#: src/Object/Post.php:544
+#: src/Object/Post.php:546
 msgid "Show fewer"
 msgstr "Kevesebb megjelenítése"
 
-#: src/Protocol/Diaspora.php:3414
-msgid "Attachments:"
-msgstr "Mellékletek:"
-
 #: src/Protocol/OStatus.php:1645
 #, php-format
 msgid "%s is now following %s."
index 6f95a21e345c01583ff48bc26e4a43d51b8d852a..1e38df5d10adbf879829da10a01dbb3063829533 100644 (file)
@@ -5,15 +5,6 @@ function string_plural_select_hu($n){
        $n = intval($n);
        return intval($n != 1);
 }}
-$a->strings['Daily posting limit of %d post reached. The post was rejected.'] = [
-       0 => 'A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
-       1 => 'A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
-];
-$a->strings['Weekly posting limit of %d post reached. The post was rejected.'] = [
-       0 => 'A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
-       1 => 'A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
-];
-$a->strings['Monthly posting limit of %d post reached. The post was rejected.'] = 'A havi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.';
 $a->strings['Access denied.'] = 'Hozzáférés megtagadva.';
 $a->strings['User not found.'] = 'A felhasználó nem található.';
 $a->strings['Access to this profile has been restricted.'] = 'A profilhoz való hozzáférés korlátozva lett.';
@@ -346,10 +337,10 @@ $a->strings['Name'] = 'Név';
 $a->strings['Home Page'] = 'Kezdőlap';
 $a->strings['Created'] = 'Létrehozva';
 $a->strings['Remove authorization'] = 'Felhatalmazás eltávolítása';
+$a->strings['Save Settings'] = 'Beállítások mentése';
 $a->strings['Addon Settings'] = 'Bővítménybeállítások';
 $a->strings['No Addon settings configured'] = 'Nincsenek bővítménybeállítások meghatározva';
 $a->strings['Additional Features'] = 'További funkciók';
-$a->strings['Save Settings'] = 'Beállítások mentése';
 $a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
 $a->strings['enabled'] = 'engedélyezve';
 $a->strings['disabled'] = 'letiltva';
@@ -530,6 +521,7 @@ $a->strings['Unable to check your home location.'] = 'Nem lehet ellenőrizni az
 $a->strings['No recipient.'] = 'Nincs címzett.';
 $a->strings['If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders.'] = 'Ha azt szeretné, hogy %s válaszoljon, ellenőrizze, hogy az Ön oldalán lévő adatvédelmi beállítások lehetővé teszik-e az ismeretlen küldőktől származó személyes leveleket.';
 $a->strings['No system theme config value set.'] = 'Nincs rendszertéma beállítási érték megadva.';
+$a->strings['Apologies but the website is unavailable at the moment.'] = 'Elnézést, de a weboldal jelenleg nem érhető el.';
 $a->strings['Delete this item?'] = 'Törli ezt az elemet?';
 $a->strings['Block this author? They won\'t be able to follow you nor see your public posts, and you won\'t be able to see their posts and their notifications.'] = 'Tiltja ezt a szerzőt? Nem lesz képes követni Önt, és a nyilvános bejegyzéseit sem látja, valamint Ön sem lesz képes megtekinteni az ő bejegyzéseit és értesítéseit.';
 $a->strings['toggle mobile'] = 'váltás mobilra';
@@ -723,7 +715,7 @@ $a->strings['Introductions'] = 'Bemutatkozások';
 $a->strings['Friend Requests'] = 'Ismerőskérések';
 $a->strings['Notifications'] = 'Értesítések';
 $a->strings['See all notifications'] = 'Összes értesítés megtekintése';
-$a->strings['Mark all system notifications seen'] = 'Összes rendszerértesítés megjelölése olvasottként';
+$a->strings['Mark all system notifications as seen'] = 'Összes rendszerértesítés megjelölése olvasottként';
 $a->strings['Private mail'] = 'Személyes levél';
 $a->strings['Inbox'] = 'Beérkezett üzenetek';
 $a->strings['Outbox'] = 'Elküldött üzenetek';
@@ -922,17 +914,17 @@ $a->strings['Oct'] = 'Okt';
 $a->strings['Nov'] = 'Nov';
 $a->strings['Dec'] = 'Dec';
 $a->strings['poke'] = 'megbökés';
-$a->strings['poked'] = 'megbökve';
+$a->strings['poked'] = 'megbökte őt:';
 $a->strings['ping'] = 'pingelés';
-$a->strings['pinged'] = 'pingelve';
+$a->strings['pinged'] = 'megpingelte őt:';
 $a->strings['prod'] = 'döfés';
-$a->strings['prodded'] = 'megdöfve';
+$a->strings['prodded'] = 'megdöfte őt:';
 $a->strings['slap'] = 'ütés';
-$a->strings['slapped'] = 'megütve';
+$a->strings['slapped'] = 'megütötte őt:';
 $a->strings['finger'] = 'fogdosás';
-$a->strings['fingered'] = 'megfogdosva';
-$a->strings['rebuff'] = 'elutasítás';
-$a->strings['rebuffed'] = 'elutasítva';
+$a->strings['fingered'] = 'megfogdosta őt:';
+$a->strings['rebuff'] = 'visszautasítás';
+$a->strings['rebuffed'] = 'visszautasította őt:';
 $a->strings['Friendica can\'t display this page at the moment, please contact the administrator.'] = 'A Friendica jelenleg nem tudja megjeleníteni ezt az oldalt. Vegye fel a kapcsolatot a rendszergazdával.';
 $a->strings['template engine cannot be registered without a name.'] = 'a sablonmotort nem lehet regisztrálni név nélkül.';
 $a->strings['template engine is not registered!'] = 'a sablonmotor nincs regisztrálva!';
@@ -1048,11 +1040,11 @@ $a->strings['Change profile photo'] = 'Profilfénykép megváltoztatása';
 $a->strings['Homepage:'] = 'Honlap:';
 $a->strings['About:'] = 'Névjegy:';
 $a->strings['Atom feed'] = 'Atom hírforrás';
-$a->strings['g A l F d'] = 'F j., l, H';
 $a->strings['F d'] = 'F j.';
 $a->strings['[today]'] = '[ma]';
-$a->strings['Birthday Reminders'] = 'Születésnapi emlékeztető';
+$a->strings['Birthday Reminders'] = 'Születésnapi emlékeztetők';
 $a->strings['Birthdays this week:'] = 'Születésnapok ezen a héten:';
+$a->strings['g A l F d'] = 'F j., l, H';
 $a->strings['[No description]'] = '[Nincs leírás]';
 $a->strings['Event Reminders'] = 'Eseményemlékeztetők';
 $a->strings['Upcoming events the next 7 days:'] = 'Közelgő események a következő 7 napon:';
@@ -1305,7 +1297,7 @@ $a->strings['%s total blocked contact'] = [
 ];
 $a->strings['URL of the remote contact to block.'] = 'A tiltandó távoli partner URL-je.';
 $a->strings['Also purge contact'] = 'Távolítsa el a partnert is';
-$a->strings['Removes all content related to this contact from the node. Keeps the contact record. This action canoot be undone.'] = 'Eltávolítja az ehhez a partnerhez kapcsolódó összes partnert a csomópontról. Megtartja a partner rekordját. Ezt a műveletet nem lehet visszavonni.';
+$a->strings['Removes all content related to this contact from the node. Keeps the contact record. This action cannot be undone.'] = 'Eltávolítja az ehhez a partnerhez kapcsolódó összes partnert a csomópontról. Megtartja a partner rekordját. Ezt a műveletet nem lehet visszavonni.';
 $a->strings['Block Reason'] = 'Tiltás oka';
 $a->strings['Server domain pattern added to the blocklist.'] = 'A tiltólistához hozzáadott kiszolgáló tartománymintája.';
 $a->strings['%s server scheduled to be purged.'] = [
@@ -1770,6 +1762,15 @@ $a->strings['ActivityPub Conversion'] = 'ActivityPub beszélgetés';
 $a->strings['Addon Features'] = 'Bővítményszolgáltatások';
 $a->strings['User registrations waiting for confirmation'] = 'Megerősítésre váró felhasználói regisztrációk';
 $a->strings['Too Many Requests'] = 'Túl sok kérés';
+$a->strings['Daily posting limit of %d post reached. The post was rejected.'] = [
+       0 => 'A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
+       1 => 'A napi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
+];
+$a->strings['Weekly posting limit of %d post reached. The post was rejected.'] = [
+       0 => 'A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
+       1 => 'A heti %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.',
+];
+$a->strings['Monthly posting limit of %d post reached. The post was rejected.'] = 'A havi %d bejegyzésből álló beküldési korlát elérve. A bejegyzés vissza lett utasítva.';
 $a->strings['Profile Details'] = 'Profil részletei';
 $a->strings['Only You Can See This'] = 'Csak Ön láthatja ezt';
 $a->strings['Scheduled Posts'] = 'Ütemezett bejegyzések';
@@ -1817,16 +1818,9 @@ $a->strings['Pending outgoing contact request'] = 'Függőben lévő kimenő par
 $a->strings['Pending incoming contact request'] = 'Függőben lévő bejövő partnerkérés';
 $a->strings['Visit %s\'s profile [%s]'] = '%s profiljának megtekintése [%s]';
 $a->strings['Contact update failed.'] = 'A partner frissítése sikertelen.';
-$a->strings['<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.'] = '<strong>FIGYELMEZTETÉS: ez erősen speciális</strong>, és ha hibás információkat ad meg, akkor a partnerrel való kommunikációi esetleg nem működnek többé.';
-$a->strings['Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.'] = 'Használja a böngésző „Vissza” gombját <strong>most</strong>, ha nem biztos abban, hogy mit kell tenni ezen az oldalon.';
 $a->strings['Return to contact editor'] = 'Visszatérés a partnerszerkesztőhöz';
 $a->strings['Account Nickname'] = 'Fiók beceneve';
-$a->strings['@Tagname - overrides Name/Nickname'] = '@Címkenév – felülbírálja a nevet vagy a becenevet';
 $a->strings['Account URL'] = 'Fiók URL';
-$a->strings['Account URL Alias'] = 'Fiók URL álneve';
-$a->strings['Friend Request URL'] = 'Ismerőskérési URL';
-$a->strings['Friend Confirm URL'] = 'Ismerősmegerősítési URL';
-$a->strings['Notification Endpoint URL'] = 'Értesítésvégpont URL';
 $a->strings['Poll/Feed URL'] = 'Lekérés vagy hírforrás URL';
 $a->strings['New photo from this URL'] = 'Új fénykép erről az URL-ről';
 $a->strings['Invalid contact.'] = 'Érvénytelen partner.';
@@ -1857,7 +1851,7 @@ $a->strings['Contact (%s)'] = [
 $a->strings['Error while sending poke, please retry.'] = 'Hiba a bökés küldése során. Próbálja újra.';
 $a->strings['You must be logged in to use this module.'] = 'Bejelentkezve kell lennie a modul használatához.';
 $a->strings['Poke/Prod'] = 'Bökés vagy döfés';
-$a->strings['poke, prod or do other things to somebody'] = 'bökés, döfés vagy egyéb dolgok művelése valakivel';
+$a->strings['poke, prod or do other things to somebody'] = 'Bökés, döfés vagy egyéb dolgok művelése valakivel.';
 $a->strings['Choose what you wish to do to recipient'] = 'Válassza ki, hogy mit szeretne tenni a címzettel';
 $a->strings['Make this post private'] = 'A bejegyzés személyessé tétele';
 $a->strings['Failed to update contact record.'] = 'Nem sikerült frissíteni a partner rekordját.';
@@ -2007,6 +2001,7 @@ $a->strings['Output'] = 'Kimenet';
 $a->strings['Lookup address'] = 'Keresési cím';
 $a->strings['Webfinger Diagnostic'] = 'WebFinger diagnosztika';
 $a->strings['Lookup address:'] = 'Keresési cím:';
+$a->strings['You are now logged in as %s'] = 'Most a következő néven van bejelentkezve: %s';
 $a->strings['Switch between your accounts'] = 'Váltás a fiókjai között';
 $a->strings['Manage your accounts'] = 'Fiókok kezelése';
 $a->strings['Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'] = 'Váltás a különböző személyazonosságok vagy közösségi és csoportoldalak között, amelyek megosztják a fiókja részleteit, vagy amelyeket „kezelés” jogosultságokkal ruházott fel';
@@ -2568,6 +2563,7 @@ $a->strings['Please contact the sender by replying to this post if you do not wi
 $a->strings['%s posted an update.'] = '%s frissítést küldött.';
 $a->strings['This entry was edited'] = 'Ezt a bejegyzést szerkesztették';
 $a->strings['Private Message'] = 'Személyes üzenet';
+$a->strings['Connector Message'] = 'Csatlakozóüzenet';
 $a->strings['Edit'] = 'Szerkesztés';
 $a->strings['Pinned item'] = 'Kitűzött elem';
 $a->strings['Delete globally'] = 'Törlés globálisan';
@@ -2616,7 +2612,6 @@ $a->strings['%d comment'] = [
 ];
 $a->strings['Show more'] = 'Több megjelenítése';
 $a->strings['Show fewer'] = 'Kevesebb megjelenítése';
-$a->strings['Attachments:'] = 'Mellékletek:';
 $a->strings['%s is now following %s.'] = '%s mostantól követi %s partnert.';
 $a->strings['following'] = 'követés';
 $a->strings['%s stopped following %s.'] = '%s leállította %s követését.';
index c09c49631c932afc75ceaf7ebf95d15410309c48..44dc544b9aca7465fb57bae48a1eaaff9ae07e3a 100644 (file)
@@ -4,7 +4,7 @@
 # 
 # Translators:
 # Aleksandr "M.O.Z.G" Dikov <mozg@mozg-studio.org>, 2020
-# Alexander An <ravnina@gmail.com>, 2020-2021
+# Alexander An <ravnina@gmail.com>, 2020-2022
 # Alex <info@pixelbits.de>, 2012-2013
 # soko1 <nullbsd@gmail.com>, 2016
 # vislav <bizadmin@list.ru>, 2014
@@ -24,8 +24,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-12 07:58-0500\n"
-"PO-Revision-Date: 2021-12-22 17:46+0000\n"
+"POT-Creation-Date: 2022-01-21 14:21+0100\n"
+"PO-Revision-Date: 2022-01-22 21:48+0000\n"
 "Last-Translator: Alexander An <ravnina@gmail.com>\n"
 "Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
 "MIME-Version: 1.0\n"
@@ -103,7 +103,7 @@ msgstr "список"
 #: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:659
 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
-#: src/Module/Api/Twitter/ContactEndpoint.php:76
+#: src/Module/Api/Twitter/ContactEndpoint.php:74
 msgid "User not found"
 msgstr "Пользователь не найден"
 
@@ -142,9 +142,9 @@ msgstr "Лента недоступна для этого объекта."
 #: mod/unfollow.php:50 mod/unfollow.php:82 mod/wall_attach.php:68
 #: mod/wall_attach.php:71 mod/wall_upload.php:90 mod/wall_upload.php:93
 #: mod/wallmessage.php:37 mod/wallmessage.php:56 mod/wallmessage.php:90
-#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:92
+#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:93
 #: src/Module/BaseNotifications.php:97 src/Module/Contact/Advanced.php:60
-#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:18
+#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:38
 #: src/Module/FriendSuggest.php:56 src/Module/Group.php:42
 #: src/Module/Group.php:85 src/Module/Invite.php:41 src/Module/Invite.php:130
 #: src/Module/Notifications/Notification.php:48
@@ -179,7 +179,7 @@ msgid "Save"
 msgstr "Сохранить"
 
 #: mod/editpost.php:92 mod/photos.php:1344 src/Content/Conversation.php:326
-#: src/Module/Contact/Poke.php:157 src/Object/Post.php:964
+#: src/Module/Contact/Poke.php:176 src/Object/Post.php:966
 msgid "Loading..."
 msgstr "Загрузка..."
 
@@ -245,7 +245,7 @@ msgstr "убрать местонахождение"
 #: mod/editpost.php:107 mod/message.php:200 mod/message.php:358
 #: mod/photos.php:1495 mod/wallmessage.php:142
 #: src/Content/Conversation.php:355 src/Content/Conversation.php:690
-#: src/Module/Item/Compose.php:165 src/Object/Post.php:502
+#: src/Module/Item/Compose.php:165 src/Object/Post.php:504
 msgid "Please wait"
 msgstr "Пожалуйста, подождите"
 
@@ -277,11 +277,11 @@ msgstr "Пример: bob@example.com, mary@example.com"
 
 #: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1343
 #: mod/photos.php:1399 mod/photos.php:1473 src/Content/Conversation.php:370
-#: src/Module/Item/Compose.php:160 src/Object/Post.php:974
+#: src/Module/Item/Compose.php:160 src/Object/Post.php:976
 msgid "Preview"
 msgstr "Просмотр"
 
-#: mod/editpost.php:130 mod/fbrowser.php:100 mod/fbrowser.php:127
+#: mod/editpost.php:130 mod/fbrowser.php:117 mod/fbrowser.php:144
 #: mod/follow.php:144 mod/photos.php:1010 mod/photos.php:1111 mod/tagrm.php:35
 #: mod/tagrm.php:127 mod/unfollow.php:97 src/Content/Conversation.php:373
 #: src/Module/Contact/Revoke.php:110 src/Module/RemoteFollow.php:127
@@ -289,37 +289,37 @@ msgid "Cancel"
 msgstr "Отмена"
 
 #: mod/editpost.php:134 src/Content/Conversation.php:331
-#: src/Module/Item/Compose.php:151 src/Object/Post.php:965
+#: src/Module/Item/Compose.php:151 src/Object/Post.php:967
 msgid "Bold"
 msgstr "Жирный"
 
 #: mod/editpost.php:135 src/Content/Conversation.php:332
-#: src/Module/Item/Compose.php:152 src/Object/Post.php:966
+#: src/Module/Item/Compose.php:152 src/Object/Post.php:968
 msgid "Italic"
 msgstr "Kурсивный"
 
 #: mod/editpost.php:136 src/Content/Conversation.php:333
-#: src/Module/Item/Compose.php:153 src/Object/Post.php:967
+#: src/Module/Item/Compose.php:153 src/Object/Post.php:969
 msgid "Underline"
 msgstr "Подчеркнутый"
 
 #: mod/editpost.php:137 src/Content/Conversation.php:334
-#: src/Module/Item/Compose.php:154 src/Object/Post.php:968
+#: src/Module/Item/Compose.php:154 src/Object/Post.php:970
 msgid "Quote"
 msgstr "Цитата"
 
 #: mod/editpost.php:138 src/Content/Conversation.php:335
-#: src/Module/Item/Compose.php:155 src/Object/Post.php:969
+#: src/Module/Item/Compose.php:155 src/Object/Post.php:971
 msgid "Code"
 msgstr "Код"
 
 #: mod/editpost.php:139 src/Content/Conversation.php:337
-#: src/Module/Item/Compose.php:157 src/Object/Post.php:971
+#: src/Module/Item/Compose.php:157 src/Object/Post.php:973
 msgid "Link"
 msgstr "Ссылка"
 
 #: mod/editpost.php:140 src/Content/Conversation.php:338
-#: src/Module/Item/Compose.php:158 src/Object/Post.php:972
+#: src/Module/Item/Compose.php:158 src/Object/Post.php:974
 msgid "Link or Media"
 msgstr "Ссылка или медиа"
 
@@ -330,7 +330,7 @@ msgid "Message"
 msgstr "Сообщение"
 
 #: mod/editpost.php:144 src/Content/Conversation.php:381
-#: src/Module/Settings/TwoFactor/Trusted.php:118
+#: src/Module/Settings/TwoFactor/Trusted.php:137
 msgid "Browser"
 msgstr "Браузер"
 
@@ -382,7 +382,7 @@ msgstr "Начало мероприятия:"
 #: src/Module/Install.php:347 src/Module/Register.php:148
 #: src/Module/Security/TwoFactor/Verify.php:100
 #: src/Module/Settings/TwoFactor/Index.php:133
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Required"
 msgstr "Требуется"
 
@@ -418,8 +418,8 @@ msgstr "Поделиться этим мероприятием"
 #: mod/events.php:519 mod/message.php:201 mod/message.php:357
 #: mod/photos.php:927 mod/photos.php:1031 mod/photos.php:1301
 #: mod/photos.php:1342 mod/photos.php:1398 mod/photos.php:1472
-#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:147
-#: src/Module/Contact/Poke.php:158 src/Module/Contact/Profile.php:327
+#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:132
+#: src/Module/Contact/Poke.php:177 src/Module/Contact/Profile.php:327
 #: src/Module/Debug/ActivityPubConversion.php:141
 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
 #: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
@@ -427,7 +427,7 @@ msgstr "Поделиться этим мероприятием"
 #: src/Module/Install.php:252 src/Module/Install.php:294
 #: src/Module/Install.php:331 src/Module/Invite.php:177
 #: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247
-#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:963
+#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:965
 #: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
 #: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
 msgid "Submit"
@@ -446,17 +446,17 @@ msgstr "Расширенный"
 msgid "Failed to remove event"
 msgstr "Ошибка удаления события"
 
-#: mod/fbrowser.php:43 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
+#: mod/fbrowser.php:60 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
 #: view/theme/frio/theme.php:227
 msgid "Photos"
 msgstr "Фото"
 
-#: mod/fbrowser.php:102 mod/fbrowser.php:129
+#: mod/fbrowser.php:119 mod/fbrowser.php:146
 #: src/Module/Settings/Profile/Photo/Index.php:129
 msgid "Upload"
 msgstr "Загрузить"
 
-#: mod/fbrowser.php:124
+#: mod/fbrowser.php:141
 msgid "Files"
 msgstr "Файлы"
 
@@ -481,7 +481,7 @@ msgid "OStatus support is disabled. Contact can't be added."
 msgstr "Поддержка OStatus выключена. Контакт не может быть добавлен."
 
 #: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
-#: src/Model/Contact.php:1042 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1055 src/Model/Contact.php:1067
 #: view/theme/vier/theme.php:172
 msgid "Connect/Follow"
 msgstr "Подключиться/Подписаться"
@@ -520,7 +520,7 @@ msgstr "Добавить личную заметку:"
 #: mod/follow.php:163 mod/unfollow.php:109 src/Module/BaseProfile.php:59
 #: src/Module/Contact.php:444
 msgid "Status Messages and Posts"
-msgstr "Ð\92аÑ\88и Ð·Ð°Ð¿Ð¸Ñ\81и"
+msgstr "Ð\97апиÑ\81и Ð¸ Ñ\81Ñ\82аÑ\82Ñ\83Ñ\81Ñ\8b"
 
 #: mod/follow.php:191
 msgid "The contact could not be added."
@@ -1081,12 +1081,12 @@ msgstr "Поворот против часовой стрелки (налево)
 
 #: mod/photos.php:1339 mod/photos.php:1395 mod/photos.php:1469
 #: src/Module/Contact.php:544 src/Module/Item/Compose.php:148
-#: src/Object/Post.php:960
+#: src/Object/Post.php:962
 msgid "This is you"
 msgstr "Это вы"
 
 #: mod/photos.php:1341 mod/photos.php:1397 mod/photos.php:1471
-#: src/Object/Post.php:496 src/Object/Post.php:962
+#: src/Object/Post.php:498 src/Object/Post.php:964
 msgid "Comment"
 msgstr "Комментировать"
 
@@ -1143,7 +1143,7 @@ msgid "Bad Request."
 msgstr "Ошибочный запрос."
 
 #: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:70
-#: src/Module/Contact/Advanced.php:119 src/Module/Contact/Contacts.php:36
+#: src/Module/Contact/Advanced.php:109 src/Module/Contact/Contacts.php:55
 #: src/Module/Contact/Conversations.php:78
 #: src/Module/Contact/Conversations.php:83
 #: src/Module/Contact/Conversations.php:88 src/Module/Contact/Media.php:43
@@ -1155,7 +1155,7 @@ msgstr "Ошибочный запрос."
 msgid "Contact not found."
 msgstr "Контакт не найден."
 
-#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:454
+#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:473
 msgid "[Friendica System Notify]"
 msgstr "[Системное уведомление Friendica]"
 
@@ -1274,7 +1274,7 @@ msgstr "Подключенные приложения"
 #: src/Module/Admin/Users/Blocked.php:130 src/Module/Admin/Users/Create.php:71
 #: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
 #: src/Module/Admin/Users/Index.php:162 src/Module/Admin/Users/Pending.php:104
-#: src/Module/Contact/Advanced.php:149
+#: src/Module/Contact/Advanced.php:134
 msgid "Name"
 msgstr "Имя"
 
@@ -1495,7 +1495,7 @@ msgstr "Подтипы личной страницы"
 msgid "Community Forum Subtypes"
 msgstr "Подтипы форума сообщества"
 
-#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:106
+#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:107
 msgid "Personal Page"
 msgstr "Личная страница"
 
@@ -1503,7 +1503,7 @@ msgstr "Личная страница"
 msgid "Account for a personal profile."
 msgstr "Личная учётная запись"
 
-#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:107
+#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:108
 msgid "Organisation Page"
 msgstr "Организационная страница"
 
@@ -1513,7 +1513,7 @@ msgid ""
 "\"Followers\"."
 msgstr "Учётная запись организации, которая автоматически одобряет новых подписчиков."
 
-#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:108
+#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:109
 msgid "News Page"
 msgstr "Новостная страница"
 
@@ -1523,7 +1523,7 @@ msgid ""
 " \"Followers\"."
 msgstr "Учётная запись новостной ленты, которая автоматически одобряет новых подписчиков."
 
-#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:109
+#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:110
 msgid "Community Forum"
 msgstr "Форум сообщества"
 
@@ -1531,7 +1531,7 @@ msgstr "Форум сообщества"
 msgid "Account for community discussions."
 msgstr "Учётная запись для совместных обсуждений."
 
-#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:99
+#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:100
 msgid "Normal Account Page"
 msgstr "Стандартная страница аккаунта"
 
@@ -1541,7 +1541,7 @@ msgid ""
 "\"Friends\" and \"Followers\"."
 msgstr "Личная учётная запись, которая требует ручного одобрения для новых подписчиков и друзей."
 
-#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:100
+#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:101
 msgid "Soapbox Page"
 msgstr "Песочница"
 
@@ -1551,7 +1551,7 @@ msgid ""
 " \"Followers\"."
 msgstr "Учётная запись для публичного профиля, которая автоматически одобряет новых подписчиков."
 
-#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:101
+#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:102
 msgid "Public Forum"
 msgstr "Публичный форум"
 
@@ -1559,7 +1559,7 @@ msgstr "Публичный форум"
 msgid "Automatically approves all contact requests."
 msgstr "Автоматически одобряет все запросы на подписку."
 
-#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:102
+#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:103
 msgid "Automatic Friend Page"
 msgstr "\"Автоматический друг\" страница"
 
@@ -1900,7 +1900,7 @@ msgstr "Ваш комментарий понравился"
 
 #: mod/settings.php:798
 msgid "Someone shared your content"
-msgstr ""
+msgstr "Вашей записью поделились"
 
 #: mod/settings.php:800
 msgid "Activate desktop notifications"
@@ -1985,7 +1985,7 @@ msgstr "Нет предложений. Если это новый сайт, по
 msgid "Friend Suggestions"
 msgstr "Предложения друзей"
 
-#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2626
+#: mod/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2628
 msgid "photo"
 msgstr "фото"
 
@@ -2007,7 +2007,7 @@ msgid "Select a tag to remove: "
 msgstr "Выберите ключевое слово для удаления: "
 
 #: mod/tagrm.php:126 src/Module/Settings/Delegation.php:179
-#: src/Module/Settings/TwoFactor/Trusted.php:121
+#: src/Module/Settings/TwoFactor/Trusted.php:140
 msgid "Remove"
 msgstr "Удалить"
 
@@ -2072,7 +2072,7 @@ msgstr "Отсоединиться/Отписаться"
 msgid ""
 "Unable to unfollow this contact, please retry in a few minutes or contact "
 "your administrator."
-msgstr ""
+msgstr "Не получается отписаться от контакта, попробуйте ещё раз через несколько минут или свяжитесь с вашим администратором."
 
 #: mod/unfollow.php:148
 msgid "Contact was successfully unfollowed"
@@ -2080,7 +2080,7 @@ msgstr "Подписка успешно удалена"
 
 #: mod/unfollow.php:152
 msgid "Unable to unfollow this contact, please contact your administrator"
-msgstr ""
+msgstr "Не получается отписаться от этого контакта, пожалуйста, свяжитесь с вашим администратором"
 
 #: mod/wall_attach.php:39 mod/wall_attach.php:46 mod/wall_attach.php:77
 #: mod/wall_upload.php:53 mod/wall_upload.php:63 mod/wall_upload.php:99
@@ -2105,7 +2105,7 @@ msgstr "Файл превышает лимит размера в %s"
 msgid "File upload failed."
 msgstr "Загрузка файла не удалась."
 
-#: mod/wall_upload.php:221 src/Model/Photo.php:984
+#: mod/wall_upload.php:221 src/Model/Photo.php:1008
 msgid "Wall Photos"
 msgstr "Фото стены"
 
@@ -2133,6 +2133,10 @@ msgstr "Если Вы хотите ответить %s, пожалуйста, п
 msgid "No system theme config value set."
 msgstr "Настройки системной темы не установлены."
 
+#: src/App.php:583
+msgid "Apologies but the website is unavailable at the moment."
+msgstr "Приносим извинения, но этот сервис сейчас недоступен."
+
 #: src/App/Page.php:250
 msgid "Delete this item?"
 msgstr "Удалить этот элемент?"
@@ -2147,46 +2151,46 @@ msgstr "Заблокировать этого автора? Они не смог
 msgid "toggle mobile"
 msgstr "мобильная версия"
 
-#: src/App/Router.php:286
+#: src/App/Router.php:275
 #, php-format
 msgid "Method not allowed for this module. Allowed method(s): %s"
 msgstr "Метод не разрешён для этого модуля. Разрешенный метод(ы): %s"
 
-#: src/App/Router.php:288 src/Module/HTTPException/PageNotFound.php:33
+#: src/App/Router.php:277 src/Module/HTTPException/PageNotFound.php:33
 msgid "Page not found."
 msgstr "Страница не найдена."
 
-#: src/App/Router.php:315
+#: src/App/Router.php:305
 msgid "You must be logged in to use addons. "
 msgstr "Вы должны войти в систему, чтобы использовать аддоны."
 
-#: src/BaseModule.php:345
+#: src/BaseModule.php:377
 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 "Ключ формы безопасности неправильный. Вероятно, это произошло потому, что форма была открыта слишком долго (более 3 часов) до её отправки."
 
-#: src/BaseModule.php:372
+#: src/BaseModule.php:404
 msgid "All contacts"
 msgstr "Все контакты"
 
-#: src/BaseModule.php:377 src/Content/Widget.php:231 src/Core/ACL.php:193
-#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:79
-#: src/Module/PermissionTooltip.php:101
+#: src/BaseModule.php:409 src/Content/Widget.php:231 src/Core/ACL.php:193
+#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:98
+#: src/Module/PermissionTooltip.php:120
 msgid "Followers"
 msgstr "Подписаны на вас"
 
-#: src/BaseModule.php:382 src/Content/Widget.php:232
+#: src/BaseModule.php:414 src/Content/Widget.php:232
 #: src/Module/Contact.php:368
 msgid "Following"
 msgstr "Ваши подписки"
 
-#: src/BaseModule.php:387 src/Content/Widget.php:233
+#: src/BaseModule.php:419 src/Content/Widget.php:233
 #: src/Module/Contact.php:369
 msgid "Mutual friends"
 msgstr "Взаимные друзья"
 
-#: src/BaseModule.php:395
+#: src/BaseModule.php:427
 msgid "Common"
 msgstr ""
 
@@ -2500,7 +2504,7 @@ msgid "Visible to <strong>everybody</strong>"
 msgstr "Видимое <strong>всем</strong>"
 
 #: src/Content/Conversation.php:308 src/Module/Item/Compose.php:159
-#: src/Object/Post.php:973
+#: src/Object/Post.php:975
 msgid "Please enter a image/video/audio/webpage URL:"
 msgstr "Пожалуйста, введите адрес картинки/видео/аудио/странички:"
 
@@ -2524,12 +2528,12 @@ msgstr "Удалить елемент(ты)?"
 msgid "New Post"
 msgstr "Новая запись"
 
-#: src/Content/Conversation.php:325
+#: src/Content/Conversation.php:325 src/Object/Post.php:481
 msgid "Share"
 msgstr "Поделиться"
 
 #: src/Content/Conversation.php:336 src/Module/Item/Compose.php:156
-#: src/Object/Post.php:970
+#: src/Object/Post.php:972
 msgid "Image"
 msgstr "Изображение / Фото"
 
@@ -2594,7 +2598,7 @@ msgstr "Репост"
 #: src/Content/Conversation.php:851
 #, php-format
 msgid "Reshared by %s <%s>"
-msgstr ""
+msgstr "Репост от %s <%s>"
 
 #: src/Content/Conversation.php:854
 #, php-format
@@ -2737,7 +2741,7 @@ msgstr "показать больше"
 msgid "%1$s poked %2$s"
 msgstr "%1$s ткнул %2$s"
 
-#: src/Content/Item.php:338 src/Model/Item.php:2624
+#: src/Content/Item.php:338 src/Model/Item.php:2626
 msgid "event"
 msgstr "мероприятие"
 
@@ -2745,31 +2749,31 @@ msgstr "мероприятие"
 msgid "Follow Thread"
 msgstr "Подписаться на обсуждение"
 
-#: src/Content/Item.php:443 src/Model/Contact.php:1047
+#: src/Content/Item.php:443 src/Model/Contact.php:1060
 msgid "View Status"
 msgstr "Просмотреть статус"
 
-#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:981
-#: src/Model/Contact.php:1039 src/Model/Contact.php:1048
+#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:994
+#: src/Model/Contact.php:1052 src/Model/Contact.php:1061
 #: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:225
 msgid "View Profile"
 msgstr "Просмотреть профиль"
 
-#: src/Content/Item.php:445 src/Model/Contact.php:1049
+#: src/Content/Item.php:445 src/Model/Contact.php:1062
 msgid "View Photos"
 msgstr "Просмотреть фото"
 
-#: src/Content/Item.php:446 src/Model/Contact.php:1040
-#: src/Model/Contact.php:1050
+#: src/Content/Item.php:446 src/Model/Contact.php:1053
+#: src/Model/Contact.php:1063
 msgid "Network Posts"
 msgstr "Записи сети"
 
-#: src/Content/Item.php:447 src/Model/Contact.php:1041
-#: src/Model/Contact.php:1051
+#: src/Content/Item.php:447 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1064
 msgid "View Contact"
 msgstr "Просмотреть контакт"
 
-#: src/Content/Item.php:448 src/Model/Contact.php:1052
+#: src/Content/Item.php:448 src/Model/Contact.php:1065
 msgid "Send PM"
 msgstr "Отправить ЛС"
 
@@ -2792,7 +2796,7 @@ msgstr "Игнорировать"
 msgid "Languages"
 msgstr "Языки"
 
-#: src/Content/Item.php:458 src/Model/Contact.php:1053
+#: src/Content/Item.php:458 src/Model/Contact.php:1066
 msgid "Poke"
 msgstr "потыкать"
 
@@ -2894,7 +2898,7 @@ msgstr "Создать аккаунт"
 #: src/Module/Settings/TwoFactor/AppSpecific.php:127
 #: src/Module/Settings/TwoFactor/Index.php:111
 #: src/Module/Settings/TwoFactor/Recovery.php:105
-#: src/Module/Settings/TwoFactor/Verify.php:144 view/theme/vier/theme.php:217
+#: src/Module/Settings/TwoFactor/Verify.php:145 view/theme/vier/theme.php:217
 msgid "Help"
 msgstr "Помощь"
 
@@ -3000,8 +3004,8 @@ msgid "See all notifications"
 msgstr "Посмотреть все уведомления"
 
 #: src/Content/Nav.php:280
-msgid "Mark all system notifications seen"
-msgstr "Ð\9eÑ\82меÑ\82иÑ\82Ñ\8c Ð²Ñ\81е Ñ\81иÑ\81Ñ\82емнÑ\8bе Ñ\83ведомлениÑ\8f, ÐºÐ°Ðº Ð¿Ñ\80оÑ\87иÑ\82аннÑ\8bе"
+msgid "Mark all system notifications as seen"
+msgstr "Ð\9fомеÑ\82иÑ\82Ñ\8c Ð²Ñ\81е Ñ\83ведомлениÑ\8f Ð¿Ñ\80оÑ\87иÑ\82аннÑ\8bми"
 
 #: src/Content/Nav.php:283 view/theme/frio/theme.php:234
 msgid "Private mail"
@@ -3087,8 +3091,8 @@ msgstr "Изображение / Фото"
 msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 msgstr "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 
-#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3155
-#: src/Model/Item.php:3161 src/Model/Item.php:3162
+#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3157
+#: src/Model/Item.php:3163 src/Model/Item.php:3164
 msgid "Link to source"
 msgstr "Ссылка на источник"
 
@@ -3247,11 +3251,11 @@ msgstr "Люди"
 msgid "Organisations"
 msgstr "Организации"
 
-#: src/Content/Widget.php:522 src/Model/Contact.php:1476
+#: src/Content/Widget.php:522 src/Model/Contact.php:1493
 msgid "News"
 msgstr "Новости"
 
-#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:50
+#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:51
 msgid "All"
 msgstr "Все"
 
@@ -3328,8 +3332,8 @@ msgstr "Отписаться"
 msgid "Yourself"
 msgstr "Вы"
 
-#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:85
-#: src/Module/PermissionTooltip.php:107
+#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:104
+#: src/Module/PermissionTooltip.php:126
 msgid "Mutuals"
 msgstr "Взаимные"
 
@@ -4076,81 +4080,81 @@ msgstr "Внутренняя ошибка сервера"
 msgid "Legacy module file not found: %s"
 msgstr "Legacy-модуль не найден: %s"
 
-#: src/Model/Contact.php:1043 src/Model/Contact.php:1055
+#: src/Model/Contact.php:1056 src/Model/Contact.php:1068
 msgid "UnFollow"
 msgstr "Отписаться"
 
-#: src/Model/Contact.php:1061 src/Module/Admin/Users/Pending.php:107
+#: src/Model/Contact.php:1074 src/Module/Admin/Users/Pending.php:107
 #: src/Module/Notifications/Introductions.php:130
 #: src/Module/Notifications/Introductions.php:202
 msgid "Approve"
 msgstr "Одобрить"
 
-#: src/Model/Contact.php:1472
+#: src/Model/Contact.php:1489
 msgid "Organisation"
 msgstr "Организация"
 
-#: src/Model/Contact.php:1480
+#: src/Model/Contact.php:1497
 msgid "Forum"
 msgstr "Форум"
 
-#: src/Model/Contact.php:2350
+#: src/Model/Contact.php:2372
 msgid "Disallowed profile URL."
 msgstr "Запрещенный URL профиля."
 
-#: src/Model/Contact.php:2355 src/Module/Friendica.php:81
+#: src/Model/Contact.php:2377 src/Module/Friendica.php:81
 msgid "Blocked domain"
 msgstr "Заблокированный домен"
 
-#: src/Model/Contact.php:2360
+#: src/Model/Contact.php:2382
 msgid "Connect URL missing."
 msgstr "Connect-URL отсутствует."
 
-#: src/Model/Contact.php:2369
+#: src/Model/Contact.php:2391
 msgid ""
 "The contact could not be added. Please check the relevant network "
 "credentials in your Settings -> Social Networks page."
 msgstr "Контакт не может быть добавлен. Пожалуйста проверьте учётные данные на странице Настройки -> Социальные сети."
 
-#: src/Model/Contact.php:2406
+#: src/Model/Contact.php:2428
 msgid "The profile address specified does not provide adequate information."
 msgstr "Указанный адрес профиля не дает адекватной информации."
 
-#: src/Model/Contact.php:2408
+#: src/Model/Contact.php:2430
 msgid "No compatible communication protocols or feeds were discovered."
 msgstr "Обнаружены несовместимые протоколы связи или каналы."
 
-#: src/Model/Contact.php:2411
+#: src/Model/Contact.php:2433
 msgid "An author or name was not found."
 msgstr "Автор или имя не найдены."
 
-#: src/Model/Contact.php:2414
+#: src/Model/Contact.php:2436
 msgid "No browser URL could be matched to this address."
 msgstr "Нет URL браузера, который соответствует этому адресу."
 
-#: src/Model/Contact.php:2417
+#: src/Model/Contact.php:2439
 msgid ""
 "Unable to match @-style Identity Address with a known protocol or email "
 "contact."
 msgstr "Не получается совместить этот адрес с известным протоколом или контактом электронной почты."
 
-#: src/Model/Contact.php:2418
+#: src/Model/Contact.php:2440
 msgid "Use mailto: in front of address to force email check."
 msgstr "Bcgjkmpeqnt mailto: перед адресом для быстрого доступа к email."
 
-#: src/Model/Contact.php:2424
+#: src/Model/Contact.php:2446
 msgid ""
 "The profile address specified belongs to a network which has been disabled "
 "on this site."
 msgstr "Указанный адрес профиля принадлежит сети, недоступной на этом сайта."
 
-#: src/Model/Contact.php:2429
+#: src/Model/Contact.php:2451
 msgid ""
 "Limited profile. This person will be unable to receive direct/personal "
 "notifications from you."
 msgstr "Ограниченный профиль. Этот человек не сможет получить прямые / личные уведомления от вас."
 
-#: src/Model/Contact.php:2488
+#: src/Model/Contact.php:2510
 msgid "Unable to retrieve contact information."
 msgstr "Невозможно получить контактную информацию."
 
@@ -4270,33 +4274,33 @@ msgstr "Название группы: "
 msgid "Edit groups"
 msgstr "Редактировать группы"
 
-#: src/Model/Item.php:1677
+#: src/Model/Item.php:1679
 #, php-format
 msgid "Detected languages in this post:\\n%s"
 msgstr "Обнаруженные в этой записи языки:\\n%s"
 
-#: src/Model/Item.php:2628
+#: src/Model/Item.php:2630
 msgid "activity"
 msgstr "активность"
 
-#: src/Model/Item.php:2630
+#: src/Model/Item.php:2632
 msgid "comment"
 msgstr ""
 
-#: src/Model/Item.php:2633
+#: src/Model/Item.php:2635
 msgid "post"
 msgstr "пост"
 
-#: src/Model/Item.php:2770
+#: src/Model/Item.php:2772
 #, php-format
 msgid "Content warning: %s"
 msgstr "Предупреждение о контенте: %s"
 
-#: src/Model/Item.php:3120
+#: src/Model/Item.php:3122
 msgid "bytes"
 msgstr "байт"
 
-#: src/Model/Item.php:3149 src/Model/Item.php:3150
+#: src/Model/Item.php:3151 src/Model/Item.php:3152
 msgid "View on separate page"
 msgstr "Посмотреть в отдельной вкладке"
 
@@ -4327,120 +4331,120 @@ msgstr "О себе:"
 msgid "Atom feed"
 msgstr "Фид Atom"
 
-#: src/Model/Profile.php:496 src/Model/Profile.php:593
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: src/Model/Profile.php:497
+#: src/Model/Profile.php:502
 msgid "F d"
 msgstr "F d"
 
-#: src/Model/Profile.php:559 src/Model/Profile.php:644
+#: src/Model/Profile.php:566 src/Model/Profile.php:650
 msgid "[today]"
 msgstr "[сегодня]"
 
-#: src/Model/Profile.php:569
+#: src/Model/Profile.php:575
 msgid "Birthday Reminders"
 msgstr "Напоминания о днях рождения"
 
-#: src/Model/Profile.php:570
+#: src/Model/Profile.php:576
 msgid "Birthdays this week:"
 msgstr "Дни рождения на этой неделе:"
 
-#: src/Model/Profile.php:631
+#: src/Model/Profile.php:599
+msgid "g A l F d"
+msgstr "g A l F d"
+
+#: src/Model/Profile.php:637
 msgid "[No description]"
 msgstr "[без описания]"
 
-#: src/Model/Profile.php:657
+#: src/Model/Profile.php:663
 msgid "Event Reminders"
 msgstr "Напоминания о мероприятиях"
 
-#: src/Model/Profile.php:658
+#: src/Model/Profile.php:664
 msgid "Upcoming events the next 7 days:"
 msgstr "События на ближайшие 7 дней:"
 
-#: src/Model/Profile.php:846
+#: src/Model/Profile.php:852
 #, php-format
 msgid "OpenWebAuth: %1$s welcomes %2$s"
 msgstr "OpenWebAuth: %1$s приветствует %2$s"
 
-#: src/Model/Profile.php:978
+#: src/Model/Profile.php:984
 msgid "Hometown:"
 msgstr "Родной город:"
 
-#: src/Model/Profile.php:979
+#: src/Model/Profile.php:985
 msgid "Marital Status:"
 msgstr "Семейное положение:"
 
-#: src/Model/Profile.php:980
+#: src/Model/Profile.php:986
 msgid "With:"
 msgstr "Вместе:"
 
-#: src/Model/Profile.php:981
+#: src/Model/Profile.php:987
 msgid "Since:"
 msgstr "С:"
 
-#: src/Model/Profile.php:982
+#: src/Model/Profile.php:988
 msgid "Sexual Preference:"
 msgstr "Сексуальные предпочтения:"
 
-#: src/Model/Profile.php:983
+#: src/Model/Profile.php:989
 msgid "Political Views:"
 msgstr "Политические взгляды:"
 
-#: src/Model/Profile.php:984
+#: src/Model/Profile.php:990
 msgid "Religious Views:"
 msgstr "Религиозные взгляды:"
 
-#: src/Model/Profile.php:985
+#: src/Model/Profile.php:991
 msgid "Likes:"
 msgstr "Нравится:"
 
-#: src/Model/Profile.php:986
+#: src/Model/Profile.php:992
 msgid "Dislikes:"
 msgstr "Не нравится:"
 
-#: src/Model/Profile.php:987
+#: src/Model/Profile.php:993
 msgid "Title/Description:"
 msgstr "Заголовок / Описание:"
 
-#: src/Model/Profile.php:988 src/Module/Admin/Summary.php:233
+#: src/Model/Profile.php:994 src/Module/Admin/Summary.php:233
 msgid "Summary"
 msgstr "Резюме"
 
-#: src/Model/Profile.php:989
+#: src/Model/Profile.php:995
 msgid "Musical interests"
 msgstr "Музыкальные интересы"
 
-#: src/Model/Profile.php:990
+#: src/Model/Profile.php:996
 msgid "Books, literature"
 msgstr "Книги, литература"
 
-#: src/Model/Profile.php:991
+#: src/Model/Profile.php:997
 msgid "Television"
 msgstr "Телевидение"
 
-#: src/Model/Profile.php:992
+#: src/Model/Profile.php:998
 msgid "Film/dance/culture/entertainment"
 msgstr "Кино / танцы / культура / развлечения"
 
-#: src/Model/Profile.php:993
+#: src/Model/Profile.php:999
 msgid "Hobbies/Interests"
 msgstr "Хобби / Интересы"
 
-#: src/Model/Profile.php:994
+#: src/Model/Profile.php:1000
 msgid "Love/romance"
 msgstr "Любовь / романтика"
 
-#: src/Model/Profile.php:995
+#: src/Model/Profile.php:1001
 msgid "Work/employment"
 msgstr "Работа / занятость"
 
-#: src/Model/Profile.php:996
+#: src/Model/Profile.php:1002
 msgid "School/education"
 msgstr "Школа / образование"
 
-#: src/Model/Profile.php:997
+#: src/Model/Profile.php:1003
 msgid "Contact information and Social Networks"
 msgstr "Контактная информация и социальные сети"
 
@@ -4773,49 +4777,49 @@ msgid ""
 " the open addon registry at %2$s"
 msgstr "На вашем узле пока нет доступных дополнений. Вы можете найти официальный репозиторий дополнений на %1$s и найти больше интересных дополнений в открытой библиотеке на %2$s"
 
-#: src/Module/Admin/BaseUsers.php:53
+#: src/Module/Admin/BaseUsers.php:54
 msgid "List of all users"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:58
+#: src/Module/Admin/BaseUsers.php:59
 msgid "Active"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:61
+#: src/Module/Admin/BaseUsers.php:62
 msgid "List of active accounts"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:314
+#: src/Module/Admin/BaseUsers.php:67 src/Module/Contact.php:314
 #: src/Module/Contact.php:374
 msgid "Pending"
 msgstr "В ожидании"
 
-#: src/Module/Admin/BaseUsers.php:69
+#: src/Module/Admin/BaseUsers.php:70
 msgid "List of pending registrations"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:322
+#: src/Module/Admin/BaseUsers.php:75 src/Module/Contact.php:322
 #: src/Module/Contact.php:375
 msgid "Blocked"
 msgstr "Заблокированы"
 
-#: src/Module/Admin/BaseUsers.php:77
+#: src/Module/Admin/BaseUsers.php:78
 msgid "List of blocked users"
 msgstr "Заблокированные пользователи"
 
-#: src/Module/Admin/BaseUsers.php:82
+#: src/Module/Admin/BaseUsers.php:83
 msgid "Deleted"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:85
+#: src/Module/Admin/BaseUsers.php:86
 msgid "List of pending user deletions"
 msgstr ""
 
-#: src/Module/Admin/BaseUsers.php:103
+#: src/Module/Admin/BaseUsers.php:104
 msgid "Private Forum"
 msgstr "Закрытый форум"
 
-#: src/Module/Admin/BaseUsers.php:110
+#: src/Module/Admin/BaseUsers.php:111
 msgid "Relay"
 msgstr "Ретранслятор"
 
@@ -6835,17 +6839,17 @@ msgstr "Сообщение от пользователя"
 msgid "Deny"
 msgstr "Отклонить"
 
-#: src/Module/Api/ApiResponse.php:253
+#: src/Module/Api/ApiResponse.php:272
 #, php-format
 msgid "API endpoint %s %s is not implemented"
 msgstr ""
 
-#: src/Module/Api/ApiResponse.php:254
+#: src/Module/Api/ApiResponse.php:273
 msgid ""
 "The API endpoint is currently not implemented but might be in the future."
 msgstr ""
 
-#: src/Module/Api/Mastodon/Apps.php:57
+#: src/Module/Api/Mastodon/Apps.php:63
 msgid "Missing parameters"
 msgstr ""
 
@@ -6880,7 +6884,7 @@ msgstr ""
 msgid "Posts from %s can't be unshared"
 msgstr ""
 
-#: src/Module/Api/Twitter/ContactEndpoint.php:68
+#: src/Module/Api/Twitter/ContactEndpoint.php:66
 msgid "Contact not found"
 msgstr "Контакт не найден"
 
@@ -6982,12 +6986,12 @@ msgstr ""
 msgid "User registrations waiting for confirmation"
 msgstr "Регистрации пользователей, ожидающие подтверждения"
 
-#: src/Module/BaseApi.php:239 src/Module/BaseApi.php:255
-#: src/Module/BaseApi.php:271
+#: src/Module/BaseApi.php:241 src/Module/BaseApi.php:257
+#: src/Module/BaseApi.php:273
 msgid "Too Many Requests"
 msgstr ""
 
-#: src/Module/BaseApi.php:240
+#: src/Module/BaseApi.php:242
 #, php-format
 msgid "Daily posting limit of %d post reached. The post was rejected."
 msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
@@ -6996,7 +7000,7 @@ msgstr[1] "Дневной лимит в %d записи достигнут. За
 msgstr[2] "Дневной лимит в %d записей достигнут. Запись отклонена."
 msgstr[3] "Дневной лимит в %d записей достигнут. Запись отклонена."
 
-#: src/Module/BaseApi.php:256
+#: src/Module/BaseApi.php:258
 #, php-format
 msgid "Weekly posting limit of %d post reached. The post was rejected."
 msgid_plural ""
@@ -7006,7 +7010,7 @@ msgstr[1] "Недельный лимит в %d записи достигнут.
 msgstr[2] "Недельный лимит в %d записей достигнут. Запись была отклонена."
 msgstr[3] "Недельный лимит в %d записей достигнут. Запись была отклонена."
 
-#: src/Module/BaseApi.php:272
+#: src/Module/BaseApi.php:274
 #, php-format
 msgid "Monthly posting limit of %d post reached. The post was rejected."
 msgstr "Месячный лимит в %d записей достигнут. Запись была отклонена."
@@ -7195,76 +7199,44 @@ msgstr "Входящий запрос на подписку"
 msgid "Visit %s's profile [%s]"
 msgstr "Посетить профиль %s [%s]"
 
-#: src/Module/Contact/Advanced.php:109
+#: src/Module/Contact/Advanced.php:99
 msgid "Contact update failed."
 msgstr "Обновление контакта неудачное."
 
-#: src/Module/Contact/Advanced.php:124
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr "<strong>ВНИМАНИЕ: Это крайне важно!</strong> Если вы введете неверную информацию, ваша связь с этим контактом перестанет работать."
-
-#: src/Module/Contact/Advanced.php:125
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "Пожалуйста, нажмите клавишу вашего браузера 'Back' или 'Назад' <strong>сейчас</strong>, если вы не уверены, что делаете на этой странице."
-
-#: src/Module/Contact/Advanced.php:145
+#: src/Module/Contact/Advanced.php:130
 msgid "Return to contact editor"
 msgstr "Возврат к редактору контакта"
 
-#: src/Module/Contact/Advanced.php:150
+#: src/Module/Contact/Advanced.php:135
 msgid "Account Nickname"
 msgstr "Ник аккаунта"
 
-#: src/Module/Contact/Advanced.php:151
-msgid "@Tagname - overrides Name/Nickname"
-msgstr "@Tagname - перезаписывает Имя/Ник"
-
-#: src/Module/Contact/Advanced.php:152
+#: src/Module/Contact/Advanced.php:136
 msgid "Account URL"
 msgstr "URL аккаунта"
 
-#: src/Module/Contact/Advanced.php:153
-msgid "Account URL Alias"
-msgstr ""
-
-#: src/Module/Contact/Advanced.php:154
-msgid "Friend Request URL"
-msgstr "URL запроса в друзья"
-
-#: src/Module/Contact/Advanced.php:155
-msgid "Friend Confirm URL"
-msgstr "URL подтверждения друга"
-
-#: src/Module/Contact/Advanced.php:156
-msgid "Notification Endpoint URL"
-msgstr "URL эндпоинта уведомления"
-
-#: src/Module/Contact/Advanced.php:157
+#: src/Module/Contact/Advanced.php:137
 msgid "Poll/Feed URL"
 msgstr "URL опроса/ленты"
 
-#: src/Module/Contact/Advanced.php:158
+#: src/Module/Contact/Advanced.php:138
 msgid "New photo from this URL"
 msgstr "Новое фото из этой URL"
 
-#: src/Module/Contact/Contacts.php:31 src/Module/Conversation/Network.php:168
+#: src/Module/Contact/Contacts.php:50 src/Module/Conversation/Network.php:187
 #: src/Module/Group.php:103
 msgid "Invalid contact."
 msgstr "Недопустимый контакт."
 
-#: src/Module/Contact/Contacts.php:54
+#: src/Module/Contact/Contacts.php:73
 msgid "No known contacts."
 msgstr "Нет известных контактов."
 
-#: src/Module/Contact/Contacts.php:68 src/Module/Profile/Common.php:98
+#: src/Module/Contact/Contacts.php:87 src/Module/Profile/Common.php:98
 msgid "No common contacts."
 msgstr "Общих контактов нет."
 
-#: src/Module/Contact/Contacts.php:80 src/Module/Profile/Contacts.php:96
+#: src/Module/Contact/Contacts.php:99 src/Module/Profile/Contacts.php:96
 #, php-format
 msgid "Follower (%s)"
 msgid_plural "Followers (%s)"
@@ -7273,7 +7245,7 @@ msgstr[1] "Подписчики (%s)"
 msgstr[2] "Подписчики (%s)"
 msgstr[3] "Подписчики (%s)"
 
-#: src/Module/Contact/Contacts.php:84 src/Module/Profile/Contacts.php:99
+#: src/Module/Contact/Contacts.php:103 src/Module/Profile/Contacts.php:99
 #, php-format
 msgid "Following (%s)"
 msgid_plural "Following (%s)"
@@ -7282,7 +7254,7 @@ msgstr[1] "Подписаны на (%s)"
 msgstr[2] "Подписаны на (%s)"
 msgstr[3] "Подписаны на (%s)"
 
-#: src/Module/Contact/Contacts.php:88 src/Module/Profile/Contacts.php:102
+#: src/Module/Contact/Contacts.php:107 src/Module/Profile/Contacts.php:102
 #, php-format
 msgid "Mutual friend (%s)"
 msgid_plural "Mutual friends (%s)"
@@ -7291,12 +7263,12 @@ msgstr[1] "Взаимные друзья (%s)"
 msgstr[2] "Взаимные друзья (%s)"
 msgstr[3] "Взаимные друзья (%s)"
 
-#: src/Module/Contact/Contacts.php:90 src/Module/Profile/Contacts.php:104
+#: src/Module/Contact/Contacts.php:109 src/Module/Profile/Contacts.php:104
 #, php-format
 msgid "These contacts both follow and are followed by <strong>%s</strong>."
 msgstr "Эти контакты взаимно добавлены в друзья <strong>%s</strong>."
 
-#: src/Module/Contact/Contacts.php:96 src/Module/Profile/Common.php:86
+#: src/Module/Contact/Contacts.php:115 src/Module/Profile/Common.php:86
 #, php-format
 msgid "Common contact (%s)"
 msgid_plural "Common contacts (%s)"
@@ -7305,14 +7277,14 @@ msgstr[1] "Общие контакты (%s)"
 msgstr[2] "Общие контакты (%s)"
 msgstr[3] "Общие контакты (%s)"
 
-#: src/Module/Contact/Contacts.php:98 src/Module/Profile/Common.php:88
+#: src/Module/Contact/Contacts.php:117 src/Module/Profile/Common.php:88
 #, php-format
 msgid ""
 "Both <strong>%s</strong> and yourself have publicly interacted with these "
 "contacts (follow, comment or likes on public posts)."
 msgstr "<strong>%s</strong> и вы  публично взаимодействовали с этими контактами (добавляли их, комментировали публичные посты или оставляли лайки к ним)."
 
-#: src/Module/Contact/Contacts.php:104 src/Module/Profile/Contacts.php:110
+#: src/Module/Contact/Contacts.php:123 src/Module/Profile/Contacts.php:110
 #, php-format
 msgid "Contact (%s)"
 msgid_plural "Contacts (%s)"
@@ -7321,27 +7293,27 @@ msgstr[1] "Контакты (%s)"
 msgstr[2] "Контакты (%s)"
 msgstr[3] "Контакты (%s)"
 
-#: src/Module/Contact/Poke.php:116
+#: src/Module/Contact/Poke.php:135
 msgid "Error while sending poke, please retry."
 msgstr "Ошибка при отправке тычка, попробуйте ещё."
 
-#: src/Module/Contact/Poke.php:129 src/Module/Search/Acl.php:54
+#: src/Module/Contact/Poke.php:148 src/Module/Search/Acl.php:54
 msgid "You must be logged in to use this module."
 msgstr "Вам нужно войти, чтобы использовать этот модуль."
 
-#: src/Module/Contact/Poke.php:152
+#: src/Module/Contact/Poke.php:171
 msgid "Poke/Prod"
 msgstr "Потыкать/Потолкать"
 
-#: src/Module/Contact/Poke.php:153
+#: src/Module/Contact/Poke.php:172
 msgid "poke, prod or do other things to somebody"
 msgstr "Потыкать, потолкать или сделать что-то еще с кем-то"
 
-#: src/Module/Contact/Poke.php:155
+#: src/Module/Contact/Poke.php:174
 msgid "Choose what you wish to do to recipient"
 msgstr "Выберите действия для получателя"
 
-#: src/Module/Contact/Poke.php:156
+#: src/Module/Contact/Poke.php:175
 msgid "Make this post private"
 msgstr "Сделать эту запись личной"
 
@@ -7609,7 +7581,7 @@ msgstr "Вы действительно хотите отозвать подпи
 
 #: src/Module/Contact/Revoke.php:109
 #: src/Module/Notifications/Introductions.php:142
-#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:130
+#: src/Module/OAuth/Acknowledge.php:53 src/Module/Register.php:130
 msgid "Yes"
 msgstr "Да"
 
@@ -7660,45 +7632,45 @@ msgstr ""
 msgid "Not available."
 msgstr "Недоступно."
 
-#: src/Module/Conversation/Network.php:154
+#: src/Module/Conversation/Network.php:173
 msgid "No such group"
 msgstr "Нет такой группы"
 
-#: src/Module/Conversation/Network.php:158
+#: src/Module/Conversation/Network.php:177
 #, php-format
 msgid "Group: %s"
 msgstr "Группа: %s"
 
-#: src/Module/Conversation/Network.php:234
+#: src/Module/Conversation/Network.php:253
 msgid "Latest Activity"
 msgstr "Вся активность"
 
-#: src/Module/Conversation/Network.php:237
+#: src/Module/Conversation/Network.php:256
 msgid "Sort by latest activity"
 msgstr "Отсортировать по свежей активности"
 
-#: src/Module/Conversation/Network.php:242
+#: src/Module/Conversation/Network.php:261
 msgid "Latest Posts"
 msgstr "Новые записи"
 
-#: src/Module/Conversation/Network.php:245
+#: src/Module/Conversation/Network.php:264
 msgid "Sort by post received date"
 msgstr "Отсортировать по дате записей"
 
-#: src/Module/Conversation/Network.php:250
+#: src/Module/Conversation/Network.php:269
 #: src/Module/Settings/Profile/Index.php:227
 msgid "Personal"
 msgstr "Личные"
 
-#: src/Module/Conversation/Network.php:253
+#: src/Module/Conversation/Network.php:272
 msgid "Posts that mention or involve you"
 msgstr "Записи, которые упоминают вас или в которых вы участвуете"
 
-#: src/Module/Conversation/Network.php:258 src/Object/Post.php:321
+#: src/Module/Conversation/Network.php:277 src/Object/Post.php:321
 msgid "Starred"
 msgstr "Избранное"
 
-#: src/Module/Conversation/Network.php:261
+#: src/Module/Conversation/Network.php:280
 msgid "Favourite Posts"
 msgstr "Избранные записи"
 
@@ -8197,7 +8169,7 @@ msgstr ""
 
 #: src/Module/Install.php:210
 msgid "OK"
-msgstr ""
+msgstr "ОК"
 
 #: src/Module/Install.php:215
 msgid "Check again"
@@ -8516,7 +8488,7 @@ msgid "Claims to be known to you: "
 msgstr "Утверждения, о которых должно быть вам известно: "
 
 #: src/Module/Notifications/Introductions.php:142
-#: src/Module/OAuth/Acknowledge.php:48 src/Module/Register.php:131
+#: src/Module/OAuth/Acknowledge.php:54 src/Module/Register.php:131
 msgid "No"
 msgstr "Нет"
 
@@ -8580,11 +8552,11 @@ msgstr "Уведомления"
 msgid "Show unread"
 msgstr "Показать непрочитанные"
 
-#: src/Module/OAuth/Acknowledge.php:44
+#: src/Module/OAuth/Acknowledge.php:50
 msgid "Authorize application connection"
 msgstr "Разрешить связь с приложением"
 
-#: src/Module/OAuth/Acknowledge.php:46
+#: src/Module/OAuth/Acknowledge.php:52
 msgid ""
 "Do you want to authorize this application to access your posts and contacts,"
 " and/or create new posts for you?"
@@ -8594,7 +8566,7 @@ msgstr "Вы действительно хотите разрешить этом
 msgid "Unsupported or missing response type"
 msgstr ""
 
-#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:66
+#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:72
 msgid "Incomplete request data"
 msgstr ""
 
@@ -8605,24 +8577,24 @@ msgid ""
 "close this window: %s"
 msgstr ""
 
-#: src/Module/OAuth/Token.php:90
+#: src/Module/OAuth/Token.php:96
 msgid "Unsupported or missing grant type"
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:25
+#: src/Module/PermissionTooltip.php:44
 #, php-format
 msgid "Wrong type \"%s\", expected one of: %s"
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:42
+#: src/Module/PermissionTooltip.php:61
 msgid "Model not found"
 msgstr ""
 
-#: src/Module/PermissionTooltip.php:64
+#: src/Module/PermissionTooltip.php:83
 msgid "Remote privacy information not available."
 msgstr "Личная информация удаленно недоступна."
 
-#: src/Module/PermissionTooltip.php:73
+#: src/Module/PermissionTooltip.php:92
 msgid "Visible to:"
 msgstr "Кто может видеть:"
 
@@ -9042,7 +9014,7 @@ msgid ""
 msgstr "<p>Откройте приложение для двухфакторной аутентификации на вашем устройстве, чтобы получить код аутентификации и подтвердить вашу личность.</p>"
 
 #: src/Module/Security/TwoFactor/Verify.php:100
-#: src/Module/Settings/TwoFactor/Verify.php:153
+#: src/Module/Settings/TwoFactor/Verify.php:154
 msgid "Please enter a code from your authentication app"
 msgstr "Пожалуйста, введите код из вашего приложения для аутентификации"
 
@@ -9208,11 +9180,11 @@ msgstr "Автообновление может загружать новые з
 
 #: src/Module/Settings/Display.php:212
 msgid "Display emoticons"
-msgstr ""
+msgstr "Показывать смайлики"
 
 #: src/Module/Settings/Display.php:212
 msgid "When enabled, emoticons are replaced with matching symbols."
-msgstr ""
+msgstr "Когда включено, соответствующие символы отображаются как смайлики."
 
 #: src/Module/Settings/Display.php:213
 msgid "Infinite scroll"
@@ -9232,28 +9204,28 @@ msgstr "Включить автоматическое удаление изли
 
 #: src/Module/Settings/Display.php:215
 msgid "Display the Dislike feature"
-msgstr ""
+msgstr "Показывать \"Не нравится\""
 
 #: src/Module/Settings/Display.php:215
 msgid ""
 "Display the Dislike button and dislike reactions on posts and comments."
-msgstr ""
+msgstr "Показывать кнопку \"Не нравится\" и соответствующие реакции на записях и комментариях."
 
 #: src/Module/Settings/Display.php:216
 msgid "Display the resharer"
-msgstr ""
+msgstr "Показывать поделившегося"
 
 #: src/Module/Settings/Display.php:216
 msgid "Display the first resharer as icon and text on a reshared item."
-msgstr ""
+msgstr "Показывать первого из поделившихся записью в виде значка над этой записью."
 
 #: src/Module/Settings/Display.php:217
 msgid "Stay local"
-msgstr ""
+msgstr "Оставаться локально"
 
 #: src/Module/Settings/Display.php:217
 msgid "Don't go to a remote system when following a contact link."
-msgstr ""
+msgstr "Не переходить на другие серверы по ссылкам профилей."
 
 #: src/Module/Settings/Display.php:219
 msgid "Beginning of week:"
@@ -9469,7 +9441,7 @@ msgstr "выберите фото из ваших фотоальбомов"
 
 #: src/Module/Settings/TwoFactor/AppSpecific.php:64
 #: src/Module/Settings/TwoFactor/Recovery.php:62
-#: src/Module/Settings/TwoFactor/Trusted.php:46
+#: src/Module/Settings/TwoFactor/Trusted.php:65
 #: src/Module/Settings/TwoFactor/Verify.php:68
 msgid "Please enter your password to access this page."
 msgstr "Пожалуйста, введите ваш пароль для доступа к этой странице."
@@ -9673,42 +9645,42 @@ msgstr "Сгенерировать новые коды восстановлен
 msgid "Next: Verification"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:63
+#: src/Module/Settings/TwoFactor/Trusted.php:82
 msgid "Trusted browsers successfully removed."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:73
+#: src/Module/Settings/TwoFactor/Trusted.php:92
 msgid "Trusted browser successfully removed."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:114
+#: src/Module/Settings/TwoFactor/Trusted.php:133
 msgid "Two-factor Trusted Browsers"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:115
+#: src/Module/Settings/TwoFactor/Trusted.php:134
 msgid ""
 "Trusted browsers are individual browsers you chose to skip two-factor "
 "authentication to access Friendica. Please use this feature sparingly, as it"
 " can negate the benefit of two-factor authentication."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:116
+#: src/Module/Settings/TwoFactor/Trusted.php:135
 msgid "Device"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:117
+#: src/Module/Settings/TwoFactor/Trusted.php:136
 msgid "OS"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:119
+#: src/Module/Settings/TwoFactor/Trusted.php:138
 msgid "Trusted"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:120
+#: src/Module/Settings/TwoFactor/Trusted.php:139
 msgid "Last Use"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Trusted.php:122
+#: src/Module/Settings/TwoFactor/Trusted.php:141
 msgid "Remove All"
 msgstr ""
 
@@ -9716,7 +9688,7 @@ msgstr ""
 msgid "Two-factor authentication successfully activated."
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:123
+#: src/Module/Settings/TwoFactor/Verify.php:124
 #, php-format
 msgid ""
 "<p>Or you can submit the authentication settings manually:</p>\n"
@@ -9736,24 +9708,24 @@ msgid ""
 "</dl>"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:143
+#: src/Module/Settings/TwoFactor/Verify.php:144
 msgid "Two-factor code verification"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:145
+#: src/Module/Settings/TwoFactor/Verify.php:146
 msgid ""
 "<p>Please scan this QR Code with your authenticator app and submit the "
 "provided code.</p>"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:147
+#: src/Module/Settings/TwoFactor/Verify.php:148
 #, php-format
 msgid ""
 "<p>Or you can open the following URL in your mobile device:</p><p><a "
 "href=\"%s\">%s</a></p>"
 msgstr ""
 
-#: src/Module/Settings/TwoFactor/Verify.php:154
+#: src/Module/Settings/TwoFactor/Verify.php:155
 msgid "Verify code and enable two-factor authentication"
 msgstr ""
 
@@ -10050,311 +10022,311 @@ msgstr "Запрос в друзья / на подключение"
 msgid "New Follower"
 msgstr "Новый подписчик"
 
-#: src/Navigation/Notifications/Factory/Notification.php:74
+#: src/Navigation/Notifications/Factory/Notification.php:93
 #, php-format
 msgid "%1$s wants to follow you"
 msgstr "%1$s хочет подписаться на вас."
 
-#: src/Navigation/Notifications/Factory/Notification.php:76
+#: src/Navigation/Notifications/Factory/Notification.php:95
 #, php-format
 msgid "%1$s had started following you"
 msgstr "%1$s подписались на вас"
 
-#: src/Navigation/Notifications/Factory/Notification.php:141
+#: src/Navigation/Notifications/Factory/Notification.php:160
 #, php-format
 msgid "%1$s liked your comment %2$s"
 msgstr "%1$s нравится ваш комментарий %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:144
+#: src/Navigation/Notifications/Factory/Notification.php:163
 #, php-format
 msgid "%1$s liked your post %2$s"
 msgstr "%1$s нравится ваша запись %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:151
+#: src/Navigation/Notifications/Factory/Notification.php:170
 #, php-format
 msgid "%1$s disliked your comment %2$s"
 msgstr "%1$s не нравится ваш комментарий %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:154
+#: src/Navigation/Notifications/Factory/Notification.php:173
 #, php-format
 msgid "%1$s disliked your post %2$s"
 msgstr "%1$s не нравится ваша запись %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:161
+#: src/Navigation/Notifications/Factory/Notification.php:180
 #, php-format
 msgid "%1$s shared your comment %2$s"
 msgstr "%1$s поделился вашим комментарием %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:164
+#: src/Navigation/Notifications/Factory/Notification.php:183
 #, php-format
 msgid "%1$s shared your post %2$s"
 msgstr "%1$s поделился вашей записью %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:171
+#: src/Navigation/Notifications/Factory/Notification.php:190
 #, php-format
 msgid "%1$s tagged you on %2$s"
 msgstr "%1$s отметил(а) вас в %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:175
+#: src/Navigation/Notifications/Factory/Notification.php:194
 #, php-format
 msgid "%1$s replied to you on %2$s"
-msgstr "%1$s Ð¾Ñ\82веÑ\82ил(а) Ð²Ð°Ð¼ Ð½Ð° %2$s"
+msgstr "%1$s ответил(а) на %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:179
+#: src/Navigation/Notifications/Factory/Notification.php:198
 #, php-format
 msgid "%1$s commented in your thread %2$s"
 msgstr "%1$s ответил(а) в вашем обсуждении %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:183
+#: src/Navigation/Notifications/Factory/Notification.php:202
 #, php-format
 msgid "%1$s commented on your comment %2$s"
 msgstr "%1$s ответил(а) на ваш комментарий %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:189
+#: src/Navigation/Notifications/Factory/Notification.php:208
 #, php-format
 msgid "%1$s commented in their thread %2$s"
 msgstr "%1$s ответил(а) в своём обсуждении %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:191
+#: src/Navigation/Notifications/Factory/Notification.php:210
 #, php-format
 msgid "%1$s commented in their thread"
 msgstr "%1$s ответил(а) в своём обсуждении"
 
-#: src/Navigation/Notifications/Factory/Notification.php:193
+#: src/Navigation/Notifications/Factory/Notification.php:212
 #, php-format
 msgid "%1$s commented in the thread %2$s from %3$s"
 msgstr "%1$s ответил(а) в обсуждении %2$s от %3$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:195
+#: src/Navigation/Notifications/Factory/Notification.php:214
 #, php-format
 msgid "%1$s commented in the thread from %3$s"
 msgstr "%1$s ответил(а) в обсуждении от %3$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:200
+#: src/Navigation/Notifications/Factory/Notification.php:219
 #, php-format
 msgid "%1$s commented on your thread %2$s"
 msgstr "%1$s ответил(а) в вашем обсуждении %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:205
+#: src/Navigation/Notifications/Factory/Notification.php:224
 #, php-format
 msgid "%1$s shared the post %2$s from %3$s"
 msgstr "%1$s поделился записью %2$s от %3$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:207
+#: src/Navigation/Notifications/Factory/Notification.php:226
 #, php-format
 msgid "%1$s shared a post from %3$s"
 msgstr "%1$s поделился записью от %3$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:209
+#: src/Navigation/Notifications/Factory/Notification.php:228
 #, php-format
 msgid "%1$s shared the post %2$s"
 msgstr "%1$s поделился записью %2$s"
 
-#: src/Navigation/Notifications/Factory/Notification.php:211
+#: src/Navigation/Notifications/Factory/Notification.php:230
 #, php-format
 msgid "%1$s shared a post"
 msgstr "%1$s поделился записью"
 
-#: src/Navigation/Notifications/Repository/Notify.php:192
-#: src/Navigation/Notifications/Repository/Notify.php:675
+#: src/Navigation/Notifications/Repository/Notify.php:211
+#: src/Navigation/Notifications/Repository/Notify.php:694
 msgid "[Friendica:Notify]"
 msgstr "[Friendica]"
 
-#: src/Navigation/Notifications/Repository/Notify.php:256
+#: src/Navigation/Notifications/Repository/Notify.php:275
 #, php-format
 msgid "%s New mail received at %s"
 msgstr "%s Новая почта получена в %s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:258
+#: src/Navigation/Notifications/Repository/Notify.php:277
 #, php-format
 msgid "%1$s sent you a new private message at %2$s."
 msgstr "%1$s отправил вам новое личное сообщение на %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 msgid "a private message"
 msgstr "личное сообщение"
 
-#: src/Navigation/Notifications/Repository/Notify.php:259
+#: src/Navigation/Notifications/Repository/Notify.php:278
 #, php-format
 msgid "%1$s sent you %2$s."
 msgstr "%1$s послал вам %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:261
+#: src/Navigation/Notifications/Repository/Notify.php:280
 #, php-format
 msgid "Please visit %s to view and/or reply to your private messages."
 msgstr "Пожалуйста, посетите %s для просмотра и/или ответа на личные сообщения."
 
-#: src/Navigation/Notifications/Repository/Notify.php:292
+#: src/Navigation/Notifications/Repository/Notify.php:311
 #, php-format
 msgid "%1$s commented on %2$s's %3$s %4$s"
 msgstr "%1$s прокомментировал(а) %2$s %3$s %4$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:297
+#: src/Navigation/Notifications/Repository/Notify.php:316
 #, php-format
 msgid "%1$s commented on your %2$s %3$s"
 msgstr "%1$s прокомментировал(а) ваш %2$s %3$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:301
+#: src/Navigation/Notifications/Repository/Notify.php:320
 #, php-format
 msgid "%1$s commented on their %2$s %3$s"
 msgstr "%1$s прокомментировал(а) свой %2$s %3$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:305
-#: src/Navigation/Notifications/Repository/Notify.php:710
+#: src/Navigation/Notifications/Repository/Notify.php:324
+#: src/Navigation/Notifications/Repository/Notify.php:729
 #, php-format
 msgid "%1$s Comment to conversation #%2$d by %3$s"
 msgstr "%1$s Комментариев к разговору #%2$d от %3$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:307
+#: src/Navigation/Notifications/Repository/Notify.php:326
 #, php-format
 msgid "%s commented on an item/conversation you have been following."
 msgstr "%s оставил комментарий к элементу/беседе, за которой вы следите."
 
-#: src/Navigation/Notifications/Repository/Notify.php:311
-#: src/Navigation/Notifications/Repository/Notify.php:326
+#: src/Navigation/Notifications/Repository/Notify.php:330
 #: src/Navigation/Notifications/Repository/Notify.php:345
-#: src/Navigation/Notifications/Repository/Notify.php:725
+#: src/Navigation/Notifications/Repository/Notify.php:364
+#: src/Navigation/Notifications/Repository/Notify.php:744
 #, php-format
 msgid "Please visit %s to view and/or reply to the conversation."
 msgstr "Пожалуйста посетите %s для просмотра и/или ответа в беседу."
 
-#: src/Navigation/Notifications/Repository/Notify.php:318
+#: src/Navigation/Notifications/Repository/Notify.php:337
 #, php-format
 msgid "%s %s posted to your profile wall"
 msgstr "%s %s размещены на стене вашего профиля"
 
-#: src/Navigation/Notifications/Repository/Notify.php:320
+#: src/Navigation/Notifications/Repository/Notify.php:339
 #, php-format
 msgid "%1$s posted to your profile wall at %2$s"
 msgstr "%1$s написал на вашей стене на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:321
+#: src/Navigation/Notifications/Repository/Notify.php:340
 #, php-format
 msgid "%1$s posted to [url=%2$s]your wall[/url]"
 msgstr "%1$s написал на [url=%2$s]вашей стене[/url]"
 
-#: src/Navigation/Notifications/Repository/Notify.php:333
+#: src/Navigation/Notifications/Repository/Notify.php:352
 #, php-format
 msgid "%1$s %2$s poked you"
 msgstr "%1$s %2$s продвинул тебя"
 
-#: src/Navigation/Notifications/Repository/Notify.php:335
+#: src/Navigation/Notifications/Repository/Notify.php:354
 #, php-format
 msgid "%1$s poked you at %2$s"
 msgstr "%1$s потыкал вас на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:336
+#: src/Navigation/Notifications/Repository/Notify.php:355
 #, php-format
 msgid "%1$s [url=%2$s]poked you[/url]."
 msgstr "%1$s [url=%2$s]потыкал вас[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:353
+#: src/Navigation/Notifications/Repository/Notify.php:372
 #, php-format
 msgid "%s Introduction received"
 msgstr "%s Входящих получено"
 
-#: src/Navigation/Notifications/Repository/Notify.php:355
+#: src/Navigation/Notifications/Repository/Notify.php:374
 #, php-format
 msgid "You've received an introduction from '%1$s' at %2$s"
 msgstr "Вы получили запрос от '%1$s' на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:356
+#: src/Navigation/Notifications/Repository/Notify.php:375
 #, php-format
 msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
 msgstr "Вы получили [url=%1$s]запрос[/url] от %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:361
-#: src/Navigation/Notifications/Repository/Notify.php:407
+#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:426
 #, php-format
 msgid "You may visit their profile at %s"
 msgstr "Вы можете посмотреть его профиль здесь %s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:363
+#: src/Navigation/Notifications/Repository/Notify.php:382
 #, php-format
 msgid "Please visit %s to approve or reject the introduction."
 msgstr "Посетите %s для подтверждения или отказа запроса."
 
-#: src/Navigation/Notifications/Repository/Notify.php:370
+#: src/Navigation/Notifications/Repository/Notify.php:389
 #, php-format
 msgid "%s A new person is sharing with you"
 msgstr "%s Новый человек поделился с Вами"
 
-#: src/Navigation/Notifications/Repository/Notify.php:372
-#: src/Navigation/Notifications/Repository/Notify.php:373
+#: src/Navigation/Notifications/Repository/Notify.php:391
+#: src/Navigation/Notifications/Repository/Notify.php:392
 #, php-format
 msgid "%1$s is sharing with you at %2$s"
 msgstr "%1$s делится с вами на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:399
 #, php-format
 msgid "%s You have a new follower"
 msgstr "%s У Вас новый подписчик"
 
-#: src/Navigation/Notifications/Repository/Notify.php:382
-#: src/Navigation/Notifications/Repository/Notify.php:383
+#: src/Navigation/Notifications/Repository/Notify.php:401
+#: src/Navigation/Notifications/Repository/Notify.php:402
 #, php-format
 msgid "You have a new follower at %2$s : %1$s"
 msgstr "У вас новый подписчик на %2$s : %1$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:396
+#: src/Navigation/Notifications/Repository/Notify.php:415
 #, php-format
 msgid "%s Friend suggestion received"
 msgstr "%s Получено дружеское приглашение"
 
-#: src/Navigation/Notifications/Repository/Notify.php:398
+#: src/Navigation/Notifications/Repository/Notify.php:417
 #, php-format
 msgid "You've received a friend suggestion from '%1$s' at %2$s"
 msgstr "Вы получили предложение дружбы от '%1$s' на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:399
+#: src/Navigation/Notifications/Repository/Notify.php:418
 #, php-format
 msgid ""
 "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
 msgstr "У вас [url=%1$s]новое предложение дружбы[/url] для %2$s от %3$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:405
+#: src/Navigation/Notifications/Repository/Notify.php:424
 msgid "Name:"
 msgstr "Имя:"
 
-#: src/Navigation/Notifications/Repository/Notify.php:406
+#: src/Navigation/Notifications/Repository/Notify.php:425
 msgid "Photo:"
 msgstr "Фото:"
 
-#: src/Navigation/Notifications/Repository/Notify.php:409
+#: src/Navigation/Notifications/Repository/Notify.php:428
 #, php-format
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr "Пожалуйста, посетите %s для подтверждения, или отказа запроса."
 
-#: src/Navigation/Notifications/Repository/Notify.php:417
-#: src/Navigation/Notifications/Repository/Notify.php:432
+#: src/Navigation/Notifications/Repository/Notify.php:436
+#: src/Navigation/Notifications/Repository/Notify.php:451
 #, php-format
 msgid "%s Connection accepted"
 msgstr "%s Соединение принято"
 
-#: src/Navigation/Notifications/Repository/Notify.php:419
-#: src/Navigation/Notifications/Repository/Notify.php:434
+#: src/Navigation/Notifications/Repository/Notify.php:438
+#: src/Navigation/Notifications/Repository/Notify.php:453
 #, php-format
 msgid "'%1$s' has accepted your connection request at %2$s"
 msgstr "'%1$s' принял соединение с вами на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:420
-#: src/Navigation/Notifications/Repository/Notify.php:435
+#: src/Navigation/Notifications/Repository/Notify.php:439
+#: src/Navigation/Notifications/Repository/Notify.php:454
 #, php-format
 msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
 msgstr "%2$s принял ваше [url=%1$s]предложение о соединении[/url]."
 
-#: src/Navigation/Notifications/Repository/Notify.php:425
+#: src/Navigation/Notifications/Repository/Notify.php:444
 msgid ""
 "You are now mutual friends and may exchange status updates, photos, and "
 "email without restriction."
 msgstr "Вы теперь взаимные друзья и можете обмениваться статусами, фотографиями и письмами без ограничений."
 
-#: src/Navigation/Notifications/Repository/Notify.php:427
+#: src/Navigation/Notifications/Repository/Notify.php:446
 #, php-format
 msgid "Please visit %s if you wish to make any changes to this relationship."
 msgstr "Посетите %s если вы хотите сделать изменения в этом отношении."
 
-#: src/Navigation/Notifications/Repository/Notify.php:440
+#: src/Navigation/Notifications/Repository/Notify.php:459
 #, php-format
 msgid ""
 "'%1$s' has chosen to accept you a fan, which restricts some forms of "
@@ -10363,33 +10335,33 @@ msgid ""
 "automatically."
 msgstr "%1$s решил принять приглашение и пометил вас как фаната, что запрещает некоторые формы общения - например, личные сообщения и некоторые действия с профилем. Если эта страница знаменитости или сообщества, то эти настройки были применены автоматически."
 
-#: src/Navigation/Notifications/Repository/Notify.php:442
+#: src/Navigation/Notifications/Repository/Notify.php:461
 #, php-format
 msgid ""
 "'%1$s' may choose to extend this into a two-way or more permissive "
 "relationship in the future."
 msgstr "%1$s может расширить взаимоотношения до более мягких в будущем."
 
-#: src/Navigation/Notifications/Repository/Notify.php:444
+#: src/Navigation/Notifications/Repository/Notify.php:463
 #, php-format
 msgid "Please visit %s  if you wish to make any changes to this relationship."
 msgstr "Посетите %s если вы хотите сделать изменения в этом отношении."
 
-#: src/Navigation/Notifications/Repository/Notify.php:454
+#: src/Navigation/Notifications/Repository/Notify.php:473
 msgid "registration request"
 msgstr "запрос регистрации"
 
-#: src/Navigation/Notifications/Repository/Notify.php:456
+#: src/Navigation/Notifications/Repository/Notify.php:475
 #, php-format
 msgid "You've received a registration request from '%1$s' at %2$s"
 msgstr "Вы получили запрос на регистрацию от '%1$s' на %2$s"
 
-#: src/Navigation/Notifications/Repository/Notify.php:457
+#: src/Navigation/Notifications/Repository/Notify.php:476
 #, php-format
 msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
 msgstr "Вы получили [url=%1$s]запрос регистрации[/url] от %2$s."
 
-#: src/Navigation/Notifications/Repository/Notify.php:462
+#: src/Navigation/Notifications/Repository/Notify.php:481
 #, php-format
 msgid ""
 "Full Name:\t%s\n"
@@ -10397,17 +10369,17 @@ msgid ""
 "Login Name:\t%s (%s)"
 msgstr "Полное имя:\t%s\nРасположение:\t%s\nИмя для входа:\t%s (%s)"
 
-#: src/Navigation/Notifications/Repository/Notify.php:468
+#: src/Navigation/Notifications/Repository/Notify.php:487
 #, php-format
 msgid "Please visit %s to approve or reject the request."
 msgstr "Пожалуйста, посетите %s чтобы подтвердить или отвергнуть запрос."
 
-#: src/Navigation/Notifications/Repository/Notify.php:704
+#: src/Navigation/Notifications/Repository/Notify.php:723
 #, php-format
 msgid "%s %s tagged you"
 msgstr "%s %s отметил(и) Вас"
 
-#: src/Navigation/Notifications/Repository/Notify.php:707
+#: src/Navigation/Notifications/Repository/Notify.php:726
 #, php-format
 msgid "%s %s shared a new post"
 msgstr "%s %s поделился(-ась) новым сообщением"
@@ -10435,14 +10407,18 @@ msgstr "Пожалуйста, свяжитесь с отправителем, о
 msgid "%s posted an update."
 msgstr "%s отправил/а/ обновление."
 
-#: src/Object/Post.php:149
+#: src/Object/Post.php:147
 msgid "This entry was edited"
 msgstr "Эта запись была отредактирована"
 
-#: src/Object/Post.php:177
+#: src/Object/Post.php:175
 msgid "Private Message"
 msgstr "Личное сообщение"
 
+#: src/Object/Post.php:178
+msgid "Connector Message"
+msgstr ""
+
 #: src/Object/Post.php:193 src/Object/Post.php:195
 msgid "Edit"
 msgstr "Редактировать"
@@ -10585,36 +10561,36 @@ msgstr "Стена-на-Стену"
 msgid "via Wall-To-Wall:"
 msgstr "через Стена-на-Стену:"
 
-#: src/Object/Post.php:497
+#: src/Object/Post.php:499
 #, php-format
 msgid "Reply to %s"
 msgstr "Ответ %s"
 
-#: src/Object/Post.php:500
+#: src/Object/Post.php:502
 msgid "More"
 msgstr "Ещё"
 
-#: src/Object/Post.php:518
+#: src/Object/Post.php:520
 msgid "Notifier task is pending"
 msgstr "Постановка в очередь"
 
-#: src/Object/Post.php:519
+#: src/Object/Post.php:521
 msgid "Delivery to remote servers is pending"
 msgstr "Ожидается отправка адресатам"
 
-#: src/Object/Post.php:520
+#: src/Object/Post.php:522
 msgid "Delivery to remote servers is underway"
 msgstr "Отправка адресатам в процессе"
 
-#: src/Object/Post.php:521
+#: src/Object/Post.php:523
 msgid "Delivery to remote servers is mostly done"
 msgstr "Отправка адресатам почти завершилась"
 
-#: src/Object/Post.php:522
+#: src/Object/Post.php:524
 msgid "Delivery to remote servers is done"
 msgstr "Отправка адресатам завершена"
 
-#: src/Object/Post.php:542
+#: src/Object/Post.php:544
 #, php-format
 msgid "%d comment"
 msgid_plural "%d comments"
@@ -10623,11 +10599,11 @@ msgstr[1] "%d комментариев"
 msgstr[2] "%d комментариев"
 msgstr[3] "%d комментариев"
 
-#: src/Object/Post.php:543
+#: src/Object/Post.php:545
 msgid "Show more"
 msgstr "Показать больше"
 
-#: src/Object/Post.php:544
+#: src/Object/Post.php:546
 msgid "Show fewer"
 msgstr "Показать меньше"
 
@@ -10920,7 +10896,7 @@ msgstr ""
 
 #: view/theme/frio/php/Image.php:40
 msgid "Top Banner"
-msgstr ""
+msgstr "Верхний баннер"
 
 #: view/theme/frio/php/Image.php:40
 msgid ""
@@ -11000,11 +10976,11 @@ msgstr ""
 
 #: view/theme/vier/config.php:115
 msgid "don't show"
-msgstr ""
+msgstr "не показывать"
 
 #: view/theme/vier/config.php:115
 msgid "show"
-msgstr ""
+msgstr "показывать"
 
 #: view/theme/vier/config.php:121
 msgid "Set style"
@@ -11024,16 +11000,16 @@ msgstr ""
 
 #: view/theme/vier/config.php:125 view/theme/vier/theme.php:296
 msgid "Connect Services"
-msgstr ""
+msgstr "Подключить службы"
 
 #: view/theme/vier/config.php:126
 msgid "Find Friends"
-msgstr ""
+msgstr "Найти друзей"
 
 #: view/theme/vier/config.php:127 view/theme/vier/theme.php:152
 msgid "Last users"
-msgstr ""
+msgstr "Последние пользователи"
 
 #: view/theme/vier/theme.php:211
 msgid "Quick Start"
-msgstr ""
+msgstr "Быстрый старт"
index 78611f1266d7ab589ae84a07e8754655d75b203e..63d0928c2cbb85e8a4f7d754421fc2c3e7f4170a 100644 (file)
@@ -95,7 +95,7 @@ $a->strings['Profile URL'] = 'URL профиля';
 $a->strings['Tags:'] = 'Ключевые слова: ';
 $a->strings['%s knows you'] = '%s знают Вас';
 $a->strings['Add a personal note:'] = 'Добавить личную заметку:';
-$a->strings['Status Messages and Posts'] = 'Ð\92аÑ\88и Ð·Ð°Ð¿Ð¸Ñ\81и';
+$a->strings['Status Messages and Posts'] = 'Ð\97апиÑ\81и Ð¸ Ñ\81Ñ\82аÑ\82Ñ\83Ñ\81Ñ\8b';
 $a->strings['The contact could not be added.'] = 'Не удалось добавить этот контакт.';
 $a->strings['Unable to locate original post.'] = 'Не удалось найти оригинальную запись.';
 $a->strings['Empty post discarded.'] = 'Пустое сообщение отбрасывается.';
@@ -465,6 +465,7 @@ $a->strings['You are tagged in a post'] = 'Вы отмечены в записи
 $a->strings['You are poked/prodded/etc. in a post'] = 'Вас потыкали/подтолкнули/и т.д. в записи';
 $a->strings['Create a desktop notification when:'] = 'Показывать уведомление на рабочем столе для:';
 $a->strings['Someone liked your content'] = 'Ваш комментарий понравился';
+$a->strings['Someone shared your content'] = 'Вашей записью поделились';
 $a->strings['Activate desktop notifications'] = 'Активировать уведомления на рабочем столе';
 $a->strings['Show desktop popup on new notifications'] = 'Показывать уведомления на рабочем столе';
 $a->strings['Text-only notification emails'] = 'Только текстовые письма';
@@ -501,7 +502,9 @@ $a->strings['To export your account, go to "Settings->Export your personal data"
 $a->strings['You aren\'t following this contact.'] = 'Вы не подписаны на этот контакт.';
 $a->strings['Unfollowing is currently not supported by your network.'] = 'Отписка в настоящий момент не предусмотрена этой сетью';
 $a->strings['Disconnect/Unfollow'] = 'Отсоединиться/Отписаться';
+$a->strings['Unable to unfollow this contact, please retry in a few minutes or contact your administrator.'] = 'Не получается отписаться от контакта, попробуйте ещё раз через несколько минут или свяжитесь с вашим администратором.';
 $a->strings['Contact was successfully unfollowed'] = 'Подписка успешно удалена';
+$a->strings['Unable to unfollow this contact, please contact your administrator'] = 'Не получается отписаться от этого контакта, пожалуйста, свяжитесь с вашим администратором';
 $a->strings['Invalid request.'] = 'Неверный запрос.';
 $a->strings['Sorry, maybe your upload is bigger than the PHP configuration allows'] = 'Извините, похоже что загружаемый файл превышает лимиты, разрешенные конфигурацией PHP';
 $a->strings['Or - did you try to upload an empty file?'] = 'Или вы пытались загрузить пустой файл?';
@@ -513,6 +516,7 @@ $a->strings['Unable to check your home location.'] = 'Невозможно пр
 $a->strings['No recipient.'] = 'Без адресата.';
 $a->strings['If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders.'] = 'Если Вы хотите ответить %s, пожалуйста, проверьте, позволяют ли настройки конфиденциальности на Вашем сайте принимать личные сообщения от неизвестных отправителей.';
 $a->strings['No system theme config value set.'] = 'Настройки системной темы не установлены.';
+$a->strings['Apologies but the website is unavailable at the moment.'] = 'Приносим извинения, но этот сервис сейчас недоступен.';
 $a->strings['Delete this item?'] = 'Удалить этот элемент?';
 $a->strings['Block this author? They won\'t be able to follow you nor see your public posts, and you won\'t be able to see their posts and their notifications.'] = 'Заблокировать этого автора? Они не смогут подписаться на вас или видеть ваши записи, вы не будете видеть их записи и получать от них уведомления.';
 $a->strings['toggle mobile'] = 'мобильная версия';
@@ -609,6 +613,7 @@ $a->strings['You had been addressed (%s).'] = 'К вам обратились (%
 $a->strings['You are following %s.'] = 'Вы подписаны на %s.';
 $a->strings['Tagged'] = 'Отмечено';
 $a->strings['Reshared'] = 'Репост';
+$a->strings['Reshared by %s <%s>'] = 'Репост от %s <%s>';
 $a->strings['%s is participating in this thread.'] = '%s участвует в этом обсуждении';
 $a->strings['Relayed'] = 'Ретранслировано';
 $a->strings['Fetched'] = 'Загружено';
@@ -695,7 +700,7 @@ $a->strings['Introductions'] = 'Запросы';
 $a->strings['Friend Requests'] = 'Запросы на добавление в список друзей';
 $a->strings['Notifications'] = 'Уведомления';
 $a->strings['See all notifications'] = 'Посмотреть все уведомления';
-$a->strings['Mark all system notifications seen'] = 'Отметить все системные уведомления, как прочитанные';
+$a->strings['Mark all system notifications as seen'] = 'Пометить все уведомления прочитанными';
 $a->strings['Private mail'] = 'Личная почта';
 $a->strings['Inbox'] = 'Входящие';
 $a->strings['Outbox'] = 'Исходящие';
@@ -1002,11 +1007,11 @@ $a->strings['Change profile photo'] = 'Изменить фото профиля'
 $a->strings['Homepage:'] = 'Домашняя страничка:';
 $a->strings['About:'] = 'О себе:';
 $a->strings['Atom feed'] = 'Фид Atom';
-$a->strings['g A l F d'] = 'g A l F d';
 $a->strings['F d'] = 'F d';
 $a->strings['[today]'] = '[сегодня]';
 $a->strings['Birthday Reminders'] = 'Напоминания о днях рождения';
 $a->strings['Birthdays this week:'] = 'Дни рождения на этой неделе:';
+$a->strings['g A l F d'] = 'g A l F d';
 $a->strings['[No description]'] = '[без описания]';
 $a->strings['Event Reminders'] = 'Напоминания о мероприятиях';
 $a->strings['Upcoming events the next 7 days:'] = 'События на ближайшие 7 дней:';
@@ -1646,15 +1651,9 @@ $a->strings['Pending outgoing contact request'] = 'Исходящий запро
 $a->strings['Pending incoming contact request'] = 'Входящий запрос на подписку';
 $a->strings['Visit %s\'s profile [%s]'] = 'Посетить профиль %s [%s]';
 $a->strings['Contact update failed.'] = 'Обновление контакта неудачное.';
-$a->strings['<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.'] = '<strong>ВНИМАНИЕ: Это крайне важно!</strong> Если вы введете неверную информацию, ваша связь с этим контактом перестанет работать.';
-$a->strings['Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.'] = 'Пожалуйста, нажмите клавишу вашего браузера \'Back\' или \'Назад\' <strong>сейчас</strong>, если вы не уверены, что делаете на этой странице.';
 $a->strings['Return to contact editor'] = 'Возврат к редактору контакта';
 $a->strings['Account Nickname'] = 'Ник аккаунта';
-$a->strings['@Tagname - overrides Name/Nickname'] = '@Tagname - перезаписывает Имя/Ник';
 $a->strings['Account URL'] = 'URL аккаунта';
-$a->strings['Friend Request URL'] = 'URL запроса в друзья';
-$a->strings['Friend Confirm URL'] = 'URL подтверждения друга';
-$a->strings['Notification Endpoint URL'] = 'URL эндпоинта уведомления';
 $a->strings['Poll/Feed URL'] = 'URL опроса/ленты';
 $a->strings['New photo from this URL'] = 'Новое фото из этой URL';
 $a->strings['Invalid contact.'] = 'Недопустимый контакт.';
@@ -1837,6 +1836,7 @@ $a->strings['Help:'] = 'Помощь:';
 $a->strings['Welcome to %s'] = 'Добро пожаловать на %s!';
 $a->strings['Friendica Communications Server - Setup'] = 'Социальная сеть Friendica - Установка';
 $a->strings['System check'] = 'Проверить систему';
+$a->strings['OK'] = 'ОК';
 $a->strings['Check again'] = 'Проверить еще раз';
 $a->strings['Base settings'] = 'Основные настройки';
 $a->strings['Host name'] = 'Имя хоста';
@@ -2040,10 +2040,18 @@ $a->strings['Number of items to display per page when viewed from mobile device:
 $a->strings['Update browser every xx seconds'] = 'Обновление браузера каждые хх секунд';
 $a->strings['Minimum of 10 seconds. Enter -1 to disable it.'] = 'Минимум 10 секунд. Введите -1 для отключения.';
 $a->strings['Auto update may add new posts at the top of the post stream pages, which can affect the scroll position and perturb normal reading if it happens anywhere else the top of the page.'] = 'Автообновление может загружать новые записи в начало ленты, что может изменить положение прокрутки и помешать чтению, если вы находитесь не в начале страницы.';
+$a->strings['Display emoticons'] = 'Показывать смайлики';
+$a->strings['When enabled, emoticons are replaced with matching symbols.'] = 'Когда включено, соответствующие символы отображаются как смайлики.';
 $a->strings['Infinite scroll'] = 'Бесконечная прокрутка';
 $a->strings['Automatic fetch new items when reaching the page end.'] = 'Автоматически подгружать новые записи, когда вы оказываетесь в конце страницы.';
 $a->strings['Enable Smart Threading'] = 'Включить умное ветвление обсуждений';
 $a->strings['Enable the automatic suppression of extraneous thread indentation.'] = 'Включить автоматическое удаление излишних отступов в ветках обсуждений.';
+$a->strings['Display the Dislike feature'] = 'Показывать "Не нравится"';
+$a->strings['Display the Dislike button and dislike reactions on posts and comments.'] = 'Показывать кнопку "Не нравится" и соответствующие реакции на записях и комментариях.';
+$a->strings['Display the resharer'] = 'Показывать поделившегося';
+$a->strings['Display the first resharer as icon and text on a reshared item.'] = 'Показывать первого из поделившихся записью в виде значка над этой записью.';
+$a->strings['Stay local'] = 'Оставаться локально';
+$a->strings['Don\'t go to a remote system when following a contact link.'] = 'Не переходить на другие серверы по ссылкам профилей.';
 $a->strings['Beginning of week:'] = 'Начало недели:';
 $a->strings['Profile Name is required.'] = 'Необходимо имя профиля.';
 $a->strings['Profile couldn\'t be updated.'] = 'Профиль не получилось обновить.';
@@ -2164,7 +2172,7 @@ $a->strings['%1$s disliked your post %2$s'] = '%1$s не нравится ваш
 $a->strings['%1$s shared your comment %2$s'] = '%1$s поделился вашим комментарием %2$s';
 $a->strings['%1$s shared your post %2$s'] = '%1$s поделился вашей записью %2$s';
 $a->strings['%1$s tagged you on %2$s'] = '%1$s отметил(а) вас в %2$s';
-$a->strings['%1$s replied to you on %2$s'] = '%1$s Ð¾Ñ\82веÑ\82ил(а) Ð²Ð°Ð¼ Ð½Ð° %2$s';
+$a->strings['%1$s replied to you on %2$s'] = '%1$s ответил(а) на %2$s';
 $a->strings['%1$s commented in your thread %2$s'] = '%1$s ответил(а) в вашем обсуждении %2$s';
 $a->strings['%1$s commented on your comment %2$s'] = '%1$s ответил(а) на ваш комментарий %2$s';
 $a->strings['%1$s commented in their thread %2$s'] = '%1$s ответил(а) в своём обсуждении %2$s';
@@ -2316,3 +2324,10 @@ $a->strings['Empty Post'] = 'Пустая запись';
 $a->strings['default'] = 'По умолчанию';
 $a->strings['Note'] = 'Примечание';
 $a->strings['Pink'] = 'Розовый';
+$a->strings['Top Banner'] = 'Верхний баннер';
+$a->strings['don\'t show'] = 'не показывать';
+$a->strings['show'] = 'показывать';
+$a->strings['Connect Services'] = 'Подключить службы';
+$a->strings['Find Friends'] = 'Найти друзей';
+$a->strings['Last users'] = 'Последние пользователи';
+$a->strings['Quick Start'] = 'Быстрый старт';
index d5938afea56e4b2b0631c7d13faf72203c7d05d9..5491c41be6e080dcfaa81431dfd4ef24760b3df3 100644 (file)
@@ -4,7 +4,8 @@
 # 
 # Translators:
 # Hypolite Petovan <hypolite@mrpetovan.com>, 2019
-# Jonatan Nyberg, 2017
+# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2017
+# Kristoffer Grundström <lovaren@gmail.com>, 2022
 # Mike Macgirvin, 2010
 # Tim Stahel <transifex@swedneck.xyz>, 2018
 # Bjoessi <torbjorn.andersson@syte.se>, 2019
@@ -12,9 +13,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-02-23 18:53-0500\n"
-"PO-Revision-Date: 2019-04-04 19:07+0000\n"
-"Last-Translator: Bjoessi <torbjorn.andersson@syte.se>\n"
+"POT-Creation-Date: 2022-01-21 14:21+0100\n"
+"PO-Revision-Date: 2022-01-22 03:30+0000\n"
+"Last-Translator: Kristoffer Grundström <lovaren@gmail.com>\n"
 "Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -22,9889 +23,10922 @@ msgstr ""
 "Language: sv\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: include/api.php:1117
-#, php-format
-msgid "Daily posting limit of %d post reached. The post was rejected."
-msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
-msgstr[0] "Daglig gräns av %d upplägg nådd. Upplägget avvisades."
-msgstr[1] "Daglig gräns av %d upplägg nådd. Upplägget avvisades."
+#: mod/cal.php:44 mod/cal.php:48 mod/follow.php:39 mod/redir.php:34
+#: mod/redir.php:175 src/Module/Conversation/Community.php:181
+#: src/Module/Debug/ItemBody.php:37 src/Module/Diaspora/Receive.php:57
+#: src/Module/Item/Follow.php:42 src/Module/Item/Ignore.php:41
+#: src/Module/Item/Pin.php:42 src/Module/Item/Pin.php:57
+#: src/Module/Item/Star.php:43
+msgid "Access denied."
+msgstr "Åtkomst nekad."
 
-#: include/api.php:1131
-#, php-format
-msgid "Weekly posting limit of %d post reached. The post was rejected."
-msgid_plural ""
-"Weekly posting limit of %d posts reached. The post was rejected."
-msgstr[0] "Veckovis gräns av %d inlägg nådd. Inlägged avvisades."
-msgstr[1] "Veckovis gräns av %d inlägg nådd. Inlägged avvisades."
+#: mod/cal.php:61 mod/cal.php:78 mod/photos.php:69 mod/photos.php:140
+#: mod/photos.php:804 src/Model/Profile.php:229 src/Module/HCard.php:52
+#: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52
+#: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50
+#: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:58
+#: src/Module/Register.php:267 src/Module/RemoteFollow.php:58
+msgid "User not found."
+msgstr "Användaren hittades inte."
+
+#: mod/cal.php:120 mod/display.php:270 src/Module/Profile/Profile.php:94
+#: src/Module/Profile/Profile.php:109 src/Module/Profile/Status.php:109
+#: src/Module/Update/Profile.php:56
+msgid "Access to this profile has been restricted."
+msgstr "Åtkomst till den här profilen har begränsats."
 
-#: include/api.php:1145
-#, php-format
-msgid "Monthly posting limit of %d post reached. The post was rejected."
-msgstr "Månatlig gräns av %d inlägg nådd. Inlägget avvisades."
+#: mod/cal.php:242 mod/events.php:377 src/Content/Nav.php:194
+#: src/Content/Nav.php:258 src/Module/BaseProfile.php:84
+#: src/Module/BaseProfile.php:95 view/theme/frio/theme.php:229
+#: view/theme/frio/theme.php:233
+msgid "Events"
+msgstr "Evenemang"
 
-#: include/api.php:4520 mod/photos.php:93 mod/photos.php:201
-#: mod/photos.php:695 mod/photos.php:1126 mod/photos.php:1143
-#: mod/photos.php:1636 mod/profile_photo.php:85 mod/profile_photo.php:94
-#: mod/profile_photo.php:103 mod/profile_photo.php:217
-#: mod/profile_photo.php:305 mod/profile_photo.php:315 src/Model/User.php:736
-#: src/Model/User.php:744 src/Model/User.php:752
-msgid "Profile Photos"
-msgstr "Profilbilder"
+#: mod/cal.php:243 mod/events.php:378
+msgid "View"
+msgstr "Visa"
 
-#: include/conversation.php:160 include/conversation.php:297
-#: src/Model/Item.php:3283
-msgid "event"
-msgstr "händelse"
+#: mod/cal.php:244 mod/events.php:380
+msgid "Previous"
+msgstr "Föregående"
 
-#: include/conversation.php:163 include/conversation.php:173
-#: include/conversation.php:300 include/conversation.php:309
-#: mod/subthread.php:88 mod/tagger.php:70
-msgid "status"
-msgstr "status"
+#: mod/cal.php:245 mod/events.php:381 src/Module/Install.php:214
+msgid "Next"
+msgstr "Nästa"
 
-#: include/conversation.php:168 include/conversation.php:305
-#: mod/subthread.php:88 mod/tagger.php:70 src/Model/Item.php:3285
-msgid "photo"
-msgstr "foto"
+#: mod/cal.php:248 mod/events.php:386 src/Model/Event.php:457
+msgid "today"
+msgstr "idag"
 
-#: include/conversation.php:181
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s gillar %2$ss %3$s"
+#: mod/cal.php:249 mod/events.php:387 src/Model/Event.php:458
+#: src/Util/Temporal.php:334
+msgid "month"
+msgstr "månad"
 
-#: include/conversation.php:183
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s ogillar %2$ss %3$s"
+#: mod/cal.php:250 mod/events.php:388 src/Model/Event.php:459
+#: src/Util/Temporal.php:335
+msgid "week"
+msgstr "vecka"
 
-#: include/conversation.php:185
-#, php-format
-msgid "%1$s attends %2$s's %3$s"
-msgstr "%1$s deltar i %2$ss %3$s"
+#: mod/cal.php:251 mod/events.php:389 src/Model/Event.php:460
+#: src/Util/Temporal.php:336
+msgid "day"
+msgstr "dag"
 
-#: include/conversation.php:187
-#, php-format
-msgid "%1$s doesn't attend %2$s's %3$s"
-msgstr "%1$sdeltar inte i %2$ss %3$s"
+#: mod/cal.php:252 mod/events.php:390
+msgid "list"
+msgstr "lista"
 
-#: include/conversation.php:189
-#, php-format
-msgid "%1$s attends maybe %2$s's %3$s"
-msgstr "%1$s deltar kanske i %2$ss %3$s"
+#: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:659
+#: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
+#: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
+#: src/Module/Api/Twitter/ContactEndpoint.php:74
+msgid "User not found"
+msgstr "Användaren hittades inte"
 
-#: include/conversation.php:224
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s är nu vän med %2$s"
+#: mod/cal.php:274
+msgid "This calendar format is not supported"
+msgstr "Kalenderformatet stöds inte"
 
-#: include/conversation.php:265
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s puffade %2$s"
+#: mod/cal.php:276
+msgid "No exportable data found"
+msgstr ""
 
-#: include/conversation.php:319 mod/tagger.php:108
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s taggade %2$ss %3$s med %4$s"
+#: mod/cal.php:293
+msgid "calendar"
+msgstr "kalender"
 
-#: include/conversation.php:341
-msgid "post/item"
-msgstr "inlägg/föremål"
+#: mod/display.php:165 mod/photos.php:808
+#: src/Module/Conversation/Community.php:175 src/Module/Directory.php:48
+#: src/Module/Search/Index.php:49
+msgid "Public access denied."
+msgstr "Publik åtkomst nekades."
+
+#: mod/display.php:221 mod/display.php:295
+msgid "The requested item doesn't exist or has been deleted."
+msgstr ""
+
+#: mod/display.php:375
+msgid "The feed for this item is unavailable."
+msgstr "Flödet för det här föremålet är otillgängligt."
+
+#: mod/editpost.php:38 mod/events.php:220 mod/follow.php:56 mod/follow.php:130
+#: mod/item.php:185 mod/item.php:190 mod/item.php:937 mod/message.php:69
+#: mod/message.php:111 mod/notes.php:44 mod/ostatus_subscribe.php:32
+#: mod/photos.php:160 mod/photos.php:897 mod/repair_ostatus.php:31
+#: mod/settings.php:46 mod/settings.php:56 mod/settings.php:412
+#: mod/suggest.php:34 mod/uimport.php:33 mod/unfollow.php:35
+#: mod/unfollow.php:50 mod/unfollow.php:82 mod/wall_attach.php:68
+#: mod/wall_attach.php:71 mod/wall_upload.php:90 mod/wall_upload.php:93
+#: mod/wallmessage.php:37 mod/wallmessage.php:56 mod/wallmessage.php:90
+#: mod/wallmessage.php:110 src/Module/Attach.php:55 src/Module/BaseApi.php:93
+#: src/Module/BaseNotifications.php:97 src/Module/Contact/Advanced.php:60
+#: src/Module/Delegation.php:119 src/Module/FollowConfirm.php:38
+#: src/Module/FriendSuggest.php:56 src/Module/Group.php:42
+#: src/Module/Group.php:85 src/Module/Invite.php:41 src/Module/Invite.php:130
+#: src/Module/Notifications/Notification.php:48
+#: src/Module/Notifications/Notification.php:79
+#: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:56
+#: src/Module/Profile/Schedule.php:39 src/Module/Profile/Schedule.php:56
+#: src/Module/Register.php:77 src/Module/Register.php:90
+#: src/Module/Register.php:206 src/Module/Register.php:245
+#: src/Module/Search/Directory.php:37 src/Module/Settings/Delegation.php:42
+#: src/Module/Settings/Delegation.php:70 src/Module/Settings/Display.php:42
+#: src/Module/Settings/Display.php:120
+#: src/Module/Settings/Profile/Photo/Crop.php:166
+#: src/Module/Settings/Profile/Photo/Index.php:112
+#: src/Module/Settings/UserExport.php:57 src/Module/Settings/UserExport.php:91
+#: src/Module/Settings/UserExport.php:196
+#: src/Module/Settings/UserExport.php:216
+#: src/Module/Settings/UserExport.php:281
+msgid "Permission denied."
+msgstr "Åtkomst nekad."
 
-#: include/conversation.php:342
-#, php-format
-msgid "%1$s marked %2$s's %3$s as favorite"
-msgstr "%1$s markerade %2$ss %3$s som favorit"
+#: mod/editpost.php:45 mod/editpost.php:55
+msgid "Item not found"
+msgstr "Hittades inte"
 
-#: include/conversation.php:568 mod/photos.php:1467 mod/profiles.php:352
-msgid "Likes"
-msgstr "Gillar"
+#: mod/editpost.php:64
+msgid "Edit post"
+msgstr "Ändra inlägg"
 
-#: include/conversation.php:568 mod/photos.php:1467 mod/profiles.php:355
-msgid "Dislikes"
-msgstr "Ogillar"
+#: mod/editpost.php:91 mod/notes.php:56 src/Content/Text/HTML.php:875
+#: src/Module/Admin/Storage.php:142 src/Module/Filer/SaveTag.php:73
+msgid "Save"
+msgstr "Spara"
 
-#: include/conversation.php:569 include/conversation.php:1505
-#: mod/photos.php:1468
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/editpost.php:92 mod/photos.php:1344 src/Content/Conversation.php:326
+#: src/Module/Contact/Poke.php:176 src/Object/Post.php:966
+msgid "Loading..."
+msgstr "Laddar..."
 
-#: include/conversation.php:569 mod/photos.php:1468
-msgid "Not attending"
-msgstr "Deltar inte"
+#: mod/editpost.php:93 mod/message.php:198 mod/message.php:355
+#: mod/wallmessage.php:140 src/Content/Conversation.php:327
+msgid "Upload photo"
+msgstr "Ladda upp bild"
 
-#: include/conversation.php:569 mod/photos.php:1468
-msgid "Might attend"
-msgstr "Deltar kanske"
+#: mod/editpost.php:94 src/Content/Conversation.php:328
+msgid "upload photo"
+msgstr "ladda upp bild"
 
-#: include/conversation.php:649 mod/photos.php:1524 src/Object/Post.php:208
-msgid "Select"
-msgstr "Välj"
+#: mod/editpost.php:95 src/Content/Conversation.php:329
+msgid "Attach file"
+msgstr "Bifoga fil"
 
-#: include/conversation.php:650 mod/admin.php:2072 mod/photos.php:1525
-#: mod/settings.php:726 src/Module/Contact.php:827 src/Module/Contact.php:1102
-msgid "Delete"
-msgstr "Ta bort"
+#: mod/editpost.php:96 src/Content/Conversation.php:330
+msgid "attach file"
+msgstr "bifoga fil"
 
-#: include/conversation.php:684 src/Object/Post.php:381
-#: src/Object/Post.php:382
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Visa profilen som tillhör %s @ %s"
+#: mod/editpost.php:97 mod/message.php:199 mod/message.php:356
+#: mod/wallmessage.php:141
+msgid "Insert web link"
+msgstr "Infoga länk"
 
-#: include/conversation.php:696 src/Object/Post.php:369
-msgid "Categories:"
-msgstr "Kategorier:"
+#: mod/editpost.php:98
+msgid "web link"
+msgstr "webblänk"
 
-#: include/conversation.php:697 src/Object/Post.php:370
-msgid "Filed under:"
-msgstr "Sparad under:"
+#: mod/editpost.php:99
+msgid "Insert video link"
+msgstr "Klistra in videolänk"
 
-#: include/conversation.php:704 src/Object/Post.php:395
-#, php-format
-msgid "%s from %s"
-msgstr "%s från %s"
+#: mod/editpost.php:100
+msgid "video link"
+msgstr "videolänk"
 
-#: include/conversation.php:719
-msgid "View in context"
-msgstr "Visa i sitt sammanhang"
+#: mod/editpost.php:101
+msgid "Insert audio link"
+msgstr "Klistra in ljudlänk"
 
-#: include/conversation.php:721 include/conversation.php:1171
-#: mod/editpost.php:88 mod/message.php:260 mod/message.php:442
-#: mod/photos.php:1440 mod/wallmessage.php:141 src/Object/Post.php:422
-msgid "Please wait"
-msgstr "Var god vänta"
+#: mod/editpost.php:102
+msgid "audio link"
+msgstr "ljudlänk"
 
-#: include/conversation.php:785
-msgid "remove"
-msgstr "ta bort"
+#: mod/editpost.php:103 src/Content/Conversation.php:340
+#: src/Module/Item/Compose.php:161
+msgid "Set your location"
+msgstr "Ange plats"
 
-#: include/conversation.php:789
-msgid "Delete Selected Items"
-msgstr "Ta bort valda föremål"
+#: mod/editpost.php:104 src/Content/Conversation.php:341
+msgid "set location"
+msgstr "ange plats"
 
-#: include/conversation.php:893 view/theme/frio/theme.php:358
-msgid "Follow Thread"
-msgstr "Följ tråd"
+#: mod/editpost.php:105 src/Content/Conversation.php:342
+msgid "Clear browser location"
+msgstr "Clear browser location"
 
-#: include/conversation.php:894 src/Model/Contact.php:1049
-msgid "View Status"
-msgstr "Visa status"
+#: mod/editpost.php:106 src/Content/Conversation.php:343
+msgid "clear location"
+msgstr "rensa plats"
 
-#: include/conversation.php:895 include/conversation.php:911
-#: mod/allfriends.php:72 mod/directory.php:198 mod/dirfind.php:226
-#: mod/match.php:87 mod/suggest.php:87 src/Model/Contact.php:989
-#: src/Model/Contact.php:1042 src/Model/Contact.php:1050
-msgid "View Profile"
-msgstr "Visa profil"
+#: mod/editpost.php:107 mod/message.php:200 mod/message.php:358
+#: mod/photos.php:1495 mod/wallmessage.php:142
+#: src/Content/Conversation.php:355 src/Content/Conversation.php:690
+#: src/Module/Item/Compose.php:165 src/Object/Post.php:504
+msgid "Please wait"
+msgstr "Var god vänta"
 
-#: include/conversation.php:896 src/Model/Contact.php:1051
-msgid "View Photos"
-msgstr "Visa foton"
+#: mod/editpost.php:108 src/Content/Conversation.php:356
+msgid "Permission settings"
+msgstr "Åtkomstinställningar"
 
-#: include/conversation.php:897 src/Model/Contact.php:1043
-#: src/Model/Contact.php:1052
-msgid "Network Posts"
-msgstr "Nätverksinlägg"
+#: mod/editpost.php:116 src/Core/ACL.php:325
+msgid "CC: email addresses"
+msgstr "Kopia: e-postadresser"
 
-#: include/conversation.php:898 src/Model/Contact.php:1044
-#: src/Model/Contact.php:1053
-msgid "View Contact"
-msgstr "Visa kontakt"
+#: mod/editpost.php:117 src/Content/Conversation.php:366
+msgid "Public post"
+msgstr "Offentligt inlägg"
 
-#: include/conversation.php:899 src/Model/Contact.php:1055
-msgid "Send PM"
-msgstr "Skicka privat meddelande"
+#: mod/editpost.php:120 src/Content/Conversation.php:345
+#: src/Module/Item/Compose.php:166
+msgid "Set title"
+msgstr "Ange rubrik"
 
-#: include/conversation.php:903 src/Model/Contact.php:1056
-msgid "Poke"
-msgstr "Peta"
+#: mod/editpost.php:122 src/Content/Conversation.php:347
+#: src/Module/Item/Compose.php:167
+msgid "Categories (comma-separated list)"
+msgstr "Kategorier (kommaseparerad lista)"
 
-#: include/conversation.php:908 mod/allfriends.php:73 mod/dirfind.php:227
-#: mod/follow.php:147 mod/match.php:88 mod/suggest.php:88
-#: src/Content/Widget.php:63 src/Model/Contact.php:1045
-#: src/Module/Contact.php:574 view/theme/vier/theme.php:201
-msgid "Connect/Follow"
-msgstr "Gör till kontakt/Följ"
+#: mod/editpost.php:123 src/Core/ACL.php:326
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Exempel: adam@exempel.com, bertil@exempel.com"
 
-#: include/conversation.php:1030
-#, php-format
-msgid "%s likes this."
-msgstr "%s gillar det här."
+#: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1343
+#: mod/photos.php:1399 mod/photos.php:1473 src/Content/Conversation.php:370
+#: src/Module/Item/Compose.php:160 src/Object/Post.php:976
+msgid "Preview"
+msgstr "Förhandsgranskning"
 
-#: include/conversation.php:1033
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s ogillar det här."
+#: mod/editpost.php:130 mod/fbrowser.php:117 mod/fbrowser.php:144
+#: mod/follow.php:144 mod/photos.php:1010 mod/photos.php:1111 mod/tagrm.php:35
+#: mod/tagrm.php:127 mod/unfollow.php:97 src/Content/Conversation.php:373
+#: src/Module/Contact/Revoke.php:110 src/Module/RemoteFollow.php:127
+msgid "Cancel"
+msgstr "Avbryt"
 
-#: include/conversation.php:1036
-#, php-format
-msgid "%s attends."
-msgstr "%s deltar."
+#: mod/editpost.php:134 src/Content/Conversation.php:331
+#: src/Module/Item/Compose.php:151 src/Object/Post.php:967
+msgid "Bold"
+msgstr "Fet"
 
-#: include/conversation.php:1039
-#, php-format
-msgid "%s doesn't attend."
-msgstr "%s deltar inte."
+#: mod/editpost.php:135 src/Content/Conversation.php:332
+#: src/Module/Item/Compose.php:152 src/Object/Post.php:968
+msgid "Italic"
+msgstr "Kursiv"
 
-#: include/conversation.php:1042
-#, php-format
-msgid "%s attends maybe."
-msgstr "%s deltar kanske."
+#: mod/editpost.php:136 src/Content/Conversation.php:333
+#: src/Module/Item/Compose.php:153 src/Object/Post.php:969
+msgid "Underline"
+msgstr "Understruken"
 
-#: include/conversation.php:1050
-msgid "and"
-msgstr "och"
+#: mod/editpost.php:137 src/Content/Conversation.php:334
+#: src/Module/Item/Compose.php:154 src/Object/Post.php:970
+msgid "Quote"
+msgstr "Citat"
 
-#: include/conversation.php:1056
-#, php-format
-msgid "and %d other people"
-msgstr "och %d andra"
+#: mod/editpost.php:138 src/Content/Conversation.php:335
+#: src/Module/Item/Compose.php:155 src/Object/Post.php:971
+msgid "Code"
+msgstr "Källkod"
 
-#: include/conversation.php:1064
-#, php-format
-msgid "<span  %1$s>%2$d people</span> like this"
-msgstr "<span  %1$s>%2$d personer</span> gillar det här"
+#: mod/editpost.php:139 src/Content/Conversation.php:337
+#: src/Module/Item/Compose.php:157 src/Object/Post.php:973
+msgid "Link"
+msgstr "Länk"
 
-#: include/conversation.php:1065
-#, php-format
-msgid "%s like this."
-msgstr "%s gillar det här."
+#: mod/editpost.php:140 src/Content/Conversation.php:338
+#: src/Module/Item/Compose.php:158 src/Object/Post.php:974
+msgid "Link or Media"
+msgstr "Länk eller media"
 
-#: include/conversation.php:1068
-#, php-format
-msgid "<span  %1$s>%2$d people</span> don't like this"
-msgstr "<span  %1$s>%2$d personer</span> ogillar det här"
+#: mod/editpost.php:143 src/Content/Conversation.php:380
+#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:460
+#: src/Module/Admin/Logs/View.php:92
+msgid "Message"
+msgstr "Meddelande"
 
-#: include/conversation.php:1069
-#, php-format
-msgid "%s don't like this."
-msgstr "%s ogillar det här."
+#: mod/editpost.php:144 src/Content/Conversation.php:381
+#: src/Module/Settings/TwoFactor/Trusted.php:137
+msgid "Browser"
+msgstr "Bläddra"
 
-#: include/conversation.php:1072
-#, php-format
-msgid "<span  %1$s>%2$d people</span> attend"
-msgstr "<span  %1$s>%2$d personer</span> deltar"
+#: mod/editpost.php:145 mod/events.php:522 mod/photos.php:945
+#: mod/photos.php:1297 src/Content/Conversation.php:357
+msgid "Permissions"
+msgstr "Åtkomst"
 
-#: include/conversation.php:1073
-#, php-format
-msgid "%s attend."
-msgstr "%s deltar."
+#: mod/editpost.php:147 src/Content/Conversation.php:383
+msgid "Open Compose page"
+msgstr ""
 
-#: include/conversation.php:1076
-#, php-format
-msgid "<span  %1$s>%2$d people</span> don't attend"
-msgstr "<span  %1$s>%2$d personer</span> deltar inte"
+#: mod/events.php:123 mod/events.php:125
+msgid "Event can not end before it has started."
+msgstr "Evenemanget kan inte sluta före det har börjat."
 
-#: include/conversation.php:1077
-#, php-format
-msgid "%s don't attend."
-msgstr "%s deltar inte."
+#: mod/events.php:132 mod/events.php:134
+msgid "Event title and start time are required."
+msgstr "Evenemangets titel och start-tid krävs."
 
-#: include/conversation.php:1080
-#, php-format
-msgid "<span  %1$s>%2$d people</span> attend maybe"
-msgstr "<span  %1$s>%2$dpersoner</span> deltar kanske"
+#: mod/events.php:379
+msgid "Create New Event"
+msgstr "Skapa nytt evenemang"
 
-#: include/conversation.php:1081
-#, php-format
-msgid "%s attend maybe."
-msgstr "%s deltar kanske."
+#: mod/events.php:478 src/Module/Admin/Logs/View.php:96
+msgid "Event details"
+msgstr "Evenemangets detaljer"
 
-#: include/conversation.php:1110
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Synlig för <strong>alla</strong>"
+#: mod/events.php:479
+msgid "Starting date and Title are required."
+msgstr "Start-datum och titel krävs."
 
-#: include/conversation.php:1111 src/Object/Post.php:886
-msgid "Please enter a image/video/audio/webpage URL:"
-msgstr "Vänligen fyll i URL till en bild/video/ljudklipp/hemsida:"
+#: mod/events.php:480 mod/events.php:485
+msgid "Event Starts:"
+msgstr "Evenemanget börjar:"
+
+#: mod/events.php:480 mod/events.php:510
+#: src/Module/Admin/Blocklist/Server/Add.php:104
+#: src/Module/Admin/Blocklist/Server/Add.php:106
+#: src/Module/Admin/Blocklist/Server/Index.php:68
+#: src/Module/Admin/Blocklist/Server/Index.php:69
+#: src/Module/Admin/Blocklist/Server/Index.php:96
+#: src/Module/Admin/Item/Delete.php:69 src/Module/Debug/Probe.php:59
+#: src/Module/Install.php:207 src/Module/Install.php:240
+#: src/Module/Install.php:245 src/Module/Install.php:264
+#: src/Module/Install.php:275 src/Module/Install.php:280
+#: src/Module/Install.php:286 src/Module/Install.php:291
+#: src/Module/Install.php:305 src/Module/Install.php:320
+#: src/Module/Install.php:347 src/Module/Register.php:148
+#: src/Module/Security/TwoFactor/Verify.php:100
+#: src/Module/Settings/TwoFactor/Index.php:133
+#: src/Module/Settings/TwoFactor/Verify.php:154
+msgid "Required"
+msgstr "Krävs"
 
-#: include/conversation.php:1112
-msgid "Tag term:"
-msgstr "Märkning/tagg:"
+#: mod/events.php:493 mod/events.php:516
+msgid "Finish date/time is not known or not relevant"
+msgstr "Slut-datum/tid är inte känt eller icke relevant"
 
-#: include/conversation.php:1113 mod/filer.php:35
-msgid "Save to Folder:"
-msgstr "Spara till mapp:"
+#: mod/events.php:495 mod/events.php:500
+msgid "Event Finishes:"
+msgstr "Evenemanget slutar:"
 
-#: include/conversation.php:1114
-msgid "Where are you right now?"
-msgstr "Var är du just nu?"
+#: mod/events.php:506 src/Module/Profile/Profile.php:172
+#: src/Module/Settings/Profile/Index.php:238
+msgid "Description:"
+msgstr "Beskrivning:"
 
-#: include/conversation.php:1115
-msgid "Delete item(s)?"
-msgstr "Ta bort?"
+#: mod/events.php:508 src/Content/Widget/VCard.php:98 src/Model/Event.php:80
+#: src/Model/Event.php:107 src/Model/Event.php:466 src/Model/Event.php:915
+#: src/Model/Profile.php:368 src/Module/Contact/Profile.php:369
+#: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:185
+#: src/Module/Profile/Profile.php:194
+msgid "Location:"
+msgstr "Plats:"
 
-#: include/conversation.php:1147
-msgid "New Post"
-msgstr "Nytt inlägg"
+#: mod/events.php:510 mod/events.php:512
+msgid "Title:"
+msgstr "Titel:"
 
-#: include/conversation.php:1150
-msgid "Share"
-msgstr "Publicera"
+#: mod/events.php:513 mod/events.php:514
+msgid "Share this event"
+msgstr "Dela det här evenemanget"
+
+#: mod/events.php:519 mod/message.php:201 mod/message.php:357
+#: mod/photos.php:927 mod/photos.php:1031 mod/photos.php:1301
+#: mod/photos.php:1342 mod/photos.php:1398 mod/photos.php:1472
+#: src/Module/Admin/Item/Source.php:65 src/Module/Contact/Advanced.php:132
+#: src/Module/Contact/Poke.php:177 src/Module/Contact/Profile.php:327
+#: src/Module/Debug/ActivityPubConversion.php:141
+#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
+#: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
+#: src/Module/Delegation.php:148 src/Module/FriendSuggest.php:144
+#: src/Module/Install.php:252 src/Module/Install.php:294
+#: src/Module/Install.php:331 src/Module/Invite.php:177
+#: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247
+#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:965
+#: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
+#: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
+msgid "Submit"
+msgstr "Spara"
 
-#: include/conversation.php:1151 mod/editpost.php:74 mod/message.php:258
-#: mod/message.php:439 mod/wallmessage.php:139
-msgid "Upload photo"
-msgstr "Ladda upp bild"
+#: mod/events.php:520 src/Module/Profile/Profile.php:248
+msgid "Basic"
+msgstr "Standard"
 
-#: include/conversation.php:1152 mod/editpost.php:75
-msgid "upload photo"
-msgstr "ladda upp bild"
+#: mod/events.php:521 src/Module/Admin/Site.php:506 src/Module/Contact.php:474
+#: src/Module/Profile/Profile.php:249
+msgid "Advanced"
+msgstr "Avancerat"
 
-#: include/conversation.php:1153 mod/editpost.php:76
-msgid "Attach file"
-msgstr "Bifoga fil"
-
-#: include/conversation.php:1154 mod/editpost.php:77
-msgid "attach file"
-msgstr "bifoga fil"
-
-#: include/conversation.php:1155 src/Object/Post.php:878
-msgid "Bold"
-msgstr "Fet"
-
-#: include/conversation.php:1156 src/Object/Post.php:879
-msgid "Italic"
-msgstr "Kursiv"
-
-#: include/conversation.php:1157 src/Object/Post.php:880
-msgid "Underline"
-msgstr "Understruken"
-
-#: include/conversation.php:1158 src/Object/Post.php:881
-msgid "Quote"
-msgstr "Citat"
-
-#: include/conversation.php:1159 src/Object/Post.php:882
-msgid "Code"
-msgstr "Källkod"
-
-#: include/conversation.php:1160 src/Object/Post.php:883
-msgid "Image"
-msgstr "Bild"
+#: mod/events.php:538
+msgid "Failed to remove event"
+msgstr "Borttagning av evenemanget misslyckades"
 
-#: include/conversation.php:1161 src/Object/Post.php:884
-msgid "Link"
-msgstr "Länk"
+#: mod/fbrowser.php:60 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
+#: view/theme/frio/theme.php:227
+msgid "Photos"
+msgstr "Bilder"
 
-#: include/conversation.php:1162 src/Object/Post.php:885
-msgid "Link or Media"
-msgstr "Länk eller media"
+#: mod/fbrowser.php:119 mod/fbrowser.php:146
+#: src/Module/Settings/Profile/Photo/Index.php:129
+msgid "Upload"
+msgstr "Ladda upp"
 
-#: include/conversation.php:1163 mod/editpost.php:84
-msgid "Set your location"
-msgstr "Ange plats"
+#: mod/fbrowser.php:141
+msgid "Files"
+msgstr "Filer"
 
-#: include/conversation.php:1164 mod/editpost.php:85
-msgid "set location"
-msgstr "ange plats"
+#: mod/follow.php:74 mod/unfollow.php:96 src/Module/RemoteFollow.php:126
+msgid "Submit Request"
+msgstr "Skicka förfrågan"
 
-#: include/conversation.php:1165 mod/editpost.php:86
-msgid "Clear browser location"
-msgstr "Clear browser location"
+#: mod/follow.php:84
+msgid "You already added this contact."
+msgstr "Du har redan lagt till den här kontakten."
 
-#: include/conversation.php:1166 mod/editpost.php:87
-msgid "clear location"
-msgstr "rensa plats"
+#: mod/follow.php:100
+msgid "The network type couldn't be detected. Contact can't be added."
+msgstr "Nätverkstypen kunde inte upptäckas. Kontakten kan inte läggas till."
 
-#: include/conversation.php:1168 mod/editpost.php:102
-msgid "Set title"
-msgstr "Ange rubrik"
+#: mod/follow.php:108
+msgid "Diaspora support isn't enabled. Contact can't be added."
+msgstr "Stödet för Diaspora är inte aktiverat. Kontakten kan inte läggas till."
 
-#: include/conversation.php:1170 mod/editpost.php:104
-msgid "Categories (comma-separated list)"
-msgstr "Kategorier (kommaseparerad lista)"
+#: mod/follow.php:113
+msgid "OStatus support is disabled. Contact can't be added."
+msgstr "Stödet för OStatus är inaktiverat. Kontakten kan inte läggas till."
 
-#: include/conversation.php:1172 mod/editpost.php:89
-msgid "Permission settings"
-msgstr "Åtkomstinställningar"
+#: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
+#: src/Model/Contact.php:1055 src/Model/Contact.php:1067
+#: view/theme/vier/theme.php:172
+msgid "Connect/Follow"
+msgstr "Gör till kontakt/Följ"
 
-#: include/conversation.php:1173 mod/editpost.php:119
-msgid "permissions"
-msgstr "rättigheter"
+#: mod/follow.php:139 src/Module/RemoteFollow.php:125
+msgid "Please answer the following:"
+msgstr "Var vänlig besvara följande:"
 
-#: include/conversation.php:1182 mod/editpost.php:99
-msgid "Public post"
-msgstr "Offentligt inlägg"
+#: mod/follow.php:140 mod/unfollow.php:94
+msgid "Your Identity Address:"
+msgstr "Din adress (ditt ID):"
 
-#: include/conversation.php:1186 mod/editpost.php:110 mod/events.php:551
-#: mod/photos.php:1458 mod/photos.php:1497 mod/photos.php:1557
-#: src/Object/Post.php:887
-msgid "Preview"
-msgstr "Förhandsgranskning"
+#: mod/follow.php:141 mod/unfollow.php:100
+#: src/Module/Admin/Blocklist/Contact.php:116
+#: src/Module/Contact/Profile.php:365
+#: src/Module/Notifications/Introductions.php:127
+#: src/Module/Notifications/Introductions.php:196
+msgid "Profile URL"
+msgstr "URL för profil"
 
-#: include/conversation.php:1190 include/items.php:396
-#: mod/dfrn_request.php:650 mod/editpost.php:113 mod/fbrowser.php:104
-#: mod/fbrowser.php:134 mod/follow.php:161 mod/message.php:153
-#: mod/photos.php:257 mod/photos.php:325 mod/settings.php:666
-#: mod/settings.php:692 mod/suggest.php:44 mod/tagrm.php:20 mod/tagrm.php:115
-#: mod/unfollow.php:132 mod/videos.php:105 src/Module/Contact.php:447
-msgid "Cancel"
-msgstr "Avbryt"
+#: mod/follow.php:142 src/Module/Contact/Profile.php:377
+#: src/Module/Notifications/Introductions.php:189
+#: src/Module/Profile/Profile.php:207
+msgid "Tags:"
+msgstr "Taggar:"
 
-#: include/conversation.php:1195
-msgid "Post to Groups"
-msgstr "Skicka inlägg till grupper"
+#: mod/follow.php:153
+#, php-format
+msgid "%s knows you"
+msgstr "%s känner dig"
 
-#: include/conversation.php:1196
-msgid "Post to Contacts"
-msgstr "Skicka inlägg till kontakter"
+#: mod/follow.php:154
+msgid "Add a personal note:"
+msgstr "Lägg till ett personligt meddelande:"
 
-#: include/conversation.php:1197
-msgid "Private post"
-msgstr "Privat inlägg"
+#: mod/follow.php:163 mod/unfollow.php:109 src/Module/BaseProfile.php:59
+#: src/Module/Contact.php:444
+msgid "Status Messages and Posts"
+msgstr "Statusmeddelanden och inlägg"
 
-#: include/conversation.php:1202 mod/editpost.php:117
-#: src/Model/Profile.php:370
-msgid "Message"
-msgstr "Meddelande"
+#: mod/follow.php:191
+msgid "The contact could not be added."
+msgstr "Kontakten kunde inte läggas till."
 
-#: include/conversation.php:1203 mod/editpost.php:118
-msgid "Browser"
-msgstr "Bläddra"
+#: mod/item.php:135 mod/item.php:139
+msgid "Unable to locate original post."
+msgstr "Hittar inte det ursprungliga inlägget."
 
-#: include/conversation.php:1475
-msgid "View all"
-msgstr "Visa alla"
+#: mod/item.php:341 mod/item.php:346
+msgid "Empty post discarded."
+msgstr "Tomt inlägg. Inte sparat."
 
-#: include/conversation.php:1499
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/item.php:743
+msgid "Post updated."
+msgstr "Inlägget uppdaterades."
 
-#: include/conversation.php:1502
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/item.php:753 mod/item.php:758
+msgid "Item wasn't stored."
+msgstr "Objektet lagrades inte."
 
-#: include/conversation.php:1508
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/item.php:769
+msgid "Item couldn't be fetched."
+msgstr "Objektet kunde inte hämtas."
 
-#: include/conversation.php:1511 src/Content/ContactSelector.php:167
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/item.php:915 src/Module/Admin/Themes/Details.php:39
+#: src/Module/Admin/Themes/Index.php:59 src/Module/Debug/ItemBody.php:41
+#: src/Module/Debug/ItemBody.php:56
+msgid "Item not found."
+msgstr "Hittar inte."
 
-#: include/enotify.php:57
-msgid "Friendica Notification"
-msgstr ""
+#: mod/lostpass.php:40
+msgid "No valid account found."
+msgstr "Inget giltigt konto hittades."
 
-#: include/enotify.php:60
-msgid "Thank You,"
-msgstr ""
+#: mod/lostpass.php:52
+msgid "Password reset request issued. Check your email."
+msgstr "Nytt lösenord har begärts. Kolla din mail."
 
-#: include/enotify.php:63
+#: mod/lostpass.php:58
 #, php-format
-msgid "%1$s, %2$s Administrator"
+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, the request will expire shortly.\n"
+"\n"
+"\t\tYour password will not be changed unless we can verify that you\n"
+"\t\tissued this request."
 msgstr ""
 
-#: include/enotify.php:65
+#: mod/lostpass.php:69
 #, php-format
-msgid "%s Administrator"
+msgid ""
+"\n"
+"\t\tFollow this link soon 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 ""
 
-#: include/enotify.php:134
+#: mod/lostpass.php:84
 #, php-format
-msgid "[Friendica:Notify] New mail received at %s"
-msgstr ""
+msgid "Password reset requested at %s"
+msgstr "Nytt lösenord på %s har begärts"
 
-#: include/enotify.php:136
-#, php-format
-msgid "%1$s sent you a new private message at %2$s."
-msgstr ""
+#: mod/lostpass.php:100
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Begäran kunde inte verifieras. (Du kanske redan skickat den?) Det gick inte att byta lösenord."
 
-#: include/enotify.php:137
-msgid "a private message"
-msgstr ""
+#: mod/lostpass.php:113
+msgid "Request has expired, please make a new one."
+msgstr "Förfrågningen har slutat gälla, vänligen gör en ny."
 
-#: include/enotify.php:137
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr ""
+#: mod/lostpass.php:128
+msgid "Forgot your Password?"
+msgstr "Glömt lösenordet?"
 
-#: include/enotify.php:139
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr ""
+#: mod/lostpass.php:129
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Ange din e-postadress för att få ett nytt lösenord. Du kommer att få ett meddelande med vidare instruktioner via e-post."
 
-#: include/enotify.php:172
-#, php-format
-msgid "%1$s tagged you on [url=%2$s]a %3$s[/url]"
-msgstr ""
+#: mod/lostpass.php:130 src/Module/Security/Login.php:147
+msgid "Nickname or Email: "
+msgstr "Användarnamn eller e-post:"
 
-#: include/enotify.php:178
-#, php-format
-msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
-msgstr ""
+#: mod/lostpass.php:131
+msgid "Reset"
+msgstr "Skicka"
 
-#: include/enotify.php:188
-#, php-format
-msgid "%1$s tagged you on [url=%2$s]%3$s's %4$s[/url]"
-msgstr ""
+#: mod/lostpass.php:146 src/Module/Security/Login.php:159
+msgid "Password Reset"
+msgstr "Glömt lösenordet?"
 
-#: include/enotify.php:195
-#, php-format
-msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
-msgstr ""
+#: mod/lostpass.php:147
+msgid "Your password has been reset as requested."
+msgstr "Nu har du fått ett nytt lösenord."
 
-#: include/enotify.php:207
-#, php-format
-msgid "%1$s tagged you on [url=%2$s]your %3$s[/url]"
-msgstr ""
+#: mod/lostpass.php:148
+msgid "Your new password is"
+msgstr "Det nya lösenordet är"
 
-#: include/enotify.php:213
-#, php-format
-msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
-msgstr ""
+#: mod/lostpass.php:149
+msgid "Save or copy your new password - and then"
+msgstr "Spara eller kopiera lösenordet och"
 
-#: include/enotify.php:224
-#, php-format
-msgid "%1$s tagged you on [url=%2$s]their %3$s[/url]"
-msgstr ""
+#: mod/lostpass.php:150
+msgid "click here to login"
+msgstr "klicka här för att logga in"
 
-#: include/enotify.php:230
-#, php-format
-msgid "%1$s commented on [url=%2$s]their %3$s[/url]"
-msgstr ""
+#: mod/lostpass.php:151
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "När du loggat in kan du byta lösenord på sidan <em>Inställningar</em>."
 
-#: include/enotify.php:243
-#, php-format
-msgid "[Friendica:Notify] %s tagged you"
-msgstr ""
+#: mod/lostpass.php:155
+msgid "Your password has been reset."
+msgstr "Ditt lösenord har återställts."
 
-#: include/enotify.php:245
+#: mod/lostpass.php:158
 #, php-format
-msgid "%1$s tagged you at %2$s"
+msgid ""
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tYour password has been changed as requested. Please retain this\n"
+"\t\t\tinformation for your records (or change your password immediately to\n"
+"\t\t\tsomething that you will remember).\n"
+"\t\t"
 msgstr ""
 
-#: include/enotify.php:247
+#: mod/lostpass.php:164
 #, php-format
-msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
+msgid ""
+"\n"
+"\t\t\tYour login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%1$s\n"
+"\t\t\tLogin Name:\t%2$s\n"
+"\t\t\tPassword:\t%3$s\n"
+"\n"
+"\t\t\tYou may change that password from your account settings page after logging in.\n"
+"\t\t"
 msgstr ""
 
-#: include/enotify.php:249
+#: mod/lostpass.php:176
 #, php-format
-msgid "%s commented on an item/conversation you have been following."
-msgstr ""
+msgid "Your password has been changed at %s"
+msgstr "Ditt lösenord ändrades den %s"
 
-#: include/enotify.php:254 include/enotify.php:269 include/enotify.php:284
-#: include/enotify.php:303 include/enotify.php:319
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
+#: mod/match.php:62
+msgid "No keywords to match. Please add keywords to your profile."
 msgstr ""
 
-#: include/enotify.php:261
-#, php-format
-msgid "[Friendica:Notify] %s posted to your profile wall"
-msgstr ""
+#: mod/match.php:93 src/Module/BaseSearch.php:116
+msgid "No matches"
+msgstr "Ingen träff"
 
-#: include/enotify.php:263
-#, php-format
-msgid "%1$s posted to your profile wall at %2$s"
-msgstr ""
+#: mod/match.php:98
+msgid "Profile Match"
+msgstr "Matcha profiler"
 
-#: include/enotify.php:264
-#, php-format
-msgid "%1$s posted to [url=%2$s]your wall[/url]"
-msgstr ""
+#: mod/message.php:46 mod/message.php:126 src/Content/Nav.php:286
+msgid "New Message"
+msgstr "Nytt meddelande"
 
-#: include/enotify.php:276
-#, php-format
-msgid "[Friendica:Notify] %s shared a new post"
-msgstr ""
+#: mod/message.php:83 mod/wallmessage.php:70
+msgid "No recipient selected."
+msgstr "Ingen mottagare har valts."
 
-#: include/enotify.php:278
-#, php-format
-msgid "%1$s shared a new post at %2$s"
-msgstr ""
+#: mod/message.php:87
+msgid "Unable to locate contact information."
+msgstr "Det gick inte att hitta kontaktuppgifterna."
 
-#: include/enotify.php:279
-#, php-format
-msgid "%1$s [url=%2$s]shared a post[/url]."
-msgstr ""
+#: mod/message.php:90 mod/wallmessage.php:76
+msgid "Message could not be sent."
+msgstr "Det gick inte att skicka meddelandet."
 
-#: include/enotify.php:291
-#, php-format
-msgid "[Friendica:Notify] %1$s poked you"
-msgstr ""
+#: mod/message.php:93 mod/wallmessage.php:79
+msgid "Message collection failure."
+msgstr "Insamling av meddelanden misslyckades."
 
-#: include/enotify.php:293
-#, php-format
-msgid "%1$s poked you at %2$s"
-msgstr ""
+#: mod/message.php:120 src/Module/Notifications/Introductions.php:133
+#: src/Module/Notifications/Introductions.php:168
+#: src/Module/Notifications/Notification.php:57
+msgid "Discard"
+msgstr "Ta bort"
 
-#: include/enotify.php:294
-#, php-format
-msgid "%1$s [url=%2$s]poked you[/url]."
-msgstr ""
+#: mod/message.php:133 src/Content/Nav.php:283 view/theme/frio/theme.php:234
+msgid "Messages"
+msgstr "Meddelanden"
 
-#: include/enotify.php:311
-#, php-format
-msgid "[Friendica:Notify] %s tagged your post"
-msgstr ""
+#: mod/message.php:146
+msgid "Conversation not found."
+msgstr "Konversationen hittades inte."
 
-#: include/enotify.php:313
-#, php-format
-msgid "%1$s tagged your post at %2$s"
-msgstr ""
+#: mod/message.php:151
+msgid "Message was not deleted."
+msgstr "Meddelandet togs inte bort."
 
-#: include/enotify.php:314
-#, php-format
-msgid "%1$s tagged [url=%2$s]your post[/url]"
-msgstr ""
-
-#: include/enotify.php:326
-msgid "[Friendica:Notify] Introduction received"
-msgstr ""
+#: mod/message.php:166
+msgid "Conversation was not removed."
+msgstr "Konversationen togs inte bort."
 
-#: include/enotify.php:328
-#, php-format
-msgid "You've received an introduction from '%1$s' at %2$s"
-msgstr ""
+#: mod/message.php:180 mod/message.php:286 mod/wallmessage.php:124
+msgid "Please enter a link URL:"
+msgstr "Ange en länk (URL):"
 
-#: include/enotify.php:329
-#, php-format
-msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
-msgstr ""
+#: mod/message.php:189 mod/wallmessage.php:129
+msgid "Send Private Message"
+msgstr "Skicka personligt meddelande"
 
-#: include/enotify.php:334 include/enotify.php:380
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr ""
+#: mod/message.php:190 mod/message.php:347 mod/wallmessage.php:131
+msgid "To:"
+msgstr "Till:"
 
-#: include/enotify.php:336
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr ""
+#: mod/message.php:191 mod/message.php:348 mod/wallmessage.php:132
+msgid "Subject:"
+msgstr "Rubrik:"
 
-#: include/enotify.php:343
-msgid "[Friendica:Notify] A new person is sharing with you"
-msgstr ""
+#: mod/message.php:195 mod/message.php:351 mod/wallmessage.php:138
+#: src/Module/Invite.php:170
+msgid "Your message:"
+msgstr "Meddelande:"
 
-#: include/enotify.php:345 include/enotify.php:346
-#, php-format
-msgid "%1$s is sharing with you at %2$s"
-msgstr ""
+#: mod/message.php:222
+msgid "No messages."
+msgstr "Inga meddelanden."
 
-#: include/enotify.php:353
-msgid "[Friendica:Notify] You have a new follower"
-msgstr ""
+#: mod/message.php:278
+msgid "Message not available."
+msgstr "Meddelandet är inte tillgängligt."
 
-#: include/enotify.php:355 include/enotify.php:356
-#, php-format
-msgid "You have a new follower at %2$s : %1$s"
-msgstr ""
+#: mod/message.php:323
+msgid "Delete message"
+msgstr "Ta bort meddelande"
 
-#: include/enotify.php:369
-msgid "[Friendica:Notify] Friend suggestion received"
-msgstr ""
+#: mod/message.php:325 mod/message.php:457
+msgid "D, d M Y - g:i A"
+msgstr "D, d M Y - g:i A"
 
-#: include/enotify.php:371
-#, php-format
-msgid "You've received a friend suggestion from '%1$s' at %2$s"
-msgstr ""
+#: mod/message.php:340 mod/message.php:454
+msgid "Delete conversation"
+msgstr "Ta bort konversation"
 
-#: include/enotify.php:372
-#, php-format
+#: mod/message.php:342
 msgid ""
-"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
-msgstr ""
-
-#: include/enotify.php:378
-msgid "Name:"
-msgstr ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Inga säkra kommunikationer tillgängliga. Du </strong>kanske</strong>kan ha möjlighet att svara från sändarens profilsida."
 
-#: include/enotify.php:379
-msgid "Photo:"
-msgstr ""
+#: mod/message.php:346
+msgid "Send Reply"
+msgstr "Skicka svar"
 
-#: include/enotify.php:382
+#: mod/message.php:428
 #, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr ""
-
-#: include/enotify.php:390 include/enotify.php:405
-msgid "[Friendica:Notify] Connection accepted"
-msgstr ""
+msgid "Unknown sender - %s"
+msgstr "Okänd sändare - %s"
 
-#: include/enotify.php:392 include/enotify.php:407
+#: mod/message.php:430
 #, php-format
-msgid "'%1$s' has accepted your connection request at %2$s"
-msgstr ""
+msgid "You and %s"
+msgstr "Du och %s"
 
-#: include/enotify.php:393 include/enotify.php:408
+#: mod/message.php:432
 #, php-format
-msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
-msgstr ""
-
-#: include/enotify.php:398
-msgid ""
-"You are now mutual friends and may exchange status updates, photos, and "
-"email without restriction."
-msgstr ""
+msgid "%s and You"
+msgstr "%s och Du"
 
-#: include/enotify.php:400
+#: mod/message.php:460
 #, php-format
-msgid "Please visit %s if you wish to make any changes to this relationship."
-msgstr ""
+msgid "%d message"
+msgid_plural "%d messages"
+msgstr[0] "%d meddelande"
+msgstr[1] "%d meddelanden"
 
-#: include/enotify.php:413
-#, 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 ""
+#: mod/notes.php:51 src/Module/BaseProfile.php:106
+msgid "Personal Notes"
+msgstr "Personliga anteckningar"
 
-#: include/enotify.php:415
-#, php-format
-msgid ""
-"'%1$s' may choose to extend this into a two-way or more permissive "
-"relationship in the future."
-msgstr ""
+#: mod/notes.php:55
+msgid "Personal notes are visible only by yourself."
+msgstr "Personliga anteckningar kan endast ses av dig själv."
 
-#: include/enotify.php:417
-#, php-format
-msgid "Please visit %s  if you wish to make any changes to this relationship."
-msgstr ""
+#: mod/ostatus_subscribe.php:37
+msgid "Subscribing to contacts"
+msgstr "Prenumererar på kontakter"
 
-#: include/enotify.php:427 mod/removeme.php:46
-msgid "[Friendica System Notify]"
+#: mod/ostatus_subscribe.php:47
+msgid "No contact provided."
 msgstr ""
 
-#: include/enotify.php:427
-msgid "registration request"
-msgstr ""
+#: mod/ostatus_subscribe.php:53
+msgid "Couldn't fetch information for contact."
+msgstr "Kunde inte hämta information för kontakten."
 
-#: include/enotify.php:429
-#, php-format
-msgid "You've received a registration request from '%1$s' at %2$s"
-msgstr ""
+#: mod/ostatus_subscribe.php:64
+msgid "Couldn't fetch friends for contact."
+msgstr "Kunde inte hämta vänner för kontakt."
 
-#: include/enotify.php:430
-#, php-format
-msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
-msgstr ""
+#: mod/ostatus_subscribe.php:70 mod/ostatus_subscribe.php:81
+msgid "Couldn't fetch following contacts."
+msgstr "Kunde inte hämta följande kontakter."
 
-#: include/enotify.php:435
-#, php-format
-msgid ""
-"Full Name:\t%s\n"
-"Site Location:\t%s\n"
-"Login Name:\t%s (%s)"
+#: mod/ostatus_subscribe.php:76
+msgid "Couldn't fetch remote profile."
 msgstr ""
 
-#: include/enotify.php:441
-#, php-format
-msgid "Please visit %s to approve or reject the request."
-msgstr ""
+#: mod/ostatus_subscribe.php:86
+msgid "Unsupported network"
+msgstr "Nätverket stöds inte"
 
-#: include/items.php:353 mod/admin.php:302 mod/admin.php:2131
-#: mod/admin.php:2378 mod/notice.php:20 mod/viewsrc.php:22
-msgid "Item not found."
-msgstr "Hittar inte."
+#: mod/ostatus_subscribe.php:102 mod/repair_ostatus.php:51
+msgid "Done"
+msgstr "Färdig"
 
-#: include/items.php:391
-msgid "Do you really want to delete this item?"
-msgstr ""
+#: mod/ostatus_subscribe.php:116
+msgid "success"
+msgstr "lyckades"
 
-#: include/items.php:393 mod/api.php:109 mod/dfrn_request.php:640
-#: mod/follow.php:150 mod/message.php:150 mod/profiles.php:526
-#: mod/profiles.php:529 mod/profiles.php:551 mod/settings.php:1085
-#: mod/settings.php:1091 mod/settings.php:1098 mod/settings.php:1102
-#: mod/settings.php:1106 mod/settings.php:1110 mod/settings.php:1114
-#: mod/settings.php:1118 mod/settings.php:1138 mod/settings.php:1139
-#: mod/settings.php:1140 mod/settings.php:1141 mod/settings.php:1142
-#: mod/suggest.php:41 src/Module/Contact.php:444 src/Module/Register.php:97
-msgid "Yes"
-msgstr "Ja"
+#: mod/ostatus_subscribe.php:118
+msgid "failed"
+msgstr "misslyckades"
 
-#: include/items.php:443 mod/allfriends.php:22 mod/api.php:34 mod/api.php:39
-#: mod/cal.php:303 mod/common.php:27 mod/crepair.php:90 mod/delegate.php:30
-#: mod/delegate.php:48 mod/delegate.php:59 mod/dfrn_confirm.php:66
-#: mod/dirfind.php:29 mod/editpost.php:22 mod/events.php:207 mod/follow.php:57
-#: mod/follow.php:121 mod/fsuggest.php:77 mod/group.php:28 mod/invite.php:23
-#: mod/invite.php:111 mod/item.php:167 mod/manage.php:129 mod/message.php:56
-#: mod/message.php:101 mod/network.php:35 mod/nogroup.php:18 mod/notes.php:27
-#: mod/notifications.php:70 mod/ostatus_subscribe.php:18 mod/photos.php:186
-#: mod/photos.php:1020 mod/poke.php:141 mod/profiles.php:182
-#: mod/profiles.php:499 mod/profile_photo.php:32 mod/profile_photo.php:177
-#: mod/profile_photo.php:204 mod/regmod.php:89 mod/repair_ostatus.php:16
-#: mod/settings.php:48 mod/settings.php:154 mod/settings.php:655
-#: mod/suggest.php:62 mod/uimport.php:17 mod/unfollow.php:22
-#: mod/unfollow.php:77 mod/unfollow.php:109 mod/viewcontacts.php:56
-#: mod/wallmessage.php:19 mod/wallmessage.php:43 mod/wallmessage.php:82
-#: mod/wallmessage.php:106 mod/wall_attach.php:76 mod/wall_attach.php:79
-#: mod/wall_upload.php:107 mod/wall_upload.php:110 src/App.php:1390
-#: src/Module/Attach.php:42 src/Module/Contact.php:360
-#: src/Module/Register.php:193
-msgid "Permission denied."
-msgstr "Åtkomst nekad."
+#: mod/ostatus_subscribe.php:121
+msgid "ignored"
+msgstr "ignorerades"
 
-#: include/items.php:514 src/Content/Feature.php:99
-msgid "Archives"
-msgstr ""
+#: mod/ostatus_subscribe.php:126 mod/repair_ostatus.php:57
+msgid "Keep this window open until done."
+msgstr "Håll det här fönstret öppet tills du är klar."
 
-#: include/items.php:520 src/Content/ForumManager.php:135
-#: src/Content/Widget.php:329 view/theme/vier/theme.php:255
-msgid "show more"
-msgstr ""
+#: mod/photos.php:108 src/Module/BaseProfile.php:67
+msgid "Photo Albums"
+msgstr "Fotoalbum"
 
-#: mod/admin.php:122
-msgid "Theme settings updated."
-msgstr ""
+#: mod/photos.php:109 mod/photos.php:1590
+msgid "Recent Photos"
+msgstr "Nyligen tillagda bilder"
 
-#: mod/admin.php:196 src/Content/Nav.php:231
-msgid "Information"
-msgstr ""
+#: mod/photos.php:111 mod/photos.php:1079 mod/photos.php:1592
+msgid "Upload New Photos"
+msgstr "Ladda upp bilder"
 
-#: mod/admin.php:197
-msgid "Overview"
-msgstr ""
+#: mod/photos.php:129 src/Module/BaseSettings.php:35
+msgid "everybody"
+msgstr "alla"
 
-#: mod/admin.php:198 mod/admin.php:779
-msgid "Federation Statistics"
-msgstr ""
+#: mod/photos.php:167
+msgid "Contact information unavailable"
+msgstr "Kommer inte åt kontaktuppgifter."
 
-#: mod/admin.php:199
-msgid "Configuration"
-msgstr ""
+#: mod/photos.php:196
+msgid "Album not found."
+msgstr "Albumet finns inte."
 
-#: mod/admin.php:200 mod/admin.php:1581
-msgid "Site"
-msgstr ""
+#: mod/photos.php:250
+msgid "Album successfully deleted"
+msgstr "Borttagningen av albumet lyckades"
 
-#: mod/admin.php:201 mod/admin.php:1482 mod/admin.php:2062 mod/admin.php:2079
-msgid "Users"
-msgstr ""
+#: mod/photos.php:252
+msgid "Album was empty."
+msgstr "Albumet var tomt."
 
-#: mod/admin.php:202 mod/admin.php:2179 mod/admin.php:2239 mod/settings.php:99
-msgid "Addons"
-msgstr ""
+#: mod/photos.php:284
+msgid "Failed to delete the photo."
+msgstr "Borttagningen av fotot misslyckades."
 
-#: mod/admin.php:203 mod/admin.php:2436 mod/admin.php:2480
-msgid "Themes"
-msgstr ""
+#: mod/photos.php:559
+msgid "a photo"
+msgstr "ett foto"
 
-#: mod/admin.php:204 mod/settings.php:77
-msgid "Additional features"
-msgstr ""
+#: mod/photos.php:559
+#, php-format
+msgid "%1$s was tagged in %2$s by %3$s"
+msgstr "%1$s taggades i %2$s av %3$s"
 
-#: mod/admin.php:205 mod/admin.php:329 src/Content/Nav.php:234
-#: src/Module/Register.php:144 src/Module/Tos.php:73
-msgid "Terms of Service"
+#: mod/photos.php:642 mod/photos.php:645 mod/photos.php:672
+#: mod/wall_upload.php:204 src/Module/Settings/Profile/Photo/Index.php:60
+#, php-format
+msgid "Image exceeds size limit of %s"
 msgstr ""
 
-#: mod/admin.php:206
-msgid "Database"
-msgstr ""
+#: mod/photos.php:648
+msgid "Image upload didn't complete, please try again"
+msgstr "Uppladdningen av bilden slutfördes inte, vänligen försök igen."
 
-#: mod/admin.php:207
-msgid "DB updates"
-msgstr ""
+#: mod/photos.php:651
+msgid "Image file is missing"
+msgstr "Bildfilen saknas"
 
-#: mod/admin.php:208 mod/admin.php:823
-msgid "Inspect Queue"
-msgstr ""
+#: mod/photos.php:656
+msgid ""
+"Server can't accept new file upload at this time, please contact your "
+"administrator"
+msgstr "Servern kan just nu inte acceptera uppladdning av en ny fil, vänligen kontakta din administratör"
 
-#: mod/admin.php:209
-msgid "Inspect Deferred Workers"
-msgstr ""
+#: mod/photos.php:680
+msgid "Image file is empty."
+msgstr "Bildfilen är tom."
 
-#: mod/admin.php:210
-msgid "Inspect worker Queue"
-msgstr ""
+#: mod/photos.php:695 mod/wall_upload.php:166
+#: src/Module/Settings/Profile/Photo/Index.php:69
+msgid "Unable to process image."
+msgstr "Det gick inte att behandla bilden."
 
-#: mod/admin.php:211
-msgid "Tools"
-msgstr ""
+#: mod/photos.php:721 mod/wall_upload.php:229
+#: src/Module/Settings/Profile/Photo/Index.php:96
+msgid "Image upload failed."
+msgstr "Fel vid bilduppladdning."
 
-#: mod/admin.php:212
-msgid "Contact Blocklist"
-msgstr ""
+#: mod/photos.php:813
+msgid "No photos selected"
+msgstr "Inga bilder har valts"
 
-#: mod/admin.php:213 mod/admin.php:395
-msgid "Server Blocklist"
-msgstr ""
+#: mod/photos.php:882
+msgid "Access to this item is restricted."
+msgstr "Åtkomst till det här objekt är begränsat."
 
-#: mod/admin.php:214 mod/admin.php:558
-msgid "Delete Item"
-msgstr ""
+#: mod/photos.php:937
+msgid "Upload Photos"
+msgstr "Ladda upp bilder"
 
-#: mod/admin.php:215 mod/admin.php:216 mod/admin.php:2556
-msgid "Logs"
-msgstr ""
+#: mod/photos.php:941 mod/photos.php:1027
+msgid "New album name: "
+msgstr "Nytt album med namn: "
 
-#: mod/admin.php:217 mod/admin.php:2624
-msgid "View Logs"
-msgstr ""
+#: mod/photos.php:942
+msgid "or select existing album:"
+msgstr "eller välj befintligt album:"
 
-#: mod/admin.php:219
-msgid "Diagnostics"
-msgstr ""
+#: mod/photos.php:943
+msgid "Do not show a status post for this upload"
+msgstr "Visa inte ett status-inlägg för den här uppladdningen"
 
-#: mod/admin.php:220
-msgid "PHP Info"
-msgstr ""
+#: mod/photos.php:1008
+msgid "Do you really want to delete this photo album and all its photos?"
+msgstr "Vill du verkligen ta bort det här fotoalbumet och alla dess foton?"
 
-#: mod/admin.php:221
-msgid "probe address"
-msgstr ""
+#: mod/photos.php:1009 mod/photos.php:1032
+msgid "Delete Album"
+msgstr "Ta bort album"
 
-#: mod/admin.php:222
-msgid "check webfinger"
-msgstr ""
+#: mod/photos.php:1036
+msgid "Edit Album"
+msgstr "Redigera album"
 
-#: mod/admin.php:242 src/Content/Nav.php:274
-msgid "Admin"
-msgstr ""
+#: mod/photos.php:1037
+msgid "Drop Album"
+msgstr "Släpp albumet"
 
-#: mod/admin.php:243
-msgid "Addon Features"
-msgstr ""
+#: mod/photos.php:1041
+msgid "Show Newest First"
+msgstr "Visa nyaste först"
 
-#: mod/admin.php:244
-msgid "User registrations waiting for confirmation"
-msgstr ""
+#: mod/photos.php:1043
+msgid "Show Oldest First"
+msgstr "Visa äldsta först"
 
-#: mod/admin.php:328 mod/admin.php:394 mod/admin.php:514 mod/admin.php:557
-#: mod/admin.php:778 mod/admin.php:822 mod/admin.php:875 mod/admin.php:998
-#: mod/admin.php:1580 mod/admin.php:2061 mod/admin.php:2178 mod/admin.php:2238
-#: mod/admin.php:2435 mod/admin.php:2479 mod/admin.php:2555 mod/admin.php:2623
-msgid "Administration"
-msgstr ""
+#: mod/photos.php:1064 mod/photos.php:1575
+msgid "View Photo"
+msgstr "Visa bild"
 
-#: mod/admin.php:330
-msgid "Display Terms of Service"
-msgstr ""
+#: mod/photos.php:1097
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Tillståndet nekades. Åtkomst till det här objektet kan vara begränsad."
 
-#: mod/admin.php:330
-msgid ""
-"Enable the Terms of Service page. If this is enabled a link to the terms "
-"will be added to the registration form and the general information page."
-msgstr ""
+#: mod/photos.php:1099
+msgid "Photo not available"
+msgstr "Bilden är inte tillgänglig"
 
-#: mod/admin.php:331
-msgid "Display Privacy Statement"
-msgstr ""
+#: mod/photos.php:1109
+msgid "Do you really want to delete this photo?"
+msgstr "Vill du verkligen ta bort det här fotot?"
 
-#: mod/admin.php:331
-#, php-format
-msgid ""
-"Show some informations regarding the needed information to operate the node "
-"according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."
-msgstr ""
+#: mod/photos.php:1110 mod/photos.php:1302
+msgid "Delete Photo"
+msgstr "Ta bort bild"
 
-#: mod/admin.php:332
-msgid "Privacy Statement Preview"
-msgstr ""
+#: mod/photos.php:1200
+msgid "View photo"
+msgstr "Visa fotot"
 
-#: mod/admin.php:334
-msgid "The Terms of Service"
-msgstr ""
+#: mod/photos.php:1202
+msgid "Edit photo"
+msgstr "Hantera bild"
 
-#: mod/admin.php:334
-msgid ""
-"Enter the Terms of Service for your node here. You can use BBCode. Headers "
-"of sections should be [h2] and below."
-msgstr ""
+#: mod/photos.php:1203
+msgid "Delete photo"
+msgstr "Ta bort fotot"
 
-#: mod/admin.php:336 mod/admin.php:1582 mod/admin.php:2240 mod/admin.php:2481
-#: mod/admin.php:2557 mod/admin.php:2707 mod/delegate.php:175
-#: mod/settings.php:665 mod/settings.php:772 mod/settings.php:860
-#: mod/settings.php:949 mod/settings.php:1174
-msgid "Save Settings"
-msgstr ""
+#: mod/photos.php:1204
+msgid "Use as profile photo"
+msgstr "Använd som ett profilfoto"
 
-#: mod/admin.php:386 mod/admin.php:404 mod/dfrn_request.php:346
-#: mod/friendica.php:131 src/Model/Contact.php:1719
-msgid "Blocked domain"
-msgstr ""
+#: mod/photos.php:1211
+msgid "Private Photo"
+msgstr "Privat foto"
 
-#: mod/admin.php:386
-msgid "The blocked domain"
-msgstr ""
+#: mod/photos.php:1217
+msgid "View Full Size"
+msgstr "Visa fullstor"
 
-#: mod/admin.php:387 mod/admin.php:405 mod/friendica.php:131
-msgid "Reason for the block"
-msgstr ""
+#: mod/photos.php:1270
+msgid "Tags: "
+msgstr "Taggar: "
 
-#: mod/admin.php:387 mod/admin.php:400
-msgid "The reason why you blocked this domain."
-msgstr ""
+#: mod/photos.php:1273
+msgid "[Select tags to remove]"
+msgstr "[Välj taggar att ta bort]"
 
-#: mod/admin.php:388
-msgid "Delete domain"
-msgstr ""
+#: mod/photos.php:1288
+msgid "New album name"
+msgstr "Nytt album med namn"
 
-#: mod/admin.php:388
-msgid "Check to delete this entry from the blocklist"
-msgstr ""
+#: mod/photos.php:1289
+msgid "Caption"
+msgstr "Caption"
 
-#: mod/admin.php:396
-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/photos.php:1290
+msgid "Add a Tag"
+msgstr "Lägg till tagg"
 
-#: mod/admin.php:397
+#: mod/photos.php:1290
 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 ""
+"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr "Exempel: @adam, @Anna_Andersson, @johan@exempel.com, #Stockholm, #camping"
 
-#: mod/admin.php:398
-msgid "Add new entry to block list"
-msgstr ""
+#: mod/photos.php:1291
+msgid "Do not rotate"
+msgstr "Rotera inte"
 
-#: mod/admin.php:399
-msgid "Server Domain"
-msgstr ""
+#: mod/photos.php:1292
+msgid "Rotate CW (right)"
+msgstr "Rotera medurs (höger)"
 
-#: mod/admin.php:399
-msgid ""
-"The domain of the new server to add to the block list. Do not include the "
-"protocol."
-msgstr ""
+#: mod/photos.php:1293
+msgid "Rotate CCW (left)"
+msgstr "Rotera Moturs (vänster)"
 
-#: mod/admin.php:400
-msgid "Block reason"
-msgstr ""
+#: mod/photos.php:1339 mod/photos.php:1395 mod/photos.php:1469
+#: src/Module/Contact.php:544 src/Module/Item/Compose.php:148
+#: src/Object/Post.php:962
+msgid "This is you"
+msgstr "Det här är du"
 
-#: mod/admin.php:401
-msgid "Add Entry"
-msgstr ""
+#: mod/photos.php:1341 mod/photos.php:1397 mod/photos.php:1471
+#: src/Object/Post.php:498 src/Object/Post.php:964
+msgid "Comment"
+msgstr "Kommentera"
 
-#: mod/admin.php:402
-msgid "Save changes to the blocklist"
-msgstr ""
+#: mod/photos.php:1430 src/Content/Conversation.php:615
+#: src/Object/Post.php:227
+msgid "Select"
+msgstr "Välj"
 
-#: mod/admin.php:403
-msgid "Current Entries in the Blocklist"
-msgstr ""
+#: mod/photos.php:1431 mod/settings.php:596 src/Content/Conversation.php:616
+#: src/Module/Admin/Users/Active.php:139
+#: src/Module/Admin/Users/Blocked.php:140 src/Module/Admin/Users/Index.php:153
+msgid "Delete"
+msgstr "Ta bort"
 
-#: mod/admin.php:406
-msgid "Delete entry from blocklist"
-msgstr ""
+#: mod/photos.php:1492 src/Object/Post.php:349
+msgid "Like"
+msgstr "Gilla"
 
-#: mod/admin.php:409
-msgid "Delete entry from blocklist?"
-msgstr ""
+#: mod/photos.php:1493 src/Object/Post.php:349
+msgid "I like this (toggle)"
+msgstr "Jag gillar det här (växla)"
 
-#: mod/admin.php:436
-msgid "Server added to blocklist."
-msgstr ""
+#: mod/photos.php:1494 src/Object/Post.php:350
+msgid "Dislike"
+msgstr "Ogilla"
 
-#: mod/admin.php:452
-msgid "Site blocklist updated."
-msgstr ""
+#: mod/photos.php:1496 src/Object/Post.php:350
+msgid "I don't like this (toggle)"
+msgstr "Jag ogillar det här (växla)"
 
-#: mod/admin.php:477 src/Core/Console/GlobalCommunityBlock.php:68
-msgid "The contact has been blocked from the node"
-msgstr ""
+#: mod/photos.php:1518
+msgid "Map"
+msgstr "Karta"
+
+#: mod/photos.php:1581
+msgid "View Album"
+msgstr "Titta i album"
+
+#: mod/ping.php:275
+msgid "{0} wants to be your friend"
+msgstr "{0} vill vara din vän"
 
-#: mod/admin.php:479 src/Core/Console/GlobalCommunityBlock.php:65
+#: mod/ping.php:292
+msgid "{0} requested registration"
+msgstr "{0} bad om registrering"
+
+#: mod/ping.php:305
 #, php-format
-msgid "Could not find any contact entry for this URL (%s)"
+msgid "{0} and %d others requested registration"
+msgstr "{0} och %d andra bad om registrering"
+
+#: mod/redir.php:49 mod/redir.php:102
+msgid "Bad Request."
+msgstr "Dålig begäran."
+
+#: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:70
+#: src/Module/Contact/Advanced.php:109 src/Module/Contact/Contacts.php:55
+#: src/Module/Contact/Conversations.php:78
+#: src/Module/Contact/Conversations.php:83
+#: src/Module/Contact/Conversations.php:88 src/Module/Contact/Media.php:43
+#: src/Module/Contact/Posts.php:72 src/Module/Contact/Posts.php:77
+#: src/Module/Contact/Posts.php:82 src/Module/Contact/Profile.php:141
+#: src/Module/Contact/Profile.php:146 src/Module/Contact/Profile.php:151
+#: src/Module/FriendSuggest.php:70 src/Module/FriendSuggest.php:108
+#: src/Module/Group.php:99 src/Module/Group.php:108
+msgid "Contact not found."
+msgstr "Kontakten hittades inte."
+
+#: mod/removeme.php:63 src/Navigation/Notifications/Repository/Notify.php:473
+msgid "[Friendica System Notify]"
+msgstr "[System-avisering för Friendica]"
+
+#: mod/removeme.php:63
+msgid "User deleted their account"
+msgstr "Användaren tog bort sitt konto"
+
+#: mod/removeme.php:64
+msgid ""
+"On your Friendica node an user deleted their account. Please ensure that "
+"their data is removed from the backups."
 msgstr ""
 
-#: mod/admin.php:486
+#: mod/removeme.php:65
 #, php-format
-msgid "%s contact unblocked"
-msgid_plural "%s contacts unblocked"
-msgstr[0] ""
-msgstr[1] ""
+msgid "The user id is %d"
+msgstr "ID för användaren är %d"
 
-#: mod/admin.php:515
-msgid "Remote Contact Blocklist"
-msgstr ""
+#: mod/removeme.php:99 mod/removeme.php:102
+msgid "Remove My Account"
+msgstr "Ta bort mitt konto"
 
-#: mod/admin.php:516
+#: mod/removeme.php:100
 msgid ""
-"This page allows you to prevent any message from a remote contact to reach "
-"your node."
-msgstr ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr "Detta kommer att ta bort kontot helt och hållet. Efter att det är gjort går det inte att återställa."
 
-#: mod/admin.php:517
-msgid "Block Remote Contact"
-msgstr ""
+#: mod/removeme.php:101
+msgid "Please enter your password for verification:"
+msgstr "Ange lösenordet igen för säkerhets skull:"
 
-#: mod/admin.php:518 mod/admin.php:2064
-msgid "select all"
+#: mod/repair_ostatus.php:36
+msgid "Resubscribing to OStatus contacts"
 msgstr ""
 
-#: mod/admin.php:519
-msgid "select none"
-msgstr ""
+#: mod/repair_ostatus.php:46 src/Module/Debug/ActivityPubConversion.php:130
+#: src/Module/Debug/Babel.php:293 src/Module/Security/TwoFactor/Verify.php:97
+msgid "Error"
+msgid_plural "Errors"
+msgstr[0] "Fel"
+msgstr[1] "Fel"
 
-#: mod/admin.php:520 mod/admin.php:2073 src/Module/Contact.php:621
-#: src/Module/Contact.php:824 src/Module/Contact.php:1077
-msgid "Block"
+#: mod/settings.php:128
+msgid "Failed to connect with email account using the settings provided."
 msgstr ""
 
-#: mod/admin.php:521 mod/admin.php:2075 src/Module/Contact.php:621
-#: src/Module/Contact.php:824 src/Module/Contact.php:1077
-msgid "Unblock"
+#: mod/settings.php:158
+msgid "Contact CSV file upload error"
 msgstr ""
 
-#: mod/admin.php:522
-msgid "No remote contact is blocked from this node."
+#: mod/settings.php:177
+msgid "Importing Contacts done"
 msgstr ""
 
-#: mod/admin.php:524
-msgid "Blocked Remote Contacts"
+#: mod/settings.php:190
+msgid "Relocate message has been send to your contacts"
 msgstr ""
 
-#: mod/admin.php:525
-msgid "Block New Remote Contact"
-msgstr ""
+#: mod/settings.php:202
+msgid "Passwords do not match."
+msgstr "Lösenorden matchar inte."
 
-#: mod/admin.php:526
-msgid "Photo"
-msgstr ""
+#: mod/settings.php:210 src/Console/User.php:210
+msgid "Password update failed. Please try again."
+msgstr "Det blev fel när lösenordet skulle ändras. Försök igen."
 
-#: mod/admin.php:526 mod/admin.php:2056 mod/admin.php:2067 mod/admin.php:2081
-#: mod/admin.php:2097 mod/crepair.php:159 mod/settings.php:667
-#: mod/settings.php:693
-msgid "Name"
-msgstr "Namn"
+#: mod/settings.php:213 src/Console/User.php:213
+msgid "Password changed."
+msgstr "Lösenordet har ändrats."
 
-#: mod/admin.php:526 mod/profiles.php:382
-msgid "Address"
-msgstr ""
+#: mod/settings.php:216
+msgid "Password unchanged."
+msgstr "Lösenordet oändrat."
 
-#: mod/admin.php:526 mod/admin.php:536 mod/follow.php:166
-#: mod/notifications.php:179 mod/notifications.php:263 mod/unfollow.php:137
-#: src/Module/Contact.php:639
-msgid "Profile URL"
-msgstr ""
+#: mod/settings.php:304
+msgid "Please use a shorter name."
+msgstr "Vänligen ange ett kortare namn."
 
-#: mod/admin.php:534
-#, php-format
-msgid "%s total blocked contact"
-msgid_plural "%s total blocked contacts"
-msgstr[0] ""
-msgstr[1] ""
+#: mod/settings.php:307
+msgid "Name too short."
+msgstr "Namnet för kort."
 
-#: mod/admin.php:536
-msgid "URL of the remote contact to block."
-msgstr ""
+#: mod/settings.php:316
+msgid "Wrong Password."
+msgstr "Fel lösenord."
 
-#: mod/admin.php:559
-msgid "Delete this Item"
-msgstr ""
+#: mod/settings.php:321
+msgid "Invalid email."
+msgstr "Ogiltig e-postadress."
 
-#: mod/admin.php:560
-msgid ""
-"On this page you can delete an item from your node. If the item is a top "
-"level posting, the entire thread will be deleted."
-msgstr ""
+#: mod/settings.php:327
+msgid "Cannot change to that email."
+msgstr "Kan inte byta till den e-postadressen."
 
-#: mod/admin.php:561
-msgid ""
-"You need to know the GUID of the item. You can find it e.g. by looking at "
-"the display URL. The last part of http://example.com/display/123456 is the "
-"GUID, here 123456."
+#: mod/settings.php:368
+msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr ""
 
-#: mod/admin.php:562
-msgid "GUID"
+#: mod/settings.php:371
+msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr ""
 
-#: mod/admin.php:562
-msgid "The GUID of the item you want to delete."
-msgstr ""
+#: mod/settings.php:390
+msgid "Settings were not updated."
+msgstr "Inställningarna uppdaterades inte."
 
-#: mod/admin.php:597
-msgid "Item marked for deletion."
-msgstr ""
+#: mod/settings.php:431
+msgid "Connected Apps"
+msgstr "Anslutna appar"
+
+#: mod/settings.php:432 src/Module/Admin/Blocklist/Contact.php:106
+#: src/Module/Admin/Users/Active.php:129
+#: src/Module/Admin/Users/Blocked.php:130 src/Module/Admin/Users/Create.php:71
+#: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
+#: src/Module/Admin/Users/Index.php:162 src/Module/Admin/Users/Pending.php:104
+#: src/Module/Contact/Advanced.php:134
+msgid "Name"
+msgstr "Namn"
 
-#: mod/admin.php:669
-msgid "unknown"
-msgstr ""
+#: mod/settings.php:433 src/Content/Nav.php:212
+msgid "Home Page"
+msgstr "Hemsida"
 
-#: mod/admin.php:772
-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."
+#: mod/settings.php:434 src/Module/Admin/Queue.php:78
+msgid "Created"
+msgstr "Skapades"
+
+#: mod/settings.php:435
+msgid "Remove authorization"
+msgstr "Ta bort autentisering"
+
+#: mod/settings.php:461 mod/settings.php:493 mod/settings.php:524
+#: mod/settings.php:598 mod/settings.php:735
+#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
+#: src/Module/Admin/Logs/Settings.php:81 src/Module/Admin/Site.php:501
+#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:83
+#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:193
+msgid "Save Settings"
+msgstr "Spara inställningar"
+
+#: mod/settings.php:469
+msgid "Addon Settings"
 msgstr ""
 
-#: mod/admin.php:773
-msgid ""
-"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
-"will improve the data displayed here."
+#: mod/settings.php:470
+msgid "No Addon settings configured"
 msgstr ""
 
-#: mod/admin.php:785
+#: mod/settings.php:491
+msgid "Additional Features"
+msgstr "Ytterligare funktioner"
+
+#: mod/settings.php:529
+msgid "Diaspora (Socialhome, Hubzilla)"
+msgstr "Diaspora (Socialhome, Hubzilla)"
+
+#: mod/settings.php:529 mod/settings.php:530
+msgid "enabled"
+msgstr "aktiverad"
+
+#: mod/settings.php:529 mod/settings.php:530
+msgid "disabled"
+msgstr "inaktiverad"
+
+#: mod/settings.php:529 mod/settings.php:530
 #, php-format
-msgid ""
-"Currently this node is aware of %d nodes with %d registered users from the "
-"following platforms:"
+msgid "Built-in support for %s connectivity is %s"
 msgstr ""
 
-#: mod/admin.php:825 mod/admin.php:878
-msgid "ID"
-msgstr ""
+#: mod/settings.php:530
+msgid "OStatus (GNU Social)"
+msgstr "OStatus (GNU Social)"
 
-#: mod/admin.php:826
-msgid "Recipient Name"
-msgstr ""
+#: mod/settings.php:556
+msgid "Email access is disabled on this site."
+msgstr "E-poståtkomst är inaktiverat på den här sidan."
 
-#: mod/admin.php:827
-msgid "Recipient Profile"
-msgstr ""
+#: mod/settings.php:561 mod/settings.php:596
+msgid "None"
+msgstr "Ingen"
 
-#: mod/admin.php:828 src/Content/Nav.php:239
-#: src/Core/NotificationsManager.php:182 view/theme/frio/theme.php:269
-msgid "Network"
-msgstr "Nätverk"
+#: mod/settings.php:567 src/Module/BaseSettings.php:78
+msgid "Social Networks"
+msgstr "Sociala nätverk"
 
-#: mod/admin.php:829 mod/admin.php:880
-msgid "Created"
-msgstr ""
+#: mod/settings.php:572
+msgid "General Social Media Settings"
+msgstr "Generella inställningar för sociala medier"
 
-#: mod/admin.php:830
-msgid "Last Tried"
+#: mod/settings.php:573
+msgid "Accept only top level posts by contacts you follow"
 msgstr ""
 
-#: mod/admin.php:831
+#: mod/settings.php:573
 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."
+"The system does an auto completion of threads when a comment arrives. This "
+"has got the side effect that you can receive posts that had been started by "
+"a non-follower but had been commented by someone you follow. This setting "
+"deactivates this behaviour. When activated, you strictly only will receive "
+"posts from people you really do follow."
 msgstr ""
 
-#: mod/admin.php:854
-msgid "Inspect Deferred Worker Queue"
-msgstr ""
+#: mod/settings.php:574
+msgid "Enable Content Warning"
+msgstr "Aktivera innehållsvarning"
 
-#: mod/admin.php:855
+#: mod/settings.php:574
 msgid ""
-"This page lists the deferred worker jobs. This are jobs that couldn't be "
-"executed at the first time."
+"Users on networks like Mastodon or Pleroma are able to set a content warning"
+" field which collapse their post by default. This enables the automatic "
+"collapsing instead of setting the content warning as the post title. Doesn't"
+" affect any other content filtering you eventually set up."
 msgstr ""
 
-#: mod/admin.php:858
-msgid "Inspect Worker Queue"
-msgstr ""
+#: mod/settings.php:575
+msgid "Enable intelligent shortening"
+msgstr "Aktivera intelligent förkortning"
 
-#: mod/admin.php:859
+#: mod/settings.php:575
 msgid ""
-"This page lists the currently queued worker jobs. These jobs are handled by "
-"the worker cronjob you've set up during install."
+"Normally the system tries to find the best link to add to shortened posts. "
+"If disabled, every shortened post will always point to the original "
+"friendica post."
 msgstr ""
 
-#: mod/admin.php:879
-msgid "Job Parameters"
+#: mod/settings.php:576
+msgid "Enable simple text shortening"
 msgstr ""
 
-#: mod/admin.php:881
-msgid "Priority"
+#: mod/settings.php:576
+msgid ""
+"Normally the system shortens posts at the next line feed. If this option is "
+"enabled then the system will shorten the text at the maximum character "
+"limit."
 msgstr ""
 
-#: mod/admin.php:907
-#, 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 <a href=\"%s\">here</a> for a guide that may be helpful "
-"converting the table engines. You may also use the command <tt>php "
-"bin/console.php dbstructure toinnodb</tt> of your Friendica installation for"
-" an automatic conversion.<br />"
+#: mod/settings.php:577
+msgid "Attach the link title"
 msgstr ""
 
-#: mod/admin.php:914
-#, php-format
+#: mod/settings.php:577
 msgid ""
-"There is a new version of Friendica available for download. Your current "
-"version is %1$s, upstream version is %2$s"
+"When activated, the title of the attached link will be added as a title on "
+"posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that"
+" share feed content."
+msgstr ""
+
+#: mod/settings.php:578
+msgid "Your legacy ActivityPub/GNU Social account"
 msgstr ""
 
-#: mod/admin.php:924
+#: mod/settings.php:578
 msgid ""
-"The database update failed. Please run \"php bin/console.php dbstructure "
-"update\" from the command line and have a look at the errors that might "
-"appear."
+"If you enter your old account name from an ActivityPub based system or your "
+"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/admin.php:930
-msgid "The worker was never executed. Please check your database structure!"
+#: mod/settings.php:581
+msgid "Repair OStatus subscriptions"
+msgstr "Reparera OStatus-prenumerationer"
+
+#: mod/settings.php:585
+msgid "Email/Mailbox Setup"
 msgstr ""
 
-#: mod/admin.php:933
-#, php-format
+#: mod/settings.php:586
 msgid ""
-"The last worker execution was on %s UTC. This is older than one hour. Please"
-" check your crontab settings."
+"If you wish to communicate with email contacts using this service "
+"(optional), please specify how to connect to your mailbox."
 msgstr ""
 
-#: mod/admin.php:939
-#, php-format
-msgid ""
-"Friendica's configuration now is stored in config/local.config.php, please "
-"copy config/local-sample.config.php and move your config from "
-"<code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for "
-"help with the transition."
+#: mod/settings.php:587
+msgid "Last successful email check:"
 msgstr ""
 
-#: mod/admin.php:943
-#, php-format
-msgid ""
-"Friendica's configuration now is stored in config/local.config.php, please "
-"copy config/local-sample.config.php and move your config from "
-"<code>config/local.ini.php</code>. See <a href=\"%s\">the Config help "
-"page</a> for help with the transition."
-msgstr ""
-
-#: mod/admin.php:950
-#, php-format
-msgid ""
-"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
-"configuration issue that prevents server to server communication. See <a "
-"href=\"%s\">the installation page</a> for help."
-msgstr ""
+#: mod/settings.php:589
+msgid "IMAP server name:"
+msgstr "Namn på IMAP-server:"
 
-#: mod/admin.php:956
-msgid "Normal Account"
-msgstr "Vanligt konto"
+#: mod/settings.php:590
+msgid "IMAP port:"
+msgstr "Port för IMAP:"
 
-#: mod/admin.php:957
-msgid "Automatic Follower Account"
-msgstr ""
+#: mod/settings.php:591
+msgid "Security:"
+msgstr "Säkerhet:"
 
-#: mod/admin.php:958
-msgid "Public Forum Account"
-msgstr ""
+#: mod/settings.php:592
+msgid "Email login name:"
+msgstr "Inloggningsnamn för e-post:"
 
-#: mod/admin.php:959
-msgid "Automatic Friend Account"
-msgstr "Konto med automatiskt godkännande av vänner."
+#: mod/settings.php:593
+msgid "Email password:"
+msgstr "Lösenord för e-post:"
 
-#: mod/admin.php:960
-msgid "Blog Account"
-msgstr ""
+#: mod/settings.php:594
+msgid "Reply-to address:"
+msgstr "Svara till-adress:"
 
-#: mod/admin.php:961
-msgid "Private Forum Account"
-msgstr ""
+#: mod/settings.php:595
+msgid "Send public posts to all email contacts:"
+msgstr "Skicka publika inlägg till alla e-postkontakter:"
 
-#: mod/admin.php:984
-msgid "Message queues"
-msgstr ""
+#: mod/settings.php:596
+msgid "Action after import:"
+msgstr "Åtgärd efter importering:"
 
-#: mod/admin.php:990
-msgid "Server Settings"
-msgstr ""
+#: mod/settings.php:596 src/Content/Nav.php:280
+msgid "Mark as seen"
+msgstr "Markera som läst"
 
-#: mod/admin.php:999
-msgid "Summary"
-msgstr ""
+#: mod/settings.php:596
+msgid "Move to folder"
+msgstr "Flytta till mapp"
 
-#: mod/admin.php:1001
-msgid "Registered users"
-msgstr ""
+#: mod/settings.php:597
+msgid "Move to folder:"
+msgstr "Flytta till mapp:"
 
-#: mod/admin.php:1003
-msgid "Pending registrations"
-msgstr ""
+#: mod/settings.php:611
+msgid "Unable to find your profile. Please contact your admin."
+msgstr "Kunde inte hitta din profil. Vänligen kontakta din admin."
 
-#: mod/admin.php:1004
-msgid "Version"
-msgstr ""
+#: mod/settings.php:649 src/Content/Widget.php:526
+msgid "Account Types"
+msgstr "Typer av konton"
 
-#: mod/admin.php:1009
-msgid "Active addons"
+#: mod/settings.php:650
+msgid "Personal Page Subtypes"
 msgstr ""
 
-#: mod/admin.php:1042
-msgid "Can not parse base url. Must have at least <scheme>://<domain>"
+#: mod/settings.php:651
+msgid "Community Forum Subtypes"
 msgstr ""
 
-#: mod/admin.php:1415
-msgid "Site settings updated."
-msgstr ""
+#: mod/settings.php:658 src/Module/Admin/BaseUsers.php:107
+msgid "Personal Page"
+msgstr "Personlig sida"
 
-#: mod/admin.php:1444 mod/settings.php:893
-msgid "No special theme for mobile devices"
-msgstr ""
+#: mod/settings.php:659
+msgid "Account for a personal profile."
+msgstr "Konto för personlig profil."
 
-#: mod/admin.php:1473
-msgid "No community page for local users"
-msgstr ""
+#: mod/settings.php:662 src/Module/Admin/BaseUsers.php:108
+msgid "Organisation Page"
+msgstr "Sida för organisation"
 
-#: mod/admin.php:1474
-msgid "No community page"
+#: mod/settings.php:663
+msgid ""
+"Account for an organisation that automatically approves contact requests as "
+"\"Followers\"."
 msgstr ""
 
-#: mod/admin.php:1475
-msgid "Public postings from users of this site"
+#: mod/settings.php:666 src/Module/Admin/BaseUsers.php:109
+msgid "News Page"
 msgstr ""
 
-#: mod/admin.php:1476
-msgid "Public postings from the federated network"
+#: mod/settings.php:667
+msgid ""
+"Account for a news reflector that automatically approves contact requests as"
+" \"Followers\"."
 msgstr ""
 
-#: mod/admin.php:1477
-msgid "Public postings from local users and the federated network"
+#: mod/settings.php:670 src/Module/Admin/BaseUsers.php:110
+msgid "Community Forum"
 msgstr ""
 
-#: mod/admin.php:1481 mod/admin.php:1682 mod/admin.php:1692
-#: src/Module/Contact.php:546
-msgid "Disabled"
+#: mod/settings.php:671
+msgid "Account for community discussions."
 msgstr ""
 
-#: mod/admin.php:1483
-msgid "Users, Global Contacts"
-msgstr ""
+#: mod/settings.php:674 src/Module/Admin/BaseUsers.php:100
+msgid "Normal Account Page"
+msgstr "Normal konto-sida"
 
-#: mod/admin.php:1484
-msgid "Users, Global Contacts/fallback"
+#: mod/settings.php:675
+msgid ""
+"Account for a regular personal profile that requires manual approval of "
+"\"Friends\" and \"Followers\"."
 msgstr ""
 
-#: mod/admin.php:1488
-msgid "One month"
+#: mod/settings.php:678 src/Module/Admin/BaseUsers.php:101
+msgid "Soapbox Page"
 msgstr ""
 
-#: mod/admin.php:1489
-msgid "Three months"
+#: mod/settings.php:679
+msgid ""
+"Account for a public profile that automatically approves contact requests as"
+" \"Followers\"."
 msgstr ""
 
-#: mod/admin.php:1490
-msgid "Half a year"
-msgstr ""
+#: mod/settings.php:682 src/Module/Admin/BaseUsers.php:102
+msgid "Public Forum"
+msgstr "Publikt forum"
 
-#: mod/admin.php:1491
-msgid "One year"
-msgstr ""
+#: mod/settings.php:683
+msgid "Automatically approves all contact requests."
+msgstr "Godkänner automatiskt alla kontaktförfrågningar."
 
-#: mod/admin.php:1496
-msgid "Multi user instance"
+#: mod/settings.php:686 src/Module/Admin/BaseUsers.php:103
+msgid "Automatic Friend Page"
 msgstr ""
 
-#: mod/admin.php:1520
-msgid "Closed"
+#: mod/settings.php:687
+msgid ""
+"Account for a popular profile that automatically approves contact requests "
+"as \"Friends\"."
 msgstr ""
 
-#: mod/admin.php:1521
-msgid "Requires approval"
-msgstr ""
+#: mod/settings.php:690
+msgid "Private Forum [Experimental]"
+msgstr "Privat forum [Experimentiell]"
 
-#: mod/admin.php:1522
-msgid "Open"
+#: mod/settings.php:691
+msgid "Requires manual approval of contact requests."
 msgstr ""
 
-#: mod/admin.php:1526
-msgid "No SSL policy, links will track page SSL state"
-msgstr ""
+#: mod/settings.php:702
+msgid "OpenID:"
+msgstr "OpenID:"
 
-#: mod/admin.php:1527
-msgid "Force all links to use SSL"
-msgstr ""
+#: mod/settings.php:702
+msgid "(Optional) Allow this OpenID to login to this account."
+msgstr "(Valfritt) Tillåt detta OpenID för att logga in till det här kontot."
 
-#: mod/admin.php:1528
-msgid "Self-signed certificate, use SSL for local links only (discouraged)"
+#: mod/settings.php:710
+msgid "Publish your profile in your local site directory?"
 msgstr ""
 
-#: mod/admin.php:1532
-msgid "Don't check"
+#: mod/settings.php:710
+#, php-format
+msgid ""
+"Your profile will be published in this node's <a href=\"%s\">local "
+"directory</a>. Your profile details may be publicly visible depending on the"
+" system settings."
 msgstr ""
 
-#: mod/admin.php:1533
-msgid "check the stable version"
+#: mod/settings.php:716
+#, php-format
+msgid ""
+"Your profile will also be published in the global friendica directories "
+"(e.g. <a href=\"%s\">%s</a>)."
 msgstr ""
 
-#: mod/admin.php:1534
-msgid "check the development version"
+#: mod/settings.php:722
+#, php-format
+msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
 msgstr ""
 
-#: mod/admin.php:1556
-msgid "Database (legacy)"
-msgstr ""
+#: mod/settings.php:733
+msgid "Account Settings"
+msgstr "Kontoinställningar"
 
-#: mod/admin.php:1583
-msgid "Republish users to directory"
-msgstr ""
+#: mod/settings.php:741
+msgid "Password Settings"
+msgstr "Lösenordsinställningar"
 
-#: mod/admin.php:1584 src/Module/Register.php:121
-msgid "Registration"
-msgstr "Registrering"
+#: mod/settings.php:742 src/Module/Register.php:162
+msgid "New Password:"
+msgstr "Nytt lösenord"
 
-#: mod/admin.php:1585
-msgid "File upload"
+#: mod/settings.php:742
+msgid ""
+"Allowed characters are a-z, A-Z, 0-9 and special characters except white "
+"spaces, accentuated letters and colon (:)."
 msgstr ""
 
-#: mod/admin.php:1586
-msgid "Policies"
-msgstr ""
+#: mod/settings.php:743 src/Module/Register.php:163
+msgid "Confirm:"
+msgstr "Bekräfta (repetera):"
 
-#: mod/admin.php:1587 mod/events.php:555 src/Model/Profile.php:878
-#: src/Module/Contact.php:902
-msgid "Advanced"
-msgstr ""
+#: mod/settings.php:743
+msgid "Leave password fields blank unless changing"
+msgstr "Lämna fältet tomt om du inte vill byta lösenord"
 
-#: mod/admin.php:1588
-msgid "Auto Discovered Contact Directory"
-msgstr ""
+#: mod/settings.php:744
+msgid "Current Password:"
+msgstr "Nuvarande lösenord:"
 
-#: mod/admin.php:1589
-msgid "Performance"
-msgstr ""
+#: mod/settings.php:744
+msgid "Your current password to confirm the changes"
+msgstr "Ditt nuvarande lösenord för att bekräfta ändringar"
 
-#: mod/admin.php:1590
-msgid "Worker"
-msgstr ""
+#: mod/settings.php:745
+msgid "Password:"
+msgstr "Lösenord:"
 
-#: mod/admin.php:1591
-msgid "Message Relay"
+#: mod/settings.php:745
+msgid "Your current password to confirm the changes of the email address"
 msgstr ""
 
-#: mod/admin.php:1592
-msgid "Relocate Instance"
+#: mod/settings.php:748
+msgid "Delete OpenID URL"
 msgstr ""
 
-#: mod/admin.php:1593
-msgid "Warning! Advanced function. Could make this server unreachable."
-msgstr ""
+#: mod/settings.php:750
+msgid "Basic Settings"
+msgstr "Grundläggande inställningar"
 
-#: mod/admin.php:1597
-msgid "Site name"
-msgstr ""
+#: mod/settings.php:751 src/Module/Profile/Profile.php:144
+msgid "Full Name:"
+msgstr "Fullständigt namn:"
 
-#: mod/admin.php:1598
-msgid "Host name"
-msgstr ""
+#: mod/settings.php:752
+msgid "Email Address:"
+msgstr "E-postadress:"
 
-#: mod/admin.php:1599
-msgid "Sender Email"
-msgstr ""
+#: mod/settings.php:753
+msgid "Your Timezone:"
+msgstr "Tidszon:"
+
+#: mod/settings.php:754
+msgid "Your Language:"
+msgstr "Ditt språk:"
 
-#: mod/admin.php:1599
+#: mod/settings.php:754
 msgid ""
-"The email address your server shall use to send notification emails from."
+"Set the language we use to show you friendica interface and to send you "
+"emails"
 msgstr ""
 
-#: mod/admin.php:1600
-msgid "Banner/Logo"
-msgstr ""
+#: mod/settings.php:755
+msgid "Default Post Location:"
+msgstr "Default Post Location:"
 
-#: mod/admin.php:1601
-msgid "Shortcut icon"
-msgstr ""
+#: mod/settings.php:756
+msgid "Use Browser Location:"
+msgstr "Använd webbläsarens positionering:"
 
-#: mod/admin.php:1601
-msgid "Link to an icon that will be used for browsers."
-msgstr ""
+#: mod/settings.php:758
+msgid "Security and Privacy Settings"
+msgstr "Inställningar för säkerhet och sekretess"
 
-#: mod/admin.php:1602
-msgid "Touch icon"
-msgstr ""
+#: mod/settings.php:760
+msgid "Maximum Friend Requests/Day:"
+msgstr "Maximalt antal kontaktförfrågningar per dygn:"
 
-#: mod/admin.php:1602
-msgid "Link to an icon that will be used for tablets and mobiles."
-msgstr ""
+#: mod/settings.php:760 mod/settings.php:770
+msgid "(to prevent spam abuse)"
+msgstr "(för att motverka spam)"
 
-#: mod/admin.php:1603
-msgid "Additional Info"
-msgstr ""
+#: mod/settings.php:762
+msgid "Allow your profile to be searchable globally?"
+msgstr "Tillåta att din profil ska vara sökbar globalt?"
 
-#: mod/admin.php:1603
-#, php-format
+#: mod/settings.php:762
 msgid ""
-"For public servers: you can add additional information here that will be "
-"listed at %s/servers."
+"Activate this setting if you want others to easily find and follow you. Your"
+" profile will be searchable on remote systems. This setting also determines "
+"whether Friendica will inform search engines that your profile should be "
+"indexed or not."
 msgstr ""
 
-#: mod/admin.php:1604
-msgid "System language"
+#: mod/settings.php:763
+msgid "Hide your contact/friend list from viewers of your profile?"
 msgstr ""
 
-#: mod/admin.php:1605
-msgid "System theme"
+#: mod/settings.php:763
+msgid ""
+"A list of your contacts is displayed on your profile page. Activate this "
+"option to disable the display of your contact list."
 msgstr ""
 
-#: mod/admin.php:1605
+#: mod/settings.php:764
+msgid "Hide your profile details from anonymous viewers?"
+msgstr "Göm dina profildetaljer från anonyma tittare?"
+
+#: mod/settings.php:764
 msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
+"Anonymous visitors will only see your profile picture, your display name and"
+" the nickname you are using on your profile page. Your public posts and "
+"replies will still be accessible by other means."
 msgstr ""
 
-#: mod/admin.php:1606
-msgid "Mobile system theme"
+#: mod/settings.php:765
+msgid "Make public posts unlisted"
 msgstr ""
 
-#: mod/admin.php:1606
-msgid "Theme for mobile devices"
+#: mod/settings.php:765
+msgid ""
+"Your public posts will not appear on the community pages or in search "
+"results, nor be sent to relay servers. However they can still appear on "
+"public feeds on remote servers."
 msgstr ""
 
-#: mod/admin.php:1607
-msgid "SSL link policy"
+#: mod/settings.php:766
+msgid "Make all posted pictures accessible"
 msgstr ""
 
-#: mod/admin.php:1607
-msgid "Determines whether generated links should be forced to use SSL"
+#: mod/settings.php:766
+msgid ""
+"This option makes every posted picture accessible via the direct link. This "
+"is a workaround for the problem that most other networks can't handle "
+"permissions on pictures. Non public pictures still won't be visible for the "
+"public on your photo albums though."
 msgstr ""
 
-#: mod/admin.php:1608
-msgid "Force SSL"
-msgstr ""
+#: mod/settings.php:767
+msgid "Allow friends to post to your profile page?"
+msgstr "Tillåta vänner att göra inlägg på din profilsida?"
 
-#: mod/admin.php:1608
+#: mod/settings.php:767
 msgid ""
-"Force all Non-SSL requests to SSL - Attention: on some systems it could lead"
-" to endless loops."
+"Your contacts may write posts on your profile wall. These posts will be "
+"distributed to your contacts"
 msgstr ""
 
-#: mod/admin.php:1609
-msgid "Hide help entry from navigation menu"
-msgstr ""
+#: mod/settings.php:768
+msgid "Allow friends to tag your posts?"
+msgstr "Tillåt vänner att tagga dina inlägg?"
+
+#: mod/settings.php:768
+msgid "Your contacts can add additional tags to your posts."
+msgstr "Dina kontakter kan lägga till ytterligare taggar till dina inlägg."
 
-#: mod/admin.php:1609
+#: mod/settings.php:769
+msgid "Permit unknown people to send you private mail?"
+msgstr "Ge okända personer tillstånd att skicka privata mail till dig?"
+
+#: mod/settings.php:769
 msgid ""
-"Hides the menu entry for the Help pages from the navigation menu. You can "
-"still access it calling /help directly."
+"Friendica network users may send you private messages even if they are not "
+"in your contact list."
 msgstr ""
 
-#: mod/admin.php:1610
-msgid "Single user instance"
+#: mod/settings.php:770
+msgid "Maximum private messages per day from unknown people:"
 msgstr ""
 
-#: mod/admin.php:1610
-msgid "Make this instance multi-user or single-user for the named user"
+#: mod/settings.php:772
+msgid "Default Post Permissions"
+msgstr "Standardåtkomst för inlägg"
+
+#: mod/settings.php:776
+msgid "Expiration settings"
 msgstr ""
 
-#: mod/admin.php:1612
-msgid "File storage backend"
+#: mod/settings.php:777
+msgid "Automatically expire posts after this many days:"
 msgstr ""
 
-#: mod/admin.php:1612
-msgid ""
-"The backend used to store uploaded data. If you change the storage backend, "
-"you can manually move the existing files. If you do not do so, the files "
-"uploaded before the change will still be available at the old backend. "
-"Please see <a href=\"/help/Settings#1_2_3_1\">the settings documentation</a>"
-" for more information about the choices and the moving procedure."
+#: mod/settings.php:777
+msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr ""
 
-#: mod/admin.php:1614
-msgid "Maximum image size"
+#: mod/settings.php:778
+msgid "Expire posts"
 msgstr ""
 
-#: mod/admin.php:1614
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
+#: mod/settings.php:778
+msgid "When activated, posts and comments will be expired."
 msgstr ""
 
-#: mod/admin.php:1615
-msgid "Maximum image length"
+#: mod/settings.php:779
+msgid "Expire personal notes"
 msgstr ""
 
-#: mod/admin.php:1615
+#: mod/settings.php:779
 msgid ""
-"Maximum length in pixels of the longest side of uploaded images. Default is "
-"-1, which means no limits."
+"When activated, the personal notes on your profile page will be expired."
 msgstr ""
 
-#: mod/admin.php:1616
-msgid "JPEG image quality"
+#: mod/settings.php:780
+msgid "Expire starred posts"
 msgstr ""
 
-#: mod/admin.php:1616
+#: mod/settings.php:780
 msgid ""
-"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
-"100, which is full quality."
+"Starring posts keeps them from being expired. That behaviour is overwritten "
+"by this setting."
 msgstr ""
 
-#: mod/admin.php:1618
-msgid "Register policy"
+#: mod/settings.php:781
+msgid "Expire photos"
 msgstr ""
 
-#: mod/admin.php:1619
-msgid "Maximum Daily Registrations"
+#: mod/settings.php:781
+msgid "When activated, photos will be expired."
 msgstr ""
 
-#: mod/admin.php:1619
-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/settings.php:782
+msgid "Only expire posts by others"
 msgstr ""
 
-#: mod/admin.php:1620
-msgid "Register text"
+#: mod/settings.php:782
+msgid ""
+"When activated, your own posts never expire. Then the settings above are "
+"only valid for posts you received."
 msgstr ""
 
-#: mod/admin.php:1620
-msgid ""
-"Will be displayed prominently on the registration page. You can use BBCode "
-"here."
-msgstr ""
-
-#: mod/admin.php:1621
-msgid "Forbidden Nicknames"
-msgstr ""
+#: mod/settings.php:785
+msgid "Notification Settings"
+msgstr "Aviseringsinställningar"
 
-#: mod/admin.php:1621
-msgid ""
-"Comma separated list of nicknames that are forbidden from registration. "
-"Preset is a list of role names according RFC 2142."
-msgstr ""
+#: mod/settings.php:786
+msgid "Send a notification email when:"
+msgstr "Skicka ett aviseringsmail när:"
 
-#: mod/admin.php:1622
-msgid "Accounts abandoned after x days"
-msgstr ""
+#: mod/settings.php:787
+msgid "You receive an introduction"
+msgstr "En kontaktförfrågan anländer"
 
-#: mod/admin.php:1622
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr ""
+#: mod/settings.php:788
+msgid "Your introductions are confirmed"
+msgstr "Dina förfrågningar godkänns"
 
-#: mod/admin.php:1623
-msgid "Allowed friend domains"
-msgstr ""
+#: mod/settings.php:789
+msgid "Someone writes on your profile wall"
+msgstr "Någon gör inlägg på din profilsida"
 
-#: mod/admin.php:1623
-msgid ""
-"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:790
+msgid "Someone writes a followup comment"
+msgstr "Någon gör ett inlägg i samma tråd som du"
 
-#: mod/admin.php:1624
-msgid "Allowed email domains"
-msgstr ""
+#: mod/settings.php:791
+msgid "You receive a private message"
+msgstr "Du får personliga meddelanden"
 
-#: mod/admin.php:1624
-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:792
+msgid "You receive a friend suggestion"
+msgstr "Du tar emot ett vän-förslag"
 
-#: mod/admin.php:1625
-msgid "No OEmbed rich content"
-msgstr ""
+#: mod/settings.php:793
+msgid "You are tagged in a post"
+msgstr "Du är taggad i ett inlägg"
 
-#: mod/admin.php:1625
-msgid ""
-"Don't show the rich content (e.g. embedded PDF), except from the domains "
-"listed below."
+#: mod/settings.php:794
+msgid "You are poked/prodded/etc. in a post"
 msgstr ""
 
-#: mod/admin.php:1626
-msgid "Allowed OEmbed domains"
-msgstr ""
+#: mod/settings.php:796
+msgid "Create a desktop notification when:"
+msgstr "Skapa en skrivbordsavisering när:"
 
-#: mod/admin.php:1626
-msgid ""
-"Comma separated list of domains which oembed content is allowed to be "
-"displayed. Wildcards are accepted."
-msgstr ""
+#: mod/settings.php:797
+msgid "Someone liked your content"
+msgstr "Någon gillade ditt innehåll"
 
-#: mod/admin.php:1627
-msgid "Block public"
-msgstr ""
+#: mod/settings.php:798
+msgid "Someone shared your content"
+msgstr "Någon delade ditt innehåll"
 
-#: mod/admin.php:1627
-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:800
+msgid "Activate desktop notifications"
+msgstr "Aktivera skrivbordsaviseringar"
 
-#: mod/admin.php:1628
-msgid "Force publish"
+#: mod/settings.php:800
+msgid "Show desktop popup on new notifications"
 msgstr ""
 
-#: mod/admin.php:1628
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
+#: mod/settings.php:802
+msgid "Text-only notification emails"
 msgstr ""
 
-#: mod/admin.php:1628
-msgid "Enabling this may violate privacy laws like the GDPR"
+#: mod/settings.php:804
+msgid "Send text only notification emails, without the html part"
 msgstr ""
 
-#: mod/admin.php:1629
-msgid "Global directory URL"
-msgstr ""
+#: mod/settings.php:806
+msgid "Show detailled notifications"
+msgstr "Visa detaljerade aviseringar"
 
-#: mod/admin.php:1629
+#: mod/settings.php:808
 msgid ""
-"URL to the global directory. If this is not set, the global directory is "
-"completely unavailable to the application."
+"Per default, notifications are condensed to a single notification per item. "
+"When enabled every notification is displayed."
 msgstr ""
 
-#: mod/admin.php:1630
-msgid "Private posts by default for new users"
+#: mod/settings.php:810
+msgid "Show notifications of ignored contacts"
 msgstr ""
 
-#: mod/admin.php:1630
+#: mod/settings.php:812
 msgid ""
-"Set default post permissions for all new members to the default privacy "
-"group rather than public."
+"You don't see posts from ignored contacts. But you still see their comments."
+" This setting controls if you want to still receive regular notifications "
+"that are caused by ignored contacts or not."
 msgstr ""
 
-#: mod/admin.php:1631
-msgid "Don't include post content in email notifications"
+#: mod/settings.php:814
+msgid "Advanced Account/Page Type Settings"
 msgstr ""
 
-#: mod/admin.php:1631
-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/settings.php:815
+msgid "Change the behaviour of this account for special situations"
 msgstr ""
 
-#: mod/admin.php:1632
-msgid "Disallow public access to addons listed in the apps menu."
-msgstr ""
+#: mod/settings.php:818
+msgid "Import Contacts"
+msgstr "Importera kontakter"
 
-#: mod/admin.php:1632
+#: mod/settings.php:819
 msgid ""
-"Checking this box will restrict addons listed in the apps menu to members "
-"only."
+"Upload a CSV file that contains the handle of your followed accounts in the "
+"first column you exported from the old account."
 msgstr ""
 
-#: mod/admin.php:1633
-msgid "Don't embed private images in posts"
-msgstr ""
+#: mod/settings.php:820
+msgid "Upload File"
+msgstr "Ladda upp fil"
 
-#: mod/admin.php:1633
+#: mod/settings.php:822
+msgid "Relocate"
+msgstr "Omlokalisera"
+
+#: mod/settings.php:823
 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 ""
+"If you have moved this profile from another server, and some of your "
+"contacts don't receive your updates, try pushing this button."
+msgstr "Om du har flyttat den här profilen från en annan server och några av dina kontakter inte får dina uppdateringar, försök att trycka på den här knappen."
 
-#: mod/admin.php:1634
-msgid "Explicit Content"
+#: mod/settings.php:824
+msgid "Resend relocate message to contacts"
 msgstr ""
 
-#: mod/admin.php:1634
+#: mod/suggest.php:44
 msgid ""
-"Set this to announce that your node is used mostly for explicit content that"
-" might not be suited for minors. This information will be published in the "
-"node information and might be used, e.g. by the global directory, to filter "
-"your node from listings of nodes to join. Additionally a note about this "
-"will be shown at the user registration page."
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
 msgstr ""
 
-#: mod/admin.php:1635
-msgid "Allow Users to set remote_self"
-msgstr ""
+#: mod/suggest.php:55 src/Content/Widget.php:79 view/theme/vier/theme.php:175
+msgid "Friend Suggestions"
+msgstr "Vän-förslag"
 
-#: mod/admin.php:1635
-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/tagger.php:78 src/Content/Item.php:346 src/Model/Item.php:2628
+msgid "photo"
+msgstr "foto"
 
-#: mod/admin.php:1636
-msgid "Block multiple registrations"
-msgstr ""
+#: mod/tagger.php:78 src/Content/Item.php:341 src/Content/Item.php:350
+msgid "status"
+msgstr "status"
 
-#: mod/admin.php:1636
-msgid "Disallow users to register additional accounts for use as pages."
-msgstr ""
+#: mod/tagger.php:111 src/Content/Item.php:360
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s taggade %2$ss %3$s med %4$s"
 
-#: mod/admin.php:1637
-msgid "Disable OpenID"
-msgstr ""
+#: mod/tagrm.php:113
+msgid "Remove Item Tag"
+msgstr "Ta bort tagg"
 
-#: mod/admin.php:1637
-msgid "Disable OpenID support for registration and logins."
-msgstr ""
+#: mod/tagrm.php:115
+msgid "Select a tag to remove: "
+msgstr "Välj vilken tagg som ska tas bort: "
+
+#: mod/tagrm.php:126 src/Module/Settings/Delegation.php:179
+#: src/Module/Settings/TwoFactor/Trusted.php:140
+msgid "Remove"
+msgstr "Ta bort"
 
-#: mod/admin.php:1638
-msgid "No Fullname check"
+#: mod/uimport.php:46
+msgid "User imports on closed servers can only be done by an administrator."
 msgstr ""
 
-#: mod/admin.php:1638
+#: mod/uimport.php:55 src/Module/Register.php:99
 msgid ""
-"Allow users to register without a space between the first name and the last "
-"name in their full name."
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
 msgstr ""
 
-#: mod/admin.php:1639
-msgid "Community pages for visitors"
-msgstr ""
+#: mod/uimport.php:62 src/Module/Register.php:173
+msgid "Import"
+msgstr "Importera"
 
-#: mod/admin.php:1639
-msgid ""
-"Which community pages should be available for visitors. Local users always "
-"see both pages."
-msgstr ""
+#: mod/uimport.php:64
+msgid "Move account"
+msgstr "Flytta konto"
 
-#: mod/admin.php:1640
-msgid "Posts per user on community page"
-msgstr ""
+#: mod/uimport.php:65
+msgid "You can import an account from another Friendica server."
+msgstr "Du kan importera ett konto från en annan Friendica-server."
 
-#: mod/admin.php:1640
+#: mod/uimport.php:66
 msgid ""
-"The maximum number of posts per user on the community page. (Not valid for "
-"'Global Community')"
-msgstr ""
-
-#: mod/admin.php:1641
-msgid "Disable OStatus support"
+"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/admin.php:1641
+#: mod/uimport.php:67
 msgid ""
-"Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
-"communications in OStatus are public, so privacy warnings will be "
-"occasionally displayed."
+"This feature is experimental. We can't import contacts from the OStatus "
+"network (GNU Social/Statusnet) or from Diaspora"
 msgstr ""
 
-#: mod/admin.php:1642
-msgid "Only import OStatus/ActivityPub threads from our contacts"
+#: mod/uimport.php:68
+msgid "Account file"
 msgstr ""
 
-#: mod/admin.php:1642
+#: mod/uimport.php:68
 msgid ""
-"Normally we import every content from our OStatus and ActivityPub contacts. "
-"With this option we only store threads that are started by a contact that is"
-" known on our system."
-msgstr ""
+"To export your account, go to \"Settings->Export your personal data\" and "
+"select \"Export account\""
+msgstr "För att exportera ditt konto, gå till \"Inställningar->Exportera din personliga data\" och välj \"Exportera konto\""
 
-#: mod/admin.php:1643
-msgid "OStatus support can only be enabled if threading is enabled."
-msgstr ""
+#: mod/unfollow.php:65 mod/unfollow.php:135
+msgid "You aren't following this contact."
+msgstr "Du följer inte den här kontakten."
+
+#: mod/unfollow.php:71
+msgid "Unfollowing is currently not supported by your network."
+msgstr "Avföljning stöds för närvarande inte av ditt nätverk."
+
+#: mod/unfollow.php:92
+msgid "Disconnect/Unfollow"
+msgstr "Koppla ur/Avfölj"
 
-#: mod/admin.php:1645
+#: mod/unfollow.php:146
 msgid ""
-"Diaspora support can't be enabled because Friendica was installed into a sub"
-" directory."
+"Unable to unfollow this contact, please retry in a few minutes or contact "
+"your administrator."
 msgstr ""
 
-#: mod/admin.php:1646
-msgid "Enable Diaspora support"
-msgstr ""
+#: mod/unfollow.php:148
+msgid "Contact was successfully unfollowed"
+msgstr "Avföljningen av kontakten lyckades"
 
-#: mod/admin.php:1646
-msgid "Provide built-in Diaspora network compatibility."
+#: mod/unfollow.php:152
+msgid "Unable to unfollow this contact, please contact your administrator"
 msgstr ""
 
-#: mod/admin.php:1647
-msgid "Only allow Friendica contacts"
-msgstr ""
+#: mod/wall_attach.php:39 mod/wall_attach.php:46 mod/wall_attach.php:77
+#: mod/wall_upload.php:53 mod/wall_upload.php:63 mod/wall_upload.php:99
+#: mod/wall_upload.php:150 mod/wall_upload.php:153
+msgid "Invalid request."
+msgstr "Ogiltig förfrågning."
 
-#: mod/admin.php:1647
-msgid ""
-"All contacts must use Friendica protocols. All other built-in communication "
-"protocols disabled."
+#: mod/wall_attach.php:95
+msgid "Sorry, maybe your upload is bigger than the PHP configuration allows"
 msgstr ""
 
-#: mod/admin.php:1648
-msgid "Verify SSL"
-msgstr ""
+#: mod/wall_attach.php:95
+msgid "Or - did you try to upload an empty file?"
+msgstr "Eller - provade du att ladda upp en tom fil?"
 
-#: mod/admin.php:1648
-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/wall_attach.php:106
+#, php-format
+msgid "File exceeds size limit of %s"
 msgstr ""
 
-#: mod/admin.php:1649
-msgid "Proxy user"
-msgstr ""
+#: mod/wall_attach.php:121
+msgid "File upload failed."
+msgstr "Uppladdning av filen misslyckades."
 
-#: mod/admin.php:1650
-msgid "Proxy URL"
-msgstr ""
+#: mod/wall_upload.php:221 src/Model/Photo.php:1008
+msgid "Wall Photos"
+msgstr "Loggbilder"
 
-#: mod/admin.php:1651
-msgid "Network timeout"
+#: mod/wallmessage.php:62 mod/wallmessage.php:116
+#, php-format
+msgid "Number of daily wall messages for %s exceeded. Message failed."
 msgstr ""
 
-#: mod/admin.php:1651
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr ""
+#: mod/wallmessage.php:73
+msgid "Unable to check your home location."
+msgstr "Kunde inte kontrollera platsen för ditt hem."
 
-#: mod/admin.php:1652
-msgid "Maximum Load Average"
-msgstr ""
+#: mod/wallmessage.php:97 mod/wallmessage.php:104
+msgid "No recipient."
+msgstr "Ingen mottagare."
 
-#: mod/admin.php:1652
+#: mod/wallmessage.php:130
+#, php-format
 msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
+"If you wish for %s to respond, please check that the privacy settings on "
+"your site allow private mail from unknown senders."
 msgstr ""
 
-#: mod/admin.php:1653
-msgid "Maximum Load Average (Frontend)"
+#: src/App.php:463
+msgid "No system theme config value set."
 msgstr ""
 
-#: mod/admin.php:1653
-msgid "Maximum system load before the frontend quits service - default 50."
-msgstr ""
+#: src/App.php:583
+msgid "Apologies but the website is unavailable at the moment."
+msgstr "Ursäkta, men hemsidan är inte tillgänglig för tillfället. "
 
-#: mod/admin.php:1654
-msgid "Minimal Memory"
-msgstr ""
+#: src/App/Page.php:250
+msgid "Delete this item?"
+msgstr "Ta bort?"
 
-#: mod/admin.php:1654
+#: src/App/Page.php:251
 msgid ""
-"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
-"default 0 (deactivated)."
+"Block this author? They won't be able to follow you nor see your public "
+"posts, and you won't be able to see their posts and their notifications."
 msgstr ""
 
-#: mod/admin.php:1655
-msgid "Maximum table size for optimization"
-msgstr ""
+#: src/App/Page.php:321
+msgid "toggle mobile"
+msgstr "växla mobil"
 
-#: mod/admin.php:1655
-msgid ""
-"Maximum table size (in MB) for the automatic optimization. Enter -1 to "
-"disable it."
+#: src/App/Router.php:275
+#, php-format
+msgid "Method not allowed for this module. Allowed method(s): %s"
 msgstr ""
 
-#: mod/admin.php:1656
-msgid "Minimum level of fragmentation"
-msgstr ""
+#: src/App/Router.php:277 src/Module/HTTPException/PageNotFound.php:33
+msgid "Page not found."
+msgstr "Sidan hittades inte."
+
+#: src/App/Router.php:305
+msgid "You must be logged in to use addons. "
+msgstr "Du måste vara inloggad för att använda insticksprogram."
 
-#: mod/admin.php:1656
+#: src/BaseModule.php:377
 msgid ""
-"Minimum fragmenation level to start the automatic optimization - default "
-"value is 30%."
+"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 ""
 
-#: mod/admin.php:1658
-msgid "Periodical check of global contacts"
-msgstr ""
+#: src/BaseModule.php:404
+msgid "All contacts"
+msgstr "Alla kontakter"
 
-#: mod/admin.php:1658
-msgid ""
-"If enabled, the global contacts are checked periodically for missing or "
-"outdated data and the vitality of the contacts and servers."
-msgstr ""
+#: src/BaseModule.php:409 src/Content/Widget.php:231 src/Core/ACL.php:193
+#: src/Module/Contact.php:367 src/Module/PermissionTooltip.php:98
+#: src/Module/PermissionTooltip.php:120
+msgid "Followers"
+msgstr "Följare"
 
-#: mod/admin.php:1659
-msgid "Days between requery"
-msgstr ""
+#: src/BaseModule.php:414 src/Content/Widget.php:232
+#: src/Module/Contact.php:368
+msgid "Following"
+msgstr "Följer"
 
-#: mod/admin.php:1659
-msgid "Number of days after which a server is requeried for his contacts."
-msgstr ""
+#: src/BaseModule.php:419 src/Content/Widget.php:233
+#: src/Module/Contact.php:369
+msgid "Mutual friends"
+msgstr "Gemensamma vänner"
 
-#: mod/admin.php:1660
-msgid "Discover contacts from other servers"
+#: src/BaseModule.php:427
+msgid "Common"
+msgstr "Vanlig"
+
+#: src/Console/Addon.php:177 src/Console/Addon.php:202
+msgid "Addon not found"
+msgstr "Insticksprogrammet hittades inte"
+
+#: src/Console/Addon.php:181
+msgid "Addon already enabled"
+msgstr "Insticksprogrammet är redan aktiverat"
+
+#: src/Console/Addon.php:206
+msgid "Addon already disabled"
+msgstr "Insticksprogrammet är redan inaktiverat"
+
+#: src/Console/ArchiveContact.php:106
+#, php-format
+msgid "Could not find any unarchived contact entry for this URL (%s)"
 msgstr ""
 
-#: mod/admin.php:1660
-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 recommended setting is 'Users, "
-"Global Contacts'."
+#: src/Console/ArchiveContact.php:109
+msgid "The contact entries have been archived"
 msgstr ""
 
-#: mod/admin.php:1661
-msgid "Timeframe for fetching global contacts"
+#: src/Console/GlobalCommunityBlock.php:96
+#: src/Module/Admin/Blocklist/Contact.php:49
+#, php-format
+msgid "Could not find any contact entry for this URL (%s)"
 msgstr ""
 
-#: mod/admin.php:1661
-msgid ""
-"When the discovery is activated, this value defines the timeframe for the "
-"activity of the global contacts that are fetched from other servers."
+#: src/Console/GlobalCommunityBlock.php:101
+#: src/Module/Admin/Blocklist/Contact.php:66
+msgid "The contact has been blocked from the node"
 msgstr ""
 
-#: mod/admin.php:1662
-msgid "Search the local directory"
+#: src/Console/PostUpdate.php:87
+#, php-format
+msgid "Post update version number has been set to %s."
 msgstr ""
 
-#: mod/admin.php:1662
-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."
+#: src/Console/PostUpdate.php:95
+msgid "Check for pending update actions."
 msgstr ""
 
-#: mod/admin.php:1664
-msgid "Publish server information"
+#: src/Console/PostUpdate.php:97
+msgid "Done."
+msgstr "Färdig."
+
+#: src/Console/PostUpdate.php:99
+msgid "Execute pending post updates."
 msgstr ""
 
-#: mod/admin.php:1664
-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 <a"
-" href='http://the-federation.info/'>the-federation.info</a> for details."
-msgstr ""
-
-#: mod/admin.php:1666
-msgid "Check upstream version"
+#: src/Console/PostUpdate.php:105
+msgid "All pending post updates are done."
 msgstr ""
 
-#: mod/admin.php:1666
-msgid ""
-"Enables checking for new Friendica versions at github. If there is a new "
-"version, you will be informed in the admin panel overview."
-msgstr ""
+#: src/Console/User.php:158 src/Console/User.php:245
+msgid "Enter user nickname: "
+msgstr "Ange smeknamn för användaren:"
 
-#: mod/admin.php:1667
-msgid "Suppress Tags"
-msgstr ""
+#: src/Console/User.php:202
+msgid "Enter new password: "
+msgstr "Ange nytt lösenord:"
 
-#: mod/admin.php:1667
-msgid "Suppress showing a list of hashtags at the end of the posting."
-msgstr ""
+#: src/Console/User.php:237
+msgid "Enter user name: "
+msgstr "Ange användarnamn:"
 
-#: mod/admin.php:1668
-msgid "Clean database"
-msgstr ""
+#: src/Console/User.php:253
+msgid "Enter user email address: "
+msgstr "Ange användarens e-postadress:"
 
-#: mod/admin.php:1668
-msgid ""
-"Remove old remote items, orphaned database records and old content from some"
-" other helper tables."
-msgstr ""
+#: src/Console/User.php:261
+msgid "Enter a language (optional): "
+msgstr "Ange ett språk (valfritt):"
 
-#: mod/admin.php:1669
-msgid "Lifespan of remote items"
+#: src/Console/User.php:286
+msgid "User is not pending."
 msgstr ""
 
-#: mod/admin.php:1669
-msgid ""
-"When the database cleanup is enabled, this defines the days after which "
-"remote items will be deleted. Own items, and marked or filed items are "
-"always kept. 0 disables this behaviour."
-msgstr ""
+#: src/Console/User.php:318
+msgid "User has already been marked for deletion."
+msgstr "Användaren har redan blivit markerad för borttagning."
 
-#: mod/admin.php:1670
-msgid "Lifespan of unclaimed items"
-msgstr ""
+#: src/Console/User.php:323
+#, php-format
+msgid "Type \"yes\" to delete %s"
+msgstr "Skriv \"ja\" för att ta bort %s"
 
-#: mod/admin.php:1670
-msgid ""
-"When the database cleanup is enabled, this defines the days after which "
-"unclaimed remote items (mostly content from the relay) will be deleted. "
-"Default value is 90 days. Defaults to the general lifespan value of remote "
-"items if set to 0."
-msgstr ""
+#: src/Console/User.php:325
+msgid "Deletion aborted."
+msgstr "Borttagningen avbröts."
 
-#: mod/admin.php:1671
-msgid "Lifespan of raw conversation data"
-msgstr ""
+#: src/Console/User.php:450
+msgid "Enter category: "
+msgstr "Ange kategori:"
 
-#: mod/admin.php:1671
-msgid ""
-"The conversation data is used for ActivityPub and OStatus, as well as for "
-"debug purposes. It should be safe to remove it after 14 days, default is 90 "
-"days."
-msgstr ""
+#: src/Console/User.php:460
+msgid "Enter key: "
+msgstr "Ange nyckel:"
 
-#: mod/admin.php:1672
-msgid "Path to item cache"
-msgstr ""
+#: src/Console/User.php:494
+msgid "Enter value: "
+msgstr "Ange värde:"
 
-#: mod/admin.php:1672
-msgid "The item caches buffers generated bbcode and external images."
-msgstr ""
+#: src/Content/BoundariesPager.php:116 src/Content/Pager.php:171
+msgid "newer"
+msgstr "nyare"
 
-#: mod/admin.php:1673
-msgid "Cache duration in seconds"
-msgstr ""
+#: src/Content/BoundariesPager.php:124 src/Content/Pager.php:176
+msgid "older"
+msgstr "äldre"
 
-#: mod/admin.php:1673
-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 ""
+#: src/Content/ContactSelector.php:51
+msgid "Frequently"
+msgstr "Ofta"
 
-#: mod/admin.php:1674
-msgid "Maximum numbers of comments per post"
-msgstr ""
+#: src/Content/ContactSelector.php:52
+msgid "Hourly"
+msgstr "Varje timme"
 
-#: mod/admin.php:1674
-msgid "How much comments should be shown for each post? Default value is 100."
-msgstr ""
+#: src/Content/ContactSelector.php:53
+msgid "Twice daily"
+msgstr "Två gånger dagligen"
 
-#: mod/admin.php:1675
-msgid "Temp path"
-msgstr ""
+#: src/Content/ContactSelector.php:54
+msgid "Daily"
+msgstr "Dagligen"
 
-#: mod/admin.php:1675
-msgid ""
-"If you have a restricted system where the webserver can't access the system "
-"temp path, enter another path here."
-msgstr ""
+#: src/Content/ContactSelector.php:55
+msgid "Weekly"
+msgstr "Varje vecka"
 
-#: mod/admin.php:1676
-msgid "Base path to installation"
-msgstr ""
+#: src/Content/ContactSelector.php:56
+msgid "Monthly"
+msgstr "Varje månad"
 
-#: mod/admin.php:1676
-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 ""
+#: src/Content/ContactSelector.php:123
+msgid "DFRN"
+msgstr "DFRN"
 
-#: mod/admin.php:1677
-msgid "Disable picture proxy"
-msgstr ""
+#: src/Content/ContactSelector.php:124
+msgid "OStatus"
+msgstr "OStatus"
 
-#: mod/admin.php:1677
-msgid ""
-"The picture proxy increases performance and privacy. It shouldn't be used on"
-" systems with very low bandwidth."
-msgstr ""
+#: src/Content/ContactSelector.php:125
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
 
-#: mod/admin.php:1678
-msgid "Only search in tags"
-msgstr ""
+#: src/Content/ContactSelector.php:126 src/Module/Admin/Users/Active.php:129
+#: src/Module/Admin/Users/Blocked.php:130 src/Module/Admin/Users/Create.php:73
+#: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
+#: src/Module/Admin/Users/Index.php:162 src/Module/Admin/Users/Pending.php:104
+msgid "Email"
+msgstr "E-postadress"
 
-#: mod/admin.php:1678
-msgid "On large systems the text search can slow down the system extremely."
-msgstr ""
+#: src/Content/ContactSelector.php:127 src/Module/Debug/Babel.php:307
+msgid "Diaspora"
+msgstr "Diaspora"
 
-#: mod/admin.php:1680
-msgid "New base url"
-msgstr ""
+#: src/Content/ContactSelector.php:128
+msgid "Zot!"
+msgstr "Zot!"
 
-#: mod/admin.php:1680
-msgid ""
-"Change base url for this server. Sends relocate message to all Friendica and"
-" Diaspora* contacts of all users."
-msgstr ""
+#: src/Content/ContactSelector.php:129
+msgid "LinkedIn"
+msgstr "LinkedIn"
 
-#: mod/admin.php:1682
-msgid "RINO Encryption"
-msgstr ""
+#: src/Content/ContactSelector.php:130
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
 
-#: mod/admin.php:1682
-msgid "Encryption layer between nodes."
-msgstr ""
+#: src/Content/ContactSelector.php:131
+msgid "MySpace"
+msgstr "MySpace"
 
-#: mod/admin.php:1682
-msgid "Enabled"
-msgstr ""
+#: src/Content/ContactSelector.php:132
+msgid "Google+"
+msgstr "Google+"
 
-#: mod/admin.php:1684
-msgid "Maximum number of parallel workers"
-msgstr ""
+#: src/Content/ContactSelector.php:133
+msgid "pump.io"
+msgstr "pump.io"
 
-#: mod/admin.php:1684
-#, php-format
-msgid ""
-"On shared hosters set this to %d. On larger systems, values of %d are great."
-" Default value is %d."
-msgstr ""
+#: src/Content/ContactSelector.php:134
+msgid "Twitter"
+msgstr "Twitter"
 
-#: mod/admin.php:1685
-msgid "Don't use 'proc_open' with the worker"
-msgstr ""
+#: src/Content/ContactSelector.php:135
+msgid "Discourse"
+msgstr "Discourse"
 
-#: mod/admin.php:1685
-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 worker calls in your crontab."
+#: src/Content/ContactSelector.php:136
+msgid "Diaspora Connector"
 msgstr ""
 
-#: mod/admin.php:1686
-msgid "Enable fastlane"
+#: src/Content/ContactSelector.php:137
+msgid "GNU Social Connector"
 msgstr ""
 
-#: mod/admin.php:1686
-msgid ""
-"When enabed, the fastlane mechanism starts an additional worker if processes"
-" with higher priority are blocked by processes of lower priority."
-msgstr ""
+#: src/Content/ContactSelector.php:138
+msgid "ActivityPub"
+msgstr "ActivityPub"
 
-#: mod/admin.php:1687
-msgid "Enable frontend worker"
-msgstr ""
+#: src/Content/ContactSelector.php:139
+msgid "pnut"
+msgstr "pnut"
 
-#: mod/admin.php:1687
+#: src/Content/ContactSelector.php:175
 #, php-format
-msgid ""
-"When enabled the Worker process is triggered when backend access is "
-"performed \\x28e.g. messages being delivered\\x29. On smaller sites you "
-"might want to call %s/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."
-msgstr ""
-
-#: mod/admin.php:1689
-msgid "Subscribe to relay"
-msgstr ""
-
-#: mod/admin.php:1689
-msgid ""
-"Enables the receiving of public posts from the relay. They will be included "
-"in the search, subscribed tags and on the global community page."
+msgid "%s (via %s)"
 msgstr ""
 
-#: mod/admin.php:1690
-msgid "Relay server"
-msgstr ""
-
-#: mod/admin.php:1690
-msgid ""
-"Address of the relay server where public posts should be send to. For "
-"example https://relay.diasp.org"
-msgstr ""
+#: src/Content/Conversation.php:207
+#, php-format
+msgid "%s likes this."
+msgstr "%s gillar det här."
 
-#: mod/admin.php:1691
-msgid "Direct relay transfer"
-msgstr ""
+#: src/Content/Conversation.php:210
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s ogillar det här."
 
-#: mod/admin.php:1691
-msgid ""
-"Enables the direct transfer to other servers without using the relay servers"
-msgstr ""
+#: src/Content/Conversation.php:213
+#, php-format
+msgid "%s attends."
+msgstr "%s deltar."
 
-#: mod/admin.php:1692
-msgid "Relay scope"
-msgstr ""
+#: src/Content/Conversation.php:216
+#, php-format
+msgid "%s doesn't attend."
+msgstr "%s deltar inte."
 
-#: mod/admin.php:1692
-msgid ""
-"Can be 'all' or 'tags'. 'all' means that every public post should be "
-"received. 'tags' means that only posts with selected tags should be "
-"received."
-msgstr ""
+#: src/Content/Conversation.php:219
+#, php-format
+msgid "%s attends maybe."
+msgstr "%s deltar kanske."
 
-#: mod/admin.php:1692
-msgid "all"
+#: src/Content/Conversation.php:222 src/Content/Conversation.php:260
+#: src/Content/Conversation.php:849
+#, php-format
+msgid "%s reshared this."
 msgstr ""
 
-#: mod/admin.php:1692
-msgid "tags"
-msgstr ""
+#: src/Content/Conversation.php:228
+msgid "and"
+msgstr "och"
 
-#: mod/admin.php:1693
-msgid "Server tags"
-msgstr ""
+#: src/Content/Conversation.php:231
+#, php-format
+msgid "and %d other people"
+msgstr "och %d andra"
 
-#: mod/admin.php:1693
-msgid "Comma separated list of tags for the 'tags' subscription."
-msgstr ""
+#: src/Content/Conversation.php:239
+#, php-format
+msgid "<span  %1$s>%2$d people</span> like this"
+msgstr "<span  %1$s>%2$d personer</span> gillar det här"
 
-#: mod/admin.php:1694
-msgid "Allow user tags"
-msgstr ""
+#: src/Content/Conversation.php:240
+#, php-format
+msgid "%s like this."
+msgstr "%s gillar det här."
 
-#: mod/admin.php:1694
-msgid ""
-"If enabled, the tags from the saved searches will used for the 'tags' "
-"subscription in addition to the 'relay_server_tags'."
-msgstr ""
+#: src/Content/Conversation.php:243
+#, php-format
+msgid "<span  %1$s>%2$d people</span> don't like this"
+msgstr "<span  %1$s>%2$d personer</span> ogillar det här"
 
-#: mod/admin.php:1697
-msgid "Start Relocation"
-msgstr ""
+#: src/Content/Conversation.php:244
+#, php-format
+msgid "%s don't like this."
+msgstr "%s ogillar det här."
 
-#: mod/admin.php:1724
-msgid "Update has been marked successful"
-msgstr ""
+#: src/Content/Conversation.php:247
+#, php-format
+msgid "<span  %1$s>%2$d people</span> attend"
+msgstr "<span  %1$s>%2$d personer</span> deltar"
 
-#: mod/admin.php:1731
+#: src/Content/Conversation.php:248
 #, php-format
-msgid "Database structure update %s was successfully applied."
-msgstr ""
+msgid "%s attend."
+msgstr "%s deltar."
 
-#: mod/admin.php:1735
+#: src/Content/Conversation.php:251
 #, php-format
-msgid "Executing of database structure update %s failed with error: %s"
-msgstr ""
+msgid "<span  %1$s>%2$d people</span> don't attend"
+msgstr "<span  %1$s>%2$d personer</span> deltar inte"
 
-#: mod/admin.php:1751
+#: src/Content/Conversation.php:252
 #, php-format
-msgid "Executing %s failed with error: %s"
-msgstr ""
+msgid "%s don't attend."
+msgstr "%s deltar inte."
 
-#: mod/admin.php:1753
+#: src/Content/Conversation.php:255
 #, php-format
-msgid "Update %s was successfully applied."
-msgstr ""
+msgid "<span  %1$s>%2$d people</span> attend maybe"
+msgstr "<span  %1$s>%2$dpersoner</span> deltar kanske"
 
-#: mod/admin.php:1756
+#: src/Content/Conversation.php:256
 #, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr ""
+msgid "%s attend maybe."
+msgstr "%s deltar kanske."
 
-#: mod/admin.php:1759
+#: src/Content/Conversation.php:259
 #, php-format
-msgid "There was no additional update function %s that needed to be called."
+msgid "<span  %1$s>%2$d people</span> reshared this"
 msgstr ""
 
-#: mod/admin.php:1782
-msgid "No failed updates."
-msgstr ""
+#: src/Content/Conversation.php:307
+msgid "Visible to <strong>everybody</strong>"
+msgstr "Synlig för <strong>alla</strong>"
 
-#: mod/admin.php:1783
-msgid "Check database structure"
-msgstr ""
+#: src/Content/Conversation.php:308 src/Module/Item/Compose.php:159
+#: src/Object/Post.php:975
+msgid "Please enter a image/video/audio/webpage URL:"
+msgstr "Vänligen fyll i URL till en bild/video/ljudklipp/hemsida:"
 
-#: mod/admin.php:1788
-msgid "Failed Updates"
-msgstr ""
+#: src/Content/Conversation.php:309
+msgid "Tag term:"
+msgstr "Märkning/tagg:"
 
-#: mod/admin.php:1789
-msgid ""
-"This does not include updates prior to 1139, which did not return a status."
-msgstr ""
+#: src/Content/Conversation.php:310 src/Module/Filer/SaveTag.php:72
+msgid "Save to Folder:"
+msgstr "Spara till mapp:"
 
-#: mod/admin.php:1790
-msgid "Mark success (if update was manually applied)"
-msgstr ""
+#: src/Content/Conversation.php:311
+msgid "Where are you right now?"
+msgstr "Var är du just nu?"
 
-#: mod/admin.php:1791
-msgid "Attempt to execute this update step automatically"
-msgstr ""
+#: src/Content/Conversation.php:312
+msgid "Delete item(s)?"
+msgstr "Ta bort?"
 
-#: mod/admin.php:1831
-#, 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 ""
+#: src/Content/Conversation.php:322
+msgid "New Post"
+msgstr "Nytt inlägg"
+
+#: src/Content/Conversation.php:325 src/Object/Post.php:481
+msgid "Share"
+msgstr "Publicera"
 
-#: mod/admin.php:1834
+#: src/Content/Conversation.php:336 src/Module/Item/Compose.php:156
+#: src/Object/Post.php:972
+msgid "Image"
+msgstr "Bild"
+
+#: src/Content/Conversation.php:339
+msgid "Video"
+msgstr "Video"
+
+#: src/Content/Conversation.php:352 src/Module/Item/Compose.php:172
+msgid "Scheduled at"
+msgstr "Schemalades vid"
+
+#: src/Content/Conversation.php:651 src/Object/Post.php:454
+#: src/Object/Post.php:455
 #, 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\tIf you ever want to delete your account, you can do so at %1$s/removeme\n"
-"\n"
-"\t\t\tThank you and welcome to %4$s."
-msgstr ""
+msgid "View %s's profile @ %s"
+msgstr "Visa profilen som tillhör %s @ %s"
 
-#: mod/admin.php:1871 src/Model/User.php:859
+#: src/Content/Conversation.php:664 src/Object/Post.php:442
+msgid "Categories:"
+msgstr "Kategorier:"
+
+#: src/Content/Conversation.php:665 src/Object/Post.php:443
+msgid "Filed under:"
+msgstr "Sparad under:"
+
+#: src/Content/Conversation.php:673 src/Object/Post.php:468
 #, php-format
-msgid "Registration details for %s"
+msgid "%s from %s"
+msgstr "%s från %s"
+
+#: src/Content/Conversation.php:688
+msgid "View in context"
+msgstr "Visa i sitt sammanhang"
+
+#: src/Content/Conversation.php:753
+msgid "remove"
+msgstr "ta bort"
+
+#: src/Content/Conversation.php:757
+msgid "Delete Selected Items"
+msgstr "Ta bort valda föremål"
+
+#: src/Content/Conversation.php:821 src/Content/Conversation.php:824
+#: src/Content/Conversation.php:827 src/Content/Conversation.php:830
+#, php-format
+msgid "You had been addressed (%s)."
 msgstr ""
 
-#: mod/admin.php:1881
+#: src/Content/Conversation.php:833
 #, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] ""
-msgstr[1] ""
+msgid "You are following %s."
+msgstr "Du följer %s."
 
-#: mod/admin.php:1888 mod/admin.php:1942
-msgid "You can't remove yourself"
-msgstr ""
+#: src/Content/Conversation.php:836
+msgid "Tagged"
+msgstr "Taggad"
 
-#: mod/admin.php:1891
+#: src/Content/Conversation.php:851
+msgid "Reshared"
+msgstr "Delad igen"
+
+#: src/Content/Conversation.php:851
 #, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Reshared by %s <%s>"
+msgstr "Delad igen av %s <%s>"
 
-#: mod/admin.php:1940
+#: src/Content/Conversation.php:854
 #, php-format
-msgid "User '%s' deleted"
-msgstr ""
+msgid "%s is participating in this thread."
+msgstr "%s deltar i den här tråden."
+
+#: src/Content/Conversation.php:857
+msgid "Stored"
+msgstr "Lagrad"
+
+#: src/Content/Conversation.php:860
+msgid "Global"
+msgstr "Global"
 
-#: mod/admin.php:1951
+#: src/Content/Conversation.php:863
+msgid "Relayed"
+msgstr "Fördröjd"
+
+#: src/Content/Conversation.php:863
 #, php-format
-msgid "User '%s' unblocked"
-msgstr ""
+msgid "Relayed by %s <%s>"
+msgstr "Fördröjdes av %s <%s>"
 
-#: mod/admin.php:1951
+#: src/Content/Conversation.php:866
+msgid "Fetched"
+msgstr "Hämtad"
+
+#: src/Content/Conversation.php:866
 #, php-format
-msgid "User '%s' blocked"
-msgstr ""
+msgid "Fetched because of %s <%s>"
+msgstr "Hämtades på grund av %s <%s>"
 
-#: mod/admin.php:1999 mod/settings.php:1049
-msgid "Normal Account Page"
-msgstr ""
+#: src/Content/Feature.php:96
+msgid "General Features"
+msgstr "Generella funktioner"
 
-#: mod/admin.php:2000 mod/settings.php:1053
-msgid "Soapbox Page"
+#: src/Content/Feature.php:98
+msgid "Photo Location"
 msgstr ""
 
-#: mod/admin.php:2001 mod/settings.php:1057
-msgid "Public Forum"
+#: src/Content/Feature.php:98
+msgid ""
+"Photo metadata is normally stripped. This extracts the location (if present)"
+" prior to stripping metadata and links it to a map."
 msgstr ""
 
-#: mod/admin.php:2002 mod/settings.php:1061
-msgid "Automatic Friend Page"
+#: src/Content/Feature.php:99
+msgid "Trending Tags"
 msgstr ""
 
-#: mod/admin.php:2003
-msgid "Private Forum"
+#: src/Content/Feature.php:99
+msgid ""
+"Show a community page widget with a list of the most popular tags in recent "
+"public posts."
 msgstr ""
 
-#: mod/admin.php:2006 mod/settings.php:1033
-msgid "Personal Page"
+#: src/Content/Feature.php:104
+msgid "Post Composition Features"
 msgstr ""
 
-#: mod/admin.php:2007 mod/settings.php:1037
-msgid "Organisation Page"
-msgstr ""
+#: src/Content/Feature.php:105
+msgid "Auto-mention Forums"
+msgstr "Nämn forumen automatiskt"
 
-#: mod/admin.php:2008 mod/settings.php:1041
-msgid "News Page"
+#: src/Content/Feature.php:105
+msgid ""
+"Add/remove mention when a forum page is selected/deselected in ACL window."
 msgstr ""
 
-#: mod/admin.php:2009 mod/settings.php:1045
-msgid "Community Forum"
+#: src/Content/Feature.php:106
+msgid "Explicit Mentions"
 msgstr ""
 
-#: mod/admin.php:2010
-msgid "Relay"
+#: src/Content/Feature.php:106
+msgid ""
+"Add explicit mentions to comment box for manual control over who gets "
+"mentioned in replies."
 msgstr ""
 
-#: mod/admin.php:2056 mod/admin.php:2067 mod/admin.php:2081 mod/admin.php:2099
-#: src/Content/ContactSelector.php:86
-msgid "Email"
+#: src/Content/Feature.php:111
+msgid "Post/Comment Tools"
 msgstr ""
 
-#: mod/admin.php:2056 mod/admin.php:2081
-msgid "Register date"
+#: src/Content/Feature.php:112
+msgid "Post Categories"
 msgstr ""
 
-#: mod/admin.php:2056 mod/admin.php:2081
-msgid "Last login"
-msgstr ""
+#: src/Content/Feature.php:112
+msgid "Add categories to your posts"
+msgstr "Lägg till kategorier till dina inlägg"
 
-#: mod/admin.php:2056 mod/admin.php:2081
-msgid "Last item"
-msgstr ""
+#: src/Content/Feature.php:117
+msgid "Advanced Profile Settings"
+msgstr "Avancerade profil-inställningar"
 
-#: mod/admin.php:2056
-msgid "Type"
-msgstr ""
+#: src/Content/Feature.php:118
+msgid "List Forums"
+msgstr "Lista forum"
 
-#: mod/admin.php:2063
-msgid "Add User"
+#: src/Content/Feature.php:118
+msgid "Show visitors public community forums at the Advanced Profile Page"
 msgstr ""
 
-#: mod/admin.php:2065
-msgid "User registrations waiting for confirm"
-msgstr "Användare som registrerat sig och inväntar godkännande"
+#: src/Content/Feature.php:119
+msgid "Tag Cloud"
+msgstr "Taggmoln"
 
-#: mod/admin.php:2066
-msgid "User waiting for permanent deletion"
+#: src/Content/Feature.php:119
+msgid "Provide a personal tag cloud on your profile page"
 msgstr ""
 
-#: mod/admin.php:2067
-msgid "Request date"
-msgstr ""
+#: src/Content/Feature.php:120
+msgid "Display Membership Date"
+msgstr "Visa datum för medlemskap"
 
-#: mod/admin.php:2068
-msgid "No registrations."
-msgstr "Inga registreringar."
+#: src/Content/Feature.php:120
+msgid "Display membership date in profile"
+msgstr "Visa datum för medlemskapet i profilen"
 
-#: mod/admin.php:2069
-msgid "Note from the user"
-msgstr ""
+#: src/Content/ForumManager.php:145 src/Content/Nav.php:239
+#: src/Content/Text/HTML.php:896 src/Content/Widget.php:523
+msgid "Forums"
+msgstr "Forum"
 
-#: mod/admin.php:2070 mod/notifications.php:183 mod/notifications.php:269
-msgid "Approve"
-msgstr "Godkänn"
+#: src/Content/ForumManager.php:147
+msgid "External link to forum"
+msgstr "Extern länk till forum"
 
-#: mod/admin.php:2071
-msgid "Deny"
-msgstr "Avslå"
+#: src/Content/ForumManager.php:150 src/Content/Widget.php:502
+msgid "show less"
+msgstr "visa mindre"
 
-#: mod/admin.php:2074
-msgid "User blocked"
-msgstr ""
+#: src/Content/ForumManager.php:151 src/Content/Widget.php:404
+#: src/Content/Widget.php:503
+msgid "show more"
+msgstr "visa mer"
 
-#: mod/admin.php:2076
-msgid "Site admin"
-msgstr ""
+#: src/Content/Item.php:305
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s puffade %2$s"
 
-#: mod/admin.php:2077
-msgid "Account expired"
-msgstr ""
+#: src/Content/Item.php:338 src/Model/Item.php:2626
+msgid "event"
+msgstr "händelse"
 
-#: mod/admin.php:2080
-msgid "New User"
-msgstr ""
+#: src/Content/Item.php:442 view/theme/frio/theme.php:254
+msgid "Follow Thread"
+msgstr "Följ tråd"
 
-#: mod/admin.php:2081
-msgid "Permanent deletion"
-msgstr ""
+#: src/Content/Item.php:443 src/Model/Contact.php:1060
+msgid "View Status"
+msgstr "Visa status"
 
-#: mod/admin.php:2086
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
+#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:994
+#: src/Model/Contact.php:1052 src/Model/Contact.php:1061
+#: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:225
+msgid "View Profile"
+msgstr "Visa profil"
 
-#: mod/admin.php:2087
-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 ""
+#: src/Content/Item.php:445 src/Model/Contact.php:1062
+msgid "View Photos"
+msgstr "Visa foton"
 
-#: mod/admin.php:2097
-msgid "Name of the new user."
-msgstr ""
+#: src/Content/Item.php:446 src/Model/Contact.php:1053
+#: src/Model/Contact.php:1063
+msgid "Network Posts"
+msgstr "Nätverksinlägg"
 
-#: mod/admin.php:2098
-msgid "Nickname"
-msgstr ""
+#: src/Content/Item.php:447 src/Model/Contact.php:1054
+#: src/Model/Contact.php:1064
+msgid "View Contact"
+msgstr "Visa kontakt"
 
-#: mod/admin.php:2098
-msgid "Nickname of the new user."
-msgstr ""
+#: src/Content/Item.php:448 src/Model/Contact.php:1065
+msgid "Send PM"
+msgstr "Skicka privat meddelande"
 
-#: mod/admin.php:2099
-msgid "Email address of the new user."
-msgstr ""
+#: src/Content/Item.php:449 src/Module/Admin/Blocklist/Contact.php:100
+#: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154
+#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:449
+msgid "Block"
+msgstr "Blockera"
 
-#: mod/admin.php:2141
-#, php-format
-msgid "Addon %s disabled."
-msgstr ""
+#: src/Content/Item.php:450 src/Module/Contact.php:399
+#: src/Module/Contact/Profile.php:349 src/Module/Contact/Profile.php:457
+#: src/Module/Notifications/Introductions.php:132
+#: src/Module/Notifications/Introductions.php:204
+#: src/Module/Notifications/Notification.php:61
+msgid "Ignore"
+msgstr "Ignorera"
 
-#: mod/admin.php:2144
-#, php-format
-msgid "Addon %s enabled."
-msgstr ""
+#: src/Content/Item.php:454 src/Object/Post.php:429
+msgid "Languages"
+msgstr "Språk"
 
-#: mod/admin.php:2155 mod/admin.php:2405
-msgid "Disable"
-msgstr ""
+#: src/Content/Item.php:458 src/Model/Contact.php:1066
+msgid "Poke"
+msgstr "Peta"
 
-#: mod/admin.php:2158 mod/admin.php:2408
-msgid "Enable"
-msgstr ""
+#: src/Content/Nav.php:90
+msgid "Nothing new here"
+msgstr "Inget nytt här"
 
-#: mod/admin.php:2180 mod/admin.php:2437
-msgid "Toggle"
-msgstr ""
+#: src/Content/Nav.php:94 src/Module/Special/HTTPException.php:50
+msgid "Go back"
+msgstr "Gå tillbaka"
 
-#: mod/admin.php:2181 mod/admin.php:2438 mod/newmember.php:20
-#: mod/settings.php:136 src/Content/Nav.php:263 view/theme/frio/theme.php:272
-msgid "Settings"
-msgstr "Inställningar"
+#: src/Content/Nav.php:95
+msgid "Clear notifications"
+msgstr "Rensa aviseringar"
 
-#: mod/admin.php:2188 mod/admin.php:2446
-msgid "Author: "
-msgstr ""
+#: src/Content/Nav.php:96 src/Content/Text/HTML.php:883
+msgid "@name, !forum, #tags, content"
+msgstr "@namn, !forum, #taggar, innehåll"
 
-#: mod/admin.php:2189 mod/admin.php:2447
-msgid "Maintainer: "
-msgstr ""
+#: src/Content/Nav.php:183 src/Module/Security/Login.php:144
+msgid "Logout"
+msgstr "Logga ut"
 
-#: mod/admin.php:2241
-msgid "Reload active addons"
-msgstr ""
+#: src/Content/Nav.php:183
+msgid "End this session"
+msgstr "Avsluta den här sessionen"
 
-#: mod/admin.php:2246
-#, php-format
-msgid ""
-"There are currently no addons available on your node. You can find the "
-"official addon repository at %1$s and might find other interesting addons in"
-" the open addon registry at %2$s"
-msgstr ""
+#: src/Content/Nav.php:185 src/Module/Bookmarklet.php:44
+#: src/Module/Security/Login.php:145
+msgid "Login"
+msgstr "Logga in"
 
-#: mod/admin.php:2367
-msgid "No themes found."
-msgstr ""
+#: src/Content/Nav.php:185
+msgid "Sign in"
+msgstr "Logga in"
 
-#: mod/admin.php:2428
-msgid "Screenshot"
-msgstr ""
+#: src/Content/Nav.php:190 src/Module/BaseProfile.php:56
+#: src/Module/Contact.php:433 src/Module/Contact/Profile.php:380
+#: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:225
+msgid "Status"
+msgstr "Status"
 
-#: mod/admin.php:2482
-msgid "Reload active themes"
-msgstr ""
+#: src/Content/Nav.php:190 src/Content/Nav.php:273
+#: view/theme/frio/theme.php:225
+msgid "Your posts and conversations"
+msgstr "Dina inlägg och konversationer"
 
-#: mod/admin.php:2487
-#, php-format
-msgid "No themes found on the system. They should be placed in %1$s"
-msgstr ""
+#: src/Content/Nav.php:191 src/Module/BaseProfile.php:48
+#: src/Module/BaseSettings.php:55 src/Module/Contact.php:457
+#: src/Module/Contact/Profile.php:382 src/Module/Profile/Profile.php:241
+#: src/Module/Welcome.php:57 view/theme/frio/theme.php:226
+msgid "Profile"
+msgstr "Profil"
 
-#: mod/admin.php:2488
-msgid "[Experimental]"
-msgstr ""
+#: src/Content/Nav.php:191 view/theme/frio/theme.php:226
+msgid "Your profile page"
+msgstr "Din profil-sida"
 
-#: mod/admin.php:2489
-msgid "[Unsupported]"
-msgstr ""
+#: src/Content/Nav.php:192 view/theme/frio/theme.php:227
+msgid "Your photos"
+msgstr "Dina foton"
 
-#: mod/admin.php:2514
-msgid "Log settings updated."
-msgstr ""
+#: src/Content/Nav.php:193 src/Module/BaseProfile.php:72
+#: src/Module/BaseProfile.php:75 src/Module/Contact.php:449
+#: view/theme/frio/theme.php:228
+msgid "Media"
+msgstr "Media"
 
-#: mod/admin.php:2547
-msgid "PHP log currently enabled."
+#: src/Content/Nav.php:193 view/theme/frio/theme.php:228
+msgid "Your postings with media"
 msgstr ""
 
-#: mod/admin.php:2549
-msgid "PHP log currently disabled."
-msgstr ""
+#: src/Content/Nav.php:194 view/theme/frio/theme.php:229
+msgid "Your events"
+msgstr "Dina evenemang"
 
-#: mod/admin.php:2558
-msgid "Clear"
-msgstr ""
+#: src/Content/Nav.php:195
+msgid "Personal notes"
+msgstr "Personliga anteckningar"
 
-#: mod/admin.php:2562
-msgid "Enable Debugging"
-msgstr ""
+#: src/Content/Nav.php:195
+msgid "Your personal notes"
+msgstr "Dina personliga anteckningar"
 
-#: mod/admin.php:2563
-msgid "Log file"
-msgstr ""
+#: src/Content/Nav.php:212 src/Content/Nav.php:273
+msgid "Home"
+msgstr "Hem"
 
-#: mod/admin.php:2563
-msgid ""
-"Must be writable by web server. Relative to your Friendica top-level "
-"directory."
-msgstr ""
+#: src/Content/Nav.php:216 src/Module/Register.php:168
+#: src/Module/Security/Login.php:105
+msgid "Register"
+msgstr "Registrera"
 
-#: mod/admin.php:2564
-msgid "Log level"
-msgstr ""
+#: src/Content/Nav.php:216
+msgid "Create an account"
+msgstr "Skapa ett konto"
 
-#: mod/admin.php:2566
-msgid "PHP logging"
-msgstr ""
+#: src/Content/Nav.php:222 src/Module/Help.php:67
+#: src/Module/Settings/TwoFactor/AppSpecific.php:127
+#: src/Module/Settings/TwoFactor/Index.php:111
+#: src/Module/Settings/TwoFactor/Recovery.php:105
+#: src/Module/Settings/TwoFactor/Verify.php:145 view/theme/vier/theme.php:217
+msgid "Help"
+msgstr "Hjälp"
 
-#: mod/admin.php:2567
-msgid ""
-"To temporarily enable logging of PHP errors and warnings you can prepend the"
-" following to the index.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 ""
+#: src/Content/Nav.php:222
+msgid "Help and documentation"
+msgstr "Hjälp och dokumentation"
 
-#: mod/admin.php:2599
-#, php-format
-msgid ""
-"Error trying to open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see "
-"if file %1$s exist and is readable."
-msgstr ""
+#: src/Content/Nav.php:226
+msgid "Apps"
+msgstr "Apps"
 
-#: mod/admin.php:2603
-#, php-format
-msgid ""
-"Couldn't open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see if file"
-" %1$s is readable."
+#: src/Content/Nav.php:226
+msgid "Addon applications, utilities, games"
 msgstr ""
 
-#: mod/admin.php:2696 mod/admin.php:2697 mod/settings.php:763
-msgid "Off"
-msgstr ""
+#: src/Content/Nav.php:230 src/Content/Text/HTML.php:881
+#: src/Module/Admin/Logs/View.php:86 src/Module/Search/Index.php:96
+msgid "Search"
+msgstr "Sök"
 
-#: mod/admin.php:2696 mod/admin.php:2697 mod/settings.php:763
-msgid "On"
-msgstr ""
+#: src/Content/Nav.php:230
+msgid "Search site content"
+msgstr "Sök innehåll på sidan"
 
-#: mod/admin.php:2697
-#, php-format
-msgid "Lock feature %s"
-msgstr ""
+#: src/Content/Nav.php:233 src/Content/Text/HTML.php:890
+msgid "Full Text"
+msgstr "Fullständig text"
 
-#: mod/admin.php:2705
-msgid "Manage Additional Features"
-msgstr ""
+#: src/Content/Nav.php:234 src/Content/Text/HTML.php:891
+#: src/Content/Widget/TagCloud.php:68
+msgid "Tags"
+msgstr "Taggar"
 
-#: mod/allfriends.php:52
-msgid "No friends to display."
-msgstr ""
+#: src/Content/Nav.php:235 src/Content/Nav.php:294
+#: src/Content/Text/HTML.php:892 src/Module/BaseProfile.php:125
+#: src/Module/BaseProfile.php:128 src/Module/Contact.php:370
+#: src/Module/Contact.php:464 view/theme/frio/theme.php:236
+msgid "Contacts"
+msgstr "Kontakter"
 
-#: mod/allfriends.php:89 mod/dirfind.php:217 mod/match.php:102
-#: mod/suggest.php:106 src/Content/Widget.php:39 src/Model/Profile.php:313
-msgid "Connect"
-msgstr "Skicka kontaktförfrågan"
+#: src/Content/Nav.php:254
+msgid "Community"
+msgstr "Gemenskap"
 
-#: mod/api.php:84 mod/api.php:106
-msgid "Authorize application connection"
-msgstr ""
+#: src/Content/Nav.php:254
+msgid "Conversations on this and other servers"
+msgstr "Konversationer i den här och andra servrar"
 
-#: mod/api.php:85
-msgid "Return to your app and insert this Securty Code:"
-msgstr ""
+#: src/Content/Nav.php:258 src/Module/BaseProfile.php:87
+#: src/Module/BaseProfile.php:98 view/theme/frio/theme.php:233
+msgid "Events and Calendar"
+msgstr "Evenemang och Kalender"
 
-#: mod/api.php:94
-msgid "Please login to continue."
-msgstr ""
+#: src/Content/Nav.php:261
+msgid "Directory"
+msgstr "Medlemskatalog"
 
-#: mod/api.php:108
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
+#: src/Content/Nav.php:261
+msgid "People directory"
 msgstr ""
 
-#: mod/api.php:110 mod/dfrn_request.php:640 mod/follow.php:150
-#: mod/profiles.php:526 mod/profiles.php:530 mod/profiles.php:551
-#: mod/settings.php:1085 mod/settings.php:1091 mod/settings.php:1098
-#: mod/settings.php:1102 mod/settings.php:1106 mod/settings.php:1110
-#: mod/settings.php:1114 mod/settings.php:1118 mod/settings.php:1138
-#: mod/settings.php:1139 mod/settings.php:1140 mod/settings.php:1141
-#: mod/settings.php:1142 src/Module/Register.php:98
-msgid "No"
-msgstr "Nej"
+#: src/Content/Nav.php:263 src/Module/BaseAdmin.php:85
+msgid "Information"
+msgstr "Information"
 
-#: mod/apps.php:15 src/App.php:1259
-msgid "You must be logged in to use addons. "
-msgstr ""
+#: src/Content/Nav.php:263
+msgid "Information about this friendica instance"
+msgstr "Information om den här friendica-instansen"
 
-#: mod/apps.php:20
-msgid "Applications"
-msgstr "Applikationer"
+#: src/Content/Nav.php:266 src/Module/Admin/Tos.php:76
+#: src/Module/BaseAdmin.php:96 src/Module/Register.php:176
+#: src/Module/Tos.php:87
+msgid "Terms of Service"
+msgstr "Villkor för användning"
 
-#: mod/apps.php:25
-msgid "No installed applications."
-msgstr ""
+#: src/Content/Nav.php:266
+msgid "Terms of Service of this Friendica instance"
+msgstr "Den här Friendica-instansens villkor för användning"
 
-#: mod/babel.php:25
-msgid "Source input"
-msgstr ""
+#: src/Content/Nav.php:271 view/theme/frio/theme.php:232
+msgid "Network"
+msgstr "Nätverk"
 
-#: mod/babel.php:31
-msgid "BBCode::toPlaintext"
-msgstr ""
+#: src/Content/Nav.php:271 view/theme/frio/theme.php:232
+msgid "Conversations from your friends"
+msgstr "Konversationer från dina vänner"
 
-#: mod/babel.php:37
-msgid "BBCode::convert (raw HTML)"
-msgstr ""
+#: src/Content/Nav.php:277
+msgid "Introductions"
+msgstr "Presentationer"
 
-#: mod/babel.php:42
-msgid "BBCode::convert"
-msgstr ""
+#: src/Content/Nav.php:277
+msgid "Friend Requests"
+msgstr "Vänförfrågningar"
 
-#: mod/babel.php:48
-msgid "BBCode::convert => HTML::toBBCode"
-msgstr ""
+#: src/Content/Nav.php:278 src/Module/BaseNotifications.php:148
+#: src/Module/Notifications/Introductions.php:73
+msgid "Notifications"
+msgstr "Aviseringar"
 
-#: mod/babel.php:54
-msgid "BBCode::toMarkdown"
-msgstr ""
+#: src/Content/Nav.php:279
+msgid "See all notifications"
+msgstr "Se alla aviseringar"
 
-#: mod/babel.php:60
-msgid "BBCode::toMarkdown => Markdown::convert"
+#: src/Content/Nav.php:280
+msgid "Mark all system notifications as seen"
 msgstr ""
 
-#: mod/babel.php:66
-msgid "BBCode::toMarkdown => Markdown::toBBCode"
-msgstr ""
+#: src/Content/Nav.php:283 view/theme/frio/theme.php:234
+msgid "Private mail"
+msgstr "Privat e-post"
 
-#: mod/babel.php:72
-msgid "BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"
-msgstr ""
+#: src/Content/Nav.php:284
+msgid "Inbox"
+msgstr "Inkorg"
 
-#: mod/babel.php:83
-msgid "Item Body"
-msgstr ""
+#: src/Content/Nav.php:285
+msgid "Outbox"
+msgstr "Utkorg"
 
-#: mod/babel.php:87
-msgid "Item Tags"
-msgstr ""
+#: src/Content/Nav.php:289
+msgid "Accounts"
+msgstr "Konton"
 
-#: mod/babel.php:94
-msgid "Source input (Diaspora format)"
-msgstr ""
+#: src/Content/Nav.php:289
+msgid "Manage other pages"
+msgstr "Hantera andra sidor"
 
-#: mod/babel.php:100
-msgid "Markdown::convert (raw HTML)"
-msgstr ""
+#: src/Content/Nav.php:292 src/Module/Admin/Addons/Details.php:114
+#: src/Module/Admin/Themes/Details.php:93 src/Module/BaseSettings.php:122
+#: src/Module/Welcome.php:52 view/theme/frio/theme.php:235
+msgid "Settings"
+msgstr "Inställningar"
 
-#: mod/babel.php:105
-msgid "Markdown::convert"
-msgstr ""
+#: src/Content/Nav.php:292 view/theme/frio/theme.php:235
+msgid "Account settings"
+msgstr "Kontoinställningar"
 
-#: mod/babel.php:111
-msgid "Markdown::toBBCode"
-msgstr ""
+#: src/Content/Nav.php:294 view/theme/frio/theme.php:236
+msgid "Manage/edit friends and contacts"
+msgstr "Hantera/redigera vänner och kontakter"
 
-#: mod/babel.php:118
-msgid "Raw HTML input"
-msgstr ""
+#: src/Content/Nav.php:299 src/Module/BaseAdmin.php:126
+msgid "Admin"
+msgstr "Administratör"
 
-#: mod/babel.php:123
-msgid "HTML Input"
+#: src/Content/Nav.php:299
+msgid "Site setup and configuration"
 msgstr ""
 
-#: mod/babel.php:129
-msgid "HTML::toBBCode"
-msgstr ""
+#: src/Content/Nav.php:302
+msgid "Navigation"
+msgstr "Navigering"
 
-#: mod/babel.php:135
-msgid "HTML::toBBCode => BBCode::convert"
-msgstr ""
+#: src/Content/Nav.php:302
+msgid "Site map"
+msgstr "Karta över webbplatsen"
 
-#: mod/babel.php:140
-msgid "HTML::toBBCode => BBCode::convert (raw HTML)"
-msgstr ""
+#: src/Content/OEmbed.php:298
+msgid "Embedding disabled"
+msgstr "Funktionen bädda in är avstängd"
 
-#: mod/babel.php:146
-msgid "HTML::toMarkdown"
-msgstr ""
+#: src/Content/OEmbed.php:416
+msgid "Embedded content"
+msgstr "Inbäddat innehåll"
 
-#: mod/babel.php:152
-msgid "HTML::toPlaintext"
-msgstr ""
+#: src/Content/Pager.php:216
+msgid "first"
+msgstr "första"
 
-#: mod/babel.php:160
-msgid "Source text"
-msgstr ""
+#: src/Content/Pager.php:221
+msgid "prev"
+msgstr "föreg"
 
-#: mod/babel.php:161
-msgid "BBCode"
-msgstr ""
+#: src/Content/Pager.php:276
+msgid "next"
+msgstr "nästa"
 
-#: mod/babel.php:162
-msgid "Markdown"
-msgstr ""
+#: src/Content/Pager.php:281
+msgid "last"
+msgstr "sista"
 
-#: mod/babel.php:163
-msgid "HTML"
-msgstr ""
+#: src/Content/Text/BBCode.php:987 src/Content/Text/BBCode.php:1781
+#: src/Content/Text/BBCode.php:1782
+msgid "Image/photo"
+msgstr "Bild/foto"
 
-#: mod/bookmarklet.php:22 src/Content/Nav.php:170 src/Module/Login.php:322
-msgid "Login"
-msgstr "Logga in"
+#: src/Content/Text/BBCode.php:1160
+#, php-format
+msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
+msgstr "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 
-#: mod/bookmarklet.php:32
-msgid "Bad Request"
-msgstr ""
+#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3157
+#: src/Model/Item.php:3163 src/Model/Item.php:3164
+msgid "Link to source"
+msgstr "Länk till källa"
 
-#: mod/bookmarklet.php:54
-msgid "The post was created"
-msgstr ""
+#: src/Content/Text/BBCode.php:1699 src/Content/Text/HTML.php:933
+msgid "Click to open/close"
+msgstr "Klicka för att öppna/stänga"
 
-#: mod/cal.php:34 mod/cal.php:38 mod/community.php:39 mod/follow.php:20
-#: mod/viewcontacts.php:23 mod/viewcontacts.php:27 mod/viewsrc.php:13
-msgid "Access denied."
-msgstr ""
+#: src/Content/Text/BBCode.php:1730
+msgid "$1 wrote:"
+msgstr "$1 skrev:"
 
-#: mod/cal.php:46 mod/dfrn_poll.php:486 mod/help.php:68
-#: mod/viewcontacts.php:34 src/App.php:1310
-msgid "Page not found."
-msgstr "Sidan hittades inte."
+#: src/Content/Text/BBCode.php:1786 src/Content/Text/BBCode.php:1787
+msgid "Encrypted content"
+msgstr "Krypterat innehåll"
 
-#: mod/cal.php:141 mod/display.php:309 src/Module/Profile.php:168
-msgid "Access to this profile has been restricted."
-msgstr ""
+#: src/Content/Text/BBCode.php:2002
+msgid "Invalid source protocol"
+msgstr "Ogiltigt källprotokoll"
 
-#: mod/cal.php:273 mod/events.php:384 src/Content/Nav.php:160
-#: src/Content/Nav.php:226 src/Model/Profile.php:937 src/Model/Profile.php:948
-#: view/theme/frio/theme.php:266 view/theme/frio/theme.php:270
-msgid "Events"
-msgstr ""
+#: src/Content/Text/BBCode.php:2017
+msgid "Invalid link protocol"
+msgstr "Ogiltigt källprotokoll"
 
-#: mod/cal.php:274 mod/events.php:385
-msgid "View"
-msgstr ""
+#: src/Content/Text/HTML.php:797
+msgid "Loading more entries..."
+msgstr "Laddar fler poster..."
 
-#: mod/cal.php:275 mod/events.php:387
-msgid "Previous"
-msgstr ""
+#: src/Content/Text/HTML.php:798
+msgid "The end"
+msgstr "Slut"
 
-#: mod/cal.php:276 mod/events.php:388 src/Module/Install.php:133
-msgid "Next"
-msgstr ""
+#: src/Content/Text/HTML.php:875 src/Content/Widget/VCard.php:103
+#: src/Model/Profile.php:454
+msgid "Follow"
+msgstr "Följ"
 
-#: mod/cal.php:279 mod/events.php:393 src/Model/Event.php:428
-msgid "today"
-msgstr ""
+#: src/Content/Widget.php:49
+msgid "Add New Contact"
+msgstr "Lägg till kontakt"
 
-#: mod/cal.php:280 mod/events.php:394 src/Model/Event.php:429
-#: src/Util/Temporal.php:314
-msgid "month"
-msgstr "månad"
+#: src/Content/Widget.php:50
+msgid "Enter address or web location"
+msgstr "Fyll i adress eller plats på internet"
 
-#: mod/cal.php:281 mod/events.php:395 src/Model/Event.php:430
-#: src/Util/Temporal.php:315
-msgid "week"
-msgstr "vecka"
+#: src/Content/Widget.php:51
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Exempel: adam@exempel.com, http://exempel.com/bertil"
 
-#: mod/cal.php:282 mod/events.php:396 src/Model/Event.php:431
-#: src/Util/Temporal.php:316
-msgid "day"
-msgstr "dag"
+#: src/Content/Widget.php:53
+msgid "Connect"
+msgstr "Skicka kontaktförfrågan"
 
-#: mod/cal.php:283 mod/events.php:397
-msgid "list"
-msgstr ""
+#: src/Content/Widget.php:68
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d inbjudning tillgänglig"
+msgstr[1] "%d inbjudningar tillgängliga"
 
-#: mod/cal.php:296 src/Core/Console/NewPassword.php:67 src/Model/User.php:324
-msgid "User not found"
-msgstr ""
+#: src/Content/Widget.php:74 view/theme/vier/theme.php:170
+msgid "Find People"
+msgstr "Hitta personer"
 
-#: mod/cal.php:312
-msgid "This calendar format is not supported"
-msgstr ""
+#: src/Content/Widget.php:75 view/theme/vier/theme.php:171
+msgid "Enter name or interest"
+msgstr "Ange namn eller intresse"
 
-#: mod/cal.php:314
-msgid "No exportable data found"
-msgstr ""
+#: src/Content/Widget.php:77 view/theme/vier/theme.php:173
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Exempel: Robert Morgenstein, Fiskning"
 
-#: mod/cal.php:331
-msgid "calendar"
-msgstr ""
+#: src/Content/Widget.php:78 src/Module/Contact.php:391
+#: src/Module/Directory.php:96 view/theme/vier/theme.php:174
+msgid "Find"
+msgstr "Sök"
 
-#: mod/common.php:90
-msgid "No contacts in common."
-msgstr ""
+#: src/Content/Widget.php:80 view/theme/vier/theme.php:176
+msgid "Similar Interests"
+msgstr "Liknande intressen"
 
-#: mod/common.php:141 src/Module/Contact.php:892
-msgid "Common Friends"
-msgstr ""
+#: src/Content/Widget.php:81 view/theme/vier/theme.php:177
+msgid "Random Profile"
+msgstr "Slumpmässig profil"
 
-#: mod/community.php:32 mod/dfrn_request.php:597 mod/directory.php:43
-#: mod/display.php:209 mod/photos.php:903 mod/probe.php:13 mod/search.php:96
-#: mod/search.php:102 mod/videos.php:147 mod/viewcontacts.php:46
-#: mod/webfinger.php:16
-msgid "Public access denied."
-msgstr ""
+#: src/Content/Widget.php:82 view/theme/vier/theme.php:178
+msgid "Invite Friends"
+msgstr "Bjud in folk du känner"
 
-#: mod/community.php:75
-msgid "Community option not available."
-msgstr ""
+#: src/Content/Widget.php:83 src/Module/Directory.php:88
+#: view/theme/vier/theme.php:179
+msgid "Global Directory"
+msgstr "Medlemskatalog för flera sajter (global)"
 
-#: mod/community.php:92
-msgid "Not available."
-msgstr ""
+#: src/Content/Widget.php:85 view/theme/vier/theme.php:181
+msgid "Local Directory"
+msgstr "Lokal-mapp"
 
-#: mod/community.php:102
-msgid "Local Community"
-msgstr ""
+#: src/Content/Widget.php:207 src/Model/Group.php:507
+#: src/Module/Contact.php:354 src/Module/Welcome.php:76
+msgid "Groups"
+msgstr "Grupper"
 
-#: mod/community.php:105
-msgid "Posts from local users on this server"
-msgstr ""
+#: src/Content/Widget.php:209
+msgid "Everyone"
+msgstr "Alla"
 
-#: mod/community.php:113
-msgid "Global Community"
-msgstr ""
+#: src/Content/Widget.php:238
+msgid "Relationships"
+msgstr "Relationer"
 
-#: mod/community.php:116
-msgid "Posts from users of the whole federated network"
-msgstr ""
+#: src/Content/Widget.php:240 src/Module/Contact.php:306
+#: src/Module/Group.php:293
+msgid "All Contacts"
+msgstr "Alla kontakter"
 
-#: mod/community.php:162 mod/search.php:229
-msgid "No results."
-msgstr "Inga resultat."
+#: src/Content/Widget.php:279
+msgid "Protocols"
+msgstr "Protokoller"
 
-#: mod/community.php:206
-msgid ""
-"This community stream shows all public posts received by this node. They may"
-" not reflect the opinions of this node’s users."
-msgstr ""
-
-#: mod/credits.php:19
-msgid "Credits"
-msgstr ""
+#: src/Content/Widget.php:281
+msgid "All Protocols"
+msgstr "Alla protokoller"
 
-#: mod/credits.php:20
-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 ""
+#: src/Content/Widget.php:309
+msgid "Saved Folders"
+msgstr "Sparade mappar"
 
-#: mod/crepair.php:79
-msgid "Contact settings applied."
-msgstr "Inställningar för kontakter har sparats."
+#: src/Content/Widget.php:311 src/Content/Widget.php:345
+msgid "Everything"
+msgstr "Allting"
 
-#: mod/crepair.php:81
-msgid "Contact update failed."
-msgstr "Det gick inte att uppdatera kontakt."
+#: src/Content/Widget.php:343
+msgid "Categories"
+msgstr "Kategorier"
 
-#: mod/crepair.php:102 mod/dfrn_confirm.php:127 mod/fsuggest.php:28
-#: mod/fsuggest.php:89 mod/redir.php:31 mod/redir.php:137
-msgid "Contact not found."
-msgstr "Kontakten hittades inte."
+#: src/Content/Widget.php:400
+#, php-format
+msgid "%d contact in common"
+msgid_plural "%d contacts in common"
+msgstr[0] "%d gemensam kontakt"
+msgstr[1] "%d gemensamma kontakter"
 
-#: mod/crepair.php:115
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr ""
+#: src/Content/Widget.php:496
+msgid "Archives"
+msgstr "Arkiv"
 
-#: mod/crepair.php:116
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "Använd webbläsarens bakåtknapp <strong>nu</strong> om du är osäker på vad man gör på den här sidan."
+#: src/Content/Widget.php:520
+msgid "Persons"
+msgstr "Personer"
 
-#: mod/crepair.php:130 mod/crepair.php:132
-msgid "No mirroring"
-msgstr ""
+#: src/Content/Widget.php:521
+msgid "Organisations"
+msgstr "Organisationer"
 
-#: mod/crepair.php:130
-msgid "Mirror as forwarded posting"
-msgstr ""
+#: src/Content/Widget.php:522 src/Model/Contact.php:1493
+msgid "News"
+msgstr "Nyheter"
 
-#: mod/crepair.php:130 mod/crepair.php:132
-msgid "Mirror as my own posting"
-msgstr ""
+#: src/Content/Widget.php:527 src/Module/Admin/BaseUsers.php:51
+msgid "All"
+msgstr "Alla"
 
-#: mod/crepair.php:145
-msgid "Return to contact editor"
-msgstr ""
+#: src/Content/Widget/CalendarExport.php:54
+msgid "Export"
+msgstr "Exportera"
 
-#: mod/crepair.php:147
-msgid "Refetch contact data"
-msgstr ""
+#: src/Content/Widget/CalendarExport.php:55
+msgid "Export calendar as ical"
+msgstr "Exportera kalender som ical"
 
-#: mod/crepair.php:149 mod/events.php:553 mod/fsuggest.php:106
-#: mod/invite.php:154 mod/localtime.php:56 mod/manage.php:182
-#: mod/message.php:261 mod/message.php:441 mod/photos.php:1049
-#: mod/photos.php:1137 mod/photos.php:1412 mod/photos.php:1457
-#: mod/photos.php:1496 mod/photos.php:1556 mod/poke.php:188
-#: mod/profiles.php:562 src/Module/Contact.php:594 src/Module/Install.php:187
-#: src/Module/Install.php:222 src/Object/Post.php:877
-#: view/theme/duepuntozero/config.php:72 view/theme/frio/config.php:119
-#: view/theme/quattro/config.php:74 view/theme/vier/config.php:120
-msgid "Submit"
-msgstr "Spara"
+#: src/Content/Widget/CalendarExport.php:56
+msgid "Export calendar as csv"
+msgstr "Exportera kalender som csv"
 
-#: mod/crepair.php:150
-msgid "Remote Self"
-msgstr ""
+#: src/Content/Widget/ContactBlock.php:79
+msgid "No contacts"
+msgstr "Inga kontakter"
 
-#: mod/crepair.php:153
-msgid "Mirror postings from this contact"
-msgstr ""
+#: src/Content/Widget/ContactBlock.php:108
+#, php-format
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] "%d kontakt"
+msgstr[1] "%d kontakter"
 
-#: mod/crepair.php:155
-msgid ""
-"Mark this contact as remote_self, this will cause friendica to repost new "
-"entries from this contact."
-msgstr ""
+#: src/Content/Widget/ContactBlock.php:125
+msgid "View Contacts"
+msgstr "Visa kontakter"
 
-#: mod/crepair.php:160
-msgid "Account Nickname"
-msgstr ""
+#: src/Content/Widget/SavedSearches.php:47
+msgid "Remove term"
+msgstr "Ta bort villkor"
 
-#: mod/crepair.php:161
-msgid "@Tagname - overrides Name/Nickname"
-msgstr ""
+#: src/Content/Widget/SavedSearches.php:60
+msgid "Saved Searches"
+msgstr "Sparade sökningar"
 
-#: mod/crepair.php:162
-msgid "Account URL"
-msgstr ""
+#: src/Content/Widget/TrendingTags.php:51
+#, php-format
+msgid "Trending Tags (last %d hour)"
+msgid_plural "Trending Tags (last %d hours)"
+msgstr[0] "Trendande taggar (senaste %d timmen)"
+msgstr[1] "Trendande taggar (de senaste %d timmarna)"
 
-#: mod/crepair.php:163
-msgid "Account URL Alias"
-msgstr ""
+#: src/Content/Widget/TrendingTags.php:52
+msgid "More Trending Tags"
+msgstr "Fler trendande taggar"
 
-#: mod/crepair.php:164
-msgid "Friend Request URL"
-msgstr ""
+#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:373
+#: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:176
+msgid "XMPP:"
+msgstr "XMPP:"
 
-#: mod/crepair.php:165
-msgid "Friend Confirm URL"
-msgstr ""
+#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:374
+#: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:180
+msgid "Matrix:"
+msgstr "Matrix:"
 
-#: mod/crepair.php:166
-msgid "Notification Endpoint URL"
-msgstr ""
+#: src/Content/Widget/VCard.php:101 src/Model/Profile.php:466
+#: src/Module/Notifications/Introductions.php:199
+msgid "Network:"
+msgstr "Nätverk:"
 
-#: mod/crepair.php:167
-msgid "Poll/Feed URL"
-msgstr ""
+#: src/Content/Widget/VCard.php:105 src/Model/Profile.php:456
+msgid "Unfollow"
+msgstr "Avfölj"
 
-#: mod/crepair.php:168
-msgid "New photo from this URL"
-msgstr ""
+#: src/Core/ACL.php:164 src/Module/Profile/Profile.php:242
+msgid "Yourself"
+msgstr "Du själv"
 
-#: mod/delegate.php:42
-msgid "Parent user not found."
-msgstr ""
+#: src/Core/ACL.php:200 src/Module/PermissionTooltip.php:104
+#: src/Module/PermissionTooltip.php:126
+msgid "Mutuals"
+msgstr "Ömsesidiga"
 
-#: mod/delegate.php:149
-msgid "No parent user"
+#: src/Core/ACL.php:292
+msgid "Post to Email"
 msgstr ""
 
-#: mod/delegate.php:164
-msgid "Parent Password:"
-msgstr ""
+#: src/Core/ACL.php:319
+msgid "Public"
+msgstr "Publik"
 
-#: mod/delegate.php:164
+#: src/Core/ACL.php:320
 msgid ""
-"Please enter the password of the parent account to legitimize your request."
+"This content will be shown to all your followers and can be seen in the "
+"community pages and by anyone with its link."
 msgstr ""
 
-#: mod/delegate.php:171
-msgid "Parent User"
-msgstr ""
+#: src/Core/ACL.php:321
+msgid "Limited/Private"
+msgstr "Begränsad/Privat"
 
-#: mod/delegate.php:174
+#: src/Core/ACL.php:322
 msgid ""
-"Parent users have total control about this account, including the account "
-"settings. Please double check whom you give this access."
+"This content will be shown only to the people in the first box, to the "
+"exception of the people mentioned in the second box. It won't appear "
+"anywhere public."
 msgstr ""
 
-#: mod/delegate.php:176 src/Content/Nav.php:261
-msgid "Delegate Page Management"
-msgstr ""
+#: src/Core/ACL.php:323
+msgid "Show to:"
+msgstr "Visa till:"
 
-#: mod/delegate.php:177
-msgid "Delegates"
+#: src/Core/ACL.php:324
+msgid "Except to:"
+msgstr "Förutom till:"
+
+#: src/Core/ACL.php:327
+msgid "Connectors"
 msgstr ""
 
-#: mod/delegate.php:179
+#: src/Core/Installer.php:183
 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."
+"The database configuration file \"config/local.config.php\" could not be "
+"written. Please use the enclosed text to create a configuration file in your"
+" web server root."
 msgstr ""
 
-#: mod/delegate.php:180
-msgid "Existing Page Delegates"
-msgstr ""
+#: src/Core/Installer.php:202
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr "Du kanske måste importera filen \"database.sql\" manuellt med phpmyadmin eller mysql."
 
-#: mod/delegate.php:182
-msgid "Potential Delegates"
-msgstr ""
+#: src/Core/Installer.php:203 src/Module/Install.php:213
+#: src/Module/Install.php:372
+msgid "Please see the file \"doc/INSTALL.md\"."
+msgstr "Vänligen se filen \"doc/INSTALL.md\"."
 
-#: mod/delegate.php:184 mod/tagrm.php:114
-msgid "Remove"
-msgstr "Ta bort"
+#: src/Core/Installer.php:264
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "Could not find a command line version of PHP in the web server PATH."
 
-#: mod/delegate.php:185
-msgid "Add"
-msgstr ""
+#: src/Core/Installer.php:265
+msgid ""
+"If you don't have a command line version of PHP installed on your server, "
+"you will not be able to run the background processing. See <a "
+"href='https://github.com/friendica/friendica/blob/stable/doc/Install.md#set-"
+"up-the-worker'>'Setup the worker'</a>"
+msgstr "Om du inte har en kommandoradsversion av PHP installerad på din server kommer du inte att kunna köra bakgrundsbearbetningen."
 
-#: mod/delegate.php:186
-msgid "No entries."
+#: src/Core/Installer.php:270
+msgid "PHP executable path"
 msgstr ""
 
-#: mod/dfrn_confirm.php:72 mod/profiles.php:43 mod/profiles.php:152
-#: mod/profiles.php:196 mod/profiles.php:511
-msgid "Profile not found."
-msgstr "Profilen hittades inte."
-
-#: mod/dfrn_confirm.php:128
+#: src/Core/Installer.php:270
 msgid ""
-"This may occasionally happen if contact was requested by both persons and it"
-" has already been approved."
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
 msgstr ""
 
-#: mod/dfrn_confirm.php:238
-msgid "Response from remote site was not understood."
-msgstr "Kunde inte tolka svaret från fjärrsajten."
-
-#: mod/dfrn_confirm.php:245 mod/dfrn_confirm.php:251
-msgid "Unexpected response from remote site: "
-msgstr "Oväntat svar från fjärrsajten: "
-
-#: mod/dfrn_confirm.php:260
-msgid "Confirmation completed successfully."
-msgstr "Bekräftat."
-
-#: mod/dfrn_confirm.php:272
-msgid "Temporary failure. Please wait and try again."
-msgstr "Tillfälligt fel. Försök igen lite senare."
-
-#: mod/dfrn_confirm.php:275
-msgid "Introduction failed or was revoked."
-msgstr "Kontaktförfrågan gick inte fram eller har återkallats."
+#: src/Core/Installer.php:275
+msgid "Command line PHP"
+msgstr "Kommandorad för PHP"
 
-#: mod/dfrn_confirm.php:280
-msgid "Remote site reported: "
-msgstr "Meddelande från fjärrsajten: "
+#: src/Core/Installer.php:284
+msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
+msgstr ""
 
-#: mod/dfrn_confirm.php:386
-msgid "Unable to set contact photo."
-msgstr "Det gick inte att byta profilbild."
+#: src/Core/Installer.php:285
+msgid "Found PHP version: "
+msgstr "Hittade PHP-version:"
 
-#: mod/dfrn_confirm.php:448
-#, php-format
-msgid "No user record found for '%s' "
+#: src/Core/Installer.php:287
+msgid "PHP cli binary"
 msgstr ""
 
-#: mod/dfrn_confirm.php:458
-msgid "Our site encryption key is apparently messed up."
-msgstr "Det är något fel på webbplatsens krypteringsnyckel."
-
-#: mod/dfrn_confirm.php:469
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr "Empty site URL was provided or URL could not be decrypted by us."
+#: src/Core/Installer.php:300
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "The command line version of PHP on your system does not have \"register_argc_argv\" enabled."
 
-#: mod/dfrn_confirm.php:485
-msgid "Contact record was not found for you on our site."
-msgstr "Det gick inte att hitta efterfrågad information på vår webbplats."
+#: src/Core/Installer.php:301
+msgid "This is required for message delivery to work."
+msgstr "Det krävs för att meddelanden ska kunna levereras."
 
-#: mod/dfrn_confirm.php:499
-#, php-format
-msgid "Site public key not available in contact record for URL %s."
+#: src/Core/Installer.php:306
+msgid "PHP register_argc_argv"
 msgstr ""
 
-#: mod/dfrn_confirm.php:515
+#: src/Core/Installer.php:338
 msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr "Det ID som angavs av ditt system är samma som på vårt system. Det borde fungera om du provar igen."
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Fel: funktionen \"openssl_pkey_new\" kan inte skapa krypteringsnycklar"
 
-#: mod/dfrn_confirm.php:526
-msgid "Unable to set your contact credentials on our system."
-msgstr "Unable to set your contact credentials on our system."
+#: src/Core/Installer.php:339
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Läs mer på \"http://www.php.net/manual/en/openssl.installation.php\" om du kör Windows."
 
-#: mod/dfrn_confirm.php:582
-msgid "Unable to update your contact profile details on our system"
-msgstr "Unable to update your contact profile details on our system"
+#: src/Core/Installer.php:342
+msgid "Generate encryption keys"
+msgstr "Generera krypteringsnycklar"
 
-#: mod/dfrn_confirm.php:612 mod/dfrn_request.php:560
-#: src/Model/Contact.php:2043
-msgid "[Name Withheld]"
-msgstr "[Namnet visas inte]"
+#: src/Core/Installer.php:394
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Error: Apache webserver mod-rewrite module is required but not installed."
 
-#: mod/dfrn_poll.php:125 mod/dfrn_poll.php:530
-#, php-format
-msgid "%1$s welcomes %2$s"
+#: src/Core/Installer.php:399
+msgid "Apache mod_rewrite module"
 msgstr ""
 
-#: mod/dfrn_request.php:98
-msgid "This introduction has already been accepted."
-msgstr "Den här förfrågan har redan beviljats."
+#: src/Core/Installer.php:405
+msgid "Error: PDO or MySQLi PHP module required but not installed."
+msgstr ""
 
-#: mod/dfrn_request.php:116 mod/dfrn_request.php:354
-msgid "Profile location is not valid or does not contain profile information."
-msgstr "Profiladressen är ogiltig eller innehåller ingen profilinformation."
+#: src/Core/Installer.php:410
+msgid "Error: The MySQL driver for PDO is not installed."
+msgstr "Fel: MySQL-drivrutinen för PDO är inte installerad."
 
-#: mod/dfrn_request.php:120 mod/dfrn_request.php:358
-msgid "Warning: profile location has no identifiable owner name."
-msgstr "Varning! Hittar inget namn som identifierar profilen."
+#: src/Core/Installer.php:414
+msgid "PDO or MySQLi PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:123 mod/dfrn_request.php:361
-msgid "Warning: profile location has no profile photo."
-msgstr "Varning! Profilen innehåller inte någon profilbild."
+#: src/Core/Installer.php:422
+msgid "Error, XML PHP module required but not installed."
+msgstr ""
 
-#: mod/dfrn_request.php:127 mod/dfrn_request.php:365
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] "%d required parameter was not found at the given location"
-msgstr[1] "%d required parameters were not found at the given location"
+#: src/Core/Installer.php:426
+msgid "XML PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:165
-msgid "Introduction complete."
-msgstr "Kontaktförfrågan/Presentationen är klar."
+#: src/Core/Installer.php:429
+msgid "libCurl PHP module"
+msgstr "PHP-modul för libCurl"
 
-#: mod/dfrn_request.php:201
-msgid "Unrecoverable protocol error."
-msgstr "Protokollfel."
+#: src/Core/Installer.php:430
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Error: libCURL PHP module required but not installed."
 
-#: mod/dfrn_request.php:228
-msgid "Profile unavailable."
-msgstr "Profilen är inte tillgänglig."
+#: src/Core/Installer.php:436
+msgid "GD graphics PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:249
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr "%s har fått för många kontaktförfrågningar idag."
+#: src/Core/Installer.php:437
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Error: GD graphics PHP module with JPEG support required but not installed."
 
-#: mod/dfrn_request.php:250
-msgid "Spam protection measures have been invoked."
-msgstr "Åtgärder för spamskydd har vidtagits."
+#: src/Core/Installer.php:443
+msgid "OpenSSL PHP module"
+msgstr "PHP-modul för OpenSSL"
 
-#: mod/dfrn_request.php:251
-msgid "Friends are advised to please try again in 24 hours."
-msgstr "Dina vänner kan prova igen om ett dygn."
+#: src/Core/Installer.php:444
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Error: openssl PHP module required but not installed."
 
-#: mod/dfrn_request.php:275
-msgid "Invalid locator"
-msgstr "Invalid locator"
+#: src/Core/Installer.php:450
+msgid "mb_string PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:311
-msgid "You have already introduced yourself here."
-msgstr "Du har redan presenterat dig här."
+#: src/Core/Installer.php:451
+msgid "Error: mb_string PHP module required but not installed."
+msgstr ""
 
-#: mod/dfrn_request.php:314
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr "Du och %s är redan kontakter."
+#: src/Core/Installer.php:457
+msgid "iconv PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:334
-msgid "Invalid profile URL."
-msgstr "Ogiltig profil-URL."
+#: src/Core/Installer.php:458
+msgid "Error: iconv PHP module required but not installed."
+msgstr ""
 
-#: mod/dfrn_request.php:340 src/Model/Contact.php:1714
-msgid "Disallowed profile URL."
-msgstr "Otillåten profil-URL."
+#: src/Core/Installer.php:464
+msgid "POSIX PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:413 src/Module/Contact.php:235
-msgid "Failed to update contact record."
-msgstr "Det blev fel när kontakten skulle uppdateras."
+#: src/Core/Installer.php:465
+msgid "Error: POSIX PHP module required but not installed."
+msgstr ""
 
-#: mod/dfrn_request.php:433
-msgid "Your introduction has been sent."
-msgstr "Kontaktförfrågan/Presentationen har skickats."
+#: src/Core/Installer.php:471
+msgid "Program execution functions"
+msgstr ""
 
-#: mod/dfrn_request.php:471
+#: src/Core/Installer.php:472
 msgid ""
-"Remote subscription can't be done for your network. Please subscribe "
-"directly on your system."
+"Error: Program execution functions (proc_open) required but not enabled."
 msgstr ""
 
-#: mod/dfrn_request.php:487
-msgid "Please login to confirm introduction."
-msgstr "Logga in för att acceptera förfrågan."
+#: src/Core/Installer.php:478
+msgid "JSON PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:495
-msgid ""
-"Incorrect identity currently logged in. Please login to "
-"<strong>this</strong> profile."
-msgstr "Inloggad med fel identitet. Logga in med <strong>den här</strong> profilen."
+#: src/Core/Installer.php:479
+msgid "Error: JSON PHP module required but not installed."
+msgstr ""
 
-#: mod/dfrn_request.php:509 mod/dfrn_request.php:524
-msgid "Confirm"
-msgstr "Bekräfta"
+#: src/Core/Installer.php:485
+msgid "File Information PHP module"
+msgstr ""
 
-#: mod/dfrn_request.php:520
-msgid "Hide this contact"
+#: src/Core/Installer.php:486
+msgid "Error: File Information PHP module required but not installed."
 msgstr ""
 
-#: mod/dfrn_request.php:522
-#, php-format
-msgid "Welcome home %s."
-msgstr "Välkommen hem %s."
+#: src/Core/Installer.php:509
+msgid ""
+"The web installer needs to be able to create a file called "
+"\"local.config.php\" in the \"config\" folder of your web server and it is "
+"unable to do so."
+msgstr ""
 
-#: mod/dfrn_request.php:523
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr "Bekräfta att du vill skicka kontaktförfrågan till %s."
+#: src/Core/Installer.php:510
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."
 
-#: mod/dfrn_request.php:632
+#: src/Core/Installer.php:511
 msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"communications networks:"
+"At the end of this procedure, we will give you a text to save in a file "
+"named local.config.php in your Friendica \"config\" folder."
 msgstr ""
 
-#: mod/dfrn_request.php:634
-#, php-format
+#: src/Core/Installer.php:512
 msgid ""
-"If you are not yet a member of the free social web, <a href=\"%s\">follow "
-"this link to find a public Friendica site and join us today</a>."
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"doc/INSTALL.md\" for instructions."
 msgstr ""
 
-#: mod/dfrn_request.php:637
-msgid "Friend/Connection Request"
-msgstr "Vän- eller kontaktförfrågan"
+#: src/Core/Installer.php:515
+msgid "config/local.config.php is writable"
+msgstr "config/local.config.php är skrivbar"
 
-#: mod/dfrn_request.php:638
+#: src/Core/Installer.php:535
 msgid ""
-"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
-"testuser@gnusocial.de"
+"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
 msgstr ""
 
-#: mod/dfrn_request.php:639 mod/follow.php:149
-msgid "Please answer the following:"
-msgstr "Var vänlig besvara följande:"
-
-#: mod/dfrn_request.php:640 mod/follow.php:150
-#, php-format
-msgid "Does %s know you?"
+#: src/Core/Installer.php:536
+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/dfrn_request.php:641 mod/follow.php:151
-msgid "Add a personal note:"
-msgstr "Lägg till ett personligt meddelande:"
-
-#: mod/dfrn_request.php:643
-msgid "Friendica"
-msgstr "Friendica"
-
-#: mod/dfrn_request.php:644
-msgid "GNU Social (Pleroma, Mastodon)"
+#: src/Core/Installer.php:537
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
 msgstr ""
 
-#: mod/dfrn_request.php:645
-msgid "Diaspora (Socialhome, Hubzilla)"
+#: src/Core/Installer.php:538
+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/dfrn_request.php:646
-#, php-format
+#: src/Core/Installer.php:541
+msgid "view/smarty3 is writable"
+msgstr "view/smarty3 är skrivbar"
+
+#: src/Core/Installer.php:569
 msgid ""
-" - please do not use this form.  Instead, enter %s into your Diaspora search"
-" bar."
+"Url rewrite in .htaccess seems not working. Make sure you copied .htaccess-"
+"dist to .htaccess."
 msgstr ""
 
-#: mod/dfrn_request.php:647 mod/follow.php:157 mod/unfollow.php:128
-msgid "Your Identity Address:"
-msgstr "Din adress (ditt ID):"
+#: src/Core/Installer.php:570
+msgid ""
+"In some circumstances (like running inside containers), you can skip this "
+"error."
+msgstr ""
 
-#: mod/dfrn_request.php:649 mod/follow.php:65 mod/unfollow.php:131
-msgid "Submit Request"
-msgstr "Skicka förfrågan"
+#: src/Core/Installer.php:572
+msgid "Error message from Curl when fetching"
+msgstr ""
 
-#: mod/directory.php:121
-msgid "No entries (some entries may be hidden)."
-msgstr "Inget att visa. (Man kan välja att inte synas här)"
+#: src/Core/Installer.php:578
+msgid "Url rewrite is working"
+msgstr ""
 
-#: mod/directory.php:128 src/Content/Widget.php:70
-#: view/theme/vier/theme.php:208
-msgid "Global Directory"
-msgstr "Medlemskatalog för flera sajter (global)"
+#: src/Core/Installer.php:607
+msgid ""
+"The detection of TLS to secure the communication between the browser and the"
+" new Friendica server failed."
+msgstr ""
 
-#: mod/directory.php:130
-msgid "Find on this site"
+#: src/Core/Installer.php:608
+msgid ""
+"It is highly encouraged to use Friendica only over a secure connection as "
+"sensitive information like passwords will be transmitted."
 msgstr ""
 
-#: mod/directory.php:132
-msgid "Results for:"
+#: src/Core/Installer.php:609
+msgid "Please ensure that the connection to the server is secure."
 msgstr ""
 
-#: mod/directory.php:134
-msgid "Site Directory"
-msgstr "Medlemskatalog"
+#: src/Core/Installer.php:610
+msgid "No TLS detected"
+msgstr "Ingen TLS upptäcktes"
 
-#: mod/directory.php:136 src/Content/Widget.php:65 src/Module/Contact.php:817
-#: view/theme/vier/theme.php:203
-msgid "Find"
-msgstr "Sök"
+#: src/Core/Installer.php:612
+msgid "TLS detected"
+msgstr "TLS upptäcktes"
 
-#: mod/directory.php:185 mod/events.php:541 mod/notifications.php:253
-#: src/Model/Event.php:68 src/Model/Event.php:95 src/Model/Event.php:437
-#: src/Model/Event.php:933 src/Model/Profile.php:443
-#: src/Module/Contact.php:643
-msgid "Location:"
-msgstr "Plats:"
+#: src/Core/Installer.php:639
+msgid "ImageMagick PHP extension is not installed"
+msgstr ""
 
-#: mod/directory.php:190 mod/notifications.php:259 src/Model/Profile.php:446
-#: src/Model/Profile.php:758
-msgid "Gender:"
-msgstr "Kön:"
+#: src/Core/Installer.php:641
+msgid "ImageMagick PHP extension is installed"
+msgstr ""
 
-#: mod/directory.php:191 src/Model/Profile.php:447 src/Model/Profile.php:782
-msgid "Status:"
-msgstr "Status:"
+#: src/Core/Installer.php:643
+msgid "ImageMagick supports GIF"
+msgstr "ImageMagick har stöd för GIF"
 
-#: mod/directory.php:192 src/Model/Profile.php:448 src/Model/Profile.php:799
-msgid "Homepage:"
-msgstr "Hemsida:"
+#: src/Core/Installer.php:665
+msgid "Database already in use."
+msgstr "Databas används redan."
 
-#: mod/directory.php:193 mod/notifications.php:255 src/Model/Profile.php:449
-#: src/Model/Profile.php:819 src/Module/Contact.php:647
-msgid "About:"
-msgstr "Om:"
+#: src/Core/Installer.php:670
+msgid "Could not connect to database."
+msgstr "Kunde inte ansluta till databasen."
 
-#: mod/dirfind.php:55
-#, php-format
-msgid "People Search - %s"
-msgstr ""
+#: src/Core/L10n.php:377 src/Model/Event.php:425
+#: src/Module/Settings/Display.php:182
+msgid "Monday"
+msgstr "måndag"
 
-#: mod/dirfind.php:66
-#, php-format
-msgid "Forum Search - %s"
-msgstr ""
+#: src/Core/L10n.php:377 src/Model/Event.php:426
+msgid "Tuesday"
+msgstr "tisdag"
 
-#: mod/dirfind.php:259 mod/match.php:130
-msgid "No matches"
-msgstr "Ingen träff"
+#: src/Core/L10n.php:377 src/Model/Event.php:427
+msgid "Wednesday"
+msgstr "onsdag"
 
-#: mod/editpost.php:29 mod/editpost.php:39
-msgid "Item not found"
-msgstr "Hittades inte"
+#: src/Core/L10n.php:377 src/Model/Event.php:428
+msgid "Thursday"
+msgstr "torsdag"
 
-#: mod/editpost.php:46
-msgid "Edit post"
-msgstr "Ändra inlägg"
+#: src/Core/L10n.php:377 src/Model/Event.php:429
+msgid "Friday"
+msgstr "fredag"
 
-#: mod/editpost.php:73 mod/filer.php:36 mod/notes.php:46
-#: src/Content/Text/HTML.php:894
-msgid "Save"
-msgstr ""
+#: src/Core/L10n.php:377 src/Model/Event.php:430
+msgid "Saturday"
+msgstr "lördag"
 
-#: mod/editpost.php:78 mod/message.php:259 mod/message.php:440
-#: mod/wallmessage.php:140
-msgid "Insert web link"
-msgstr "Infoga länk"
+#: src/Core/L10n.php:377 src/Model/Event.php:424
+#: src/Module/Settings/Display.php:182
+msgid "Sunday"
+msgstr "söndag"
 
-#: mod/editpost.php:79
-msgid "web link"
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:445
+msgid "January"
+msgstr "januari"
 
-#: mod/editpost.php:80
-msgid "Insert video link"
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:446
+msgid "February"
+msgstr "februari"
 
-#: mod/editpost.php:81
-msgid "video link"
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:447
+msgid "March"
+msgstr "mars"
 
-#: mod/editpost.php:82
-msgid "Insert audio link"
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:448
+msgid "April"
+msgstr "april"
 
-#: mod/editpost.php:83
-msgid "audio link"
-msgstr ""
+#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:436
+msgid "May"
+msgstr "maj"
 
-#: mod/editpost.php:98 src/Core/ACL.php:307
-msgid "CC: email addresses"
-msgstr "Kopia: e-postadresser"
+#: src/Core/L10n.php:381 src/Model/Event.php:449
+msgid "June"
+msgstr "juni"
 
-#: mod/editpost.php:105 src/Core/ACL.php:308
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Exempel: adam@exempel.com, bertil@exempel.com"
+#: src/Core/L10n.php:381 src/Model/Event.php:450
+msgid "July"
+msgstr "juli"
 
-#: mod/events.php:117 mod/events.php:119
-msgid "Event can not end before it has started."
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:451
+msgid "August"
+msgstr "augusti"
 
-#: mod/events.php:126 mod/events.php:128
-msgid "Event title and start time are required."
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:452
+msgid "September"
+msgstr "september"
 
-#: mod/events.php:386
-msgid "Create New Event"
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:453
+msgid "October"
+msgstr "oktober"
 
-#: mod/events.php:509
-msgid "Event details"
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:454
+msgid "November"
+msgstr "november"
 
-#: mod/events.php:510
-msgid "Starting date and Title are required."
-msgstr ""
+#: src/Core/L10n.php:381 src/Model/Event.php:455
+msgid "December"
+msgstr "december"
 
-#: mod/events.php:511 mod/events.php:516
-msgid "Event Starts:"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:417
+msgid "Mon"
+msgstr "Mån"
 
-#: mod/events.php:511 mod/events.php:543 mod/profiles.php:592
-msgid "Required"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:418
+msgid "Tue"
+msgstr "Tis"
 
-#: mod/events.php:524 mod/events.php:549
-msgid "Finish date/time is not known or not relevant"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:419
+msgid "Wed"
+msgstr "Ons"
 
-#: mod/events.php:526 mod/events.php:531
-msgid "Event Finishes:"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:420
+msgid "Thu"
+msgstr "Tor"
 
-#: mod/events.php:537 mod/events.php:550
-msgid "Adjust for viewer timezone"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:421
+msgid "Fri"
+msgstr "Fre"
 
-#: mod/events.php:539
-msgid "Description:"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:422
+msgid "Sat"
+msgstr "Lör"
 
-#: mod/events.php:543 mod/events.php:545
-msgid "Title:"
-msgstr ""
+#: src/Core/L10n.php:397 src/Model/Event.php:416
+msgid "Sun"
+msgstr "Sön"
 
-#: mod/events.php:546 mod/events.php:547
-msgid "Share this event"
-msgstr ""
+#: src/Core/L10n.php:401 src/Model/Event.php:432
+msgid "Jan"
+msgstr "Jan"
 
-#: mod/events.php:554 src/Model/Profile.php:877
-msgid "Basic"
-msgstr ""
+#: src/Core/L10n.php:401 src/Model/Event.php:433
+msgid "Feb"
+msgstr "Feb"
 
-#: mod/events.php:556 mod/photos.php:1067 mod/photos.php:1408
-#: src/Core/ACL.php:310
-msgid "Permissions"
-msgstr "Åtkomst"
+#: src/Core/L10n.php:401 src/Model/Event.php:434
+msgid "Mar"
+msgstr "Mar"
 
-#: mod/events.php:572
-msgid "Failed to remove event"
-msgstr ""
+#: src/Core/L10n.php:401 src/Model/Event.php:435
+msgid "Apr"
+msgstr "Apr"
 
-#: mod/events.php:574
-msgid "Event removed"
-msgstr ""
+#: src/Core/L10n.php:401 src/Model/Event.php:437
+msgid "Jun"
+msgstr "Jun"
 
-#: mod/fbrowser.php:36 src/Content/Nav.php:158 src/Model/Profile.php:917
-#: view/theme/frio/theme.php:264
-msgid "Photos"
-msgstr "Bilder"
+#: src/Core/L10n.php:401 src/Model/Event.php:438
+msgid "Jul"
+msgstr "Jul"
 
-#: mod/fbrowser.php:45 mod/fbrowser.php:69 mod/photos.php:201
-#: mod/photos.php:1031 mod/photos.php:1126 mod/photos.php:1143
-#: mod/photos.php:1610 mod/photos.php:1625 src/Model/Photo.php:552
-#: src/Model/Photo.php:561
-msgid "Contact Photos"
-msgstr "Dina kontakters bilder"
+#: src/Core/L10n.php:401 src/Model/Event.php:439
+msgid "Aug"
+msgstr "Aug"
 
-#: mod/fbrowser.php:106 mod/fbrowser.php:136 mod/profile_photo.php:254
-msgid "Upload"
-msgstr "Ladda upp"
+#: src/Core/L10n.php:401
+msgid "Sep"
+msgstr "Sep"
 
-#: mod/fbrowser.php:131
-msgid "Files"
+#: src/Core/L10n.php:401 src/Model/Event.php:441
+msgid "Oct"
+msgstr "Okt"
+
+#: src/Core/L10n.php:401 src/Model/Event.php:442
+msgid "Nov"
+msgstr "Nov"
+
+#: src/Core/L10n.php:401 src/Model/Event.php:443
+msgid "Dec"
+msgstr "Dec"
+
+#: src/Core/L10n.php:420
+msgid "poke"
+msgstr "peta"
+
+#: src/Core/L10n.php:420
+msgid "poked"
+msgstr "petad"
+
+#: src/Core/L10n.php:421
+msgid "ping"
+msgstr "ping"
+
+#: src/Core/L10n.php:421
+msgid "pinged"
+msgstr "pingad"
+
+#: src/Core/L10n.php:422
+msgid "prod"
 msgstr ""
 
-#: mod/feedtest.php:18
-msgid "You must be logged in to use this module"
+#: src/Core/L10n.php:422
+msgid "prodded"
 msgstr ""
 
-#: mod/feedtest.php:45
-msgid "Source URL"
+#: src/Core/L10n.php:423
+msgid "slap"
 msgstr ""
 
-#: mod/filer.php:35
-msgid "- select -"
+#: src/Core/L10n.php:423
+msgid "slapped"
 msgstr ""
 
-#: mod/follow.php:46
-msgid "The contact could not be added."
+#: src/Core/L10n.php:424
+msgid "finger"
+msgstr "finger"
+
+#: src/Core/L10n.php:424
+msgid "fingered"
+msgstr "fingrad"
+
+#: src/Core/L10n.php:425
+msgid "rebuff"
 msgstr ""
 
-#: mod/follow.php:76
-msgid "You already added this contact."
+#: src/Core/L10n.php:425
+msgid "rebuffed"
 msgstr ""
 
-#: mod/follow.php:86
-msgid "Diaspora support isn't enabled. Contact can't be added."
+#: src/Core/Renderer.php:89 src/Core/Renderer.php:118
+#: src/Core/Renderer.php:145 src/Core/Renderer.php:179
+#: src/Render/FriendicaSmartyEngine.php:56
+msgid ""
+"Friendica can't display this page at the moment, please contact the "
+"administrator."
 msgstr ""
 
-#: mod/follow.php:93
-msgid "OStatus support is disabled. Contact can't be added."
+#: src/Core/Renderer.php:141
+msgid "template engine cannot be registered without a name."
 msgstr ""
 
-#: mod/follow.php:100
-msgid "The network type couldn't be detected. Contact can't be added."
+#: src/Core/Renderer.php:175
+msgid "template engine is not registered!"
 msgstr ""
 
-#: mod/follow.php:170 mod/notifications.php:257 src/Model/Profile.php:807
-#: src/Module/Contact.php:649
-msgid "Tags:"
+#: src/Core/Storage/Type/FilesystemConfig.php:78
+msgid "Storage base path"
 msgstr ""
 
-#: mod/follow.php:182 mod/unfollow.php:147 src/Model/Profile.php:904
-#: src/Module/Contact.php:864
-msgid "Status Messages and Posts"
+#: src/Core/Storage/Type/FilesystemConfig.php:80
+msgid ""
+"Folder where uploaded files are saved. For maximum security, This should be "
+"a path outside web server folder tree"
 msgstr ""
 
-#: mod/friendica.php:88
+#: src/Core/Storage/Type/FilesystemConfig.php:93
+msgid "Enter a valid existing folder"
+msgstr "Ange en giltig befintlig mapp"
+
+#: src/Core/Update.php:67
 #, php-format
 msgid ""
-"This is Friendica, version %s that is running at the web location %s. The "
-"database version is %s, the post update version is %s."
+"Updates from version %s are not supported. Please update at least to version"
+" 2021.01 and wait until the postupdate finished version 1383."
 msgstr ""
 
-#: mod/friendica.php:94
+#: src/Core/Update.php:78
+#, php-format
 msgid ""
-"Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more "
-"about the Friendica project."
+"Updates from postupdate version %s are not supported. Please update at least"
+" to version 2021.01 and wait until the postupdate finished version 1383."
 msgstr ""
 
-#: mod/friendica.php:98
-msgid "Bug reports and issues: please visit"
-msgstr "Anmäl buggar eller andra problem, gå till"
-
-#: mod/friendica.php:98
-msgid "the bugtracker at github"
+#: src/Core/Update.php:152
+#, php-format
+msgid "%s: executing pre update %d"
 msgstr ""
 
-#: mod/friendica.php:101
-msgid "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
+#: src/Core/Update.php:190
+#, php-format
+msgid "%s: executing post update %d"
 msgstr ""
 
-#: mod/friendica.php:106
-msgid "Installed addons/apps:"
-msgstr ""
+#: src/Core/Update.php:261
+#, php-format
+msgid "Update %s failed. See error logs."
+msgstr "Uppdateringen %s misslyckades. Se fler loggar."
 
-#: mod/friendica.php:120
-msgid "No installed addons/apps"
+#: src/Core/Update.php:314
+#, php-format
+msgid ""
+"\n"
+"\t\t\t\tThe friendica developers released update %s recently,\n"
+"\t\t\t\tbut when I tried to install it, something went terribly wrong.\n"
+"\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n"
+"\t\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."
 msgstr ""
 
-#: mod/friendica.php:125
+#: src/Core/Update.php:320
 #, php-format
-msgid "Read about the <a href=\"%1$s/tos\">Terms of Service</a> of this node."
-msgstr ""
+msgid "The error message is\\n[pre]%s[/pre]"
+msgstr "Felmeddelandet är \\n[pre]%s[/pre]"
 
-#: mod/friendica.php:130
-msgid "On this server the following remote servers are blocked."
+#: src/Core/Update.php:324 src/Core/Update.php:366
+msgid "[Friendica Notify] Database update"
+msgstr "[Friendica-avisering] Uppdatering av databas"
+
+#: src/Core/Update.php:360
+#, php-format
+msgid ""
+"\n"
+"\t\t\t\t\tThe friendica database was successfully updated from %s to %s."
 msgstr ""
 
-#: mod/fsuggest.php:69
-msgid "Friend suggestion sent."
+#: src/Core/UserImport.php:125
+msgid "Error decoding account file"
 msgstr ""
 
-#: mod/fsuggest.php:93
-msgid "Suggest Friends"
+#: src/Core/UserImport.php:131
+msgid "Error! No version data in file! This is not a Friendica account file?"
 msgstr ""
 
-#: mod/fsuggest.php:95
+#: src/Core/UserImport.php:139
 #, php-format
-msgid "Suggest a friend for %s"
-msgstr ""
+msgid "User '%s' already exists on this server!"
+msgstr "Användaren '%s' existerar redan i den här servern!"
 
-#: mod/group.php:38
-msgid "Group created."
-msgstr "Gruppen har skapats."
+#: src/Core/UserImport.php:175
+msgid "User creation error"
+msgstr "Fel uppstod när användaren skulle skapas"
 
-#: mod/group.php:44
-msgid "Could not create group."
-msgstr "Det gick inte att skapa gruppen."
+#: src/Core/UserImport.php:220
+#, php-format
+msgid "%d contact not imported"
+msgid_plural "%d contacts not imported"
+msgstr[0] "%d kontakt importerades inte"
+msgstr[1] "%d kontakterna importerades inte"
 
-#: mod/group.php:58 mod/group.php:184
-msgid "Group not found."
-msgstr "Gruppen hittades inte."
+#: src/Core/UserImport.php:273
+msgid "User profile creation error"
+msgstr ""
 
-#: mod/group.php:72
-msgid "Group name changed."
-msgstr "Gruppens namn har ändrats."
+#: src/Core/UserImport.php:326
+msgid "Done. You can now login with your username and password"
+msgstr "Färdig. Du kan nu logga in med ditt användarnamn och lösenord"
 
-#: mod/group.php:85 mod/profperm.php:30 src/App.php:1389
-msgid "Permission denied"
-msgstr "Åtkomst nekad"
+#: src/Database/DBStructure.php:65
+#, php-format
+msgid "The database version had been set to %s."
+msgstr "Databas-versionen har ställts in till %s."
 
-#: mod/group.php:103
-msgid "Save Group"
+#: src/Database/DBStructure.php:78
+#, php-format
+msgid ""
+"The post update is at version %d, it has to be at %d to safely drop the "
+"tables."
 msgstr ""
 
-#: mod/group.php:104
-msgid "Filter"
+#: src/Database/DBStructure.php:91
+msgid "No unused tables found."
 msgstr ""
 
-#: mod/group.php:109
-msgid "Create a group of contacts/friends."
-msgstr "Skapa en grupp med kontakter/vänner."
-
-#: mod/group.php:110 mod/group.php:133 mod/group.php:224
-#: src/Model/Group.php:423
-msgid "Group Name: "
-msgstr "Gruppens namn: "
-
-#: mod/group.php:125 src/Model/Group.php:420
-msgid "Contacts not in any group"
+#: src/Database/DBStructure.php:96
+msgid ""
+"These tables are not used for friendica and will be deleted when you execute"
+" \"dbstructure drop -e\":"
 msgstr ""
 
-#: mod/group.php:156
-msgid "Group removed."
-msgstr "Gruppen har tagits bort."
+#: src/Database/DBStructure.php:134
+msgid "There are no tables on MyISAM or InnoDB with the Antelope file format."
+msgstr ""
 
-#: mod/group.php:158
-msgid "Unable to remove group."
-msgstr "Det gick inte att ta bort gruppen."
+#: src/Database/DBStructure.php:158
+#, php-format
+msgid ""
+"\n"
+"Error %d occurred during database update:\n"
+"%s\n"
+msgstr ""
 
-#: mod/group.php:217
-msgid "Delete Group"
+#: src/Database/DBStructure.php:161
+msgid "Errors encountered performing database changes: "
 msgstr ""
 
-#: mod/group.php:228
-msgid "Edit Group Name"
+#: src/Database/DBStructure.php:549
+msgid "Another database update is currently running."
 msgstr ""
 
-#: mod/group.php:239
-msgid "Members"
-msgstr "Medlemmar"
+#: src/Database/DBStructure.php:553
+#, php-format
+msgid "%s: Database update"
+msgstr "%s: Uppdatering av databas"
 
-#: mod/group.php:241 src/Module/Contact.php:704
-msgid "All Contacts"
-msgstr "Alla kontakter"
+#: src/Database/DBStructure.php:803
+#, php-format
+msgid "%s: updating %s table."
+msgstr ""
 
-#: mod/group.php:242 mod/network.php:654
-msgid "Group is empty"
-msgstr "Gruppen är tom"
+#: src/Factory/Api/Mastodon/Error.php:55
+msgid "Record not found"
+msgstr "Posten hittades inte"
 
-#: mod/group.php:255
-msgid "Remove contact from group"
+#: src/Factory/Api/Mastodon/Error.php:65
+msgid "Unprocessable Entity"
 msgstr ""
 
-#: mod/group.php:273 mod/profperm.php:119
-msgid "Click on a contact to add or remove."
-msgstr "Klicka på en kontakt för att lägga till eller ta bort."
+#: src/Factory/Api/Mastodon/Error.php:75
+msgid "Unauthorized"
+msgstr "Ej autentiserad"
 
-#: mod/group.php:287
-msgid "Add contact to group"
+#: src/Factory/Api/Mastodon/Error.php:85
+msgid ""
+"Token is not authorized with a valid user or is missing a required scope"
 msgstr ""
 
-#: mod/hcard.php:20
-msgid "No profile"
-msgstr "Ingen profil"
+#: src/Factory/Api/Mastodon/Error.php:95
+msgid "Internal Server Error"
+msgstr "Internt server-fel"
 
-#: mod/help.php:52
-msgid "Help:"
-msgstr "Hjälp:"
+#: src/LegacyModule.php:63
+#, php-format
+msgid "Legacy module file not found: %s"
+msgstr ""
 
-#: mod/help.php:59 src/Content/Nav.php:190 view/theme/vier/theme.php:294
-msgid "Help"
-msgstr "Hjälp"
+#: src/Model/Contact.php:1056 src/Model/Contact.php:1068
+msgid "UnFollow"
+msgstr "Avfölj"
 
-#: mod/help.php:65 src/App.php:1307
-msgid "Not Found"
-msgstr "Hittar inte"
+#: src/Model/Contact.php:1074 src/Module/Admin/Users/Pending.php:107
+#: src/Module/Notifications/Introductions.php:130
+#: src/Module/Notifications/Introductions.php:202
+msgid "Approve"
+msgstr "Godkänn"
 
-#: mod/home.php:40
-#, php-format
-msgid "Welcome to %s"
-msgstr "Välkommen till %s"
+#: src/Model/Contact.php:1489
+msgid "Organisation"
+msgstr "Organisation"
 
-#: mod/invite.php:36
-msgid "Total invitation limit exceeded."
-msgstr ""
+#: src/Model/Contact.php:1497
+msgid "Forum"
+msgstr "Forum"
 
-#: mod/invite.php:60
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : Ogiltig e-postadress."
+#: src/Model/Contact.php:2372
+msgid "Disallowed profile URL."
+msgstr "Otillåten profil-URL."
 
-#: mod/invite.php:87
-msgid "Please join us on Friendica"
+#: src/Model/Contact.php:2377 src/Module/Friendica.php:81
+msgid "Blocked domain"
 msgstr ""
 
-#: mod/invite.php:96
-msgid "Invitation limit exceeded. Please contact your site administrator."
+#: src/Model/Contact.php:2382
+msgid "Connect URL missing."
 msgstr ""
 
-#: mod/invite.php:100
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Meddelandet kom inte fram."
+#: src/Model/Contact.php:2391
+msgid ""
+"The contact could not be added. Please check the relevant network "
+"credentials in your Settings -> Social Networks page."
+msgstr ""
 
-#: mod/invite.php:104
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d meddelande har skickats."
-msgstr[1] "%d meddelanden har skickats."
+#: src/Model/Contact.php:2428
+msgid "The profile address specified does not provide adequate information."
+msgstr "Angiven profiladress ger inte tillräcklig information."
 
-#: mod/invite.php:122
-msgid "You have no more invitations available"
+#: src/Model/Contact.php:2430
+msgid "No compatible communication protocols or feeds were discovered."
 msgstr ""
 
-#: mod/invite.php:130
-#, 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."
+#: src/Model/Contact.php:2433
+msgid "An author or name was not found."
+msgstr "En författare eller namnet hittades inte."
+
+#: src/Model/Contact.php:2436
+msgid "No browser URL could be matched to this address."
 msgstr ""
 
-#: mod/invite.php:132
-#, php-format
+#: src/Model/Contact.php:2439
 msgid ""
-"To accept this invitation, please visit and register at %s or any other "
-"public Friendica website."
+"Unable to match @-style Identity Address with a known protocol or email "
+"contact."
 msgstr ""
 
-#: mod/invite.php:133
-#, 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."
+#: src/Model/Contact.php:2440
+msgid "Use mailto: in front of address to force email check."
 msgstr ""
 
-#: mod/invite.php:137
+#: src/Model/Contact.php:2446
 msgid ""
-"Our apologies. This system is not currently configured to connect with other"
-" public sites or invite members."
+"The profile address specified belongs to a network which has been disabled "
+"on this site."
 msgstr ""
 
-#: mod/invite.php:141
+#: src/Model/Contact.php:2451
 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."
-msgstr ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr "Begränsad profil. Den här personen kommer inte att kunna ta emot personliga meddelanden från dig."
 
-#: mod/invite.php:140
-#, php-format
-msgid "To accept this invitation, please visit and register at %s."
+#: src/Model/Contact.php:2510
+msgid "Unable to retrieve contact information."
+msgstr "Det gick inte att komma åt kontaktinformationen."
+
+#: src/Model/Event.php:52
+msgid "l F d, Y \\@ g:i A \\G\\M\\TP (e)"
 msgstr ""
 
-#: mod/invite.php:147
-msgid "Send invitations"
-msgstr "Skicka inbjudningar"
+#: src/Model/Event.php:73 src/Model/Event.php:90 src/Model/Event.php:464
+#: src/Model/Event.php:897
+msgid "Starts:"
+msgstr "Börjar:"
 
-#: mod/invite.php:148
-msgid "Enter email addresses, one per line:"
-msgstr "Ange e-postadresser, en per rad:"
+#: src/Model/Event.php:76 src/Model/Event.php:96 src/Model/Event.php:465
+#: src/Model/Event.php:901
+msgid "Finishes:"
+msgstr "Slutar:"
 
-#: mod/invite.php:149 mod/message.php:255 mod/message.php:435
-#: mod/wallmessage.php:137
-msgid "Your message:"
-msgstr "Meddelande:"
+#: src/Model/Event.php:414
+msgid "all-day"
+msgstr "hela dagen"
 
-#: mod/invite.php:149
-msgid ""
-"You are cordially invited to join me and other close friends on Friendica - "
-"and help us to create a better social web."
-msgstr ""
+#: src/Model/Event.php:440
+msgid "Sept"
+msgstr "Sept"
 
-#: mod/invite.php:151
-msgid "You will need to supply this invitation code: $invite_code"
+#: src/Model/Event.php:462
+msgid "No events to display"
+msgstr "Inga evenemang att visa"
+
+#: src/Model/Event.php:578
+msgid "l, F j"
+msgstr "l, F j"
+
+#: src/Model/Event.php:609
+msgid "Edit event"
+msgstr "Redigera evenemang"
+
+#: src/Model/Event.php:610
+msgid "Duplicate event"
+msgstr "Fördubbla evenemanget"
+
+#: src/Model/Event.php:611
+msgid "Delete event"
+msgstr "Ta bort evenemanget"
+
+#: src/Model/Event.php:853 src/Module/Debug/Localtime.php:38
+msgid "l F d, Y \\@ g:i A"
 msgstr ""
 
-#: mod/invite.php:151
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
-msgstr "Vi kan bli kontakter via min profil. Besök min profil här när du har registrerat dig:"
+#: src/Model/Event.php:854
+msgid "D g:i A"
+msgstr ""
 
-#: mod/invite.php:153
-msgid ""
-"For more information about the Friendica project and why we feel it is "
-"important, please visit http://friendi.ca"
+#: src/Model/Event.php:855
+msgid "g:i A"
 msgstr ""
 
-#: mod/item.php:120
-msgid "Unable to locate original post."
-msgstr "Hittar inte det ursprungliga inlägget."
+#: src/Model/Event.php:916 src/Model/Event.php:918
+msgid "Show map"
+msgstr "Visa karta"
 
-#: mod/item.php:320
-msgid "Empty post discarded."
-msgstr "Tomt inlägg. Inte sparat."
+#: src/Model/Event.php:917
+msgid "Hide map"
+msgstr "Göm karta"
 
-#: mod/item.php:841
+#: src/Model/Event.php:1009
 #, php-format
+msgid "%s's birthday"
+msgstr "%s's födelsedag"
+
+#: src/Model/Event.php:1010
+#, php-format
+msgid "Happy Birthday %s"
+msgstr "Grattis på födelsedagen %s"
+
+#: src/Model/Group.php:94
 msgid ""
-"This message was sent to you by %s, a member of the Friendica social "
-"network."
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
 msgstr ""
 
-#: mod/item.php:843
-#, php-format
-msgid "You may visit them online at %s"
+#: src/Model/Group.php:423
+msgid "Default privacy group for new contacts"
 msgstr ""
 
-#: mod/item.php:844
-msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr "Kontakta avsändaren genom att svara på det här meddelandet om du inte vill ha sådana här meddelanden."
+#: src/Model/Group.php:455
+msgid "Everybody"
+msgstr "Alla"
 
-#: mod/item.php:848
-#, php-format
-msgid "%s posted an update."
-msgstr "%s har gjort ett inlägg."
+#: src/Model/Group.php:474
+msgid "edit"
+msgstr "redigera"
 
-#: mod/localtime.php:19 src/Model/Event.php:34 src/Model/Event.php:847
-msgid "l F d, Y \\@ g:i A"
-msgstr ""
+#: src/Model/Group.php:506
+msgid "add"
+msgstr "lägg till"
 
-#: mod/localtime.php:33
-msgid "Time Conversion"
-msgstr ""
+#: src/Model/Group.php:511
+msgid "Edit group"
+msgstr "Redigera gruppen"
 
-#: mod/localtime.php:35
-msgid ""
-"Friendica provides this service for sharing events with other networks and "
-"friends in unknown timezones."
-msgstr ""
+#: src/Model/Group.php:512 src/Module/Group.php:194
+msgid "Contacts not in any group"
+msgstr "Kontakterna finns inte i någon av grupperna"
 
-#: mod/localtime.php:39
-#, php-format
-msgid "UTC time: %s"
-msgstr ""
+#: src/Model/Group.php:514
+msgid "Create a new group"
+msgstr "Skapa ny grupp"
+
+#: src/Model/Group.php:515 src/Module/Group.php:179 src/Module/Group.php:202
+#: src/Module/Group.php:277
+msgid "Group Name: "
+msgstr "Gruppens namn: "
 
-#: mod/localtime.php:42
+#: src/Model/Group.php:516
+msgid "Edit groups"
+msgstr "Redigera grupper"
+
+#: src/Model/Item.php:1679
 #, php-format
-msgid "Current timezone: %s"
-msgstr ""
+msgid "Detected languages in this post:\\n%s"
+msgstr "Upptäckte språken i det här inlägget:\\n%s"
+
+#: src/Model/Item.php:2630
+msgid "activity"
+msgstr "aktivitet"
+
+#: src/Model/Item.php:2632
+msgid "comment"
+msgstr "kommentar"
 
-#: mod/localtime.php:46
+#: src/Model/Item.php:2635
+msgid "post"
+msgstr "inlägg"
+
+#: src/Model/Item.php:2772
 #, php-format
-msgid "Converted localtime: %s"
-msgstr ""
+msgid "Content warning: %s"
+msgstr "Innehållsvarning: %s"
 
-#: mod/localtime.php:52
-msgid "Please select your timezone:"
-msgstr ""
+#: src/Model/Item.php:3122
+msgid "bytes"
+msgstr "bytes"
 
-#: mod/lockview.php:46 mod/lockview.php:57
-msgid "Remote privacy information not available."
-msgstr "Remote privacy information not available."
+#: src/Model/Item.php:3151 src/Model/Item.php:3152
+msgid "View on separate page"
+msgstr "Visa på en separat sida"
 
-#: mod/lockview.php:66
-msgid "Visible to:"
-msgstr "Synlig för:"
+#: src/Model/Mail.php:134 src/Model/Mail.php:266
+msgid "[no subject]"
+msgstr "[ingen rubrik]"
 
-#: mod/lostpass.php:26
-msgid "No valid account found."
-msgstr ""
+#: src/Model/Profile.php:356 src/Module/Profile/Profile.php:256
+#: src/Module/Profile/Profile.php:258
+msgid "Edit profile"
+msgstr "Redigera profil"
 
-#: mod/lostpass.php:38
-msgid "Password reset request issued. Check your email."
-msgstr "Nytt lösenord har begärts. Kolla din mail."
+#: src/Model/Profile.php:358
+msgid "Change profile photo"
+msgstr "Byt profilbild"
 
-#: mod/lostpass.php:44
-#, 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, the request will expire shortly.\n"
-"\n"
-"\t\tYour password will not be changed unless we can verify that you\n"
-"\t\tissued this request."
-msgstr ""
+#: src/Model/Profile.php:371 src/Module/Directory.php:152
+#: src/Module/Profile/Profile.php:184
+msgid "Homepage:"
+msgstr "Hemsida:"
 
-#: mod/lostpass.php:55
-#, php-format
-msgid ""
-"\n"
-"\t\tFollow this link soon 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"
+#: src/Model/Profile.php:372 src/Module/Contact/Profile.php:375
+#: src/Module/Notifications/Introductions.php:187
+msgid "About:"
+msgstr "Om:"
+
+#: src/Model/Profile.php:458
+msgid "Atom feed"
+msgstr "Atom-flöde"
+
+#: src/Model/Profile.php:502
+msgid "F d"
 msgstr ""
 
-#: mod/lostpass.php:74
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Nytt lösenord på %s har begärts"
+#: src/Model/Profile.php:566 src/Model/Profile.php:650
+msgid "[today]"
+msgstr "[idag]"
 
-#: mod/lostpass.php:89
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Begäran kunde inte verifieras. (Du kanske redan skickat den?) Det gick inte att byta lösenord."
+#: src/Model/Profile.php:575
+msgid "Birthday Reminders"
+msgstr "Födelsedagspåminnelser"
 
-#: mod/lostpass.php:102
-msgid "Request has expired, please make a new one."
-msgstr ""
+#: src/Model/Profile.php:576
+msgid "Birthdays this week:"
+msgstr "Födelsedagar denna vecka:"
 
-#: mod/lostpass.php:117
-msgid "Forgot your Password?"
-msgstr "Glömt lösenordet?"
+#: src/Model/Profile.php:599
+msgid "g A l F d"
+msgstr "g A l F d"
 
-#: mod/lostpass.php:118
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Ange din e-postadress för att få ett nytt lösenord. Du kommer att få ett meddelande med vidare instruktioner via e-post."
+#: src/Model/Profile.php:637
+msgid "[No description]"
+msgstr "[Ingen beskrivning]"
 
-#: mod/lostpass.php:119 src/Module/Login.php:324
-msgid "Nickname or Email: "
-msgstr "Användarnamn eller e-post:"
+#: src/Model/Profile.php:663
+msgid "Event Reminders"
+msgstr "Evenemangspåminnare"
 
-#: mod/lostpass.php:120
-msgid "Reset"
-msgstr "Skicka"
+#: src/Model/Profile.php:664
+msgid "Upcoming events the next 7 days:"
+msgstr "Evenemang som kommer de kommande 7 dagarna:"
 
-#: mod/lostpass.php:135 src/Module/Login.php:336
-msgid "Password Reset"
-msgstr "Glömt lösenordet?"
+#: src/Model/Profile.php:852
+#, php-format
+msgid "OpenWebAuth: %1$s welcomes %2$s"
+msgstr "OpenWebAuth: %1$s välkomnar %2$s"
 
-#: mod/lostpass.php:136
-msgid "Your password has been reset as requested."
-msgstr "Nu har du fått ett nytt lösenord."
+#: src/Model/Profile.php:984
+msgid "Hometown:"
+msgstr "Hemstad:"
 
-#: mod/lostpass.php:137
-msgid "Your new password is"
-msgstr "Det nya lösenordet är"
+#: src/Model/Profile.php:985
+msgid "Marital Status:"
+msgstr "Civilstånd:"
 
-#: mod/lostpass.php:138
-msgid "Save or copy your new password - and then"
-msgstr "Spara eller kopiera lösenordet och"
+#: src/Model/Profile.php:986
+msgid "With:"
+msgstr "Med:"
 
-#: mod/lostpass.php:139
-msgid "click here to login"
-msgstr "klicka här för att logga in"
+#: src/Model/Profile.php:987
+msgid "Since:"
+msgstr "Sedan:"
 
-#: mod/lostpass.php:140
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "När du loggat in kan du byta lösenord på sidan <em>Inställningar</em>."
+#: src/Model/Profile.php:988
+msgid "Sexual Preference:"
+msgstr "Sexualitet"
 
-#: mod/lostpass.php:148
-#, php-format
-msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tYour password has been changed as requested. Please retain this\n"
-"\t\t\tinformation for your records (or change your password immediately to\n"
-"\t\t\tsomething that you will remember).\n"
-"\t\t"
-msgstr ""
+#: src/Model/Profile.php:989
+msgid "Political Views:"
+msgstr "Politisk åskådning:"
 
-#: mod/lostpass.php:154
-#, php-format
-msgid ""
-"\n"
-"\t\t\tYour login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%1$s\n"
-"\t\t\tLogin Name:\t%2$s\n"
-"\t\t\tPassword:\t%3$s\n"
-"\n"
-"\t\t\tYou may change that password from your account settings page after logging in.\n"
-"\t\t"
-msgstr ""
+#: src/Model/Profile.php:990
+msgid "Religious Views:"
+msgstr "Religion:"
 
-#: mod/lostpass.php:170
-#, php-format
-msgid "Your password has been changed at %s"
+#: src/Model/Profile.php:991
+msgid "Likes:"
 msgstr ""
 
-#: mod/maintenance.php:26
-msgid "System down for maintenance"
+#: src/Model/Profile.php:992
+msgid "Dislikes:"
 msgstr ""
 
-#: mod/manage.php:178
-msgid "Manage Identities and/or Pages"
-msgstr "Hantera identiteter eller sidor"
+#: src/Model/Profile.php:993
+msgid "Title/Description:"
+msgstr "Titel/Beskrivning:"
 
-#: mod/manage.php:179
-msgid ""
-"Toggle between different identities or community/group pages which share "
-"your account details or which you have been granted \"manage\" permissions"
-msgstr ""
+#: src/Model/Profile.php:994 src/Module/Admin/Summary.php:233
+msgid "Summary"
+msgstr "Sammanfattning"
 
-#: mod/manage.php:180
-msgid "Select an identity to manage: "
-msgstr "Välj vilken identitet du vill hantera: "
+#: src/Model/Profile.php:995
+msgid "Musical interests"
+msgstr "Musik"
 
-#: mod/match.php:49
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr ""
+#: src/Model/Profile.php:996
+msgid "Books, literature"
+msgstr "Böcker, litteratur"
 
-#: mod/match.php:115 src/Content/Pager.php:198
-msgid "first"
-msgstr "första"
+#: src/Model/Profile.php:997
+msgid "Television"
+msgstr "TV"
 
-#: mod/match.php:120 src/Content/Pager.php:258
-msgid "next"
-msgstr "nästa"
+#: src/Model/Profile.php:998
+msgid "Film/dance/culture/entertainment"
+msgstr "Film/Dans/Kultur/Nöje"
 
-#: mod/match.php:135
-msgid "Profile Match"
-msgstr "Matcha profiler"
+#: src/Model/Profile.php:999
+msgid "Hobbies/Interests"
+msgstr "Hobbys/Intressen"
 
-#: mod/message.php:33 mod/message.php:116 src/Content/Nav.php:255
-msgid "New Message"
-msgstr "Nytt meddelande"
+#: src/Model/Profile.php:1000
+msgid "Love/romance"
+msgstr "Kärlek/Romantik"
 
-#: mod/message.php:70 mod/wallmessage.php:60
-msgid "No recipient selected."
-msgstr "Ingen mottagare har valts."
+#: src/Model/Profile.php:1001
+msgid "Work/employment"
+msgstr "Arbete"
 
-#: mod/message.php:74
-msgid "Unable to locate contact information."
-msgstr "Det gick inte att hitta kontaktuppgifterna."
+#: src/Model/Profile.php:1002
+msgid "School/education"
+msgstr "Skola/Utbildning"
 
-#: mod/message.php:77 mod/wallmessage.php:66
-msgid "Message could not be sent."
-msgstr "Det gick inte att skicka meddelandet."
+#: src/Model/Profile.php:1003
+msgid "Contact information and Social Networks"
+msgstr "Kontaktuppgifter och sociala nätverk"
 
-#: mod/message.php:80 mod/wallmessage.php:69
-msgid "Message collection failure."
+#: src/Model/User.php:208 src/Model/User.php:1029
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr "SERIOUS ERROR: Generation of security keys failed."
+
+#: src/Model/User.php:568 src/Model/User.php:601
+msgid "Login failed"
+msgstr "Inloggningen misslyckades"
+
+#: src/Model/User.php:633
+msgid "Not enough information to authenticate"
+msgstr "Inte tillräckligt med information för att autentisera"
+
+#: src/Model/User.php:728
+msgid "Password can't be empty"
+msgstr "Lösenordet kan inte vara tomt"
+
+#: src/Model/User.php:747
+msgid "Empty passwords are not allowed."
+msgstr "Tomma lösenord är inte tillåtna."
+
+#: src/Model/User.php:751
+msgid ""
+"The new password has been exposed in a public data dump, please choose "
+"another."
 msgstr ""
 
-#: mod/message.php:83 mod/wallmessage.php:72
-msgid "Message sent."
-msgstr "Meddelandet har skickats."
+#: src/Model/User.php:757
+msgid ""
+"The password can't contain accentuated letters, white spaces or colons (:)"
+msgstr ""
 
-#: mod/message.php:110 mod/notifications.php:47 mod/notifications.php:187
-#: mod/notifications.php:235
-msgid "Discard"
-msgstr "Ta bort"
+#: src/Model/User.php:909
+msgid "Passwords do not match. Password unchanged."
+msgstr "Lösenorden skiljer sig åt. Lösenordet ändras inte."
 
-#: mod/message.php:123 src/Content/Nav.php:252 view/theme/frio/theme.php:271
-msgid "Messages"
-msgstr "Meddelanden"
+#: src/Model/User.php:916
+msgid "An invitation is required."
+msgstr "En inbjudning krävs."
 
-#: mod/message.php:148
-msgid "Do you really want to delete this message?"
+#: src/Model/User.php:920
+msgid "Invitation could not be verified."
+msgstr "Inbjudningen kunde inte bekräftas."
+
+#: src/Model/User.php:928
+msgid "Invalid OpenID url"
+msgstr "Ogiltig OpenID-URL"
+
+#: src/Model/User.php:941 src/Security/Authentication.php:235
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
 msgstr ""
 
-#: mod/message.php:166
-msgid "Conversation not found."
+#: src/Model/User.php:941 src/Security/Authentication.php:235
+msgid "The error message was:"
+msgstr "Felmeddelandet var:"
+
+#: src/Model/User.php:947
+msgid "Please enter the required information."
+msgstr "Fyll i alla obligatoriska fält."
+
+#: src/Model/User.php:961
+#, php-format
+msgid ""
+"system.username_min_length (%s) and system.username_max_length (%s) are "
+"excluding each other, swapping values."
 msgstr ""
 
-#: mod/message.php:171
-msgid "Message deleted."
-msgstr "Meddelandet togs bort."
+#: src/Model/User.php:968
+#, php-format
+msgid "Username should be at least %s character."
+msgid_plural "Username should be at least %s characters."
+msgstr[0] "Användarnamnet bör ha åtminstone %s tecken."
+msgstr[1] "Användarnamn borde ha åtminstone %s tecken."
+
+#: src/Model/User.php:972
+#, php-format
+msgid "Username should be at most %s character."
+msgid_plural "Username should be at most %s characters."
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/message.php:176 mod/message.php:190
-msgid "Conversation removed."
-msgstr "Konversationen togs bort."
+#: src/Model/User.php:980
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr "Du verkar inte ha angett ditt fullständiga namn."
 
-#: mod/message.php:204 mod/message.php:360 mod/wallmessage.php:123
-msgid "Please enter a link URL:"
-msgstr "Ange en länk (URL):"
+#: src/Model/User.php:985
+msgid "Your email domain is not among those allowed on this site."
+msgstr "Din e-postdomän är inte tillåten på den här webbplatsen."
 
-#: mod/message.php:246 mod/wallmessage.php:128
-msgid "Send Private Message"
-msgstr "Skicka personligt meddelande"
+#: src/Model/User.php:989
+msgid "Not a valid email address."
+msgstr "Ogiltig e-postadress."
 
-#: mod/message.php:247 mod/message.php:430 mod/wallmessage.php:130
-msgid "To:"
-msgstr "Till:"
+#: src/Model/User.php:992
+msgid "The nickname was blocked from registration by the nodes admin."
+msgstr ""
 
-#: mod/message.php:251 mod/message.php:432 mod/wallmessage.php:131
-msgid "Subject:"
-msgstr "Rubrik:"
+#: src/Model/User.php:996 src/Model/User.php:1004
+msgid "Cannot use that email."
+msgstr "Otillåten e-postadress."
 
-#: mod/message.php:289
-msgid "No messages."
-msgstr "Inga meddelanden."
+#: src/Model/User.php:1011
+msgid "Your nickname can only contain a-z, 0-9 and _."
+msgstr ""
+
+#: src/Model/User.php:1019 src/Model/User.php:1076
+msgid "Nickname is already registered. Please choose another."
+msgstr "Användarnamnet är upptaget. Välj ett annat."
 
-#: mod/message.php:352
-msgid "Message not available."
-msgstr "Meddelandet är inte tillgängligt."
+#: src/Model/User.php:1063 src/Model/User.php:1067
+msgid "An error occurred during registration. Please try again."
+msgstr "Något gick fel vid registreringen. Försök igen."
 
-#: mod/message.php:406
-msgid "Delete message"
-msgstr "Ta bort meddelande"
+#: src/Model/User.php:1090
+msgid "An error occurred creating your default profile. Please try again."
+msgstr "Det blev fel när din standardprofil skulle skapas. Prova igen."
 
-#: mod/message.php:408 mod/message.php:540
-msgid "D, d M Y - g:i A"
-msgstr "D, d M Y - g:i A"
+#: src/Model/User.php:1097
+msgid "An error occurred creating your self contact. Please try again."
+msgstr ""
 
-#: mod/message.php:423 mod/message.php:537
-msgid "Delete conversation"
-msgstr "Ta bort konversation"
+#: src/Model/User.php:1102
+msgid "Friends"
+msgstr "Vänner"
 
-#: mod/message.php:425
+#: src/Model/User.php:1106
 msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
+"An error occurred creating your default contact group. Please try again."
 msgstr ""
 
-#: mod/message.php:429
-msgid "Send Reply"
-msgstr "Skicka svar"
+#: src/Model/User.php:1144
+msgid "Profile Photos"
+msgstr "Profilbilder"
 
-#: mod/message.php:512
+#: src/Model/User.php:1338
 #, php-format
-msgid "Unknown sender - %s"
+msgid ""
+"\n"
+"\t\tDear %1$s,\n"
+"\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr ""
 
-#: mod/message.php:514
+#: src/Model/User.php:1341
 #, php-format
-msgid "You and %s"
+msgid ""
+"\n"
+"\t\tThe login details are as follows:\n"
+"\n"
+"\t\tSite Location:\t%1$s\n"
+"\t\tLogin Name:\t\t%2$s\n"
+"\t\tPassword:\t\t%3$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"
+"\t\tIf you ever want to delete your account, you can do so at %1$s/removeme\n"
+"\n"
+"\t\tThank you and welcome to %4$s."
 msgstr ""
 
-#: mod/message.php:516
+#: src/Model/User.php:1374 src/Model/User.php:1481
 #, php-format
-msgid "%s and You"
+msgid "Registration details for %s"
 msgstr ""
 
-#: mod/message.php:543
+#: src/Model/User.php:1394
 #, php-format
-msgid "%d message"
-msgid_plural "%d messages"
-msgstr[0] ""
-msgstr[1] ""
-
-#: mod/network.php:183 mod/search.php:38
-msgid "Remove term"
+msgid ""
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tThank you for registering at %2$s. Your account is pending for approval by the administrator.\n"
+"\n"
+"\t\t\tYour login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%3$s\n"
+"\t\t\tLogin Name:\t\t%4$s\n"
+"\t\t\tPassword:\t\t%5$s\n"
+"\t\t"
 msgstr ""
 
-#: mod/network.php:190 mod/search.php:47
-msgid "Saved Searches"
+#: src/Model/User.php:1413
+#, php-format
+msgid "Registration at %s"
 msgstr ""
 
-#: mod/network.php:191 src/Model/Group.php:414
-msgid "add"
+#: src/Model/User.php:1437
+#, php-format
+msgid ""
+"\n"
+"\t\t\t\tDear %1$s,\n"
+"\t\t\t\tThank you for registering at %2$s. Your account has been created.\n"
+"\t\t\t"
 msgstr ""
 
-#: mod/network.php:563
+#: src/Model/User.php:1445
 #, 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:566
-msgid "Messages in this group won't be send to these receivers."
+"\n"
+"\t\t\tThe login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%3$s\n"
+"\t\t\tLogin Name:\t\t%1$s\n"
+"\t\t\tPassword:\t\t%5$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\tIf you ever want to delete your account, you can do so at %3$s/removeme\n"
+"\n"
+"\t\t\tThank you and welcome to %2$s."
 msgstr ""
 
-#: mod/network.php:633
-msgid "No such group"
-msgstr "Gruppen finns inte"
+#: src/Module/Admin/Addons/Details.php:65
+msgid "Addon not found."
+msgstr "Insticksprogrammet hittades inte."
 
-#: mod/network.php:658
+#: src/Module/Admin/Addons/Details.php:76 src/Module/Admin/Addons/Index.php:49
 #, php-format
-msgid "Group: %s"
-msgstr ""
+msgid "Addon %s disabled."
+msgstr "Insticksprogrammet %s är inaktiverat."
 
-#: mod/network.php:684
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:79 src/Module/Admin/Addons/Index.php:51
+#, php-format
+msgid "Addon %s enabled."
+msgstr "Insticksprogrammet %s är aktiverat."
 
-#: mod/network.php:687
-msgid "Invalid contact."
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:88
+#: src/Module/Admin/Themes/Details.php:46
+msgid "Disable"
+msgstr "Inaktivera"
 
-#: mod/network.php:966
-msgid "Commented Order"
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:91
+#: src/Module/Admin/Themes/Details.php:49
+msgid "Enable"
+msgstr "Aktivera"
+
+#: src/Module/Admin/Addons/Details.php:111
+#: src/Module/Admin/Addons/Index.php:67
+#: src/Module/Admin/Blocklist/Contact.php:94
+#: src/Module/Admin/Blocklist/Server/Add.php:89
+#: src/Module/Admin/Blocklist/Server/Index.php:78
+#: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:64
+#: src/Module/Admin/Logs/Settings.php:79 src/Module/Admin/Logs/View.php:83
+#: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:498
+#: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:232
+#: src/Module/Admin/Themes/Details.php:90
+#: src/Module/Admin/Themes/Index.php:111 src/Module/Admin/Tos.php:75
+#: src/Module/Admin/Users/Active.php:136
+#: src/Module/Admin/Users/Blocked.php:137 src/Module/Admin/Users/Create.php:61
+#: src/Module/Admin/Users/Deleted.php:85 src/Module/Admin/Users/Index.php:149
+#: src/Module/Admin/Users/Pending.php:101
+msgid "Administration"
+msgstr "Administration"
 
-#: mod/network.php:969
-msgid "Sort by Comment Date"
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:112
+#: src/Module/Admin/Addons/Index.php:68 src/Module/BaseAdmin.php:93
+#: src/Module/BaseSettings.php:85
+msgid "Addons"
+msgstr "Insticksprogram"
 
-#: mod/network.php:974
-msgid "Posted Order"
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:113
+#: src/Module/Admin/Themes/Details.php:92
+msgid "Toggle"
+msgstr "Växla"
 
-#: mod/network.php:977
-msgid "Sort by Post Date"
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:121
+#: src/Module/Admin/Themes/Details.php:101
+msgid "Author: "
+msgstr "Författare:"
 
-#: mod/network.php:984 mod/profiles.php:579
-#: src/Core/NotificationsManager.php:189
-msgid "Personal"
-msgstr ""
+#: src/Module/Admin/Addons/Details.php:122
+#: src/Module/Admin/Themes/Details.php:102
+msgid "Maintainer: "
+msgstr "Underhållare:"
 
-#: mod/network.php:987
-msgid "Posts that mention or involve you"
+#: src/Module/Admin/Addons/Index.php:42
+msgid "Addons reloaded"
 msgstr ""
 
-#: mod/network.php:994
-msgid "New"
+#: src/Module/Admin/Addons/Index.php:53
+#, php-format
+msgid "Addon %s failed to install."
 msgstr ""
 
-#: mod/network.php:997
-msgid "Activity Stream - by date"
+#: src/Module/Admin/Addons/Index.php:70
+msgid "Reload active addons"
 msgstr ""
 
-#: mod/network.php:1005
-msgid "Shared Links"
+#: src/Module/Admin/Addons/Index.php:75
+#, php-format
+msgid ""
+"There are currently no addons available on your node. You can find the "
+"official addon repository at %1$s and might find other interesting addons in"
+" the open addon registry at %2$s"
 msgstr ""
 
-#: mod/network.php:1008
-msgid "Interesting Links"
-msgstr ""
+#: src/Module/Admin/BaseUsers.php:54
+msgid "List of all users"
+msgstr "Lista över alla användare"
 
-#: mod/network.php:1015
-msgid "Starred"
+#: src/Module/Admin/BaseUsers.php:59
+msgid "Active"
+msgstr "Aktiv"
+
+#: src/Module/Admin/BaseUsers.php:62
+msgid "List of active accounts"
+msgstr "Lista över aktiva konton"
+
+#: src/Module/Admin/BaseUsers.php:67 src/Module/Contact.php:314
+#: src/Module/Contact.php:374
+msgid "Pending"
 msgstr ""
 
-#: mod/network.php:1018
-msgid "Favourite Posts"
+#: src/Module/Admin/BaseUsers.php:70
+msgid "List of pending registrations"
 msgstr ""
 
-#: mod/newmember.php:12
-msgid "Welcome to Friendica"
+#: src/Module/Admin/BaseUsers.php:75 src/Module/Contact.php:322
+#: src/Module/Contact.php:375
+msgid "Blocked"
+msgstr "Blockerad"
+
+#: src/Module/Admin/BaseUsers.php:78
+msgid "List of blocked users"
+msgstr "Lista över blockerade användare"
+
+#: src/Module/Admin/BaseUsers.php:83
+msgid "Deleted"
+msgstr "Ta bort"
+
+#: src/Module/Admin/BaseUsers.php:86
+msgid "List of pending user deletions"
 msgstr ""
 
-#: mod/newmember.php:13
-msgid "New Member Checklist"
+#: src/Module/Admin/BaseUsers.php:104
+msgid "Private Forum"
+msgstr "Privat forum"
+
+#: src/Module/Admin/BaseUsers.php:111
+msgid "Relay"
+msgstr "Fördröj"
+
+#: src/Module/Admin/Blocklist/Contact.php:54
+msgid "You can't block a local contact, please block the user instead"
+msgstr "Du kan inte blockera en lokal kontakt, vänligen blockera användaren istället"
+
+#: src/Module/Admin/Blocklist/Contact.php:73
+#, php-format
+msgid "%s contact unblocked"
+msgid_plural "%s contacts unblocked"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Module/Admin/Blocklist/Contact.php:95
+msgid "Remote Contact Blocklist"
 msgstr ""
 
-#: mod/newmember.php:15
+#: src/Module/Admin/Blocklist/Contact.php:96
 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."
+"This page allows you to prevent any message from a remote contact to reach "
+"your node."
 msgstr ""
 
-#: mod/newmember.php:16
-msgid "Getting Started"
+#: src/Module/Admin/Blocklist/Contact.php:97
+msgid "Block Remote Contact"
 msgstr ""
 
-#: mod/newmember.php:18
-msgid "Friendica Walk-Through"
-msgstr ""
+#: src/Module/Admin/Blocklist/Contact.php:98
+#: src/Module/Admin/Users/Active.php:138
+#: src/Module/Admin/Users/Blocked.php:139 src/Module/Admin/Users/Index.php:151
+#: src/Module/Admin/Users/Pending.php:103
+msgid "select all"
+msgstr "välj alla"
 
-#: mod/newmember.php:18
-msgid ""
-"On your <em>Quick Start</em> page - find a brief introduction to your "
-"profile and network tabs, make some new connections, and find some groups to"
-" join."
-msgstr ""
+#: src/Module/Admin/Blocklist/Contact.php:99
+msgid "select none"
+msgstr "välj ingen"
 
-#: mod/newmember.php:22
-msgid "Go to Your Settings"
+#: src/Module/Admin/Blocklist/Contact.php:101
+#: src/Module/Admin/Users/Blocked.php:142 src/Module/Admin/Users/Index.php:156
+#: src/Module/Contact.php:398 src/Module/Contact/Profile.php:348
+#: src/Module/Contact/Profile.php:449
+msgid "Unblock"
+msgstr "Avblockera"
+
+#: src/Module/Admin/Blocklist/Contact.php:102
+msgid "No remote contact is blocked from this node."
 msgstr ""
 
-#: mod/newmember.php:22
-msgid ""
-"On your <em>Settings</em> 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."
+#: src/Module/Admin/Blocklist/Contact.php:104
+msgid "Blocked Remote Contacts"
 msgstr ""
 
-#: mod/newmember.php:23
-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."
+#: src/Module/Admin/Blocklist/Contact.php:105
+msgid "Block New Remote Contact"
 msgstr ""
 
-#: mod/newmember.php:25 mod/profperm.php:117 src/Content/Nav.php:157
-#: src/Model/Profile.php:876 src/Model/Profile.php:909
-#: src/Module/Contact.php:654 src/Module/Contact.php:869
-#: view/theme/frio/theme.php:263
-msgid "Profile"
-msgstr "Profil"
+#: src/Module/Admin/Blocklist/Contact.php:106
+msgid "Photo"
+msgstr "Foto"
 
-#: mod/newmember.php:27 mod/profiles.php:583 mod/profile_photo.php:253
-msgid "Upload Profile Photo"
-msgstr "Ladda upp profilbild"
+#: src/Module/Admin/Blocklist/Contact.php:106
+msgid "Reason"
+msgstr "Anledning"
 
-#: mod/newmember.php:27
-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."
+#: src/Module/Admin/Blocklist/Contact.php:114
+#, php-format
+msgid "%s total blocked contact"
+msgid_plural "%s total blocked contacts"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Module/Admin/Blocklist/Contact.php:116
+msgid "URL of the remote contact to block."
 msgstr ""
 
-#: mod/newmember.php:28
-msgid "Edit Your Profile"
+#: src/Module/Admin/Blocklist/Contact.php:117
+msgid "Also purge contact"
 msgstr ""
 
-#: mod/newmember.php:28
+#: src/Module/Admin/Blocklist/Contact.php:117
 msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown"
-" visitors."
+"Removes all content related to this contact from the node. Keeps the contact"
+" record. This action cannot be undone."
 msgstr ""
 
-#: mod/newmember.php:29
-msgid "Profile Keywords"
-msgstr ""
+#: src/Module/Admin/Blocklist/Contact.php:118
+msgid "Block Reason"
+msgstr "Anledning för blockering"
 
-#: mod/newmember.php:29
-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."
+#: src/Module/Admin/Blocklist/Server/Add.php:55
+msgid "Server domain pattern added to the blocklist."
 msgstr ""
 
-#: mod/newmember.php:31
-msgid "Connecting"
+#: src/Module/Admin/Blocklist/Server/Add.php:63
+#, php-format
+msgid "%s server scheduled to be purged."
+msgid_plural "%s servers scheduled to be purged."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Module/Admin/Blocklist/Server/Add.php:88
+msgid "← Return to the list"
 msgstr ""
 
-#: mod/newmember.php:37
-msgid "Importing Emails"
+#: src/Module/Admin/Blocklist/Server/Add.php:90
+msgid "Block A New Server Domain Pattern"
 msgstr ""
 
-#: mod/newmember.php:37
+#: src/Module/Admin/Blocklist/Server/Add.php:91
+#: src/Module/Admin/Blocklist/Server/Index.php:82
 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"
+"<p>The server domain pattern syntax is case-insensitive shell wildcard, comprising the following special characters:</p>\n"
+"<ul>\n"
+"\t<li><code>*</code>: Any number of characters</li>\n"
+"\t<li><code>?</code>: Any single character</li>\n"
+"</ul>"
 msgstr ""
 
-#: mod/newmember.php:40
-msgid "Go to Your Contacts Page"
+#: src/Module/Admin/Blocklist/Server/Add.php:96
+#: src/Module/Admin/Blocklist/Server/Index.php:88
+msgid "Check pattern"
 msgstr ""
 
-#: mod/newmember.php:40
-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 <em>Add New Contact</em> dialog."
-msgstr ""
+#: src/Module/Admin/Blocklist/Server/Add.php:97
+msgid "Matching known servers"
+msgstr "Matchar kända servrar"
 
-#: mod/newmember.php:41
-msgid "Go to Your Site's Directory"
+#: src/Module/Admin/Blocklist/Server/Add.php:98
+msgid "Server Name"
+msgstr "Namn på server"
+
+#: src/Module/Admin/Blocklist/Server/Add.php:99
+msgid "Server Domain"
+msgstr "Serverns domän"
+
+#: src/Module/Admin/Blocklist/Server/Add.php:100
+msgid "Known Contacts"
+msgstr "Kända kontakter"
+
+#: src/Module/Admin/Blocklist/Server/Add.php:101
+#, php-format
+msgid "%d known server"
+msgid_plural "%d known servers"
+msgstr[0] "%d känd server"
+msgstr[1] "%d kända servrar"
+
+#: src/Module/Admin/Blocklist/Server/Add.php:102
+msgid "Add pattern to the blocklist"
+msgstr "Lägg till mönster till blockeringslistan"
+
+#: src/Module/Admin/Blocklist/Server/Add.php:104
+#: src/Module/Admin/Blocklist/Server/Index.php:96
+msgid "Server Domain Pattern"
 msgstr ""
 
-#: mod/newmember.php:41
+#: src/Module/Admin/Blocklist/Server/Add.php:104
+#: src/Module/Admin/Blocklist/Server/Index.php:96
 msgid ""
-"The Directory page lets you find other people in this network or other "
-"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
-"their profile page. Provide your own Identity Address if requested."
+"The domain pattern of the new server to add to the blocklist. Do not include"
+" the protocol."
 msgstr ""
 
-#: mod/newmember.php:42
-msgid "Finding New People"
+#: src/Module/Admin/Blocklist/Server/Add.php:105
+msgid "Purge server"
 msgstr ""
 
-#: mod/newmember.php:42
+#: src/Module/Admin/Blocklist/Server/Add.php:105
 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/newmember.php:44 src/Model/Group.php:415 src/Module/Contact.php:752
-msgid "Groups"
-msgstr "Grupper"
+"Also purges all the locally stored content authored by the known contacts "
+"registered on that server. Keeps the contacts and the server records. This "
+"action cannot be undone."
+msgid_plural ""
+"Also purges all the locally stored content authored by the known contacts "
+"registered on these servers. Keeps the contacts and the servers records. "
+"This action cannot be undone."
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/newmember.php:46
-msgid "Group Your Contacts"
+#: src/Module/Admin/Blocklist/Server/Add.php:106
+msgid "Block reason"
 msgstr ""
 
-#: mod/newmember.php:46
+#: src/Module/Admin/Blocklist/Server/Add.php:106
 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."
+"The reason why you blocked this server domain pattern. This reason will be "
+"shown publicly in the server information page."
 msgstr ""
 
-#: mod/newmember.php:49
-msgid "Why Aren't My Posts Public?"
+#: src/Module/Admin/Blocklist/Server/Index.php:68
+#: src/Module/Admin/Blocklist/Server/Index.php:91
+msgid "Blocked server domain pattern"
 msgstr ""
 
-#: mod/newmember.php:49
-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."
+#: src/Module/Admin/Blocklist/Server/Index.php:69
+#: src/Module/Admin/Blocklist/Server/Index.php:92 src/Module/Friendica.php:82
+msgid "Reason for the block"
+msgstr "Anledning för blockeringen"
+
+#: src/Module/Admin/Blocklist/Server/Index.php:70
+msgid "Delete server domain pattern"
 msgstr ""
 
-#: mod/newmember.php:53
-msgid "Getting Help"
+#: src/Module/Admin/Blocklist/Server/Index.php:70
+msgid "Check to delete this entry from the blocklist"
 msgstr ""
 
-#: mod/newmember.php:55
-msgid "Go to the Help Section"
+#: src/Module/Admin/Blocklist/Server/Index.php:79
+msgid "Server Domain Pattern Blocklist"
 msgstr ""
 
-#: mod/newmember.php:55
+#: src/Module/Admin/Blocklist/Server/Index.php:80
 msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program"
-" features and resources."
+"This page can be used to define a blocklist of server domain patterns from "
+"the federated network that are not allowed to interact with your node. For "
+"each domain pattern you should also provide the reason why you block it."
 msgstr ""
 
-#: mod/notes.php:34 src/Model/Profile.php:959
-msgid "Personal Notes"
+#: src/Module/Admin/Blocklist/Server/Index.php:81
+msgid ""
+"The list of blocked server domain patterns will be made publically available"
+" on the <a href=\"/friendica\">/friendica</a> page so that your users and "
+"people investigating communication problems can find the reason easily."
 msgstr ""
 
-#: mod/notifications.php:38
-msgid "Invalid request identifier."
-msgstr "Invalid request identifier."
+#: src/Module/Admin/Blocklist/Server/Index.php:87
+msgid "Add new entry to the blocklist"
+msgstr "Lägg till ny post till blockeringslistan"
 
-#: mod/notifications.php:60 mod/notifications.php:186
-#: mod/notifications.php:271 src/Module/Contact.php:622
-#: src/Module/Contact.php:825 src/Module/Contact.php:1085
-msgid "Ignore"
-msgstr "Ignorera"
+#: src/Module/Admin/Blocklist/Server/Index.php:89
+msgid "Save changes to the blocklist"
+msgstr "Spara ändringen i blockeringslistan"
 
-#: mod/notifications.php:93 src/Content/Nav.php:247
-msgid "Notifications"
-msgstr "Aviseringar"
+#: src/Module/Admin/Blocklist/Server/Index.php:90
+msgid "Current Entries in the Blocklist"
+msgstr "Nuvarande poster i blockeringslistan"
 
-#: mod/notifications.php:107
-msgid "Network Notifications"
-msgstr ""
+#: src/Module/Admin/Blocklist/Server/Index.php:93
+msgid "Delete entry from the blocklist"
+msgstr "Ta bort post från blockeringslistan"
 
-#: mod/notifications.php:112 mod/notify.php:84
-msgid "System Notifications"
+#: src/Module/Admin/Blocklist/Server/Index.php:94
+msgid "Delete entry from the blocklist?"
+msgstr "Ta bort post från blockeringslistan?"
+
+#: src/Module/Admin/DBSync.php:51
+msgid "Update has been marked successful"
+msgstr "Uppdateringen har blivit markerad som lyckad"
+
+#: src/Module/Admin/DBSync.php:59
+#, php-format
+msgid "Database structure update %s was successfully applied."
 msgstr ""
 
-#: mod/notifications.php:117
-msgid "Personal Notifications"
+#: src/Module/Admin/DBSync.php:61
+#, php-format
+msgid "Executing of database structure update %s failed with error: %s"
 msgstr ""
 
-#: mod/notifications.php:122
-msgid "Home Notifications"
+#: src/Module/Admin/DBSync.php:76
+#, php-format
+msgid "Executing %s failed with error: %s"
 msgstr ""
 
-#: mod/notifications.php:142
-msgid "Show unread"
+#: src/Module/Admin/DBSync.php:78
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "Verkställningen av uppdateringen av %s lyckades."
+
+#: src/Module/Admin/DBSync.php:81
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
 msgstr ""
 
-#: mod/notifications.php:142
-msgid "Show all"
+#: src/Module/Admin/DBSync.php:84
+#, php-format
+msgid "There was no additional update function %s that needed to be called."
 msgstr ""
 
-#: mod/notifications.php:153
-msgid "Show Ignored Requests"
-msgstr "Visa förfrågningar du ignorerat"
+#: src/Module/Admin/DBSync.php:106
+msgid "No failed updates."
+msgstr "Inga misslyckade uppdateringar."
 
-#: mod/notifications.php:153
-msgid "Hide Ignored Requests"
-msgstr "Dölj förfrågningar du ignorerat"
+#: src/Module/Admin/DBSync.php:107
+msgid "Check database structure"
+msgstr "Kolla databas-strukturen"
 
-#: mod/notifications.php:166 mod/notifications.php:243
-msgid "Notification type:"
+#: src/Module/Admin/DBSync.php:112
+msgid "Failed Updates"
+msgstr "Misslyckade uppdatering"
+
+#: src/Module/Admin/DBSync.php:113
+msgid ""
+"This does not include updates prior to 1139, which did not return a status."
 msgstr ""
 
-#: mod/notifications.php:169
-msgid "Suggested by:"
+#: src/Module/Admin/DBSync.php:114
+msgid "Mark success (if update was manually applied)"
 msgstr ""
 
-#: mod/notifications.php:181 mod/notifications.php:260
-#: src/Module/Contact.php:630
-msgid "Hide this contact from others"
+#: src/Module/Admin/DBSync.php:115
+msgid "Attempt to execute this update step automatically"
 msgstr ""
 
-#: mod/notifications.php:203
-msgid "Claims to be known to you: "
-msgstr "Hävdar att du vet vem han/hon är: "
+#: src/Module/Admin/Features.php:76
+#, php-format
+msgid "Lock feature %s"
+msgstr "Lås-funktion %s"
 
-#: mod/notifications.php:204
-msgid "yes"
-msgstr "ja"
+#: src/Module/Admin/Features.php:85
+msgid "Manage Additional Features"
+msgstr "Hantera ytterligare funktioner"
 
-#: mod/notifications.php:204
-msgid "no"
-msgstr "nej"
+#: src/Module/Admin/Federation.php:56
+msgid "Other"
+msgstr "Annat"
 
-#: mod/notifications.php:205 mod/notifications.php:209
-msgid "Shall your connection be bidirectional or not?"
-msgstr ""
+#: src/Module/Admin/Federation.php:118 src/Module/Admin/Federation.php:348
+msgid "unknown"
+msgstr "okänd"
 
-#: mod/notifications.php:206 mod/notifications.php:210
-#, php-format
+#: src/Module/Admin/Federation.php:154
 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."
+"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/notifications.php:207
-#, 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."
+#: src/Module/Admin/Federation.php:160 src/Module/BaseAdmin.php:87
+msgid "Federation Statistics"
 msgstr ""
 
-#: mod/notifications.php:211
+#: src/Module/Admin/Federation.php:164
 #, 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."
+"Currently this node is aware of %d nodes with %d registered users from the "
+"following platforms:"
 msgstr ""
 
-#: mod/notifications.php:222
-msgid "Friend"
-msgstr "Vän"
+#: src/Module/Admin/Item/Delete.php:53
+msgid "Item marked for deletion."
+msgstr "Objektet är markerat för borttagning."
 
-#: mod/notifications.php:223
-msgid "Sharer"
-msgstr ""
+#: src/Module/Admin/Item/Delete.php:65 src/Module/BaseAdmin.php:106
+msgid "Delete Item"
+msgstr "Ta bort objekt"
 
-#: mod/notifications.php:223
-msgid "Subscriber"
+#: src/Module/Admin/Item/Delete.php:66
+msgid "Delete this Item"
+msgstr "Ta bort det här objektet"
+
+#: src/Module/Admin/Item/Delete.php:67
+msgid ""
+"On this page you can delete an item from your node. If the item is a top "
+"level posting, the entire thread will be deleted."
 msgstr ""
 
-#: mod/notifications.php:266 src/Model/Profile.php:543
-#: src/Module/Contact.php:88
-msgid "Network:"
+#: src/Module/Admin/Item/Delete.php:68
+msgid ""
+"You need to know the GUID of the item. You can find it e.g. by looking at "
+"the display URL. The last part of http://example.com/display/123456 is the "
+"GUID, here 123456."
 msgstr ""
 
-#: mod/notifications.php:279
-msgid "No introductions."
+#: src/Module/Admin/Item/Delete.php:69
+msgid "GUID"
+msgstr "GUID"
+
+#: src/Module/Admin/Item/Delete.php:69
+msgid "The GUID of the item you want to delete."
+msgstr "Objektets GUID som du vill ta bort."
+
+#: src/Module/Admin/Item/Source.php:57 src/Module/BaseAdmin.php:116
+msgid "Item Source"
+msgstr "Objektets källa"
+
+#: src/Module/Admin/Item/Source.php:58
+msgid "Item Guid"
 msgstr ""
 
-#: mod/notifications.php:313
-#, php-format
-msgid "No more %s notifications."
+#: src/Module/Admin/Item/Source.php:63
+msgid "Item Id"
 msgstr ""
 
-#: mod/notify.php:80
-msgid "No more system notifications."
+#: src/Module/Admin/Item/Source.php:64
+msgid "Item URI"
 msgstr ""
 
-#: mod/oexchange.php:32
-msgid "Post successful."
-msgstr "Inlagt."
+#: src/Module/Admin/Item/Source.php:66
+msgid "Terms"
+msgstr "Villkor"
 
-#: mod/openid.php:31
-msgid "OpenID protocol error. No ID returned."
-msgstr ""
+#: src/Module/Admin/Item/Source.php:67
+msgid "Tag"
+msgstr "Taggar"
 
-#: mod/openid.php:67
-msgid ""
-"Account not found and OpenID registration is not permitted on this site."
-msgstr ""
+#: src/Module/Admin/Item/Source.php:68 src/Module/Admin/Users/Active.php:129
+#: src/Module/Admin/Users/Blocked.php:130 src/Module/Admin/Users/Index.php:142
+msgid "Type"
+msgstr "Typ"
 
-#: mod/openid.php:117 src/Module/Login.php:92 src/Module/Login.php:143
-msgid "Login failed."
-msgstr "Inloggningen misslyckades."
+#: src/Module/Admin/Item/Source.php:69
+msgid "Term"
+msgstr "Villkor"
 
-#: mod/ostatus_subscribe.php:23
-msgid "Subscribing to OStatus contacts"
-msgstr ""
+#: src/Module/Admin/Item/Source.php:70
+msgid "URL"
+msgstr "Webbadress"
 
-#: mod/ostatus_subscribe.php:35
-msgid "No contact provided."
+#: src/Module/Admin/Item/Source.php:71
+msgid "Mention"
+msgstr "Nämn"
+
+#: src/Module/Admin/Item/Source.php:72
+msgid "Implicit Mention"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:42
-msgid "Couldn't fetch information for contact."
+#: src/Module/Admin/Item/Source.php:73 src/Module/Admin/Logs/View.php:98
+#: src/Module/Debug/ActivityPubConversion.php:62
+msgid "Source"
+msgstr "Källa"
+
+#: src/Module/Admin/Logs/Settings.php:47
+#, php-format
+msgid "The logfile '%s' is not writable. No logging possible"
 msgstr ""
 
-#: mod/ostatus_subscribe.php:52
-msgid "Couldn't fetch friends for contact."
+#: src/Module/Admin/Logs/Settings.php:71
+msgid "PHP log currently enabled."
 msgstr ""
 
-#: mod/ostatus_subscribe.php:70 mod/repair_ostatus.php:52
-msgid "Done"
+#: src/Module/Admin/Logs/Settings.php:73
+msgid "PHP log currently disabled."
 msgstr ""
 
-#: mod/ostatus_subscribe.php:84
-msgid "success"
+#: src/Module/Admin/Logs/Settings.php:80 src/Module/BaseAdmin.php:108
+#: src/Module/BaseAdmin.php:109
+msgid "Logs"
+msgstr "Loggar"
+
+#: src/Module/Admin/Logs/Settings.php:82
+msgid "Clear"
+msgstr "Rensa"
+
+#: src/Module/Admin/Logs/Settings.php:86
+msgid "Enable Debugging"
+msgstr "Aktivera avlusning"
+
+#: src/Module/Admin/Logs/Settings.php:87
+msgid "Log file"
+msgstr "Logg-fil"
+
+#: src/Module/Admin/Logs/Settings.php:87
+msgid ""
+"Must be writable by web server. Relative to your Friendica top-level "
+"directory."
 msgstr ""
 
-#: mod/ostatus_subscribe.php:86
-msgid "failed"
+#: src/Module/Admin/Logs/Settings.php:88
+msgid "Log level"
+msgstr "Logg-nivå"
+
+#: src/Module/Admin/Logs/Settings.php:90
+msgid "PHP logging"
+msgstr "PHP-loggning"
+
+#: src/Module/Admin/Logs/Settings.php:91
+msgid ""
+"To temporarily enable logging of PHP errors and warnings you can prepend the"
+" following to the index.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/ostatus_subscribe.php:89 src/Object/Post.php:284
-msgid "ignored"
+#: src/Module/Admin/Logs/View.php:70
+#, php-format
+msgid ""
+"Error trying to open <strong>%1$s</strong> log file.<br/>Check to see if "
+"file %1$s exist and is readable."
 msgstr ""
 
-#: mod/ostatus_subscribe.php:94 mod/repair_ostatus.php:58
-msgid "Keep this window open until done."
+#: src/Module/Admin/Logs/View.php:79
+#, php-format
+msgid ""
+"Couldn't open <strong>%1$s</strong> log file.<br/>Check to see if file %1$s "
+"is readable."
 msgstr ""
 
-#: mod/photos.php:115 src/Model/Profile.php:920
-msgid "Photo Albums"
-msgstr "Fotoalbum"
+#: src/Module/Admin/Logs/View.php:84 src/Module/BaseAdmin.php:110
+msgid "View Logs"
+msgstr "Visa loggar"
 
-#: mod/photos.php:116 mod/photos.php:1665
-msgid "Recent Photos"
-msgstr "Nyligen tillagda bilder"
+#: src/Module/Admin/Logs/View.php:87
+msgid "Search in logs"
+msgstr "Sök i loggar"
 
-#: mod/photos.php:119 mod/photos.php:1187 mod/photos.php:1667
-msgid "Upload New Photos"
-msgstr "Ladda upp bilder"
+#: src/Module/Admin/Logs/View.php:88
+#: src/Module/Notifications/Notifications.php:139
+msgid "Show all"
+msgstr "Visa alla"
 
-#: mod/photos.php:137 mod/settings.php:56
-msgid "everybody"
-msgstr ""
+#: src/Module/Admin/Logs/View.php:89
+msgid "Date"
+msgstr "Datum"
 
-#: mod/photos.php:193
-msgid "Contact information unavailable"
-msgstr "Kommer inte åt kontaktuppgifter."
+#: src/Module/Admin/Logs/View.php:90
+msgid "Level"
+msgstr "Nivå"
 
-#: mod/photos.php:212
-msgid "Album not found."
-msgstr "Albumet finns inte."
+#: src/Module/Admin/Logs/View.php:91
+msgid "Context"
+msgstr "Sammanhang"
 
-#: mod/photos.php:241 mod/photos.php:254 mod/photos.php:1138
-msgid "Delete Album"
-msgstr "Ta bort album"
+#: src/Module/Admin/Logs/View.php:93
+msgid "ALL"
+msgstr "ALLA"
 
-#: mod/photos.php:252
-msgid "Do you really want to delete this photo album and all its photos?"
-msgstr ""
+#: src/Module/Admin/Logs/View.php:94
+msgid "View details"
+msgstr "Visa detaljer"
 
-#: mod/photos.php:310 mod/photos.php:322 mod/photos.php:1413
-msgid "Delete Photo"
-msgstr "Ta bort bild"
+#: src/Module/Admin/Logs/View.php:95
+msgid "Click to view details"
+msgstr "Klicka för att visa detaljer"
 
-#: mod/photos.php:320
-msgid "Do you really want to delete this photo?"
-msgstr ""
+#: src/Module/Admin/Logs/View.php:97
+msgid "Data"
+msgstr "Data"
 
-#: mod/photos.php:645
-msgid "a photo"
-msgstr ""
+#: src/Module/Admin/Logs/View.php:99
+msgid "File"
+msgstr "Fil"
 
-#: mod/photos.php:645
-#, php-format
-msgid "%1$s was tagged in %2$s by %3$s"
+#: src/Module/Admin/Logs/View.php:100
+msgid "Line"
+msgstr "Rad"
+
+#: src/Module/Admin/Logs/View.php:101
+msgid "Function"
+msgstr "Funktion"
+
+#: src/Module/Admin/Logs/View.php:102
+msgid "UID"
+msgstr "UID"
+
+#: src/Module/Admin/Logs/View.php:103
+msgid "Process ID"
 msgstr ""
 
-#: mod/photos.php:738 mod/photos.php:741 mod/photos.php:770
-#: mod/profile_photo.php:152 mod/wall_upload.php:198
-#, php-format
-msgid "Image exceeds size limit of %s"
+#: src/Module/Admin/Logs/View.php:104
+msgid "Close"
+msgstr "Stäng"
+
+#: src/Module/Admin/Queue.php:50
+msgid "Inspect Deferred Worker Queue"
 msgstr ""
 
-#: mod/photos.php:744
-msgid "Image upload didn't complete, please try again"
+#: src/Module/Admin/Queue.php:51
+msgid ""
+"This page lists the deferred worker jobs. This are jobs that couldn't be "
+"executed at the first time."
 msgstr ""
 
-#: mod/photos.php:747
-msgid "Image file is missing"
+#: src/Module/Admin/Queue.php:54
+msgid "Inspect Worker Queue"
 msgstr ""
 
-#: mod/photos.php:752
+#: src/Module/Admin/Queue.php:55
 msgid ""
-"Server can't accept new file upload at this time, please contact your "
-"administrator"
+"This page lists the currently queued worker jobs. These jobs are handled by "
+"the worker cronjob you've set up during install."
 msgstr ""
 
-#: mod/photos.php:778
-msgid "Image file is empty."
-msgstr ""
+#: src/Module/Admin/Queue.php:75
+msgid "ID"
+msgstr "ID"
 
-#: mod/photos.php:793 mod/profile_photo.php:161 mod/wall_upload.php:212
-msgid "Unable to process image."
-msgstr "Det gick inte att behandla bilden."
+#: src/Module/Admin/Queue.php:76
+msgid "Command"
+msgstr "Kommando"
 
-#: mod/photos.php:822 mod/profile_photo.php:310 mod/wall_upload.php:251
-msgid "Image upload failed."
-msgstr "Fel vid bilduppladdning."
+#: src/Module/Admin/Queue.php:77
+msgid "Job Parameters"
+msgstr "Jobb-parametrar"
 
-#: mod/photos.php:908
-msgid "No photos selected"
-msgstr "Inga bilder har valts"
+#: src/Module/Admin/Queue.php:79
+msgid "Priority"
+msgstr "Prioritet"
 
-#: mod/photos.php:1005 mod/videos.php:239
-msgid "Access to this item is restricted."
+#: src/Module/Admin/Site.php:71
+msgid "Can not parse base url. Must have at least <scheme>://<domain>"
 msgstr ""
 
-#: mod/photos.php:1059
-msgid "Upload Photos"
-msgstr "Ladda upp bilder"
+#: src/Module/Admin/Site.php:125
+msgid "Relocation started. Could take a while to complete."
+msgstr ""
 
-#: mod/photos.php:1063 mod/photos.php:1133
-msgid "New album name: "
-msgstr "Nytt album med namn: "
+#: src/Module/Admin/Site.php:403 src/Module/Settings/Display.php:138
+msgid "No special theme for mobile devices"
+msgstr "Inget speciellt tema för mobil-enheter"
 
-#: mod/photos.php:1064
-msgid "or select existing album:"
-msgstr ""
+#: src/Module/Admin/Site.php:420 src/Module/Settings/Display.php:148
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s - (Experimentell)"
 
-#: mod/photos.php:1065
-msgid "Do not show a status post for this upload"
+#: src/Module/Admin/Site.php:432
+msgid "No community page for local users"
+msgstr "Ingen gemenskapssida för lokala användare"
+
+#: src/Module/Admin/Site.php:433
+msgid "No community page"
+msgstr "Ingen gemenskapssida"
+
+#: src/Module/Admin/Site.php:434
+msgid "Public postings from users of this site"
 msgstr ""
 
-#: mod/photos.php:1081 mod/photos.php:1416 mod/settings.php:1209
-msgid "Show to Groups"
+#: src/Module/Admin/Site.php:435
+msgid "Public postings from the federated network"
 msgstr ""
 
-#: mod/photos.php:1082 mod/photos.php:1417 mod/settings.php:1210
-msgid "Show to Contacts"
+#: src/Module/Admin/Site.php:436
+msgid "Public postings from local users and the federated network"
 msgstr ""
 
-#: mod/photos.php:1144
-msgid "Edit Album"
-msgstr "Redigera album"
+#: src/Module/Admin/Site.php:442
+msgid "Multi user instance"
+msgstr "Instans för flertalet användare"
 
-#: mod/photos.php:1149
-msgid "Show Newest First"
-msgstr ""
+#: src/Module/Admin/Site.php:469
+msgid "Closed"
+msgstr "Stängd"
 
-#: mod/photos.php:1151
-msgid "Show Oldest First"
+#: src/Module/Admin/Site.php:470
+msgid "Requires approval"
+msgstr "Kräver godkännande"
+
+#: src/Module/Admin/Site.php:471
+msgid "Open"
+msgstr "Öppen"
+
+#: src/Module/Admin/Site.php:475 src/Module/Install.php:222
+msgid "No SSL policy, links will track page SSL state"
 msgstr ""
 
-#: mod/photos.php:1172 mod/photos.php:1650
-msgid "View Photo"
-msgstr "Visa bild"
+#: src/Module/Admin/Site.php:476 src/Module/Install.php:223
+msgid "Force all links to use SSL"
+msgstr "Tvinga alla länkar att använda SSL"
 
-#: mod/photos.php:1213
-msgid "Permission denied. Access to this item may be restricted."
+#: src/Module/Admin/Site.php:477 src/Module/Install.php:224
+msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr ""
 
-#: mod/photos.php:1215
-msgid "Photo not available"
-msgstr "Bilden är inte tillgänglig"
+#: src/Module/Admin/Site.php:481
+msgid "Don't check"
+msgstr "Kolla inte"
 
-#: mod/photos.php:1290
-msgid "View photo"
+#: src/Module/Admin/Site.php:482
+msgid "check the stable version"
+msgstr "kolla den stabila versionen"
+
+#: src/Module/Admin/Site.php:483
+msgid "check the development version"
+msgstr "kolla utvecklingsversionen"
+
+#: src/Module/Admin/Site.php:487
+msgid "none"
+msgstr "ingen"
+
+#: src/Module/Admin/Site.php:488
+msgid "Local contacts"
+msgstr "Lokala kontakter "
+
+#: src/Module/Admin/Site.php:489
+msgid "Interactors"
 msgstr ""
 
-#: mod/photos.php:1290
-msgid "Edit photo"
-msgstr "Hantera bild"
+#: src/Module/Admin/Site.php:499 src/Module/BaseAdmin.php:90
+msgid "Site"
+msgstr "Sida"
+
+#: src/Module/Admin/Site.php:500
+msgid "General Information"
+msgstr "Generell information"
 
-#: mod/photos.php:1291
-msgid "Use as profile photo"
+#: src/Module/Admin/Site.php:502
+msgid "Republish users to directory"
 msgstr ""
 
-#: mod/photos.php:1297 src/Object/Post.php:157
-msgid "Private Message"
-msgstr "Personligt meddelande"
+#: src/Module/Admin/Site.php:503 src/Module/Register.php:152
+msgid "Registration"
+msgstr "Registrering"
 
-#: mod/photos.php:1317
-msgid "View Full Size"
-msgstr "Visa fullstor"
+#: src/Module/Admin/Site.php:504
+msgid "File upload"
+msgstr "Fil-uppladdning"
 
-#: mod/photos.php:1381
-msgid "Tags: "
-msgstr "Taggar: "
+#: src/Module/Admin/Site.php:505
+msgid "Policies"
+msgstr "Policyer"
 
-#: mod/photos.php:1384
-msgid "[Select tags to remove]"
+#: src/Module/Admin/Site.php:507
+msgid "Auto Discovered Contact Directory"
 msgstr ""
 
-#: mod/photos.php:1399
-msgid "New album name"
-msgstr "Nytt album med namn"
+#: src/Module/Admin/Site.php:508
+msgid "Performance"
+msgstr "Prestanda"
 
-#: mod/photos.php:1400
-msgid "Caption"
-msgstr "Caption"
+#: src/Module/Admin/Site.php:509
+msgid "Worker"
+msgstr "Arbetare"
 
-#: mod/photos.php:1401
-msgid "Add a Tag"
-msgstr "Lägg till tagg"
+#: src/Module/Admin/Site.php:510
+msgid "Message Relay"
+msgstr "Meddelandefördröjning"
 
-#: mod/photos.php:1401
+#: src/Module/Admin/Site.php:511
 msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Exempel: @adam, @Anna_Andersson, @johan@exempel.com, #Stockholm, #camping"
-
-#: mod/photos.php:1402
-msgid "Do not rotate"
+"Use the command \"console relay\" in the command line to add or remove "
+"relays."
 msgstr ""
 
-#: mod/photos.php:1403
-msgid "Rotate CW (right)"
+#: src/Module/Admin/Site.php:512
+msgid "The system is not subscribed to any relays at the moment."
 msgstr ""
 
-#: mod/photos.php:1404
-msgid "Rotate CCW (left)"
+#: src/Module/Admin/Site.php:513
+msgid "The system is currently subscribed to the following relays:"
 msgstr ""
 
-#: mod/photos.php:1438 src/Object/Post.php:312
-msgid "I like this (toggle)"
-msgstr "Jag gillar det här (växla)"
+#: src/Module/Admin/Site.php:515
+msgid "Relocate Instance"
+msgstr "Omlokalisera instansen"
 
-#: mod/photos.php:1439 src/Object/Post.php:313
-msgid "I don't like this (toggle)"
-msgstr "Jag ogillar det här (växla)"
+#: src/Module/Admin/Site.php:516
+msgid ""
+"<strong>Warning!</strong> Advanced function. Could make this server "
+"unreachable."
+msgstr ""
 
-#: mod/photos.php:1454 mod/photos.php:1493 mod/photos.php:1553
-#: src/Module/Contact.php:1018 src/Object/Post.php:874
-msgid "This is you"
-msgstr "Det här är du"
+#: src/Module/Admin/Site.php:520
+msgid "Site name"
+msgstr "Namn på sida"
 
-#: mod/photos.php:1456 mod/photos.php:1495 mod/photos.php:1555
-#: src/Object/Post.php:418 src/Object/Post.php:876
-msgid "Comment"
-msgstr "Kommentera"
+#: src/Module/Admin/Site.php:521
+msgid "Sender Email"
+msgstr "Sändare av e-post"
 
-#: mod/photos.php:1585
-msgid "Map"
+#: src/Module/Admin/Site.php:521
+msgid ""
+"The email address your server shall use to send notification emails from."
 msgstr ""
 
-#: mod/photos.php:1656 mod/videos.php:316
-msgid "View Album"
-msgstr "Titta i album"
-
-#: mod/ping.php:272
-msgid "{0} wants to be your friend"
+#: src/Module/Admin/Site.php:522
+msgid "Name of the system actor"
 msgstr ""
 
-#: mod/ping.php:288
-msgid "{0} requested registration"
+#: src/Module/Admin/Site.php:522
+msgid ""
+"Name of the internal system account that is used to perform ActivityPub "
+"requests. This must be an unused username. If set, this can't be changed "
+"again."
 msgstr ""
 
-#: mod/poke.php:181
-msgid "Poke/Prod"
-msgstr ""
+#: src/Module/Admin/Site.php:523
+msgid "Banner/Logo"
+msgstr "Banderoll/Logga"
 
-#: mod/poke.php:182
-msgid "poke, prod or do other things to somebody"
+#: src/Module/Admin/Site.php:524
+msgid "Email Banner/Logo"
+msgstr "E-postbanderoll/logga"
+
+#: src/Module/Admin/Site.php:525
+msgid "Shortcut icon"
+msgstr "Genvägsikon"
+
+#: src/Module/Admin/Site.php:525
+msgid "Link to an icon that will be used for browsers."
 msgstr ""
 
-#: mod/poke.php:183
-msgid "Recipient"
+#: src/Module/Admin/Site.php:526
+msgid "Touch icon"
 msgstr ""
 
-#: mod/poke.php:184
-msgid "Choose what you wish to do to recipient"
+#: src/Module/Admin/Site.php:526
+msgid "Link to an icon that will be used for tablets and mobiles."
 msgstr ""
 
-#: mod/poke.php:187
-msgid "Make this post private"
+#: src/Module/Admin/Site.php:527
+msgid "Additional Info"
+msgstr "Ytterligare info"
+
+#: src/Module/Admin/Site.php:527
+#, php-format
+msgid ""
+"For public servers: you can add additional information here that will be "
+"listed at %s/servers."
 msgstr ""
 
-#: mod/probe.php:14 mod/webfinger.php:17
-msgid "Only logged in users are permitted to perform a probing."
+#: src/Module/Admin/Site.php:528
+msgid "System language"
+msgstr "Systemets språk"
+
+#: src/Module/Admin/Site.php:529
+msgid "System theme"
+msgstr "Systemets tema"
+
+#: src/Module/Admin/Site.php:529
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a "
+"href=\"/admin/themes\" id=\"cnftheme\">Change default theme settings</a>"
 msgstr ""
 
-#: mod/profiles.php:62
-msgid "Profile deleted."
-msgstr "Profilen har tagits bort."
+#: src/Module/Admin/Site.php:530
+msgid "Mobile system theme"
+msgstr ""
 
-#: mod/profiles.php:78 mod/profiles.php:114
-msgid "Profile-"
-msgstr "Profil-"
+#: src/Module/Admin/Site.php:530
+msgid "Theme for mobile devices"
+msgstr "Tema för mobilenheter"
 
-#: mod/profiles.php:97 mod/profiles.php:135
-msgid "New profile created."
-msgstr "En ny profil har skapats."
+#: src/Module/Admin/Site.php:531 src/Module/Install.php:232
+msgid "SSL link policy"
+msgstr "Policy för SSL-länk"
 
-#: mod/profiles.php:120
-msgid "Profile unavailable to clone."
-msgstr "Det gick inte att klona profilen."
+#: src/Module/Admin/Site.php:531 src/Module/Install.php:234
+msgid "Determines whether generated links should be forced to use SSL"
+msgstr "Avgör huruvida genererade länkar ska tvingas att använda SSL eller inte"
 
-#: mod/profiles.php:206
-msgid "Profile Name is required."
-msgstr "Profilen måste ha ett namn."
+#: src/Module/Admin/Site.php:532
+msgid "Force SSL"
+msgstr "Tvinga SSL"
 
-#: mod/profiles.php:346
-msgid "Marital Status"
+#: src/Module/Admin/Site.php:532
+msgid ""
+"Force all Non-SSL requests to SSL - Attention: on some systems it could lead"
+" to endless loops."
 msgstr ""
 
-#: mod/profiles.php:349
-msgid "Romantic Partner"
+#: src/Module/Admin/Site.php:533
+msgid "Show help entry from navigation menu"
 msgstr ""
 
-#: mod/profiles.php:358
-msgid "Work/Employment"
+#: src/Module/Admin/Site.php:533
+msgid ""
+"Displays the menu entry for the Help pages from the navigation menu. It is "
+"always accessible by calling /help directly."
 msgstr ""
 
-#: mod/profiles.php:361
-msgid "Religion"
+#: src/Module/Admin/Site.php:534
+msgid "Single user instance"
 msgstr ""
 
-#: mod/profiles.php:364
-msgid "Political Views"
+#: src/Module/Admin/Site.php:534
+msgid "Make this instance multi-user or single-user for the named user"
 msgstr ""
 
-#: mod/profiles.php:367
-msgid "Gender"
-msgstr ""
+#: src/Module/Admin/Site.php:536
+msgid "Maximum image size"
+msgstr "Maximal bildstorlek"
 
-#: mod/profiles.php:370
-msgid "Sexual Preference"
+#: src/Module/Admin/Site.php:536
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
 msgstr ""
 
-#: mod/profiles.php:373
-msgid "XMPP"
-msgstr ""
+#: src/Module/Admin/Site.php:537
+msgid "Maximum image length"
+msgstr "Maximal bildlängd"
 
-#: mod/profiles.php:376
-msgid "Homepage"
+#: src/Module/Admin/Site.php:537
+msgid ""
+"Maximum length in pixels of the longest side of uploaded images. Default is "
+"-1, which means no limits."
 msgstr ""
 
-#: mod/profiles.php:379 mod/profiles.php:578
-msgid "Interests"
-msgstr ""
+#: src/Module/Admin/Site.php:538
+msgid "JPEG image quality"
+msgstr "Kvalité för JPEG-bilden"
 
-#: mod/profiles.php:389 mod/profiles.php:574
-msgid "Location"
+#: src/Module/Admin/Site.php:538
+msgid ""
+"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
+"100, which is full quality."
 msgstr ""
 
-#: mod/profiles.php:469
-msgid "Profile updated."
-msgstr "Profilen har uppdaterats."
+#: src/Module/Admin/Site.php:540
+msgid "Register policy"
+msgstr "Registrera policy"
 
-#: mod/profiles.php:523
-msgid "Hide contacts and friends:"
-msgstr ""
+#: src/Module/Admin/Site.php:541
+msgid "Maximum Daily Registrations"
+msgstr "Maximala registreringar varje dag"
 
-#: mod/profiles.php:528
-msgid "Hide your contact/friend list from viewers of this profile?"
+#: src/Module/Admin/Site.php:541
+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/profiles.php:548
-msgid "Show more profile fields:"
-msgstr ""
+#: src/Module/Admin/Site.php:542
+msgid "Register text"
+msgstr "Registrera text"
 
-#: mod/profiles.php:560
-msgid "Profile Actions"
+#: src/Module/Admin/Site.php:542
+msgid ""
+"Will be displayed prominently on the registration page. You can use BBCode "
+"here."
 msgstr ""
 
-#: mod/profiles.php:561
-msgid "Edit Profile Details"
-msgstr "Ändra profilen"
+#: src/Module/Admin/Site.php:543
+msgid "Forbidden Nicknames"
+msgstr "Förbjudna smeknamn"
 
-#: mod/profiles.php:563
-msgid "Change Profile Photo"
+#: src/Module/Admin/Site.php:543
+msgid ""
+"Comma separated list of nicknames that are forbidden from registration. "
+"Preset is a list of role names according RFC 2142."
 msgstr ""
 
-#: mod/profiles.php:565
-msgid "View this profile"
-msgstr "Titta på profilen"
+#: src/Module/Admin/Site.php:544
+msgid "Accounts abandoned after x days"
+msgstr "Konton som övergavs efter x dagar"
 
-#: mod/profiles.php:566
-msgid "View all profiles"
+#: src/Module/Admin/Site.php:544
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
 msgstr ""
 
-#: mod/profiles.php:567 mod/profiles.php:662 src/Model/Profile.php:419
-msgid "Edit visibility"
-msgstr "Ända vilka som ska kunna se"
-
-#: mod/profiles.php:568
-msgid "Create a new profile using these settings"
-msgstr "Skapa en ny profil med dessa inställningar"
+#: src/Module/Admin/Site.php:545
+msgid "Allowed friend domains"
+msgstr "Tillåtna vän-domäner"
 
-#: mod/profiles.php:569
-msgid "Clone this profile"
-msgstr "Kopiera profil"
+#: src/Module/Admin/Site.php:545
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr ""
 
-#: mod/profiles.php:570
-msgid "Delete this profile"
-msgstr "Ta bort profil"
+#: src/Module/Admin/Site.php:546
+msgid "Allowed email domains"
+msgstr "Tillåtna e-postdomäner"
 
-#: mod/profiles.php:572
-msgid "Basic information"
+#: src/Module/Admin/Site.php:546
+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/profiles.php:573
-msgid "Profile picture"
+#: src/Module/Admin/Site.php:547
+msgid "No OEmbed rich content"
 msgstr ""
 
-#: mod/profiles.php:575
-msgid "Preferences"
+#: src/Module/Admin/Site.php:547
+msgid ""
+"Don't show the rich content (e.g. embedded PDF), except from the domains "
+"listed below."
 msgstr ""
 
-#: mod/profiles.php:576
-msgid "Status information"
+#: src/Module/Admin/Site.php:548
+msgid "Trusted third-party domains"
 msgstr ""
 
-#: mod/profiles.php:577
-msgid "Additional information"
+#: src/Module/Admin/Site.php:548
+msgid ""
+"Comma separated list of domains from which content is allowed to be embedded"
+" in posts like with OEmbed. All sub-domains of the listed domains are "
+"allowed as well."
 msgstr ""
 
-#: mod/profiles.php:580
-msgid "Relation"
+#: src/Module/Admin/Site.php:549
+msgid "Block public"
+msgstr "Blockera publik"
+
+#: src/Module/Admin/Site.php:549
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
 msgstr ""
 
-#: mod/profiles.php:581 src/Util/Temporal.php:79 src/Util/Temporal.php:81
-msgid "Miscellaneous"
-msgstr "Blandat"
+#: src/Module/Admin/Site.php:550
+msgid "Force publish"
+msgstr "Tvinga publicering"
 
-#: mod/profiles.php:584
-msgid "Your Gender:"
-msgstr "Kön:"
+#: src/Module/Admin/Site.php:550
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr ""
 
-#: mod/profiles.php:585
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Civilstånd:"
+#: src/Module/Admin/Site.php:550
+msgid "Enabling this may violate privacy laws like the GDPR"
+msgstr ""
 
-#: mod/profiles.php:586 src/Model/Profile.php:795
-msgid "Sexual Preference:"
-msgstr "Sexualitet"
+#: src/Module/Admin/Site.php:551
+msgid "Global directory URL"
+msgstr ""
 
-#: mod/profiles.php:587
-msgid "Example: fishing photography software"
-msgstr "Exempel: fiske fotografering programmering"
+#: src/Module/Admin/Site.php:551
+msgid ""
+"URL to the global directory. If this is not set, the global directory is "
+"completely unavailable to the application."
+msgstr ""
 
-#: mod/profiles.php:592
-msgid "Profile Name:"
-msgstr "Profilens namn:"
+#: src/Module/Admin/Site.php:552
+msgid "Private posts by default for new users"
+msgstr "Privata inlägg som standard för nya användare"
 
-#: mod/profiles.php:594
+#: src/Module/Admin/Site.php:552
 msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Det här är din <strong>offentliga</strong> profil.<br />Den <strong>kan vara synlig för vem som helst</strong> på internet."
+"Set default post permissions for all new members to the default privacy "
+"group rather than public."
+msgstr ""
 
-#: mod/profiles.php:595
-msgid "Your Full Name:"
-msgstr "Fullständigt namn:"
+#: src/Module/Admin/Site.php:553
+msgid "Don't include post content in email notifications"
+msgstr "Inkludera inte inläggets innehåll i aviseringar för e-post"
 
-#: mod/profiles.php:596
-msgid "Title/Description:"
-msgstr "Titel/Beskrivning:"
+#: src/Module/Admin/Site.php:553
+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/profiles.php:599
-msgid "Street Address:"
-msgstr "Gatuadress:"
+#: src/Module/Admin/Site.php:554
+msgid "Disallow public access to addons listed in the apps menu."
+msgstr ""
 
-#: mod/profiles.php:600
-msgid "Locality/City:"
-msgstr "Plats/Stad:"
+#: src/Module/Admin/Site.php:554
+msgid ""
+"Checking this box will restrict addons listed in the apps menu to members "
+"only."
+msgstr ""
 
-#: mod/profiles.php:601
-msgid "Region/State:"
-msgstr "Region:"
+#: src/Module/Admin/Site.php:555
+msgid "Don't embed private images in posts"
+msgstr ""
 
-#: mod/profiles.php:602
-msgid "Postal/Zip Code:"
-msgstr "Postnummer:"
+#: src/Module/Admin/Site.php:555
+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/profiles.php:603
-msgid "Country:"
-msgstr "Land:"
+#: src/Module/Admin/Site.php:556
+msgid "Explicit Content"
+msgstr ""
 
-#: mod/profiles.php:604 src/Util/Temporal.php:149
-msgid "Age: "
-msgstr "Ålder: "
+#: src/Module/Admin/Site.php:556
+msgid ""
+"Set this to announce that your node is used mostly for explicit content that"
+" might not be suited for minors. This information will be published in the "
+"node information and might be used, e.g. by the global directory, to filter "
+"your node from listings of nodes to join. Additionally a note about this "
+"will be shown at the user registration page."
+msgstr ""
 
-#: mod/profiles.php:607
-msgid "Who: (if applicable)"
-msgstr "Vem: (om tillämpligt)"
+#: src/Module/Admin/Site.php:557
+msgid "Proxify external content"
+msgstr ""
 
-#: mod/profiles.php:607
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Exempel: kalle123, Johanna Johansson, pelle@exempel.com"
+#: src/Module/Admin/Site.php:557
+msgid ""
+"Route external content via the proxy functionality. This is used for example"
+" for some OEmbed accesses and in some other rare cases."
+msgstr ""
 
-#: mod/profiles.php:608
-msgid "Since [date]:"
+#: src/Module/Admin/Site.php:558
+msgid "Cache contact avatars"
 msgstr ""
 
-#: mod/profiles.php:610
-msgid "Tell us about yourself..."
-msgstr "Beskriv dig själv..."
+#: src/Module/Admin/Site.php:558
+msgid ""
+"Locally store the avatar pictures of the contacts. This uses a lot of "
+"storage space but it increases the performance."
+msgstr ""
 
-#: mod/profiles.php:611
-msgid "XMPP (Jabber) address:"
+#: src/Module/Admin/Site.php:559
+msgid "Allow Users to set remote_self"
 msgstr ""
 
-#: mod/profiles.php:611
+#: src/Module/Admin/Site.php:559
 msgid ""
-"The XMPP address will be propagated to your contacts so that they can follow"
-" you."
+"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/profiles.php:612
-msgid "Homepage URL:"
-msgstr "Hemsida: (URL)"
-
-#: mod/profiles.php:613 src/Model/Profile.php:803
-msgid "Hometown:"
+#: src/Module/Admin/Site.php:560
+msgid "Enable multiple registrations"
 msgstr ""
 
-#: mod/profiles.php:614 src/Model/Profile.php:811
-msgid "Political Views:"
-msgstr "Politisk åskådning:"
+#: src/Module/Admin/Site.php:560
+msgid "Enable users to register additional accounts for use as pages."
+msgstr ""
 
-#: mod/profiles.php:615
-msgid "Religious Views:"
-msgstr "Religion:"
+#: src/Module/Admin/Site.php:561
+msgid "Enable OpenID"
+msgstr ""
 
-#: mod/profiles.php:616
-msgid "Public Keywords:"
-msgstr "Offentliga nyckelord:"
+#: src/Module/Admin/Site.php:561
+msgid "Enable OpenID support for registration and logins."
+msgstr ""
 
-#: mod/profiles.php:616
-msgid "(Used for suggesting potential friends, can be seen by others)"
-msgstr "(Obs, synliga för andra. Används för att föreslå potentiella vänner.)"
+#: src/Module/Admin/Site.php:562
+msgid "Enable Fullname check"
+msgstr ""
 
-#: mod/profiles.php:617
-msgid "Private Keywords:"
-msgstr "Privata nyckelord:"
+#: src/Module/Admin/Site.php:562
+msgid ""
+"Enable check to only allow users to register with a space between the first "
+"name and the last name in their full name."
+msgstr ""
 
-#: mod/profiles.php:617
-msgid "(Used for searching profiles, never shown to others)"
-msgstr "(Obs, kan ge sökträffar vid sökning av profiler. Visas annars inte för andra.)"
+#: src/Module/Admin/Site.php:563
+msgid "Community pages for visitors"
+msgstr ""
 
-#: mod/profiles.php:618 src/Model/Profile.php:827
-msgid "Likes:"
+#: src/Module/Admin/Site.php:563
+msgid ""
+"Which community pages should be available for visitors. Local users always "
+"see both pages."
 msgstr ""
 
-#: mod/profiles.php:619 src/Model/Profile.php:831
-msgid "Dislikes:"
+#: src/Module/Admin/Site.php:564
+msgid "Posts per user on community page"
 msgstr ""
 
-#: mod/profiles.php:620
-msgid "Musical interests"
-msgstr "Musik"
+#: src/Module/Admin/Site.php:564
+msgid ""
+"The maximum number of posts per user on the community page. (Not valid for "
+"\"Global Community\")"
+msgstr ""
 
-#: mod/profiles.php:621
-msgid "Books, literature"
-msgstr "Böcker, litteratur"
+#: src/Module/Admin/Site.php:566
+msgid "Enable Mail support"
+msgstr ""
 
-#: mod/profiles.php:622
-msgid "Television"
-msgstr "TV"
+#: src/Module/Admin/Site.php:566
+msgid ""
+"Enable built-in mail support to poll IMAP folders and to reply via mail."
+msgstr ""
 
-#: mod/profiles.php:623
-msgid "Film/dance/culture/entertainment"
-msgstr "Film/Dans/Kultur/Nöje"
+#: src/Module/Admin/Site.php:567
+msgid ""
+"Mail support can't be enabled because the PHP IMAP module is not installed."
+msgstr ""
 
-#: mod/profiles.php:624
-msgid "Hobbies/Interests"
-msgstr "Hobbys/Intressen"
+#: src/Module/Admin/Site.php:568
+msgid "Enable OStatus support"
+msgstr ""
 
-#: mod/profiles.php:625
-msgid "Love/romance"
-msgstr "Kärlek/Romantik"
+#: src/Module/Admin/Site.php:568
+msgid ""
+"Enable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
+"communications in OStatus are public."
+msgstr ""
 
-#: mod/profiles.php:626
-msgid "Work/employment"
-msgstr "Arbete"
+#: src/Module/Admin/Site.php:570
+msgid ""
+"Diaspora support can't be enabled because Friendica was installed into a sub"
+" directory."
+msgstr ""
 
-#: mod/profiles.php:627
-msgid "School/education"
-msgstr "Skola/Utbildning"
+#: src/Module/Admin/Site.php:571
+msgid "Enable Diaspora support"
+msgstr "Aktivera Diaspora-support"
 
-#: mod/profiles.php:628
-msgid "Contact information and Social Networks"
-msgstr "Kontaktuppgifter och sociala nätverk"
+#: src/Module/Admin/Site.php:571
+msgid ""
+"Enable built-in Diaspora network compatibility for communicating with "
+"diaspora servers."
+msgstr ""
 
-#: mod/profiles.php:659 src/Model/Profile.php:415
-msgid "Profile Image"
-msgstr "Profilbild"
+#: src/Module/Admin/Site.php:572
+msgid "Verify SSL"
+msgstr "Bekräfta SSL"
 
-#: mod/profiles.php:661 src/Model/Profile.php:418
-msgid "visible to everybody"
+#: src/Module/Admin/Site.php:572
+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/profiles.php:668
-msgid "Edit/Manage Profiles"
-msgstr ""
+#: src/Module/Admin/Site.php:573
+msgid "Proxy user"
+msgstr "Proxy-användare"
 
-#: mod/profiles.php:669 src/Model/Profile.php:405 src/Model/Profile.php:427
-msgid "Change profile photo"
-msgstr "Byt profilbild"
+#: src/Module/Admin/Site.php:574
+msgid "Proxy URL"
+msgstr "URL för proxy"
 
-#: mod/profiles.php:670 src/Model/Profile.php:406
-msgid "Create New Profile"
-msgstr "Skapa ny profil"
+#: src/Module/Admin/Site.php:575
+msgid "Network timeout"
+msgstr "Tidsgräns för nätverket"
 
-#: mod/profile_photo.php:58
-msgid "Image uploaded but image cropping failed."
-msgstr "Bilden laddades upp men det blev fel när den skulle beskäras."
+#: src/Module/Admin/Site.php:575
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Värdet är i sekunder. Ställ in det till 0 för obegränsat (rekommenderas inte)."
 
-#: mod/profile_photo.php:88 mod/profile_photo.php:97 mod/profile_photo.php:106
-#: mod/profile_photo.php:318
-#, php-format
-msgid "Image size reduction [%s] failed."
+#: src/Module/Admin/Site.php:576
+msgid "Maximum Load Average"
 msgstr ""
 
-#: mod/profile_photo.php:125
+#: src/Module/Admin/Site.php:576
+#, php-format
 msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
+"Maximum system load before delivery and poll processes are deferred - "
+"default %d."
 msgstr ""
 
-#: mod/profile_photo.php:133
-msgid "Unable to process image"
-msgstr "Det gick inte att behandla bilden"
-
-#: mod/profile_photo.php:251
-msgid "Upload File:"
-msgstr "Ladda upp fil:"
-
-#: mod/profile_photo.php:252
-msgid "Select a profile:"
+#: src/Module/Admin/Site.php:577
+msgid "Minimal Memory"
 msgstr ""
 
-#: mod/profile_photo.php:257
-msgid "or"
-msgstr "eller"
-
-#: mod/profile_photo.php:258
-msgid "skip this step"
+#: src/Module/Admin/Site.php:577
+msgid ""
+"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
+"default 0 (deactivated)."
 msgstr ""
 
-#: mod/profile_photo.php:258
-msgid "select a photo from your photo albums"
-msgstr "välj en bild från ett album"
-
-#: mod/profile_photo.php:271
-msgid "Crop Image"
-msgstr "Beskär bild"
+#: src/Module/Admin/Site.php:578
+msgid "Periodically optimize tables"
+msgstr ""
 
-#: mod/profile_photo.php:272
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Välj hur bilden ska beskäras för att bli så bra som möjligt."
+#: src/Module/Admin/Site.php:578
+msgid "Periodically optimize tables like the cache and the workerqueue"
+msgstr ""
 
-#: mod/profile_photo.php:274
-msgid "Done Editing"
-msgstr "Spara"
+#: src/Module/Admin/Site.php:580
+msgid "Discover followers/followings from contacts"
+msgstr ""
 
-#: mod/profile_photo.php:308
-msgid "Image uploaded successfully."
-msgstr "Bilden har laddats upp."
+#: src/Module/Admin/Site.php:580
+msgid ""
+"If enabled, contacts are checked for their followers and following contacts."
+msgstr ""
 
-#: mod/profperm.php:36 mod/profperm.php:69
-msgid "Invalid profile identifier."
-msgstr "Ogiltigt profil-ID."
+#: src/Module/Admin/Site.php:581
+msgid "None - deactivated"
+msgstr ""
 
-#: mod/profperm.php:115
-msgid "Profile Visibility Editor"
-msgstr "Ända vilka som ska kunna se profil"
+#: src/Module/Admin/Site.php:582
+msgid ""
+"Local contacts - contacts of our local contacts are discovered for their "
+"followers/followings."
+msgstr ""
 
-#: mod/profperm.php:128
-msgid "Visible To"
-msgstr "Synlig för"
+#: src/Module/Admin/Site.php:583
+msgid ""
+"Interactors - contacts of our local contacts and contacts who interacted on "
+"locally visible postings are discovered for their followers/followings."
+msgstr ""
 
-#: mod/profperm.php:144
-msgid "All Contacts (with secure profile access)"
-msgstr "Alla kontakter (med säker tillgång till din profil)"
+#: src/Module/Admin/Site.php:585
+msgid "Synchronize the contacts with the directory server"
+msgstr ""
 
-#: mod/regmod.php:53
-msgid "Account approved."
-msgstr "Kontot har godkänts."
+#: src/Module/Admin/Site.php:585
+msgid ""
+"if enabled, the system will check periodically for new contacts on the "
+"defined directory server."
+msgstr ""
 
-#: mod/regmod.php:77
-#, php-format
-msgid "Registration revoked for %s"
+#: src/Module/Admin/Site.php:587
+msgid "Days between requery"
 msgstr ""
 
-#: mod/regmod.php:84
-msgid "Please login."
-msgstr "Logga in."
+#: src/Module/Admin/Site.php:587
+msgid "Number of days after which a server is requeried for his contacts."
+msgstr ""
 
-#: mod/removeme.php:46
-msgid "User deleted their account"
+#: src/Module/Admin/Site.php:588
+msgid "Discover contacts from other servers"
 msgstr ""
 
-#: mod/removeme.php:47
+#: src/Module/Admin/Site.php:588
 msgid ""
-"On your Friendica node an user deleted their account. Please ensure that "
-"their data is removed from the backups."
+"Periodically query other servers for contacts. The system queries Friendica,"
+" Mastodon and Hubzilla servers."
 msgstr ""
 
-#: mod/removeme.php:48
-#, php-format
-msgid "The user id is %d"
+#: src/Module/Admin/Site.php:589
+msgid "Search the local directory"
 msgstr ""
 
-#: mod/removeme.php:84 mod/removeme.php:87
-msgid "Remove My Account"
-msgstr "Ta bort mitt konto"
-
-#: mod/removeme.php:85
+#: src/Module/Admin/Site.php:589
 msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
-msgstr "Detta kommer att ta bort kontot helt och hållet. Efter att det är gjort går det inte att återställa."
+"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/removeme.php:86
-msgid "Please enter your password for verification:"
-msgstr "Ange lösenordet igen för säkerhets skull:"
+#: src/Module/Admin/Site.php:591
+msgid "Publish server information"
+msgstr ""
 
-#: mod/repair_ostatus.php:21
-msgid "Resubscribing to OStatus contacts"
+#: src/Module/Admin/Site.php:591
+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 <a"
+" href=\"http://the-federation.info/\">the-federation.info</a> for details."
 msgstr ""
 
-#: mod/repair_ostatus.php:37
-msgid "Error"
+#: src/Module/Admin/Site.php:593
+msgid "Check upstream version"
 msgstr ""
 
-#: mod/search.php:103
-msgid "Only logged in users are permitted to perform a search."
+#: src/Module/Admin/Site.php:593
+msgid ""
+"Enables checking for new Friendica versions at github. If there is a new "
+"version, you will be informed in the admin panel overview."
 msgstr ""
 
-#: mod/search.php:127
-msgid "Too Many Requests"
+#: src/Module/Admin/Site.php:594
+msgid "Suppress Tags"
 msgstr ""
 
-#: mod/search.php:128
-msgid "Only one search per minute is permitted for not logged in users."
+#: src/Module/Admin/Site.php:594
+msgid "Suppress showing a list of hashtags at the end of the posting."
 msgstr ""
 
-#: mod/search.php:149 src/Content/Nav.php:198 src/Content/Text/HTML.php:900
-msgid "Search"
-msgstr "Sök"
+#: src/Module/Admin/Site.php:595
+msgid "Clean database"
+msgstr ""
 
-#: mod/search.php:235
-#, php-format
-msgid "Items tagged with: %s"
+#: src/Module/Admin/Site.php:595
+msgid ""
+"Remove old remote items, orphaned database records and old content from some"
+" other helper tables."
 msgstr ""
 
-#: mod/search.php:237 src/Module/Contact.php:816
-#, php-format
-msgid "Results for: %s"
+#: src/Module/Admin/Site.php:596
+msgid "Lifespan of remote items"
 msgstr ""
 
-#: mod/settings.php:61
-msgid "Account"
+#: src/Module/Admin/Site.php:596
+msgid ""
+"When the database cleanup is enabled, this defines the days after which "
+"remote items will be deleted. Own items, and marked or filed items are "
+"always kept. 0 disables this behaviour."
 msgstr ""
 
-#: mod/settings.php:69 src/Content/Nav.php:266 src/Model/Profile.php:398
-msgid "Profiles"
-msgstr "Profiler"
+#: src/Module/Admin/Site.php:597
+msgid "Lifespan of unclaimed items"
+msgstr ""
 
-#: mod/settings.php:85
-msgid "Display"
+#: src/Module/Admin/Site.php:597
+msgid ""
+"When the database cleanup is enabled, this defines the days after which "
+"unclaimed remote items (mostly content from the relay) will be deleted. "
+"Default value is 90 days. Defaults to the general lifespan value of remote "
+"items if set to 0."
 msgstr ""
 
-#: mod/settings.php:92 mod/settings.php:830
-msgid "Social Networks"
+#: src/Module/Admin/Site.php:598
+msgid "Lifespan of raw conversation data"
 msgstr ""
 
-#: mod/settings.php:106 src/Content/Nav.php:261
-msgid "Delegations"
+#: src/Module/Admin/Site.php:598
+msgid ""
+"The conversation data is used for ActivityPub and OStatus, as well as for "
+"debug purposes. It should be safe to remove it after 14 days, default is 90 "
+"days."
 msgstr ""
 
-#: mod/settings.php:113
-msgid "Connected apps"
+#: src/Module/Admin/Site.php:599
+msgid "Maximum numbers of comments per post"
 msgstr ""
 
-#: mod/settings.php:120 mod/uexport.php:53
-msgid "Export personal data"
+#: src/Module/Admin/Site.php:599
+msgid "How much comments should be shown for each post? Default value is 100."
 msgstr ""
 
-#: mod/settings.php:127
-msgid "Remove account"
+#: src/Module/Admin/Site.php:600
+msgid "Maximum numbers of comments per post on the display page"
 msgstr ""
 
-#: mod/settings.php:179
-msgid "Missing some important data!"
+#: src/Module/Admin/Site.php:600
+msgid ""
+"How many comments should be shown on the single view for each post? Default "
+"value is 1000."
 msgstr ""
 
-#: mod/settings.php:181 mod/settings.php:691 src/Module/Contact.php:823
-msgid "Update"
+#: src/Module/Admin/Site.php:601
+msgid "Temp path"
+msgstr "Tillfällig genväg"
+
+#: src/Module/Admin/Site.php:601
+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:290
-msgid "Failed to connect with email account using the settings provided."
+#: src/Module/Admin/Site.php:602
+msgid "Only search in tags"
+msgstr "Sök endast i taggar"
+
+#: src/Module/Admin/Site.php:602
+msgid "On large systems the text search can slow down the system extremely."
 msgstr ""
 
-#: mod/settings.php:295
-msgid "Email settings updated."
+#: src/Module/Admin/Site.php:604
+msgid "New base url"
 msgstr ""
 
-#: mod/settings.php:311
-msgid "Features updated"
+#: src/Module/Admin/Site.php:604
+msgid ""
+"Change base url for this server. Sends relocate message to all Friendica and"
+" Diaspora* contacts of all users."
 msgstr ""
 
-#: mod/settings.php:384
-msgid "Relocate message has been send to your contacts"
+#: src/Module/Admin/Site.php:606
+msgid "Maximum number of parallel workers"
 msgstr ""
 
-#: mod/settings.php:396
-msgid "Passwords do not match."
+#: src/Module/Admin/Site.php:606
+#, php-format
+msgid ""
+"On shared hosters set this to %d. On larger systems, values of %d are great."
+" Default value is %d."
 msgstr ""
 
-#: mod/settings.php:404 src/Core/Console/NewPassword.php:80
-msgid "Password update failed. Please try again."
-msgstr "Det blev fel när lösenordet skulle ändras. Försök igen."
+#: src/Module/Admin/Site.php:607
+msgid "Enable fastlane"
+msgstr ""
 
-#: mod/settings.php:407 src/Core/Console/NewPassword.php:83
-msgid "Password changed."
-msgstr "Lösenordet har ändrats."
+#: src/Module/Admin/Site.php:607
+msgid ""
+"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:410
-msgid "Password unchanged."
+#: src/Module/Admin/Site.php:609
+msgid "Direct relay transfer"
 msgstr ""
 
-#: mod/settings.php:491
-msgid " Please use a shorter name."
-msgstr " Använd ett kortare namn."
+#: src/Module/Admin/Site.php:609
+msgid ""
+"Enables the direct transfer to other servers without using the relay servers"
+msgstr ""
 
-#: mod/settings.php:494
-msgid " Name too short."
-msgstr " Namnet är för kort."
+#: src/Module/Admin/Site.php:610
+msgid "Relay scope"
+msgstr ""
 
-#: mod/settings.php:501
-msgid "Wrong Password"
+#: src/Module/Admin/Site.php:610
+msgid ""
+"Can be \"all\" or \"tags\". \"all\" means that every public post should be "
+"received. \"tags\" means that only posts with selected tags should be "
+"received."
 msgstr ""
 
-#: mod/settings.php:506
-msgid "Invalid email."
+#: src/Module/Admin/Site.php:610 src/Module/Contact/Profile.php:273
+#: src/Module/Settings/TwoFactor/Index.php:118
+msgid "Disabled"
 msgstr ""
 
-#: mod/settings.php:512
-msgid "Cannot change to that email."
+#: src/Module/Admin/Site.php:610
+msgid "all"
 msgstr ""
 
-#: mod/settings.php:562
-msgid "Private forum has no privacy permissions. Using default privacy group."
+#: src/Module/Admin/Site.php:610
+msgid "tags"
 msgstr ""
 
-#: mod/settings.php:565
-msgid "Private forum has no privacy permissions and no default privacy group."
+#: src/Module/Admin/Site.php:611
+msgid "Server tags"
 msgstr ""
 
-#: mod/settings.php:605
-msgid "Settings updated."
-msgstr "Inställningarna har uppdaterats."
+#: src/Module/Admin/Site.php:611
+msgid "Comma separated list of tags for the \"tags\" subscription."
+msgstr ""
 
-#: mod/settings.php:664 mod/settings.php:690 mod/settings.php:724
-msgid "Add application"
+#: src/Module/Admin/Site.php:612
+msgid "Deny Server tags"
 msgstr ""
 
-#: mod/settings.php:668 mod/settings.php:694
-msgid "Consumer Key"
+#: src/Module/Admin/Site.php:612
+msgid "Comma separated list of tags that are rejected."
 msgstr ""
 
-#: mod/settings.php:669 mod/settings.php:695
-msgid "Consumer Secret"
+#: src/Module/Admin/Site.php:613
+msgid "Allow user tags"
 msgstr ""
 
-#: mod/settings.php:670 mod/settings.php:696
-msgid "Redirect"
+#: src/Module/Admin/Site.php:613
+msgid ""
+"If enabled, the tags from the saved searches will used for the \"tags\" "
+"subscription in addition to the \"relay_server_tags\"."
 msgstr ""
 
-#: mod/settings.php:671 mod/settings.php:697
-msgid "Icon url"
+#: src/Module/Admin/Site.php:616
+msgid "Start Relocation"
 msgstr ""
 
-#: mod/settings.php:682
-msgid "You can't edit this application."
+#: src/Module/Admin/Storage.php:46
+#, php-format
+msgid "Storage backend, %s is invalid."
 msgstr ""
 
-#: mod/settings.php:723
-msgid "Connected Apps"
+#: src/Module/Admin/Storage.php:73
+#, php-format
+msgid "Storage backend %s error: %s"
 msgstr ""
 
-#: mod/settings.php:725 src/Object/Post.php:167 src/Object/Post.php:169
-msgid "Edit"
-msgstr "Ändra"
+#: src/Module/Admin/Storage.php:84 src/Module/Admin/Storage.php:87
+msgid "Invalid storage backend setting value."
+msgstr ""
 
-#: mod/settings.php:727
-msgid "Client key starts with"
+#: src/Module/Admin/Storage.php:139
+msgid "Current Storage Backend"
 msgstr ""
 
-#: mod/settings.php:728
-msgid "No name"
+#: src/Module/Admin/Storage.php:140
+msgid "Storage Configuration"
 msgstr ""
 
-#: mod/settings.php:729
-msgid "Remove authorization"
+#: src/Module/Admin/Storage.php:141 src/Module/BaseAdmin.php:91
+msgid "Storage"
 msgstr ""
 
-#: mod/settings.php:740
-msgid "No Addon settings configured"
+#: src/Module/Admin/Storage.php:143
+msgid "Save & Use storage backend"
 msgstr ""
 
-#: mod/settings.php:749
-msgid "Addon Settings"
+#: src/Module/Admin/Storage.php:144
+msgid "Use storage backend"
 msgstr ""
 
-#: mod/settings.php:770
-msgid "Additional Features"
+#: src/Module/Admin/Storage.php:145
+msgid "Save & Reload"
 msgstr ""
 
-#: mod/settings.php:793 src/Content/ContactSelector.php:87
-msgid "Diaspora"
+#: src/Module/Admin/Storage.php:146
+msgid "This backend doesn't have custom settings"
 msgstr ""
 
-#: mod/settings.php:793 mod/settings.php:794
-msgid "enabled"
+#: src/Module/Admin/Storage.php:149
+msgid "Database (legacy)"
 msgstr ""
 
-#: mod/settings.php:793 mod/settings.php:794
-msgid "disabled"
+#: src/Module/Admin/Summary.php:53
+#, php-format
+msgid "Template engine (%s) error: %s"
 msgstr ""
 
-#: mod/settings.php:793 mod/settings.php:794
+#: src/Module/Admin/Summary.php:57
 #, php-format
-msgid "Built-in support for %s connectivity is %s"
+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 <a href=\"%s\">here</a> for a guide that may be helpful "
+"converting the table engines. You may also use the command <tt>php "
+"bin/console.php dbstructure toinnodb</tt> of your Friendica installation for"
+" an automatic conversion.<br />"
 msgstr ""
 
-#: mod/settings.php:794
-msgid "GNU Social (OStatus)"
+#: src/Module/Admin/Summary.php:62
+#, php-format
+msgid ""
+"Your DB still runs with InnoDB tables in the Antelope file format. You "
+"should change the file format to Barracuda. Friendica is using features that"
+" are not provided by the Antelope format. See <a href=\"%s\">here</a> for a "
+"guide that may be helpful converting the table engines. You may also use the"
+" command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica"
+" installation for an automatic conversion.<br />"
 msgstr ""
 
-#: mod/settings.php:825
-msgid "Email access is disabled on this site."
+#: src/Module/Admin/Summary.php:72
+#, php-format
+msgid ""
+"Your table_definition_cache is too low (%d). This can lead to the database "
+"error \"Prepared statement needs to be re-prepared\". Please set it at least"
+" to %d. See <a href=\"%s\">here</a> for more information.<br />"
 msgstr ""
 
-#: mod/settings.php:835
-msgid "General Social Media Settings"
+#: src/Module/Admin/Summary.php:82
+#, php-format
+msgid ""
+"There is a new version of Friendica available for download. Your current "
+"version is %1$s, upstream version is %2$s"
 msgstr ""
 
-#: mod/settings.php:836
-msgid "Disable Content Warning"
+#: src/Module/Admin/Summary.php:91
+msgid ""
+"The database update failed. Please run \"php bin/console.php dbstructure "
+"update\" from the command line and have a look at the errors that might "
+"appear."
 msgstr ""
 
-#: mod/settings.php:836
+#: src/Module/Admin/Summary.php:95
 msgid ""
-"Users on networks like Mastodon or Pleroma are able to set a content warning"
-" field which collapse their post by default. This disables the automatic "
-"collapsing and sets the content warning as the post title. Doesn't affect "
-"any other content filtering you eventually set up."
+"The last update failed. Please run \"php bin/console.php dbstructure "
+"update\" from the command line and have a look at the errors that might "
+"appear. (Some of the errors are possibly inside the logfile.)"
 msgstr ""
 
-#: mod/settings.php:837
-msgid "Disable intelligent shortening"
+#: src/Module/Admin/Summary.php:100
+msgid "The worker was never executed. Please check your database structure!"
 msgstr ""
 
-#: mod/settings.php:837
+#: src/Module/Admin/Summary.php:102
+#, php-format
 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."
+"The last worker execution was on %s UTC. This is older than one hour. Please"
+" check your crontab settings."
 msgstr ""
 
-#: mod/settings.php:838
-msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
+#: src/Module/Admin/Summary.php:107
+#, php-format
+msgid ""
+"Friendica's configuration now is stored in config/local.config.php, please "
+"copy config/local-sample.config.php and move your config from "
+"<code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for "
+"help with the transition."
 msgstr ""
 
-#: mod/settings.php:838
+#: src/Module/Admin/Summary.php:111
+#, php-format
 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."
+"Friendica's configuration now is stored in config/local.config.php, please "
+"copy config/local-sample.config.php and move your config from "
+"<code>config/local.ini.php</code>. See <a href=\"%s\">the Config help "
+"page</a> for help with the transition."
 msgstr ""
 
-#: mod/settings.php:839
-msgid "Default group for OStatus contacts"
+#: src/Module/Admin/Summary.php:117
+#, php-format
+msgid ""
+"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
+"configuration issue that prevents server to server communication. See <a "
+"href=\"%s\">the installation page</a> for help."
 msgstr ""
 
-#: mod/settings.php:840
-msgid "Your legacy GNU Social account"
+#: src/Module/Admin/Summary.php:135
+#, php-format
+msgid "The logfile '%s' is not usable. No logging possible (error: '%s')"
 msgstr ""
 
-#: mod/settings.php:840
+#: src/Module/Admin/Summary.php:149
+#, php-format
 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."
+"The debug logfile '%s' is not usable. No logging possible (error: '%s')"
 msgstr ""
 
-#: mod/settings.php:843
-msgid "Repair OStatus subscriptions"
+#: src/Module/Admin/Summary.php:165
+#, php-format
+msgid ""
+"Friendica's system.basepath was updated from '%s' to '%s'. Please remove the"
+" system.basepath from your db to avoid differences."
 msgstr ""
 
-#: mod/settings.php:847
-msgid "Email/Mailbox Setup"
+#: src/Module/Admin/Summary.php:173
+#, php-format
+msgid ""
+"Friendica's current system.basepath '%s' is wrong and the config file '%s' "
+"isn't used."
 msgstr ""
 
-#: mod/settings.php:848
+#: src/Module/Admin/Summary.php:181
+#, php-format
 msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
+"Friendica's current system.basepath '%s' is not equal to the config file "
+"'%s'. Please fix your configuration."
 msgstr ""
 
-#: mod/settings.php:849
-msgid "Last successful email check:"
-msgstr ""
+#: src/Module/Admin/Summary.php:188
+msgid "Normal Account"
+msgstr "Vanligt konto"
 
-#: mod/settings.php:851
-msgid "IMAP server name:"
+#: src/Module/Admin/Summary.php:189
+msgid "Automatic Follower Account"
 msgstr ""
 
-#: mod/settings.php:852
-msgid "IMAP port:"
+#: src/Module/Admin/Summary.php:190
+msgid "Public Forum Account"
 msgstr ""
 
-#: mod/settings.php:853
-msgid "Security:"
-msgstr ""
+#: src/Module/Admin/Summary.php:191
+msgid "Automatic Friend Account"
+msgstr "Konto med automatiskt godkännande av vänner."
 
-#: mod/settings.php:853 mod/settings.php:858
-msgid "None"
-msgstr ""
+#: src/Module/Admin/Summary.php:192
+msgid "Blog Account"
+msgstr "Blogg-konto"
 
-#: mod/settings.php:854
-msgid "Email login name:"
+#: src/Module/Admin/Summary.php:193
+msgid "Private Forum Account"
 msgstr ""
 
-#: mod/settings.php:855
-msgid "Email password:"
-msgstr ""
+#: src/Module/Admin/Summary.php:213
+msgid "Message queues"
+msgstr "Meddelandeköer"
 
-#: mod/settings.php:856
-msgid "Reply-to address:"
+#: src/Module/Admin/Summary.php:219
+msgid "Server Settings"
 msgstr ""
 
-#: mod/settings.php:857
-msgid "Send public posts to all email contacts:"
-msgstr ""
+#: src/Module/Admin/Summary.php:235
+msgid "Registered users"
+msgstr "Registrerade användare"
 
-#: mod/settings.php:858
-msgid "Action after import:"
-msgstr ""
+#: src/Module/Admin/Summary.php:237
+msgid "Pending registrations"
+msgstr "Väntande registreringar"
 
-#: mod/settings.php:858 src/Content/Nav.php:249
-msgid "Mark as seen"
-msgstr ""
+#: src/Module/Admin/Summary.php:238
+msgid "Version"
+msgstr "Version"
 
-#: mod/settings.php:858
-msgid "Move to folder"
+#: src/Module/Admin/Summary.php:242
+msgid "Active addons"
 msgstr ""
 
-#: mod/settings.php:859
-msgid "Move to folder:"
+#: src/Module/Admin/Themes/Details.php:57 src/Module/Admin/Themes/Index.php:65
+#, php-format
+msgid "Theme %s disabled."
 msgstr ""
 
-#: mod/settings.php:902
+#: src/Module/Admin/Themes/Details.php:59 src/Module/Admin/Themes/Index.php:67
 #, php-format
-msgid "%s - (Unsupported)"
+msgid "Theme %s successfully enabled."
 msgstr ""
 
-#: mod/settings.php:904
+#: src/Module/Admin/Themes/Details.php:61 src/Module/Admin/Themes/Index.php:69
 #, php-format
-msgid "%s - (Experimental)"
+msgid "Theme %s failed to install."
 msgstr ""
 
-#: mod/settings.php:931 src/Core/L10n.php:368 src/Model/Event.php:395
-msgid "Sunday"
-msgstr "söndag"
+#: src/Module/Admin/Themes/Details.php:83
+msgid "Screenshot"
+msgstr "Skärmdump"
 
-#: mod/settings.php:931 src/Core/L10n.php:368 src/Model/Event.php:396
-msgid "Monday"
-msgstr "måndag"
+#: src/Module/Admin/Themes/Details.php:91
+#: src/Module/Admin/Themes/Index.php:112 src/Module/BaseAdmin.php:94
+msgid "Themes"
+msgstr "Teman"
 
-#: mod/settings.php:947
-msgid "Display Settings"
+#: src/Module/Admin/Themes/Embed.php:79
+msgid "Unknown theme."
 msgstr ""
 
-#: mod/settings.php:953
-msgid "Display Theme:"
-msgstr "Tema/utseende:"
-
-#: mod/settings.php:954
-msgid "Mobile Theme:"
+#: src/Module/Admin/Themes/Index.php:51
+msgid "Themes reloaded"
 msgstr ""
 
-#: mod/settings.php:955
-msgid "Suppress warning of insecure networks"
+#: src/Module/Admin/Themes/Index.php:114
+msgid "Reload active themes"
 msgstr ""
 
-#: mod/settings.php:955
-msgid ""
-"Should the system suppress the warning that the current group contains "
-"members of networks that can't receive non public postings."
+#: src/Module/Admin/Themes/Index.php:119
+#, php-format
+msgid "No themes found on the system. They should be placed in %1$s"
 msgstr ""
 
-#: mod/settings.php:956
-msgid "Update browser every xx seconds"
+#: src/Module/Admin/Themes/Index.php:120
+msgid "[Experimental]"
+msgstr "[Experimentiell]"
+
+#: src/Module/Admin/Themes/Index.php:121
+msgid "[Unsupported]"
+msgstr "[Stöds inte]"
+
+#: src/Module/Admin/Tos.php:77
+msgid "Display Terms of Service"
 msgstr ""
 
-#: mod/settings.php:956
-msgid "Minimum of 10 seconds. Enter -1 to disable it."
+#: src/Module/Admin/Tos.php:77
+msgid ""
+"Enable the Terms of Service page. If this is enabled a link to the terms "
+"will be added to the registration form and the general information page."
 msgstr ""
 
-#: mod/settings.php:957
-msgid "Number of items to display per page:"
+#: src/Module/Admin/Tos.php:78
+msgid "Display Privacy Statement"
 msgstr ""
 
-#: mod/settings.php:957 mod/settings.php:958
-msgid "Maximum of 100 items"
+#: src/Module/Admin/Tos.php:78
+#, php-format
+msgid ""
+"Show some informations regarding the needed information to operate the node "
+"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener "
+"noreferrer\">EU-GDPR</a>."
 msgstr ""
 
-#: mod/settings.php:958
-msgid "Number of items to display per page when viewed from mobile device:"
+#: src/Module/Admin/Tos.php:79
+msgid "Privacy Statement Preview"
 msgstr ""
 
-#: mod/settings.php:959
-msgid "Don't show emoticons"
+#: src/Module/Admin/Tos.php:81
+msgid "The Terms of Service"
 msgstr ""
 
-#: mod/settings.php:960
-msgid "Calendar"
+#: src/Module/Admin/Tos.php:81
+msgid ""
+"Enter the Terms of Service for your node here. You can use BBCode. Headers "
+"of sections should be [h2] and below."
 msgstr ""
 
-#: mod/settings.php:961
-msgid "Beginning of week:"
+#: src/Module/Admin/Users/Active.php:45 src/Module/Admin/Users/Index.php:45
+#, php-format
+msgid "%s user blocked"
+msgid_plural "%s users blocked"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Module/Admin/Users/Active.php:53 src/Module/Admin/Users/Active.php:88
+#: src/Module/Admin/Users/Blocked.php:54 src/Module/Admin/Users/Blocked.php:89
+#: src/Module/Admin/Users/Index.php:60 src/Module/Admin/Users/Index.php:95
+msgid "You can't remove yourself"
 msgstr ""
 
-#: mod/settings.php:962
-msgid "Don't show notices"
+#: src/Module/Admin/Users/Active.php:57 src/Module/Admin/Users/Blocked.php:58
+#: src/Module/Admin/Users/Index.php:64
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%sanvändare togs bort"
+msgstr[1] "%s användare togs bort"
+
+#: src/Module/Admin/Users/Active.php:86 src/Module/Admin/Users/Blocked.php:87
+#: src/Module/Admin/Users/Index.php:93
+#, php-format
+msgid "User \"%s\" deleted"
 msgstr ""
 
-#: mod/settings.php:963
-msgid "Infinite scroll"
+#: src/Module/Admin/Users/Active.php:96 src/Module/Admin/Users/Index.php:103
+#, php-format
+msgid "User \"%s\" blocked"
 msgstr ""
 
-#: mod/settings.php:964
-msgid "Automatic updates only at the top of the network page"
+#: src/Module/Admin/Users/Active.php:129
+#: src/Module/Admin/Users/Blocked.php:130
+#: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
+#: src/Module/Admin/Users/Index.php:162
+msgid "Register date"
+msgstr "Datum för registrering"
+
+#: src/Module/Admin/Users/Active.php:129
+#: src/Module/Admin/Users/Blocked.php:130
+#: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
+#: src/Module/Admin/Users/Index.php:162
+msgid "Last login"
+msgstr "Senaste inloggning"
+
+#: src/Module/Admin/Users/Active.php:129
+#: src/Module/Admin/Users/Blocked.php:130
+#: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:142
+#: src/Module/Admin/Users/Index.php:162
+msgid "Last public item"
 msgstr ""
 
-#: mod/settings.php:964
-msgid ""
-"When disabled, the network page is updated all the time, which could be "
-"confusing while reading."
+#: src/Module/Admin/Users/Active.php:137
+msgid "Active Accounts"
 msgstr ""
 
-#: mod/settings.php:965
-msgid "Bandwidth Saver Mode"
+#: src/Module/Admin/Users/Active.php:141
+#: src/Module/Admin/Users/Blocked.php:141 src/Module/Admin/Users/Index.php:155
+msgid "User blocked"
 msgstr ""
 
-#: mod/settings.php:965
-msgid ""
-"When enabled, embedded content is not displayed on automatic updates, they "
-"only show on page reload."
+#: src/Module/Admin/Users/Active.php:142
+#: src/Module/Admin/Users/Blocked.php:143 src/Module/Admin/Users/Index.php:157
+msgid "Site admin"
 msgstr ""
 
-#: mod/settings.php:966
-msgid "Smart Threading"
+#: src/Module/Admin/Users/Active.php:143
+#: src/Module/Admin/Users/Blocked.php:144 src/Module/Admin/Users/Index.php:158
+msgid "Account expired"
+msgstr "Kontot slutade gälla"
+
+#: src/Module/Admin/Users/Active.php:144 src/Module/Admin/Users/Index.php:161
+msgid "Create a new user"
 msgstr ""
 
-#: mod/settings.php:966
+#: src/Module/Admin/Users/Active.php:150
+#: src/Module/Admin/Users/Blocked.php:150 src/Module/Admin/Users/Index.php:167
 msgid ""
-"When enabled, suppress extraneous thread indentation while keeping it where "
-"it matters. Only works if threading is available and enabled."
+"Selected users will be deleted!\\n\\nEverything these users had posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
 msgstr ""
 
-#: mod/settings.php:968
-msgid "General Theme Settings"
+#: src/Module/Admin/Users/Active.php:151
+#: src/Module/Admin/Users/Blocked.php:151 src/Module/Admin/Users/Index.php:168
+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/settings.php:969
-msgid "Custom Theme Settings"
-msgstr ""
+#: src/Module/Admin/Users/Blocked.php:46 src/Module/Admin/Users/Index.php:52
+#, php-format
+msgid "%s user unblocked"
+msgid_plural "%s users unblocked"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/settings.php:970
-msgid "Content Settings"
+#: src/Module/Admin/Users/Blocked.php:96 src/Module/Admin/Users/Index.php:109
+#, php-format
+msgid "User \"%s\" unblocked"
 msgstr ""
 
-#: mod/settings.php:971 view/theme/duepuntozero/config.php:74
-#: view/theme/frio/config.php:121 view/theme/quattro/config.php:76
-#: view/theme/vier/config.php:122
-msgid "Theme settings"
+#: src/Module/Admin/Users/Blocked.php:138
+msgid "Blocked Users"
 msgstr ""
 
-#: mod/settings.php:985
-msgid "Unable to find your profile. Please contact your admin."
-msgstr ""
+#: src/Module/Admin/Users/Create.php:62
+msgid "New User"
+msgstr "Ny användare"
 
-#: mod/settings.php:1024
-msgid "Account Types"
-msgstr ""
+#: src/Module/Admin/Users/Create.php:63
+msgid "Add User"
+msgstr "Lägg till användare"
 
-#: mod/settings.php:1025
-msgid "Personal Page Subtypes"
-msgstr ""
+#: src/Module/Admin/Users/Create.php:71
+msgid "Name of the new user."
+msgstr "Namn på den nya användaren."
 
-#: mod/settings.php:1026
-msgid "Community Forum Subtypes"
-msgstr ""
+#: src/Module/Admin/Users/Create.php:72
+msgid "Nickname"
+msgstr "Smeknamn"
 
-#: mod/settings.php:1034
-msgid "Account for a personal profile."
-msgstr ""
+#: src/Module/Admin/Users/Create.php:72
+msgid "Nickname of the new user."
+msgstr "Smeknamn på den nya användaren."
 
-#: mod/settings.php:1038
-msgid ""
-"Account for an organisation that automatically approves contact requests as "
-"\"Followers\"."
-msgstr ""
+#: src/Module/Admin/Users/Create.php:73
+msgid "Email address of the new user."
+msgstr "E-postadress för den nya användaren."
 
-#: mod/settings.php:1042
-msgid ""
-"Account for a news reflector that automatically approves contact requests as"
-" \"Followers\"."
+#: src/Module/Admin/Users/Deleted.php:86
+msgid "Users awaiting permanent deletion"
 msgstr ""
 
-#: mod/settings.php:1046
-msgid "Account for community discussions."
+#: src/Module/Admin/Users/Deleted.php:88 src/Module/Admin/Users/Index.php:162
+msgid "Permanent deletion"
 msgstr ""
 
-#: mod/settings.php:1050
-msgid ""
-"Account for a regular personal profile that requires manual approval of "
-"\"Friends\" and \"Followers\"."
-msgstr ""
+#: src/Module/Admin/Users/Index.php:150 src/Module/Admin/Users/Index.php:160
+#: src/Module/BaseAdmin.php:92
+msgid "Users"
+msgstr "Användare"
 
-#: mod/settings.php:1054
-msgid ""
-"Account for a public profile that automatically approves contact requests as"
-" \"Followers\"."
+#: src/Module/Admin/Users/Index.php:152
+msgid "User waiting for permanent deletion"
 msgstr ""
 
-#: mod/settings.php:1058
-msgid "Automatically approves all contact requests."
-msgstr ""
+#: src/Module/Admin/Users/Pending.php:48
+#, php-format
+msgid "%s user approved"
+msgid_plural "%s users approved"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/settings.php:1062
-msgid ""
-"Account for a popular profile that automatically approves contact requests "
-"as \"Friends\"."
-msgstr ""
+#: src/Module/Admin/Users/Pending.php:55
+#, php-format
+msgid "%s registration revoked"
+msgid_plural "%s registrations revoked"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/settings.php:1065
-msgid "Private Forum [Experimental]"
-msgstr ""
+#: src/Module/Admin/Users/Pending.php:81
+msgid "Account approved."
+msgstr "Kontot har godkänts."
 
-#: mod/settings.php:1066
-msgid "Requires manual approval of contact requests."
+#: src/Module/Admin/Users/Pending.php:87
+msgid "Registration revoked"
 msgstr ""
 
-#: mod/settings.php:1077
-msgid "OpenID:"
+#: src/Module/Admin/Users/Pending.php:102
+msgid "User registrations awaiting review"
 msgstr ""
 
-#: mod/settings.php:1077
-msgid "(Optional) Allow this OpenID to login to this account."
-msgstr ""
+#: src/Module/Admin/Users/Pending.php:104
+msgid "Request date"
+msgstr "Datum för begäran"
 
-#: mod/settings.php:1085
-msgid "Publish your default profile in your local site directory?"
+#: src/Module/Admin/Users/Pending.php:105
+msgid "No registrations."
+msgstr "Inga registreringar."
+
+#: src/Module/Admin/Users/Pending.php:106
+msgid "Note from the user"
 msgstr ""
 
-#: mod/settings.php:1085
+#: src/Module/Admin/Users/Pending.php:108
+msgid "Deny"
+msgstr "Avslå"
+
+#: src/Module/Api/ApiResponse.php:272
 #, php-format
-msgid ""
-"Your profile will be published in this node's <a href=\"%s\">local "
-"directory</a>. Your profile details may be publicly visible depending on the"
-" system settings."
+msgid "API endpoint %s %s is not implemented"
 msgstr ""
 
-#: mod/settings.php:1091
-msgid "Publish your default profile in the global social directory?"
+#: src/Module/Api/ApiResponse.php:273
+msgid ""
+"The API endpoint is currently not implemented but might be in the future."
 msgstr ""
 
-#: mod/settings.php:1091
-#, php-format
-msgid ""
-"Your profile will be published in the global friendica directories (e.g. <a "
-"href=\"%s\">%s</a>). Your profile will be visible in public."
+#: src/Module/Api/Mastodon/Apps.php:63
+msgid "Missing parameters"
 msgstr ""
 
-#: mod/settings.php:1098
-msgid "Hide your contact/friend list from viewers of your default profile?"
+#: src/Module/Api/Mastodon/Statuses/Bookmark.php:51
+msgid "Only starting posts can be bookmarked"
 msgstr ""
 
-#: mod/settings.php:1098
-msgid ""
-"Your contact list won't be shown in your default profile page. You can "
-"decide to show your contact list separately for each additional profile you "
-"create"
+#: src/Module/Api/Mastodon/Statuses/Mute.php:50
+msgid "Only starting posts can be muted"
 msgstr ""
 
-#: mod/settings.php:1102
-msgid "Hide your profile details from anonymous viewers?"
+#: src/Module/Api/Mastodon/Statuses/Pin.php:50
+#: src/Module/Api/Mastodon/Statuses/Unpin.php:50
+msgid "Only starting posts can be pinned"
 msgstr ""
 
-#: mod/settings.php:1102
-msgid ""
-"Anonymous visitors will only see your profile picture, your display name and"
-" the nickname you are using on your profile page. Your public posts and "
-"replies will still be accessible by other means."
+#: src/Module/Api/Mastodon/Statuses/Reblog.php:53
+#, php-format
+msgid "Posts from %s can't be shared"
 msgstr ""
 
-#: mod/settings.php:1106
-msgid "Allow friends to post to your profile page?"
+#: src/Module/Api/Mastodon/Statuses/Unbookmark.php:51
+msgid "Only starting posts can be unbookmarked"
 msgstr ""
 
-#: mod/settings.php:1106
-msgid ""
-"Your contacts may write posts on your profile wall. These posts will be "
-"distributed to your contacts"
+#: src/Module/Api/Mastodon/Statuses/Unmute.php:50
+msgid "Only starting posts can be unmuted"
 msgstr ""
 
-#: mod/settings.php:1110
-msgid "Allow friends to tag your posts?"
+#: src/Module/Api/Mastodon/Statuses/Unreblog.php:53
+#, php-format
+msgid "Posts from %s can't be unshared"
 msgstr ""
 
-#: mod/settings.php:1110
-msgid "Your contacts can add additional tags to your posts."
+#: src/Module/Api/Twitter/ContactEndpoint.php:66
+msgid "Contact not found"
 msgstr ""
 
-#: mod/settings.php:1114
-msgid "Allow us to suggest you as a potential friend to new members?"
+#: src/Module/Apps.php:54
+msgid "No installed applications."
+msgstr "Inga installerade applikationer."
+
+#: src/Module/Apps.php:59
+msgid "Applications"
+msgstr "Applikationer"
+
+#: src/Module/Attach.php:49 src/Module/Attach.php:61
+msgid "Item was not found."
+msgstr "Objektet hittades inte."
+
+#: src/Module/BaseAdmin.php:54 src/Module/BaseAdmin.php:58
+msgid "Please login to continue."
+msgstr "Vänligen logga in för att fortsätta."
+
+#: src/Module/BaseAdmin.php:63
+msgid "You don't have access to administration pages."
 msgstr ""
 
-#: mod/settings.php:1114
+#: src/Module/BaseAdmin.php:67
 msgid ""
-"If you like, Friendica may suggest new members to add you as a contact."
+"Submanaged account can't access the administration pages. Please log back in"
+" as the main account."
 msgstr ""
 
-#: mod/settings.php:1118
-msgid "Permit unknown people to send you private mail?"
+#: src/Module/BaseAdmin.php:86
+msgid "Overview"
 msgstr ""
 
-#: mod/settings.php:1118
-msgid ""
-"Friendica network users may send you private messages even if they are not "
-"in your contact list."
+#: src/Module/BaseAdmin.php:89
+msgid "Configuration"
+msgstr ""
+
+#: src/Module/BaseAdmin.php:95 src/Module/BaseSettings.php:63
+msgid "Additional features"
+msgstr "Ytterligare funktioner"
+
+#: src/Module/BaseAdmin.php:98
+msgid "Database"
 msgstr ""
 
-#: mod/settings.php:1122
-msgid "Profile is <strong>not published</strong>."
-msgstr "Profilen är <strong>inte publicerad</strong>."
+#: src/Module/BaseAdmin.php:99
+msgid "DB updates"
+msgstr "DB-uppdateringar"
 
-#: mod/settings.php:1128
-#, php-format
-msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
+#: src/Module/BaseAdmin.php:100
+msgid "Inspect Deferred Workers"
 msgstr ""
 
-#: mod/settings.php:1135
-msgid "Automatically expire posts after this many days:"
+#: src/Module/BaseAdmin.php:101
+msgid "Inspect worker Queue"
 msgstr ""
 
-#: mod/settings.php:1135
-msgid "If empty, posts will not expire. Expired posts will be deleted"
+#: src/Module/BaseAdmin.php:103
+msgid "Tools"
 msgstr ""
 
-#: mod/settings.php:1136
-msgid "Advanced expiration settings"
+#: src/Module/BaseAdmin.php:104
+msgid "Contact Blocklist"
 msgstr ""
 
-#: mod/settings.php:1137
-msgid "Advanced Expiration"
+#: src/Module/BaseAdmin.php:105
+msgid "Server Blocklist"
 msgstr ""
 
-#: mod/settings.php:1138
-msgid "Expire posts:"
+#: src/Module/BaseAdmin.php:112
+msgid "Diagnostics"
 msgstr ""
 
-#: mod/settings.php:1139
-msgid "Expire personal notes:"
+#: src/Module/BaseAdmin.php:113
+msgid "PHP Info"
 msgstr ""
 
-#: mod/settings.php:1140
-msgid "Expire starred posts:"
+#: src/Module/BaseAdmin.php:114
+msgid "probe address"
 msgstr ""
 
-#: mod/settings.php:1141
-msgid "Expire photos:"
+#: src/Module/BaseAdmin.php:115
+msgid "check webfinger"
 msgstr ""
 
-#: mod/settings.php:1142
-msgid "Only expire posts by others:"
+#: src/Module/BaseAdmin.php:117
+msgid "Babel"
 msgstr ""
 
-#: mod/settings.php:1172
-msgid "Account Settings"
-msgstr "Kontoinställningar"
+#: src/Module/BaseAdmin.php:118 src/Module/Debug/ActivityPubConversion.php:138
+msgid "ActivityPub Conversion"
+msgstr ""
 
-#: mod/settings.php:1180
-msgid "Password Settings"
-msgstr "Lösenordsinställningar"
+#: src/Module/BaseAdmin.php:127
+msgid "Addon Features"
+msgstr ""
 
-#: mod/settings.php:1181 src/Module/Register.php:130
-msgid "New Password:"
-msgstr "Nytt lösenord"
+#: src/Module/BaseAdmin.php:128
+msgid "User registrations waiting for confirmation"
+msgstr "Användarens registreringar väntar på bekräftelse"
 
-#: mod/settings.php:1181
-msgid ""
-"Allowed characters are a-z, A-Z, 0-9 and special characters except white "
-"spaces, accentuated letters and colon (:)."
+#: src/Module/BaseApi.php:241 src/Module/BaseApi.php:257
+#: src/Module/BaseApi.php:273
+msgid "Too Many Requests"
 msgstr ""
 
-#: mod/settings.php:1182 src/Module/Register.php:131
-msgid "Confirm:"
-msgstr "Bekräfta (repetera):"
-
-#: mod/settings.php:1182
-msgid "Leave password fields blank unless changing"
-msgstr "Lämna fältet tomt om du inte vill byta lösenord"
+#: src/Module/BaseApi.php:242
+#, php-format
+msgid "Daily posting limit of %d post reached. The post was rejected."
+msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
+msgstr[0] "Daglig gräns av %d upplägg nådd. Upplägget avvisades."
+msgstr[1] "Daglig gräns av %d upplägg nådd. Upplägget avvisades."
 
-#: mod/settings.php:1183
-msgid "Current Password:"
-msgstr ""
+#: src/Module/BaseApi.php:258
+#, php-format
+msgid "Weekly posting limit of %d post reached. The post was rejected."
+msgid_plural ""
+"Weekly posting limit of %d posts reached. The post was rejected."
+msgstr[0] "Veckovis gräns av %d inlägg nådd. Inlägged avvisades."
+msgstr[1] "Veckovis gräns av %d inlägg nådd. Inlägged avvisades."
 
-#: mod/settings.php:1183 mod/settings.php:1184
-msgid "Your current password to confirm the changes"
-msgstr ""
+#: src/Module/BaseApi.php:274
+#, php-format
+msgid "Monthly posting limit of %d post reached. The post was rejected."
+msgstr "Månatlig gräns av %d inlägg nådd. Inlägget avvisades."
 
-#: mod/settings.php:1184
-msgid "Password:"
+#: src/Module/BaseProfile.php:51 src/Module/Contact.php:460
+msgid "Profile Details"
 msgstr ""
 
-#: mod/settings.php:1188
-msgid "Basic Settings"
-msgstr "Grundläggande inställningar"
+#: src/Module/BaseProfile.php:109
+msgid "Only You Can See This"
+msgstr "Endast du kan se det här"
 
-#: mod/settings.php:1189 src/Model/Profile.php:751
-msgid "Full Name:"
-msgstr "Fullständigt namn:"
+#: src/Module/BaseProfile.php:114 src/Module/Profile/Schedule.php:82
+msgid "Scheduled Posts"
+msgstr ""
 
-#: mod/settings.php:1190
-msgid "Email Address:"
-msgstr "E-postadress:"
+#: src/Module/BaseProfile.php:117
+msgid "Posts that are scheduled for publishing"
+msgstr ""
 
-#: mod/settings.php:1191
-msgid "Your Timezone:"
-msgstr "Tidszon:"
+#: src/Module/BaseProfile.php:136 src/Module/BaseProfile.php:139
+msgid "Tips for New Members"
+msgstr "Tips för nya medlemmar"
 
-#: mod/settings.php:1192
-msgid "Your Language:"
+#: src/Module/BaseSearch.php:68
+#, php-format
+msgid "People Search - %s"
 msgstr ""
 
-#: mod/settings.php:1192
-msgid ""
-"Set the language we use to show you friendica interface and to send you "
-"emails"
+#: src/Module/BaseSearch.php:78
+#, php-format
+msgid "Forum Search - %s"
 msgstr ""
 
-#: mod/settings.php:1193
-msgid "Default Post Location:"
-msgstr "Default Post Location:"
+#: src/Module/BaseSettings.php:41
+msgid "Account"
+msgstr "Konto"
 
-#: mod/settings.php:1194
-msgid "Use Browser Location:"
-msgstr "Använd webbläsarens positionering:"
+#: src/Module/BaseSettings.php:48 src/Module/Security/TwoFactor/Verify.php:95
+#: src/Module/Settings/TwoFactor/Index.php:110
+msgid "Two-factor authentication"
+msgstr ""
 
-#: mod/settings.php:1197
-msgid "Security and Privacy Settings"
-msgstr "Inställningar för säkerhet och sekretess"
+#: src/Module/BaseSettings.php:71
+msgid "Display"
+msgstr "Skärm"
 
-#: mod/settings.php:1199
-msgid "Maximum Friend Requests/Day:"
-msgstr "Maximalt antal kontaktförfrågningar per dygn:"
+#: src/Module/BaseSettings.php:92 src/Module/Settings/Delegation.php:171
+msgid "Manage Accounts"
+msgstr ""
 
-#: mod/settings.php:1199 mod/settings.php:1228
-msgid "(to prevent spam abuse)"
-msgstr "(för att motverka spam)"
+#: src/Module/BaseSettings.php:99
+msgid "Connected apps"
+msgstr "Anslutna appar"
 
-#: mod/settings.php:1200
-msgid "Default Post Permissions"
-msgstr "Standardåtkomst för inlägg"
+#: src/Module/BaseSettings.php:106 src/Module/Settings/UserExport.php:75
+msgid "Export personal data"
+msgstr "Exporter personlig data"
 
-#: mod/settings.php:1201
-msgid "(click to open/close)"
-msgstr "(klicka för att öppna/stänga)"
+#: src/Module/BaseSettings.php:113
+msgid "Remove account"
+msgstr "Ta bort konto"
 
-#: mod/settings.php:1211
-msgid "Default Private Post"
+#: src/Module/Bookmarklet.php:54
+msgid "This page is missing a url parameter."
 msgstr ""
 
-#: mod/settings.php:1212
-msgid "Default Public Post"
-msgstr ""
+#: src/Module/Bookmarklet.php:66
+msgid "The post was created"
+msgstr "Inlägget skapades"
 
-#: mod/settings.php:1216
-msgid "Default Permissions for New Posts"
-msgstr ""
+#: src/Module/Contact.php:88
+#, php-format
+msgid "%d contact edited."
+msgid_plural "%d contacts edited."
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/settings.php:1228
-msgid "Maximum private messages per day from unknown people:"
+#: src/Module/Contact.php:309
+msgid "Show all contacts"
+msgstr "Visa alla kontakter"
+
+#: src/Module/Contact.php:317
+msgid "Only show pending contacts"
 msgstr ""
 
-#: mod/settings.php:1231
-msgid "Notification Settings"
-msgstr "Aviseringsinställningar"
+#: src/Module/Contact.php:325
+msgid "Only show blocked contacts"
+msgstr "Visa endast blockerade kontakter"
 
-#: mod/settings.php:1232
-msgid "Send a notification email when:"
-msgstr "Skicka ett aviseringsmail när:"
+#: src/Module/Contact.php:330 src/Module/Contact.php:377
+#: src/Object/Post.php:309
+msgid "Ignored"
+msgstr "Ignorerade"
 
-#: mod/settings.php:1233
-msgid "You receive an introduction"
-msgstr "En kontaktförfrågan anländer"
+#: src/Module/Contact.php:333
+msgid "Only show ignored contacts"
+msgstr "Visa endast ignorerade kontakter"
 
-#: mod/settings.php:1234
-msgid "Your introductions are confirmed"
-msgstr "Dina förfrågningar godkänns"
+#: src/Module/Contact.php:338 src/Module/Contact.php:378
+msgid "Archived"
+msgstr "Arkiverat"
 
-#: mod/settings.php:1235
-msgid "Someone writes on your profile wall"
-msgstr "Någon gör inlägg på din profilsida"
+#: src/Module/Contact.php:341
+msgid "Only show archived contacts"
+msgstr "Visa endast arkiverade kontakter"
 
-#: mod/settings.php:1236
-msgid "Someone writes a followup comment"
-msgstr "Någon gör ett inlägg i samma tråd som du"
+#: src/Module/Contact.php:346 src/Module/Contact.php:376
+msgid "Hidden"
+msgstr "Gömda"
 
-#: mod/settings.php:1237
-msgid "You receive a private message"
-msgstr "Du får personliga meddelanden"
+#: src/Module/Contact.php:349
+msgid "Only show hidden contacts"
+msgstr "Visa endast gömda kontakter"
 
-#: mod/settings.php:1238
-msgid "You receive a friend suggestion"
+#: src/Module/Contact.php:357
+msgid "Organize your contact groups"
 msgstr ""
 
-#: mod/settings.php:1239
-msgid "You are tagged in a post"
-msgstr ""
+#: src/Module/Contact.php:389
+msgid "Search your contacts"
+msgstr "Sök dina kontakter"
 
-#: mod/settings.php:1240
-msgid "You are poked/prodded/etc. in a post"
+#: src/Module/Contact.php:390 src/Module/Search/Index.php:191
+#, php-format
+msgid "Results for: %s"
 msgstr ""
 
-#: mod/settings.php:1242
-msgid "Activate desktop notifications"
-msgstr ""
+#: src/Module/Contact.php:397
+msgid "Update"
+msgstr "Uppdatera"
 
-#: mod/settings.php:1242
-msgid "Show desktop popup on new notifications"
-msgstr ""
+#: src/Module/Contact.php:399 src/Module/Contact/Profile.php:349
+#: src/Module/Contact/Profile.php:457
+msgid "Unignore"
+msgstr "Sluta ignorera"
 
-#: mod/settings.php:1244
-msgid "Text-only notification emails"
+#: src/Module/Contact.php:401
+msgid "Batch Actions"
 msgstr ""
 
-#: mod/settings.php:1246
-msgid "Send text only notification emails, without the html part"
+#: src/Module/Contact.php:436
+msgid "Conversations started by this contact"
 msgstr ""
 
-#: mod/settings.php:1248
-msgid "Show detailled notifications"
+#: src/Module/Contact.php:441
+msgid "Posts and Comments"
 msgstr ""
 
-#: mod/settings.php:1250
-msgid ""
-"Per default, notifications are condensed to a single notification per item. "
-"When enabled every notification is displayed."
+#: src/Module/Contact.php:452
+msgid "Posts containing media objects"
 msgstr ""
 
-#: mod/settings.php:1252
-msgid "Advanced Account/Page Type Settings"
+#: src/Module/Contact.php:467
+msgid "View all known contacts"
 msgstr ""
 
-#: mod/settings.php:1253
-msgid "Change the behaviour of this account for special situations"
+#: src/Module/Contact.php:477
+msgid "Advanced Contact Settings"
 msgstr ""
 
-#: mod/settings.php:1256
-msgid "Relocate"
-msgstr ""
+#: src/Module/Contact.php:511
+msgid "Mutual Friendship"
+msgstr "Ömsesidig vänskap"
 
-#: mod/settings.php:1257
-msgid ""
-"If you have moved this profile from another server, and some of your "
-"contacts don't receive your updates, try pushing this button."
+#: src/Module/Contact.php:515
+msgid "is a fan of yours"
+msgstr "är ett fan till dig"
+
+#: src/Module/Contact.php:519
+msgid "you are a fan of"
+msgstr "du är fan till"
+
+#: src/Module/Contact.php:537
+msgid "Pending outgoing contact request"
 msgstr ""
 
-#: mod/settings.php:1258
-msgid "Resend relocate message to contacts"
+#: src/Module/Contact.php:539
+msgid "Pending incoming contact request"
 msgstr ""
 
-#: mod/subthread.php:104
+#: src/Module/Contact.php:552 src/Module/Contact/Profile.php:334
 #, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr ""
+msgid "Visit %s's profile [%s]"
+msgstr "Besök %s's profil [%s]"
 
-#: mod/suggest.php:39
-msgid "Do you really want to delete this suggestion?"
-msgstr ""
+#: src/Module/Contact/Advanced.php:99
+msgid "Contact update failed."
+msgstr "Det gick inte att uppdatera kontakt."
 
-#: mod/suggest.php:75
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
+#: src/Module/Contact/Advanced.php:130
+msgid "Return to contact editor"
 msgstr ""
 
-#: mod/suggest.php:89 mod/suggest.php:109
-msgid "Ignore/Hide"
+#: src/Module/Contact/Advanced.php:135
+msgid "Account Nickname"
 msgstr ""
 
-#: mod/suggest.php:119 src/Content/Widget.php:66 view/theme/vier/theme.php:204
-msgid "Friend Suggestions"
+#: src/Module/Contact/Advanced.php:136
+msgid "Account URL"
 msgstr ""
 
-#: mod/tagrm.php:31
-msgid "Tag(s) removed"
+#: src/Module/Contact/Advanced.php:137
+msgid "Poll/Feed URL"
 msgstr ""
 
-#: mod/tagrm.php:101
-msgid "Remove Item Tag"
-msgstr "Ta bort tagg"
+#: src/Module/Contact/Advanced.php:138
+msgid "New photo from this URL"
+msgstr "Nytt foto från den här webbadressen"
 
-#: mod/tagrm.php:103
-msgid "Select a tag to remove: "
-msgstr "Välj vilken tagg som ska tas bort: "
+#: src/Module/Contact/Contacts.php:50 src/Module/Conversation/Network.php:187
+#: src/Module/Group.php:103
+msgid "Invalid contact."
+msgstr "Ogiltig kontakt."
 
-#: mod/uexport.php:45
-msgid "Export account"
+#: src/Module/Contact/Contacts.php:73
+msgid "No known contacts."
 msgstr ""
 
-#: mod/uexport.php:45
-msgid ""
-"Export your account info and contacts. Use this to make a backup of your "
-"account and/or to move it to another server."
+#: src/Module/Contact/Contacts.php:87 src/Module/Profile/Common.php:98
+msgid "No common contacts."
 msgstr ""
 
-#: mod/uexport.php:46
-msgid "Export all"
-msgstr ""
+#: src/Module/Contact/Contacts.php:99 src/Module/Profile/Contacts.php:96
+#, php-format
+msgid "Follower (%s)"
+msgid_plural "Followers (%s)"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/uexport.php:46
-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 ""
+#: src/Module/Contact/Contacts.php:103 src/Module/Profile/Contacts.php:99
+#, php-format
+msgid "Following (%s)"
+msgid_plural "Following (%s)"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/uimport.php:30
-msgid "User imports on closed servers can only be done by an administrator."
+#: src/Module/Contact/Contacts.php:107 src/Module/Profile/Contacts.php:102
+#, php-format
+msgid "Mutual friend (%s)"
+msgid_plural "Mutual friends (%s)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Module/Contact/Contacts.php:109 src/Module/Profile/Contacts.php:104
+#, php-format
+msgid "These contacts both follow and are followed by <strong>%s</strong>."
 msgstr ""
 
-#: mod/uimport.php:39 src/Module/Register.php:59
+#: src/Module/Contact/Contacts.php:115 src/Module/Profile/Common.php:86
+#, php-format
+msgid "Common contact (%s)"
+msgid_plural "Common contacts (%s)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Module/Contact/Contacts.php:117 src/Module/Profile/Common.php:88
+#, php-format
 msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
+"Both <strong>%s</strong> and yourself have publicly interacted with these "
+"contacts (follow, comment or likes on public posts)."
 msgstr ""
 
-#: mod/uimport.php:54 src/Module/Register.php:141
-msgid "Import"
-msgstr ""
+#: src/Module/Contact/Contacts.php:123 src/Module/Profile/Contacts.php:110
+#, php-format
+msgid "Contact (%s)"
+msgid_plural "Contacts (%s)"
+msgstr[0] ""
+msgstr[1] ""
 
-#: mod/uimport.php:56
-msgid "Move account"
+#: src/Module/Contact/Poke.php:135
+msgid "Error while sending poke, please retry."
 msgstr ""
 
-#: mod/uimport.php:57
-msgid "You can import an account from another Friendica server."
+#: src/Module/Contact/Poke.php:148 src/Module/Search/Acl.php:54
+msgid "You must be logged in to use this module."
 msgstr ""
 
-#: mod/uimport.php:58
-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."
+#: src/Module/Contact/Poke.php:171
+msgid "Poke/Prod"
 msgstr ""
 
-#: mod/uimport.php:59
-msgid ""
-"This feature is experimental. We can't import contacts from the OStatus "
-"network (GNU Social/Statusnet) or from Diaspora"
+#: src/Module/Contact/Poke.php:172
+msgid "poke, prod or do other things to somebody"
 msgstr ""
 
-#: mod/uimport.php:60
-msgid "Account file"
-msgstr ""
+#: src/Module/Contact/Poke.php:174
+msgid "Choose what you wish to do to recipient"
+msgstr "Välj vad du vill göra med mottagaren"
 
-#: mod/uimport.php:60
-msgid ""
-"To export your account, go to \"Settings->Export your personal data\" and "
-"select \"Export account\""
-msgstr ""
+#: src/Module/Contact/Poke.php:175
+msgid "Make this post private"
+msgstr "Gör det här inlägget privat"
+
+#: src/Module/Contact/Profile.php:127
+msgid "Failed to update contact record."
+msgstr "Det blev fel när kontakten skulle uppdateras."
+
+#: src/Module/Contact/Profile.php:177
+msgid "Contact has been unblocked"
+msgstr "Kontakten är inte längre spärrad"
+
+#: src/Module/Contact/Profile.php:181
+msgid "Contact has been blocked"
+msgstr "Kontakten har spärrats"
+
+#: src/Module/Contact/Profile.php:193
+msgid "Contact has been unignored"
+msgstr "Kontakten ignoreras inte längre"
+
+#: src/Module/Contact/Profile.php:197
+msgid "Contact has been ignored"
+msgstr "Kontakten ignoreras"
+
+#: src/Module/Contact/Profile.php:229
+#, php-format
+msgid "You are mutual friends with %s"
+msgstr "Ni är gemensamma vänner med %s"
 
-#: mod/unfollow.php:36 mod/unfollow.php:92
-msgid "You aren't following this contact."
-msgstr ""
+#: src/Module/Contact/Profile.php:230
+#, php-format
+msgid "You are sharing with %s"
+msgstr "Du delar med %s"
 
-#: mod/unfollow.php:46 mod/unfollow.php:98
-msgid "Unfollowing is currently not supported by your network."
-msgstr ""
+#: src/Module/Contact/Profile.php:231
+#, php-format
+msgid "%s is sharing with you"
+msgstr "%s delar med dig"
 
-#: mod/unfollow.php:67
-msgid "Contact unfollowed"
-msgstr ""
+#: src/Module/Contact/Profile.php:247
+msgid "Private communications are not available for this contact."
+msgstr "Det går inte att utbyta personliga meddelanden med den här kontakten."
 
-#: mod/unfollow.php:118 src/Module/Contact.php:570
-msgid "Disconnect/Unfollow"
-msgstr ""
+#: src/Module/Contact/Profile.php:249
+msgid "Never"
+msgstr "Aldrig"
 
-#: mod/update_community.php:23 mod/update_contact.php:23
-#: mod/update_display.php:24 mod/update_network.php:33 mod/update_notes.php:36
-#: mod/update_profile.php:34
-msgid "[Embedded content - reload page to view]"
-msgstr ""
+#: src/Module/Contact/Profile.php:252
+msgid "(Update was not successful)"
+msgstr "(Uppdateringen lyckades inte)"
 
-#: mod/videos.php:97
-msgid "Do you really want to delete this video?"
-msgstr ""
+#: src/Module/Contact/Profile.php:252
+msgid "(Update was successful)"
+msgstr "(Uppdateringen lyckades)"
 
-#: mod/videos.php:102
-msgid "Delete Video"
-msgstr ""
+#: src/Module/Contact/Profile.php:254 src/Module/Contact/Profile.php:420
+msgid "Suggest friends"
+msgstr "Föreslå vänner"
 
-#: mod/videos.php:152
-msgid "No videos selected"
-msgstr ""
+#: src/Module/Contact/Profile.php:258
+#, php-format
+msgid "Network type: %s"
+msgstr "Nätverkstyp: %s"
 
-#: mod/videos.php:309 src/Model/Item.php:3453
-msgid "View Video"
+#: src/Module/Contact/Profile.php:263
+msgid "Communications lost with this contact!"
 msgstr ""
 
-#: mod/videos.php:324
-msgid "Recent Videos"
+#: src/Module/Contact/Profile.php:269
+msgid "Fetch further information for feeds"
 msgstr ""
 
-#: mod/videos.php:326
-msgid "Upload New Videos"
+#: src/Module/Contact/Profile.php:271
+msgid ""
+"Fetch information like preview pictures, title and teaser from the feed "
+"item. You can activate this if the feed doesn't contain much text. Keywords "
+"are taken from the meta header in the feed item and are posted as hash tags."
 msgstr ""
 
-#: mod/viewcontacts.php:78
-msgid "No contacts."
-msgstr "Inga kontakter."
+#: src/Module/Contact/Profile.php:274
+msgid "Fetch information"
+msgstr "Hämta information"
 
-#: mod/viewcontacts.php:94 src/Module/Contact.php:603
-#: src/Module/Contact.php:1024
-#, php-format
-msgid "Visit %s's profile [%s]"
+#: src/Module/Contact/Profile.php:275
+msgid "Fetch keywords"
 msgstr ""
 
-#: mod/viewcontacts.php:114 src/Content/Nav.php:203 src/Content/Nav.php:269
-#: src/Content/Text/HTML.php:911 src/Model/Profile.php:980
-#: src/Model/Profile.php:983 src/Module/Contact.php:811
-#: src/Module/Contact.php:881 view/theme/frio/theme.php:273
-msgid "Contacts"
-msgstr "Kontakter"
-
-#: mod/wallmessage.php:52 mod/wallmessage.php:115
-#, php-format
-msgid "Number of daily wall messages for %s exceeded. Message failed."
+#: src/Module/Contact/Profile.php:276
+msgid "Fetch information and keywords"
 msgstr ""
 
-#: mod/wallmessage.php:63
-msgid "Unable to check your home location."
-msgstr ""
+#: src/Module/Contact/Profile.php:286 src/Module/Contact/Profile.php:292
+#: src/Module/Contact/Profile.php:297 src/Module/Contact/Profile.php:303
+msgid "No mirroring"
+msgstr "Ingen spegling"
 
-#: mod/wallmessage.php:89 mod/wallmessage.php:98
-msgid "No recipient."
+#: src/Module/Contact/Profile.php:287
+msgid "Mirror as forwarded posting"
 msgstr ""
 
-#: mod/wallmessage.php:129
-#, 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."
+#: src/Module/Contact/Profile.php:288 src/Module/Contact/Profile.php:298
+#: src/Module/Contact/Profile.php:304
+msgid "Mirror as my own posting"
 msgstr ""
 
-#: mod/wall_attach.php:26 mod/wall_attach.php:33 mod/wall_attach.php:85
-#: mod/wall_upload.php:42 mod/wall_upload.php:58 mod/wall_upload.php:116
-#: mod/wall_upload.php:167 mod/wall_upload.php:170
-msgid "Invalid request."
+#: src/Module/Contact/Profile.php:293 src/Module/Contact/Profile.php:299
+msgid "Native reshare"
 msgstr ""
 
-#: mod/wall_attach.php:103
-msgid "Sorry, maybe your upload is bigger than the PHP configuration allows"
-msgstr ""
+#: src/Module/Contact/Profile.php:316
+msgid "Contact Information / Notes"
+msgstr "Kontaktuppgifter/Anteckningar"
 
-#: mod/wall_attach.php:103
-msgid "Or - did you try to upload an empty file?"
+#: src/Module/Contact/Profile.php:317
+msgid "Contact Settings"
 msgstr ""
 
-#: mod/wall_attach.php:114
-#, php-format
-msgid "File exceeds size limit of %s"
+#: src/Module/Contact/Profile.php:325
+msgid "Contact"
 msgstr ""
 
-#: mod/wall_attach.php:129
-msgid "File upload failed."
+#: src/Module/Contact/Profile.php:329
+msgid "Their personal note"
 msgstr ""
 
-#: mod/wall_upload.php:243 src/Object/Image.php:967 src/Object/Image.php:983
-#: src/Object/Image.php:991 src/Object/Image.php:1016
-msgid "Wall Photos"
-msgstr "Loggbilder"
+#: src/Module/Contact/Profile.php:331
+msgid "Edit contact notes"
+msgstr "Redigera kontaktanteckningar"
 
-#: src/App.php:610
-msgid "Delete this item?"
-msgstr "Ta bort?"
+#: src/Module/Contact/Profile.php:335
+msgid "Block/Unblock contact"
+msgstr "Spärra kontakt eller häv spärr"
 
-#: src/App.php:652
-msgid "toggle mobile"
-msgstr ""
+#: src/Module/Contact/Profile.php:336
+msgid "Ignore contact"
+msgstr "Ignorera kontakt"
 
-#: src/App.php:985
-msgid "No system theme config value set."
-msgstr ""
+#: src/Module/Contact/Profile.php:337
+msgid "View conversations"
+msgstr "Visa konversationer"
 
-#: src/BaseModule.php:133
-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 ""
+#: src/Module/Contact/Profile.php:342
+msgid "Last update:"
+msgstr "Senaste uppdatering:"
 
-#: src/Content/ContactSelector.php:58
-msgid "Frequently"
-msgstr ""
+#: src/Module/Contact/Profile.php:344
+msgid "Update public posts"
+msgstr "Uppdatera publika inlägg"
 
-#: src/Content/ContactSelector.php:59
-msgid "Hourly"
-msgstr ""
+#: src/Module/Contact/Profile.php:346 src/Module/Contact/Profile.php:430
+msgid "Update now"
+msgstr "Updatera nu"
 
-#: src/Content/ContactSelector.php:60
-msgid "Twice daily"
-msgstr ""
+#: src/Module/Contact/Profile.php:353
+msgid "Currently blocked"
+msgstr "Spärrad"
 
-#: src/Content/ContactSelector.php:61
-msgid "Daily"
-msgstr ""
+#: src/Module/Contact/Profile.php:354
+msgid "Currently ignored"
+msgstr "Ignoreras"
 
-#: src/Content/ContactSelector.php:62
-msgid "Weekly"
+#: src/Module/Contact/Profile.php:355
+msgid "Currently archived"
 msgstr ""
 
-#: src/Content/ContactSelector.php:63
-msgid "Monthly"
+#: src/Module/Contact/Profile.php:356
+msgid "Awaiting connection acknowledge"
 msgstr ""
 
-#: src/Content/ContactSelector.php:83
-msgid "DFRN"
-msgstr ""
+#: src/Module/Contact/Profile.php:357
+#: src/Module/Notifications/Introductions.php:190
+msgid "Hide this contact from others"
+msgstr "Göm den här kontakten för andra"
 
-#: src/Content/ContactSelector.php:84
-msgid "OStatus"
+#: src/Module/Contact/Profile.php:357
+msgid ""
+"Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr ""
 
-#: src/Content/ContactSelector.php:85
-msgid "RSS/Atom"
-msgstr ""
+#: src/Module/Contact/Profile.php:358
+msgid "Notification for new posts"
+msgstr "Avisering för nya inlägg"
 
-#: src/Content/ContactSelector.php:88
-msgid "Zot!"
+#: src/Module/Contact/Profile.php:358
+msgid "Send a notification of every new post of this contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:89
-msgid "LinkedIn"
+#: src/Module/Contact/Profile.php:360
+msgid "Keyword Deny List"
 msgstr ""
 
-#: src/Content/ContactSelector.php:90
-msgid "XMPP/IM"
+#: src/Module/Contact/Profile.php:360
+msgid ""
+"Comma separated list of keywords that should not be converted to hashtags, "
+"when \"Fetch information and keywords\" is selected"
 msgstr ""
 
-#: src/Content/ContactSelector.php:91
-msgid "MySpace"
+#: src/Module/Contact/Profile.php:378
+#: src/Module/Settings/TwoFactor/Index.php:132
+msgid "Actions"
 msgstr ""
 
-#: src/Content/ContactSelector.php:92
-msgid "Google+"
+#: src/Module/Contact/Profile.php:386
+msgid "Mirror postings from this contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:93
-msgid "pump.io"
+#: src/Module/Contact/Profile.php:388
+msgid ""
+"Mark this contact as remote_self, this will cause friendica to repost new "
+"entries from this contact."
 msgstr ""
 
-#: src/Content/ContactSelector.php:94
-msgid "Twitter"
+#: src/Module/Contact/Profile.php:440
+msgid "Refetch contact data"
 msgstr ""
 
-#: src/Content/ContactSelector.php:95
-msgid "Diaspora Connector"
+#: src/Module/Contact/Profile.php:451
+msgid "Toggle Blocked status"
 msgstr ""
 
-#: src/Content/ContactSelector.php:96
-msgid "GNU Social Connector"
+#: src/Module/Contact/Profile.php:459
+msgid "Toggle Ignored status"
 msgstr ""
 
-#: src/Content/ContactSelector.php:97
-msgid "ActivityPub"
+#: src/Module/Contact/Profile.php:466 src/Module/Contact/Revoke.php:107
+msgid "Revoke Follow"
 msgstr ""
 
-#: src/Content/ContactSelector.php:98
-msgid "pnut"
+#: src/Module/Contact/Profile.php:468
+msgid "Revoke the follow from this contact"
 msgstr ""
 
-#: src/Content/ContactSelector.php:153 src/Content/ContactSelector.php:193
-#: src/Content/ContactSelector.php:231
-msgid "No answer"
+#: src/Module/Contact/Revoke.php:59
+msgid "Unknown contact."
 msgstr ""
 
-#: src/Content/ContactSelector.php:154
-msgid "Male"
+#: src/Module/Contact/Revoke.php:69 src/Module/Group.php:112
+msgid "Contact is deleted."
 msgstr ""
 
-#: src/Content/ContactSelector.php:155
-msgid "Female"
+#: src/Module/Contact/Revoke.php:73
+msgid "Contact is being deleted."
 msgstr ""
 
-#: src/Content/ContactSelector.php:156
-msgid "Currently Male"
+#: src/Module/Contact/Revoke.php:87
+msgid "Follow was successfully revoked."
 msgstr ""
 
-#: src/Content/ContactSelector.php:157
-msgid "Currently Female"
+#: src/Module/Contact/Revoke.php:89
+msgid ""
+"Follow was successfully revoked, however the remote contact won't be aware "
+"of this revokation."
 msgstr ""
 
-#: src/Content/ContactSelector.php:158
-msgid "Mostly Male"
+#: src/Module/Contact/Revoke.php:91
+msgid ""
+"Unable to revoke follow, please try again later or contact the "
+"administrator."
 msgstr ""
 
-#: src/Content/ContactSelector.php:159
-msgid "Mostly Female"
+#: src/Module/Contact/Revoke.php:108
+msgid ""
+"Do you really want to revoke this contact's follow? This cannot be undone "
+"and they will have to manually follow you back again."
 msgstr ""
 
-#: src/Content/ContactSelector.php:160
-msgid "Transgender"
-msgstr ""
+#: src/Module/Contact/Revoke.php:109
+#: src/Module/Notifications/Introductions.php:142
+#: src/Module/OAuth/Acknowledge.php:53 src/Module/Register.php:130
+msgid "Yes"
+msgstr "Ja"
 
-#: src/Content/ContactSelector.php:161
-msgid "Intersex"
+#: src/Module/Conversation/Community.php:68
+msgid "Local Community"
 msgstr ""
 
-#: src/Content/ContactSelector.php:162
-msgid "Transsexual"
+#: src/Module/Conversation/Community.php:71
+msgid "Posts from local users on this server"
 msgstr ""
 
-#: src/Content/ContactSelector.php:163
-msgid "Hermaphrodite"
+#: src/Module/Conversation/Community.php:79
+msgid "Global Community"
 msgstr ""
 
-#: src/Content/ContactSelector.php:164
-msgid "Neuter"
+#: src/Module/Conversation/Community.php:82
+msgid "Posts from users of the whole federated network"
 msgstr ""
 
-#: src/Content/ContactSelector.php:165
-msgid "Non-specific"
-msgstr "Oklart"
-
-#: src/Content/ContactSelector.php:166
-msgid "Other"
-msgstr "Annat"
-
-#: src/Content/ContactSelector.php:194
-msgid "Males"
-msgstr "Män"
-
-#: src/Content/ContactSelector.php:195
-msgid "Females"
-msgstr "Kvinnor"
-
-#: src/Content/ContactSelector.php:196
-msgid "Gay"
-msgstr "Bög"
-
-#: src/Content/ContactSelector.php:197
-msgid "Lesbian"
-msgstr "Lesbisk"
-
-#: src/Content/ContactSelector.php:198
-msgid "No Preference"
-msgstr "No Preference"
-
-#: src/Content/ContactSelector.php:199
-msgid "Bisexual"
-msgstr "Bisexuell"
-
-#: src/Content/ContactSelector.php:200
-msgid "Autosexual"
-msgstr "Autosexual"
-
-#: src/Content/ContactSelector.php:201
-msgid "Abstinent"
-msgstr "Abstinent"
-
-#: src/Content/ContactSelector.php:202
-msgid "Virgin"
-msgstr "Oskuld"
-
-#: src/Content/ContactSelector.php:203
-msgid "Deviant"
-msgstr "Avvikande"
-
-#: src/Content/ContactSelector.php:204
-msgid "Fetish"
-msgstr "Fetisch"
-
-#: src/Content/ContactSelector.php:205
-msgid "Oodles"
-msgstr "Massor"
-
-#: src/Content/ContactSelector.php:206
-msgid "Nonsexual"
-msgstr "Asexuell"
-
-#: src/Content/ContactSelector.php:232
-msgid "Single"
-msgstr "Singel"
-
-#: src/Content/ContactSelector.php:233
-msgid "Lonely"
-msgstr "Ensam"
-
-#: src/Content/ContactSelector.php:234
-msgid "Available"
-msgstr "Tillgänglig"
-
-#: src/Content/ContactSelector.php:235
-msgid "Unavailable"
-msgstr "Upptagen"
-
-#: src/Content/ContactSelector.php:236
-msgid "Has crush"
+#: src/Module/Conversation/Community.php:115
+msgid "Own Contacts"
 msgstr ""
 
-#: src/Content/ContactSelector.php:237
-msgid "Infatuated"
+#: src/Module/Conversation/Community.php:119
+msgid "Include"
 msgstr ""
 
-#: src/Content/ContactSelector.php:238
-msgid "Dating"
-msgstr "Dejtar"
-
-#: src/Content/ContactSelector.php:239
-msgid "Unfaithful"
-msgstr "Otrogen"
-
-#: src/Content/ContactSelector.php:240
-msgid "Sex Addict"
-msgstr "Sexmissbrukare"
-
-#: src/Content/ContactSelector.php:241 src/Model/User.php:702
-msgid "Friends"
-msgstr "Vänner"
-
-#: src/Content/ContactSelector.php:242
-msgid "Friends/Benefits"
-msgstr "Friends/Benefits"
-
-#: src/Content/ContactSelector.php:243
-msgid "Casual"
-msgstr "Casual"
-
-#: src/Content/ContactSelector.php:244
-msgid "Engaged"
-msgstr "Förlovad"
-
-#: src/Content/ContactSelector.php:245
-msgid "Married"
-msgstr "Gift"
-
-#: src/Content/ContactSelector.php:246
-msgid "Imaginarily married"
+#: src/Module/Conversation/Community.php:120
+msgid "Hide"
 msgstr ""
 
-#: src/Content/ContactSelector.php:247
-msgid "Partners"
-msgstr "I partnerskap"
-
-#: src/Content/ContactSelector.php:248
-msgid "Cohabiting"
-msgstr "Cohabiting"
+#: src/Module/Conversation/Community.php:137 src/Module/Search/Index.php:136
+#: src/Module/Search/Index.php:178
+msgid "No results."
+msgstr "Inga resultat."
 
-#: src/Content/ContactSelector.php:249
-msgid "Common law"
+#: src/Module/Conversation/Community.php:162
+msgid ""
+"This community stream shows all public posts received by this node. They may"
+" not reflect the opinions of this node’s users."
 msgstr ""
 
-#: src/Content/ContactSelector.php:250
-msgid "Happy"
-msgstr "Nöjd"
-
-#: src/Content/ContactSelector.php:251
-msgid "Not looking"
+#: src/Module/Conversation/Community.php:199
+msgid "Community option not available."
 msgstr ""
 
-#: src/Content/ContactSelector.php:252
-msgid "Swinger"
-msgstr "Swinger"
-
-#: src/Content/ContactSelector.php:253
-msgid "Betrayed"
-msgstr "Bedragen"
-
-#: src/Content/ContactSelector.php:254
-msgid "Separated"
-msgstr "Separerat"
+#: src/Module/Conversation/Community.php:215
+msgid "Not available."
+msgstr "Inte tillgängligt."
 
-#: src/Content/ContactSelector.php:255
-msgid "Unstable"
-msgstr "Instabilt"
+#: src/Module/Conversation/Network.php:173
+msgid "No such group"
+msgstr "Gruppen finns inte"
 
-#: src/Content/ContactSelector.php:256
-msgid "Divorced"
-msgstr "Skiljd"
+#: src/Module/Conversation/Network.php:177
+#, php-format
+msgid "Group: %s"
+msgstr "Grupp: %s"
 
-#: src/Content/ContactSelector.php:257
-msgid "Imaginarily divorced"
+#: src/Module/Conversation/Network.php:253
+msgid "Latest Activity"
 msgstr ""
 
-#: src/Content/ContactSelector.php:258
-msgid "Widowed"
-msgstr "Änka/änkling"
-
-#: src/Content/ContactSelector.php:259
-msgid "Uncertain"
-msgstr "Oklart"
-
-#: src/Content/ContactSelector.php:260
-msgid "It's complicated"
+#: src/Module/Conversation/Network.php:256
+msgid "Sort by latest activity"
 msgstr ""
 
-#: src/Content/ContactSelector.php:261
-msgid "Don't care"
-msgstr "Bryr mig inte"
-
-#: src/Content/ContactSelector.php:262
-msgid "Ask me"
-msgstr "Fråga mig"
-
-#: src/Content/Feature.php:82
-msgid "General Features"
+#: src/Module/Conversation/Network.php:261
+msgid "Latest Posts"
 msgstr ""
 
-#: src/Content/Feature.php:84
-msgid "Multiple Profiles"
+#: src/Module/Conversation/Network.php:264
+msgid "Sort by post received date"
 msgstr ""
 
-#: src/Content/Feature.php:84
-msgid "Ability to create multiple profiles"
-msgstr ""
+#: src/Module/Conversation/Network.php:269
+#: src/Module/Settings/Profile/Index.php:227
+msgid "Personal"
+msgstr "Privat"
 
-#: src/Content/Feature.php:85
-msgid "Photo Location"
-msgstr ""
+#: src/Module/Conversation/Network.php:272
+msgid "Posts that mention or involve you"
+msgstr "Inlägg som nämnde eller involverade dig"
 
-#: src/Content/Feature.php:85
-msgid ""
-"Photo metadata is normally stripped. This extracts the location (if present)"
-" prior to stripping metadata and links it to a map."
-msgstr ""
+#: src/Module/Conversation/Network.php:277 src/Object/Post.php:321
+msgid "Starred"
+msgstr "Stjärnmärkt"
 
-#: src/Content/Feature.php:86
-msgid "Export Public Calendar"
-msgstr ""
+#: src/Module/Conversation/Network.php:280
+msgid "Favourite Posts"
+msgstr "Favoriserade inlägg"
 
-#: src/Content/Feature.php:86
-msgid "Ability for visitors to download the public calendar"
+#: src/Module/Credits.php:44
+msgid "Credits"
 msgstr ""
 
-#: src/Content/Feature.php:91
-msgid "Post Composition Features"
+#: src/Module/Credits.php:45
+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 ""
 
-#: src/Content/Feature.php:92
-msgid "Auto-mention Forums"
+#: src/Module/Debug/ActivityPubConversion.php:58
+msgid "Formatted"
 msgstr ""
 
-#: src/Content/Feature.php:92
-msgid ""
-"Add/remove mention when a forum page is selected/deselected in ACL window."
+#: src/Module/Debug/ActivityPubConversion.php:70
+msgid "Activity"
 msgstr ""
 
-#: src/Content/Feature.php:93
-msgid "Explicit Mentions"
+#: src/Module/Debug/ActivityPubConversion.php:118
+msgid "Object data"
 msgstr ""
 
-#: src/Content/Feature.php:93
-msgid ""
-"Add explicit mentions to comment box for manual control over who gets "
-"mentioned in replies."
+#: src/Module/Debug/ActivityPubConversion.php:125
+msgid "Result Item"
 msgstr ""
 
-#: src/Content/Feature.php:98
-msgid "Network Sidebar"
+#: src/Module/Debug/ActivityPubConversion.php:139
+msgid "Source activity"
 msgstr ""
 
-#: src/Content/Feature.php:99
-msgid "Ability to select posts by date ranges"
+#: src/Module/Debug/Babel.php:51
+msgid "Source input"
 msgstr ""
 
-#: src/Content/Feature.php:100
-msgid "Protocol Filter"
+#: src/Module/Debug/Babel.php:57
+msgid "BBCode::toPlaintext"
 msgstr ""
 
-#: src/Content/Feature.php:100
-msgid "Enable widget to display Network posts only from selected protocols"
+#: src/Module/Debug/Babel.php:63
+msgid "BBCode::convert (raw HTML)"
 msgstr ""
 
-#: src/Content/Feature.php:105
-msgid "Network Tabs"
+#: src/Module/Debug/Babel.php:68
+msgid "BBCode::convert (hex)"
 msgstr ""
 
-#: src/Content/Feature.php:106
-msgid "Network New Tab"
+#: src/Module/Debug/Babel.php:73
+msgid "BBCode::convert"
 msgstr ""
 
-#: src/Content/Feature.php:106
-msgid "Enable tab to display only new Network posts (from the last 12 hours)"
+#: src/Module/Debug/Babel.php:79
+msgid "BBCode::convert => HTML::toBBCode"
 msgstr ""
 
-#: src/Content/Feature.php:107
-msgid "Network Shared Links Tab"
+#: src/Module/Debug/Babel.php:85
+msgid "BBCode::toMarkdown"
 msgstr ""
 
-#: src/Content/Feature.php:107
-msgid "Enable tab to display only Network posts with links in them"
+#: src/Module/Debug/Babel.php:91
+msgid "BBCode::toMarkdown => Markdown::convert (raw HTML)"
 msgstr ""
 
-#: src/Content/Feature.php:112
-msgid "Post/Comment Tools"
+#: src/Module/Debug/Babel.php:95
+msgid "BBCode::toMarkdown => Markdown::convert"
 msgstr ""
 
-#: src/Content/Feature.php:113
-msgid "Post Categories"
+#: src/Module/Debug/Babel.php:101
+msgid "BBCode::toMarkdown => Markdown::toBBCode"
 msgstr ""
 
-#: src/Content/Feature.php:113
-msgid "Add categories to your posts"
+#: src/Module/Debug/Babel.php:107
+msgid "BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"
 msgstr ""
 
-#: src/Content/Feature.php:118
-msgid "Advanced Profile Settings"
+#: src/Module/Debug/Babel.php:115
+msgid "Item Body"
 msgstr ""
 
-#: src/Content/Feature.php:119
-msgid "List Forums"
+#: src/Module/Debug/Babel.php:119
+msgid "Item Tags"
 msgstr ""
 
-#: src/Content/Feature.php:119
-msgid "Show visitors public community forums at the Advanced Profile Page"
+#: src/Module/Debug/Babel.php:125
+msgid "PageInfo::appendToBody"
 msgstr ""
 
-#: src/Content/Feature.php:120
-msgid "Tag Cloud"
+#: src/Module/Debug/Babel.php:130
+msgid "PageInfo::appendToBody => BBCode::convert (raw HTML)"
 msgstr ""
 
-#: src/Content/Feature.php:120
-msgid "Provide a personal tag cloud on your profile page"
+#: src/Module/Debug/Babel.php:134
+msgid "PageInfo::appendToBody => BBCode::convert"
 msgstr ""
 
-#: src/Content/Feature.php:121
-msgid "Display Membership Date"
+#: src/Module/Debug/Babel.php:141
+msgid "Source input (Diaspora format)"
 msgstr ""
 
-#: src/Content/Feature.php:121
-msgid "Display membership date in profile"
+#: src/Module/Debug/Babel.php:150
+msgid "Source input (Markdown)"
 msgstr ""
 
-#: src/Content/ForumManager.php:130 src/Content/Nav.php:207
-#: src/Content/Text/HTML.php:914 view/theme/vier/theme.php:250
-msgid "Forums"
+#: src/Module/Debug/Babel.php:156
+msgid "Markdown::convert (raw HTML)"
 msgstr ""
 
-#: src/Content/ForumManager.php:132 view/theme/vier/theme.php:252
-msgid "External link to forum"
+#: src/Module/Debug/Babel.php:161
+msgid "Markdown::convert"
 msgstr ""
 
-#: src/Content/Nav.php:74
-msgid "Nothing new here"
+#: src/Module/Debug/Babel.php:167
+msgid "Markdown::toBBCode"
 msgstr ""
 
-#: src/Content/Nav.php:78
-msgid "Clear notifications"
+#: src/Module/Debug/Babel.php:174
+msgid "Raw HTML input"
 msgstr ""
 
-#: src/Content/Nav.php:79 src/Content/Text/HTML.php:903
-msgid "@name, !forum, #tags, content"
+#: src/Module/Debug/Babel.php:179
+msgid "HTML Input"
 msgstr ""
 
-#: src/Content/Nav.php:153 src/Module/Login.php:321
-#: view/theme/frio/theme.php:259
-msgid "Logout"
-msgstr "Logga ut"
+#: src/Module/Debug/Babel.php:186
+msgid "HTML Purified (raw)"
+msgstr ""
 
-#: src/Content/Nav.php:153 view/theme/frio/theme.php:259
-msgid "End this session"
+#: src/Module/Debug/Babel.php:191
+msgid "HTML Purified (hex)"
 msgstr ""
 
-#: src/Content/Nav.php:156 src/Model/Profile.php:901
-#: src/Module/Contact.php:652 src/Module/Contact.php:853
-#: view/theme/frio/theme.php:262
-msgid "Status"
-msgstr "Status"
+#: src/Module/Debug/Babel.php:196
+msgid "HTML Purified"
+msgstr ""
 
-#: src/Content/Nav.php:156 src/Content/Nav.php:242
-#: view/theme/frio/theme.php:262
-msgid "Your posts and conversations"
+#: src/Module/Debug/Babel.php:202
+msgid "HTML::toBBCode"
 msgstr ""
 
-#: src/Content/Nav.php:157 view/theme/frio/theme.php:263
-msgid "Your profile page"
+#: src/Module/Debug/Babel.php:208
+msgid "HTML::toBBCode => BBCode::convert"
 msgstr ""
 
-#: src/Content/Nav.php:158 view/theme/frio/theme.php:264
-msgid "Your photos"
+#: src/Module/Debug/Babel.php:213
+msgid "HTML::toBBCode => BBCode::convert (raw HTML)"
 msgstr ""
 
-#: src/Content/Nav.php:159 src/Model/Profile.php:925 src/Model/Profile.php:928
-#: view/theme/frio/theme.php:265
-msgid "Videos"
+#: src/Module/Debug/Babel.php:219
+msgid "HTML::toBBCode => BBCode::toPlaintext"
 msgstr ""
 
-#: src/Content/Nav.php:159 view/theme/frio/theme.php:265
-msgid "Your videos"
+#: src/Module/Debug/Babel.php:225
+msgid "HTML::toMarkdown"
 msgstr ""
 
-#: src/Content/Nav.php:160 view/theme/frio/theme.php:266
-msgid "Your events"
+#: src/Module/Debug/Babel.php:231
+msgid "HTML::toPlaintext"
 msgstr ""
 
-#: src/Content/Nav.php:161
-msgid "Personal notes"
+#: src/Module/Debug/Babel.php:237
+msgid "HTML::toPlaintext (compact)"
 msgstr ""
 
-#: src/Content/Nav.php:161
-msgid "Your personal notes"
+#: src/Module/Debug/Babel.php:255
+msgid "Decoded post"
 msgstr ""
 
-#: src/Content/Nav.php:170
-msgid "Sign in"
+#: src/Module/Debug/Babel.php:276
+msgid "Post array before expand entities"
 msgstr ""
 
-#: src/Content/Nav.php:180 src/Content/Nav.php:242
-#: src/Core/NotificationsManager.php:196
-msgid "Home"
-msgstr "Hem"
+#: src/Module/Debug/Babel.php:283
+msgid "Post converted"
+msgstr ""
 
-#: src/Content/Nav.php:180
-msgid "Home Page"
+#: src/Module/Debug/Babel.php:288
+msgid "Converted body"
 msgstr ""
 
-#: src/Content/Nav.php:184 src/Module/Login.php:293
-#: src/Module/Register.php:136
-msgid "Register"
-msgstr "Registrera"
+#: src/Module/Debug/Babel.php:294
+msgid "Twitter addon is absent from the addon/ folder."
+msgstr ""
 
-#: src/Content/Nav.php:184
-msgid "Create an account"
+#: src/Module/Debug/Babel.php:304
+msgid "Babel Diagnostic"
 msgstr ""
 
-#: src/Content/Nav.php:190
-msgid "Help and documentation"
+#: src/Module/Debug/Babel.php:305
+msgid "Source text"
 msgstr ""
 
-#: src/Content/Nav.php:194
-msgid "Apps"
-msgstr "Apps"
+#: src/Module/Debug/Babel.php:306
+msgid "BBCode"
+msgstr ""
 
-#: src/Content/Nav.php:194
-msgid "Addon applications, utilities, games"
+#: src/Module/Debug/Babel.php:308
+msgid "Markdown"
 msgstr ""
 
-#: src/Content/Nav.php:198
-msgid "Search site content"
+#: src/Module/Debug/Babel.php:309
+msgid "HTML"
 msgstr ""
 
-#: src/Content/Nav.php:201 src/Content/Text/HTML.php:909
-msgid "Full Text"
+#: src/Module/Debug/Babel.php:311
+msgid "Twitter Source / Tweet URL (requires API key)"
 msgstr ""
 
-#: src/Content/Nav.php:202 src/Content/Text/HTML.php:910
-#: src/Content/Widget/TagCloud.php:54
-msgid "Tags"
+#: src/Module/Debug/Feed.php:50 src/Module/Filer/SaveTag.php:46
+#: src/Module/Settings/Profile/Index.php:141
+msgid "You must be logged in to use this module"
 msgstr ""
 
-#: src/Content/Nav.php:222
-msgid "Community"
+#: src/Module/Debug/Feed.php:75
+msgid "Source URL"
 msgstr ""
 
-#: src/Content/Nav.php:222
-msgid "Conversations on this and other servers"
+#: src/Module/Debug/Localtime.php:49
+msgid "Time Conversion"
 msgstr ""
 
-#: src/Content/Nav.php:226 src/Model/Profile.php:940 src/Model/Profile.php:951
-#: view/theme/frio/theme.php:270
-msgid "Events and Calendar"
+#: src/Module/Debug/Localtime.php:50
+msgid ""
+"Friendica provides this service for sharing events with other networks and "
+"friends in unknown timezones."
 msgstr ""
 
-#: src/Content/Nav.php:229
-msgid "Directory"
-msgstr "Medlemskatalog"
+#: src/Module/Debug/Localtime.php:51
+#, php-format
+msgid "UTC time: %s"
+msgstr "UTC-tid: %s"
 
-#: src/Content/Nav.php:229
-msgid "People directory"
-msgstr ""
+#: src/Module/Debug/Localtime.php:54
+#, php-format
+msgid "Current timezone: %s"
+msgstr "Nuvarande tidszon: %s"
 
-#: src/Content/Nav.php:231
-msgid "Information about this friendica instance"
+#: src/Module/Debug/Localtime.php:58
+#, php-format
+msgid "Converted localtime: %s"
+msgstr "Konverterad lokaltid: %s"
+
+#: src/Module/Debug/Localtime.php:62
+msgid "Please select your timezone:"
+msgstr "Vänligen välj din tidszon:"
+
+#: src/Module/Debug/Probe.php:38 src/Module/Debug/WebFinger.php:37
+msgid "Only logged in users are permitted to perform a probing."
 msgstr ""
 
-#: src/Content/Nav.php:234
-msgid "Terms of Service of this Friendica instance"
+#: src/Module/Debug/Probe.php:52
+msgid "Probe Diagnostic"
 msgstr ""
 
-#: src/Content/Nav.php:239 view/theme/frio/theme.php:269
-msgid "Conversations from your friends"
+#: src/Module/Debug/Probe.php:53
+msgid "Output"
 msgstr ""
 
-#: src/Content/Nav.php:240
-msgid "Network Reset"
+#: src/Module/Debug/Probe.php:56
+msgid "Lookup address"
 msgstr ""
 
-#: src/Content/Nav.php:240
-msgid "Load Network page with no filters"
+#: src/Module/Debug/WebFinger.php:50
+msgid "Webfinger Diagnostic"
 msgstr ""
 
-#: src/Content/Nav.php:246 src/Core/NotificationsManager.php:203
-msgid "Introductions"
+#: src/Module/Debug/WebFinger.php:52
+msgid "Lookup address:"
 msgstr ""
 
-#: src/Content/Nav.php:246
-msgid "Friend Requests"
+#: src/Module/Delegation.php:111
+#, php-format
+msgid "You are now logged in as %s"
 msgstr ""
 
-#: src/Content/Nav.php:248
-msgid "See all notifications"
+#: src/Module/Delegation.php:143
+msgid "Switch between your accounts"
 msgstr ""
 
-#: src/Content/Nav.php:249
-msgid "Mark all system notifications seen"
+#: src/Module/Delegation.php:144
+msgid "Manage your accounts"
 msgstr ""
 
-#: src/Content/Nav.php:252 view/theme/frio/theme.php:271
-msgid "Private mail"
+#: src/Module/Delegation.php:145
+msgid ""
+"Toggle between different identities or community/group pages which share "
+"your account details or which you have been granted \"manage\" permissions"
 msgstr ""
 
-#: src/Content/Nav.php:253
-msgid "Inbox"
-msgstr "Inkorg"
+#: src/Module/Delegation.php:146
+msgid "Select an identity to manage: "
+msgstr "Välj vilken identitet du vill hantera: "
 
-#: src/Content/Nav.php:254
-msgid "Outbox"
-msgstr "Utkorg"
+#: src/Module/Directory.php:74
+msgid "No entries (some entries may be hidden)."
+msgstr "Inget att visa. (Man kan välja att inte synas här)"
 
-#: src/Content/Nav.php:258
-msgid "Manage"
-msgstr "Hantera"
+#: src/Module/Directory.php:90
+msgid "Find on this site"
+msgstr "Hitta på den här sidan"
 
-#: src/Content/Nav.php:258
-msgid "Manage other pages"
+#: src/Module/Directory.php:92
+msgid "Results for:"
 msgstr ""
 
-#: src/Content/Nav.php:263 view/theme/frio/theme.php:272
-msgid "Account settings"
+#: src/Module/Directory.php:94
+msgid "Site Directory"
+msgstr "Medlemskatalog"
+
+#: src/Module/Filer/RemoveTag.php:68
+msgid "Item was not removed"
 msgstr ""
 
-#: src/Content/Nav.php:266
-msgid "Manage/Edit Profiles"
+#: src/Module/Filer/RemoveTag.php:71
+msgid "Item was not deleted"
 msgstr ""
 
-#: src/Content/Nav.php:269 view/theme/frio/theme.php:273
-msgid "Manage/edit friends and contacts"
+#: src/Module/Filer/SaveTag.php:72
+msgid "- select -"
+msgstr "- välj -"
+
+#: src/Module/FriendSuggest.php:81
+msgid "Suggested contact not found."
 msgstr ""
 
-#: src/Content/Nav.php:274
-msgid "Site setup and configuration"
+#: src/Module/FriendSuggest.php:99
+msgid "Friend suggestion sent."
+msgstr "Vän-förslag skickades."
+
+#: src/Module/FriendSuggest.php:136
+msgid "Suggest Friends"
+msgstr "Föreslå vänner"
+
+#: src/Module/FriendSuggest.php:139
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Föreslå en vän till %s"
+
+#: src/Module/Friendica.php:62
+msgid "Installed addons/apps:"
 msgstr ""
 
-#: src/Content/Nav.php:277
-msgid "Navigation"
+#: src/Module/Friendica.php:67
+msgid "No installed addons/apps"
 msgstr ""
 
-#: src/Content/Nav.php:277
-msgid "Site map"
+#: src/Module/Friendica.php:72
+#, php-format
+msgid "Read about the <a href=\"%1$s/tos\">Terms of Service</a> of this node."
 msgstr ""
 
-#: src/Content/OEmbed.php:256
-msgid "Embedding disabled"
-msgstr "Funktionen bädda in är avstängd"
+#: src/Module/Friendica.php:79
+msgid "On this server the following remote servers are blocked."
+msgstr ""
 
-#: src/Content/OEmbed.php:379
-msgid "Embedded content"
+#: src/Module/Friendica.php:97
+#, php-format
+msgid ""
+"This is Friendica, version %s that is running at the web location %s. The "
+"database version is %s, the post update version is %s."
 msgstr ""
 
-#: src/Content/Pager.php:153
-msgid "newer"
+#: src/Module/Friendica.php:102
+msgid ""
+"Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more "
+"about the Friendica project."
 msgstr ""
 
-#: src/Content/Pager.php:158
-msgid "older"
+#: src/Module/Friendica.php:103
+msgid "Bug reports and issues: please visit"
+msgstr "Anmäl buggar eller andra problem, gå till"
+
+#: src/Module/Friendica.php:103
+msgid "the bugtracker at github"
 msgstr ""
 
-#: src/Content/Pager.php:203
-msgid "prev"
-msgstr "föreg"
+#: src/Module/Friendica.php:104
+msgid "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
+msgstr ""
 
-#: src/Content/Pager.php:263
-msgid "last"
-msgstr "sista"
+#: src/Module/Group.php:58
+msgid "Could not create group."
+msgstr "Det gick inte att skapa gruppen."
 
-#: src/Content/Text/BBCode.php:429
-msgid "view full size"
-msgstr "visa fullstor"
+#: src/Module/Group.php:69 src/Module/Group.php:215 src/Module/Group.php:239
+msgid "Group not found."
+msgstr "Gruppen hittades inte."
 
-#: src/Content/Text/BBCode.php:863 src/Content/Text/BBCode.php:1596
-#: src/Content/Text/BBCode.php:1597
-msgid "Image/photo"
+#: src/Module/Group.php:75
+msgid "Group name was not changed."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:967
-#, php-format
-msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
+#: src/Module/Group.php:93
+msgid "Unknown group."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1523 src/Content/Text/BBCode.php:1545
-msgid "$1 wrote:"
+#: src/Module/Group.php:118
+msgid "Unable to add the contact to the group."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1607 src/Content/Text/BBCode.php:1608
-msgid "Encrypted content"
+#: src/Module/Group.php:121
+msgid "Contact successfully added to group."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1715
-msgid "Invalid source protocol"
+#: src/Module/Group.php:125
+msgid "Unable to remove the contact from the group."
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1726
-msgid "Invalid link protocol"
+#: src/Module/Group.php:128
+msgid "Contact successfully removed from group."
 msgstr ""
 
-#: src/Content/Text/HTML.php:800
-msgid "Loading more entries..."
+#: src/Module/Group.php:132
+msgid "Bad request."
 msgstr ""
 
-#: src/Content/Text/HTML.php:801
-msgid "The end"
-msgstr ""
+#: src/Module/Group.php:171
+msgid "Save Group"
+msgstr "Spara grupp"
 
-#: src/Content/Text/HTML.php:894
-msgid "Follow"
+#: src/Module/Group.php:172
+msgid "Filter"
 msgstr ""
 
-#: src/Content/Text/HTML.php:951 src/Model/Item.php:3503
-#: src/Model/Item.php:3514
-msgid "Click to open/close"
-msgstr ""
+#: src/Module/Group.php:178
+msgid "Create a group of contacts/friends."
+msgstr "Skapa en grupp med kontakter/vänner."
 
-#: src/Content/Widget/CalendarExport.php:64
-msgid "Export"
-msgstr ""
+#: src/Module/Group.php:220
+msgid "Unable to remove group."
+msgstr "Det gick inte att ta bort gruppen."
 
-#: src/Content/Widget/CalendarExport.php:65
-msgid "Export calendar as ical"
+#: src/Module/Group.php:271
+msgid "Delete Group"
 msgstr ""
 
-#: src/Content/Widget/CalendarExport.php:66
-msgid "Export calendar as csv"
+#: src/Module/Group.php:281
+msgid "Edit Group Name"
 msgstr ""
 
-#: src/Content/Widget/ContactBlock.php:58
-msgid "No contacts"
-msgstr "Inga kontakter"
+#: src/Module/Group.php:291
+msgid "Members"
+msgstr "Medlemmar"
 
-#: src/Content/Widget/ContactBlock.php:90
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] "%d kontakt"
-msgstr[1] "%d kontakter"
+#: src/Module/Group.php:294
+msgid "Group is empty"
+msgstr "Gruppen är tom"
 
-#: src/Content/Widget/ContactBlock.php:109
-msgid "View Contacts"
-msgstr "Visa kontakter"
+#: src/Module/Group.php:307
+msgid "Remove contact from group"
+msgstr ""
 
-#: src/Content/Widget.php:35
-msgid "Add New Contact"
-msgstr "Lägg till kontakt"
+#: src/Module/Group.php:328
+msgid "Click on a contact to add or remove."
+msgstr "Klicka på en kontakt för att lägga till eller ta bort."
 
-#: src/Content/Widget.php:36
-msgid "Enter address or web location"
+#: src/Module/Group.php:342
+msgid "Add contact to group"
 msgstr ""
 
-#: src/Content/Widget.php:37
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Exempel: adam@exempel.com, http://exempel.com/bertil"
+#: src/Module/HCard.php:46
+msgid "No profile"
+msgstr "Ingen profil"
+
+#: src/Module/HTTPException/MethodNotAllowed.php:32
+msgid "Method Not Allowed."
+msgstr ""
 
-#: src/Content/Widget.php:55
+#: src/Module/Help.php:60
+msgid "Help:"
+msgstr "Hjälp:"
+
+#: src/Module/Home.php:54
 #, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Welcome to %s"
+msgstr "Välkommen till %s"
 
-#: src/Content/Widget.php:61 view/theme/vier/theme.php:199
-msgid "Find People"
+#: src/Module/Install.php:195
+msgid "Friendica Communications Server - Setup"
 msgstr ""
 
-#: src/Content/Widget.php:62 view/theme/vier/theme.php:200
-msgid "Enter name or interest"
+#: src/Module/Install.php:206
+msgid "System check"
 msgstr ""
 
-#: src/Content/Widget.php:64 view/theme/vier/theme.php:202
-msgid "Examples: Robert Morgenstein, Fishing"
+#: src/Module/Install.php:208 src/Module/Install.php:265
+#: src/Module/Install.php:348
+msgid "Requirement not satisfied"
 msgstr ""
 
-#: src/Content/Widget.php:67 view/theme/vier/theme.php:205
-msgid "Similar Interests"
+#: src/Module/Install.php:209
+msgid "Optional requirement not satisfied"
 msgstr ""
 
-#: src/Content/Widget.php:68 view/theme/vier/theme.php:206
-msgid "Random Profile"
+#: src/Module/Install.php:210
+msgid "OK"
 msgstr ""
 
-#: src/Content/Widget.php:69 view/theme/vier/theme.php:207
-msgid "Invite Friends"
-msgstr "Bjud in folk du känner"
+#: src/Module/Install.php:215
+msgid "Check again"
+msgstr "Kolla igen"
 
-#: src/Content/Widget.php:72 view/theme/vier/theme.php:210
-msgid "Local Directory"
+#: src/Module/Install.php:230
+msgid "Base settings"
 msgstr ""
 
-#: src/Content/Widget.php:158
-msgid "Protocols"
+#: src/Module/Install.php:237
+msgid "Host name"
+msgstr "Värdnamn"
+
+#: src/Module/Install.php:239
+msgid ""
+"Overwrite this field in case the determinated hostname isn't right, "
+"otherweise leave it as is."
 msgstr ""
 
-#: src/Content/Widget.php:161
-msgid "All Protocols"
+#: src/Module/Install.php:242
+msgid "Base path to installation"
+msgstr "Grundväg till installationen"
+
+#: src/Module/Install.php:244
+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 ""
 
-#: src/Content/Widget.php:198
-msgid "Saved Folders"
+#: src/Module/Install.php:247
+msgid "Sub path of the URL"
 msgstr ""
 
-#: src/Content/Widget.php:201 src/Content/Widget.php:243
-msgid "Everything"
+#: src/Module/Install.php:249
+msgid ""
+"Overwrite this field in case the sub path determination isn't right, "
+"otherwise leave it as is. Leaving this field blank means the installation is"
+" at the base URL without sub path."
 msgstr ""
 
-#: src/Content/Widget.php:240
-msgid "Categories"
+#: src/Module/Install.php:260
+msgid "Database connection"
+msgstr "Databas-anslutning"
+
+#: src/Module/Install.php:261
+msgid ""
+"In order to install Friendica we need to know how to connect to your "
+"database."
+msgstr ""
+
+#: src/Module/Install.php:262
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Please contact your hosting provider or site administrator if you have questions about these settings."
+
+#: src/Module/Install.php:263
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
 msgstr ""
 
-#: src/Content/Widget.php:324
-#, php-format
-msgid "%d contact in common"
-msgid_plural "%d contacts in common"
-msgstr[0] ""
-msgstr[1] ""
+#: src/Module/Install.php:272
+msgid "Database Server Name"
+msgstr "Database Server Name"
+
+#: src/Module/Install.php:277
+msgid "Database Login Name"
+msgstr "Database Login Name"
 
-#: src/Core/ACL.php:287
-msgid "Post to Email"
-msgstr ""
+#: src/Module/Install.php:283
+msgid "Database Login Password"
+msgstr "Database Login Password"
 
-#: src/Core/ACL.php:293
-msgid "Hide your profile details from unknown viewers?"
+#: src/Module/Install.php:285
+msgid "For security reasons the password must not be empty"
 msgstr ""
 
-#: src/Core/ACL.php:292
-#, php-format
-msgid "Connectors disabled, since \"%s\" is enabled."
-msgstr ""
+#: src/Module/Install.php:288
+msgid "Database Name"
+msgstr "Database Name"
 
-#: src/Core/ACL.php:299
-msgid "Visible to everybody"
-msgstr "Synlig för alla"
+#: src/Module/Install.php:292 src/Module/Install.php:322
+msgid "Please select a default timezone for your website"
+msgstr "Please select a default timezone for your website"
 
-#: src/Core/ACL.php:300 view/theme/vier/config.php:116
-msgid "show"
+#: src/Module/Install.php:307
+msgid "Site settings"
 msgstr ""
 
-#: src/Core/ACL.php:301 view/theme/vier/config.php:116
-msgid "don't show"
+#: src/Module/Install.php:317
+msgid "Site administrator email address"
 msgstr ""
 
-#: src/Core/ACL.php:311
-msgid "Close"
+#: src/Module/Install.php:319
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
 msgstr ""
 
-#: src/Core/Authentication.php:87
-msgid "Welcome "
+#: src/Module/Install.php:326
+msgid "System Language:"
 msgstr ""
 
-#: src/Core/Authentication.php:88
-msgid "Please upload a profile photo."
+#: src/Module/Install.php:328
+msgid ""
+"Set the default language for your Friendica installation interface and to "
+"send emails."
 msgstr ""
 
-#: src/Core/Authentication.php:90
-msgid "Welcome back "
-msgstr "Välkommen tillbaka "
+#: src/Module/Install.php:340
+msgid "Your Friendica site database has been installed."
+msgstr "Databasen för din friendicasajt har installerats."
 
-#: src/Core/Console/ArchiveContact.php:65
-#, php-format
-msgid "Could not find any unarchived contact entry for this URL (%s)"
+#: src/Module/Install.php:350
+msgid "Installation finished"
 msgstr ""
 
-#: src/Core/Console/ArchiveContact.php:70
-msgid "The contact entries have been archived"
-msgstr ""
+#: src/Module/Install.php:370
+msgid "<h1>What next</h1>"
+msgstr "<h1>Det som kommer härnäst</h1>"
 
-#: src/Core/Console/NewPassword.php:72
-msgid "Enter new password: "
+#: src/Module/Install.php:371
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"worker."
 msgstr ""
 
-#: src/Core/Console/PostUpdate.php:50
+#: src/Module/Install.php:374
 #, php-format
-msgid "Post update version number has been set to %s."
-msgstr ""
-
-#: src/Core/Console/PostUpdate.php:58
-msgid "Check for pending update actions."
+msgid ""
+"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
+"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."
 msgstr ""
 
-#: src/Core/Console/PostUpdate.php:60
-msgid "Done."
+#: src/Module/Invite.php:56
+msgid "Total invitation limit exceeded."
 msgstr ""
 
-#: src/Core/Console/PostUpdate.php:62
-msgid "Execute pending post updates."
-msgstr ""
+#: src/Module/Invite.php:81
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : Ogiltig e-postadress."
 
-#: src/Core/Console/PostUpdate.php:68
-msgid "All pending post updates are done."
+#: src/Module/Invite.php:107
+msgid "Please join us on Friendica"
 msgstr ""
 
-#: src/Core/Installer.php:164
-msgid ""
-"The database configuration file \"config/local.config.php\" could not be "
-"written. Please use the enclosed text to create a configuration file in your"
-" web server root."
+#: src/Module/Invite.php:116
+msgid "Invitation limit exceeded. Please contact your site administrator."
 msgstr ""
 
-#: src/Core/Installer.php:183
-msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
-msgstr "Du kanske måste importera filen \"database.sql\" manuellt med phpmyadmin eller mysql."
+#: src/Module/Invite.php:120
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Meddelandet kom inte fram."
 
-#: src/Core/Installer.php:184 src/Module/Install.php:132
-#: src/Module/Install.php:263
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "Se filen \"INSTALL.txt\"."
+#: src/Module/Invite.php:124
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d meddelande har skickats."
+msgstr[1] "%d meddelanden har skickats."
 
-#: src/Core/Installer.php:245
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Could not find a command line version of PHP in the web server PATH."
+#: src/Module/Invite.php:142
+msgid "You have no more invitations available"
+msgstr "Du har inga fler inbjudningar tillgängliga"
 
-#: src/Core/Installer.php:246
+#: src/Module/Invite.php:149
+#, php-format
 msgid ""
-"If you don't have a command line version of PHP installed on your server, "
-"you will not be able to run the background processing. See <a "
-"href='https://github.com/friendica/friendica/blob/master/doc/Install.md#set-"
-"up-the-worker'>'Setup the worker'</a>"
+"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 ""
 
-#: src/Core/Installer.php:250
-msgid "PHP executable path"
+#: src/Module/Invite.php:151
+#, php-format
+msgid ""
+"To accept this invitation, please visit and register at %s or any other "
+"public Friendica website."
 msgstr ""
 
-#: src/Core/Installer.php:250
+#: src/Module/Invite.php:152
+#, php-format
 msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
+"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 ""
 
-#: src/Core/Installer.php:255
-msgid "Command line PHP"
+#: src/Module/Invite.php:156
+msgid ""
+"Our apologies. This system is not currently configured to connect with other"
+" public sites or invite members."
 msgstr ""
 
-#: src/Core/Installer.php:264
-msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
+#: src/Module/Invite.php:159
+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."
 msgstr ""
 
-#: src/Core/Installer.php:265
-msgid "Found PHP version: "
+#: src/Module/Invite.php:158
+#, php-format
+msgid "To accept this invitation, please visit and register at %s."
 msgstr ""
 
-#: src/Core/Installer.php:267
-msgid "PHP cli binary"
-msgstr ""
+#: src/Module/Invite.php:166
+msgid "Send invitations"
+msgstr "Skicka inbjudningar"
 
-#: src/Core/Installer.php:280
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "The command line version of PHP on your system does not have \"register_argc_argv\" enabled."
+#: src/Module/Invite.php:167
+msgid "Enter email addresses, one per line:"
+msgstr "Ange e-postadresser, en per rad:"
 
-#: src/Core/Installer.php:281
-msgid "This is required for message delivery to work."
-msgstr "Det krävs för att meddelanden ska kunna levereras."
+#: src/Module/Invite.php:171
+msgid ""
+"You are cordially invited to join me and other close friends on Friendica - "
+"and help us to create a better social web."
+msgstr ""
 
-#: src/Core/Installer.php:286
-msgid "PHP register_argc_argv"
+#: src/Module/Invite.php:173
+msgid "You will need to supply this invitation code: $invite_code"
 msgstr ""
 
-#: src/Core/Installer.php:318
+#: src/Module/Invite.php:173
 msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Fel: funktionen \"openssl_pkey_new\" kan inte skapa krypteringsnycklar"
+"Once you have registered, please connect with me via my profile page at:"
+msgstr "Vi kan bli kontakter via min profil. Besök min profil här när du har registrerat dig:"
 
-#: src/Core/Installer.php:319
+#: src/Module/Invite.php:175
 msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Läs mer på \"http://www.php.net/manual/en/openssl.installation.php\" om du kör Windows."
-
-#: src/Core/Installer.php:322
-msgid "Generate encryption keys"
+"For more information about the Friendica project and why we feel it is "
+"important, please visit http://friendi.ca"
 msgstr ""
 
-#: src/Core/Installer.php:374
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Error: Apache webserver mod-rewrite module is required but not installed."
-
-#: src/Core/Installer.php:379
-msgid "Apache mod_rewrite module"
+#: src/Module/Item/Compose.php:50
+msgid "Please enter a post body."
 msgstr ""
 
-#: src/Core/Installer.php:385
-msgid "Error: PDO or MySQLi PHP module required but not installed."
+#: src/Module/Item/Compose.php:63
+msgid "This feature is only available with the frio theme."
 msgstr ""
 
-#: src/Core/Installer.php:390
-msgid "Error: The MySQL driver for PDO is not installed."
+#: src/Module/Item/Compose.php:90
+msgid "Compose new personal note"
 msgstr ""
 
-#: src/Core/Installer.php:394
-msgid "PDO or MySQLi PHP module"
+#: src/Module/Item/Compose.php:99
+msgid "Compose new post"
 msgstr ""
 
-#: src/Core/Installer.php:402
-msgid "Error, XML PHP module required but not installed."
+#: src/Module/Item/Compose.php:141
+msgid "Visibility"
 msgstr ""
 
-#: src/Core/Installer.php:406
-msgid "XML PHP module"
+#: src/Module/Item/Compose.php:162
+msgid "Clear the location"
 msgstr ""
 
-#: src/Core/Installer.php:409
-msgid "libCurl PHP module"
+#: src/Module/Item/Compose.php:163
+msgid "Location services are unavailable on your device"
 msgstr ""
 
-#: src/Core/Installer.php:410
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Error: libCURL PHP module required but not installed."
+#: src/Module/Item/Compose.php:164
+msgid ""
+"Location services are disabled. Please check the website's permissions on "
+"your device"
+msgstr ""
 
-#: src/Core/Installer.php:416
-msgid "GD graphics PHP module"
+#: src/Module/Item/Follow.php:52
+msgid "Unable to follow this item."
 msgstr ""
 
-#: src/Core/Installer.php:417
+#: src/Module/Maintenance.php:48 src/Module/Maintenance.php:53
+msgid "System down for maintenance"
+msgstr "Systemet är nere för underhåll"
+
+#: src/Module/Maintenance.php:54
 msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Error: GD graphics PHP module with JPEG support required but not installed."
+"This Friendica node is currently in maintenance mode, either automatically "
+"because it is self-updating or manually by the node administrator. This "
+"condition should be temporary, please come back in a few minutes."
+msgstr ""
 
-#: src/Core/Installer.php:423
-msgid "OpenSSL PHP module"
+#: src/Module/Manifest.php:42
+msgid "A Decentralized Social Network"
 msgstr ""
 
-#: src/Core/Installer.php:424
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Error: openssl PHP module required but not installed."
+#: src/Module/Notifications/Introductions.php:97
+msgid "Show Ignored Requests"
+msgstr "Visa förfrågningar du ignorerat"
 
-#: src/Core/Installer.php:430
-msgid "mb_string PHP module"
-msgstr ""
+#: src/Module/Notifications/Introductions.php:97
+msgid "Hide Ignored Requests"
+msgstr "Dölj förfrågningar du ignorerat"
 
-#: src/Core/Installer.php:431
-msgid "Error: mb_string PHP module required but not installed."
+#: src/Module/Notifications/Introductions.php:113
+#: src/Module/Notifications/Introductions.php:176
+msgid "Notification type:"
 msgstr ""
 
-#: src/Core/Installer.php:437
-msgid "iconv PHP module"
+#: src/Module/Notifications/Introductions.php:116
+msgid "Suggested by:"
 msgstr ""
 
-#: src/Core/Installer.php:438
-msgid "Error: iconv PHP module required but not installed."
-msgstr ""
+#: src/Module/Notifications/Introductions.php:141
+msgid "Claims to be known to you: "
+msgstr "Hävdar att du vet vem han/hon är: "
 
-#: src/Core/Installer.php:444
-msgid "POSIX PHP module"
-msgstr ""
+#: src/Module/Notifications/Introductions.php:142
+#: src/Module/OAuth/Acknowledge.php:54 src/Module/Register.php:131
+msgid "No"
+msgstr "Nej"
 
-#: src/Core/Installer.php:445
-msgid "Error: POSIX PHP module required but not installed."
+#: src/Module/Notifications/Introductions.php:150
+msgid "Shall your connection be bidirectional or not?"
 msgstr ""
 
-#: src/Core/Installer.php:451
-msgid "JSON PHP module"
+#: src/Module/Notifications/Introductions.php:151
+#, 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 ""
 
-#: src/Core/Installer.php:452
-msgid "Error: JSON PHP module required but not installed."
+#: src/Module/Notifications/Introductions.php:152
+#, 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 ""
 
-#: src/Core/Installer.php:458
-msgid "File Information PHP module"
+#: src/Module/Notifications/Introductions.php:154
+msgid "Friend"
+msgstr "Vän"
+
+#: src/Module/Notifications/Introductions.php:155
+msgid "Subscriber"
 msgstr ""
 
-#: src/Core/Installer.php:459
-msgid "Error: File Information PHP module required but not installed."
+#: src/Module/Notifications/Introductions.php:214
+msgid "No introductions."
+msgstr "Inga presentationer."
+
+#: src/Module/Notifications/Introductions.php:215
+#: src/Module/Notifications/Notifications.php:134
+#, php-format
+msgid "No more %s notifications."
 msgstr ""
 
-#: src/Core/Installer.php:482
-msgid ""
-"The web installer needs to be able to create a file called "
-"\"local.config.php\" in the \"config\" folder of your web server and it is "
-"unable to do so."
+#: src/Module/Notifications/Notification.php:107
+msgid "You must be logged in to show this page."
 msgstr ""
 
-#: src/Core/Installer.php:483
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."
+#: src/Module/Notifications/Notifications.php:65
+msgid "Network Notifications"
+msgstr "Nätverksaviseringar"
 
-#: src/Core/Installer.php:484
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named local.config.php in your Friendica \"config\" folder."
-msgstr ""
+#: src/Module/Notifications/Notifications.php:71
+msgid "System Notifications"
+msgstr "Systemets aviseringar"
 
-#: src/Core/Installer.php:485
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"INSTALL.txt\" for instructions."
-msgstr ""
+#: src/Module/Notifications/Notifications.php:77
+msgid "Personal Notifications"
+msgstr "Privata aviseringar"
 
-#: src/Core/Installer.php:488
-msgid "config/local.config.php is writable"
+#: src/Module/Notifications/Notifications.php:83
+msgid "Home Notifications"
+msgstr "Hem-aviseringar"
+
+#: src/Module/Notifications/Notifications.php:139
+msgid "Show unread"
 msgstr ""
 
-#: src/Core/Installer.php:508
-msgid ""
-"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
+#: src/Module/OAuth/Acknowledge.php:50
+msgid "Authorize application connection"
 msgstr ""
 
-#: src/Core/Installer.php:509
+#: src/Module/OAuth/Acknowledge.php:52
 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."
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vill du ge den här applikationen åtkomst till dina inlägg och kontakter, och/eller skapa nya inlägg för dig?"
+
+#: src/Module/OAuth/Authorize.php:54
+msgid "Unsupported or missing response type"
 msgstr ""
 
-#: src/Core/Installer.php:510
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
+#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:72
+msgid "Incomplete request data"
 msgstr ""
 
-#: src/Core/Installer.php:511
+#: src/Module/OAuth/Authorize.php:106
+#, php-format
 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."
+"Please copy the following authentication code into your application and "
+"close this window: %s"
 msgstr ""
 
-#: src/Core/Installer.php:514
-msgid "view/smarty3 is writable"
+#: src/Module/OAuth/Token.php:96
+msgid "Unsupported or missing grant type"
 msgstr ""
 
-#: src/Core/Installer.php:543
-msgid ""
-"Url rewrite in .htaccess is not working. Make sure you copied .htaccess-dist"
-" to .htaccess."
+#: src/Module/PermissionTooltip.php:44
+#, php-format
+msgid "Wrong type \"%s\", expected one of: %s"
 msgstr ""
 
-#: src/Core/Installer.php:545
-msgid "Error message from Curl when fetching"
+#: src/Module/PermissionTooltip.php:61
+msgid "Model not found"
 msgstr ""
 
-#: src/Core/Installer.php:550
-msgid "Url rewrite is working"
+#: src/Module/PermissionTooltip.php:83
+msgid "Remote privacy information not available."
+msgstr "Remote privacy information not available."
+
+#: src/Module/PermissionTooltip.php:92
+msgid "Visible to:"
+msgstr "Synlig för:"
+
+#: src/Module/Photo.php:123
+msgid "The Photo is not available."
 msgstr ""
 
-#: src/Core/Installer.php:579
-msgid "ImageMagick PHP extension is not installed"
+#: src/Module/Photo.php:136
+#, php-format
+msgid "The Photo with id %s is not available."
 msgstr ""
 
-#: src/Core/Installer.php:581
-msgid "ImageMagick PHP extension is installed"
+#: src/Module/Photo.php:169
+#, php-format
+msgid "Invalid external resource with url %s."
 msgstr ""
 
-#: src/Core/Installer.php:583 tests/src/Core/InstallerTest.php:343
-#: tests/src/Core/InstallerTest.php:369
-msgid "ImageMagick supports GIF"
+#: src/Module/Photo.php:171
+#, php-format
+msgid "Invalid photo with id %s."
 msgstr ""
 
-#: src/Core/Installer.php:608
-msgid "Could not connect to database."
+#: src/Module/Profile/Contacts.php:120
+msgid "No contacts."
+msgstr "Inga kontakter."
+
+#: src/Module/Profile/Profile.php:82
+msgid "Profile not found."
+msgstr "Profilen hittades inte."
+
+#: src/Module/Profile/Profile.php:135
+#, php-format
+msgid ""
+"You're currently viewing your profile as <b>%s</b> <a href=\"%s\" "
+"class=\"btn btn-sm pull-right\">Cancel</a>"
 msgstr ""
 
-#: src/Core/Installer.php:615
-msgid "Database already in use."
+#: src/Module/Profile/Profile.php:149
+msgid "Member since:"
 msgstr ""
 
-#: src/Core/L10n.php:368 src/Model/Event.php:397
-msgid "Tuesday"
-msgstr "tisdag"
+#: src/Module/Profile/Profile.php:155
+msgid "j F, Y"
+msgstr "j F, Y"
 
-#: src/Core/L10n.php:368 src/Model/Event.php:398
-msgid "Wednesday"
-msgstr "onsdag"
+#: src/Module/Profile/Profile.php:156
+msgid "j F"
+msgstr "j F"
 
-#: src/Core/L10n.php:368 src/Model/Event.php:399
-msgid "Thursday"
-msgstr "torsdag"
+#: src/Module/Profile/Profile.php:164 src/Util/Temporal.php:163
+msgid "Birthday:"
+msgstr "Födelsedatum:"
 
-#: src/Core/L10n.php:368 src/Model/Event.php:400
-msgid "Friday"
-msgstr "fredag"
+#: src/Module/Profile/Profile.php:167
+#: src/Module/Settings/Profile/Index.php:245 src/Util/Temporal.php:165
+msgid "Age: "
+msgstr "Ålder: "
 
-#: src/Core/L10n.php:368 src/Model/Event.php:401
-msgid "Saturday"
-msgstr "lördag"
+#: src/Module/Profile/Profile.php:167
+#: src/Module/Settings/Profile/Index.php:245 src/Util/Temporal.php:165
+#, php-format
+msgid "%d year old"
+msgid_plural "%d years old"
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:416
-msgid "January"
-msgstr "januari"
+#: src/Module/Profile/Profile.php:234
+msgid "Forums:"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:417
-msgid "February"
-msgstr "februari"
+#: src/Module/Profile/Profile.php:246
+msgid "View profile as:"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:418
-msgid "March"
-msgstr "mars"
+#: src/Module/Profile/Profile.php:263
+msgid "View as"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:419
-msgid "April"
-msgstr "april"
+#: src/Module/Profile/Profile.php:326 src/Module/Profile/Profile.php:329
+#: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68
+#: src/Protocol/Feed.php:985 src/Protocol/OStatus.php:1242
+#, php-format
+msgid "%s's timeline"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Core/L10n.php:391 src/Model/Event.php:407
-msgid "May"
-msgstr "maj"
+#: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:66
+#: src/Protocol/Feed.php:989 src/Protocol/OStatus.php:1246
+#, php-format
+msgid "%s's posts"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:420
-msgid "June"
-msgstr "juni"
+#: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:67
+#: src/Protocol/Feed.php:992 src/Protocol/OStatus.php:1249
+#, php-format
+msgid "%s's comments"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:421
-msgid "July"
-msgstr "juli"
+#: src/Module/Profile/Schedule.php:84
+msgid "Scheduled"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:422
-msgid "August"
-msgstr "augusti"
+#: src/Module/Profile/Schedule.php:85
+msgid "Content"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:423
-msgid "September"
-msgstr "september"
+#: src/Module/Profile/Schedule.php:86
+msgid "Remove post"
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:424
-msgid "October"
-msgstr "oktober"
+#: src/Module/Register.php:84
+msgid "Only parent users can create additional accounts."
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:425
-msgid "November"
-msgstr "november"
+#: src/Module/Register.php:116
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking \"Register\"."
+msgstr ""
 
-#: src/Core/L10n.php:372 src/Model/Event.php:426
-msgid "December"
-msgstr "december"
+#: src/Module/Register.php:117
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr "Om du inte vet vad OpenID är, eller inte vill använda det, kan du lämna det fältet tomt och fylla i resten."
 
-#: src/Core/L10n.php:387 src/Model/Event.php:388
-msgid "Mon"
+#: src/Module/Register.php:118
+msgid "Your OpenID (optional): "
+msgstr "OpenID (om du vill): "
+
+#: src/Module/Register.php:127
+msgid "Include your profile in member directory?"
+msgstr "Ta med profilen i medlemskatalogen?"
+
+#: src/Module/Register.php:148
+msgid "Note for the admin"
 msgstr ""
 
-#: src/Core/L10n.php:387 src/Model/Event.php:389
-msgid "Tue"
+#: src/Module/Register.php:148
+msgid "Leave a message for the admin, why you want to join this node"
 msgstr ""
 
-#: src/Core/L10n.php:387 src/Model/Event.php:390
-msgid "Wed"
+#: src/Module/Register.php:149
+msgid "Membership on this site is by invitation only."
 msgstr ""
 
-#: src/Core/L10n.php:387 src/Model/Event.php:391
-msgid "Thu"
+#: src/Module/Register.php:150
+msgid "Your invitation code: "
 msgstr ""
 
-#: src/Core/L10n.php:387 src/Model/Event.php:392
-msgid "Fri"
+#: src/Module/Register.php:158
+msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
 msgstr ""
 
-#: src/Core/L10n.php:387 src/Model/Event.php:393
-msgid "Sat"
+#: src/Module/Register.php:159
+msgid ""
+"Your Email Address: (Initial information will be send there, so this has to "
+"be an existing address.)"
 msgstr ""
 
-#: src/Core/L10n.php:387 src/Model/Event.php:387
-msgid "Sun"
+#: src/Module/Register.php:160
+msgid "Please repeat your e-mail address:"
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:403
-msgid "Jan"
+#: src/Module/Register.php:162
+msgid "Leave empty for an auto generated password."
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:404
-msgid "Feb"
+#: src/Module/Register.php:164
+#, php-format
+msgid ""
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be \"<strong>nickname@%s</strong>\"."
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:405
-msgid "Mar"
+#: src/Module/Register.php:165
+msgid "Choose a nickname: "
+msgstr "Välj ett användarnamn: "
+
+#: src/Module/Register.php:174
+msgid "Import your profile to this friendica instance"
+msgstr "Importera din profil till den här friendica-instansen"
+
+#: src/Module/Register.php:181
+msgid "Note: This node explicitly contains adult content"
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:406
-msgid "Apr"
+#: src/Module/Register.php:183 src/Module/Settings/Delegation.php:155
+msgid "Parent Password:"
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:409
-msgid "Jul"
+#: src/Module/Register.php:183 src/Module/Settings/Delegation.php:155
+msgid ""
+"Please enter the password of the parent account to legitimize your request."
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:410
-msgid "Aug"
+#: src/Module/Register.php:212
+msgid "Password doesn't match."
 msgstr ""
 
-#: src/Core/L10n.php:391
-msgid "Sep"
+#: src/Module/Register.php:218
+msgid "Please enter your password."
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:412
-msgid "Oct"
+#: src/Module/Register.php:260
+msgid "You have entered too much information."
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:413
-msgid "Nov"
+#: src/Module/Register.php:283
+msgid "Please enter the identical mail address in the second field."
 msgstr ""
 
-#: src/Core/L10n.php:391 src/Model/Event.php:414
-msgid "Dec"
+#: src/Module/Register.php:310
+msgid "The additional account was created."
 msgstr ""
 
-#: src/Core/L10n.php:410
-msgid "poke"
+#: src/Module/Register.php:335
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr "Registrering klar. Kolla din e-post för vidare information."
+
+#: src/Module/Register.php:339
+#, php-format
+msgid ""
+"Failed to send email message. Here your accout details:<br> login: %s<br> "
+"password: %s<br><br>You can change your password after login."
 msgstr ""
 
-#: src/Core/L10n.php:410
-msgid "poked"
+#: src/Module/Register.php:345
+msgid "Registration successful."
 msgstr ""
 
-#: src/Core/L10n.php:411
-msgid "ping"
+#: src/Module/Register.php:350 src/Module/Register.php:357
+msgid "Your registration can not be processed."
+msgstr "Det går inte att behandla registreringen."
+
+#: src/Module/Register.php:356
+msgid "You have to leave a request note for the admin."
 msgstr ""
 
-#: src/Core/L10n.php:411
-msgid "pinged"
+#: src/Module/Register.php:402
+msgid "Your registration is pending approval by the site owner."
+msgstr "Din registrering inväntar godkännande av webbplatsens ägare."
+
+#: src/Module/RemoteFollow.php:71
+msgid "Profile unavailable."
+msgstr "Profilen är inte tillgänglig."
+
+#: src/Module/RemoteFollow.php:77
+msgid "Invalid locator"
+msgstr "Invalid locator"
+
+#: src/Module/RemoteFollow.php:84
+msgid "The provided profile link doesn't seem to be valid"
 msgstr ""
 
-#: src/Core/L10n.php:412
-msgid "prod"
+#: src/Module/RemoteFollow.php:89
+msgid ""
+"Remote subscription can't be done for your network. Please subscribe "
+"directly on your system."
 msgstr ""
 
-#: src/Core/L10n.php:412
-msgid "prodded"
+#: src/Module/RemoteFollow.php:121
+msgid "Friend/Connection Request"
+msgstr "Vän- eller kontaktförfrågan"
+
+#: src/Module/RemoteFollow.php:122
+#, php-format
+msgid ""
+"Enter your Webfinger address (user@domain.tld) or profile URL here. If this "
+"isn't supported by your system, you have to subscribe to <strong>%s</strong>"
+" or <strong>%s</strong> directly on your system."
 msgstr ""
 
-#: src/Core/L10n.php:413
-msgid "slap"
+#: src/Module/RemoteFollow.php:123
+#, php-format
+msgid ""
+"If you are not yet a member of the free social web, <a href=\"%s\">follow "
+"this link to find a public Friendica node and join us today</a>."
 msgstr ""
 
-#: src/Core/L10n.php:413
-msgid "slapped"
+#: src/Module/RemoteFollow.php:124
+msgid "Your Webfinger address or profile URL:"
 msgstr ""
 
-#: src/Core/L10n.php:414
-msgid "finger"
+#: src/Module/Search/Index.php:53
+msgid "Only logged in users are permitted to perform a search."
 msgstr ""
 
-#: src/Core/L10n.php:414
-msgid "fingered"
+#: src/Module/Search/Index.php:73
+msgid "Only one search per minute is permitted for not logged in users."
 msgstr ""
 
-#: src/Core/L10n.php:415
-msgid "rebuff"
+#: src/Module/Search/Index.php:189
+#, php-format
+msgid "Items tagged with: %s"
 msgstr ""
 
-#: src/Core/L10n.php:415
-msgid "rebuffed"
+#: src/Module/Search/Saved.php:58
+msgid "Search term was not saved."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:175
-msgid "System"
+#: src/Module/Search/Saved.php:61
+msgid "Search term already saved."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:265 src/Core/NotificationsManager.php:277
-#, php-format
-msgid "%s commented on %s's post"
+#: src/Module/Search/Saved.php:67
+msgid "Search term was not removed."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:276
-#, php-format
-msgid "%s created a new post"
+#: src/Module/Security/Login.php:104
+msgid "Create a New Account"
+msgstr "Skapa nytt konto"
+
+#: src/Module/Security/Login.php:129
+msgid "Your OpenID: "
 msgstr ""
 
-#: src/Core/NotificationsManager.php:290
-#, php-format
-msgid "%s liked %s's post"
+#: src/Module/Security/Login.php:132
+msgid ""
+"Please enter your username and password to add the OpenID to your existing "
+"account."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:303
-#, php-format
-msgid "%s disliked %s's post"
+#: src/Module/Security/Login.php:134
+msgid "Or login using OpenID: "
+msgstr "eller logga in genom att använda OpenID:"
+
+#: src/Module/Security/Login.php:148
+msgid "Password: "
+msgstr "Lösenord: "
+
+#: src/Module/Security/Login.php:149
+msgid "Remember me"
+msgstr "Kom ihåg mig"
+
+#: src/Module/Security/Login.php:158
+msgid "Forgot your password?"
+msgstr "Har du glömt lösenordet?"
+
+#: src/Module/Security/Login.php:161
+msgid "Website Terms of Service"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:316
-#, php-format
-msgid "%s is attending %s's event"
+#: src/Module/Security/Login.php:162
+msgid "terms of service"
+msgstr "användarvillkor"
+
+#: src/Module/Security/Login.php:164
+msgid "Website Privacy Policy"
+msgstr "Integritetspolicy för hemsidan"
+
+#: src/Module/Security/Login.php:165
+msgid "privacy policy"
+msgstr "integritetspolicy"
+
+#: src/Module/Security/Logout.php:87
+msgid "Logged out."
+msgstr "Utloggad."
+
+#: src/Module/Security/OpenID.php:54
+msgid "OpenID protocol error. No ID returned"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:329
-#, php-format
-msgid "%s is not attending %s's event"
+#: src/Module/Security/OpenID.php:92
+msgid ""
+"Account not found. Please login to your existing account to add the OpenID "
+"to it."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:342
-#, php-format
-msgid "%s may attend %s's event"
+#: src/Module/Security/OpenID.php:94
+msgid ""
+"Account not found. Please register a new account or login to your existing "
+"account to add the OpenID to it."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:375
+#: src/Module/Security/TwoFactor/Recovery.php:73
 #, php-format
-msgid "%s is now friends with %s"
+msgid "Remaining recovery codes: %d"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:651
-msgid "Friend Suggestion"
+#: src/Module/Security/TwoFactor/Recovery.php:77
+#: src/Module/Security/TwoFactor/Verify.php:76
+#: src/Module/Settings/TwoFactor/Verify.php:94
+msgid "Invalid code, please retry."
 msgstr ""
 
-#: src/Core/NotificationsManager.php:685
-msgid "Friend/Connect Request"
-msgstr "Vän- eller kontaktförfrågan"
+#: src/Module/Security/TwoFactor/Recovery.php:96
+msgid "Two-factor recovery"
+msgstr ""
 
-#: src/Core/NotificationsManager.php:685
-msgid "New Follower"
-msgstr "En som vill följa dig"
+#: src/Module/Security/TwoFactor/Recovery.php:97
+msgid ""
+"<p>You can enter one of your one-time recovery codes in case you lost access"
+" to your mobile device.</p>"
+msgstr ""
 
-#: src/Core/System.php:137
-msgid "Error 400 - Bad Request"
+#: src/Module/Security/TwoFactor/Recovery.php:98
+#: src/Module/Security/TwoFactor/Verify.php:99
+#, php-format
+msgid "Don’t have your phone? <a href=\"%s\">Enter a two-factor recovery code</a>"
 msgstr ""
 
-#: src/Core/System.php:138
-msgid "Error 401 - Unauthorized"
+#: src/Module/Security/TwoFactor/Recovery.php:99
+msgid "Please enter a recovery code"
 msgstr ""
 
-#: src/Core/System.php:139
-msgid "Error 403 - Forbidden"
+#: src/Module/Security/TwoFactor/Recovery.php:100
+msgid "Submit recovery code and complete login"
 msgstr ""
 
-#: src/Core/System.php:140
-msgid "Error 404 - Not Found"
+#: src/Module/Security/TwoFactor/Verify.php:96
+msgid ""
+"<p>Open the two-factor authentication app on your device to get an "
+"authentication code and verify your identity.</p>"
 msgstr ""
 
-#: src/Core/System.php:141
-msgid "Error 500 - Internal Server Error"
+#: src/Module/Security/TwoFactor/Verify.php:100
+#: src/Module/Settings/TwoFactor/Verify.php:154
+msgid "Please enter a code from your authentication app"
 msgstr ""
 
-#: src/Core/System.php:142
-msgid "Error 503 - Service Unavailable"
+#: src/Module/Security/TwoFactor/Verify.php:101
+msgid "This is my two-factor authenticator app device"
 msgstr ""
 
-#: src/Core/System.php:150
-msgid ""
-"The server cannot or will not process the request due to an apparent client "
-"error."
+#: src/Module/Security/TwoFactor/Verify.php:102
+msgid "Verify code and complete login"
 msgstr ""
 
-#: src/Core/System.php:151
-msgid ""
-"Authentication is required and has failed or has not yet been provided."
+#: src/Module/Settings/Delegation.php:53
+msgid "Delegation successfully granted."
 msgstr ""
 
-#: src/Core/System.php:152
-msgid ""
-"The request was valid, but the server is refusing action. The user might not"
-" have the necessary permissions for a resource, or may need an account."
+#: src/Module/Settings/Delegation.php:55
+msgid "Parent user not found, unavailable or password doesn't match."
 msgstr ""
 
-#: src/Core/System.php:153
-msgid ""
-"The requested resource could not be found but may be available in the "
-"future."
+#: src/Module/Settings/Delegation.php:59
+msgid "Delegation successfully revoked."
 msgstr ""
 
-#: src/Core/System.php:154
+#: src/Module/Settings/Delegation.php:81
+#: src/Module/Settings/Delegation.php:103
 msgid ""
-"An unexpected condition was encountered and no more specific message is "
-"suitable."
+"Delegated administrators can view but not change delegation permissions."
 msgstr ""
 
-#: src/Core/System.php:155
-msgid ""
-"The server is currently unavailable (because it is overloaded or down for "
-"maintenance). Please try again later."
+#: src/Module/Settings/Delegation.php:95
+msgid "Delegate user not found."
 msgstr ""
 
-#: src/Core/Update.php:168
-#, php-format
-msgid "Update %s failed. See error logs."
+#: src/Module/Settings/Delegation.php:143
+msgid "No parent user"
 msgstr ""
 
-#: src/Core/Update.php:225
-#, php-format
-msgid ""
-"\n"
-"\t\t\t\tThe friendica developers released update %s recently,\n"
-"\t\t\t\tbut when I tried to install it, something went terribly wrong.\n"
-"\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n"
-"\t\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."
+#: src/Module/Settings/Delegation.php:154
+#: src/Module/Settings/Delegation.php:165
+msgid "Parent User"
 msgstr ""
 
-#: src/Core/Update.php:231
-#, php-format
-msgid ""
-"The error message is\n"
-"[pre]%s[/pre]"
+#: src/Module/Settings/Delegation.php:162
+msgid "Additional Accounts"
 msgstr ""
 
-#: src/Core/Update.php:260
-#, php-format
+#: src/Module/Settings/Delegation.php:163
 msgid ""
-"\n"
-"\t\t\t\t\tThe friendica database was successfully updated from %s to %s."
+"Register additional accounts that are automatically connected to your "
+"existing account so you can manage them from this account."
 msgstr ""
 
-#: src/Core/UserImport.php:103
-msgid "Error decoding account file"
+#: src/Module/Settings/Delegation.php:164
+msgid "Register an additional account"
 msgstr ""
 
-#: src/Core/UserImport.php:109
-msgid "Error! No version data in file! This is not a Friendica account file?"
+#: src/Module/Settings/Delegation.php:168
+msgid ""
+"Parent users have total control about this account, including the account "
+"settings. Please double check whom you give this access."
 msgstr ""
 
-#: src/Core/UserImport.php:117
-#, php-format
-msgid "User '%s' already exists on this server!"
+#: src/Module/Settings/Delegation.php:172
+msgid "Delegates"
 msgstr ""
 
-#: src/Core/UserImport.php:153
-msgid "User creation error"
+#: src/Module/Settings/Delegation.php:174
+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 ""
 
-#: src/Core/UserImport.php:171
-msgid "User profile creation error"
+#: src/Module/Settings/Delegation.php:175
+msgid "Existing Page Delegates"
 msgstr ""
 
-#: src/Core/UserImport.php:215
-#, php-format
-msgid "%d contact not imported"
-msgid_plural "%d contacts not imported"
-msgstr[0] ""
-msgstr[1] ""
+#: src/Module/Settings/Delegation.php:177
+msgid "Potential Delegates"
+msgstr "Potentiella delegater"
 
-#: src/Core/UserImport.php:280
-msgid "Done. You can now login with your username and password"
-msgstr ""
+#: src/Module/Settings/Delegation.php:180
+msgid "Add"
+msgstr "Lägg till"
+
+#: src/Module/Settings/Delegation.php:181
+msgid "No entries."
+msgstr "Inga poster."
 
-#: src/Database/DBStructure.php:47
-msgid "There are no tables on MyISAM."
+#: src/Module/Settings/Display.php:107
+msgid "The theme you chose isn't available."
 msgstr ""
 
-#: src/Database/DBStructure.php:71
+#: src/Module/Settings/Display.php:146
 #, php-format
-msgid ""
-"\n"
-"Error %d occurred during database update:\n"
-"%s\n"
+msgid "%s - (Unsupported)"
 msgstr ""
 
-#: src/Database/DBStructure.php:74
-msgid "Errors encountered performing database changes: "
+#: src/Module/Settings/Display.php:192
+msgid "Display Settings"
+msgstr "Skärm-inställningar"
+
+#: src/Module/Settings/Display.php:194
+msgid "General Theme Settings"
 msgstr ""
 
-#: src/Database/DBStructure.php:263
-#, php-format
-msgid "%s: Database update"
+#: src/Module/Settings/Display.php:195
+msgid "Custom Theme Settings"
 msgstr ""
 
-#: src/Database/DBStructure.php:524
-#, php-format
-msgid "%s: updating %s table."
+#: src/Module/Settings/Display.php:196
+msgid "Content Settings"
 msgstr ""
 
-#: src/LegacyModule.php:30
-#, php-format
-msgid "Legacy module file not found: %s"
+#: src/Module/Settings/Display.php:197 view/theme/duepuntozero/config.php:70
+#: view/theme/frio/config.php:161 view/theme/quattro/config.php:72
+#: view/theme/vier/config.php:120
+msgid "Theme settings"
+msgstr "Tema-inställningar"
+
+#: src/Module/Settings/Display.php:198
+msgid "Calendar"
 msgstr ""
 
-#: src/Model/Contact.php:1054
-msgid "Drop Contact"
+#: src/Module/Settings/Display.php:204
+msgid "Display Theme:"
+msgstr "Tema/utseende:"
+
+#: src/Module/Settings/Display.php:205
+msgid "Mobile Theme:"
+msgstr "Mobil-tema:"
+
+#: src/Module/Settings/Display.php:208
+msgid "Number of items to display per page:"
 msgstr ""
 
-#: src/Model/Contact.php:1526
-msgid "Organisation"
+#: src/Module/Settings/Display.php:208 src/Module/Settings/Display.php:209
+msgid "Maximum of 100 items"
+msgstr "Maximalt 100 objekt"
+
+#: src/Module/Settings/Display.php:209
+msgid "Number of items to display per page when viewed from mobile device:"
 msgstr ""
 
-#: src/Model/Contact.php:1530
-msgid "News"
+#: src/Module/Settings/Display.php:210
+msgid "Update browser every xx seconds"
 msgstr ""
 
-#: src/Model/Contact.php:1534
-msgid "Forum"
+#: src/Module/Settings/Display.php:210
+msgid "Minimum of 10 seconds. Enter -1 to disable it."
 msgstr ""
 
-#: src/Model/Contact.php:1724
-msgid "Connect URL missing."
+#: src/Module/Settings/Display.php:211
+msgid "Automatic updates only at the top of the post stream pages"
 msgstr ""
 
-#: src/Model/Contact.php:1733
+#: src/Module/Settings/Display.php:211
 msgid ""
-"The contact could not be added. Please check the relevant network "
-"credentials in your Settings -> Social Networks page."
+"Auto update may add new posts at the top of the post stream pages, which can"
+" affect the scroll position and perturb normal reading if it happens "
+"anywhere else the top of the page."
 msgstr ""
 
-#: src/Model/Contact.php:1772
-msgid ""
-"This site is not configured to allow communications with other networks."
+#: src/Module/Settings/Display.php:212
+msgid "Display emoticons"
 msgstr ""
 
-#: src/Model/Contact.php:1773 src/Model/Contact.php:1786
-msgid "No compatible communication protocols or feeds were discovered."
+#: src/Module/Settings/Display.php:212
+msgid "When enabled, emoticons are replaced with matching symbols."
 msgstr ""
 
-#: src/Model/Contact.php:1784
-msgid "The profile address specified does not provide adequate information."
-msgstr "Angiven profiladress ger inte tillräcklig information."
+#: src/Module/Settings/Display.php:213
+msgid "Infinite scroll"
+msgstr "Oändlig skroll"
 
-#: src/Model/Contact.php:1789
-msgid "An author or name was not found."
+#: src/Module/Settings/Display.php:213
+msgid "Automatic fetch new items when reaching the page end."
 msgstr ""
 
-#: src/Model/Contact.php:1792
-msgid "No browser URL could be matched to this address."
+#: src/Module/Settings/Display.php:214
+msgid "Enable Smart Threading"
 msgstr ""
 
-#: src/Model/Contact.php:1795
-msgid ""
-"Unable to match @-style Identity Address with a known protocol or email "
-"contact."
+#: src/Module/Settings/Display.php:214
+msgid "Enable the automatic suppression of extraneous thread indentation."
 msgstr ""
 
-#: src/Model/Contact.php:1796
-msgid "Use mailto: in front of address to force email check."
+#: src/Module/Settings/Display.php:215
+msgid "Display the Dislike feature"
 msgstr ""
 
-#: src/Model/Contact.php:1802
+#: src/Module/Settings/Display.php:215
 msgid ""
-"The profile address specified belongs to a network which has been disabled "
-"on this site."
+"Display the Dislike button and dislike reactions on posts and comments."
 msgstr ""
 
-#: src/Model/Contact.php:1807
-msgid ""
-"Limited profile. This person will be unable to receive direct/personal "
-"notifications from you."
-msgstr "Begränsad profil. Den här personen kommer inte att kunna ta emot personliga meddelanden från dig."
-
-#: src/Model/Contact.php:1860
-msgid "Unable to retrieve contact information."
-msgstr "Det gick inte att komma åt kontaktinformationen."
-
-#: src/Model/Event.php:61 src/Model/Event.php:78 src/Model/Event.php:435
-#: src/Model/Event.php:915
-msgid "Starts:"
+#: src/Module/Settings/Display.php:216
+msgid "Display the resharer"
 msgstr ""
 
-#: src/Model/Event.php:64 src/Model/Event.php:84 src/Model/Event.php:436
-#: src/Model/Event.php:919
-msgid "Finishes:"
+#: src/Module/Settings/Display.php:216
+msgid "Display the first resharer as icon and text on a reshared item."
 msgstr ""
 
-#: src/Model/Event.php:385
-msgid "all-day"
+#: src/Module/Settings/Display.php:217
+msgid "Stay local"
 msgstr ""
 
-#: src/Model/Event.php:408
-msgid "Jun"
+#: src/Module/Settings/Display.php:217
+msgid "Don't go to a remote system when following a contact link."
 msgstr ""
 
-#: src/Model/Event.php:411
-msgid "Sept"
+#: src/Module/Settings/Display.php:219
+msgid "Beginning of week:"
 msgstr ""
 
-#: src/Model/Event.php:433
-msgid "No events to display"
-msgstr ""
+#: src/Module/Settings/Profile/Index.php:83
+msgid "Profile Name is required."
+msgstr "Profilen måste ha ett namn."
 
-#: src/Model/Event.php:561
-msgid "l, F j"
+#: src/Module/Settings/Profile/Index.php:131
+msgid "Profile couldn't be updated."
 msgstr ""
 
-#: src/Model/Event.php:592
-msgid "Edit event"
+#: src/Module/Settings/Profile/Index.php:172
+#: src/Module/Settings/Profile/Index.php:192
+msgid "Label:"
 msgstr ""
 
-#: src/Model/Event.php:593
-msgid "Duplicate event"
+#: src/Module/Settings/Profile/Index.php:173
+#: src/Module/Settings/Profile/Index.php:193
+msgid "Value:"
 msgstr ""
 
-#: src/Model/Event.php:594
-msgid "Delete event"
+#: src/Module/Settings/Profile/Index.php:183
+#: src/Module/Settings/Profile/Index.php:203
+msgid "Field Permissions"
 msgstr ""
 
-#: src/Model/Event.php:626 src/Model/Item.php:3554 src/Model/Item.php:3561
-msgid "link to source"
-msgstr "länk till källa"
+#: src/Module/Settings/Profile/Index.php:184
+#: src/Module/Settings/Profile/Index.php:204
+msgid "(click to open/close)"
+msgstr "(klicka för att öppna/stänga)"
 
-#: src/Model/Event.php:848
-msgid "D g:i A"
+#: src/Module/Settings/Profile/Index.php:190
+msgid "Add a new profile field"
 msgstr ""
 
-#: src/Model/Event.php:849
-msgid "g:i A"
+#: src/Module/Settings/Profile/Index.php:220
+msgid "Profile Actions"
 msgstr ""
 
-#: src/Model/Event.php:934 src/Model/Event.php:936
-msgid "Show map"
-msgstr ""
+#: src/Module/Settings/Profile/Index.php:221
+msgid "Edit Profile Details"
+msgstr "Ändra profilen"
 
-#: src/Model/Event.php:935
-msgid "Hide map"
-msgstr ""
+#: src/Module/Settings/Profile/Index.php:223
+msgid "Change Profile Photo"
+msgstr "Byt profilfoto"
 
-#: src/Model/Event.php:1027
-#, php-format
-msgid "%s's birthday"
+#: src/Module/Settings/Profile/Index.php:228
+msgid "Profile picture"
+msgstr "Profilbild"
+
+#: src/Module/Settings/Profile/Index.php:229
+msgid "Location"
+msgstr "Plats"
+
+#: src/Module/Settings/Profile/Index.php:230 src/Util/Temporal.php:93
+#: src/Util/Temporal.php:95
+msgid "Miscellaneous"
+msgstr "Blandat"
+
+#: src/Module/Settings/Profile/Index.php:231
+msgid "Custom Profile Fields"
 msgstr ""
 
-#: src/Model/Event.php:1028
-#, php-format
-msgid "Happy Birthday %s"
+#: src/Module/Settings/Profile/Index.php:233 src/Module/Welcome.php:58
+msgid "Upload Profile Photo"
+msgstr "Ladda upp profilbild"
+
+#: src/Module/Settings/Profile/Index.php:237
+msgid "Display name:"
 msgstr ""
 
-#: src/Model/FileTag.php:256
-msgid "Item filed"
+#: src/Module/Settings/Profile/Index.php:240
+msgid "Street Address:"
+msgstr "Gatuadress:"
+
+#: src/Module/Settings/Profile/Index.php:241
+msgid "Locality/City:"
+msgstr "Plats/Stad:"
+
+#: src/Module/Settings/Profile/Index.php:242
+msgid "Region/State:"
+msgstr "Region:"
+
+#: src/Module/Settings/Profile/Index.php:243
+msgid "Postal/Zip Code:"
+msgstr "Postnummer:"
+
+#: src/Module/Settings/Profile/Index.php:244
+msgid "Country:"
+msgstr "Land:"
+
+#: src/Module/Settings/Profile/Index.php:246
+msgid "XMPP (Jabber) address:"
 msgstr ""
 
-#: src/Model/Group.php:43
+#: src/Module/Settings/Profile/Index.php:246
 msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
+"The XMPP address will be published so that people can follow you there."
 msgstr ""
 
-#: src/Model/Group.php:338
-msgid "Default privacy group for new contacts"
+#: src/Module/Settings/Profile/Index.php:247
+msgid "Matrix (Element) address:"
 msgstr ""
 
-#: src/Model/Group.php:370
-msgid "Everybody"
-msgstr "Alla"
-
-#: src/Model/Group.php:390
-msgid "edit"
+#: src/Module/Settings/Profile/Index.php:247
+msgid ""
+"The Matrix address will be published so that people can follow you there."
 msgstr ""
 
-#: src/Model/Group.php:419
-msgid "Edit group"
-msgstr ""
+#: src/Module/Settings/Profile/Index.php:248
+msgid "Homepage URL:"
+msgstr "Hemsida: (URL)"
 
-#: src/Model/Group.php:422
-msgid "Create a new group"
-msgstr "Skapa ny grupp"
+#: src/Module/Settings/Profile/Index.php:249
+msgid "Public Keywords:"
+msgstr "Offentliga nyckelord:"
 
-#: src/Model/Group.php:424
-msgid "Edit groups"
-msgstr ""
+#: src/Module/Settings/Profile/Index.php:249
+msgid "(Used for suggesting potential friends, can be seen by others)"
+msgstr "(Obs, synliga för andra. Används för att föreslå potentiella vänner.)"
 
-#: src/Model/Item.php:3287
-msgid "activity"
-msgstr ""
+#: src/Module/Settings/Profile/Index.php:250
+msgid "Private Keywords:"
+msgstr "Privata nyckelord:"
 
-#: src/Model/Item.php:3289 src/Object/Post.php:471
-msgid "comment"
-msgid_plural "comments"
-msgstr[0] ""
-msgstr[1] ""
+#: src/Module/Settings/Profile/Index.php:250
+msgid "(Used for searching profiles, never shown to others)"
+msgstr "(Obs, kan ge sökträffar vid sökning av profiler. Visas annars inte för andra.)"
 
-#: src/Model/Item.php:3292
-msgid "post"
+#: src/Module/Settings/Profile/Index.php:251
+#, php-format
+msgid ""
+"<p>Custom fields appear on <a href=\"%s\">your profile page</a>.</p>\n"
+"\t\t\t\t<p>You can use BBCodes in the field values.</p>\n"
+"\t\t\t\t<p>Reorder by dragging the field title.</p>\n"
+"\t\t\t\t<p>Empty the label field to remove a custom field.</p>\n"
+"\t\t\t\t<p>Non-public fields can only be seen by the selected Friendica contacts or the Friendica contacts in the selected groups.</p>"
 msgstr ""
 
-#: src/Model/Item.php:3391
+#: src/Module/Settings/Profile/Photo/Crop.php:108
+#: src/Module/Settings/Profile/Photo/Crop.php:126
+#: src/Module/Settings/Profile/Photo/Crop.php:144
+#: src/Module/Settings/Profile/Photo/Index.php:102
 #, php-format
-msgid "Content warning: %s"
+msgid "Image size reduction [%s] failed."
 msgstr ""
 
-#: src/Model/Item.php:3470
-msgid "bytes"
+#: src/Module/Settings/Profile/Photo/Crop.php:151
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
 msgstr ""
 
-#: src/Model/Item.php:3548
-msgid "View on separate page"
+#: src/Module/Settings/Profile/Photo/Crop.php:156
+msgid "Unable to process image"
+msgstr "Det gick inte att behandla bilden"
+
+#: src/Module/Settings/Profile/Photo/Crop.php:175
+msgid "Photo not found."
 msgstr ""
 
-#: src/Model/Item.php:3549
-msgid "view on separate page"
+#: src/Module/Settings/Profile/Photo/Crop.php:197
+msgid "Profile picture successfully updated."
 msgstr ""
 
-#: src/Model/Mail.php:40 src/Model/Mail.php:175
-msgid "[no subject]"
-msgstr "[ingen rubrik]"
+#: src/Module/Settings/Profile/Photo/Crop.php:223
+#: src/Module/Settings/Profile/Photo/Crop.php:227
+msgid "Crop Image"
+msgstr "Beskär bild"
 
-#: src/Model/Profile.php:115
-msgid "Requested account is not available."
-msgstr ""
+#: src/Module/Settings/Profile/Photo/Crop.php:224
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Välj hur bilden ska beskäras för att bli så bra som möjligt."
 
-#: src/Model/Profile.php:133
-msgid "Requested profile is not available."
+#: src/Module/Settings/Profile/Photo/Crop.php:226
+msgid "Use Image As Is"
 msgstr ""
 
-#: src/Model/Profile.php:181 src/Model/Profile.php:425
-#: src/Model/Profile.php:872
-msgid "Edit profile"
+#: src/Module/Settings/Profile/Photo/Index.php:46
+msgid "Missing uploaded image."
 msgstr ""
 
-#: src/Model/Profile.php:359
-msgid "Atom feed"
+#: src/Module/Settings/Profile/Photo/Index.php:125
+msgid "Profile Picture Settings"
 msgstr ""
 
-#: src/Model/Profile.php:398
-msgid "Manage/edit profiles"
+#: src/Module/Settings/Profile/Photo/Index.php:126
+msgid "Current Profile Picture"
 msgstr ""
 
-#: src/Model/Profile.php:450 src/Module/Contact.php:645
-msgid "XMPP:"
+#: src/Module/Settings/Profile/Photo/Index.php:127
+msgid "Upload Profile Picture"
 msgstr ""
 
-#: src/Model/Profile.php:573 src/Model/Profile.php:671
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: src/Model/Profile.php:574
-msgid "F d"
+#: src/Module/Settings/Profile/Photo/Index.php:128
+msgid "Upload Picture:"
 msgstr ""
 
-#: src/Model/Profile.php:636 src/Model/Profile.php:722
-msgid "[today]"
-msgstr "[idag]"
+#: src/Module/Settings/Profile/Photo/Index.php:133
+msgid "or"
+msgstr "eller"
 
-#: src/Model/Profile.php:647
-msgid "Birthday Reminders"
-msgstr "Födelsedagspåminnelser"
+#: src/Module/Settings/Profile/Photo/Index.php:135
+msgid "skip this step"
+msgstr "hoppa över det här steget"
 
-#: src/Model/Profile.php:648
-msgid "Birthdays this week:"
-msgstr "Födelsedagar denna vecka:"
+#: src/Module/Settings/Profile/Photo/Index.php:137
+msgid "select a photo from your photo albums"
+msgstr "välj en bild från ett album"
 
-#: src/Model/Profile.php:709
-msgid "[No description]"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:64
+#: src/Module/Settings/TwoFactor/Recovery.php:62
+#: src/Module/Settings/TwoFactor/Trusted.php:65
+#: src/Module/Settings/TwoFactor/Verify.php:68
+msgid "Please enter your password to access this page."
 msgstr ""
 
-#: src/Model/Profile.php:736
-msgid "Event Reminders"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:82
+msgid "App-specific password generation failed: The description is empty."
 msgstr ""
 
-#: src/Model/Profile.php:737
-msgid "Upcoming events the next 7 days:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:85
+msgid ""
+"App-specific password generation failed: This description already exists."
 msgstr ""
 
-#: src/Model/Profile.php:754
-msgid "Member since:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:89
+msgid "New app-specific password generated."
 msgstr ""
 
-#: src/Model/Profile.php:762
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: src/Model/Profile.php:763
-msgid "j F"
-msgstr "j F"
-
-#: src/Model/Profile.php:771 src/Util/Temporal.php:147
-msgid "Birthday:"
-msgstr "Födelsedatum:"
-
-#: src/Model/Profile.php:778
-msgid "Age:"
-msgstr "Ålder:"
-
-#: src/Model/Profile.php:791
-#, php-format
-msgid "for %1$d %2$s"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:95
+msgid "App-specific passwords successfully revoked."
 msgstr ""
 
-#: src/Model/Profile.php:815
-msgid "Religion:"
-msgstr "Religion:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:105
+msgid "App-specific password successfully revoked."
+msgstr ""
 
-#: src/Model/Profile.php:823
-msgid "Hobbies/Interests:"
-msgstr "Hobbys/Intressen:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:126
+msgid "Two-factor app-specific passwords"
+msgstr ""
 
-#: src/Model/Profile.php:835
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktuppgifter och sociala nätverk:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:128
+msgid ""
+"<p>App-specific passwords are randomly generated passwords used instead your"
+" regular password to authenticate your account on third-party applications "
+"that don't support two-factor authentication.</p>"
+msgstr ""
 
-#: src/Model/Profile.php:839
-msgid "Musical interests:"
-msgstr "Musik:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:129
+msgid ""
+"Make sure to copy your new app-specific password now. You won’t be able to "
+"see it again!"
+msgstr ""
 
-#: src/Model/Profile.php:843
-msgid "Books, literature:"
-msgstr "Böcker/Litteratur:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:132
+msgid "Description"
+msgstr ""
 
-#: src/Model/Profile.php:847
-msgid "Television:"
-msgstr "TV:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:133
+msgid "Last Used"
+msgstr ""
 
-#: src/Model/Profile.php:851
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/Dans/Kultur/Underhållning:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:134
+msgid "Revoke"
+msgstr ""
 
-#: src/Model/Profile.php:855
-msgid "Love/Romance:"
-msgstr "Kärlek/Romantik:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:135
+msgid "Revoke All"
+msgstr ""
 
-#: src/Model/Profile.php:859
-msgid "Work/employment:"
-msgstr "Arbete:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:138
+msgid ""
+"When you generate a new app-specific password, you must use it right away, "
+"it will be shown to you once after you generate it."
+msgstr ""
 
-#: src/Model/Profile.php:863
-msgid "School/education:"
-msgstr "Skola/Utbildning:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:139
+msgid "Generate new app-specific password"
+msgstr ""
 
-#: src/Model/Profile.php:868
-msgid "Forums:"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:140
+msgid "Friendiqa on my Fairphone 2..."
 msgstr ""
 
-#: src/Model/Profile.php:912 src/Module/Contact.php:872
-msgid "Profile Details"
+#: src/Module/Settings/TwoFactor/AppSpecific.php:141
+msgid "Generate"
 msgstr ""
 
-#: src/Model/Profile.php:962
-msgid "Only You Can See This"
+#: src/Module/Settings/TwoFactor/Index.php:67
+msgid "Two-factor authentication successfully disabled."
 msgstr ""
 
-#: src/Model/Profile.php:970 src/Model/Profile.php:973
-msgid "Tips for New Members"
+#: src/Module/Settings/TwoFactor/Index.php:93
+msgid "Wrong Password"
+msgstr "Fel lösenord"
+
+#: src/Module/Settings/TwoFactor/Index.php:113
+msgid ""
+"<p>Use an application on a mobile device to get two-factor authentication "
+"codes when prompted on login.</p>"
 msgstr ""
 
-#: src/Model/Profile.php:1150
-#, php-format
-msgid "OpenWebAuth: %1$s welcomes %2$s"
+#: src/Module/Settings/TwoFactor/Index.php:117
+msgid "Authenticator app"
 msgstr ""
 
-#: src/Model/Storage/Database.php:36
-#, php-format
-msgid "Database storage failed to update %s"
+#: src/Module/Settings/TwoFactor/Index.php:118
+msgid "Configured"
 msgstr ""
 
-#: src/Model/Storage/Database.php:43
-msgid "Database storage failed to insert data"
+#: src/Module/Settings/TwoFactor/Index.php:118
+msgid "Not Configured"
 msgstr ""
 
-#: src/Model/Storage/Filesystem.php:63
-#, php-format
-msgid "Filesystem storage failed to create \"%s\". Check you write permissions."
+#: src/Module/Settings/TwoFactor/Index.php:119
+msgid "<p>You haven't finished configuring your authenticator app.</p>"
 msgstr ""
 
-#: src/Model/Storage/Filesystem.php:105
-#, php-format
-msgid ""
-"Filesystem storage failed to save data to \"%s\". Check your write "
-"permissions"
+#: src/Module/Settings/TwoFactor/Index.php:120
+msgid "<p>Your authenticator app is correctly configured.</p>"
 msgstr ""
 
-#: src/Model/Storage/Filesystem.php:126
-msgid "Storage base path"
+#: src/Module/Settings/TwoFactor/Index.php:122
+msgid "Recovery codes"
 msgstr ""
 
-#: src/Model/Storage/Filesystem.php:128
-msgid ""
-"Folder where uploaded files are saved. For maximum security, This should be "
-"a path outside web server folder tree"
+#: src/Module/Settings/TwoFactor/Index.php:123
+msgid "Remaining valid codes"
 msgstr ""
 
-#: src/Model/Storage/Filesystem.php:138
-msgid "Enter a valid existing folder"
+#: src/Module/Settings/TwoFactor/Index.php:125
+msgid ""
+"<p>These one-use codes can replace an authenticator app code in case you "
+"have lost access to it.</p>"
 msgstr ""
 
-#: src/Model/User.php:271
-msgid "Login failed"
+#: src/Module/Settings/TwoFactor/Index.php:127
+msgid "App-specific passwords"
 msgstr ""
 
-#: src/Model/User.php:302
-msgid "Not enough information to authenticate"
+#: src/Module/Settings/TwoFactor/Index.php:128
+msgid "Generated app-specific passwords"
 msgstr ""
 
-#: src/Model/User.php:380
-msgid "Password can't be empty"
+#: src/Module/Settings/TwoFactor/Index.php:130
+msgid ""
+"<p>These randomly generated passwords allow you to authenticate on apps not "
+"supporting two-factor authentication.</p>"
 msgstr ""
 
-#: src/Model/User.php:399
-msgid "Empty passwords are not allowed."
+#: src/Module/Settings/TwoFactor/Index.php:133
+msgid "Current password:"
 msgstr ""
 
-#: src/Model/User.php:403
+#: src/Module/Settings/TwoFactor/Index.php:133
 msgid ""
-"The new password has been exposed in a public data dump, please choose "
-"another."
+"You need to provide your current password to change two-factor "
+"authentication settings."
 msgstr ""
 
-#: src/Model/User.php:409
-msgid ""
-"The password can't contain accentuated letters, white spaces or colons (:)"
+#: src/Module/Settings/TwoFactor/Index.php:134
+msgid "Enable two-factor authentication"
 msgstr ""
 
-#: src/Model/User.php:509
-msgid "Passwords do not match. Password unchanged."
-msgstr "Lösenorden skiljer sig åt. Lösenordet ändras inte."
+#: src/Module/Settings/TwoFactor/Index.php:135
+msgid "Disable two-factor authentication"
+msgstr ""
 
-#: src/Model/User.php:516
-msgid "An invitation is required."
+#: src/Module/Settings/TwoFactor/Index.php:136
+msgid "Show recovery codes"
 msgstr ""
 
-#: src/Model/User.php:520
-msgid "Invitation could not be verified."
+#: src/Module/Settings/TwoFactor/Index.php:137
+msgid "Manage app-specific passwords"
 msgstr ""
 
-#: src/Model/User.php:527
-msgid "Invalid OpenID url"
-msgstr "Ogiltig OpenID-URL"
+#: src/Module/Settings/TwoFactor/Index.php:138
+msgid "Manage trusted browsers"
+msgstr ""
 
-#: src/Model/User.php:540 src/Module/Login.php:106
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
+#: src/Module/Settings/TwoFactor/Index.php:139
+msgid "Finish app configuration"
 msgstr ""
 
-#: src/Model/User.php:540 src/Module/Login.php:106
-msgid "The error message was:"
+#: src/Module/Settings/TwoFactor/Recovery.php:78
+msgid "New recovery codes successfully generated."
 msgstr ""
 
-#: src/Model/User.php:546
-msgid "Please enter the required information."
-msgstr "Fyll i alla obligatoriska fält."
+#: src/Module/Settings/TwoFactor/Recovery.php:104
+msgid "Two-factor recovery codes"
+msgstr ""
 
-#: src/Model/User.php:560
-#, php-format
+#: src/Module/Settings/TwoFactor/Recovery.php:106
 msgid ""
-"system.username_min_length (%s) and system.username_max_length (%s) are "
-"excluding each other, swapping values."
+"<p>Recovery codes can be used to access your account in the event you lose "
+"access to your device and cannot receive two-factor authentication "
+"codes.</p><p><strong>Put these in a safe spot!</strong> If you lose your "
+"device and don’t have the recovery codes you will lose access to your "
+"account.</p>"
 msgstr ""
 
-#: src/Model/User.php:567
-#, php-format
-msgid "Username should be at least %s character."
-msgid_plural "Username should be at least %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/Model/User.php:571
-#, php-format
-msgid "Username should be at most %s character."
-msgid_plural "Username should be at most %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/Model/User.php:579
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr "Du verkar inte ha angett ditt fullständiga namn."
+#: src/Module/Settings/TwoFactor/Recovery.php:108
+msgid ""
+"When you generate new recovery codes, you must copy the new codes. Your old "
+"codes won’t work anymore."
+msgstr ""
 
-#: src/Model/User.php:584
-msgid "Your email domain is not among those allowed on this site."
-msgstr "Din e-postdomän är inte tillåten på den här webbplatsen."
+#: src/Module/Settings/TwoFactor/Recovery.php:109
+msgid "Generate new recovery codes"
+msgstr ""
 
-#: src/Model/User.php:588
-msgid "Not a valid email address."
-msgstr "Ogiltig e-postadress."
+#: src/Module/Settings/TwoFactor/Recovery.php:111
+msgid "Next: Verification"
+msgstr ""
 
-#: src/Model/User.php:591
-msgid "The nickname was blocked from registration by the nodes admin."
+#: src/Module/Settings/TwoFactor/Trusted.php:82
+msgid "Trusted browsers successfully removed."
 msgstr ""
 
-#: src/Model/User.php:595 src/Model/User.php:603
-msgid "Cannot use that email."
-msgstr "Otillåten e-postadress."
+#: src/Module/Settings/TwoFactor/Trusted.php:92
+msgid "Trusted browser successfully removed."
+msgstr ""
 
-#: src/Model/User.php:610
-msgid "Your nickname can only contain a-z, 0-9 and _."
+#: src/Module/Settings/TwoFactor/Trusted.php:133
+msgid "Two-factor Trusted Browsers"
 msgstr ""
 
-#: src/Model/User.php:617 src/Model/User.php:674
-msgid "Nickname is already registered. Please choose another."
-msgstr "Användarnamnet är upptaget. Välj ett annat."
+#: src/Module/Settings/TwoFactor/Trusted.php:134
+msgid ""
+"Trusted browsers are individual browsers you chose to skip two-factor "
+"authentication to access Friendica. Please use this feature sparingly, as it"
+" can negate the benefit of two-factor authentication."
+msgstr ""
 
-#: src/Model/User.php:627
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr "SERIOUS ERROR: Generation of security keys failed."
+#: src/Module/Settings/TwoFactor/Trusted.php:135
+msgid "Device"
+msgstr ""
 
-#: src/Model/User.php:661 src/Model/User.php:665
-msgid "An error occurred during registration. Please try again."
-msgstr "Något gick fel vid registreringen. Försök igen."
+#: src/Module/Settings/TwoFactor/Trusted.php:136
+msgid "OS"
+msgstr ""
 
-#: src/Model/User.php:685 view/theme/duepuntozero/config.php:55
-msgid "default"
+#: src/Module/Settings/TwoFactor/Trusted.php:138
+msgid "Trusted"
 msgstr ""
 
-#: src/Model/User.php:690
-msgid "An error occurred creating your default profile. Please try again."
-msgstr "Det blev fel när din standardprofil skulle skapas. Prova igen."
+#: src/Module/Settings/TwoFactor/Trusted.php:139
+msgid "Last Use"
+msgstr ""
 
-#: src/Model/User.php:697
-msgid "An error occurred creating your self contact. Please try again."
+#: src/Module/Settings/TwoFactor/Trusted.php:141
+msgid "Remove All"
 msgstr ""
 
-#: src/Model/User.php:706
-msgid ""
-"An error occurred creating your default contact group. Please try again."
+#: src/Module/Settings/TwoFactor/Verify.php:90
+msgid "Two-factor authentication successfully activated."
 msgstr ""
 
-#: src/Model/User.php:782
+#: src/Module/Settings/TwoFactor/Verify.php:124
 #, php-format
 msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tThank you for registering at %2$s. Your account is pending for approval by the administrator.\n"
-"\n"
-"\t\t\tYour login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%3$s\n"
-"\t\t\tLogin Name:\t\t%4$s\n"
-"\t\t\tPassword:\t\t%5$s\n"
-"\t\t"
+"<p>Or you can submit the authentication settings manually:</p>\n"
+"<dl>\n"
+"\t<dt>Issuer</dt>\n"
+"\t<dd>%s</dd>\n"
+"\t<dt>Account Name</dt>\n"
+"\t<dd>%s</dd>\n"
+"\t<dt>Secret Key</dt>\n"
+"\t<dd>%s</dd>\n"
+"\t<dt>Type</dt>\n"
+"\t<dd>Time-based</dd>\n"
+"\t<dt>Number of digits</dt>\n"
+"\t<dd>6</dd>\n"
+"\t<dt>Hashing algorithm</dt>\n"
+"\t<dd>SHA-1</dd>\n"
+"</dl>"
 msgstr ""
 
-#: src/Model/User.php:799
-#, php-format
-msgid "Registration at %s"
+#: src/Module/Settings/TwoFactor/Verify.php:144
+msgid "Two-factor code verification"
 msgstr ""
 
-#: src/Model/User.php:818
-#, php-format
+#: src/Module/Settings/TwoFactor/Verify.php:146
 msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tThank you for registering at %2$s. Your account has been created.\n"
-"\t\t"
+"<p>Please scan this QR Code with your authenticator app and submit the "
+"provided code.</p>"
 msgstr ""
 
-#: src/Model/User.php:824
+#: src/Module/Settings/TwoFactor/Verify.php:148
 #, php-format
 msgid ""
-"\n"
-"\t\t\tThe login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%3$s\n"
-"\t\t\tLogin Name:\t\t%1$s\n"
-"\t\t\tPassword:\t\t%5$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\tIf you ever want to delete your account, you can do so at %3$s/removeme\n"
-"\n"
-"\t\t\tThank you and welcome to %2$s."
+"<p>Or you can open the following URL in your mobile device:</p><p><a "
+"href=\"%s\">%s</a></p>"
 msgstr ""
 
-#: src/Module/Attach.php:36 src/Module/Attach.php:48
-msgid "Item was not found."
+#: src/Module/Settings/TwoFactor/Verify.php:155
+msgid "Verify code and enable two-factor authentication"
 msgstr ""
 
-#: src/Module/Contact.php:166
-#, php-format
-msgid "%d contact edited."
-msgid_plural "%d contacts edited."
-msgstr[0] ""
-msgstr[1] ""
-
-#: src/Module/Contact.php:191 src/Module/Contact.php:374
-msgid "Could not access contact record."
-msgstr "Hittar inte information om kontakten."
-
-#: src/Module/Contact.php:201
-msgid "Could not locate selected profile."
-msgstr "Hittar inte vald profil."
-
-#: src/Module/Contact.php:233
-msgid "Contact updated."
-msgstr "Kontakten har uppdaterats."
-
-#: src/Module/Contact.php:395
-msgid "Contact has been blocked"
-msgstr "Kontakten har spärrats"
+#: src/Module/Settings/UserExport.php:67
+msgid "Export account"
+msgstr "Exportera konto"
 
-#: src/Module/Contact.php:395
-msgid "Contact has been unblocked"
-msgstr "Kontakten är inte längre spärrad"
+#: src/Module/Settings/UserExport.php:67
+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 ""
 
-#: src/Module/Contact.php:405
-msgid "Contact has been ignored"
-msgstr "Kontakten ignoreras"
+#: src/Module/Settings/UserExport.php:68
+msgid "Export all"
+msgstr "Exportera allt"
 
-#: src/Module/Contact.php:405
-msgid "Contact has been unignored"
-msgstr "Kontakten ignoreras inte längre"
+#: src/Module/Settings/UserExport.php:68
+msgid ""
+"Export your account 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 ""
 
-#: src/Module/Contact.php:415
-msgid "Contact has been archived"
+#: src/Module/Settings/UserExport.php:69
+msgid "Export Contacts to CSV"
 msgstr ""
 
-#: src/Module/Contact.php:415
-msgid "Contact has been unarchived"
+#: src/Module/Settings/UserExport.php:69
+msgid ""
+"Export the list of the accounts you are following as CSV file. Compatible to"
+" e.g. Mastodon."
 msgstr ""
 
-#: src/Module/Contact.php:439
-msgid "Drop contact"
+#: src/Module/Special/HTTPException.php:51
+msgid "Stack trace:"
 msgstr ""
 
-#: src/Module/Contact.php:442 src/Module/Contact.php:820
-msgid "Do you really want to delete this contact?"
+#: src/Module/Special/HTTPException.php:55
+#, php-format
+msgid "Exception thrown in %s:%d"
 msgstr ""
 
-#: src/Module/Contact.php:456
-msgid "Contact has been removed."
-msgstr "Kontakten har tagits bort."
+#: src/Module/Tos.php:57 src/Module/Tos.php:91
+msgid ""
+"At the time of registration, and for providing communications between the "
+"user account and their contacts, the user has to provide a display name (pen"
+" name), an username (nickname) and a working email address. The names will "
+"be accessible on the profile page of the account by any visitor of the page,"
+" even if other profile details are not displayed. The email address will "
+"only be used to send the user notifications about interactions, but wont be "
+"visibly displayed. The listing of an account in the node's user directory or"
+" the global user directory is optional and can be controlled in the user "
+"settings, it is not necessary for communication."
+msgstr ""
 
-#: src/Module/Contact.php:486
-#, php-format
-msgid "You are mutual friends with %s"
+#: src/Module/Tos.php:58 src/Module/Tos.php:92
+msgid ""
+"This data is required for communication and is passed on to the nodes of the"
+" communication partners and is stored there. Users can enter additional "
+"private data that may be transmitted to the communication partners accounts."
 msgstr ""
 
-#: src/Module/Contact.php:491
+#: src/Module/Tos.php:59 src/Module/Tos.php:93
 #, php-format
-msgid "You are sharing with %s"
+msgid ""
+"At any point in time a logged in user can export their account data from the"
+" <a href=\"%1$s/settings/userexport\">account settings</a>. If the user "
+"wants to delete their account they can do so at <a "
+"href=\"%1$s/removeme\">%1$s/removeme</a>. The deletion of the account will "
+"be permanent. Deletion of the data will also be requested from the nodes of "
+"the communication partners."
 msgstr ""
 
-#: src/Module/Contact.php:496
-#, php-format
-msgid "%s is sharing with you"
+#: src/Module/Tos.php:62 src/Module/Tos.php:90
+msgid "Privacy Statement"
 msgstr ""
 
-#: src/Module/Contact.php:520
-msgid "Private communications are not available for this contact."
-msgstr "Det går inte att utbyta personliga meddelanden med den här kontakten."
+#: src/Module/Welcome.php:44
+msgid "Welcome to Friendica"
+msgstr "Välkommen till Friendica"
 
-#: src/Module/Contact.php:522
-msgid "Never"
-msgstr "Aldrig"
+#: src/Module/Welcome.php:45
+msgid "New Member Checklist"
+msgstr ""
 
-#: src/Module/Contact.php:525
-msgid "(Update was successful)"
-msgstr "(Uppdateringen lyckades)"
+#: src/Module/Welcome.php:46
+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 ""
 
-#: src/Module/Contact.php:525
-msgid "(Update was not successful)"
-msgstr "(Uppdateringen lyckades inte)"
+#: src/Module/Welcome.php:48
+msgid "Getting Started"
+msgstr "Komma igång"
 
-#: src/Module/Contact.php:527 src/Module/Contact.php:1058
-msgid "Suggest friends"
-msgstr ""
+#: src/Module/Welcome.php:49
+msgid "Friendica Walk-Through"
+msgstr "Genomgång av Friendica"
 
-#: src/Module/Contact.php:531
-#, php-format
-msgid "Network type: %s"
+#: src/Module/Welcome.php:50
+msgid ""
+"On your <em>Quick Start</em> page - find a brief introduction to your "
+"profile and network tabs, make some new connections, and find some groups to"
+" join."
 msgstr ""
 
-#: src/Module/Contact.php:536
-msgid "Communications lost with this contact!"
+#: src/Module/Welcome.php:53
+msgid "Go to Your Settings"
+msgstr "Gå till dina inställningar"
+
+#: src/Module/Welcome.php:54
+msgid ""
+"On your <em>Settings</em> 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 ""
 
-#: src/Module/Contact.php:542
-msgid "Fetch further information for feeds"
+#: src/Module/Welcome.php:55
+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 ""
 
-#: src/Module/Contact.php:544
+#: src/Module/Welcome.php:59
 msgid ""
-"Fetch information like preview pictures, title and teaser from the feed "
-"item. You can activate this if the feed doesn't contain much text. Keywords "
-"are taken from the meta header in the feed item and are posted as hash tags."
+"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 ""
 
-#: src/Module/Contact.php:547
-msgid "Fetch information"
+#: src/Module/Welcome.php:60
+msgid "Edit Your Profile"
+msgstr "Redigera din profil"
+
+#: src/Module/Welcome.php:61
+msgid ""
+"Edit your <strong>default</strong> profile to your liking. Review the "
+"settings for hiding your list of friends and hiding the profile from unknown"
+" visitors."
 msgstr ""
 
-#: src/Module/Contact.php:548
-msgid "Fetch keywords"
+#: src/Module/Welcome.php:62
+msgid "Profile Keywords"
 msgstr ""
 
-#: src/Module/Contact.php:549
-msgid "Fetch information and keywords"
+#: src/Module/Welcome.php:63
+msgid ""
+"Set some public keywords for your profile which describe your interests. We "
+"may be able to find other people with similar interests and suggest "
+"friendships."
 msgstr ""
 
-#: src/Module/Contact.php:581
-msgid "Profile Visibility"
-msgstr "Visning av profil"
+#: src/Module/Welcome.php:65
+msgid "Connecting"
+msgstr "Ansluter"
 
-#: src/Module/Contact.php:582
-msgid "Contact Information / Notes"
-msgstr "Kontaktuppgifter/Anteckningar"
+#: src/Module/Welcome.php:67
+msgid "Importing Emails"
+msgstr "Importerar e-post"
 
-#: src/Module/Contact.php:583
-msgid "Contact Settings"
+#: src/Module/Welcome.php:68
+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 ""
 
-#: src/Module/Contact.php:592
-msgid "Contact"
+#: src/Module/Welcome.php:69
+msgid "Go to Your Contacts Page"
 msgstr ""
 
-#: src/Module/Contact.php:596
-#, php-format
+#: src/Module/Welcome.php:70
 msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Välj vilken profil som ska visas för %s när han/hon besöker din sida."
-
-#: src/Module/Contact.php:598
-msgid "Their personal note"
+"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 <em>Add New Contact</em> dialog."
 msgstr ""
 
-#: src/Module/Contact.php:600
-msgid "Edit contact notes"
+#: src/Module/Welcome.php:71
+msgid "Go to Your Site's Directory"
 msgstr ""
 
-#: src/Module/Contact.php:604
-msgid "Block/Unblock contact"
-msgstr "Spärra kontakt eller häv spärr"
+#: src/Module/Welcome.php:72
+msgid ""
+"The Directory page lets you find other people in this network or other "
+"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
+"their profile page. Provide your own Identity Address if requested."
+msgstr ""
 
-#: src/Module/Contact.php:605
-msgid "Ignore contact"
-msgstr "Ignorera kontakt"
+#: src/Module/Welcome.php:73
+msgid "Finding New People"
+msgstr "Hitta nya personer"
 
-#: src/Module/Contact.php:606
-msgid "Repair URL settings"
+#: src/Module/Welcome.php:74
+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 ""
 
-#: src/Module/Contact.php:607
-msgid "View conversations"
-msgstr ""
+#: src/Module/Welcome.php:77
+msgid "Group Your Contacts"
+msgstr "Gruppera dina kontakter"
 
-#: src/Module/Contact.php:612
-msgid "Last update:"
+#: src/Module/Welcome.php:78
+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 ""
 
-#: src/Module/Contact.php:614
-msgid "Update public posts"
+#: src/Module/Welcome.php:80
+msgid "Why Aren't My Posts Public?"
+msgstr "Varför visas inte mina inlägg publikt?"
+
+#: src/Module/Welcome.php:81
+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 ""
 
-#: src/Module/Contact.php:616 src/Module/Contact.php:1068
-msgid "Update now"
-msgstr "Updatera nu"
+#: src/Module/Welcome.php:83
+msgid "Getting Help"
+msgstr "Få hjälp"
 
-#: src/Module/Contact.php:622 src/Module/Contact.php:825
-#: src/Module/Contact.php:1085
-msgid "Unignore"
+#: src/Module/Welcome.php:84
+msgid "Go to the Help Section"
+msgstr "Gå till Hjälp-sektionen"
+
+#: src/Module/Welcome.php:85
+msgid ""
+"Our <strong>help</strong> pages may be consulted for detail on other program"
+" features and resources."
 msgstr ""
 
-#: src/Module/Contact.php:626
-msgid "Currently blocked"
-msgstr "Spärrad"
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:89
+#, php-format
+msgid "%s liked %s's post"
+msgstr "%sgillade %s's inlägg"
 
-#: src/Module/Contact.php:627
-msgid "Currently ignored"
-msgstr "Ignoreras"
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:101
+#, php-format
+msgid "%s disliked %s's post"
+msgstr "%s gillade inte %s's inlägg"
 
-#: src/Module/Contact.php:628
-msgid "Currently archived"
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:113
+#, php-format
+msgid "%s is attending %s's event"
 msgstr ""
 
-#: src/Module/Contact.php:629
-msgid "Awaiting connection acknowledge"
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:125
+#, php-format
+msgid "%s is not attending %s's event"
 msgstr ""
 
-#: src/Module/Contact.php:630
-msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:137
+#, php-format
+msgid "%s may attending %s's event"
 msgstr ""
 
-#: src/Module/Contact.php:631
-msgid "Notification for new posts"
-msgstr ""
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:167
+#, php-format
+msgid "%s is now friends with %s"
+msgstr "%s är nu vänner med %s"
 
-#: src/Module/Contact.php:631
-msgid "Send a notification of every new post of this contact"
-msgstr ""
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:334
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:372
+#, php-format
+msgid "%s commented on %s's post"
+msgstr "%s kommenterade på %s's inlägg"
 
-#: src/Module/Contact.php:633
-msgid "Blacklisted keywords"
-msgstr ""
+#: src/Navigation/Notifications/Factory/FormattedNotification.php:371
+#, php-format
+msgid "%s created a new post"
+msgstr "%s skapade ett nytt inlägg"
 
-#: src/Module/Contact.php:633
-msgid ""
-"Comma separated list of keywords that should not be converted to hashtags, "
-"when \"Fetch information and keywords\" is selected"
-msgstr ""
+#: src/Navigation/Notifications/Factory/Introduction.php:133
+msgid "Friend Suggestion"
+msgstr "Vän-förslag"
 
-#: src/Module/Contact.php:650
-msgid "Actions"
-msgstr ""
+#: src/Navigation/Notifications/Factory/Introduction.php:159
+msgid "Friend/Connect Request"
+msgstr "Vän- eller kontaktförfrågan"
+
+#: src/Navigation/Notifications/Factory/Introduction.php:159
+msgid "New Follower"
+msgstr "En som vill följa dig"
 
-#: src/Module/Contact.php:696
-msgid "Suggestions"
+#: src/Navigation/Notifications/Factory/Notification.php:93
+#, php-format
+msgid "%1$s wants to follow you"
 msgstr ""
 
-#: src/Module/Contact.php:699
-msgid "Suggest potential friends"
+#: src/Navigation/Notifications/Factory/Notification.php:95
+#, php-format
+msgid "%1$s had started following you"
 msgstr ""
 
-#: src/Module/Contact.php:707
-msgid "Show all contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:160
+#, php-format
+msgid "%1$s liked your comment %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:712
-msgid "Unblocked"
+#: src/Navigation/Notifications/Factory/Notification.php:163
+#, php-format
+msgid "%1$s liked your post %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:715
-msgid "Only show unblocked contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:170
+#, php-format
+msgid "%1$s disliked your comment %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:720
-msgid "Blocked"
+#: src/Navigation/Notifications/Factory/Notification.php:173
+#, php-format
+msgid "%1$s disliked your post %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:723
-msgid "Only show blocked contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:180
+#, php-format
+msgid "%1$s shared your comment %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:728
-msgid "Ignored"
+#: src/Navigation/Notifications/Factory/Notification.php:183
+#, php-format
+msgid "%1$s shared your post %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:731
-msgid "Only show ignored contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:190
+#, php-format
+msgid "%1$s tagged you on %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:736
-msgid "Archived"
+#: src/Navigation/Notifications/Factory/Notification.php:194
+#, php-format
+msgid "%1$s replied to you on %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:739
-msgid "Only show archived contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:198
+#, php-format
+msgid "%1$s commented in your thread %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:744
-msgid "Hidden"
+#: src/Navigation/Notifications/Factory/Notification.php:202
+#, php-format
+msgid "%1$s commented on your comment %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:747
-msgid "Only show hidden contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:208
+#, php-format
+msgid "%1$s commented in their thread %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:755
-msgid "Organize your contact groups"
+#: src/Navigation/Notifications/Factory/Notification.php:210
+#, php-format
+msgid "%1$s commented in their thread"
 msgstr ""
 
-#: src/Module/Contact.php:815
-msgid "Search your contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:212
+#, php-format
+msgid "%1$s commented in the thread %2$s from %3$s"
 msgstr ""
 
-#: src/Module/Contact.php:826 src/Module/Contact.php:1094
-msgid "Archive"
+#: src/Navigation/Notifications/Factory/Notification.php:214
+#, php-format
+msgid "%1$s commented in the thread from %3$s"
 msgstr ""
 
-#: src/Module/Contact.php:826 src/Module/Contact.php:1094
-msgid "Unarchive"
+#: src/Navigation/Notifications/Factory/Notification.php:219
+#, php-format
+msgid "%1$s commented on your thread %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:829
-msgid "Batch Actions"
+#: src/Navigation/Notifications/Factory/Notification.php:224
+#, php-format
+msgid "%1$s shared the post %2$s from %3$s"
 msgstr ""
 
-#: src/Module/Contact.php:856
-msgid "Conversations started by this contact"
+#: src/Navigation/Notifications/Factory/Notification.php:226
+#, php-format
+msgid "%1$s shared a post from %3$s"
 msgstr ""
 
-#: src/Module/Contact.php:861
-msgid "Posts and Comments"
+#: src/Navigation/Notifications/Factory/Notification.php:228
+#, php-format
+msgid "%1$s shared the post %2$s"
 msgstr ""
 
-#: src/Module/Contact.php:884
-msgid "View all contacts"
+#: src/Navigation/Notifications/Factory/Notification.php:230
+#, php-format
+msgid "%1$s shared a post"
 msgstr ""
 
-#: src/Module/Contact.php:895
-msgid "View all common friends"
+#: src/Navigation/Notifications/Repository/Notify.php:211
+#: src/Navigation/Notifications/Repository/Notify.php:694
+msgid "[Friendica:Notify]"
 msgstr ""
 
-#: src/Module/Contact.php:905
-msgid "Advanced Contact Settings"
+#: src/Navigation/Notifications/Repository/Notify.php:275
+#, php-format
+msgid "%s New mail received at %s"
 msgstr ""
 
-#: src/Module/Contact.php:991
-msgid "Mutual Friendship"
-msgstr "Ömsesidig vänskap"
+#: src/Navigation/Notifications/Repository/Notify.php:277
+#, php-format
+msgid "%1$s sent you a new private message at %2$s."
+msgstr "%1$sskickade ett privat meddelande till dig %2$s."
 
-#: src/Module/Contact.php:996
-msgid "is a fan of yours"
-msgstr "är ett fan till dig"
+#: src/Navigation/Notifications/Repository/Notify.php:278
+msgid "a private message"
+msgstr "ett privat meddelande"
 
-#: src/Module/Contact.php:1001
-msgid "you are a fan of"
-msgstr "du är fan till"
+#: src/Navigation/Notifications/Repository/Notify.php:278
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$sskickade%2$s."
 
-#: src/Module/Contact.php:1025
-msgid "Edit contact"
-msgstr "Ändra kontakt"
+#: src/Navigation/Notifications/Repository/Notify.php:280
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Gå till %sför att se och svara på dina privata meddelanden."
 
-#: src/Module/Contact.php:1079
-msgid "Toggle Blocked status"
+#: src/Navigation/Notifications/Repository/Notify.php:311
+#, php-format
+msgid "%1$s commented on %2$s's %3$s %4$s"
 msgstr ""
 
-#: src/Module/Contact.php:1087
-msgid "Toggle Ignored status"
+#: src/Navigation/Notifications/Repository/Notify.php:316
+#, php-format
+msgid "%1$s commented on your %2$s %3$s"
 msgstr ""
 
-#: src/Module/Contact.php:1096
-msgid "Toggle Archive status"
+#: src/Navigation/Notifications/Repository/Notify.php:320
+#, php-format
+msgid "%1$s commented on their %2$s %3$s"
 msgstr ""
 
-#: src/Module/Contact.php:1104
-msgid "Delete contact"
-msgstr "Ta bort kontakt"
-
-#: src/Module/Install.php:118
-msgid "Friendica Communications Server - Setup"
+#: src/Navigation/Notifications/Repository/Notify.php:324
+#: src/Navigation/Notifications/Repository/Notify.php:729
+#, php-format
+msgid "%1$s Comment to conversation #%2$d by %3$s"
 msgstr ""
 
-#: src/Module/Install.php:129
-msgid "System check"
+#: src/Navigation/Notifications/Repository/Notify.php:326
+#, php-format
+msgid "%s commented on an item/conversation you have been following."
 msgstr ""
 
-#: src/Module/Install.php:134
-msgid "Check again"
+#: src/Navigation/Notifications/Repository/Notify.php:330
+#: src/Navigation/Notifications/Repository/Notify.php:345
+#: src/Navigation/Notifications/Repository/Notify.php:364
+#: src/Navigation/Notifications/Repository/Notify.php:744
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
 msgstr ""
 
-#: src/Module/Install.php:151
-msgid "Database connection"
+#: src/Navigation/Notifications/Repository/Notify.php:337
+#, php-format
+msgid "%s %s posted to your profile wall"
 msgstr ""
 
-#: src/Module/Install.php:152
-msgid ""
-"In order to install Friendica we need to know how to connect to your "
-"database."
+#: src/Navigation/Notifications/Repository/Notify.php:339
+#, php-format
+msgid "%1$s posted to your profile wall at %2$s"
 msgstr ""
 
-#: src/Module/Install.php:153
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Please contact your hosting provider or site administrator if you have questions about these settings."
-
-#: src/Module/Install.php:154
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
+#: src/Navigation/Notifications/Repository/Notify.php:340
+#, php-format
+msgid "%1$s posted to [url=%2$s]your wall[/url]"
 msgstr ""
 
-#: src/Module/Install.php:157
-msgid "Database Server Name"
-msgstr "Database Server Name"
-
-#: src/Module/Install.php:162
-msgid "Database Login Name"
-msgstr "Database Login Name"
-
-#: src/Module/Install.php:168
-msgid "Database Login Password"
-msgstr "Database Login Password"
-
-#: src/Module/Install.php:170
-msgid "For security reasons the password must not be empty"
+#: src/Navigation/Notifications/Repository/Notify.php:352
+#, php-format
+msgid "%1$s %2$s poked you"
 msgstr ""
 
-#: src/Module/Install.php:173
-msgid "Database Name"
-msgstr "Database Name"
+#: src/Navigation/Notifications/Repository/Notify.php:354
+#, php-format
+msgid "%1$s poked you at %2$s"
+msgstr ""
 
-#: src/Module/Install.php:178 src/Module/Install.php:214
-msgid "Site administrator email address"
+#: src/Navigation/Notifications/Repository/Notify.php:355
+#, php-format
+msgid "%1$s [url=%2$s]poked you[/url]."
 msgstr ""
 
-#: src/Module/Install.php:180 src/Module/Install.php:214
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
+#: src/Navigation/Notifications/Repository/Notify.php:372
+#, php-format
+msgid "%s Introduction received"
 msgstr ""
 
-#: src/Module/Install.php:184 src/Module/Install.php:215
-msgid "Please select a default timezone for your website"
-msgstr "Please select a default timezone for your website"
+#: src/Navigation/Notifications/Repository/Notify.php:374
+#, php-format
+msgid "You've received an introduction from '%1$s' at %2$s"
+msgstr "Du tog emot en introduktion från '%1$s' vid %2$s"
 
-#: src/Module/Install.php:208
-msgid "Site settings"
+#: src/Navigation/Notifications/Repository/Notify.php:375
+#, php-format
+msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
 msgstr ""
 
-#: src/Module/Install.php:217
-msgid "System Language:"
+#: src/Navigation/Notifications/Repository/Notify.php:380
+#: src/Navigation/Notifications/Repository/Notify.php:426
+#, php-format
+msgid "You may visit their profile at %s"
 msgstr ""
 
-#: src/Module/Install.php:219
-msgid ""
-"Set the default language for your Friendica installation interface and to "
-"send emails."
+#: src/Navigation/Notifications/Repository/Notify.php:382
+#, php-format
+msgid "Please visit %s to approve or reject the introduction."
 msgstr ""
 
-#: src/Module/Install.php:231
-msgid "Your Friendica site database has been installed."
-msgstr "Databasen för din friendicasajt har installerats."
-
-#: src/Module/Install.php:239
-msgid "Installation finished"
+#: src/Navigation/Notifications/Repository/Notify.php:389
+#, php-format
+msgid "%s A new person is sharing with you"
 msgstr ""
 
-#: src/Module/Install.php:261
-msgid "<h1>What next</h1>"
+#: src/Navigation/Notifications/Repository/Notify.php:391
+#: src/Navigation/Notifications/Repository/Notify.php:392
+#, php-format
+msgid "%1$s is sharing with you at %2$s"
 msgstr ""
 
-#: src/Module/Install.php:262
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"worker."
+#: src/Navigation/Notifications/Repository/Notify.php:399
+#, php-format
+msgid "%s You have a new follower"
 msgstr ""
 
-#: src/Module/Install.php:265
+#: src/Navigation/Notifications/Repository/Notify.php:401
+#: src/Navigation/Notifications/Repository/Notify.php:402
 #, php-format
-msgid ""
-"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
-"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."
+msgid "You have a new follower at %2$s : %1$s"
 msgstr ""
 
-#: src/Module/Itemsource.php:41
-msgid "Item Guid"
+#: src/Navigation/Notifications/Repository/Notify.php:415
+#, php-format
+msgid "%s Friend suggestion received"
 msgstr ""
 
-#: src/Module/Login.php:292
-msgid "Create a New Account"
-msgstr "Skapa nytt konto"
-
-#: src/Module/Login.php:325
-msgid "Password: "
-msgstr "Lösenord: "
-
-#: src/Module/Login.php:326
-msgid "Remember me"
+#: src/Navigation/Notifications/Repository/Notify.php:417
+#, php-format
+msgid "You've received a friend suggestion from '%1$s' at %2$s"
 msgstr ""
 
-#: src/Module/Login.php:329
-msgid "Or login using OpenID: "
+#: src/Navigation/Notifications/Repository/Notify.php:418
+#, php-format
+msgid ""
+"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
 msgstr ""
 
-#: src/Module/Login.php:335
-msgid "Forgot your password?"
-msgstr "Har du glömt lösenordet?"
-
-#: src/Module/Login.php:338
-msgid "Website Terms of Service"
-msgstr ""
+#: src/Navigation/Notifications/Repository/Notify.php:424
+msgid "Name:"
+msgstr "Namn:"
 
-#: src/Module/Login.php:339
-msgid "terms of service"
-msgstr ""
+#: src/Navigation/Notifications/Repository/Notify.php:425
+msgid "Photo:"
+msgstr "Foto:"
 
-#: src/Module/Login.php:341
-msgid "Website Privacy Policy"
+#: src/Navigation/Notifications/Repository/Notify.php:428
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
 msgstr ""
 
-#: src/Module/Login.php:342
-msgid "privacy policy"
+#: src/Navigation/Notifications/Repository/Notify.php:436
+#: src/Navigation/Notifications/Repository/Notify.php:451
+#, php-format
+msgid "%s Connection accepted"
 msgstr ""
 
-#: src/Module/Logout.php:27
-msgid "Logged out."
-msgstr "Utloggad."
-
-#: src/Module/Profile.php:102 src/Module/Profile.php:105
-#: src/Protocol/OStatus.php:1302
+#: src/Navigation/Notifications/Repository/Notify.php:438
+#: src/Navigation/Notifications/Repository/Notify.php:453
 #, php-format
-msgid "%s's timeline"
+msgid "'%1$s' has accepted your connection request at %2$s"
 msgstr ""
 
-#: src/Module/Profile.php:103 src/Protocol/OStatus.php:1306
+#: src/Navigation/Notifications/Repository/Notify.php:439
+#: src/Navigation/Notifications/Repository/Notify.php:454
 #, php-format
-msgid "%s's posts"
+msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
 msgstr ""
 
-#: src/Module/Profile.php:104 src/Protocol/OStatus.php:1309
-#, php-format
-msgid "%s's comments"
+#: src/Navigation/Notifications/Repository/Notify.php:444
+msgid ""
+"You are now mutual friends and may exchange status updates, photos, and "
+"email without restriction."
 msgstr ""
 
-#: src/Module/Proxy.php:73
-msgid "Bad Request."
+#: src/Navigation/Notifications/Repository/Notify.php:446
+#, php-format
+msgid "Please visit %s if you wish to make any changes to this relationship."
 msgstr ""
 
-#: src/Module/Register.php:83
+#: src/Navigation/Notifications/Repository/Notify.php:459
+#, php-format
 msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking \"Register\"."
+"'%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 ""
 
-#: src/Module/Register.php:84
+#: src/Navigation/Notifications/Repository/Notify.php:461
+#, php-format
 msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
-msgstr "Om du inte vet vad OpenID är, eller inte vill använda det, kan du lämna det fältet tomt och fylla i resten."
+"'%1$s' may choose to extend this into a two-way or more permissive "
+"relationship in the future."
+msgstr ""
 
-#: src/Module/Register.php:85
-msgid "Your OpenID (optional): "
-msgstr "OpenID (om du vill): "
+#: src/Navigation/Notifications/Repository/Notify.php:463
+#, php-format
+msgid "Please visit %s  if you wish to make any changes to this relationship."
+msgstr ""
 
-#: src/Module/Register.php:94
-msgid "Include your profile in member directory?"
-msgstr "Ta med profilen i medlemskatalogen?"
+#: src/Navigation/Notifications/Repository/Notify.php:473
+msgid "registration request"
+msgstr ""
 
-#: src/Module/Register.php:117
-msgid "Note for the admin"
+#: src/Navigation/Notifications/Repository/Notify.php:475
+#, php-format
+msgid "You've received a registration request from '%1$s' at %2$s"
 msgstr ""
 
-#: src/Module/Register.php:117
-msgid "Leave a message for the admin, why you want to join this node"
+#: src/Navigation/Notifications/Repository/Notify.php:476
+#, php-format
+msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
 msgstr ""
 
-#: src/Module/Register.php:118
-msgid "Membership on this site is by invitation only."
+#: src/Navigation/Notifications/Repository/Notify.php:481
+#, php-format
+msgid ""
+"Full Name:\t%s\n"
+"Site Location:\t%s\n"
+"Login Name:\t%s (%s)"
 msgstr ""
 
-#: src/Module/Register.php:119
-msgid "Your invitation code: "
+#: src/Navigation/Notifications/Repository/Notify.php:487
+#, php-format
+msgid "Please visit %s to approve or reject the request."
 msgstr ""
 
-#: src/Module/Register.php:127
-msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
+#: src/Navigation/Notifications/Repository/Notify.php:723
+#, php-format
+msgid "%s %s tagged you"
 msgstr ""
 
-#: src/Module/Register.php:128
-msgid ""
-"Your Email Address: (Initial information will be send there, so this has to "
-"be an existing address.)"
+#: src/Navigation/Notifications/Repository/Notify.php:726
+#, php-format
+msgid "%s %s shared a new post"
 msgstr ""
 
-#: src/Module/Register.php:130
-msgid "Leave empty for an auto generated password."
+#: src/Object/EMail/ItemCCEMail.php:42
+#, php-format
+msgid ""
+"This message was sent to you by %s, a member of the Friendica social "
+"network."
 msgstr ""
 
-#: src/Module/Register.php:132
+#: src/Object/EMail/ItemCCEMail.php:44
 #, php-format
+msgid "You may visit them online at %s"
+msgstr ""
+
+#: src/Object/EMail/ItemCCEMail.php:45
 msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be \"<strong>nickname@%s</strong>\"."
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr "Kontakta avsändaren genom att svara på det här meddelandet om du inte vill ha sådana här meddelanden."
+
+#: src/Object/EMail/ItemCCEMail.php:49
+#, php-format
+msgid "%s posted an update."
+msgstr "%s har gjort ett inlägg."
+
+#: src/Object/Post.php:147
+msgid "This entry was edited"
+msgstr "Den här posten redigerades"
+
+#: src/Object/Post.php:175
+msgid "Private Message"
+msgstr "Privat meddelande"
+
+#: src/Object/Post.php:178
+msgid "Connector Message"
 msgstr ""
 
-#: src/Module/Register.php:133
-msgid "Choose a nickname: "
-msgstr "Välj ett användarnamn: "
+#: src/Object/Post.php:193 src/Object/Post.php:195
+msgid "Edit"
+msgstr "Ändra"
 
-#: src/Module/Register.php:142
-msgid "Import your profile to this friendica instance"
+#: src/Object/Post.php:215
+msgid "Pinned item"
 msgstr ""
 
-#: src/Module/Register.php:150
-msgid "Note: This node explicitly contains adult content"
+#: src/Object/Post.php:219
+msgid "Delete globally"
 msgstr ""
 
-#: src/Module/Register.php:243
-msgid ""
-"Registration successful. Please check your email for further instructions."
-msgstr "Registrering klar. Kolla din e-post för vidare information."
+#: src/Object/Post.php:219
+msgid "Remove locally"
+msgstr ""
 
-#: src/Module/Register.php:247
+#: src/Object/Post.php:235
 #, php-format
-msgid ""
-"Failed to send email message. Here your accout details:<br> login: %s<br> "
-"password: %s<br><br>You can change your password after login."
+msgid "Block %s"
 msgstr ""
 
-#: src/Module/Register.php:254
-msgid "Registration successful."
+#: src/Object/Post.php:240
+msgid "Save to folder"
 msgstr ""
 
-#: src/Module/Register.php:259
-msgid "Your registration can not be processed."
-msgstr "Det går inte att behandla registreringen."
-
-#: src/Module/Register.php:305
-msgid "Your registration is pending approval by the site owner."
-msgstr "Din registrering inväntar godkännande av webbplatsens ägare."
+#: src/Object/Post.php:274
+msgid "I will attend"
+msgstr ""
 
-#: src/Module/Tos.php:35 src/Module/Tos.php:77
-msgid ""
-"At the time of registration, and for providing communications between the "
-"user account and their contacts, the user has to provide a display name (pen"
-" name), an username (nickname) and a working email address. The names will "
-"be accessible on the profile page of the account by any visitor of the page,"
-" even if other profile details are not displayed. The email address will "
-"only be used to send the user notifications about interactions, but wont be "
-"visibly displayed. The listing of an account in the node's user directory or"
-" the global user directory is optional and can be controlled in the user "
-"settings, it is not necessary for communication."
+#: src/Object/Post.php:274
+msgid "I will not attend"
 msgstr ""
 
-#: src/Module/Tos.php:36 src/Module/Tos.php:78
-msgid ""
-"This data is required for communication and is passed on to the nodes of the"
-" communication partners and is stored there. Users can enter additional "
-"private data that may be transmitted to the communication partners accounts."
+#: src/Object/Post.php:274
+msgid "I might attend"
 msgstr ""
 
-#: src/Module/Tos.php:37 src/Module/Tos.php:79
-#, php-format
-msgid ""
-"At any point in time a logged in user can export their account data from the"
-" <a href=\"%1$s/settings/uexport\">account settings</a>. If the user wants "
-"to delete their account they can do so at <a "
-"href=\"%1$s/removeme\">%1$s/removeme</a>. The deletion of the account will "
-"be permanent. Deletion of the data will also be requested from the nodes of "
-"the communication partners."
+#: src/Object/Post.php:304
+msgid "Ignore thread"
 msgstr ""
 
-#: src/Module/Tos.php:40 src/Module/Tos.php:76
-msgid "Privacy Statement"
+#: src/Object/Post.php:305
+msgid "Unignore thread"
 msgstr ""
 
-#: src/Object/Post.php:137
-msgid "This entry was edited"
+#: src/Object/Post.php:306
+msgid "Toggle ignore status"
 msgstr ""
 
-#: src/Object/Post.php:199
-msgid "Delete locally"
+#: src/Object/Post.php:316
+msgid "Add star"
 msgstr ""
 
-#: src/Object/Post.php:202
-msgid "Delete globally"
+#: src/Object/Post.php:317
+msgid "Remove star"
 msgstr ""
 
-#: src/Object/Post.php:202
-msgid "Remove locally"
+#: src/Object/Post.php:318
+msgid "Toggle star status"
 msgstr ""
 
-#: src/Object/Post.php:216
-msgid "save to folder"
+#: src/Object/Post.php:329
+msgid "Pin"
 msgstr ""
 
-#: src/Object/Post.php:251
-msgid "I will attend"
+#: src/Object/Post.php:330
+msgid "Unpin"
 msgstr ""
 
-#: src/Object/Post.php:251
-msgid "I will not attend"
+#: src/Object/Post.php:331
+msgid "Toggle pin status"
 msgstr ""
 
-#: src/Object/Post.php:251
-msgid "I might attend"
+#: src/Object/Post.php:334
+msgid "Pinned"
 msgstr ""
 
-#: src/Object/Post.php:279
-msgid "ignore thread"
+#: src/Object/Post.php:339
+msgid "Add tag"
 msgstr ""
 
-#: src/Object/Post.php:280
-msgid "unignore thread"
+#: src/Object/Post.php:352
+msgid "Quote share this"
 msgstr ""
 
-#: src/Object/Post.php:281
-msgid "toggle ignore status"
+#: src/Object/Post.php:352
+msgid "Quote Share"
 msgstr ""
 
-#: src/Object/Post.php:292
-msgid "add star"
+#: src/Object/Post.php:355
+msgid "Reshare this"
 msgstr ""
 
-#: src/Object/Post.php:293
-msgid "remove star"
+#: src/Object/Post.php:355
+msgid "Reshare"
 msgstr ""
 
-#: src/Object/Post.php:294
-msgid "toggle star status"
+#: src/Object/Post.php:356
+msgid "Cancel your Reshare"
 msgstr ""
 
-#: src/Object/Post.php:297
-msgid "starred"
+#: src/Object/Post.php:356
+msgid "Unshare"
 msgstr ""
 
-#: src/Object/Post.php:301
-msgid "add tag"
+#: src/Object/Post.php:401
+#, php-format
+msgid "%s (Received %s)"
 msgstr ""
 
-#: src/Object/Post.php:312
-msgid "like"
+#: src/Object/Post.php:406
+msgid "Comment this item on your system"
 msgstr ""
 
-#: src/Object/Post.php:313
-msgid "dislike"
+#: src/Object/Post.php:406
+msgid "Remote comment"
 msgstr ""
 
-#: src/Object/Post.php:316
-msgid "Share this"
+#: src/Object/Post.php:422
+msgid "Pushed"
 msgstr ""
 
-#: src/Object/Post.php:316
-msgid "share"
+#: src/Object/Post.php:422
+msgid "Pulled"
 msgstr ""
 
-#: src/Object/Post.php:383
+#: src/Object/Post.php:456
 msgid "to"
 msgstr "till"
 
-#: src/Object/Post.php:384
+#: src/Object/Post.php:457
 msgid "via"
-msgstr ""
+msgstr "via"
 
-#: src/Object/Post.php:385
+#: src/Object/Post.php:458
 msgid "Wall-to-Wall"
 msgstr "Profil-till-profil"
 
-#: src/Object/Post.php:386
+#: src/Object/Post.php:459
 msgid "via Wall-To-Wall:"
 msgstr "via profil-till-profil:"
 
-#: src/Object/Post.php:419
+#: src/Object/Post.php:499
 #, php-format
 msgid "Reply to %s"
 msgstr ""
 
-#: src/Object/Post.php:434
+#: src/Object/Post.php:502
+msgid "More"
+msgstr ""
+
+#: src/Object/Post.php:520
 msgid "Notifier task is pending"
 msgstr ""
 
-#: src/Object/Post.php:435
+#: src/Object/Post.php:521
 msgid "Delivery to remote servers is pending"
 msgstr ""
 
-#: src/Object/Post.php:436
+#: src/Object/Post.php:522
 msgid "Delivery to remote servers is underway"
 msgstr ""
 
-#: src/Object/Post.php:437
+#: src/Object/Post.php:523
 msgid "Delivery to remote servers is mostly done"
 msgstr ""
 
-#: src/Object/Post.php:438
+#: src/Object/Post.php:524
 msgid "Delivery to remote servers is done"
 msgstr ""
 
-#: src/Object/Post.php:458
+#: src/Object/Post.php:544
 #, php-format
 msgid "%d comment"
 msgid_plural "%d comments"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d kommentar"
+msgstr[1] "%d kommentarer"
 
-#: src/Object/Post.php:459
+#: src/Object/Post.php:545
 msgid "Show more"
 msgstr ""
 
-#: src/Object/Post.php:460
+#: src/Object/Post.php:546
 msgid "Show fewer"
 msgstr ""
 
-#: src/Protocol/Diaspora.php:2496
-msgid "Sharing notification from Diaspora network"
-msgstr ""
-
-#: src/Protocol/Diaspora.php:3613
-msgid "Attachments:"
-msgstr ""
-
-#: src/Protocol/OStatus.php:1866
+#: src/Protocol/OStatus.php:1645
 #, php-format
 msgid "%s is now following %s."
 msgstr ""
 
-#: src/Protocol/OStatus.php:1867
+#: src/Protocol/OStatus.php:1646
 msgid "following"
 msgstr "följer"
 
-#: src/Protocol/OStatus.php:1870
+#: src/Protocol/OStatus.php:1649
 #, php-format
 msgid "%s stopped following %s."
 msgstr ""
 
-#: src/Protocol/OStatus.php:1871
+#: src/Protocol/OStatus.php:1650
 msgid "stopped following"
 msgstr "följer inte längre"
 
-#: src/Util/Temporal.php:151
+#: src/Render/FriendicaSmartyEngine.php:52
+msgid "The folder view/smarty3/ must be writable by webserver."
+msgstr ""
+
+#: src/Security/Authentication.php:221
+msgid "Login failed."
+msgstr "Inloggningen misslyckades."
+
+#: src/Security/Authentication.php:262
+msgid "Login failed. Please check your credentials."
+msgstr ""
+
+#: src/Security/Authentication.php:360
+#, php-format
+msgid "Welcome %s"
+msgstr ""
+
+#: src/Security/Authentication.php:361
+msgid "Please upload a profile photo."
+msgstr "Vänligen ladda upp ett profil-foto."
+
+#: src/Util/EMailer/MailBuilder.php:259
+msgid "Friendica Notification"
+msgstr ""
+
+#: src/Util/EMailer/NotifyMailBuilder.php:78
+#: src/Util/EMailer/SystemMailBuilder.php:54
+#, php-format
+msgid "%1$s, %2$s Administrator"
+msgstr ""
+
+#: src/Util/EMailer/NotifyMailBuilder.php:80
+#: src/Util/EMailer/SystemMailBuilder.php:56
+#, php-format
+msgid "%s Administrator"
+msgstr ""
+
+#: src/Util/EMailer/NotifyMailBuilder.php:193
+#: src/Util/EMailer/NotifyMailBuilder.php:217
+#: src/Util/EMailer/SystemMailBuilder.php:101
+#: src/Util/EMailer/SystemMailBuilder.php:118
+msgid "thanks"
+msgstr ""
+
+#: src/Util/Temporal.php:167
 msgid "YYYY-MM-DD or MM-DD"
 msgstr ""
 
-#: src/Util/Temporal.php:298
+#: src/Util/Temporal.php:275
+#, php-format
+msgid "Time zone: <strong>%s</strong> <a href=\"%s\">Change in Settings</a>"
+msgstr ""
+
+#: src/Util/Temporal.php:318
 msgid "never"
 msgstr ""
 
-#: src/Util/Temporal.php:305
+#: src/Util/Temporal.php:325
 msgid "less than a second ago"
-msgstr "för mindre än en sekund sedan"
+msgstr ""
 
-#: src/Util/Temporal.php:313
+#: src/Util/Temporal.php:333
 msgid "year"
-msgstr "år"
+msgstr ""
 
-#: src/Util/Temporal.php:313
+#: src/Util/Temporal.php:333
 msgid "years"
-msgstr "år"
+msgstr ""
 
-#: src/Util/Temporal.php:314
+#: src/Util/Temporal.php:334
 msgid "months"
-msgstr "månader"
+msgstr ""
 
-#: src/Util/Temporal.php:315
+#: src/Util/Temporal.php:335
 msgid "weeks"
-msgstr "veckor"
+msgstr ""
 
-#: src/Util/Temporal.php:316
+#: src/Util/Temporal.php:336
 msgid "days"
-msgstr "dagar"
+msgstr ""
 
-#: src/Util/Temporal.php:317
+#: src/Util/Temporal.php:337
 msgid "hour"
-msgstr "timme"
+msgstr ""
 
-#: src/Util/Temporal.php:317
+#: src/Util/Temporal.php:337
 msgid "hours"
-msgstr "timmar"
+msgstr ""
 
-#: src/Util/Temporal.php:318
+#: src/Util/Temporal.php:338
 msgid "minute"
-msgstr "minut"
+msgstr ""
 
-#: src/Util/Temporal.php:318
+#: src/Util/Temporal.php:338
 msgid "minutes"
-msgstr "minuter"
+msgstr ""
 
-#: src/Util/Temporal.php:319
+#: src/Util/Temporal.php:339
 msgid "second"
-msgstr "sekund"
+msgstr ""
 
-#: src/Util/Temporal.php:319
+#: src/Util/Temporal.php:339
 msgid "seconds"
-msgstr "sekunder"
+msgstr ""
 
-#: src/Util/Temporal.php:329
+#: src/Util/Temporal.php:349
 #, php-format
 msgid "in %1$d %2$s"
 msgstr ""
 
-#: src/Util/Temporal.php:332
+#: src/Util/Temporal.php:352
 #, php-format
 msgid "%1$d %2$s ago"
 msgstr ""
 
-#: src/Worker/Delivery.php:453
+#: src/Worker/Delivery.php:525
 msgid "(no subject)"
 msgstr ""
 
-#: update.php:217
-#, php-format
-msgid "%s: Updating author-id and owner-id in item and thread table. "
+#: src/Worker/PushSubscription.php:103
+msgid "Notification from Friendica"
 msgstr ""
 
-#: update.php:272
-#, php-format
-msgid "%s: Updating post-type."
+#: src/Worker/PushSubscription.php:104
+msgid "Empty Post"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:56
+#: view/theme/duepuntozero/config.php:52
+msgid "default"
+msgstr ""
+
+#: view/theme/duepuntozero/config.php:53
 msgid "greenzero"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:57
+#: view/theme/duepuntozero/config.php:54
 msgid "purplezero"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:58
+#: view/theme/duepuntozero/config.php:55
 msgid "easterbunny"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:59
+#: view/theme/duepuntozero/config.php:56
 msgid "darkzero"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:60
+#: view/theme/duepuntozero/config.php:57
 msgid "comix"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:61
+#: view/theme/duepuntozero/config.php:58
 msgid "slackr"
 msgstr ""
 
-#: view/theme/duepuntozero/config.php:75
+#: view/theme/duepuntozero/config.php:71
 msgid "Variations"
 msgstr ""
 
-#: view/theme/frio/config.php:103
-msgid "Custom"
+#: view/theme/frio/config.php:142
+msgid "Light (Accented)"
+msgstr ""
+
+#: view/theme/frio/config.php:143
+msgid "Dark (Accented)"
+msgstr ""
+
+#: view/theme/frio/config.php:144
+msgid "Black (Accented)"
 msgstr ""
 
-#: view/theme/frio/config.php:115
+#: view/theme/frio/config.php:156
 msgid "Note"
 msgstr ""
 
-#: view/theme/frio/config.php:115
+#: view/theme/frio/config.php:156
 msgid "Check image permissions if all users are allowed to see the image"
 msgstr ""
 
-#: view/theme/frio/config.php:122
+#: view/theme/frio/config.php:162
+msgid "Custom"
+msgstr ""
+
+#: view/theme/frio/config.php:163
+msgid "Legacy"
+msgstr ""
+
+#: view/theme/frio/config.php:164
+msgid "Accented"
+msgstr ""
+
+#: view/theme/frio/config.php:165
 msgid "Select color scheme"
 msgstr ""
 
-#: view/theme/frio/config.php:123
+#: view/theme/frio/config.php:166
+msgid "Select scheme accent"
+msgstr ""
+
+#: view/theme/frio/config.php:166
+msgid "Blue"
+msgstr ""
+
+#: view/theme/frio/config.php:166
+msgid "Red"
+msgstr ""
+
+#: view/theme/frio/config.php:166
+msgid "Purple"
+msgstr ""
+
+#: view/theme/frio/config.php:166
+msgid "Green"
+msgstr ""
+
+#: view/theme/frio/config.php:166
+msgid "Pink"
+msgstr ""
+
+#: view/theme/frio/config.php:167
+msgid "Copy or paste schemestring"
+msgstr ""
+
+#: view/theme/frio/config.php:167
+msgid ""
+"You can copy this string to share your theme with others. Pasting here "
+"applies the schemestring"
+msgstr ""
+
+#: view/theme/frio/config.php:168
 msgid "Navigation bar background color"
 msgstr ""
 
-#: view/theme/frio/config.php:124
+#: view/theme/frio/config.php:169
 msgid "Navigation bar icon color "
 msgstr ""
 
-#: view/theme/frio/config.php:125
+#: view/theme/frio/config.php:170
 msgid "Link color"
 msgstr ""
 
-#: view/theme/frio/config.php:126
+#: view/theme/frio/config.php:171
 msgid "Set the background color"
 msgstr ""
 
-#: view/theme/frio/config.php:127
+#: view/theme/frio/config.php:172
 msgid "Content background opacity"
 msgstr ""
 
-#: view/theme/frio/config.php:128
+#: view/theme/frio/config.php:173
 msgid "Set the background image"
 msgstr ""
 
-#: view/theme/frio/config.php:129
+#: view/theme/frio/config.php:174
 msgid "Background image style"
 msgstr ""
 
-#: view/theme/frio/config.php:134
+#: view/theme/frio/config.php:179
 msgid "Login page background image"
 msgstr ""
 
-#: view/theme/frio/config.php:138
+#: view/theme/frio/config.php:183
 msgid "Login page background color"
 msgstr ""
 
-#: view/theme/frio/config.php:138
+#: view/theme/frio/config.php:183
 msgid "Leave background image and color empty for theme defaults"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:24
+#: view/theme/frio/php/Image.php:40
 msgid "Top Banner"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:24
+#: view/theme/frio/php/Image.php:40
 msgid ""
 "Resize image to the width of the screen and show background color below on "
 "long pages."
 msgstr ""
 
-#: view/theme/frio/php/Image.php:25
+#: view/theme/frio/php/Image.php:41
 msgid "Full screen"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:25
+#: view/theme/frio/php/Image.php:41
 msgid ""
 "Resize image to fill entire screen, clipping either the right or the bottom."
 msgstr ""
 
-#: view/theme/frio/php/Image.php:26
+#: view/theme/frio/php/Image.php:42
 msgid "Single row mosaic"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:26
+#: view/theme/frio/php/Image.php:42
 msgid ""
 "Resize image to repeat it on a single row, either vertical or horizontal."
 msgstr ""
 
-#: view/theme/frio/php/Image.php:27
+#: view/theme/frio/php/Image.php:43
 msgid "Mosaic"
 msgstr ""
 
-#: view/theme/frio/php/Image.php:27
+#: view/theme/frio/php/Image.php:43
 msgid "Repeat image to fill the screen."
 msgstr ""
 
-#: view/theme/frio/theme.php:239
+#: view/theme/frio/php/default.php:81 view/theme/frio/php/standard.php:40
+msgid "Skip to main content"
+msgstr ""
+
+#: view/theme/frio/php/default.php:152 view/theme/frio/php/standard.php:75
+msgid "Back to top"
+msgstr ""
+
+#: view/theme/frio/theme.php:207
 msgid "Guest"
 msgstr ""
 
-#: view/theme/frio/theme.php:244
+#: view/theme/frio/theme.php:210
 msgid "Visitor"
 msgstr ""
 
-#: view/theme/quattro/config.php:77
+#: view/theme/quattro/config.php:73
 msgid "Alignment"
 msgstr ""
 
-#: view/theme/quattro/config.php:77
+#: view/theme/quattro/config.php:73
 msgid "Left"
 msgstr ""
 
-#: view/theme/quattro/config.php:77
+#: view/theme/quattro/config.php:73
 msgid "Center"
 msgstr ""
 
-#: view/theme/quattro/config.php:78
+#: view/theme/quattro/config.php:74
 msgid "Color scheme"
 msgstr ""
 
-#: view/theme/quattro/config.php:79
+#: view/theme/quattro/config.php:75
 msgid "Posts font size"
 msgstr ""
 
-#: view/theme/quattro/config.php:80
+#: view/theme/quattro/config.php:76
 msgid "Textareas font size"
 msgstr ""
 
-#: view/theme/vier/config.php:76
+#: view/theme/vier/config.php:75
 msgid "Comma separated list of helper forums"
 msgstr ""
 
-#: view/theme/vier/config.php:123
+#: view/theme/vier/config.php:115
+msgid "don't show"
+msgstr ""
+
+#: view/theme/vier/config.php:115
+msgid "show"
+msgstr ""
+
+#: view/theme/vier/config.php:121
 msgid "Set style"
 msgstr ""
 
-#: view/theme/vier/config.php:124
+#: view/theme/vier/config.php:122
 msgid "Community Pages"
 msgstr ""
 
-#: view/theme/vier/config.php:125 view/theme/vier/theme.php:151
+#: view/theme/vier/config.php:123 view/theme/vier/theme.php:125
 msgid "Community Profiles"
 msgstr ""
 
-#: view/theme/vier/config.php:126
+#: view/theme/vier/config.php:124
 msgid "Help or @NewHere ?"
 msgstr ""
 
-#: view/theme/vier/config.php:127 view/theme/vier/theme.php:373
+#: view/theme/vier/config.php:125 view/theme/vier/theme.php:296
 msgid "Connect Services"
 msgstr ""
 
-#: view/theme/vier/config.php:128
+#: view/theme/vier/config.php:126
 msgid "Find Friends"
 msgstr ""
 
-#: view/theme/vier/config.php:129 view/theme/vier/theme.php:181
+#: view/theme/vier/config.php:127 view/theme/vier/theme.php:152
 msgid "Last users"
 msgstr ""
 
-#: view/theme/vier/theme.php:288
+#: view/theme/vier/theme.php:211
 msgid "Quick Start"
 msgstr ""
index b7f5faf6195832f0cdda8f7b275ca8078ae411cf..dcb2348375a4488c75f07619ea889b629bc8e3d1 100644 (file)
@@ -5,238 +5,106 @@ function string_plural_select_sv($n){
        $n = intval($n);
        return intval($n != 1);
 }}
-$a->strings['Daily posting limit of %d post reached. The post was rejected.'] = [
-       0 => 'Daglig gräns av %d upplägg nådd. Upplägget avvisades.',
-       1 => 'Daglig gräns av %d upplägg nådd. Upplägget avvisades.',
-];
-$a->strings['Weekly posting limit of %d post reached. The post was rejected.'] = [
-       0 => 'Veckovis gräns av %d inlägg nådd. Inlägged avvisades.',
-       1 => 'Veckovis gräns av %d inlägg nådd. Inlägged avvisades.',
-];
-$a->strings['Monthly posting limit of %d post reached. The post was rejected.'] = 'Månatlig gräns av %d inlägg nådd. Inlägget avvisades.';
-$a->strings['Profile Photos'] = 'Profilbilder';
-$a->strings['event'] = 'händelse';
-$a->strings['status'] = 'status';
-$a->strings['photo'] = 'foto';
-$a->strings['%1$s likes %2$s\'s %3$s'] = '%1$s gillar %2$ss %3$s';
-$a->strings['%1$s doesn\'t like %2$s\'s %3$s'] = '%1$s ogillar %2$ss %3$s';
-$a->strings['%1$s attends %2$s\'s %3$s'] = '%1$s deltar i %2$ss %3$s';
-$a->strings['%1$s doesn\'t attend %2$s\'s %3$s'] = '%1$sdeltar inte i %2$ss %3$s';
-$a->strings['%1$s attends maybe %2$s\'s %3$s'] = '%1$s deltar kanske i %2$ss %3$s';
-$a->strings['%1$s is now friends with %2$s'] = '%1$s är nu vän med %2$s';
-$a->strings['%1$s poked %2$s'] = '%1$s puffade %2$s';
-$a->strings['%1$s tagged %2$s\'s %3$s with %4$s'] = '%1$s taggade %2$ss %3$s med %4$s';
-$a->strings['post/item'] = 'inlägg/föremål';
-$a->strings['%1$s marked %2$s\'s %3$s as favorite'] = '%1$s markerade %2$ss %3$s som favorit';
-$a->strings['Likes'] = 'Gillar';
-$a->strings['Dislikes'] = 'Ogillar';
-$a->strings['Not attending'] = 'Deltar inte';
-$a->strings['Might attend'] = 'Deltar kanske';
-$a->strings['Select'] = 'Välj';
-$a->strings['Delete'] = 'Ta bort';
-$a->strings['View %s\'s profile @ %s'] = 'Visa profilen som tillhör %s @ %s';
-$a->strings['Categories:'] = 'Kategorier:';
-$a->strings['Filed under:'] = 'Sparad under:';
-$a->strings['%s from %s'] = '%s från %s';
-$a->strings['View in context'] = 'Visa i sitt sammanhang';
-$a->strings['Please wait'] = 'Var god vänta';
-$a->strings['remove'] = 'ta bort';
-$a->strings['Delete Selected Items'] = 'Ta bort valda föremål';
-$a->strings['Follow Thread'] = 'Följ tråd';
-$a->strings['View Status'] = 'Visa status';
-$a->strings['View Profile'] = 'Visa profil';
-$a->strings['View Photos'] = 'Visa foton';
-$a->strings['Network Posts'] = 'Nätverksinlägg';
-$a->strings['View Contact'] = 'Visa kontakt';
-$a->strings['Send PM'] = 'Skicka privat meddelande';
-$a->strings['Poke'] = 'Peta';
-$a->strings['Connect/Follow'] = 'Gör till kontakt/Följ';
-$a->strings['%s likes this.'] = '%s gillar det här.';
-$a->strings['%s doesn\'t like this.'] = '%s ogillar det här.';
-$a->strings['%s attends.'] = '%s deltar.';
-$a->strings['%s doesn\'t attend.'] = '%s deltar inte.';
-$a->strings['%s attends maybe.'] = '%s deltar kanske.';
-$a->strings['and'] = 'och';
-$a->strings['and %d other people'] = 'och %d andra';
-$a->strings['<span  %1$s>%2$d people</span> like this'] = '<span  %1$s>%2$d personer</span> gillar det här';
-$a->strings['%s like this.'] = '%s gillar det här.';
-$a->strings['<span  %1$s>%2$d people</span> don\'t like this'] = '<span  %1$s>%2$d personer</span> ogillar det här';
-$a->strings['%s don\'t like this.'] = '%s ogillar det här.';
-$a->strings['<span  %1$s>%2$d people</span> attend'] = '<span  %1$s>%2$d personer</span> deltar';
-$a->strings['%s attend.'] = '%s deltar.';
-$a->strings['<span  %1$s>%2$d people</span> don\'t attend'] = '<span  %1$s>%2$d personer</span> deltar inte';
-$a->strings['%s don\'t attend.'] = '%s deltar inte.';
-$a->strings['<span  %1$s>%2$d people</span> attend maybe'] = '<span  %1$s>%2$dpersoner</span> deltar kanske';
-$a->strings['%s attend maybe.'] = '%s deltar kanske.';
-$a->strings['Visible to <strong>everybody</strong>'] = 'Synlig för <strong>alla</strong>';
-$a->strings['Please enter a image/video/audio/webpage URL:'] = 'Vänligen fyll i URL till en bild/video/ljudklipp/hemsida:';
-$a->strings['Tag term:'] = 'Märkning/tagg:';
-$a->strings['Save to Folder:'] = 'Spara till mapp:';
-$a->strings['Where are you right now?'] = 'Var är du just nu?';
-$a->strings['Delete item(s)?'] = 'Ta bort?';
-$a->strings['New Post'] = 'Nytt inlägg';
-$a->strings['Share'] = 'Publicera';
+$a->strings['Access denied.'] = 'Åtkomst nekad.';
+$a->strings['User not found.'] = 'Användaren hittades inte.';
+$a->strings['Access to this profile has been restricted.'] = 'Åtkomst till den här profilen har begränsats.';
+$a->strings['Events'] = 'Evenemang';
+$a->strings['View'] = 'Visa';
+$a->strings['Previous'] = 'Föregående';
+$a->strings['Next'] = 'Nästa';
+$a->strings['today'] = 'idag';
+$a->strings['month'] = 'månad';
+$a->strings['week'] = 'vecka';
+$a->strings['day'] = 'dag';
+$a->strings['list'] = 'lista';
+$a->strings['User not found'] = 'Användaren hittades inte';
+$a->strings['This calendar format is not supported'] = 'Kalenderformatet stöds inte';
+$a->strings['calendar'] = 'kalender';
+$a->strings['Public access denied.'] = 'Publik åtkomst nekades.';
+$a->strings['The feed for this item is unavailable.'] = 'Flödet för det här föremålet är otillgängligt.';
+$a->strings['Permission denied.'] = 'Åtkomst nekad.';
+$a->strings['Item not found'] = 'Hittades inte';
+$a->strings['Edit post'] = 'Ändra inlägg';
+$a->strings['Save'] = 'Spara';
+$a->strings['Loading...'] = 'Laddar...';
 $a->strings['Upload photo'] = 'Ladda upp bild';
 $a->strings['upload photo'] = 'ladda upp bild';
 $a->strings['Attach file'] = 'Bifoga fil';
 $a->strings['attach file'] = 'bifoga fil';
-$a->strings['Bold'] = 'Fet';
-$a->strings['Italic'] = 'Kursiv';
-$a->strings['Underline'] = 'Understruken';
-$a->strings['Quote'] = 'Citat';
-$a->strings['Code'] = 'Källkod';
-$a->strings['Image'] = 'Bild';
-$a->strings['Link'] = 'Länk';
-$a->strings['Link or Media'] = 'Länk eller media';
+$a->strings['Insert web link'] = 'Infoga länk';
+$a->strings['web link'] = 'webblänk';
+$a->strings['Insert video link'] = 'Klistra in videolänk';
+$a->strings['video link'] = 'videolänk';
+$a->strings['Insert audio link'] = 'Klistra in ljudlänk';
+$a->strings['audio link'] = 'ljudlänk';
 $a->strings['Set your location'] = 'Ange plats';
 $a->strings['set location'] = 'ange plats';
 $a->strings['Clear browser location'] = 'Clear browser location';
 $a->strings['clear location'] = 'rensa plats';
-$a->strings['Set title'] = 'Ange rubrik';
-$a->strings['Categories (comma-separated list)'] = 'Kategorier (kommaseparerad lista)';
+$a->strings['Please wait'] = 'Var god vänta';
 $a->strings['Permission settings'] = 'Åtkomstinställningar';
-$a->strings['permissions'] = 'rättigheter';
+$a->strings['CC: email addresses'] = 'Kopia: e-postadresser';
 $a->strings['Public post'] = 'Offentligt inlägg';
+$a->strings['Set title'] = 'Ange rubrik';
+$a->strings['Categories (comma-separated list)'] = 'Kategorier (kommaseparerad lista)';
+$a->strings['Example: bob@example.com, mary@example.com'] = 'Exempel: adam@exempel.com, bertil@exempel.com';
 $a->strings['Preview'] = 'Förhandsgranskning';
 $a->strings['Cancel'] = 'Avbryt';
-$a->strings['Post to Groups'] = 'Skicka inlägg till grupper';
-$a->strings['Post to Contacts'] = 'Skicka inlägg till kontakter';
-$a->strings['Private post'] = 'Privat inlägg';
+$a->strings['Bold'] = 'Fet';
+$a->strings['Italic'] = 'Kursiv';
+$a->strings['Underline'] = 'Understruken';
+$a->strings['Quote'] = 'Citat';
+$a->strings['Code'] = 'Källkod';
+$a->strings['Link'] = 'Länk';
+$a->strings['Link or Media'] = 'Länk eller media';
 $a->strings['Message'] = 'Meddelande';
 $a->strings['Browser'] = 'Bläddra';
-$a->strings['View all'] = 'Visa alla';
-$a->strings['Item not found.'] = 'Hittar inte.';
-$a->strings['Yes'] = 'Ja';
-$a->strings['Permission denied.'] = 'Åtkomst nekad.';
-$a->strings['Name'] = 'Namn';
-$a->strings['Network'] = 'Nätverk';
-$a->strings['Normal Account'] = 'Vanligt konto';
-$a->strings['Automatic Friend Account'] = 'Konto med automatiskt godkännande av vänner.';
-$a->strings['Registration'] = 'Registrering';
-$a->strings['User registrations waiting for confirm'] = 'Användare som registrerat sig och inväntar godkännande';
-$a->strings['No registrations.'] = 'Inga registreringar.';
-$a->strings['Approve'] = 'Godkänn';
-$a->strings['Deny'] = 'Avslå';
-$a->strings['Settings'] = 'Inställningar';
-$a->strings['Connect'] = 'Skicka kontaktförfrågan';
-$a->strings['No'] = 'Nej';
-$a->strings['Applications'] = 'Applikationer';
-$a->strings['Login'] = 'Logga in';
-$a->strings['Page not found.'] = 'Sidan hittades inte.';
-$a->strings['month'] = 'månad';
-$a->strings['week'] = 'vecka';
-$a->strings['day'] = 'dag';
-$a->strings['No results.'] = 'Inga resultat.';
-$a->strings['Contact settings applied.'] = 'Inställningar för kontakter har sparats.';
-$a->strings['Contact update failed.'] = 'Det gick inte att uppdatera kontakt.';
-$a->strings['Contact not found.'] = 'Kontakten hittades inte.';
-$a->strings['Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.'] = 'Använd webbläsarens bakåtknapp <strong>nu</strong> om du är osäker på vad man gör på den här sidan.';
-$a->strings['Submit'] = 'Spara';
-$a->strings['Remove'] = 'Ta bort';
-$a->strings['Profile not found.'] = 'Profilen hittades inte.';
-$a->strings['Response from remote site was not understood.'] = 'Kunde inte tolka svaret från fjärrsajten.';
-$a->strings['Unexpected response from remote site: '] = 'Oväntat svar från fjärrsajten: ';
-$a->strings['Confirmation completed successfully.'] = 'Bekräftat.';
-$a->strings['Temporary failure. Please wait and try again.'] = 'Tillfälligt fel. Försök igen lite senare.';
-$a->strings['Introduction failed or was revoked.'] = 'Kontaktförfrågan gick inte fram eller har återkallats.';
-$a->strings['Remote site reported: '] = 'Meddelande från fjärrsajten: ';
-$a->strings['Unable to set contact photo.'] = 'Det gick inte att byta profilbild.';
-$a->strings['Our site encryption key is apparently messed up.'] = 'Det är något fel på webbplatsens krypteringsnyckel.';
-$a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'Empty site URL was provided or URL could not be decrypted by us.';
-$a->strings['Contact record was not found for you on our site.'] = 'Det gick inte att hitta efterfrågad information på vår webbplats.';
-$a->strings['The ID provided by your system is a duplicate on our system. It should work if you try again.'] = 'Det ID som angavs av ditt system är samma som på vårt system. Det borde fungera om du provar igen.';
-$a->strings['Unable to set your contact credentials on our system.'] = 'Unable to set your contact credentials on our system.';
-$a->strings['Unable to update your contact profile details on our system'] = 'Unable to update your contact profile details on our system';
-$a->strings['[Name Withheld]'] = '[Namnet visas inte]';
-$a->strings['This introduction has already been accepted.'] = 'Den här förfrågan har redan beviljats.';
-$a->strings['Profile location is not valid or does not contain profile information.'] = 'Profiladressen är ogiltig eller innehåller ingen profilinformation.';
-$a->strings['Warning: profile location has no identifiable owner name.'] = 'Varning! Hittar inget namn som identifierar profilen.';
-$a->strings['Warning: profile location has no profile photo.'] = 'Varning! Profilen innehåller inte någon profilbild.';
-$a->strings['%d required parameter was not found at the given location'] = [
-       0 => '%d required parameter was not found at the given location',
-       1 => '%d required parameters were not found at the given location',
-];
-$a->strings['Introduction complete.'] = 'Kontaktförfrågan/Presentationen är klar.';
-$a->strings['Unrecoverable protocol error.'] = 'Protokollfel.';
-$a->strings['Profile unavailable.'] = 'Profilen är inte tillgänglig.';
-$a->strings['%s has received too many connection requests today.'] = '%s har fått för många kontaktförfrågningar idag.';
-$a->strings['Spam protection measures have been invoked.'] = 'Åtgärder för spamskydd har vidtagits.';
-$a->strings['Friends are advised to please try again in 24 hours.'] = 'Dina vänner kan prova igen om ett dygn.';
-$a->strings['Invalid locator'] = 'Invalid locator';
-$a->strings['You have already introduced yourself here.'] = 'Du har redan presenterat dig här.';
-$a->strings['Apparently you are already friends with %s.'] = 'Du och %s är redan kontakter.';
-$a->strings['Invalid profile URL.'] = 'Ogiltig profil-URL.';
-$a->strings['Disallowed profile URL.'] = 'Otillåten profil-URL.';
-$a->strings['Failed to update contact record.'] = 'Det blev fel när kontakten skulle uppdateras.';
-$a->strings['Your introduction has been sent.'] = 'Kontaktförfrågan/Presentationen har skickats.';
-$a->strings['Please login to confirm introduction.'] = 'Logga in för att acceptera förfrågan.';
-$a->strings['Incorrect identity currently logged in. Please login to <strong>this</strong> profile.'] = 'Inloggad med fel identitet. Logga in med <strong>den här</strong> profilen.';
-$a->strings['Confirm'] = 'Bekräfta';
-$a->strings['Welcome home %s.'] = 'Välkommen hem %s.';
-$a->strings['Please confirm your introduction/connection request to %s.'] = 'Bekräfta att du vill skicka kontaktförfrågan till %s.';
-$a->strings['Friend/Connection Request'] = 'Vän- eller kontaktförfrågan';
-$a->strings['Please answer the following:'] = 'Var vänlig besvara följande:';
-$a->strings['Add a personal note:'] = 'Lägg till ett personligt meddelande:';
-$a->strings['Friendica'] = 'Friendica';
-$a->strings['Your Identity Address:'] = 'Din adress (ditt ID):';
-$a->strings['Submit Request'] = 'Skicka förfrågan';
-$a->strings['No entries (some entries may be hidden).'] = 'Inget att visa. (Man kan välja att inte synas här)';
-$a->strings['Global Directory'] = 'Medlemskatalog för flera sajter (global)';
-$a->strings['Site Directory'] = 'Medlemskatalog';
-$a->strings['Find'] = 'Sök';
-$a->strings['Location:'] = 'Plats:';
-$a->strings['Gender:'] = 'Kön:';
-$a->strings['Status:'] = 'Status:';
-$a->strings['Homepage:'] = 'Hemsida:';
-$a->strings['About:'] = 'Om:';
-$a->strings['No matches'] = 'Ingen träff';
-$a->strings['Item not found'] = 'Hittades inte';
-$a->strings['Edit post'] = 'Ändra inlägg';
-$a->strings['Insert web link'] = 'Infoga länk';
-$a->strings['CC: email addresses'] = 'Kopia: e-postadresser';
-$a->strings['Example: bob@example.com, mary@example.com'] = 'Exempel: adam@exempel.com, bertil@exempel.com';
 $a->strings['Permissions'] = 'Åtkomst';
+$a->strings['Event can not end before it has started.'] = 'Evenemanget kan inte sluta före det har börjat.';
+$a->strings['Event title and start time are required.'] = 'Evenemangets titel och start-tid krävs.';
+$a->strings['Create New Event'] = 'Skapa nytt evenemang';
+$a->strings['Event details'] = 'Evenemangets detaljer';
+$a->strings['Starting date and Title are required.'] = 'Start-datum och titel krävs.';
+$a->strings['Event Starts:'] = 'Evenemanget börjar:';
+$a->strings['Required'] = 'Krävs';
+$a->strings['Finish date/time is not known or not relevant'] = 'Slut-datum/tid är inte känt eller icke relevant';
+$a->strings['Event Finishes:'] = 'Evenemanget slutar:';
+$a->strings['Description:'] = 'Beskrivning:';
+$a->strings['Location:'] = 'Plats:';
+$a->strings['Title:'] = 'Titel:';
+$a->strings['Share this event'] = 'Dela det här evenemanget';
+$a->strings['Submit'] = 'Spara';
+$a->strings['Basic'] = 'Standard';
+$a->strings['Advanced'] = 'Avancerat';
+$a->strings['Failed to remove event'] = 'Borttagning av evenemanget misslyckades';
 $a->strings['Photos'] = 'Bilder';
-$a->strings['Contact Photos'] = 'Dina kontakters bilder';
 $a->strings['Upload'] = 'Ladda upp';
-$a->strings['Bug reports and issues: please visit'] = 'Anmäl buggar eller andra problem, gå till';
-$a->strings['Group created.'] = 'Gruppen har skapats.';
-$a->strings['Could not create group.'] = 'Det gick inte att skapa gruppen.';
-$a->strings['Group not found.'] = 'Gruppen hittades inte.';
-$a->strings['Group name changed.'] = 'Gruppens namn har ändrats.';
-$a->strings['Permission denied'] = 'Åtkomst nekad';
-$a->strings['Create a group of contacts/friends.'] = 'Skapa en grupp med kontakter/vänner.';
-$a->strings['Group Name: '] = 'Gruppens namn: ';
-$a->strings['Group removed.'] = 'Gruppen har tagits bort.';
-$a->strings['Unable to remove group.'] = 'Det gick inte att ta bort gruppen.';
-$a->strings['Members'] = 'Medlemmar';
-$a->strings['All Contacts'] = 'Alla kontakter';
-$a->strings['Group is empty'] = 'Gruppen är tom';
-$a->strings['Click on a contact to add or remove.'] = 'Klicka på en kontakt för att lägga till eller ta bort.';
-$a->strings['No profile'] = 'Ingen profil';
-$a->strings['Help:'] = 'Hjälp:';
-$a->strings['Help'] = 'Hjälp';
-$a->strings['Not Found'] = 'Hittar inte';
-$a->strings['Welcome to %s'] = 'Välkommen till %s';
-$a->strings['%s : Not a valid email address.'] = '%s : Ogiltig e-postadress.';
-$a->strings['%s : Message delivery failed.'] = '%s : Meddelandet kom inte fram.';
-$a->strings['%d message sent.'] = [
-       0 => '%d meddelande har skickats.',
-       1 => '%d meddelanden har skickats.',
-];
-$a->strings['Send invitations'] = 'Skicka inbjudningar';
-$a->strings['Enter email addresses, one per line:'] = 'Ange e-postadresser, en per rad:';
-$a->strings['Your message:'] = 'Meddelande:';
-$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Vi kan bli kontakter via min profil. Besök min profil här när du har registrerat dig:';
+$a->strings['Files'] = 'Filer';
+$a->strings['Submit Request'] = 'Skicka förfrågan';
+$a->strings['You already added this contact.'] = 'Du har redan lagt till den här kontakten.';
+$a->strings['The network type couldn\'t be detected. Contact can\'t be added.'] = 'Nätverkstypen kunde inte upptäckas. Kontakten kan inte läggas till.';
+$a->strings['Diaspora support isn\'t enabled. Contact can\'t be added.'] = 'Stödet för Diaspora är inte aktiverat. Kontakten kan inte läggas till.';
+$a->strings['OStatus support is disabled. Contact can\'t be added.'] = 'Stödet för OStatus är inaktiverat. Kontakten kan inte läggas till.';
+$a->strings['Connect/Follow'] = 'Gör till kontakt/Följ';
+$a->strings['Please answer the following:'] = 'Var vänlig besvara följande:';
+$a->strings['Your Identity Address:'] = 'Din adress (ditt ID):';
+$a->strings['Profile URL'] = 'URL för profil';
+$a->strings['Tags:'] = 'Taggar:';
+$a->strings['%s knows you'] = '%s känner dig';
+$a->strings['Add a personal note:'] = 'Lägg till ett personligt meddelande:';
+$a->strings['Status Messages and Posts'] = 'Statusmeddelanden och inlägg';
+$a->strings['The contact could not be added.'] = 'Kontakten kunde inte läggas till.';
 $a->strings['Unable to locate original post.'] = 'Hittar inte det ursprungliga inlägget.';
 $a->strings['Empty post discarded.'] = 'Tomt inlägg. Inte sparat.';
-$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Kontakta avsändaren genom att svara på det här meddelandet om du inte vill ha sådana här meddelanden.';
-$a->strings['%s posted an update.'] = '%s har gjort ett inlägg.';
-$a->strings['Remote privacy information not available.'] = 'Remote privacy information not available.';
-$a->strings['Visible to:'] = 'Synlig för:';
+$a->strings['Post updated.'] = 'Inlägget uppdaterades.';
+$a->strings['Item wasn\'t stored.'] = 'Objektet lagrades inte.';
+$a->strings['Item couldn\'t be fetched.'] = 'Objektet kunde inte hämtas.';
+$a->strings['Item not found.'] = 'Hittar inte.';
+$a->strings['No valid account found.'] = 'Inget giltigt konto hittades.';
 $a->strings['Password reset request issued. Check your email.'] = 'Nytt lösenord har begärts. Kolla din mail.';
 $a->strings['Password reset requested at %s'] = 'Nytt lösenord på %s har begärts';
 $a->strings['Request could not be verified. (You may have previously submitted it.) Password reset failed.'] = 'Begäran kunde inte verifieras. (Du kanske redan skickat den?) Det gick inte att byta lösenord.';
+$a->strings['Request has expired, please make a new one.'] = 'Förfrågningen har slutat gälla, vänligen gör en ny.';
 $a->strings['Forgot your Password?'] = 'Glömt lösenordet?';
 $a->strings['Enter your email address and submit to have your password reset. Then check your email for further instructions.'] = 'Ange din e-postadress för att få ett nytt lösenord. Du kommer att få ett meddelande med vidare instruktioner via e-post.';
 $a->strings['Nickname or Email: '] = 'Användarnamn eller e-post:';
@@ -247,168 +115,200 @@ $a->strings['Your new password is'] = 'Det nya lösenordet är';
 $a->strings['Save or copy your new password - and then'] = 'Spara eller kopiera lösenordet och';
 $a->strings['click here to login'] = 'klicka här för att logga in';
 $a->strings['Your password may be changed from the <em>Settings</em> page after successful login.'] = 'När du loggat in kan du byta lösenord på sidan <em>Inställningar</em>.';
-$a->strings['Manage Identities and/or Pages'] = 'Hantera identiteter eller sidor';
-$a->strings['Select an identity to manage: '] = 'Välj vilken identitet du vill hantera: ';
-$a->strings['first'] = 'första';
-$a->strings['next'] = 'nästa';
+$a->strings['Your password has been reset.'] = 'Ditt lösenord har återställts.';
+$a->strings['Your password has been changed at %s'] = 'Ditt lösenord ändrades den %s';
+$a->strings['No matches'] = 'Ingen träff';
 $a->strings['Profile Match'] = 'Matcha profiler';
 $a->strings['New Message'] = 'Nytt meddelande';
 $a->strings['No recipient selected.'] = 'Ingen mottagare har valts.';
 $a->strings['Unable to locate contact information.'] = 'Det gick inte att hitta kontaktuppgifterna.';
 $a->strings['Message could not be sent.'] = 'Det gick inte att skicka meddelandet.';
-$a->strings['Message sent.'] = 'Meddelandet har skickats.';
+$a->strings['Message collection failure.'] = 'Insamling av meddelanden misslyckades.';
 $a->strings['Discard'] = 'Ta bort';
 $a->strings['Messages'] = 'Meddelanden';
-$a->strings['Message deleted.'] = 'Meddelandet togs bort.';
-$a->strings['Conversation removed.'] = 'Konversationen togs bort.';
+$a->strings['Conversation not found.'] = 'Konversationen hittades inte.';
+$a->strings['Message was not deleted.'] = 'Meddelandet togs inte bort.';
+$a->strings['Conversation was not removed.'] = 'Konversationen togs inte bort.';
 $a->strings['Please enter a link URL:'] = 'Ange en länk (URL):';
 $a->strings['Send Private Message'] = 'Skicka personligt meddelande';
 $a->strings['To:'] = 'Till:';
 $a->strings['Subject:'] = 'Rubrik:';
+$a->strings['Your message:'] = 'Meddelande:';
 $a->strings['No messages.'] = 'Inga meddelanden.';
 $a->strings['Message not available.'] = 'Meddelandet är inte tillgängligt.';
 $a->strings['Delete message'] = 'Ta bort meddelande';
 $a->strings['D, d M Y - g:i A'] = 'D, d M Y - g:i A';
 $a->strings['Delete conversation'] = 'Ta bort konversation';
+$a->strings['No secure communications available. You <strong>may</strong> be able to respond from the sender\'s profile page.'] = 'Inga säkra kommunikationer tillgängliga. Du </strong>kanske</strong>kan ha möjlighet att svara från sändarens profilsida.';
 $a->strings['Send Reply'] = 'Skicka svar';
-$a->strings['No such group'] = 'Gruppen finns inte';
-$a->strings['Profile'] = 'Profil';
-$a->strings['Upload Profile Photo'] = 'Ladda upp profilbild';
-$a->strings['Groups'] = 'Grupper';
-$a->strings['Invalid request identifier.'] = 'Invalid request identifier.';
-$a->strings['Ignore'] = 'Ignorera';
-$a->strings['Notifications'] = 'Aviseringar';
-$a->strings['Show Ignored Requests'] = 'Visa förfrågningar du ignorerat';
-$a->strings['Hide Ignored Requests'] = 'Dölj förfrågningar du ignorerat';
-$a->strings['Claims to be known to you: '] = 'Hävdar att du vet vem han/hon är: ';
-$a->strings['yes'] = 'ja';
-$a->strings['no'] = 'nej';
-$a->strings['Friend'] = 'Vän';
-$a->strings['Post successful.'] = 'Inlagt.';
-$a->strings['Login failed.'] = 'Inloggningen misslyckades.';
+$a->strings['Unknown sender - %s'] = 'Okänd sändare - %s';
+$a->strings['You and %s'] = 'Du och %s';
+$a->strings['%s and You'] = '%s och Du';
+$a->strings['%d message'] = [
+       0 => '%d meddelande',
+       1 => '%d meddelanden',
+];
+$a->strings['Personal Notes'] = 'Personliga anteckningar';
+$a->strings['Personal notes are visible only by yourself.'] = 'Personliga anteckningar kan endast ses av dig själv.';
+$a->strings['Subscribing to contacts'] = 'Prenumererar på kontakter';
+$a->strings['Couldn\'t fetch information for contact.'] = 'Kunde inte hämta information för kontakten.';
+$a->strings['Couldn\'t fetch friends for contact.'] = 'Kunde inte hämta vänner för kontakt.';
+$a->strings['Couldn\'t fetch following contacts.'] = 'Kunde inte hämta följande kontakter.';
+$a->strings['Unsupported network'] = 'Nätverket stöds inte';
+$a->strings['Done'] = 'Färdig';
+$a->strings['success'] = 'lyckades';
+$a->strings['failed'] = 'misslyckades';
+$a->strings['ignored'] = 'ignorerades';
+$a->strings['Keep this window open until done.'] = 'Håll det här fönstret öppet tills du är klar.';
 $a->strings['Photo Albums'] = 'Fotoalbum';
 $a->strings['Recent Photos'] = 'Nyligen tillagda bilder';
 $a->strings['Upload New Photos'] = 'Ladda upp bilder';
+$a->strings['everybody'] = 'alla';
 $a->strings['Contact information unavailable'] = 'Kommer inte åt kontaktuppgifter.';
 $a->strings['Album not found.'] = 'Albumet finns inte.';
-$a->strings['Delete Album'] = 'Ta bort album';
-$a->strings['Delete Photo'] = 'Ta bort bild';
+$a->strings['Album successfully deleted'] = 'Borttagningen av albumet lyckades';
+$a->strings['Album was empty.'] = 'Albumet var tomt.';
+$a->strings['Failed to delete the photo.'] = 'Borttagningen av fotot misslyckades.';
+$a->strings['a photo'] = 'ett foto';
+$a->strings['%1$s was tagged in %2$s by %3$s'] = '%1$s taggades i %2$s av %3$s';
+$a->strings['Image upload didn\'t complete, please try again'] = 'Uppladdningen av bilden slutfördes inte, vänligen försök igen.';
+$a->strings['Image file is missing'] = 'Bildfilen saknas';
+$a->strings['Server can\'t accept new file upload at this time, please contact your administrator'] = 'Servern kan just nu inte acceptera uppladdning av en ny fil, vänligen kontakta din administratör';
+$a->strings['Image file is empty.'] = 'Bildfilen är tom.';
 $a->strings['Unable to process image.'] = 'Det gick inte att behandla bilden.';
 $a->strings['Image upload failed.'] = 'Fel vid bilduppladdning.';
 $a->strings['No photos selected'] = 'Inga bilder har valts';
+$a->strings['Access to this item is restricted.'] = 'Åtkomst till det här objekt är begränsat.';
 $a->strings['Upload Photos'] = 'Ladda upp bilder';
 $a->strings['New album name: '] = 'Nytt album med namn: ';
+$a->strings['or select existing album:'] = 'eller välj befintligt album:';
+$a->strings['Do not show a status post for this upload'] = 'Visa inte ett status-inlägg för den här uppladdningen';
+$a->strings['Do you really want to delete this photo album and all its photos?'] = 'Vill du verkligen ta bort det här fotoalbumet och alla dess foton?';
+$a->strings['Delete Album'] = 'Ta bort album';
 $a->strings['Edit Album'] = 'Redigera album';
+$a->strings['Drop Album'] = 'Släpp albumet';
+$a->strings['Show Newest First'] = 'Visa nyaste först';
+$a->strings['Show Oldest First'] = 'Visa äldsta först';
 $a->strings['View Photo'] = 'Visa bild';
+$a->strings['Permission denied. Access to this item may be restricted.'] = 'Tillståndet nekades. Åtkomst till det här objektet kan vara begränsad.';
 $a->strings['Photo not available'] = 'Bilden är inte tillgänglig';
+$a->strings['Do you really want to delete this photo?'] = 'Vill du verkligen ta bort det här fotot?';
+$a->strings['Delete Photo'] = 'Ta bort bild';
+$a->strings['View photo'] = 'Visa fotot';
 $a->strings['Edit photo'] = 'Hantera bild';
-$a->strings['Private Message'] = 'Personligt meddelande';
+$a->strings['Delete photo'] = 'Ta bort fotot';
+$a->strings['Use as profile photo'] = 'Använd som ett profilfoto';
+$a->strings['Private Photo'] = 'Privat foto';
 $a->strings['View Full Size'] = 'Visa fullstor';
 $a->strings['Tags: '] = 'Taggar: ';
+$a->strings['[Select tags to remove]'] = '[Välj taggar att ta bort]';
 $a->strings['New album name'] = 'Nytt album med namn';
 $a->strings['Caption'] = 'Caption';
 $a->strings['Add a Tag'] = 'Lägg till tagg';
 $a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Exempel: @adam, @Anna_Andersson, @johan@exempel.com, #Stockholm, #camping';
-$a->strings['I like this (toggle)'] = 'Jag gillar det här (växla)';
-$a->strings['I don\'t like this (toggle)'] = 'Jag ogillar det här (växla)';
+$a->strings['Do not rotate'] = 'Rotera inte';
+$a->strings['Rotate CW (right)'] = 'Rotera medurs (höger)';
+$a->strings['Rotate CCW (left)'] = 'Rotera Moturs (vänster)';
 $a->strings['This is you'] = 'Det här är du';
 $a->strings['Comment'] = 'Kommentera';
+$a->strings['Select'] = 'Välj';
+$a->strings['Delete'] = 'Ta bort';
+$a->strings['Like'] = 'Gilla';
+$a->strings['I like this (toggle)'] = 'Jag gillar det här (växla)';
+$a->strings['Dislike'] = 'Ogilla';
+$a->strings['I don\'t like this (toggle)'] = 'Jag ogillar det här (växla)';
+$a->strings['Map'] = 'Karta';
 $a->strings['View Album'] = 'Titta i album';
-$a->strings['Profile deleted.'] = 'Profilen har tagits bort.';
-$a->strings['Profile-'] = 'Profil-';
-$a->strings['New profile created.'] = 'En ny profil har skapats.';
-$a->strings['Profile unavailable to clone.'] = 'Det gick inte att klona profilen.';
-$a->strings['Profile Name is required.'] = 'Profilen måste ha ett namn.';
-$a->strings['Profile updated.'] = 'Profilen har uppdaterats.';
-$a->strings['Edit Profile Details'] = 'Ändra profilen';
-$a->strings['View this profile'] = 'Titta på profilen';
-$a->strings['Edit visibility'] = 'Ända vilka som ska kunna se';
-$a->strings['Create a new profile using these settings'] = 'Skapa en ny profil med dessa inställningar';
-$a->strings['Clone this profile'] = 'Kopiera profil';
-$a->strings['Delete this profile'] = 'Ta bort profil';
-$a->strings['Miscellaneous'] = 'Blandat';
-$a->strings['Your Gender:'] = 'Kön:';
-$a->strings['<span class="heart">&hearts;</span> Marital Status:'] = '<span class="heart">&hearts;</span> Civilstånd:';
-$a->strings['Sexual Preference:'] = 'Sexualitet';
-$a->strings['Example: fishing photography software'] = 'Exempel: fiske fotografering programmering';
-$a->strings['Profile Name:'] = 'Profilens namn:';
-$a->strings['This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.'] = 'Det här är din <strong>offentliga</strong> profil.<br />Den <strong>kan vara synlig för vem som helst</strong> på internet.';
-$a->strings['Your Full Name:'] = 'Fullständigt namn:';
-$a->strings['Title/Description:'] = 'Titel/Beskrivning:';
-$a->strings['Street Address:'] = 'Gatuadress:';
-$a->strings['Locality/City:'] = 'Plats/Stad:';
-$a->strings['Region/State:'] = 'Region:';
-$a->strings['Postal/Zip Code:'] = 'Postnummer:';
-$a->strings['Country:'] = 'Land:';
-$a->strings['Age: '] = 'Ålder: ';
-$a->strings['Who: (if applicable)'] = 'Vem: (om tillämpligt)';
-$a->strings['Examples: cathy123, Cathy Williams, cathy@example.com'] = 'Exempel: kalle123, Johanna Johansson, pelle@exempel.com';
-$a->strings['Tell us about yourself...'] = 'Beskriv dig själv...';
-$a->strings['Homepage URL:'] = 'Hemsida: (URL)';
-$a->strings['Political Views:'] = 'Politisk åskådning:';
-$a->strings['Religious Views:'] = 'Religion:';
-$a->strings['Public Keywords:'] = 'Offentliga nyckelord:';
-$a->strings['(Used for suggesting potential friends, can be seen by others)'] = '(Obs, synliga för andra. Används för att föreslå potentiella vänner.)';
-$a->strings['Private Keywords:'] = 'Privata nyckelord:';
-$a->strings['(Used for searching profiles, never shown to others)'] = '(Obs, kan ge sökträffar vid sökning av profiler. Visas annars inte för andra.)';
-$a->strings['Musical interests'] = 'Musik';
-$a->strings['Books, literature'] = 'Böcker, litteratur';
-$a->strings['Television'] = 'TV';
-$a->strings['Film/dance/culture/entertainment'] = 'Film/Dans/Kultur/Nöje';
-$a->strings['Hobbies/Interests'] = 'Hobbys/Intressen';
-$a->strings['Love/romance'] = 'Kärlek/Romantik';
-$a->strings['Work/employment'] = 'Arbete';
-$a->strings['School/education'] = 'Skola/Utbildning';
-$a->strings['Contact information and Social Networks'] = 'Kontaktuppgifter och sociala nätverk';
-$a->strings['Profile Image'] = 'Profilbild';
-$a->strings['Change profile photo'] = 'Byt profilbild';
-$a->strings['Create New Profile'] = 'Skapa ny profil';
-$a->strings['Image uploaded but image cropping failed.'] = 'Bilden laddades upp men det blev fel när den skulle beskäras.';
-$a->strings['Unable to process image'] = 'Det gick inte att behandla bilden';
-$a->strings['Upload File:'] = 'Ladda upp fil:';
-$a->strings['or'] = 'eller';
-$a->strings['select a photo from your photo albums'] = 'välj en bild från ett album';
-$a->strings['Crop Image'] = 'Beskär bild';
-$a->strings['Please adjust the image cropping for optimum viewing.'] = 'Välj hur bilden ska beskäras för att bli så bra som möjligt.';
-$a->strings['Done Editing'] = 'Spara';
-$a->strings['Image uploaded successfully.'] = 'Bilden har laddats upp.';
-$a->strings['Invalid profile identifier.'] = 'Ogiltigt profil-ID.';
-$a->strings['Profile Visibility Editor'] = 'Ända vilka som ska kunna se profil';
-$a->strings['Visible To'] = 'Synlig för';
-$a->strings['All Contacts (with secure profile access)'] = 'Alla kontakter (med säker tillgång till din profil)';
-$a->strings['Account approved.'] = 'Kontot har godkänts.';
-$a->strings['Please login.'] = 'Logga in.';
+$a->strings['{0} wants to be your friend'] = '{0} vill vara din vän';
+$a->strings['{0} requested registration'] = '{0} bad om registrering';
+$a->strings['{0} and %d others requested registration'] = '{0} och %d andra bad om registrering';
+$a->strings['Bad Request.'] = 'Dålig begäran.';
+$a->strings['Contact not found.'] = 'Kontakten hittades inte.';
+$a->strings['[Friendica System Notify]'] = '[System-avisering för Friendica]';
+$a->strings['User deleted their account'] = 'Användaren tog bort sitt konto';
+$a->strings['The user id is %d'] = 'ID för användaren är %d';
 $a->strings['Remove My Account'] = 'Ta bort mitt konto';
 $a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Detta kommer att ta bort kontot helt och hållet. Efter att det är gjort går det inte att återställa.';
 $a->strings['Please enter your password for verification:'] = 'Ange lösenordet igen för säkerhets skull:';
-$a->strings['Search'] = 'Sök';
-$a->strings['Profiles'] = 'Profiler';
+$a->strings['Error'] = [
+       0 => 'Fel',
+       1 => 'Fel',
+];
+$a->strings['Passwords do not match.'] = 'Lösenorden matchar inte.';
 $a->strings['Password update failed. Please try again.'] = 'Det blev fel när lösenordet skulle ändras. Försök igen.';
 $a->strings['Password changed.'] = 'Lösenordet har ändrats.';
-$a->strings[' Please use a shorter name.'] = ' Använd ett kortare namn.';
-$a->strings[' Name too short.'] = ' Namnet är för kort.';
-$a->strings['Settings updated.'] = 'Inställningarna har uppdaterats.';
-$a->strings['Edit'] = 'Ändra';
-$a->strings['Sunday'] = 'söndag';
-$a->strings['Monday'] = 'måndag';
-$a->strings['Display Theme:'] = 'Tema/utseende:';
-$a->strings['Profile is <strong>not published</strong>.'] = 'Profilen är <strong>inte publicerad</strong>.';
+$a->strings['Password unchanged.'] = 'Lösenordet oändrat.';
+$a->strings['Please use a shorter name.'] = 'Vänligen ange ett kortare namn.';
+$a->strings['Name too short.'] = 'Namnet för kort.';
+$a->strings['Wrong Password.'] = 'Fel lösenord.';
+$a->strings['Invalid email.'] = 'Ogiltig e-postadress.';
+$a->strings['Cannot change to that email.'] = 'Kan inte byta till den e-postadressen.';
+$a->strings['Settings were not updated.'] = 'Inställningarna uppdaterades inte.';
+$a->strings['Connected Apps'] = 'Anslutna appar';
+$a->strings['Name'] = 'Namn';
+$a->strings['Home Page'] = 'Hemsida';
+$a->strings['Created'] = 'Skapades';
+$a->strings['Remove authorization'] = 'Ta bort autentisering';
+$a->strings['Save Settings'] = 'Spara inställningar';
+$a->strings['Additional Features'] = 'Ytterligare funktioner';
+$a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
+$a->strings['enabled'] = 'aktiverad';
+$a->strings['disabled'] = 'inaktiverad';
+$a->strings['OStatus (GNU Social)'] = 'OStatus (GNU Social)';
+$a->strings['Email access is disabled on this site.'] = 'E-poståtkomst är inaktiverat på den här sidan.';
+$a->strings['None'] = 'Ingen';
+$a->strings['Social Networks'] = 'Sociala nätverk';
+$a->strings['General Social Media Settings'] = 'Generella inställningar för sociala medier';
+$a->strings['Enable Content Warning'] = 'Aktivera innehållsvarning';
+$a->strings['Enable intelligent shortening'] = 'Aktivera intelligent förkortning';
+$a->strings['Repair OStatus subscriptions'] = 'Reparera OStatus-prenumerationer';
+$a->strings['IMAP server name:'] = 'Namn på IMAP-server:';
+$a->strings['IMAP port:'] = 'Port för IMAP:';
+$a->strings['Security:'] = 'Säkerhet:';
+$a->strings['Email login name:'] = 'Inloggningsnamn för e-post:';
+$a->strings['Email password:'] = 'Lösenord för e-post:';
+$a->strings['Reply-to address:'] = 'Svara till-adress:';
+$a->strings['Send public posts to all email contacts:'] = 'Skicka publika inlägg till alla e-postkontakter:';
+$a->strings['Action after import:'] = 'Åtgärd efter importering:';
+$a->strings['Mark as seen'] = 'Markera som läst';
+$a->strings['Move to folder'] = 'Flytta till mapp';
+$a->strings['Move to folder:'] = 'Flytta till mapp:';
+$a->strings['Unable to find your profile. Please contact your admin.'] = 'Kunde inte hitta din profil. Vänligen kontakta din admin.';
+$a->strings['Account Types'] = 'Typer av konton';
+$a->strings['Personal Page'] = 'Personlig sida';
+$a->strings['Account for a personal profile.'] = 'Konto för personlig profil.';
+$a->strings['Organisation Page'] = 'Sida för organisation';
+$a->strings['Normal Account Page'] = 'Normal konto-sida';
+$a->strings['Public Forum'] = 'Publikt forum';
+$a->strings['Automatically approves all contact requests.'] = 'Godkänner automatiskt alla kontaktförfrågningar.';
+$a->strings['Private Forum [Experimental]'] = 'Privat forum [Experimentiell]';
+$a->strings['OpenID:'] = 'OpenID:';
+$a->strings['(Optional) Allow this OpenID to login to this account.'] = '(Valfritt) Tillåt detta OpenID för att logga in till det här kontot.';
 $a->strings['Account Settings'] = 'Kontoinställningar';
 $a->strings['Password Settings'] = 'Lösenordsinställningar';
 $a->strings['New Password:'] = 'Nytt lösenord';
 $a->strings['Confirm:'] = 'Bekräfta (repetera):';
 $a->strings['Leave password fields blank unless changing'] = 'Lämna fältet tomt om du inte vill byta lösenord';
+$a->strings['Current Password:'] = 'Nuvarande lösenord:';
+$a->strings['Your current password to confirm the changes'] = 'Ditt nuvarande lösenord för att bekräfta ändringar';
+$a->strings['Password:'] = 'Lösenord:';
 $a->strings['Basic Settings'] = 'Grundläggande inställningar';
 $a->strings['Full Name:'] = 'Fullständigt namn:';
 $a->strings['Email Address:'] = 'E-postadress:';
 $a->strings['Your Timezone:'] = 'Tidszon:';
+$a->strings['Your Language:'] = 'Ditt språk:';
 $a->strings['Default Post Location:'] = 'Default Post Location:';
 $a->strings['Use Browser Location:'] = 'Använd webbläsarens positionering:';
 $a->strings['Security and Privacy Settings'] = 'Inställningar för säkerhet och sekretess';
 $a->strings['Maximum Friend Requests/Day:'] = 'Maximalt antal kontaktförfrågningar per dygn:';
 $a->strings['(to prevent spam abuse)'] = '(för att motverka spam)';
+$a->strings['Allow your profile to be searchable globally?'] = 'Tillåta att din profil ska vara sökbar globalt?';
+$a->strings['Hide your profile details from anonymous viewers?'] = 'Göm dina profildetaljer från anonyma tittare?';
+$a->strings['Allow friends to post to your profile page?'] = 'Tillåta vänner att göra inlägg på din profilsida?';
+$a->strings['Allow friends to tag your posts?'] = 'Tillåt vänner att tagga dina inlägg?';
+$a->strings['Your contacts can add additional tags to your posts.'] = 'Dina kontakter kan lägga till ytterligare taggar till dina inlägg.';
+$a->strings['Permit unknown people to send you private mail?'] = 'Ge okända personer tillstånd att skicka privata mail till dig?';
 $a->strings['Default Post Permissions'] = 'Standardåtkomst för inlägg';
-$a->strings['(click to open/close)'] = '(klicka för att öppna/stänga)';
 $a->strings['Notification Settings'] = 'Aviseringsinställningar';
 $a->strings['Send a notification email when:'] = 'Skicka ett aviseringsmail när:';
 $a->strings['You receive an introduction'] = 'En kontaktförfrågan anländer';
@@ -416,92 +316,321 @@ $a->strings['Your introductions are confirmed'] = 'Dina förfrågningar godkänn
 $a->strings['Someone writes on your profile wall'] = 'Någon gör inlägg på din profilsida';
 $a->strings['Someone writes a followup comment'] = 'Någon gör ett inlägg i samma tråd som du';
 $a->strings['You receive a private message'] = 'Du får personliga meddelanden';
+$a->strings['You receive a friend suggestion'] = 'Du tar emot ett vän-förslag';
+$a->strings['You are tagged in a post'] = 'Du är taggad i ett inlägg';
+$a->strings['Create a desktop notification when:'] = 'Skapa en skrivbordsavisering när:';
+$a->strings['Someone liked your content'] = 'Någon gillade ditt innehåll';
+$a->strings['Someone shared your content'] = 'Någon delade ditt innehåll';
+$a->strings['Activate desktop notifications'] = 'Aktivera skrivbordsaviseringar';
+$a->strings['Show detailled notifications'] = 'Visa detaljerade aviseringar';
+$a->strings['Import Contacts'] = 'Importera kontakter';
+$a->strings['Upload File'] = 'Ladda upp fil';
+$a->strings['Relocate'] = 'Omlokalisera';
+$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.'] = 'Om du har flyttat den här profilen från en annan server och några av dina kontakter inte får dina uppdateringar, försök att trycka på den här knappen.';
+$a->strings['Friend Suggestions'] = 'Vän-förslag';
+$a->strings['photo'] = 'foto';
+$a->strings['status'] = 'status';
+$a->strings['%1$s tagged %2$s\'s %3$s with %4$s'] = '%1$s taggade %2$ss %3$s med %4$s';
 $a->strings['Remove Item Tag'] = 'Ta bort tagg';
 $a->strings['Select a tag to remove: '] = 'Välj vilken tagg som ska tas bort: ';
-$a->strings['No contacts.'] = 'Inga kontakter.';
-$a->strings['Contacts'] = 'Kontakter';
+$a->strings['Remove'] = 'Ta bort';
+$a->strings['Import'] = 'Importera';
+$a->strings['Move account'] = 'Flytta konto';
+$a->strings['You can import an account from another Friendica server.'] = 'Du kan importera ett konto från en annan Friendica-server.';
+$a->strings['To export your account, go to "Settings->Export your personal data" and select "Export account"'] = 'För att exportera ditt konto, gå till "Inställningar->Exportera din personliga data" och välj "Exportera konto"';
+$a->strings['You aren\'t following this contact.'] = 'Du följer inte den här kontakten.';
+$a->strings['Unfollowing is currently not supported by your network.'] = 'Avföljning stöds för närvarande inte av ditt nätverk.';
+$a->strings['Disconnect/Unfollow'] = 'Koppla ur/Avfölj';
+$a->strings['Contact was successfully unfollowed'] = 'Avföljningen av kontakten lyckades';
+$a->strings['Invalid request.'] = 'Ogiltig förfrågning.';
+$a->strings['Or - did you try to upload an empty file?'] = 'Eller - provade du att ladda upp en tom fil?';
+$a->strings['File upload failed.'] = 'Uppladdning av filen misslyckades.';
 $a->strings['Wall Photos'] = 'Loggbilder';
+$a->strings['Unable to check your home location.'] = 'Kunde inte kontrollera platsen för ditt hem.';
+$a->strings['No recipient.'] = 'Ingen mottagare.';
+$a->strings['Apologies but the website is unavailable at the moment.'] = 'Ursäkta, men hemsidan är inte tillgänglig för tillfället. ';
 $a->strings['Delete this item?'] = 'Ta bort?';
-$a->strings['Non-specific'] = 'Oklart';
-$a->strings['Other'] = 'Annat';
-$a->strings['Males'] = 'Män';
-$a->strings['Females'] = 'Kvinnor';
-$a->strings['Gay'] = 'Bög';
-$a->strings['Lesbian'] = 'Lesbisk';
-$a->strings['No Preference'] = 'No Preference';
-$a->strings['Bisexual'] = 'Bisexuell';
-$a->strings['Autosexual'] = 'Autosexual';
-$a->strings['Abstinent'] = 'Abstinent';
-$a->strings['Virgin'] = 'Oskuld';
-$a->strings['Deviant'] = 'Avvikande';
-$a->strings['Fetish'] = 'Fetisch';
-$a->strings['Oodles'] = 'Massor';
-$a->strings['Nonsexual'] = 'Asexuell';
-$a->strings['Single'] = 'Singel';
-$a->strings['Lonely'] = 'Ensam';
-$a->strings['Available'] = 'Tillgänglig';
-$a->strings['Unavailable'] = 'Upptagen';
-$a->strings['Dating'] = 'Dejtar';
-$a->strings['Unfaithful'] = 'Otrogen';
-$a->strings['Sex Addict'] = 'Sexmissbrukare';
-$a->strings['Friends'] = 'Vänner';
-$a->strings['Friends/Benefits'] = 'Friends/Benefits';
-$a->strings['Casual'] = 'Casual';
-$a->strings['Engaged'] = 'Förlovad';
-$a->strings['Married'] = 'Gift';
-$a->strings['Partners'] = 'I partnerskap';
-$a->strings['Cohabiting'] = 'Cohabiting';
-$a->strings['Happy'] = 'Nöjd';
-$a->strings['Swinger'] = 'Swinger';
-$a->strings['Betrayed'] = 'Bedragen';
-$a->strings['Separated'] = 'Separerat';
-$a->strings['Unstable'] = 'Instabilt';
-$a->strings['Divorced'] = 'Skiljd';
-$a->strings['Widowed'] = 'Änka/änkling';
-$a->strings['Uncertain'] = 'Oklart';
-$a->strings['Don\'t care'] = 'Bryr mig inte';
-$a->strings['Ask me'] = 'Fråga mig';
+$a->strings['toggle mobile'] = 'växla mobil';
+$a->strings['Page not found.'] = 'Sidan hittades inte.';
+$a->strings['You must be logged in to use addons. '] = 'Du måste vara inloggad för att använda insticksprogram.';
+$a->strings['All contacts'] = 'Alla kontakter';
+$a->strings['Followers'] = 'Följare';
+$a->strings['Following'] = 'Följer';
+$a->strings['Mutual friends'] = 'Gemensamma vänner';
+$a->strings['Common'] = 'Vanlig';
+$a->strings['Addon not found'] = 'Insticksprogrammet hittades inte';
+$a->strings['Addon already enabled'] = 'Insticksprogrammet är redan aktiverat';
+$a->strings['Addon already disabled'] = 'Insticksprogrammet är redan inaktiverat';
+$a->strings['Done.'] = 'Färdig.';
+$a->strings['Enter user nickname: '] = 'Ange smeknamn för användaren:';
+$a->strings['Enter new password: '] = 'Ange nytt lösenord:';
+$a->strings['Enter user name: '] = 'Ange användarnamn:';
+$a->strings['Enter user email address: '] = 'Ange användarens e-postadress:';
+$a->strings['Enter a language (optional): '] = 'Ange ett språk (valfritt):';
+$a->strings['User has already been marked for deletion.'] = 'Användaren har redan blivit markerad för borttagning.';
+$a->strings['Type "yes" to delete %s'] = 'Skriv "ja" för att ta bort %s';
+$a->strings['Deletion aborted.'] = 'Borttagningen avbröts.';
+$a->strings['Enter category: '] = 'Ange kategori:';
+$a->strings['Enter key: '] = 'Ange nyckel:';
+$a->strings['Enter value: '] = 'Ange värde:';
+$a->strings['newer'] = 'nyare';
+$a->strings['older'] = 'äldre';
+$a->strings['Frequently'] = 'Ofta';
+$a->strings['Hourly'] = 'Varje timme';
+$a->strings['Twice daily'] = 'Två gånger dagligen';
+$a->strings['Daily'] = 'Dagligen';
+$a->strings['Weekly'] = 'Varje vecka';
+$a->strings['Monthly'] = 'Varje månad';
+$a->strings['DFRN'] = 'DFRN';
+$a->strings['OStatus'] = 'OStatus';
+$a->strings['RSS/Atom'] = 'RSS/Atom';
+$a->strings['Email'] = 'E-postadress';
+$a->strings['Diaspora'] = 'Diaspora';
+$a->strings['Zot!'] = 'Zot!';
+$a->strings['LinkedIn'] = 'LinkedIn';
+$a->strings['XMPP/IM'] = 'XMPP/IM';
+$a->strings['MySpace'] = 'MySpace';
+$a->strings['Google+'] = 'Google+';
+$a->strings['pump.io'] = 'pump.io';
+$a->strings['Twitter'] = 'Twitter';
+$a->strings['Discourse'] = 'Discourse';
+$a->strings['ActivityPub'] = 'ActivityPub';
+$a->strings['pnut'] = 'pnut';
+$a->strings['%s likes this.'] = '%s gillar det här.';
+$a->strings['%s doesn\'t like this.'] = '%s ogillar det här.';
+$a->strings['%s attends.'] = '%s deltar.';
+$a->strings['%s doesn\'t attend.'] = '%s deltar inte.';
+$a->strings['%s attends maybe.'] = '%s deltar kanske.';
+$a->strings['and'] = 'och';
+$a->strings['and %d other people'] = 'och %d andra';
+$a->strings['<span  %1$s>%2$d people</span> like this'] = '<span  %1$s>%2$d personer</span> gillar det här';
+$a->strings['%s like this.'] = '%s gillar det här.';
+$a->strings['<span  %1$s>%2$d people</span> don\'t like this'] = '<span  %1$s>%2$d personer</span> ogillar det här';
+$a->strings['%s don\'t like this.'] = '%s ogillar det här.';
+$a->strings['<span  %1$s>%2$d people</span> attend'] = '<span  %1$s>%2$d personer</span> deltar';
+$a->strings['%s attend.'] = '%s deltar.';
+$a->strings['<span  %1$s>%2$d people</span> don\'t attend'] = '<span  %1$s>%2$d personer</span> deltar inte';
+$a->strings['%s don\'t attend.'] = '%s deltar inte.';
+$a->strings['<span  %1$s>%2$d people</span> attend maybe'] = '<span  %1$s>%2$dpersoner</span> deltar kanske';
+$a->strings['%s attend maybe.'] = '%s deltar kanske.';
+$a->strings['Visible to <strong>everybody</strong>'] = 'Synlig för <strong>alla</strong>';
+$a->strings['Please enter a image/video/audio/webpage URL:'] = 'Vänligen fyll i URL till en bild/video/ljudklipp/hemsida:';
+$a->strings['Tag term:'] = 'Märkning/tagg:';
+$a->strings['Save to Folder:'] = 'Spara till mapp:';
+$a->strings['Where are you right now?'] = 'Var är du just nu?';
+$a->strings['Delete item(s)?'] = 'Ta bort?';
+$a->strings['New Post'] = 'Nytt inlägg';
+$a->strings['Share'] = 'Publicera';
+$a->strings['Image'] = 'Bild';
+$a->strings['Video'] = 'Video';
+$a->strings['Scheduled at'] = 'Schemalades vid';
+$a->strings['View %s\'s profile @ %s'] = 'Visa profilen som tillhör %s @ %s';
+$a->strings['Categories:'] = 'Kategorier:';
+$a->strings['Filed under:'] = 'Sparad under:';
+$a->strings['%s from %s'] = '%s från %s';
+$a->strings['View in context'] = 'Visa i sitt sammanhang';
+$a->strings['remove'] = 'ta bort';
+$a->strings['Delete Selected Items'] = 'Ta bort valda föremål';
+$a->strings['You are following %s.'] = 'Du följer %s.';
+$a->strings['Tagged'] = 'Taggad';
+$a->strings['Reshared'] = 'Delad igen';
+$a->strings['Reshared by %s <%s>'] = 'Delad igen av %s <%s>';
+$a->strings['%s is participating in this thread.'] = '%s deltar i den här tråden.';
+$a->strings['Stored'] = 'Lagrad';
+$a->strings['Global'] = 'Global';
+$a->strings['Relayed'] = 'Fördröjd';
+$a->strings['Relayed by %s <%s>'] = 'Fördröjdes av %s <%s>';
+$a->strings['Fetched'] = 'Hämtad';
+$a->strings['Fetched because of %s <%s>'] = 'Hämtades på grund av %s <%s>';
+$a->strings['General Features'] = 'Generella funktioner';
+$a->strings['Auto-mention Forums'] = 'Nämn forumen automatiskt';
+$a->strings['Add categories to your posts'] = 'Lägg till kategorier till dina inlägg';
+$a->strings['Advanced Profile Settings'] = 'Avancerade profil-inställningar';
+$a->strings['List Forums'] = 'Lista forum';
+$a->strings['Tag Cloud'] = 'Taggmoln';
+$a->strings['Display Membership Date'] = 'Visa datum för medlemskap';
+$a->strings['Display membership date in profile'] = 'Visa datum för medlemskapet i profilen';
+$a->strings['Forums'] = 'Forum';
+$a->strings['External link to forum'] = 'Extern länk till forum';
+$a->strings['show less'] = 'visa mindre';
+$a->strings['show more'] = 'visa mer';
+$a->strings['%1$s poked %2$s'] = '%1$s puffade %2$s';
+$a->strings['event'] = 'händelse';
+$a->strings['Follow Thread'] = 'Följ tråd';
+$a->strings['View Status'] = 'Visa status';
+$a->strings['View Profile'] = 'Visa profil';
+$a->strings['View Photos'] = 'Visa foton';
+$a->strings['Network Posts'] = 'Nätverksinlägg';
+$a->strings['View Contact'] = 'Visa kontakt';
+$a->strings['Send PM'] = 'Skicka privat meddelande';
+$a->strings['Block'] = 'Blockera';
+$a->strings['Ignore'] = 'Ignorera';
+$a->strings['Languages'] = 'Språk';
+$a->strings['Poke'] = 'Peta';
+$a->strings['Nothing new here'] = 'Inget nytt här';
+$a->strings['Go back'] = 'Gå tillbaka';
+$a->strings['Clear notifications'] = 'Rensa aviseringar';
+$a->strings['@name, !forum, #tags, content'] = '@namn, !forum, #taggar, innehåll';
 $a->strings['Logout'] = 'Logga ut';
+$a->strings['End this session'] = 'Avsluta den här sessionen';
+$a->strings['Login'] = 'Logga in';
+$a->strings['Sign in'] = 'Logga in';
 $a->strings['Status'] = 'Status';
+$a->strings['Your posts and conversations'] = 'Dina inlägg och konversationer';
+$a->strings['Profile'] = 'Profil';
+$a->strings['Your profile page'] = 'Din profil-sida';
+$a->strings['Your photos'] = 'Dina foton';
+$a->strings['Media'] = 'Media';
+$a->strings['Your events'] = 'Dina evenemang';
+$a->strings['Personal notes'] = 'Personliga anteckningar';
+$a->strings['Your personal notes'] = 'Dina personliga anteckningar';
 $a->strings['Home'] = 'Hem';
 $a->strings['Register'] = 'Registrera';
+$a->strings['Create an account'] = 'Skapa ett konto';
+$a->strings['Help'] = 'Hjälp';
+$a->strings['Help and documentation'] = 'Hjälp och dokumentation';
 $a->strings['Apps'] = 'Apps';
+$a->strings['Search'] = 'Sök';
+$a->strings['Search site content'] = 'Sök innehåll på sidan';
+$a->strings['Full Text'] = 'Fullständig text';
+$a->strings['Tags'] = 'Taggar';
+$a->strings['Contacts'] = 'Kontakter';
+$a->strings['Community'] = 'Gemenskap';
+$a->strings['Conversations on this and other servers'] = 'Konversationer i den här och andra servrar';
+$a->strings['Events and Calendar'] = 'Evenemang och Kalender';
 $a->strings['Directory'] = 'Medlemskatalog';
+$a->strings['Information'] = 'Information';
+$a->strings['Information about this friendica instance'] = 'Information om den här friendica-instansen';
+$a->strings['Terms of Service'] = 'Villkor för användning';
+$a->strings['Terms of Service of this Friendica instance'] = 'Den här Friendica-instansens villkor för användning';
+$a->strings['Network'] = 'Nätverk';
+$a->strings['Conversations from your friends'] = 'Konversationer från dina vänner';
+$a->strings['Introductions'] = 'Presentationer';
+$a->strings['Friend Requests'] = 'Vänförfrågningar';
+$a->strings['Notifications'] = 'Aviseringar';
+$a->strings['See all notifications'] = 'Se alla aviseringar';
+$a->strings['Private mail'] = 'Privat e-post';
 $a->strings['Inbox'] = 'Inkorg';
 $a->strings['Outbox'] = 'Utkorg';
-$a->strings['Manage'] = 'Hantera';
+$a->strings['Accounts'] = 'Konton';
+$a->strings['Manage other pages'] = 'Hantera andra sidor';
+$a->strings['Settings'] = 'Inställningar';
+$a->strings['Account settings'] = 'Kontoinställningar';
+$a->strings['Manage/edit friends and contacts'] = 'Hantera/redigera vänner och kontakter';
+$a->strings['Admin'] = 'Administratör';
+$a->strings['Navigation'] = 'Navigering';
+$a->strings['Site map'] = 'Karta över webbplatsen';
 $a->strings['Embedding disabled'] = 'Funktionen bädda in är avstängd';
+$a->strings['Embedded content'] = 'Inbäddat innehåll';
+$a->strings['first'] = 'första';
 $a->strings['prev'] = 'föreg';
+$a->strings['next'] = 'nästa';
 $a->strings['last'] = 'sista';
-$a->strings['view full size'] = 'visa fullstor';
+$a->strings['Image/photo'] = 'Bild/foto';
+$a->strings['<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a> %3$s'] = '<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a> %3$s';
+$a->strings['Link to source'] = 'Länk till källa';
+$a->strings['Click to open/close'] = 'Klicka för att öppna/stänga';
+$a->strings['$1 wrote:'] = '$1 skrev:';
+$a->strings['Encrypted content'] = 'Krypterat innehåll';
+$a->strings['Invalid source protocol'] = 'Ogiltigt källprotokoll';
+$a->strings['Invalid link protocol'] = 'Ogiltigt källprotokoll';
+$a->strings['Loading more entries...'] = 'Laddar fler poster...';
+$a->strings['The end'] = 'Slut';
+$a->strings['Follow'] = 'Följ';
+$a->strings['Add New Contact'] = 'Lägg till kontakt';
+$a->strings['Enter address or web location'] = 'Fyll i adress eller plats på internet';
+$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Exempel: adam@exempel.com, http://exempel.com/bertil';
+$a->strings['Connect'] = 'Skicka kontaktförfrågan';
+$a->strings['%d invitation available'] = [
+       0 => '%d inbjudning tillgänglig',
+       1 => '%d inbjudningar tillgängliga',
+];
+$a->strings['Find People'] = 'Hitta personer';
+$a->strings['Enter name or interest'] = 'Ange namn eller intresse';
+$a->strings['Examples: Robert Morgenstein, Fishing'] = 'Exempel: Robert Morgenstein, Fiskning';
+$a->strings['Find'] = 'Sök';
+$a->strings['Similar Interests'] = 'Liknande intressen';
+$a->strings['Random Profile'] = 'Slumpmässig profil';
+$a->strings['Invite Friends'] = 'Bjud in folk du känner';
+$a->strings['Global Directory'] = 'Medlemskatalog för flera sajter (global)';
+$a->strings['Local Directory'] = 'Lokal-mapp';
+$a->strings['Groups'] = 'Grupper';
+$a->strings['Everyone'] = 'Alla';
+$a->strings['Relationships'] = 'Relationer';
+$a->strings['All Contacts'] = 'Alla kontakter';
+$a->strings['Protocols'] = 'Protokoller';
+$a->strings['All Protocols'] = 'Alla protokoller';
+$a->strings['Saved Folders'] = 'Sparade mappar';
+$a->strings['Everything'] = 'Allting';
+$a->strings['Categories'] = 'Kategorier';
+$a->strings['%d contact in common'] = [
+       0 => '%d gemensam kontakt',
+       1 => '%d gemensamma kontakter',
+];
+$a->strings['Archives'] = 'Arkiv';
+$a->strings['Persons'] = 'Personer';
+$a->strings['Organisations'] = 'Organisationer';
+$a->strings['News'] = 'Nyheter';
+$a->strings['All'] = 'Alla';
+$a->strings['Export'] = 'Exportera';
+$a->strings['Export calendar as ical'] = 'Exportera kalender som ical';
+$a->strings['Export calendar as csv'] = 'Exportera kalender som csv';
 $a->strings['No contacts'] = 'Inga kontakter';
 $a->strings['%d Contact'] = [
        0 => '%d kontakt',
        1 => '%d kontakter',
 ];
 $a->strings['View Contacts'] = 'Visa kontakter';
-$a->strings['Add New Contact'] = 'Lägg till kontakt';
-$a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Exempel: adam@exempel.com, http://exempel.com/bertil';
-$a->strings['Invite Friends'] = 'Bjud in folk du känner';
-$a->strings['Visible to everybody'] = 'Synlig för alla';
-$a->strings['Welcome back '] = 'Välkommen tillbaka ';
+$a->strings['Remove term'] = 'Ta bort villkor';
+$a->strings['Saved Searches'] = 'Sparade sökningar';
+$a->strings['Trending Tags (last %d hour)'] = [
+       0 => 'Trendande taggar (senaste %d timmen)',
+       1 => 'Trendande taggar (de senaste %d timmarna)',
+];
+$a->strings['More Trending Tags'] = 'Fler trendande taggar';
+$a->strings['XMPP:'] = 'XMPP:';
+$a->strings['Matrix:'] = 'Matrix:';
+$a->strings['Network:'] = 'Nätverk:';
+$a->strings['Unfollow'] = 'Avfölj';
+$a->strings['Yourself'] = 'Du själv';
+$a->strings['Mutuals'] = 'Ömsesidiga';
+$a->strings['Public'] = 'Publik';
+$a->strings['Limited/Private'] = 'Begränsad/Privat';
+$a->strings['Show to:'] = 'Visa till:';
+$a->strings['Except to:'] = 'Förutom till:';
 $a->strings['You may need to import the file "database.sql" manually using phpmyadmin or mysql.'] = 'Du kanske måste importera filen "database.sql" manuellt med phpmyadmin eller mysql.';
-$a->strings['Please see the file "INSTALL.txt".'] = 'Se filen "INSTALL.txt".';
+$a->strings['Please see the file "doc/INSTALL.md".'] = 'Vänligen se filen "doc/INSTALL.md".';
 $a->strings['Could not find a command line version of PHP in the web server PATH.'] = 'Could not find a command line version of PHP in the web server PATH.';
+$a->strings['If you don\'t have a command line version of PHP installed on your server, you will not be able to run the background processing. See <a href=\'https://github.com/friendica/friendica/blob/stable/doc/Install.md#set-up-the-worker\'>\'Setup the worker\'</a>'] = 'Om du inte har en kommandoradsversion av PHP installerad på din server kommer du inte att kunna köra bakgrundsbearbetningen.';
+$a->strings['Command line PHP'] = 'Kommandorad för PHP';
+$a->strings['Found PHP version: '] = 'Hittade PHP-version:';
 $a->strings['The command line version of PHP on your system does not have "register_argc_argv" enabled.'] = 'The command line version of PHP on your system does not have "register_argc_argv" enabled.';
 $a->strings['This is required for message delivery to work.'] = 'Det krävs för att meddelanden ska kunna levereras.';
 $a->strings['Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'] = 'Fel: funktionen "openssl_pkey_new" kan inte skapa krypteringsnycklar';
 $a->strings['If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'] = 'Läs mer på "http://www.php.net/manual/en/openssl.installation.php" om du kör Windows.';
+$a->strings['Generate encryption keys'] = 'Generera krypteringsnycklar';
 $a->strings['Error: Apache webserver mod-rewrite module is required but not installed.'] = 'Error: Apache webserver mod-rewrite module is required but not installed.';
+$a->strings['Error: The MySQL driver for PDO is not installed.'] = 'Fel: MySQL-drivrutinen för PDO är inte installerad.';
+$a->strings['libCurl PHP module'] = 'PHP-modul för libCurl';
 $a->strings['Error: libCURL PHP module required but not installed.'] = 'Error: libCURL PHP module required but not installed.';
 $a->strings['Error: GD graphics PHP module with JPEG support required but not installed.'] = 'Error: GD graphics PHP module with JPEG support required but not installed.';
+$a->strings['OpenSSL PHP module'] = 'PHP-modul för OpenSSL';
 $a->strings['Error: openssl PHP module required but not installed.'] = 'Error: openssl PHP module required but not installed.';
 $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.'] = '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.';
+$a->strings['config/local.config.php is writable'] = 'config/local.config.php är skrivbar';
+$a->strings['view/smarty3 is writable'] = 'view/smarty3 är skrivbar';
+$a->strings['No TLS detected'] = 'Ingen TLS upptäcktes';
+$a->strings['TLS detected'] = 'TLS upptäcktes';
+$a->strings['ImageMagick supports GIF'] = 'ImageMagick har stöd för GIF';
+$a->strings['Database already in use.'] = 'Databas används redan.';
+$a->strings['Could not connect to database.'] = 'Kunde inte ansluta till databasen.';
+$a->strings['Monday'] = 'måndag';
 $a->strings['Tuesday'] = 'tisdag';
 $a->strings['Wednesday'] = 'onsdag';
 $a->strings['Thursday'] = 'torsdag';
 $a->strings['Friday'] = 'fredag';
 $a->strings['Saturday'] = 'lördag';
+$a->strings['Sunday'] = 'söndag';
 $a->strings['January'] = 'januari';
 $a->strings['February'] = 'februari';
 $a->strings['March'] = 'mars';
@@ -514,69 +643,421 @@ $a->strings['September'] = 'september';
 $a->strings['October'] = 'oktober';
 $a->strings['November'] = 'november';
 $a->strings['December'] = 'december';
-$a->strings['Friend/Connect Request'] = 'Vän- eller kontaktförfrågan';
-$a->strings['New Follower'] = 'En som vill följa dig';
+$a->strings['Mon'] = 'Mån';
+$a->strings['Tue'] = 'Tis';
+$a->strings['Wed'] = 'Ons';
+$a->strings['Thu'] = 'Tor';
+$a->strings['Fri'] = 'Fre';
+$a->strings['Sat'] = 'Lör';
+$a->strings['Sun'] = 'Sön';
+$a->strings['Jan'] = 'Jan';
+$a->strings['Feb'] = 'Feb';
+$a->strings['Mar'] = 'Mar';
+$a->strings['Apr'] = 'Apr';
+$a->strings['Jun'] = 'Jun';
+$a->strings['Jul'] = 'Jul';
+$a->strings['Aug'] = 'Aug';
+$a->strings['Sep'] = 'Sep';
+$a->strings['Oct'] = 'Okt';
+$a->strings['Nov'] = 'Nov';
+$a->strings['Dec'] = 'Dec';
+$a->strings['poke'] = 'peta';
+$a->strings['poked'] = 'petad';
+$a->strings['ping'] = 'ping';
+$a->strings['pinged'] = 'pingad';
+$a->strings['finger'] = 'finger';
+$a->strings['fingered'] = 'fingrad';
+$a->strings['Enter a valid existing folder'] = 'Ange en giltig befintlig mapp';
+$a->strings['Update %s failed. See error logs.'] = 'Uppdateringen %s misslyckades. Se fler loggar.';
+$a->strings['The error message is\n[pre]%s[/pre]'] = 'Felmeddelandet är \n[pre]%s[/pre]';
+$a->strings['[Friendica Notify] Database update'] = '[Friendica-avisering] Uppdatering av databas';
+$a->strings['User \'%s\' already exists on this server!'] = 'Användaren \'%s\' existerar redan i den här servern!';
+$a->strings['User creation error'] = 'Fel uppstod när användaren skulle skapas';
+$a->strings['%d contact not imported'] = [
+       0 => '%d kontakt importerades inte',
+       1 => '%d kontakterna importerades inte',
+];
+$a->strings['Done. You can now login with your username and password'] = 'Färdig. Du kan nu logga in med ditt användarnamn och lösenord';
+$a->strings['The database version had been set to %s.'] = 'Databas-versionen har ställts in till %s.';
+$a->strings['%s: Database update'] = '%s: Uppdatering av databas';
+$a->strings['Record not found'] = 'Posten hittades inte';
+$a->strings['Unauthorized'] = 'Ej autentiserad';
+$a->strings['Internal Server Error'] = 'Internt server-fel';
+$a->strings['UnFollow'] = 'Avfölj';
+$a->strings['Approve'] = 'Godkänn';
+$a->strings['Organisation'] = 'Organisation';
+$a->strings['Forum'] = 'Forum';
+$a->strings['Disallowed profile URL.'] = 'Otillåten profil-URL.';
 $a->strings['The profile address specified does not provide adequate information.'] = 'Angiven profiladress ger inte tillräcklig information.';
+$a->strings['An author or name was not found.'] = 'En författare eller namnet hittades inte.';
 $a->strings['Limited profile. This person will be unable to receive direct/personal notifications from you.'] = 'Begränsad profil. Den här personen kommer inte att kunna ta emot personliga meddelanden från dig.';
 $a->strings['Unable to retrieve contact information.'] = 'Det gick inte att komma åt kontaktinformationen.';
-$a->strings['link to source'] = 'länk till källa';
+$a->strings['Starts:'] = 'Börjar:';
+$a->strings['Finishes:'] = 'Slutar:';
+$a->strings['all-day'] = 'hela dagen';
+$a->strings['Sept'] = 'Sept';
+$a->strings['No events to display'] = 'Inga evenemang att visa';
+$a->strings['l, F j'] = 'l, F j';
+$a->strings['Edit event'] = 'Redigera evenemang';
+$a->strings['Duplicate event'] = 'Fördubbla evenemanget';
+$a->strings['Delete event'] = 'Ta bort evenemanget';
+$a->strings['Show map'] = 'Visa karta';
+$a->strings['Hide map'] = 'Göm karta';
+$a->strings['%s\'s birthday'] = '%s\'s födelsedag';
+$a->strings['Happy Birthday %s'] = 'Grattis på födelsedagen %s';
 $a->strings['Everybody'] = 'Alla';
+$a->strings['edit'] = 'redigera';
+$a->strings['add'] = 'lägg till';
+$a->strings['Edit group'] = 'Redigera gruppen';
+$a->strings['Contacts not in any group'] = 'Kontakterna finns inte i någon av grupperna';
 $a->strings['Create a new group'] = 'Skapa ny grupp';
+$a->strings['Group Name: '] = 'Gruppens namn: ';
+$a->strings['Edit groups'] = 'Redigera grupper';
+$a->strings['Detected languages in this post:\n%s'] = 'Upptäckte språken i det här inlägget:\n%s';
+$a->strings['activity'] = 'aktivitet';
+$a->strings['comment'] = 'kommentar';
+$a->strings['post'] = 'inlägg';
+$a->strings['Content warning: %s'] = 'Innehållsvarning: %s';
+$a->strings['bytes'] = 'bytes';
+$a->strings['View on separate page'] = 'Visa på en separat sida';
 $a->strings['[no subject]'] = '[ingen rubrik]';
-$a->strings['g A l F d'] = 'g A l F d';
+$a->strings['Edit profile'] = 'Redigera profil';
+$a->strings['Change profile photo'] = 'Byt profilbild';
+$a->strings['Homepage:'] = 'Hemsida:';
+$a->strings['About:'] = 'Om:';
+$a->strings['Atom feed'] = 'Atom-flöde';
 $a->strings['[today]'] = '[idag]';
 $a->strings['Birthday Reminders'] = 'Födelsedagspåminnelser';
 $a->strings['Birthdays this week:'] = 'Födelsedagar denna vecka:';
-$a->strings['j F, Y'] = 'j F, Y';
-$a->strings['j F'] = 'j F';
-$a->strings['Birthday:'] = 'Födelsedatum:';
-$a->strings['Age:'] = 'Ålder:';
-$a->strings['Religion:'] = 'Religion:';
-$a->strings['Hobbies/Interests:'] = 'Hobbys/Intressen:';
-$a->strings['Contact information and Social Networks:'] = 'Kontaktuppgifter och sociala nätverk:';
-$a->strings['Musical interests:'] = 'Musik:';
-$a->strings['Books, literature:'] = 'Böcker/Litteratur:';
-$a->strings['Television:'] = 'TV:';
-$a->strings['Film/dance/culture/entertainment:'] = 'Film/Dans/Kultur/Underhållning:';
-$a->strings['Love/Romance:'] = 'Kärlek/Romantik:';
-$a->strings['Work/employment:'] = 'Arbete:';
-$a->strings['School/education:'] = 'Skola/Utbildning:';
+$a->strings['g A l F d'] = 'g A l F d';
+$a->strings['[No description]'] = '[Ingen beskrivning]';
+$a->strings['Event Reminders'] = 'Evenemangspåminnare';
+$a->strings['Upcoming events the next 7 days:'] = 'Evenemang som kommer de kommande 7 dagarna:';
+$a->strings['OpenWebAuth: %1$s welcomes %2$s'] = 'OpenWebAuth: %1$s välkomnar %2$s';
+$a->strings['Hometown:'] = 'Hemstad:';
+$a->strings['Marital Status:'] = 'Civilstånd:';
+$a->strings['With:'] = 'Med:';
+$a->strings['Since:'] = 'Sedan:';
+$a->strings['Sexual Preference:'] = 'Sexualitet';
+$a->strings['Political Views:'] = 'Politisk åskådning:';
+$a->strings['Religious Views:'] = 'Religion:';
+$a->strings['Title/Description:'] = 'Titel/Beskrivning:';
+$a->strings['Summary'] = 'Sammanfattning';
+$a->strings['Musical interests'] = 'Musik';
+$a->strings['Books, literature'] = 'Böcker, litteratur';
+$a->strings['Television'] = 'TV';
+$a->strings['Film/dance/culture/entertainment'] = 'Film/Dans/Kultur/Nöje';
+$a->strings['Hobbies/Interests'] = 'Hobbys/Intressen';
+$a->strings['Love/romance'] = 'Kärlek/Romantik';
+$a->strings['Work/employment'] = 'Arbete';
+$a->strings['School/education'] = 'Skola/Utbildning';
+$a->strings['Contact information and Social Networks'] = 'Kontaktuppgifter och sociala nätverk';
+$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'SERIOUS ERROR: Generation of security keys failed.';
+$a->strings['Login failed'] = 'Inloggningen misslyckades';
+$a->strings['Not enough information to authenticate'] = 'Inte tillräckligt med information för att autentisera';
+$a->strings['Password can\'t be empty'] = 'Lösenordet kan inte vara tomt';
+$a->strings['Empty passwords are not allowed.'] = 'Tomma lösenord är inte tillåtna.';
 $a->strings['Passwords do not match. Password unchanged.'] = 'Lösenorden skiljer sig åt. Lösenordet ändras inte.';
+$a->strings['An invitation is required.'] = 'En inbjudning krävs.';
+$a->strings['Invitation could not be verified.'] = 'Inbjudningen kunde inte bekräftas.';
 $a->strings['Invalid OpenID url'] = 'Ogiltig OpenID-URL';
+$a->strings['The error message was:'] = 'Felmeddelandet var:';
 $a->strings['Please enter the required information.'] = 'Fyll i alla obligatoriska fält.';
+$a->strings['Username should be at least %s character.'] = [
+       0 => 'Användarnamnet bör ha åtminstone %s tecken.',
+       1 => 'Användarnamn borde ha åtminstone %s tecken.',
+];
 $a->strings['That doesn\'t appear to be your full (First Last) name.'] = 'Du verkar inte ha angett ditt fullständiga namn.';
 $a->strings['Your email domain is not among those allowed on this site.'] = 'Din e-postdomän är inte tillåten på den här webbplatsen.';
 $a->strings['Not a valid email address.'] = 'Ogiltig e-postadress.';
 $a->strings['Cannot use that email.'] = 'Otillåten e-postadress.';
 $a->strings['Nickname is already registered. Please choose another.'] = 'Användarnamnet är upptaget. Välj ett annat.';
-$a->strings['SERIOUS ERROR: Generation of security keys failed.'] = 'SERIOUS ERROR: Generation of security keys failed.';
 $a->strings['An error occurred during registration. Please try again.'] = 'Något gick fel vid registreringen. Försök igen.';
 $a->strings['An error occurred creating your default profile. Please try again.'] = 'Det blev fel när din standardprofil skulle skapas. Prova igen.';
-$a->strings['Could not access contact record.'] = 'Hittar inte information om kontakten.';
-$a->strings['Could not locate selected profile.'] = 'Hittar inte vald profil.';
-$a->strings['Contact updated.'] = 'Kontakten har uppdaterats.';
-$a->strings['Contact has been blocked'] = 'Kontakten har spärrats';
+$a->strings['Friends'] = 'Vänner';
+$a->strings['Profile Photos'] = 'Profilbilder';
+$a->strings['Addon not found.'] = 'Insticksprogrammet hittades inte.';
+$a->strings['Addon %s disabled.'] = 'Insticksprogrammet %s är inaktiverat.';
+$a->strings['Addon %s enabled.'] = 'Insticksprogrammet %s är aktiverat.';
+$a->strings['Disable'] = 'Inaktivera';
+$a->strings['Enable'] = 'Aktivera';
+$a->strings['Administration'] = 'Administration';
+$a->strings['Addons'] = 'Insticksprogram';
+$a->strings['Toggle'] = 'Växla';
+$a->strings['Author: '] = 'Författare:';
+$a->strings['Maintainer: '] = 'Underhållare:';
+$a->strings['List of all users'] = 'Lista över alla användare';
+$a->strings['Active'] = 'Aktiv';
+$a->strings['List of active accounts'] = 'Lista över aktiva konton';
+$a->strings['Blocked'] = 'Blockerad';
+$a->strings['List of blocked users'] = 'Lista över blockerade användare';
+$a->strings['Deleted'] = 'Ta bort';
+$a->strings['Private Forum'] = 'Privat forum';
+$a->strings['Relay'] = 'Fördröj';
+$a->strings['You can\'t block a local contact, please block the user instead'] = 'Du kan inte blockera en lokal kontakt, vänligen blockera användaren istället';
+$a->strings['select all'] = 'välj alla';
+$a->strings['select none'] = 'välj ingen';
+$a->strings['Unblock'] = 'Avblockera';
+$a->strings['Photo'] = 'Foto';
+$a->strings['Reason'] = 'Anledning';
+$a->strings['Block Reason'] = 'Anledning för blockering';
+$a->strings['Matching known servers'] = 'Matchar kända servrar';
+$a->strings['Server Name'] = 'Namn på server';
+$a->strings['Server Domain'] = 'Serverns domän';
+$a->strings['Known Contacts'] = 'Kända kontakter';
+$a->strings['%d known server'] = [
+       0 => '%d känd server',
+       1 => '%d kända servrar',
+];
+$a->strings['Add pattern to the blocklist'] = 'Lägg till mönster till blockeringslistan';
+$a->strings['Reason for the block'] = 'Anledning för blockeringen';
+$a->strings['Add new entry to the blocklist'] = 'Lägg till ny post till blockeringslistan';
+$a->strings['Save changes to the blocklist'] = 'Spara ändringen i blockeringslistan';
+$a->strings['Current Entries in the Blocklist'] = 'Nuvarande poster i blockeringslistan';
+$a->strings['Delete entry from the blocklist'] = 'Ta bort post från blockeringslistan';
+$a->strings['Delete entry from the blocklist?'] = 'Ta bort post från blockeringslistan?';
+$a->strings['Update has been marked successful'] = 'Uppdateringen har blivit markerad som lyckad';
+$a->strings['Update %s was successfully applied.'] = 'Verkställningen av uppdateringen av %s lyckades.';
+$a->strings['No failed updates.'] = 'Inga misslyckade uppdateringar.';
+$a->strings['Check database structure'] = 'Kolla databas-strukturen';
+$a->strings['Failed Updates'] = 'Misslyckade uppdatering';
+$a->strings['Lock feature %s'] = 'Lås-funktion %s';
+$a->strings['Manage Additional Features'] = 'Hantera ytterligare funktioner';
+$a->strings['Other'] = 'Annat';
+$a->strings['unknown'] = 'okänd';
+$a->strings['Item marked for deletion.'] = 'Objektet är markerat för borttagning.';
+$a->strings['Delete Item'] = 'Ta bort objekt';
+$a->strings['Delete this Item'] = 'Ta bort det här objektet';
+$a->strings['GUID'] = 'GUID';
+$a->strings['The GUID of the item you want to delete.'] = 'Objektets GUID som du vill ta bort.';
+$a->strings['Item Source'] = 'Objektets källa';
+$a->strings['Terms'] = 'Villkor';
+$a->strings['Tag'] = 'Taggar';
+$a->strings['Type'] = 'Typ';
+$a->strings['Term'] = 'Villkor';
+$a->strings['URL'] = 'Webbadress';
+$a->strings['Mention'] = 'Nämn';
+$a->strings['Source'] = 'Källa';
+$a->strings['Logs'] = 'Loggar';
+$a->strings['Clear'] = 'Rensa';
+$a->strings['Enable Debugging'] = 'Aktivera avlusning';
+$a->strings['Log file'] = 'Logg-fil';
+$a->strings['Log level'] = 'Logg-nivå';
+$a->strings['PHP logging'] = 'PHP-loggning';
+$a->strings['View Logs'] = 'Visa loggar';
+$a->strings['Search in logs'] = 'Sök i loggar';
+$a->strings['Show all'] = 'Visa alla';
+$a->strings['Date'] = 'Datum';
+$a->strings['Level'] = 'Nivå';
+$a->strings['Context'] = 'Sammanhang';
+$a->strings['ALL'] = 'ALLA';
+$a->strings['View details'] = 'Visa detaljer';
+$a->strings['Click to view details'] = 'Klicka för att visa detaljer';
+$a->strings['Data'] = 'Data';
+$a->strings['File'] = 'Fil';
+$a->strings['Line'] = 'Rad';
+$a->strings['Function'] = 'Funktion';
+$a->strings['UID'] = 'UID';
+$a->strings['Close'] = 'Stäng';
+$a->strings['ID'] = 'ID';
+$a->strings['Command'] = 'Kommando';
+$a->strings['Job Parameters'] = 'Jobb-parametrar';
+$a->strings['Priority'] = 'Prioritet';
+$a->strings['No special theme for mobile devices'] = 'Inget speciellt tema för mobil-enheter';
+$a->strings['%s - (Experimental)'] = '%s - (Experimentell)';
+$a->strings['No community page for local users'] = 'Ingen gemenskapssida för lokala användare';
+$a->strings['No community page'] = 'Ingen gemenskapssida';
+$a->strings['Multi user instance'] = 'Instans för flertalet användare';
+$a->strings['Closed'] = 'Stängd';
+$a->strings['Requires approval'] = 'Kräver godkännande';
+$a->strings['Open'] = 'Öppen';
+$a->strings['Force all links to use SSL'] = 'Tvinga alla länkar att använda SSL';
+$a->strings['Don\'t check'] = 'Kolla inte';
+$a->strings['check the stable version'] = 'kolla den stabila versionen';
+$a->strings['check the development version'] = 'kolla utvecklingsversionen';
+$a->strings['none'] = 'ingen';
+$a->strings['Local contacts'] = 'Lokala kontakter ';
+$a->strings['Site'] = 'Sida';
+$a->strings['General Information'] = 'Generell information';
+$a->strings['Registration'] = 'Registrering';
+$a->strings['File upload'] = 'Fil-uppladdning';
+$a->strings['Policies'] = 'Policyer';
+$a->strings['Performance'] = 'Prestanda';
+$a->strings['Worker'] = 'Arbetare';
+$a->strings['Message Relay'] = 'Meddelandefördröjning';
+$a->strings['Relocate Instance'] = 'Omlokalisera instansen';
+$a->strings['Site name'] = 'Namn på sida';
+$a->strings['Sender Email'] = 'Sändare av e-post';
+$a->strings['Banner/Logo'] = 'Banderoll/Logga';
+$a->strings['Email Banner/Logo'] = 'E-postbanderoll/logga';
+$a->strings['Shortcut icon'] = 'Genvägsikon';
+$a->strings['Additional Info'] = 'Ytterligare info';
+$a->strings['System language'] = 'Systemets språk';
+$a->strings['System theme'] = 'Systemets tema';
+$a->strings['Theme for mobile devices'] = 'Tema för mobilenheter';
+$a->strings['SSL link policy'] = 'Policy för SSL-länk';
+$a->strings['Determines whether generated links should be forced to use SSL'] = 'Avgör huruvida genererade länkar ska tvingas att använda SSL eller inte';
+$a->strings['Force SSL'] = 'Tvinga SSL';
+$a->strings['Maximum image size'] = 'Maximal bildstorlek';
+$a->strings['Maximum image length'] = 'Maximal bildlängd';
+$a->strings['JPEG image quality'] = 'Kvalité för JPEG-bilden';
+$a->strings['Register policy'] = 'Registrera policy';
+$a->strings['Maximum Daily Registrations'] = 'Maximala registreringar varje dag';
+$a->strings['Register text'] = 'Registrera text';
+$a->strings['Forbidden Nicknames'] = 'Förbjudna smeknamn';
+$a->strings['Accounts abandoned after x days'] = 'Konton som övergavs efter x dagar';
+$a->strings['Allowed friend domains'] = 'Tillåtna vän-domäner';
+$a->strings['Allowed email domains'] = 'Tillåtna e-postdomäner';
+$a->strings['Block public'] = 'Blockera publik';
+$a->strings['Force publish'] = 'Tvinga publicering';
+$a->strings['Private posts by default for new users'] = 'Privata inlägg som standard för nya användare';
+$a->strings['Don\'t include post content in email notifications'] = 'Inkludera inte inläggets innehåll i aviseringar för e-post';
+$a->strings['Enable Diaspora support'] = 'Aktivera Diaspora-support';
+$a->strings['Verify SSL'] = 'Bekräfta SSL';
+$a->strings['Proxy user'] = 'Proxy-användare';
+$a->strings['Proxy URL'] = 'URL för proxy';
+$a->strings['Network timeout'] = 'Tidsgräns för nätverket';
+$a->strings['Value is in seconds. Set to 0 for unlimited (not recommended).'] = 'Värdet är i sekunder. Ställ in det till 0 för obegränsat (rekommenderas inte).';
+$a->strings['Temp path'] = 'Tillfällig genväg';
+$a->strings['Only search in tags'] = 'Sök endast i taggar';
+$a->strings['Normal Account'] = 'Vanligt konto';
+$a->strings['Automatic Friend Account'] = 'Konto med automatiskt godkännande av vänner.';
+$a->strings['Blog Account'] = 'Blogg-konto';
+$a->strings['Message queues'] = 'Meddelandeköer';
+$a->strings['Registered users'] = 'Registrerade användare';
+$a->strings['Pending registrations'] = 'Väntande registreringar';
+$a->strings['Version'] = 'Version';
+$a->strings['Screenshot'] = 'Skärmdump';
+$a->strings['Themes'] = 'Teman';
+$a->strings['[Experimental]'] = '[Experimentiell]';
+$a->strings['[Unsupported]'] = '[Stöds inte]';
+$a->strings['%s user deleted'] = [
+       0 => '%sanvändare togs bort',
+       1 => '%s användare togs bort',
+];
+$a->strings['Register date'] = 'Datum för registrering';
+$a->strings['Last login'] = 'Senaste inloggning';
+$a->strings['Account expired'] = 'Kontot slutade gälla';
+$a->strings['New User'] = 'Ny användare';
+$a->strings['Add User'] = 'Lägg till användare';
+$a->strings['Name of the new user.'] = 'Namn på den nya användaren.';
+$a->strings['Nickname'] = 'Smeknamn';
+$a->strings['Nickname of the new user.'] = 'Smeknamn på den nya användaren.';
+$a->strings['Email address of the new user.'] = 'E-postadress för den nya användaren.';
+$a->strings['Users'] = 'Användare';
+$a->strings['Account approved.'] = 'Kontot har godkänts.';
+$a->strings['Request date'] = 'Datum för begäran';
+$a->strings['No registrations.'] = 'Inga registreringar.';
+$a->strings['Deny'] = 'Avslå';
+$a->strings['No installed applications.'] = 'Inga installerade applikationer.';
+$a->strings['Applications'] = 'Applikationer';
+$a->strings['Item was not found.'] = 'Objektet hittades inte.';
+$a->strings['Please login to continue.'] = 'Vänligen logga in för att fortsätta.';
+$a->strings['Additional features'] = 'Ytterligare funktioner';
+$a->strings['DB updates'] = 'DB-uppdateringar';
+$a->strings['User registrations waiting for confirmation'] = 'Användarens registreringar väntar på bekräftelse';
+$a->strings['Daily posting limit of %d post reached. The post was rejected.'] = [
+       0 => 'Daglig gräns av %d upplägg nådd. Upplägget avvisades.',
+       1 => 'Daglig gräns av %d upplägg nådd. Upplägget avvisades.',
+];
+$a->strings['Weekly posting limit of %d post reached. The post was rejected.'] = [
+       0 => 'Veckovis gräns av %d inlägg nådd. Inlägged avvisades.',
+       1 => 'Veckovis gräns av %d inlägg nådd. Inlägged avvisades.',
+];
+$a->strings['Monthly posting limit of %d post reached. The post was rejected.'] = 'Månatlig gräns av %d inlägg nådd. Inlägget avvisades.';
+$a->strings['Only You Can See This'] = 'Endast du kan se det här';
+$a->strings['Tips for New Members'] = 'Tips för nya medlemmar';
+$a->strings['Account'] = 'Konto';
+$a->strings['Display'] = 'Skärm';
+$a->strings['Connected apps'] = 'Anslutna appar';
+$a->strings['Export personal data'] = 'Exporter personlig data';
+$a->strings['Remove account'] = 'Ta bort konto';
+$a->strings['The post was created'] = 'Inlägget skapades';
+$a->strings['Show all contacts'] = 'Visa alla kontakter';
+$a->strings['Only show blocked contacts'] = 'Visa endast blockerade kontakter';
+$a->strings['Ignored'] = 'Ignorerade';
+$a->strings['Only show ignored contacts'] = 'Visa endast ignorerade kontakter';
+$a->strings['Archived'] = 'Arkiverat';
+$a->strings['Only show archived contacts'] = 'Visa endast arkiverade kontakter';
+$a->strings['Hidden'] = 'Gömda';
+$a->strings['Only show hidden contacts'] = 'Visa endast gömda kontakter';
+$a->strings['Search your contacts'] = 'Sök dina kontakter';
+$a->strings['Update'] = 'Uppdatera';
+$a->strings['Unignore'] = 'Sluta ignorera';
+$a->strings['Mutual Friendship'] = 'Ömsesidig vänskap';
+$a->strings['is a fan of yours'] = 'är ett fan till dig';
+$a->strings['you are a fan of'] = 'du är fan till';
+$a->strings['Visit %s\'s profile [%s]'] = 'Besök %s\'s profil [%s]';
+$a->strings['Contact update failed.'] = 'Det gick inte att uppdatera kontakt.';
+$a->strings['New photo from this URL'] = 'Nytt foto från den här webbadressen';
+$a->strings['Invalid contact.'] = 'Ogiltig kontakt.';
+$a->strings['Choose what you wish to do to recipient'] = 'Välj vad du vill göra med mottagaren';
+$a->strings['Make this post private'] = 'Gör det här inlägget privat';
+$a->strings['Failed to update contact record.'] = 'Det blev fel när kontakten skulle uppdateras.';
 $a->strings['Contact has been unblocked'] = 'Kontakten är inte längre spärrad';
-$a->strings['Contact has been ignored'] = 'Kontakten ignoreras';
+$a->strings['Contact has been blocked'] = 'Kontakten har spärrats';
 $a->strings['Contact has been unignored'] = 'Kontakten ignoreras inte längre';
-$a->strings['Contact has been removed.'] = 'Kontakten har tagits bort.';
+$a->strings['Contact has been ignored'] = 'Kontakten ignoreras';
+$a->strings['You are mutual friends with %s'] = 'Ni är gemensamma vänner med %s';
+$a->strings['You are sharing with %s'] = 'Du delar med %s';
+$a->strings['%s is sharing with you'] = '%s delar med dig';
 $a->strings['Private communications are not available for this contact.'] = 'Det går inte att utbyta personliga meddelanden med den här kontakten.';
 $a->strings['Never'] = 'Aldrig';
-$a->strings['(Update was successful)'] = '(Uppdateringen lyckades)';
 $a->strings['(Update was not successful)'] = '(Uppdateringen lyckades inte)';
-$a->strings['Profile Visibility'] = 'Visning av profil';
+$a->strings['(Update was successful)'] = '(Uppdateringen lyckades)';
+$a->strings['Suggest friends'] = 'Föreslå vänner';
+$a->strings['Network type: %s'] = 'Nätverkstyp: %s';
+$a->strings['Fetch information'] = 'Hämta information';
+$a->strings['No mirroring'] = 'Ingen spegling';
 $a->strings['Contact Information / Notes'] = 'Kontaktuppgifter/Anteckningar';
-$a->strings['Please choose the profile you would like to display to %s when viewing your profile securely.'] = 'Välj vilken profil som ska visas för %s när han/hon besöker din sida.';
+$a->strings['Edit contact notes'] = 'Redigera kontaktanteckningar';
 $a->strings['Block/Unblock contact'] = 'Spärra kontakt eller häv spärr';
 $a->strings['Ignore contact'] = 'Ignorera kontakt';
+$a->strings['View conversations'] = 'Visa konversationer';
+$a->strings['Last update:'] = 'Senaste uppdatering:';
+$a->strings['Update public posts'] = 'Uppdatera publika inlägg';
 $a->strings['Update now'] = 'Updatera nu';
 $a->strings['Currently blocked'] = 'Spärrad';
 $a->strings['Currently ignored'] = 'Ignoreras';
-$a->strings['Mutual Friendship'] = 'Ömsesidig vänskap';
-$a->strings['is a fan of yours'] = 'är ett fan till dig';
-$a->strings['you are a fan of'] = 'du är fan till';
-$a->strings['Edit contact'] = 'Ändra kontakt';
-$a->strings['Delete contact'] = 'Ta bort kontakt';
+$a->strings['Hide this contact from others'] = 'Göm den här kontakten för andra';
+$a->strings['Notification for new posts'] = 'Avisering för nya inlägg';
+$a->strings['Yes'] = 'Ja';
+$a->strings['No results.'] = 'Inga resultat.';
+$a->strings['Not available.'] = 'Inte tillgängligt.';
+$a->strings['No such group'] = 'Gruppen finns inte';
+$a->strings['Group: %s'] = 'Grupp: %s';
+$a->strings['Personal'] = 'Privat';
+$a->strings['Posts that mention or involve you'] = 'Inlägg som nämnde eller involverade dig';
+$a->strings['Starred'] = 'Stjärnmärkt';
+$a->strings['Favourite Posts'] = 'Favoriserade inlägg';
+$a->strings['UTC time: %s'] = 'UTC-tid: %s';
+$a->strings['Current timezone: %s'] = 'Nuvarande tidszon: %s';
+$a->strings['Converted localtime: %s'] = 'Konverterad lokaltid: %s';
+$a->strings['Please select your timezone:'] = 'Vänligen välj din tidszon:';
+$a->strings['Select an identity to manage: '] = 'Välj vilken identitet du vill hantera: ';
+$a->strings['No entries (some entries may be hidden).'] = 'Inget att visa. (Man kan välja att inte synas här)';
+$a->strings['Find on this site'] = 'Hitta på den här sidan';
+$a->strings['Site Directory'] = 'Medlemskatalog';
+$a->strings['- select -'] = '- välj -';
+$a->strings['Friend suggestion sent.'] = 'Vän-förslag skickades.';
+$a->strings['Suggest Friends'] = 'Föreslå vänner';
+$a->strings['Suggest a friend for %s'] = 'Föreslå en vän till %s';
+$a->strings['Bug reports and issues: please visit'] = 'Anmäl buggar eller andra problem, gå till';
+$a->strings['Could not create group.'] = 'Det gick inte att skapa gruppen.';
+$a->strings['Group not found.'] = 'Gruppen hittades inte.';
+$a->strings['Save Group'] = 'Spara grupp';
+$a->strings['Create a group of contacts/friends.'] = 'Skapa en grupp med kontakter/vänner.';
+$a->strings['Unable to remove group.'] = 'Det gick inte att ta bort gruppen.';
+$a->strings['Members'] = 'Medlemmar';
+$a->strings['Group is empty'] = 'Gruppen är tom';
+$a->strings['Click on a contact to add or remove.'] = 'Klicka på en kontakt för att lägga till eller ta bort.';
+$a->strings['No profile'] = 'Ingen profil';
+$a->strings['Help:'] = 'Hjälp:';
+$a->strings['Welcome to %s'] = 'Välkommen till %s';
+$a->strings['Check again'] = 'Kolla igen';
+$a->strings['Host name'] = 'Värdnamn';
+$a->strings['Base path to installation'] = 'Grundväg till installationen';
+$a->strings['Database connection'] = 'Databas-anslutning';
 $a->strings['Please contact your hosting provider or site administrator if you have questions about these settings.'] = 'Please contact your hosting provider or site administrator if you have questions about these settings.';
 $a->strings['Database Server Name'] = 'Database Server Name';
 $a->strings['Database Login Name'] = 'Database Login Name';
@@ -584,31 +1065,134 @@ $a->strings['Database Login Password'] = 'Database Login Password';
 $a->strings['Database Name'] = 'Database Name';
 $a->strings['Please select a default timezone for your website'] = 'Please select a default timezone for your website';
 $a->strings['Your Friendica site database has been installed.'] = 'Databasen för din friendicasajt har installerats.';
-$a->strings['Create a New Account'] = 'Skapa nytt konto';
-$a->strings['Password: '] = 'Lösenord: ';
-$a->strings['Forgot your password?'] = 'Har du glömt lösenordet?';
-$a->strings['Logged out.'] = 'Utloggad.';
+$a->strings['<h1>What next</h1>'] = '<h1>Det som kommer härnäst</h1>';
+$a->strings['%s : Not a valid email address.'] = '%s : Ogiltig e-postadress.';
+$a->strings['%s : Message delivery failed.'] = '%s : Meddelandet kom inte fram.';
+$a->strings['%d message sent.'] = [
+       0 => '%d meddelande har skickats.',
+       1 => '%d meddelanden har skickats.',
+];
+$a->strings['You have no more invitations available'] = 'Du har inga fler inbjudningar tillgängliga';
+$a->strings['Send invitations'] = 'Skicka inbjudningar';
+$a->strings['Enter email addresses, one per line:'] = 'Ange e-postadresser, en per rad:';
+$a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Vi kan bli kontakter via min profil. Besök min profil här när du har registrerat dig:';
+$a->strings['System down for maintenance'] = 'Systemet är nere för underhåll';
+$a->strings['Show Ignored Requests'] = 'Visa förfrågningar du ignorerat';
+$a->strings['Hide Ignored Requests'] = 'Dölj förfrågningar du ignorerat';
+$a->strings['Claims to be known to you: '] = 'Hävdar att du vet vem han/hon är: ';
+$a->strings['No'] = 'Nej';
+$a->strings['Friend'] = 'Vän';
+$a->strings['No introductions.'] = 'Inga presentationer.';
+$a->strings['Network Notifications'] = 'Nätverksaviseringar';
+$a->strings['System Notifications'] = 'Systemets aviseringar';
+$a->strings['Personal Notifications'] = 'Privata aviseringar';
+$a->strings['Home Notifications'] = 'Hem-aviseringar';
+$a->strings['Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?'] = 'Vill du ge den här applikationen åtkomst till dina inlägg och kontakter, och/eller skapa nya inlägg för dig?';
+$a->strings['Remote privacy information not available.'] = 'Remote privacy information not available.';
+$a->strings['Visible to:'] = 'Synlig för:';
+$a->strings['No contacts.'] = 'Inga kontakter.';
+$a->strings['Profile not found.'] = 'Profilen hittades inte.';
+$a->strings['j F, Y'] = 'j F, Y';
+$a->strings['j F'] = 'j F';
+$a->strings['Birthday:'] = 'Födelsedatum:';
+$a->strings['Age: '] = 'Ålder: ';
 $a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'Om du inte vet vad OpenID är, eller inte vill använda det, kan du lämna det fältet tomt och fylla i resten.';
 $a->strings['Your OpenID (optional): '] = 'OpenID (om du vill): ';
 $a->strings['Include your profile in member directory?'] = 'Ta med profilen i medlemskatalogen?';
 $a->strings['Choose a nickname: '] = 'Välj ett användarnamn: ';
+$a->strings['Import your profile to this friendica instance'] = 'Importera din profil till den här friendica-instansen';
 $a->strings['Registration successful. Please check your email for further instructions.'] = 'Registrering klar. Kolla din e-post för vidare information.';
 $a->strings['Your registration can not be processed.'] = 'Det går inte att behandla registreringen.';
 $a->strings['Your registration is pending approval by the site owner.'] = 'Din registrering inväntar godkännande av webbplatsens ägare.';
+$a->strings['Profile unavailable.'] = 'Profilen är inte tillgänglig.';
+$a->strings['Invalid locator'] = 'Invalid locator';
+$a->strings['Friend/Connection Request'] = 'Vän- eller kontaktförfrågan';
+$a->strings['Create a New Account'] = 'Skapa nytt konto';
+$a->strings['Or login using OpenID: '] = 'eller logga in genom att använda OpenID:';
+$a->strings['Password: '] = 'Lösenord: ';
+$a->strings['Remember me'] = 'Kom ihåg mig';
+$a->strings['Forgot your password?'] = 'Har du glömt lösenordet?';
+$a->strings['terms of service'] = 'användarvillkor';
+$a->strings['Website Privacy Policy'] = 'Integritetspolicy för hemsidan';
+$a->strings['privacy policy'] = 'integritetspolicy';
+$a->strings['Logged out.'] = 'Utloggad.';
+$a->strings['Potential Delegates'] = 'Potentiella delegater';
+$a->strings['Add'] = 'Lägg till';
+$a->strings['No entries.'] = 'Inga poster.';
+$a->strings['Display Settings'] = 'Skärm-inställningar';
+$a->strings['Theme settings'] = 'Tema-inställningar';
+$a->strings['Display Theme:'] = 'Tema/utseende:';
+$a->strings['Mobile Theme:'] = 'Mobil-tema:';
+$a->strings['Maximum of 100 items'] = 'Maximalt 100 objekt';
+$a->strings['Infinite scroll'] = 'Oändlig skroll';
+$a->strings['Profile Name is required.'] = 'Profilen måste ha ett namn.';
+$a->strings['(click to open/close)'] = '(klicka för att öppna/stänga)';
+$a->strings['Edit Profile Details'] = 'Ändra profilen';
+$a->strings['Change Profile Photo'] = 'Byt profilfoto';
+$a->strings['Profile picture'] = 'Profilbild';
+$a->strings['Location'] = 'Plats';
+$a->strings['Miscellaneous'] = 'Blandat';
+$a->strings['Upload Profile Photo'] = 'Ladda upp profilbild';
+$a->strings['Street Address:'] = 'Gatuadress:';
+$a->strings['Locality/City:'] = 'Plats/Stad:';
+$a->strings['Region/State:'] = 'Region:';
+$a->strings['Postal/Zip Code:'] = 'Postnummer:';
+$a->strings['Country:'] = 'Land:';
+$a->strings['Homepage URL:'] = 'Hemsida: (URL)';
+$a->strings['Public Keywords:'] = 'Offentliga nyckelord:';
+$a->strings['(Used for suggesting potential friends, can be seen by others)'] = '(Obs, synliga för andra. Används för att föreslå potentiella vänner.)';
+$a->strings['Private Keywords:'] = 'Privata nyckelord:';
+$a->strings['(Used for searching profiles, never shown to others)'] = '(Obs, kan ge sökträffar vid sökning av profiler. Visas annars inte för andra.)';
+$a->strings['Unable to process image'] = 'Det gick inte att behandla bilden';
+$a->strings['Crop Image'] = 'Beskär bild';
+$a->strings['Please adjust the image cropping for optimum viewing.'] = 'Välj hur bilden ska beskäras för att bli så bra som möjligt.';
+$a->strings['or'] = 'eller';
+$a->strings['skip this step'] = 'hoppa över det här steget';
+$a->strings['select a photo from your photo albums'] = 'välj en bild från ett album';
+$a->strings['Wrong Password'] = 'Fel lösenord';
+$a->strings['Export account'] = 'Exportera konto';
+$a->strings['Export all'] = 'Exportera allt';
+$a->strings['Welcome to Friendica'] = 'Välkommen till Friendica';
+$a->strings['Getting Started'] = 'Komma igång';
+$a->strings['Friendica Walk-Through'] = 'Genomgång av Friendica';
+$a->strings['Go to Your Settings'] = 'Gå till dina inställningar';
+$a->strings['Edit Your Profile'] = 'Redigera din profil';
+$a->strings['Connecting'] = 'Ansluter';
+$a->strings['Importing Emails'] = 'Importerar e-post';
+$a->strings['Finding New People'] = 'Hitta nya personer';
+$a->strings['Group Your Contacts'] = 'Gruppera dina kontakter';
+$a->strings['Why Aren\'t My Posts Public?'] = 'Varför visas inte mina inlägg publikt?';
+$a->strings['Getting Help'] = 'Få hjälp';
+$a->strings['Go to the Help Section'] = 'Gå till Hjälp-sektionen';
+$a->strings['%s liked %s\'s post'] = '%sgillade %s\'s inlägg';
+$a->strings['%s disliked %s\'s post'] = '%s gillade inte %s\'s inlägg';
+$a->strings['%s is now friends with %s'] = '%s är nu vänner med %s';
+$a->strings['%s commented on %s\'s post'] = '%s kommenterade på %s\'s inlägg';
+$a->strings['%s created a new post'] = '%s skapade ett nytt inlägg';
+$a->strings['Friend Suggestion'] = 'Vän-förslag';
+$a->strings['Friend/Connect Request'] = 'Vän- eller kontaktförfrågan';
+$a->strings['New Follower'] = 'En som vill följa dig';
+$a->strings['%1$s sent you a new private message at %2$s.'] = '%1$sskickade ett privat meddelande till dig %2$s.';
+$a->strings['a private message'] = 'ett privat meddelande';
+$a->strings['%1$s sent you %2$s.'] = '%1$sskickade%2$s.';
+$a->strings['Please visit %s to view and/or reply to your private messages.'] = 'Gå till %sför att se och svara på dina privata meddelanden.';
+$a->strings['You\'ve received an introduction from \'%1$s\' at %2$s'] = 'Du tog emot en introduktion från \'%1$s\' vid %2$s';
+$a->strings['Name:'] = 'Namn:';
+$a->strings['Photo:'] = 'Foto:';
+$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Kontakta avsändaren genom att svara på det här meddelandet om du inte vill ha sådana här meddelanden.';
+$a->strings['%s posted an update.'] = '%s har gjort ett inlägg.';
+$a->strings['This entry was edited'] = 'Den här posten redigerades';
+$a->strings['Private Message'] = 'Privat meddelande';
+$a->strings['Edit'] = 'Ändra';
 $a->strings['to'] = 'till';
+$a->strings['via'] = 'via';
 $a->strings['Wall-to-Wall'] = 'Profil-till-profil';
 $a->strings['via Wall-To-Wall:'] = 'via profil-till-profil:';
+$a->strings['%d comment'] = [
+       0 => '%d kommentar',
+       1 => '%d kommentarer',
+];
 $a->strings['following'] = 'följer';
 $a->strings['stopped following'] = 'följer inte längre';
-$a->strings['less than a second ago'] = 'för mindre än en sekund sedan';
-$a->strings['year'] = 'år';
-$a->strings['years'] = 'år';
-$a->strings['months'] = 'månader';
-$a->strings['weeks'] = 'veckor';
-$a->strings['days'] = 'dagar';
-$a->strings['hour'] = 'timme';
-$a->strings['hours'] = 'timmar';
-$a->strings['minute'] = 'minut';
-$a->strings['minutes'] = 'minuter';
-$a->strings['second'] = 'sekund';
-$a->strings['seconds'] = 'sekunder';
+$a->strings['Login failed.'] = 'Inloggningen misslyckades.';
+$a->strings['Please upload a profile photo.'] = 'Vänligen ladda upp ett profil-foto.';
index f7708ac5779a93ec7c6aa639a29a2787e0b00810..0117e03921553821e865a42f0a8df1da7c0b187b 100644 (file)
@@ -2,13 +2,6 @@
 
 {{$tab_str nofilter}}
 
-<div class="contact-advanced-error-message">{{$warning nofilter}}</div><br>
-<div class="contact-advanced-return">
-       {{$info nofilter}}<br>
-       <!-- <a href="{{$returnaddr}}">{{$return}}</a> -->
-</div>
-<br />
-
 <form id="contact-advanced-form" action="contact/{{$contact_id}}/advanced" method="post">
 
        <!-- <h4>{{$contact_name}}</h4> -->
 
        {{include file="field_input.tpl" field=$nick}}
 
-       {{include file="field_input.tpl" field=$attag}}
-
        {{include file="field_input.tpl" field=$url}}
 
-       {{include file="field_input.tpl" field=$alias}}
-
-       {{include file="field_input.tpl" field=$request}}
-
-       {{include file="field_input.tpl" field=$confirm}}
-
-       {{include file="field_input.tpl" field=$notify}}
-
        {{include file="field_input.tpl" field=$poll}}
 
        {{include file="field_input.tpl" field=$photo}}
index 4db3b66c5c017ab1e4f32aa817b1aa0b8e9c28b2..c3a808d732e78d529433f550bc4c16df8691cd7e 100644 (file)
@@ -34,5 +34,5 @@
                        {{/if}}
                </div>
        </div>
-       <blockquote class="shared_content">{{$content nofilter}}</blockquote>
+       <blockquote class="shared_content" dir="auto">{{$content nofilter}}</blockquote>
 </div>
index 18215d5d5e190b8fd6ca3de35f1124f99a6dd633..6fdcd3d241307277260d906aaf7ad74778665c8c 100644 (file)
@@ -459,6 +459,10 @@ $(document).ready(function () {
                                $pokeSubmit.button("reset");
                        });
        });
+
+       if (!navigator.canShare || !navigator.canShare()) {
+               $('.button-browser-share').hide();
+       }
 });
 
 function openClose(theID) {
index c968d00f54f3dee6cb0ef4f6d9506d58178cfa3c..af22eacd045a56ce0ca49769a12d3f8bca05b2d4 100644 (file)
@@ -4,13 +4,6 @@
 
        {{$tab_str nofilter}}
 
-       <div class="contact-advanced-error-message">{{$warning nofilter}}</div><br>
-       <div class="contact-advanced-return">
-               {{$info nofilter}}<br>
-               <!-- <a href="{{$returnaddr}}">{{$return}}</a> -->
-       </div>
-       <br />
-
        <form id="contact-advanced-form" action="contact/{{$contact_id}}/advanced" method="post">
 
                <!-- <h4>{{$contact_name}}</h4> -->
 
                {{include file="field_input.tpl" field=$nick}}
 
-               {{include file="field_input.tpl" field=$attag}}
-
                {{include file="field_input.tpl" field=$url}}
 
-               {{include file="field_input.tpl" field=$alias}}
-
-               {{include file="field_input.tpl" field=$request}}
-
-               {{include file="field_input.tpl" field=$confirm}}
-
-               {{include file="field_input.tpl" field=$notify}}
-
                {{include file="field_input.tpl" field=$poll}}
 
                {{include file="field_input.tpl" field=$photo}}
index c6f19eb16821f89b649dbcaf0ef2d8b187d81a6c..2fbff14d781c76e836cdce64c5fc8d73554e01cc 100644 (file)
@@ -63,8 +63,9 @@
                                        <span class="navicon lock fakelink" onClick="lockview(event, 'item', {{$item.id}});" title="{{$item.lock}}">
                                                &nbsp;<small><i class="fa fa-lock" aria-hidden="true"></i></small>
                                        </span>
+                               {{elseif $item.connector}}
+                                       <span class="fa fa-lock" title="{{$item.connector}}"></span>
                                {{/if}}
-
                                        <div class="additional-info text-muted">
                                                <div id="wall-item-ago-{{$item.id}}" class="wall-item-ago">
                                                        <small>
                                                {{/if}}
                                        {{/if}}
 
+                {{if !$item.lock && !$item.connector}}
+                                       <span role="presentation" class="separator button-browser-share"></span>
+                                       <button type="button" class="btn-link button-browser-share" onclick="navigator.share({url: '{{$item.plink.orig}}'})"><i class="fa fa-share-alt"></i> {{$item.browsershare}}</button>
+                {{/if}}
 
                                {{* Put additional actions in a dropdown menu *}}
                                {{if $item.menu && ($item.edpost || $item.tagger || $item.filer || $item.pin || $item.star || $item.follow_thread || $item.ignore || $item.drop.dropping)}}
index d6790b3e8461fe45417cf1ab64bbf6cb2004b808..8f03cb5c9da3c08d78e28f49692439b75597036f 100644 (file)
@@ -63,7 +63,8 @@ as the value of $top_child_total (this is done at the end of this file)
        {{if $item.star}}
        <span class="icon s22 star {{$item.isstarred}}" id="starred-{{$item.id}}" title="{{$item.star.starred}}">{{$item.star.starred}}</span>
        {{/if}}
-       {{if $item.lock}}<span class="navicon lock fakelink" onclick="lockview(event, 'item', {{$item.id}});" title="{{$item.lock}}"></span><span class="fa fa-lock"></span>{{/if}}
+       {{if $item.lock}}<span class="navicon lock fakelink" onclick="lockview(event, 'item', {{$item.id}});" title="{{$item.lock}}"></span><span class="fa fa-lock"></span>
+       {{elseif $item.connector}}<span class="fa fa-lock" title="{{$item.connector}}"></span>{{/if}}
 </div>
 {{* /TODO => Unknown block *}}
 
@@ -161,6 +162,8 @@ as the value of $top_child_total (this is done at the end of this file)
                                        <span class="navicon lock fakelink" onClick="lockview(event, 'item', {{$item.id}});" title="{{$item.lock}}" data-toggle="tooltip">
                                                &nbsp;<small><i class="fa fa-lock" aria-hidden="true"></i></small>
                                        </span>
+                               {{elseif $item.connector}}
+                                       <small><i class="fa fa-lock" title="{{$item.connector}}"></i></small>
                                {{/if}}
                                </h4>
 
@@ -327,6 +330,11 @@ as the value of $top_child_total (this is done at the end of this file)
                                {{/if}}
                        {{/if}}
 
+            {{if !$item.lock && !$item.connector}}
+                               <span role="presentation" class="separator button-browser-share"></span>
+                               <button type="button" class="btn-link button-browser-share" onclick="navigator.share({url: '{{$item.plink.orig}}'})"><i class="fa fa-share-alt"></i> {{$item.browsershare}}</button>
+                       {{/if}}
+
                        {{* Put additional actions in a dropdown menu *}}
                        {{if $item.menu && ($item.edpost || $item.tagger || $item.filer || $item.pin || $item.star || $item.follow_thread || $item.ignore || $item.drop.dropping)}}
                                <span role="presentation" class="separator"></span>
@@ -478,6 +486,10 @@ as the value of $top_child_total (this is done at the end of this file)
                                </div>
                        {{/if}}
 
+                       {{if !$item.lock && !$item.connector}}
+                               <button type="button" class="btn btn-sm button-browser-share" onclick="navigator.share({url: '{{$item.plink.orig}}'})" title="{{$item.browsershare}}"><i class="fa fa-share-alt"></i></button>
+                       {{/if}}
+
                        {{* Put additional actions in a dropdown menu *}}
                                <div class="btn-group" role="group">
                                        <img id="like-rotator-{{$item.id}}" class="like-rotator" src="images/rotator.gif" alt="{{$item.wait}}" title="{{$item.wait}}" style="display: none;" />