Merge remote-tracking branch 'upstream/2021.12-rc' into lemmy

This commit is contained in:
Michael 2022-01-23 10:44:27 +00:00
commit 35e2ae3925
18 changed files with 11868 additions and 10510 deletions

View file

@ -107,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);

View 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;

View file

@ -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);
}
}

View file

@ -1,300 +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/>.
*
* 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;
/**
* 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']);
}
/**
* 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 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 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;
}
)
);
}
}

View 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 -->

View file

@ -22,7 +22,6 @@
namespace Friendica\Test\src\Core;
use Friendica\Core\ACL;
use Friendica\Module\BaseApi;
use Friendica\Test\FixtureTest;
class ACLTest extends FixtureTest
@ -34,7 +33,7 @@ class ACLTest extends FixtureTest
*/
public function testCheckAclInput()
{
$result = ACL::isValidContact('<aclstring>', BaseApi::getCurrentUserID());
$result = ACL::isValidContact('<aclstring>', '42');
self::assertFalse($result);
}
@ -45,7 +44,7 @@ class ACLTest extends FixtureTest
*/
public function testCheckAclInputWithEmptyAclString()
{
$result = ACL::isValidContact('', BaseApi::getCurrentUserID());
$result = ACL::isValidContact('', '42');
self::assertTrue($result);
}
}

View file

@ -21,6 +21,7 @@
namespace Friendica\Test\src\Module;
use Friendica\Module\BaseApi;
use Friendica\Test\src\Module\Api\ApiTest;
class BaseApiTest extends ApiTest
@ -47,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());
}
}

View file

@ -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);
*/
}
}

View 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;
}
)
);
}
}

View 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));
}
}

File diff suppressed because it is too large Load diff

View 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';

File diff suppressed because it is too large Load diff

View 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.';

File diff suppressed because it is too large Load diff

View 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'] = 'Ваши записи';
$a->strings['Status Messages and Posts'] = 'Записи и статусы';
$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 ответил(а) вам на %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'] = 'Быстрый старт';

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff