Compare commits

...

24 commits

Author SHA1 Message Date
Hypolite Petovan
2cd18fd4bf
Merge pull request #13551 from tobiasd/20231017-lng
DE, FR, HU, RU translation updates
2023-10-17 13:57:26 -04:00
Tobias Diekershoff
45c63baa5c DE, FR, HU, RU translation updates 2023-10-17 19:46:31 +02:00
Wladimir Palant
b85a2709e8 Allow CORS requests to nodeinfo endpoints 2023-10-16 20:10:36 -04:00
Hypolite Petovan
bc4b036c76
Merge pull request #13533 from nupplaphil/feat/phpunit_upgrade
CI upgrade & Installer Check enabling
2023-10-15 17:39:58 -04:00
Hypolite Petovan
d03506df51
Merge pull request #13547 from annando/exclude
Exclude classes from logging
2023-10-15 16:57:12 -04:00
Michael
4de03b0c11 Exclude classes from logging 2023-10-15 19:45:32 +00:00
Philipp
32c60bf2d0
Update messages.po 2023-10-15 21:29:53 +02:00
Philipp
32ac54d830
Fix SmiliesTest
Reduce noise because of wrong '<?php' test-data
2023-10-15 21:29:53 +02:00
Philipp
4bcf5e07c0
Adjust InstallerTest 2023-10-15 15:49:02 +02:00
Philipp
3ca277e2b2
Add intlChar Installer-Check 2023-10-15 15:49:00 +02:00
Philipp
f3f148a0db
Upgrade PHP version in PHP-CI 2023-10-15 15:48:59 +02:00
Hypolite Petovan
c711208237
Merge pull request #13543 from annando/issue-13535
Issue 13535: Handle Firefish chat messages
2023-10-15 09:12:10 -04:00
Michael
3a7fc22f51 Updated messages.po 2023-10-15 08:28:03 +00:00
Michael
54b9a0320b Merge remote-tracking branch 'upstream/2023.09-rc' into issue-13535 2023-10-15 08:13:32 +00:00
Michael Vogel
a5fb1e53a9
Merge pull request #13544 from MrPetovan/bug/13542-frio-circle-search
[frio] Add search in contact address to filter circle member list
2023-10-15 08:03:50 +02:00
Hypolite Petovan
a1fb0f848c [frio] Add search in contact address to filter circle member list 2023-10-15 00:48:44 -04:00
Michael
3f9783f288 Issue 13535: Handle Firefish chat messages 2023-10-15 03:34:37 +00:00
Michael Vogel
e99fcfddb5
Merge pull request #13541 from MrPetovan/bug/13534-image-blurred
Drop using the proxy large size for image preview
2023-10-14 23:40:18 +02:00
Hypolite Petovan
f19cd54195 Drop using the proxy large size for image preview
- It was causing blurry upscaling with portrait images that have a 640px size preview.
2023-10-14 16:05:01 -04:00
Hypolite Petovan
938b2bae23 Align proxy sizes to photo preview sizes
- PIXEL_SMALL goes from 300 to 320
- PIXEL_MEDIUM goes from 600 to 640
- Use Proxy pixel constants where we used hard-coded pixel values
2023-10-14 16:05:01 -04:00
Hypolite Petovan
4a67771bfa
Merge pull request #13539 from annando/channel-improvements
Channels: Larger fields, better error handling
2023-10-14 15:57:49 -04:00
Michael
b1cf8ee4df Updated messages.po 2023-10-14 19:09:45 +00:00
Michael
fce82deabc Merge remote-tracking branch 'upstream/2023.09-rc' into channel-improvements 2023-10-14 19:06:35 +00:00
Michael
be394b573d Channels: Larger fields, better error handling 2023-10-14 18:39:35 +00:00
34 changed files with 3254 additions and 2459 deletions

View file

@ -5,11 +5,11 @@ matrix:
- PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.33
- PHP_MAJOR_VERSION: 8.0
PHP_VERSION: 8.0.29
PHP_VERSION: 8.0.30
- PHP_MAJOR_VERSION: 8.1
PHP_VERSION: 8.1.21
PHP_VERSION: 8.1.23
- PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.8
PHP_VERSION: 8.2.11
# This forces PHP Unit executions at the "opensocial" labeled location (because of much more power...)
labels:

View file

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 2023.09-rc (Giant Rhubarb)
-- DB_UPDATE_VERSION 1536
-- DB_UPDATE_VERSION 1537
-- ------------------------------------------
@ -502,9 +502,9 @@ CREATE TABLE IF NOT EXISTS `channel` (
`description` varchar(64) COMMENT 'Channel description',
`circle` int COMMENT 'Circle or channel that this channel is based on',
`access-key` varchar(1) COMMENT 'Access key',
`include-tags` varchar(255) COMMENT 'Comma separated list of tags that will be included in the channel',
`exclude-tags` varchar(255) COMMENT 'Comma separated list of tags that aren\'t allowed in the channel',
`full-text-search` varchar(255) COMMENT 'Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode',
`include-tags` varchar(1023) COMMENT 'Comma separated list of tags that will be included in the channel',
`exclude-tags` varchar(1023) COMMENT 'Comma separated list of tags that aren\'t allowed in the channel',
`full-text-search` varchar(1023) COMMENT 'Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode',
`media-type` smallint unsigned COMMENT 'Filtered media types',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),

View file

@ -14,9 +14,9 @@ Fields
| description | Channel description | varchar(64) | YES | | NULL | |
| circle | Circle or channel that this channel is based on | int | YES | | NULL | |
| access-key | Access key | varchar(1) | YES | | NULL | |
| include-tags | Comma separated list of tags that will be included in the channel | varchar(255) | YES | | NULL | |
| exclude-tags | Comma separated list of tags that aren't allowed in the channel | varchar(255) | YES | | NULL | |
| full-text-search | Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode | varchar(255) | YES | | NULL | |
| include-tags | Comma separated list of tags that will be included in the channel | varchar(1023) | YES | | NULL | |
| exclude-tags | Comma separated list of tags that aren't allowed in the channel | varchar(1023) | YES | | NULL | |
| full-text-search | Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode | varchar(1023) | YES | | NULL | |
| media-type | Filtered media types | smallint unsigned | YES | | NULL | |
Indexes

View file

@ -312,16 +312,16 @@ function photos_post(App $a)
Photo::update(['height' => $height, 'width' => $width], ['resource-id' => $resource_id, 'uid' => $page_owner_uid, 'scale' => 0], $image);
if ($width > 640 || $height > 640) {
$image->scaleDown(640);
if ($width > \Friendica\Util\Proxy::PIXEL_MEDIUM || $height > \Friendica\Util\Proxy::PIXEL_MEDIUM) {
$image->scaleDown(\Friendica\Util\Proxy::PIXEL_MEDIUM);
$width = $image->getWidth();
$height = $image->getHeight();
Photo::update(['height' => $height, 'width' => $width], ['resource-id' => $resource_id, 'uid' => $page_owner_uid, 'scale' => 1], $image);
}
if ($width > 320 || $height > 320) {
$image->scaleDown(320);
if ($width > \Friendica\Util\Proxy::PIXEL_SMALL || $height > \Friendica\Util\Proxy::PIXEL_SMALL) {
$image->scaleDown(\Friendica\Util\Proxy::PIXEL_SMALL);
$width = $image->getWidth();
$height = $image->getHeight();

View file

@ -190,6 +190,11 @@ abstract class BaseModule implements ICanHandleRequests
$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($this->args->getQueryString(), 0, 9) == 'nodeinfo/') {
$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($this->args->getQueryString(), 0, 8) == 'profile/') {
$this->response->setHeader('*', 'Access-Control-Allow-Origin');
$this->response->setHeader('*', 'Access-Control-Allow-Headers');

View file

@ -21,8 +21,6 @@
namespace Friendica\Content\Conversation\Factory;
use Friendica\Capabilities\ICanCreateFromTableRow;
use Friendica\Content\Conversation\Entity\Timeline as TimelineEntity;
use Friendica\Content\Conversation\Repository\UserDefinedChannel;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\L10n;

View file

@ -404,8 +404,6 @@ class Installer
}
$this->addCheck(DI::l10n()->t('PDO or MySQLi PHP module'), $status, true, $help);
// Uncomment when IntlChar is installed in the check pipeline.
/*
$help = '';
$status = true;
if (!class_exists('IntlChar')) {
@ -414,7 +412,6 @@ class Installer
$returnVal = false;
}
$this->addCheck(DI::l10n()->t('IntlChar PHP module'), $status, true, $help);
*/
// check for XML DOM Documents being able to be generated
$help = '';

View file

@ -87,7 +87,7 @@ class Introspection implements IHaveCallIntrospections
'line' => $trace[$i - 1]['line'] ?? null,
'function' => $trace[$i]['function'] ?? null,
'request-id' => $this->requestId,
'stack' => System::callstack(10, 4),
'stack' => System::callstack(10, 0, true, ['Friendica\Core\Logger\Type\StreamLogger', 'Friendica\Core\Logger\Type\AbstractLogger', 'Friendica\Core\Logger\Type\WorkerLogger', 'Friendica\Core\Logger']),
];
}

View file

@ -230,9 +230,10 @@ class System
* @param int $offset How many calls to shave off the top of the stack, for example if
* this is called from a centralized method that isn't relevant to the callstack
* @param bool $full If enabled, the callstack is not compacted
* @param array $exclude
* @return string
*/
public static function callstack(int $depth = 4, int $offset = 0, bool $full = false): string
public static function callstack(int $depth = 4, int $offset = 0, bool $full = false, array $exclude = []): string
{
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
@ -247,6 +248,10 @@ class System
while ($func = array_pop($trace)) {
if (!empty($func['class'])) {
if (in_array($func['class'], $exclude)) {
continue;
}
if (!$full && in_array($previous['function'], ['insert', 'fetch', 'toArray', 'exists', 'count', 'selectFirst', 'selectToArray',
'select', 'update', 'delete', 'selectFirstForUser', 'selectForUser'])
&& (substr($previous['class'], 0, 15) === 'Friendica\Model')) {

View file

@ -3483,11 +3483,8 @@ class Item
continue;
}
if ($PostMedia->mimetype->type == 'image') {
$preview_size = $PostMedia->width > $PostMedia->height ? Proxy::SIZE_MEDIUM : Proxy::SIZE_LARGE;
$preview_url = DI::baseUrl() . $PostMedia->getPreviewPath($preview_size);
} elseif ($PostMedia->preview) {
$preview_size = Proxy::SIZE_LARGE;
if ($PostMedia->mimetype->type == 'image' || $PostMedia->preview) {
$preview_size = Proxy::SIZE_MEDIUM;
$preview_url = DI::baseUrl() . $PostMedia->getPreviewPath($preview_size);
} else {
$preview_size = 0;

View file

@ -1255,16 +1255,16 @@ class Photo
return -1;
}
if ($width > 640 || $height > 640) {
$image->scaleDown(640);
if ($width > Proxy::PIXEL_MEDIUM || $height > Proxy::PIXEL_MEDIUM) {
$image->scaleDown(Proxy::PIXEL_MEDIUM);
}
if ($width > 320 || $height > 320) {
if ($width > Proxy::PIXEL_SMALL || $height > Proxy::PIXEL_SMALL) {
$result = self::store($image, $uid, 0, $resource_id, $filename, $album, 1, self::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $description);
if ($result) {
$preview = 1;
}
$image->scaleDown(320);
$image->scaleDown(Proxy::PIXEL_SMALL);
$result = self::store($image, $uid, 0, $resource_id, $filename, $album, 2, self::DEFAULT, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $description);
if ($result && ($preview == 0)) {
$preview = 2;

View file

@ -139,14 +139,6 @@ class Network extends Timeline
$o = '';
if ($this->channel->isTimeline($this->selectedTab) || $this->userDefinedChannel->isTimeline($this->selectedTab, $this->session->getLocalUserId())) {
$items = $this->getChannelItems();
} elseif ($this->community->isTimeline($this->selectedTab)) {
$items = $this->getCommunityItems();
} else {
$items = $this->getItems();
}
$this->page['aside'] .= Circle::sidebarWidget($module, $module . '/circle', 'standard', $this->circleId);
$this->page['aside'] .= GroupManager::widget($module . '/group', $this->session->getLocalUserId(), $this->groupContactId);
$this->page['aside'] .= Widget::postedByYear($module . '/archive', $this->session->getLocalUserId(), false);
@ -244,7 +236,19 @@ class Network extends Timeline
$o .= Profile::getEventsReminderHTML();
}
try {
if ($this->channel->isTimeline($this->selectedTab) || $this->userDefinedChannel->isTimeline($this->selectedTab, $this->session->getLocalUserId())) {
$items = $this->getChannelItems();
} elseif ($this->community->isTimeline($this->selectedTab)) {
$items = $this->getCommunityItems();
} else {
$items = $this->getItems();
}
$o .= $this->conversation->render($items, Conversation::MODE_NETWORK, false, false, $this->getOrder(), $this->session->getLocalUserId());
} catch (\Exception $e) {
$o .= $this->l10n->t('Error %d (%s) while fetching the timeline.', $e->getCode(), $e->getMessage());
}
if ($this->pConfig->get($this->session->getLocalUserId(), 'system', 'infinite_scroll')) {
$o .= HTML::scrollLoader();

View file

@ -346,6 +346,10 @@ class Timeline extends BaseModule
$items = [];
$result = $this->database->select('post-engagement', ['uri-id', 'created', 'owner-id', 'comments', 'activities'], $condition, $params);
if ($this->database->errorNo()) {
throw new \Exception($this->database->errorMessage(), $this->database->errorNo());
}
while ($item = $this->database->fetch($result)) {
$items[$item['uri-id']] = $item;
}

View file

@ -26,12 +26,12 @@ use Friendica\BaseModule;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Core\System;
use Friendica\Model\Photo;
use Friendica\Module\Response;
use Friendica\Network\HTTPException\UnauthorizedException;
use Friendica\Util\Images;
use Friendica\Util\Profiler;
use Friendica\Util\Proxy;
use Friendica\Util\Strings;
use Psr\Log\LoggerInterface;
@ -109,8 +109,8 @@ class Browser extends BaseModule
[
"`resource-id` = ? AND `height` <= ? AND `width` <= ?",
$record['resource-id'],
640,
640
Proxy::PIXEL_MEDIUM,
Proxy::PIXEL_MEDIUM
],
['order' => ['scale']]);
$scale = $photo['scale'] ?? $record['loq'];

View file

@ -71,7 +71,7 @@ class Channels extends BaseSettings
'circle' => (int)$request['new_circle'],
'include-tags' => $this->cleanTags($request['new_include_tags']),
'exclude-tags' => $this->cleanTags($request['new_exclude_tags']),
'full-text-search' => $this->cleanTags($request['new_text_search']),
'full-text-search' => $request['new_text_search'],
'media-type' => ($request['new_image'] ? 1 : 0) | ($request['new_video'] ? 2 : 0) | ($request['new_audio'] ? 4 : 0),
]);
$saved = $this->channel->save($channel);
@ -95,7 +95,7 @@ class Channels extends BaseSettings
'circle' => (int)$request['circle'][$id],
'include-tags' => $this->cleanTags($request['include_tags'][$id]),
'exclude-tags' => $this->cleanTags($request['exclude_tags'][$id]),
'full-text-search' => $this->cleanTags($request['text_search'][$id]),
'full-text-search' => $request['text_search'][$id],
'media-type' => ($request['image'][$id] ? 1 : 0) | ($request['video'][$id] ? 2 : 0) | ($request['audio'][$id] ? 4 : 0),
]);
$saved = $this->channel->save($channel);
@ -131,8 +131,8 @@ class Channels extends BaseSettings
'description' => ["description[$channel->code]", $this->t("Description"), $channel->description],
'access_key' => ["access_key[$channel->code]", $this->t("Access Key"), $channel->accessKey],
'circle' => ["circle[$channel->code]", $this->t('Circle/Channel'), $channel->circle, '', $circles],
'include_tags' => ["include_tags[$channel->code]", $this->t("Include Tags"), $channel->includeTags],
'exclude_tags' => ["exclude_tags[$channel->code]", $this->t("Exclude Tags"), $channel->excludeTags],
'include_tags' => ["include_tags[$channel->code]", $this->t("Include Tags"), str_replace(',', ', ', $channel->includeTags)],
'exclude_tags' => ["exclude_tags[$channel->code]", $this->t("Exclude Tags"), str_replace(',', ', ', $channel->excludeTags)],
'text_search' => ["text_search[$channel->code]", $this->t("Full Text Search"), $channel->fullTextSearch],
'image' => ["image[$channel->code]", $this->t("Images"), $channel->mediaType & 1],
'video' => ["video[$channel->code]", $this->t("Videos"), $channel->mediaType & 2],
@ -180,7 +180,7 @@ class Channels extends BaseSettings
foreach ($tagitems as $tag) {
$tag = trim($tag, '# ');
if (!empty($tag)) {
$tags[] = $tag;
$tags[] = preg_replace('#\s#u', '', $tag);
}
}
return implode(',', $tags);

View file

@ -30,6 +30,7 @@ use Friendica\Network\HTTPException;
use Friendica\Object\Image;
use Friendica\Util\Images;
use Friendica\Util\Strings;
use Friendica\Util\Proxy;
class Index extends BaseSettings
{
@ -82,7 +83,7 @@ class Index extends BaseSettings
$height = $Image->getHeight();
if ($width < 175 || $height < 175) {
$Image->scaleUp(300);
$Image->scaleUp(Proxy::PIXEL_SMALL);
$width = $Image->getWidth();
$height = $Image->getHeight();
}
@ -95,10 +96,10 @@ class Index extends BaseSettings
DI::sysmsg()->addNotice(DI::l10n()->t('Image upload failed.'));
}
if ($width > 640 || $height > 640) {
$Image->scaleDown(640);
if ($width > Proxy::PIXEL_MEDIUM || $height > Proxy::PIXEL_MEDIUM) {
$Image->scaleDown(Proxy::PIXEL_MEDIUM);
if (!Photo::store($Image, DI::userSession()->getLocalUserId(), 0, $resource_id, $filename, DI::l10n()->t(Photo::PROFILE_PHOTOS), 1, Photo::USER_AVATAR)) {
DI::sysmsg()->addNotice(DI::l10n()->t('Image size reduction [%s] failed.', '640'));
DI::sysmsg()->addNotice(DI::l10n()->t('Image size reduction [%s] failed.', Proxy::PIXEL_MEDIUM));
}
}

View file

@ -1114,8 +1114,7 @@ class Processor
$item['contact-id'] = Contact::getIdForURL($activity['author']);
}
if (!empty($activity['directmessage'])) {
self::postMail($activity, $item);
if (!empty($activity['directmessage']) && self::postMail($item)) {
continue;
}
@ -1347,18 +1346,22 @@ class Processor
/**
* Creates an mail post
*
* @param array $activity Activity data
* @param array $item item array
* @return int|bool New mail table row id or false on error
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
private static function postMail(array $activity, array $item)
private static function postMail(array $item): bool
{
if (($item['gravity'] != Item::GRAVITY_PARENT) && !DBA::exists('mail', ['uri' => $item['thr-parent'], 'uid' => $item['uid']])) {
Logger::info('Parent not found, mail will be discarded.', ['uid' => $item['uid'], 'uri' => $item['thr-parent']]);
return false;
}
if (!Contact::isFollower($item['contact-id'], $item['uid']) && !Contact::isSharing($item['contact-id'], $item['uid'])) {
Logger::info('Contact is not a sharer or follower, mail will be discarded.', ['item' => $item]);
return false;
}
Logger::info('Direct Message', $item);
$msg = [];

View file

@ -429,6 +429,10 @@ class Receiver
$object_data['directmessage'] = true;
} else {
$object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage');
if (!empty(JsonLD::fetchElement($activity['as:object'], 'misskey:_misskey_talk'))) {
$object_data = self::setChatData($object_data, $receivers);
}
}
} elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Announce', 'as:Follow'])) && in_array($object_type, self::CONTENT_TYPES)) {
// Create a mostly empty array out of the activity data (instead of the object).
@ -507,6 +511,26 @@ class Receiver
return $object_data;
}
private static function setChatData(array $object_data, array $receivers): array
{
if (count($receivers) != 1) {
return $object_data;
}
$user = User::getById(array_key_first($receivers), ['language']);
$l10n = DI::l10n()->withLang($user['language']);
$object_data['name'] = $l10n->t('Chat');
$mail = DBA::selectFirst('mail', ['uri'], ['uid' => array_key_first($receivers), 'title' => $object_data['name']], ['order' => ['id' => true]]);
if (!empty($mail['uri'])) {
$object_data['reply-to-id'] = $mail['uri'];
}
$object_data['directmessage'] = true;
Logger::debug('Got Misskey Chat');
return $object_data;
}
/**
* Fetches the first user id from the receiver array
*

View file

@ -36,8 +36,8 @@ class Proxy
*/
const SIZE_MICRO = 'micro'; // 48
const SIZE_THUMB = 'thumb'; // 80
const SIZE_SMALL = 'small'; // 300
const SIZE_MEDIUM = 'medium'; // 600
const SIZE_SMALL = 'small'; // 320
const SIZE_MEDIUM = 'medium'; // 640
const SIZE_LARGE = 'large'; // 1024
/**
@ -45,8 +45,8 @@ class Proxy
*/
const PIXEL_MICRO = 48;
const PIXEL_THUMB = 80;
const PIXEL_SMALL = 300;
const PIXEL_MEDIUM = 600;
const PIXEL_SMALL = 320;
const PIXEL_MEDIUM = 640;
const PIXEL_LARGE = 1024;
/**

View file

@ -56,7 +56,7 @@ use Friendica\Database\DBA;
// This file is required several times during the test in DbaDefinition which justifies this condition
if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1536);
define('DB_UPDATE_VERSION', 1537);
}
return [
@ -560,9 +560,9 @@ return [
"description" => ["type" => "varchar(64)", "comment" => "Channel description"],
"circle" => ["type" => "int", "comment" => "Circle or channel that this channel is based on"],
"access-key" => ["type" => "varchar(1)", "comment" => "Access key"],
"include-tags" => ["type" => "varchar(255)", "comment" => "Comma separated list of tags that will be included in the channel"],
"exclude-tags" => ["type" => "varchar(255)", "comment" => "Comma separated list of tags that aren't allowed in the channel"],
"full-text-search" => ["type" => "varchar(255)", "comment" => "Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode"],
"include-tags" => ["type" => "varchar(1023)", "comment" => "Comma separated list of tags that will be included in the channel"],
"exclude-tags" => ["type" => "varchar(1023)", "comment" => "Comma separated list of tags that aren't allowed in the channel"],
"full-text-search" => ["type" => "varchar(1023)", "comment" => "Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode"],
"media-type" => ["type" => "smallint unsigned", "comment" => "Filtered media types"],
],
"indexes" => [

View file

@ -160,7 +160,7 @@ EOF;
public function testWrongContent()
{
$filename = 'addon/testaddon1/static/hooks.config.php';
$wrongContent = "<php return 'wrong';";
$wrongContent = "<?php return 'wrong';";
vfsStream::create($this->structure)->at($this->root);
@ -190,7 +190,7 @@ EOF;
public function testNoHooksConfig()
{
$filename = 'addon/testaddon1/static/hooks.config.php';
$wrongContent = "<php return 'wrong';";
$wrongContent = "<?php return 'wrong';";
vfsStream::create($this->structure)->at($this->root);

View file

@ -190,7 +190,7 @@ EOF,
$hookFileManager = new StrategiesFileManager($this->root->url(), $addonLoader);
vfsStream::newFile(StrategiesFileManager::STATIC_DIR . '/' . StrategiesFileManager::CONFIG_NAME . '.config.php')
->withContent("<php return 'WRONG_CONTENT';")
->withContent("<?php return 'WRONG_CONTENT';")
->at($this->root);
self::expectException(HookConfigException::class);

View file

@ -82,11 +82,15 @@ class InstallerTest extends MockedTest
/**
* Mocking the DI::l10n()->t() calls for the function checks
*
* @param bool $disableTimes if true, the L10, which are just created in case of an error, will be set to false (because the check will succeed)
*/
private function mockFunctionL10TCalls()
private function mockFunctionL10TCalls(bool $disableTimes = false)
{
$this->mockL10nT('Apache mod_rewrite module', 1);
$this->mockL10nT('PDO or MySQLi PHP module', 1);
$this->mockL10nT('IntlChar PHP module', 1);
$this->mockL10nT('Error: The IntlChar module is not installed.', $disableTimes ? 0 : 1);
$this->mockL10nT('libCurl PHP module', 1);
$this->mockL10nT('Error: libCURL PHP module required but not installed.', 1);
$this->mockL10nT('XML PHP module', 1);
@ -180,11 +184,22 @@ class InstallerTest extends MockedTest
*/
public function testCheckFunctions()
{
$this->mockFunctionL10TCalls();
$this->setClasses(['IntlChar' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(2,
'IntlChar PHP module',
'Error: The IntlChar module is not installed.',
false,
true,
$install->getChecks());
$this->mockFunctionL10TCalls();
$this->setFunctions(['curl_init' => false, 'imagecreatefromjpeg' => true]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(3,
self::assertCheckExist(4,
'libCurl PHP module',
'Error: libCURL PHP module required but not installed.',
false,
@ -195,7 +210,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['imagecreatefromjpeg' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(4,
self::assertCheckExist(5,
'GD graphics PHP module',
'Error: GD graphics PHP module with JPEG support required but not installed.',
false,
@ -206,7 +221,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['openssl_public_encrypt' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(5,
self::assertCheckExist(6,
'OpenSSL PHP module',
'Error: openssl PHP module required but not installed.',
false,
@ -217,7 +232,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['mb_strlen' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(6,
self::assertCheckExist(7,
'mb_string PHP module',
'Error: mb_string PHP module required but not installed.',
false,
@ -228,7 +243,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['iconv_strlen' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(7,
self::assertCheckExist(8,
'iconv PHP module',
'Error: iconv PHP module required but not installed.',
false,
@ -239,7 +254,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['posix_kill' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(8,
self::assertCheckExist(9,
'POSIX PHP module',
'Error: POSIX PHP module required but not installed.',
false,
@ -250,7 +265,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['proc_open' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(9,
self::assertCheckExist(10,
'Program execution functions',
'Error: Program execution functions (proc_open) required but not enabled.',
false,
@ -260,7 +275,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['json_encode' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(10,
self::assertCheckExist(11,
'JSON PHP module',
'Error: JSON PHP module required but not installed.',
false,
@ -271,7 +286,7 @@ class InstallerTest extends MockedTest
$this->setFunctions(['finfo_open' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(11,
self::assertCheckExist(12,
'File Information PHP module',
'Error: File Information PHP module required but not installed.',
false,
@ -282,14 +297,14 @@ class InstallerTest extends MockedTest
$this->setFunctions(['gmp_strval' => false]);
$install = new Installer();
self::assertFalse($install->checkFunctions());
self::assertCheckExist(12,
self::assertCheckExist(13,
'GNU Multiple Precision PHP module',
'Error: GNU Multiple Precision PHP module required but not installed.',
false,
true,
$install->getChecks());
$this->mockFunctionL10TCalls();
$this->mockFunctionL10TCalls(true);
$this->setFunctions([
'curl_init' => true,
'imagecreatefromjpeg' => true,
@ -301,6 +316,7 @@ class InstallerTest extends MockedTest
'finfo_open' => true,
'gmp_strval' => true,
]);
$this->setClasses(['IntlChar' => true]);
$install = new Installer();
self::assertTrue($install->checkFunctions());
}

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 2023.09-rc\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-14 14:18-0400\n"
"POT-Creation-Date: 2023-10-15 13:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -72,7 +72,7 @@ msgstr ""
#: src/Module/Settings/Delegation.php:90 src/Module/Settings/Display.php:90
#: src/Module/Settings/Display.php:193
#: src/Module/Settings/Profile/Photo/Crop.php:165
#: src/Module/Settings/Profile/Photo/Index.php:111
#: src/Module/Settings/Profile/Photo/Index.php:112
#: src/Module/Settings/RemoveMe.php:119 src/Module/Settings/UserExport.php:80
#: src/Module/Settings/UserExport.php:114
#: src/Module/Settings/UserExport.php:215
@ -2189,8 +2189,8 @@ msgid ""
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
msgstr ""
#: src/Content/Text/BBCode.php:994 src/Model/Item.php:3816
#: src/Model/Item.php:3822 src/Model/Item.php:3823
#: src/Content/Text/BBCode.php:994 src/Model/Item.php:3813
#: src/Model/Item.php:3819 src/Model/Item.php:3820
msgid "Link to source"
msgstr ""
@ -2633,214 +2633,222 @@ msgstr ""
msgid "PDO or MySQLi PHP module"
msgstr ""
#: src/Core/Installer.php:425
#: src/Core/Installer.php:411
msgid "Error: The IntlChar module is not installed."
msgstr ""
#: src/Core/Installer.php:414
msgid "IntlChar PHP module"
msgstr ""
#: src/Core/Installer.php:422
msgid "Error, XML PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:429
#: src/Core/Installer.php:426
msgid "XML PHP module"
msgstr ""
#: src/Core/Installer.php:432
#: src/Core/Installer.php:429
msgid "libCurl PHP module"
msgstr ""
#: src/Core/Installer.php:433
#: src/Core/Installer.php:430
msgid "Error: libCURL PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:439
#: src/Core/Installer.php:436
msgid "GD graphics PHP module"
msgstr ""
#: src/Core/Installer.php:440
#: src/Core/Installer.php:437
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr ""
#: src/Core/Installer.php:446
#: src/Core/Installer.php:443
msgid "OpenSSL PHP module"
msgstr ""
#: src/Core/Installer.php:447
#: src/Core/Installer.php:444
msgid "Error: openssl PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:453
#: src/Core/Installer.php:450
msgid "mb_string PHP module"
msgstr ""
#: src/Core/Installer.php:454
#: src/Core/Installer.php:451
msgid "Error: mb_string PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:460
#: src/Core/Installer.php:457
msgid "iconv PHP module"
msgstr ""
#: src/Core/Installer.php:461
#: src/Core/Installer.php:458
msgid "Error: iconv PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:467
#: src/Core/Installer.php:464
msgid "POSIX PHP module"
msgstr ""
#: src/Core/Installer.php:468
#: src/Core/Installer.php:465
msgid "Error: POSIX PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:474
#: src/Core/Installer.php:471
msgid "Program execution functions"
msgstr ""
#: src/Core/Installer.php:475
#: src/Core/Installer.php:472
msgid ""
"Error: Program execution functions (proc_open) required but not enabled."
msgstr ""
#: src/Core/Installer.php:481
#: src/Core/Installer.php:478
msgid "JSON PHP module"
msgstr ""
#: src/Core/Installer.php:482
#: src/Core/Installer.php:479
msgid "Error: JSON PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:488
#: src/Core/Installer.php:485
msgid "File Information PHP module"
msgstr ""
#: src/Core/Installer.php:489
#: src/Core/Installer.php:486
msgid "Error: File Information PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:495
#: src/Core/Installer.php:492
msgid "GNU Multiple Precision PHP module"
msgstr ""
#: src/Core/Installer.php:496
#: src/Core/Installer.php:493
msgid "Error: GNU Multiple Precision PHP module required but not installed."
msgstr ""
#: src/Core/Installer.php:519
#: src/Core/Installer.php:516
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."
"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 ""
#: src/Core/Installer.php:520
#: src/Core/Installer.php:517
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 ""
#: src/Core/Installer.php:521
#: src/Core/Installer.php:518
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/Core/Installer.php:522
#: src/Core/Installer.php:519
msgid ""
"You can alternatively skip this procedure and perform a manual installation. "
"Please see the file \"doc/INSTALL.md\" for instructions."
msgstr ""
#: src/Core/Installer.php:525
#: src/Core/Installer.php:522
msgid "config/local.config.php is writable"
msgstr ""
#: src/Core/Installer.php:545
#: src/Core/Installer.php:542
msgid ""
"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr ""
#: src/Core/Installer.php:546
#: src/Core/Installer.php:543
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 ""
#: src/Core/Installer.php:547
#: src/Core/Installer.php:544
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has "
"write access to this folder."
msgstr ""
#: src/Core/Installer.php:548
#: src/Core/Installer.php:545
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 ""
#: src/Core/Installer.php:551
#: src/Core/Installer.php:548
msgid "view/smarty3 is writable"
msgstr ""
#: src/Core/Installer.php:579
#: src/Core/Installer.php:576
msgid ""
"Url rewrite in .htaccess seems not working. Make sure you copied .htaccess-"
"dist to .htaccess."
msgstr ""
#: src/Core/Installer.php:580
#: src/Core/Installer.php:577
msgid ""
"In some circumstances (like running inside containers), you can skip this "
"error."
msgstr ""
#: src/Core/Installer.php:582
#: src/Core/Installer.php:579
msgid "Error message from Curl when fetching"
msgstr ""
#: src/Core/Installer.php:588
#: src/Core/Installer.php:585
msgid "Url rewrite is working"
msgstr ""
#: src/Core/Installer.php:617
#: src/Core/Installer.php:614
msgid ""
"The detection of TLS to secure the communication between the browser and the "
"new Friendica server failed."
msgstr ""
#: src/Core/Installer.php:618
#: src/Core/Installer.php:615
msgid ""
"It is highly encouraged to use Friendica only over a secure connection as "
"sensitive information like passwords will be transmitted."
msgstr ""
#: src/Core/Installer.php:619
#: src/Core/Installer.php:616
msgid "Please ensure that the connection to the server is secure."
msgstr ""
#: src/Core/Installer.php:620
#: src/Core/Installer.php:617
msgid "No TLS detected"
msgstr ""
#: src/Core/Installer.php:622
#: src/Core/Installer.php:619
msgid "TLS detected"
msgstr ""
#: src/Core/Installer.php:649
#: src/Core/Installer.php:646
msgid "ImageMagick PHP extension is not installed"
msgstr ""
#: src/Core/Installer.php:651
#: src/Core/Installer.php:648
msgid "ImageMagick PHP extension is installed"
msgstr ""
#: src/Core/Installer.php:653
#: src/Core/Installer.php:650
msgid "ImageMagick supports GIF"
msgstr ""
#: src/Core/Installer.php:675
#: src/Core/Installer.php:672
msgid "Database already in use."
msgstr ""
#: src/Core/Installer.php:680
#: src/Core/Installer.php:677
msgid "Could not connect to database."
msgstr ""
@ -3430,44 +3438,44 @@ msgstr ""
msgid "Content warning: %s"
msgstr ""
#: src/Model/Item.php:3723
#: src/Model/Item.php:3720
msgid "bytes"
msgstr ""
#: src/Model/Item.php:3754
#: src/Model/Item.php:3751
#, php-format
msgid "%2$s (%3$d%%, %1$d vote)"
msgid_plural "%2$s (%3$d%%, %1$d votes)"
msgstr[0] ""
msgstr[1] ""
#: src/Model/Item.php:3756
#: src/Model/Item.php:3753
#, php-format
msgid "%2$s (%1$d vote)"
msgid_plural "%2$s (%1$d votes)"
msgstr[0] ""
msgstr[1] ""
#: src/Model/Item.php:3761
#: src/Model/Item.php:3758
#, php-format
msgid "%d voter. Poll end: %s"
msgid_plural "%d voters. Poll end: %s"
msgstr[0] ""
msgstr[1] ""
#: src/Model/Item.php:3763
#: src/Model/Item.php:3760
#, php-format
msgid "%d voter."
msgid_plural "%d voters."
msgstr[0] ""
msgstr[1] ""
#: src/Model/Item.php:3765
#: src/Model/Item.php:3762
#, php-format
msgid "Poll end: %s"
msgstr ""
#: src/Model/Item.php:3799 src/Model/Item.php:3800
#: src/Model/Item.php:3796 src/Model/Item.php:3797
msgid "View on separate page"
msgstr ""
@ -5357,9 +5365,9 @@ msgstr ""
#: src/Module/Admin/Summary.php:98
msgid ""
"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.)"
"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 ""
#: src/Module/Admin/Summary.php:102
@ -5510,8 +5518,8 @@ msgstr ""
#, 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 ""
#: src/Module/Admin/Tos.php:81
@ -5967,7 +5975,7 @@ msgid "Contact not found."
msgstr ""
#: src/Module/Circle.php:102 src/Module/Contact/Contacts.php:66
#: src/Module/Conversation/Network.php:240
#: src/Module/Conversation/Network.php:232
msgid "Invalid contact."
msgstr ""
@ -6753,16 +6761,21 @@ msgstr ""
msgid "Not available."
msgstr ""
#: src/Module/Conversation/Network.php:226
#: src/Module/Conversation/Network.php:218
msgid "No such circle"
msgstr ""
#: src/Module/Conversation/Network.php:230
#: src/Module/Conversation/Network.php:222
#, php-format
msgid "Circle: %s"
msgstr ""
#: src/Module/Conversation/Network.php:325
#: src/Module/Conversation/Network.php:250
#, php-format
msgid "Error %d (%s) while fetching the timeline."
msgstr ""
#: src/Module/Conversation/Network.php:329
msgid "Network feed not available."
msgstr ""
@ -7498,7 +7511,7 @@ msgstr ""
#: src/Module/Media/Attachment/Browser.php:79
#: src/Module/Media/Photo/Browser.php:90
#: src/Module/Settings/Profile/Photo/Index.php:128
#: src/Module/Settings/Profile/Photo/Index.php:129
msgid "Upload"
msgstr ""
@ -7521,12 +7534,12 @@ msgstr ""
#: src/Module/Media/Photo/Upload.php:152 src/Module/Media/Photo/Upload.php:153
#: src/Module/Profile/Photos.php:217
#: src/Module/Settings/Profile/Photo/Index.php:68
#: src/Module/Settings/Profile/Photo/Index.php:69
msgid "Unable to process image."
msgstr ""
#: src/Module/Media/Photo/Upload.php:178 src/Module/Profile/Photos.php:237
#: src/Module/Settings/Profile/Photo/Index.php:95
#: src/Module/Settings/Profile/Photo/Index.php:96
msgid "Image upload failed."
msgstr ""
@ -8805,7 +8818,7 @@ msgstr ""
#: src/Module/Profile/Photos.php:164 src/Module/Profile/Photos.php:167
#: src/Module/Profile/Photos.php:194
#: src/Module/Settings/Profile/Photo/Index.php:59
#: src/Module/Settings/Profile/Photo/Index.php:60
#, php-format
msgid "Image exceeds size limit of %s"
msgstr ""
@ -8839,8 +8852,8 @@ msgstr ""
#: src/Module/Profile/Profile.php:158
#, php-format
msgid ""
"You're currently viewing your profile as <b>%s</b> <a href=\"%s\" "
"class=\"btn btn-sm pull-right\">Cancel</a>"
"You're currently viewing your profile as <b>%s</b> <a href=\"%s\" class="
"\"btn btn-sm pull-right\">Cancel</a>"
msgstr ""
#: src/Module/Profile/Profile.php:167
@ -9388,8 +9401,8 @@ msgstr ""
#: src/Module/Security/TwoFactor/Verify.php:100
#, php-format
msgid ""
"If you do not have access to your authentication code you can use a <a "
"href=\"%s\">two-factor recovery code</a>."
"If you do not have access to your authentication code you can use a <a href="
"\"%s\">two-factor recovery code</a>."
msgstr ""
#: src/Module/Security/TwoFactor/Verify.php:101
@ -10610,7 +10623,7 @@ msgstr ""
#: src/Module/Settings/Profile/Photo/Crop.php:107
#: src/Module/Settings/Profile/Photo/Crop.php:125
#: src/Module/Settings/Profile/Photo/Crop.php:143
#: src/Module/Settings/Profile/Photo/Index.php:101
#: src/Module/Settings/Profile/Photo/Index.php:102
#, php-format
msgid "Image size reduction [%s] failed."
msgstr ""
@ -10646,35 +10659,35 @@ msgstr ""
msgid "Use Image As Is"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:45
#: src/Module/Settings/Profile/Photo/Index.php:46
msgid "Missing uploaded image."
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:124
#: src/Module/Settings/Profile/Photo/Index.php:125
msgid "Profile Picture Settings"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:125
#: src/Module/Settings/Profile/Photo/Index.php:126
msgid "Current Profile Picture"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:126
#: src/Module/Settings/Profile/Photo/Index.php:127
msgid "Upload Profile Picture"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:127
#: src/Module/Settings/Profile/Photo/Index.php:128
msgid "Upload Picture:"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:132
#: src/Module/Settings/Profile/Photo/Index.php:133
msgid "or"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:134
#: src/Module/Settings/Profile/Photo/Index.php:135
msgid "skip this step"
msgstr ""
#: src/Module/Settings/Profile/Photo/Index.php:136
#: src/Module/Settings/Profile/Photo/Index.php:137
msgid "select a photo from your photo albums"
msgstr ""
@ -11040,8 +11053,8 @@ msgstr ""
#: src/Module/Settings/TwoFactor/Verify.php:149
#, php-format
msgid ""
"<p>Or you can open the following URL in your mobile device:</p><p><a "
"href=\"%s\">%s</a></p>"
"<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:156
@ -11150,9 +11163,9 @@ msgstr ""
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/settings/"
"removeme\">%1$s/settings/removeme</a>. The deletion of the account will be "
"permanent. Deletion of the data will also be requested from the nodes of the "
"to delete their account they can do so at <a href=\"%1$s/settings/removeme\">"
"%1$s/settings/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 ""
@ -12174,6 +12187,10 @@ msgstr ""
msgid "Reacted with %s by: %s"
msgstr ""
#: src/Protocol/ActivityPub/Receiver.php:522
msgid "Chat"
msgstr ""
#: src/Protocol/Delivery.php:547
msgid "(no subject)"
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -627,13 +627,13 @@ $a->strings['Trending Tags (last %d hour)'] = [
1 => 'Trending Tags (%d Stunden)',
];
$a->strings['More Trending Tags'] = 'mehr Trending Tags';
$a->strings['Post to group'] = 'Beitrag an Gruppe';
$a->strings['Mention'] = 'Mention';
$a->strings['XMPP:'] = 'XMPP:';
$a->strings['Matrix:'] = 'Matrix:';
$a->strings['Location:'] = 'Ort:';
$a->strings['Network:'] = 'Netzwerk:';
$a->strings['Unfollow'] = 'Entfolgen';
$a->strings['Mention'] = 'Mention';
$a->strings['Post to group'] = 'Beitrag an Gruppe';
$a->strings['View group'] = 'Gruppe betrachten';
$a->strings['Yourself'] = 'Du selbst';
$a->strings['Mutuals'] = 'Beidseitige Freundschaft';
@ -670,6 +670,8 @@ $a->strings['Apache mod_rewrite module'] = 'Apache mod_rewrite module';
$a->strings['Error: PDO or MySQLi PHP module required but not installed.'] = 'Fehler: PDO oder MySQLi PHP Modul erforderlich, aber nicht installiert.';
$a->strings['Error: The MySQL driver for PDO is not installed.'] = 'Fehler: der MySQL Treiber für PDO ist nicht installiert';
$a->strings['PDO or MySQLi PHP module'] = 'PDO oder MySQLi PHP Modul';
$a->strings['Error: The IntlChar module is not installed.'] = 'Fehler: Das IntlChar-Modul von PHP ist nicht installiert.';
$a->strings['IntlChar PHP module'] = 'PHP: IntlChar-Modul';
$a->strings['Error, XML PHP module required but not installed.'] = 'Fehler: XML PHP Modul erforderlich aber nicht installiert.';
$a->strings['XML PHP module'] = 'XML PHP Modul';
$a->strings['libCurl PHP module'] = 'PHP: libCurl-Modul';
@ -1076,6 +1078,7 @@ allerdings dabei helfen, neue und interessante Kontakte zu knüpfen.
Solltest du dein Nutzerkonto löschen wollen, kannst du dies unter %3$s/settings/removeme jederzeit tun.
Danke für deine Aufmerksamkeit und willkommen auf %2$s.';
$a->strings['User with delegates can\'t be removed, please remove delegate users first'] = 'Benutzer mit Delegaten können nicht entfernt werden, bitte entfernen Sie zuerst die delegierten Benutzer';
$a->strings['Addon not found.'] = 'Addon nicht gefunden.';
$a->strings['Addon %s disabled.'] = 'Addon %s ausgeschaltet.';
$a->strings['Addon %s enabled.'] = 'Addon %s aktiviert.';
@ -1730,6 +1733,7 @@ $a->strings['Community option not available.'] = 'Optionen für die Gemeinschaft
$a->strings['Not available.'] = 'Nicht verfügbar.';
$a->strings['No such circle'] = 'Circle ist nicht vorhanden';
$a->strings['Circle: %s'] = 'Circle: %s';
$a->strings['Error %d (%s) while fetching the timeline.'] = 'Fehler %d (%s) beim Abruf der Timeline.';
$a->strings['Network feed not available.'] = 'Netzwerkfeed nicht verfügbar.';
$a->strings['Own Contacts'] = 'Eigene Kontakte';
$a->strings['Include'] = 'Einschließen';
@ -1803,11 +1807,6 @@ $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.';
$a->strings['Select an identity to manage: '] = 'Wähle eine Identität zum Verwalten aus: ';
$a->strings['No entries (some entries may be hidden).'] = 'Keine Einträge (einige Einträge könnten versteckt sein).';
$a->strings['Find on this site'] = 'Auf diesem Server suchen';
$a->strings['Results for:'] = 'Ergebnisse für:';
@ -2470,6 +2469,31 @@ $a->strings['If you have moved this profile from another server, and some of you
$a->strings['Resend relocate message to contacts'] = 'Umzugsbenachrichtigung erneut an Kontakte senden';
$a->strings['Addon Settings'] = 'Addon Einstellungen';
$a->strings['No Addon settings configured'] = 'Keine Addon-Einstellungen konfiguriert';
$a->strings['Label'] = 'Bezeichnung';
$a->strings['Description'] = 'Beschreibung';
$a->strings['Access Key'] = 'Zugriffsschlüssel';
$a->strings['Circle/Channel'] = 'Circle/Kanal';
$a->strings['Include Tags'] = 'Tags einschließen';
$a->strings['Exclude Tags'] = 'Tags ausschließen';
$a->strings['Full Text Search'] = 'Volltextsuche';
$a->strings['Delete channel'] = 'Lösche Kanal';
$a->strings['Check to delete this entry from the channel list'] = 'Haken setzen, um diesen Eintrag aus der Kanalliste zu löschen';
$a->strings['Short name for the channel. It is displayed on the channels widget.'] = 'Kurzname für den Kanal. Er wird im Widget für die Kanäle angezeigt.';
$a->strings['This should describe the content of the channel in a few word.'] = 'Dies sollte den Inhalt des Kanals in wenigen Worten beschreiben.';
$a->strings['When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.'] = 'Wenn Sie auf diesen Kanal über einen Zugangsschlüssel zugreifen wollen, können Sie ihn hier festlegen. Achten Sie darauf, dass Sie nicht einen bereits verwendeten Schlüssel verwenden.';
$a->strings['Select a circle or channel, that your channel should be based on.'] = 'Wählen Sie einen Circle oder Kanal, auf dem Ihr Kanal basieren soll.';
$a->strings['Comma separated list of tags. A post will be used when it contains any of the listed tags.'] = 'Durch Kommata getrennte Liste von Tags. Ein Beitrag wird verwendet, wenn er eines der aufgeführten Tags enthält.';
$a->strings['Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.'] = 'Durch Kommata getrennte Liste von Tags. Wenn ein Beitrag eines dieser Tags enthält, wird er nicht Teil dieses Kanals sein.';
$a->strings['Search terms for the body, supports the "boolean mode" operators from MariaDB. See the help for a complete list of operators and additional keywords: %s'] = 'Suchbegriffe für den Body, unterstützt die "boolean mode"-Operatoren von MariaDB. In der Hilfe finden Sie eine vollständige Liste der Operatoren und zusätzliche Schlüsselwörter: %s';
$a->strings['Check to display images in the channel.'] = 'Aktivieren Sie diese Option, um Bilder im Kanal anzuzeigen.';
$a->strings['Check to display videos in the channel.'] = 'Aktivieren Sie diese Option, um Videos im Kanal anzuzeigen.';
$a->strings['Check to display audio in the channel.'] = 'Aktivieren Sie diese Option, um Audio im Kanal anzuzeigen.';
$a->strings['This page can be used to define your own channels.'] = 'Auf dieser Seite können Sie Ihre eigenen Kanäle definieren.';
$a->strings['Add new entry to the channel list'] = 'Neuen Eintrag zur Kanalliste hinzufügen';
$a->strings['Add'] = 'Hinzufügen';
$a->strings['Current Entries in the channel list'] = 'Aktuelle Einträge in der Kanalliste';
$a->strings['Delete entry from the channel list'] = 'Eintrag aus der Kanalliste löschen';
$a->strings['Delete entry from the channel list?'] = 'Eintrag aus der Kanalliste löschen?';
$a->strings['Failed to connect with email account using the settings provided.'] = 'Verbindung zum E-Mail-Konto mit den angegebenen Einstellungen nicht möglich.';
$a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
$a->strings['Built-in support for %s connectivity is enabled'] = 'Eingebaute Unterstützung für die Verbindung zu %s ist aktiviert.';
@ -2526,7 +2550,6 @@ $a->strings['Delegates'] = 'Bevollmächtigte';
$a->strings['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.'] = 'Bevollmächtigte sind in der Lage, alle Aspekte dieses Kontos/dieser Seite zu verwalten, abgesehen von den Grundeinstellungen des Kontos. Bitte gib niemandem eine Bevollmächtigung für Deinen privaten Account, dem du nicht absolut vertraust!';
$a->strings['Existing Page Delegates'] = 'Vorhandene Bevollmächtigte für die Seite';
$a->strings['Potential Delegates'] = 'Potentielle Bevollmächtigte';
$a->strings['Add'] = 'Hinzufügen';
$a->strings['No entries.'] = 'Keine Einträge.';
$a->strings['The theme you chose isn\'t available.'] = 'Das gewählte Theme ist nicht verfügbar';
$a->strings['%s - (Unsupported)'] = '%s - (Nicht unterstützt)';
@ -2561,13 +2584,12 @@ $a->strings['Stay local'] = 'Bleib lokal';
$a->strings['Don\'t go to a remote system when following a contact link.'] = 'Gehe nicht zu einem Remote-System, wenn einem Kontaktlink gefolgt wird';
$a->strings['Link preview mode'] = 'Vorschau Modus für Links';
$a->strings['Appearance of the link preview that is added to each post with a link.'] = 'Aussehen der Linkvorschau, die zu jedem Beitrag mit einem Link hinzugefügt wird.';
$a->strings['Timelines for the network page:'] = 'Timelines für die Netzwerkseite:';
$a->strings['Select all the timelines that you want to see on your network page.'] = 'Wählen Sie alle Timelines aus, die Sie auf Ihrer Netzwerkseite sehen möchten.';
$a->strings['Bookmark'] = 'Lesezeichen';
$a->strings['Enable timelines that you want to see in the channels widget. Bookmark timelines that you want to see in the top menu.'] = 'Aktivieren Sie dieTimelines, die Sie im Kanäle-Widget sehen möchten. Setzen Sie ein Lesezeichen für Timelines, die Sie im oberen Menü sehen möchten.';
$a->strings['Channel languages:'] = 'Channel Spachen:';
$a->strings['Select all languages that you want to see in your channels.'] = 'Wählen Sie alle Sprachen aus, die Sie in Ihren Kanälen sehen möchten.';
$a->strings['Beginning of week:'] = 'Wochenbeginn:';
$a->strings['Default calendar view:'] = 'Standard-Kalenderansicht:';
$a->strings['%s: %s'] = '%s: %s';
$a->strings['Additional Features'] = 'Zusätzliche Features';
$a->strings['Connected Apps'] = 'Verbundene Programme';
$a->strings['Remove authorization'] = 'Autorisierung entziehen';
@ -2628,11 +2650,13 @@ $a->strings['Upload Picture:'] = 'Bild hochladen';
$a->strings['or'] = 'oder';
$a->strings['skip this step'] = 'diesen Schritt überspringen';
$a->strings['select a photo from your photo albums'] = 'wähle ein Foto aus deinen Fotoalben';
$a->strings['There was a validation error, please make sure you\'re logged in with the account you want to remove and try again.'] = 'Es gab einen Überprüfungsfehler. Bitte vergewissern Sie sich, dass Sie mit dem Konto, das Sie entfernen möchten, angemeldet sind, und versuchen Sie es erneut.';
$a->strings['If this error persists, please contact your administrator.'] = 'Wenn dieser Fehler weiterhin besteht, wenden Sie sich bitte an den Administrator Ihrer Instanz.';
$a->strings['[Friendica System Notify]'] = '[Friendica-Systembenachrichtigung]';
$a->strings['User deleted their account'] = 'Gelöschter Nutzeraccount';
$a->strings['On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'] = 'Ein Nutzer deiner Friendica-Instanz hat seinen Account gelöscht. Bitte stelle sicher, dass dessen Daten aus deinen Backups entfernt werden.';
$a->strings['The user id is %d'] = 'Die ID des Users lautet %d';
$a->strings['Your user account has been successfully removed. Bye bye!'] = 'Dein Nutzeraccount wurde erfolgreich entfernt. Bye bye!';
$a->strings['Your account has been successfully removed. Bye bye!'] = 'Ihr Konto wurde erfolgreich gelöscht. Auf Wiedersehen!';
$a->strings['Remove My Account'] = 'Konto löschen';
$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Dein Konto wird endgültig gelöscht. Es gibt keine Möglichkeit, es wiederherzustellen.';
$a->strings['Please enter your password for verification:'] = 'Bitte gib dein Passwort zur Verifikation ein:';
@ -2653,7 +2677,6 @@ $a->strings['App-specific password successfully revoked.'] = 'App spezifisches P
$a->strings['Two-factor app-specific passwords'] = 'Zwei-Faktor App spezifische Passwörter.';
$a->strings['<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>'] = '<p>App spezifische Passwörter sind zufällig generierte Passwörter die anstelle des regulären Passworts zur Anmeldung mit Client Anwendungen verwendet werden, wenn diese Anwendungen die Zwei-Faktor-Authentifizierung nicht unterstützen.</p>';
$a->strings['Make sure to copy your new app-specific password now. You wont be able to see it again!'] = 'Das neue App spezifische Passwort muss jetzt übertragen werden. Später wirst du es nicht mehr einsehen können!';
$a->strings['Description'] = 'Beschreibung';
$a->strings['Last Used'] = 'Zuletzt verwendet';
$a->strings['Revoke'] = 'Widerrufen';
$a->strings['Revoke All'] = 'Alle widerrufen';
@ -2756,6 +2779,11 @@ $a->strings['Privacy Statement'] = 'Datenschutzerklärung';
$a->strings['Rules'] = 'Regeln';
$a->strings['Parameter uri_id is missing.'] = 'Der Parameter uri_id fehlt.';
$a->strings['The requested item doesn\'t exist or has been deleted.'] = 'Der angeforderte Beitrag existiert nicht oder wurde gelöscht.';
$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.';
$a->strings['Select an identity to manage: '] = 'Wähle eine Identität zum Verwalten aus: ';
$a->strings['User imports on closed servers can only be done by an administrator.'] = 'Auf geschlossenen Servern können ausschließlich die Administratoren Benutzerkonten importieren.';
$a->strings['Move account'] = 'Account umziehen';
$a->strings['You can import an account from another Friendica server.'] = 'Du kannst einen Account von einem anderen Friendica Server importieren.';
@ -2938,6 +2966,9 @@ $a->strings['Comment this item on your system'] = 'Kommentiere diesen Beitrag vo
$a->strings['Remote comment'] = 'Entfernter Kommentar';
$a->strings['Share via ...'] = 'Teile mit...';
$a->strings['Share via external services'] = 'Teile mit einem externen Dienst';
$a->strings['Unknown parent'] = 'Unbekannter Ursprungsbeitrag';
$a->strings['in reply to %s'] = 'Als Antwort auf %s';
$a->strings['Parent is probably private or not federated.'] = 'Der Urspungsbeitrag ist wahrscheinlich privat oder nicht föderiert.';
$a->strings['to'] = 'zu';
$a->strings['via'] = 'via';
$a->strings['Wall-to-Wall'] = 'Wall-to-Wall';
@ -2963,6 +2994,7 @@ $a->strings['Attended by: %s'] = 'Besucht von: %s';
$a->strings['Maybe attended by: %s'] = 'Vielleicht besucht von: %s';
$a->strings['Not attended by: %s'] = 'Nicht besucht von: %s';
$a->strings['Reacted with %s by: %s'] = 'Reagierte mit %s von: %s';
$a->strings['Chat'] = 'Chat';
$a->strings['(no subject)'] = '(kein Betreff)';
$a->strings['%s is now following %s.'] = '%s folgt nun %s';
$a->strings['following'] = 'folgen';

File diff suppressed because it is too large Load diff

View file

@ -643,13 +643,13 @@ $a->strings['Trending Tags (last %d hour)'] = [
2 => 'Tendances (dernières %d heures)',
];
$a->strings['More Trending Tags'] = 'Plus de tendances';
$a->strings['Post to group'] = 'Publier sur le groupe';
$a->strings['Mention'] = 'Mention';
$a->strings['XMPP:'] = 'XMPP';
$a->strings['Matrix:'] = 'Matrix :';
$a->strings['Location:'] = 'Localisation :';
$a->strings['Network:'] = 'Réseau';
$a->strings['Unfollow'] = 'Se désabonner';
$a->strings['Mention'] = 'Mention';
$a->strings['Post to group'] = 'Publier sur le groupe';
$a->strings['View group'] = 'Voir le groupe';
$a->strings['Yourself'] = 'Vous-même';
$a->strings['Mutuals'] = 'Mutuels';
@ -686,6 +686,8 @@ $a->strings['Apache mod_rewrite module'] = 'Module mod_rewrite Apache';
$a->strings['Error: PDO or MySQLi PHP module required but not installed.'] = 'Erreur : Les modules PHP PDO ou MySQLi sont requis mais absents de votre serveur.';
$a->strings['Error: The MySQL driver for PDO is not installed.'] = 'Erreur : Le pilote MySQL pour PDO n\'est pas installé sur votre serveur.';
$a->strings['PDO or MySQLi PHP module'] = 'Module PHP PDO ou MySQLi';
$a->strings['Error: The IntlChar module is not installed.'] = 'Erreur : Le module IntlChar n\'est pas installé.';
$a->strings['IntlChar PHP module'] = 'Module PHP IntlChar';
$a->strings['Error, XML PHP module required but not installed.'] = 'Erreur : le module PHP XML requis est absent.';
$a->strings['XML PHP module'] = 'Module PHP XML';
$a->strings['libCurl PHP module'] = 'Module libCurl de PHP';
@ -1109,6 +1111,7 @@ $a->strings['
Si jamais vous souhaitiez supprimer votre compte, vous pourriez le faire à %3$s/settings/removeme
Merci et bienvenue sur %2$s. ';
$a->strings['User with delegates can\'t be removed, please remove delegate users first'] = 'Un utilisateur avec des délégataires ne peut pas être supprimé, veuillez d\'abord retirer les délégataires.';
$a->strings['Addon not found.'] = 'Extension manquante.';
$a->strings['Addon %s disabled.'] = 'Add-on %s désactivé.';
$a->strings['Addon %s enabled.'] = 'Add-on %s activé.';
@ -1781,6 +1784,7 @@ $a->strings['Community option not available.'] = 'L\'option communauté n\'est p
$a->strings['Not available.'] = 'Indisponible.';
$a->strings['No such circle'] = 'Cercle inexistant';
$a->strings['Circle: %s'] = 'Cercle : %s';
$a->strings['Error %d (%s) while fetching the timeline.'] = 'Erreur %d (%s) lors de la récupération du flux.';
$a->strings['Network feed not available.'] = 'Flux du réseau non disponible.';
$a->strings['Own Contacts'] = 'Publications de vos propres contacts';
$a->strings['Include'] = 'Inclure';
@ -1855,11 +1859,6 @@ $a->strings['Output'] = 'Sortie';
$a->strings['Lookup address'] = 'Addresse de sondage';
$a->strings['Webfinger Diagnostic'] = 'Diagnostic Webfinger';
$a->strings['Lookup address:'] = 'Tester l\'adresse:';
$a->strings['You are now logged in as %s'] = 'Vous êtes maintenant connecté en tant que %s';
$a->strings['Switch between your accounts'] = 'Changer de compte';
$a->strings['Manage your accounts'] = 'Gérér vos comptes';
$a->strings['Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'] = 'Basculez entre les différentes identités ou pages (groupes/communautés) qui se partagent votre compte ou que vous avez été autorisé à gérer.';
$a->strings['Select an identity to manage: '] = 'Choisir une identité à gérer: ';
$a->strings['No entries (some entries may be hidden).'] = 'Aucune entrée (certaines peuvent être cachées).';
$a->strings['Find on this site'] = 'Trouver sur ce site';
$a->strings['Results for:'] = 'Résultats pour :';
@ -2532,6 +2531,31 @@ $a->strings['If you have moved this profile from another server, and some of you
$a->strings['Resend relocate message to contacts'] = 'Renvoyer un message de relocalisation aux contacts.';
$a->strings['Addon Settings'] = 'Paramètres d\'extension';
$a->strings['No Addon settings configured'] = 'Aucuns paramètres d\'Extension paramétré.';
$a->strings['Label'] = 'Titre';
$a->strings['Description'] = 'Description';
$a->strings['Access Key'] = 'Clé d\'accès';
$a->strings['Circle/Channel'] = 'Cercle/Chaîne';
$a->strings['Include Tags'] = 'Inclure des mots clés';
$a->strings['Exclude Tags'] = 'Exclure des mots clés';
$a->strings['Full Text Search'] = 'Recherche de texte intégral';
$a->strings['Delete channel'] = 'Supprimer la chaîne';
$a->strings['Check to delete this entry from the channel list'] = 'Cochez pour supprimer cette entrée de la liste de chaîne';
$a->strings['Short name for the channel. It is displayed on the channels widget.'] = 'Nom court de la chaîne. Il est affiché dans le widget des chaînes.';
$a->strings['This should describe the content of the channel in a few word.'] = 'Décrivez le contenu de votre chaîne en quelques mots.';
$a->strings['When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.'] = 'Si vous accédez à cette chaîne via une clé d\'accès, saisissez là ici. Attention à ne pas saisir une clé déjà utilisée.';
$a->strings['Select a circle or channel, that your channel should be based on.'] = 'Choisissez un cercle ou une chaîne sur lequel se basera votre chaîne.';
$a->strings['Comma separated list of tags. A post will be used when it contains any of the listed tags.'] = 'Liste de mots clés séparés par des virgules. Une publication sera affichée si elle contient au moins un de ces mots clés.';
$a->strings['Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.'] = 'Liste de mots clés séparés par des virgules. Si une publication contient un de ces mots clés, elle ne sera pas affichée sur cette chaîne.';
$a->strings['Search terms for the body, supports the "boolean mode" operators from MariaDB. See the help for a complete list of operators and additional keywords: %s'] = 'Recherche les termes dans le corps, supporte les opérateurs "boolean mode" de MariaDB. Consultez l\'aide pour une liste complète des opérateurs et des mots clés additionnels : %s';
$a->strings['Check to display images in the channel.'] = 'Cochez pour afficher les images dans la chaîne.';
$a->strings['Check to display videos in the channel.'] = 'Cochez pour afficher la vidéo dans la chaîne.';
$a->strings['Check to display audio in the channel.'] = 'Cochez pour afficher l\'audio dans la chaîne.';
$a->strings['This page can be used to define your own channels.'] = 'Cette page permet de définir votre propres chaînes.';
$a->strings['Add new entry to the channel list'] = 'Ajoute une nouvelle entrée dans la liste des chaînes';
$a->strings['Add'] = 'Ajouter';
$a->strings['Current Entries in the channel list'] = 'Entrées actuelles dans la liste des chaînes';
$a->strings['Delete entry from the channel list'] = 'Supprimer l\'entrée de la liste des chaînes';
$a->strings['Delete entry from the channel list?'] = 'Supprimer l\'entrée de la liste des chaînes ?';
$a->strings['Failed to connect with email account using the settings provided.'] = 'Impossible de se connecter au compte courriel configuré.';
$a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
$a->strings['Built-in support for %s connectivity is enabled'] = 'Le support intégré pour la connectivité %s est activé';
@ -2588,7 +2612,6 @@ $a->strings['Delegates'] = 'Délégataires';
$a->strings['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.'] = 'Les délégataires seront capables de gérer tous les aspects de ce compte ou de cette page, à l\'exception des réglages de compte. Merci de ne pas déléguer votre compte principal à quelqu\'un en qui vous n\'avez pas une confiance absolue.';
$a->strings['Existing Page Delegates'] = 'Délégataires existants';
$a->strings['Potential Delegates'] = 'Délégataires potentiels';
$a->strings['Add'] = 'Ajouter';
$a->strings['No entries.'] = 'Aucune entrée.';
$a->strings['The theme you chose isn\'t available.'] = 'Le thème que vous avez choisi n\'est pas disponible.';
$a->strings['%s - (Unsupported)'] = '%s- (non supporté)';
@ -2623,13 +2646,12 @@ $a->strings['Stay local'] = 'Rester local';
$a->strings['Don\'t go to a remote system when following a contact link.'] = 'Ne pas aller sur un système distant lors du suivi du lien d\'un contact.';
$a->strings['Link preview mode'] = 'Mode de prévisualisation des liens';
$a->strings['Appearance of the link preview that is added to each post with a link.'] = 'Apparence de la prévisualisation du lien qui est ajoutée à chaque publication comprenant un lien.';
$a->strings['Timelines for the network page:'] = 'Flux pour la page réseau :';
$a->strings['Select all the timelines that you want to see on your network page.'] = 'Sélectionnez tous les flux que vous souhaitez voir sur votre page réseau.';
$a->strings['Bookmark'] = 'Favoris';
$a->strings['Enable timelines that you want to see in the channels widget. Bookmark timelines that you want to see in the top menu.'] = 'Activez les flux que vous souhaitez voir dans le widget Chaînes. Mettez en favoris les flux que vous souhaitez voir dans le menu supérieur.';
$a->strings['Channel languages:'] = 'Langues de la chaîne :';
$a->strings['Select all languages that you want to see in your channels.'] = 'Sélectionnez les langues que vous souhaitez voir dans vos chaînes.';
$a->strings['Beginning of week:'] = 'Début de la semaine :';
$a->strings['Default calendar view:'] = 'Vue par défaut du calendrier :';
$a->strings['%s: %s'] = '%s : %s';
$a->strings['Additional Features'] = 'Fonctions supplémentaires';
$a->strings['Connected Apps'] = 'Applications connectées';
$a->strings['Remove authorization'] = 'Révoquer l\'autorisation';
@ -2689,11 +2711,13 @@ $a->strings['Upload Picture:'] = 'Téléverser une photo :';
$a->strings['or'] = 'ou';
$a->strings['skip this step'] = 'ignorer cette étape';
$a->strings['select a photo from your photo albums'] = 'choisissez une photo depuis vos albums';
$a->strings['There was a validation error, please make sure you\'re logged in with the account you want to remove and try again.'] = 'Il y a eu une erreur de validation, vérifiez que vous êtes connecté avec le compte que vous souhaitez supprimer et réessayez.';
$a->strings['If this error persists, please contact your administrator.'] = 'Si cette erreur persiste, veuillez contacter votre administrateur.';
$a->strings['[Friendica System Notify]'] = '[Notification Système de Friendica]';
$a->strings['User deleted their account'] = 'L\'utilisateur a supprimé son compte';
$a->strings['On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'] = 'Sur votre nœud Friendica, un utilisateur a supprimé son compte. Veuillez vous assurer que ses données sont supprimées des sauvegardes.';
$a->strings['The user id is %d'] = 'L\'identifiant d\'utilisateur est %d';
$a->strings['Your user account has been successfully removed. Bye bye!'] = 'Votre compte utilisateur a bien été supprimé. Adieu !';
$a->strings['Your account has been successfully removed. Bye bye!'] = 'Votre compte a été supprimé avec succès. Au revoir !';
$a->strings['Remove My Account'] = 'Supprimer mon compte';
$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Ceci supprimera totalement votre compte. Cette opération est irréversible.';
$a->strings['Please enter your password for verification:'] = 'Merci de saisir votre mot de passe pour vérification :';
@ -2714,7 +2738,6 @@ $a->strings['App-specific password successfully revoked.'] = 'Mot de passe spéc
$a->strings['Two-factor app-specific passwords'] = 'Authentification à deux facteurs : Mots de passe spécifiques aux applications';
$a->strings['<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>'] = '<p>Les mots de passe spécifiques aux application sont des mots de passe générés aléatoirement pour vous identifier avec votre compte Friendica sur des applications tierce-partie qui n\'offrent pas d\'authentification à deux facteurs.</p>';
$a->strings['Make sure to copy your new app-specific password now. You wont be able to see it again!'] = 'Veillez à copier votre nouveau mot de passe spécifique à l\'application maintenant. Il ne sera plus jamais affiché!';
$a->strings['Description'] = 'Description';
$a->strings['Last Used'] = 'Dernière utilisation';
$a->strings['Revoke'] = 'Révoquer';
$a->strings['Revoke All'] = 'Révoquer tous';
@ -2816,6 +2839,11 @@ $a->strings['Privacy Statement'] = 'Politique de Confidentialité';
$a->strings['Rules'] = 'Règles';
$a->strings['Parameter uri_id is missing.'] = 'Le paramètre uri_id est manquant.';
$a->strings['The requested item doesn\'t exist or has been deleted.'] = 'L\'objet recherché n\'existe pas ou a été supprimé.';
$a->strings['You are now logged in as %s'] = 'Vous êtes maintenant connecté en tant que %s';
$a->strings['Switch between your accounts'] = 'Changer de compte';
$a->strings['Manage your accounts'] = 'Gérér vos comptes';
$a->strings['Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'] = 'Basculez entre les différentes identités ou pages (groupes/communautés) qui se partagent votre compte ou que vous avez été autorisé à gérer.';
$a->strings['Select an identity to manage: '] = 'Choisir une identité à gérer: ';
$a->strings['User imports on closed servers can only be done by an administrator.'] = 'L\'import d\'utilisateur sur un serveur fermé ne peut être effectué que par un administrateur.';
$a->strings['Move account'] = 'Migrer le compte';
$a->strings['You can import an account from another Friendica server.'] = 'Vous pouvez importer un compte d\'un autre serveur Friendica.';
@ -2998,6 +3026,9 @@ $a->strings['Comment this item on your system'] = 'Commenter ce sujet sur votre
$a->strings['Remote comment'] = 'Commentaire distant';
$a->strings['Share via ...'] = 'Partager par...';
$a->strings['Share via external services'] = 'Partager par des services externes';
$a->strings['Unknown parent'] = 'Parent inconnu';
$a->strings['in reply to %s'] = 'en réponse à %s';
$a->strings['Parent is probably private or not federated.'] = 'Le parent est probablement privé ou non fédéré.';
$a->strings['to'] = 'à';
$a->strings['via'] = 'via';
$a->strings['Wall-to-Wall'] = 'Inter-mur';
@ -3024,6 +3055,7 @@ $a->strings['Attended by: %s'] = 'Y assisteront : %s';
$a->strings['Maybe attended by: %s'] = 'Y assisteront peut-être : %s';
$a->strings['Not attended by: %s'] = 'N\'y assisteront pas : %s';
$a->strings['Reacted with %s by: %s'] = 'La réaction %s a été faite par : %s';
$a->strings['Chat'] = 'Chat';
$a->strings['(no subject)'] = '(aucun sujet)';
$a->strings['%s is now following %s.'] = '%s suit désormais %s.';
$a->strings['following'] = 'following';

File diff suppressed because it is too large Load diff

View file

@ -630,13 +630,13 @@ $a->strings['Trending Tags (last %d hour)'] = [
1 => 'Népszerű címkék (legutóbbi %d óra)',
];
$a->strings['More Trending Tags'] = 'További népszerű címkék';
$a->strings['Post to group'] = 'Beküldés csoportba';
$a->strings['Mention'] = 'Említés';
$a->strings['XMPP:'] = 'XMPP:';
$a->strings['Matrix:'] = 'Mátrix:';
$a->strings['Location:'] = 'Hely:';
$a->strings['Network:'] = 'Hálózat:';
$a->strings['Unfollow'] = 'Követés megszüntetése';
$a->strings['Mention'] = 'Említés';
$a->strings['Post to group'] = 'Beküldés csoportba';
$a->strings['View group'] = 'Csoport megtekintése';
$a->strings['Yourself'] = 'Önmaga';
$a->strings['Mutuals'] = 'Kölcsönösen ismerősök';
@ -1828,11 +1828,6 @@ $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';
$a->strings['Select an identity to manage: '] = 'A kezelendő személyazonosság kiválasztása: ';
$a->strings['No entries (some entries may be hidden).'] = 'Nincsenek bejegyzések (néhány bejegyzés rejtve lehet).';
$a->strings['Find on this site'] = 'Keresés ezen az oldalon';
$a->strings['Results for:'] = 'Találat erre:';
@ -2490,6 +2485,8 @@ $a->strings['If you have moved this profile from another server, and some of you
$a->strings['Resend relocate message to contacts'] = 'Áthelyezési üzenet küldése a partnereknek';
$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['Description'] = 'Leírás';
$a->strings['Add'] = 'Hozzáadás';
$a->strings['Failed to connect with email account using the settings provided.'] = 'Nem sikerült kapcsolódni a megadott beállításokat használó e-mail-fiókkal.';
$a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
$a->strings['Built-in support for %s connectivity is enabled'] = 'A(z) %s összekapcsolhatóságának beépített támogatása engedélyezve';
@ -2546,7 +2543,6 @@ $a->strings['Delegates'] = 'Meghatalmazottak';
$a->strings['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.'] = 'A meghatalmazottak képesek ezen fiókot vagy oldalt minden szempontból kezelni, kivéve az alapvető fiókbeállításokat. Ne hatalmazzon meg senki mást a személyes fiókja kezeléséhez, akiben nem bízik meg teljes mértékben.';
$a->strings['Existing Page Delegates'] = 'Meglévő oldalmeghatalmazottak';
$a->strings['Potential Delegates'] = 'Lehetséges meghatalmazottak';
$a->strings['Add'] = 'Hozzáadás';
$a->strings['No entries.'] = 'Nincsenek bejegyzések.';
$a->strings['The theme you chose isn\'t available.'] = 'A választott téma nem érhető el.';
$a->strings['%s - (Unsupported)'] = '%s (nem támogatott)';
@ -2581,13 +2577,10 @@ $a->strings['Stay local'] = 'Maradjon helyi';
$a->strings['Don\'t go to a remote system when following a contact link.'] = 'Ne menjen távoli rendszerre, ha egy partnerhivatkozást követ.';
$a->strings['Link preview mode'] = 'Hivatkozás-előnézeti mód';
$a->strings['Appearance of the link preview that is added to each post with a link.'] = 'A hivatkozás előnézetének megjelenése, amely minden egyes hivatkozással rendelkező bejegyzéshez hozzá van adva.';
$a->strings['Timelines for the network page:'] = 'Idővonalak a hálózat oldalhoz:';
$a->strings['Select all the timelines that you want to see on your network page.'] = 'Válassza ki az összes olyan idővonalat, amelyet látni szeretne a hálózat oldalon.';
$a->strings['Channel languages:'] = 'Csatorna nyelvei:';
$a->strings['Select all languages that you want to see in your channels.'] = 'Válassza ki az összes nyelvet, amelyet látni szeretne a csatornáiban.';
$a->strings['Beginning of week:'] = 'A hét kezdete:';
$a->strings['Default calendar view:'] = 'Alapértelmezett naptárnézet:';
$a->strings['%s: %s'] = '%s: %s';
$a->strings['Additional Features'] = 'További funkciók';
$a->strings['Connected Apps'] = 'Kapcsolt alkalmazások';
$a->strings['Remove authorization'] = 'Felhatalmazás eltávolítása';
@ -2651,7 +2644,6 @@ $a->strings['[Friendica System Notify]'] = '[Friendica rendszerértesítés]';
$a->strings['User deleted their account'] = 'A felhasználó törölte a fiókját';
$a->strings['On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'] = 'Az Ön Friendica csomópontján egy felhasználó törölte a fiókját. Győződjön meg arról, hogy az adatai el lettek-e távolítva a biztonsági mentésekből.';
$a->strings['The user id is %d'] = 'A felhasználó-azonosító %d';
$a->strings['Your user account has been successfully removed. Bye bye!'] = 'A felhasználói fiókja sikeresen el lett távolítva. Viszlát!';
$a->strings['Remove My Account'] = 'Saját fiók eltávolítása';
$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Ez teljesen el fogja távolítani a fiókját. Miután ez megtörtént, nem lesz visszaállítható.';
$a->strings['Please enter your password for verification:'] = 'Adja meg a jelszavát az ellenőrzéshez:';
@ -2672,7 +2664,6 @@ $a->strings['App-specific password successfully revoked.'] = 'Az alkalmazásfüg
$a->strings['Two-factor app-specific passwords'] = 'Kétlépcsős alkalmazásfüggő jelszavak';
$a->strings['<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>'] = '<p>Az alkalmazásfüggő jelszavak az Ön szokásos jelszava helyett használt véletlenszerűen előállított jelszavak, hogy hitelesítsék a fiókját az olyan harmadik féltől származó alkalmazásoknál, amelyek nem támogatják a kétlépcsős hitelesítést.</p>';
$a->strings['Make sure to copy your new app-specific password now. You wont be able to see it again!'] = 'Győződjön meg arról, hogy lemásolta-e most az új alkalmazásfüggő jelszavát. Nem fogja tudni újra megnézni a jelszót!';
$a->strings['Description'] = 'Leírás';
$a->strings['Last Used'] = 'Legutóbb használt';
$a->strings['Revoke'] = 'Visszavonás';
$a->strings['Revoke All'] = 'Összes visszavonása';
@ -2774,6 +2765,11 @@ $a->strings['Privacy Statement'] = 'Adatvédelmi nyilatkozat';
$a->strings['Rules'] = 'Szabályok';
$a->strings['Parameter uri_id is missing.'] = 'Az uri_id paraméter hiányzik.';
$a->strings['The requested item doesn\'t exist or has been deleted.'] = 'A kért elem nem létezik vagy törölték.';
$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';
$a->strings['Select an identity to manage: '] = 'A kezelendő személyazonosság kiválasztása: ';
$a->strings['User imports on closed servers can only be done by an administrator.'] = 'A lezárt kiszolgálókon történő felhasználó-importálásokat csak egy adminisztrátor végezheti el.';
$a->strings['Move account'] = 'Fiók áthelyezése';
$a->strings['You can import an account from another Friendica server.'] = 'Importálhat egy fiókot egy másik Friendica kiszolgálóról.';

File diff suppressed because it is too large Load diff

View file

@ -149,7 +149,7 @@ $a->strings['Album was empty.'] = 'Альбом был пуст.';
$a->strings['Failed to delete the photo.'] = 'Не получилось удалить фото.';
$a->strings['a photo'] = 'фото';
$a->strings['%1$s was tagged in %2$s by %3$s'] = '%1$s отмечен/а/ в %2$s by %3$s';
$a->strings['Public access denied.'] = 'Свободный доступ закрыт.';
$a->strings['Public access denied.'] = 'Публичный доступ закрыт.';
$a->strings['No photos selected'] = 'Не выбрано фото.';
$a->strings['The maximum accepted image size is %s'] = 'Максимально допустимый размер изображения %s';
$a->strings['Upload Photos'] = 'Загрузить фото';
@ -651,13 +651,13 @@ $a->strings['Trending Tags (last %d hour)'] = [
3 => 'Популярные тэги (за %d часов)',
];
$a->strings['More Trending Tags'] = 'Больше популярных тэгов';
$a->strings['Post to group'] = 'Запись для группы';
$a->strings['Mention'] = 'Отметка';
$a->strings['XMPP:'] = 'XMPP:';
$a->strings['Matrix:'] = 'Matrix:';
$a->strings['Location:'] = 'Откуда:';
$a->strings['Network:'] = 'Сеть:';
$a->strings['Unfollow'] = 'Отписка';
$a->strings['Mention'] = 'Отметка';
$a->strings['Post to group'] = 'Запись для группы';
$a->strings['View group'] = 'Просмотр группы';
$a->strings['Yourself'] = 'Вы';
$a->strings['Mutuals'] = 'Взаимные';
@ -1802,11 +1802,6 @@ $a->strings['Current timezone: %s'] = 'Ваш часовой пояс: %s';
$a->strings['Converted localtime: %s'] = 'Ваше изменённое время: %s';
$a->strings['Please select your timezone:'] = 'Выберите пожалуйста ваш часовой пояс:';
$a->strings['Only logged in users are permitted to perform a probing.'] = 'Для использования этой функции нужно войти.';
$a->strings['You are now logged in as %s'] = 'Вы вошли как %s';
$a->strings['Switch between your accounts'] = 'Переключить учётную запись';
$a->strings['Manage your accounts'] = 'Управление учётными записями';
$a->strings['Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'] = 'Переключайтесь между разными профилями или страницами сообществ/групп, которые зарегистрированы на одинаковые контактные данные, либо вам предоставлено право управления ими.';
$a->strings['Select an identity to manage: '] = 'Выберите учётную запись:';
$a->strings['No entries (some entries may be hidden).'] = 'Нет записей (некоторые записи могут быть скрыты).';
$a->strings['Find on this site'] = 'Найти на этом сайте';
$a->strings['Results for:'] = 'Результаты для:';
@ -2484,6 +2479,31 @@ $a->strings['If you have moved this profile from another server, and some of you
$a->strings['Resend relocate message to contacts'] = 'Отправить перемещённые сообщения контактам';
$a->strings['Addon Settings'] = 'Настройки дополнений';
$a->strings['No Addon settings configured'] = 'Настройки дополнений не изменены';
$a->strings['Label'] = 'Название';
$a->strings['Description'] = 'Описание';
$a->strings['Access Key'] = 'Горячая клавиша';
$a->strings['Circle/Channel'] = 'Круг/Канал';
$a->strings['Include Tags'] = 'Включить теги';
$a->strings['Exclude Tags'] = 'Исключить теги';
$a->strings['Full Text Search'] = 'Полнотекстовый поиск';
$a->strings['Delete channel'] = 'Удалить канал';
$a->strings['Check to delete this entry from the channel list'] = 'Отметьте, чтобы удалить этот канал из списка';
$a->strings['Short name for the channel. It is displayed on the channels widget.'] = 'Короткое название для канала, будет отображаться в их списке.';
$a->strings['This should describe the content of the channel in a few word.'] = 'Описание содержимого канала в нескольких словах.';
$a->strings['When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.'] = 'Если вы хотите сделать доступ к каналу по горячей клавише, определите её здесь. Будьте внимательны и не берите уже используемую где-то клавишу.';
$a->strings['Select a circle or channel, that your channel should be based on.'] = 'Выберите круг или канал, на основе которого будет создан этот.';
$a->strings['Comma separated list of tags. A post will be used when it contains any of the listed tags.'] = 'Список тегов через запятую. Запись попадёт в канал, если в ней есть любой из них.';
$a->strings['Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.'] = 'Список тегов через запятую. Запись не попадёт в канал, если в ней есть любой из них.';
$a->strings['Search terms for the body, supports the "boolean mode" operators from MariaDB. See the help for a complete list of operators and additional keywords: %s'] = 'Поисковый запрос для записей, можно использовать операторы "boolean mode" для MariaDB. Справка по операторам и ключевым словам: %s';
$a->strings['Check to display images in the channel.'] = 'Отметьте для включения записей с картинками.';
$a->strings['Check to display videos in the channel.'] = 'Отметьте для включения записей с видео.';
$a->strings['Check to display audio in the channel.'] = 'Отметьте для включения записей со аудио.';
$a->strings['This page can be used to define your own channels.'] = 'На этой странице вы можете определить свои собственные каналы';
$a->strings['Add new entry to the channel list'] = 'Добавить в список каналов';
$a->strings['Add'] = 'Добавить';
$a->strings['Current Entries in the channel list'] = 'Текущий список каналов';
$a->strings['Delete entry from the channel list'] = 'Удалить из списка каналов';
$a->strings['Delete entry from the channel list?'] = 'Удалить запись из списка каналов?';
$a->strings['Failed to connect with email account using the settings provided.'] = 'Не удалось подключиться к аккаунту e-mail, используя указанные настройки.';
$a->strings['Diaspora (Socialhome, Hubzilla)'] = 'Diaspora (Socialhome, Hubzilla)';
$a->strings['Built-in support for %s connectivity is enabled'] = 'Встроенная поддержка для %s включена';
@ -2540,7 +2560,6 @@ $a->strings['Delegates'] = 'Делегаты';
$a->strings['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.'] = 'Доверенные лица могут управлять всеми аспектами этого аккаунта/страницы, за исключением основных настроек аккаунта. Пожалуйста, не предоставляйте доступ в личный кабинет тому, кому вы не полностью доверяете.';
$a->strings['Existing Page Delegates'] = 'Существующие уполномоченные страницы';
$a->strings['Potential Delegates'] = 'Возможные доверенные лица';
$a->strings['Add'] = 'Добавить';
$a->strings['No entries.'] = 'Нет записей.';
$a->strings['The theme you chose isn\'t available.'] = 'Выбранная вами тема недоступна.';
$a->strings['%s - (Unsupported)'] = '%s - (Не поддерживается)';
@ -2575,8 +2594,8 @@ $a->strings['Stay local'] = 'Оставаться локально';
$a->strings['Don\'t go to a remote system when following a contact link.'] = 'Не переходить на другие серверы по ссылкам профилей.';
$a->strings['Link preview mode'] = 'Предпросмотр ссылок';
$a->strings['Appearance of the link preview that is added to each post with a link.'] = 'Внешний вид предпросмотра ссылок, который появляется в записях со ссылками.';
$a->strings['Timelines for the network page:'] = 'Ленты для основной страницы:';
$a->strings['Select all the timelines that you want to see on your network page.'] = 'Выберите все ленты, которые вы хотите видеть на вашей основной странице.';
$a->strings['Bookmark'] = 'Главное меню';
$a->strings['Enable timelines that you want to see in the channels widget. Bookmark timelines that you want to see in the top menu.'] = 'Включите ленты, которые вы хотите видеть в меню каналов слева, выберите ленты, которые будут отображаться в главном меню сверху.';
$a->strings['Channel languages:'] = 'Языки каналов:';
$a->strings['Select all languages that you want to see in your channels.'] = 'Выберите все языки, которые вы хотите видеть в своих каналах.';
$a->strings['Beginning of week:'] = 'Начало недели:';
@ -2640,11 +2659,13 @@ $a->strings['Upload Picture:'] = 'Загрузить картинку:';
$a->strings['or'] = 'или';
$a->strings['skip this step'] = 'пропустить этот шаг';
$a->strings['select a photo from your photo albums'] = 'выберите фото из ваших фотоальбомов';
$a->strings['There was a validation error, please make sure you\'re logged in with the account you want to remove and try again.'] = 'Возникла ошибка валидации, пожалуйста, проверьте, что вы зашли под учётной записью, которую хотите удалить, и попробуйте ещё.';
$a->strings['If this error persists, please contact your administrator.'] = 'Если эта ошибка сохраняется, пожалуйста, свяжитесь с администратором.';
$a->strings['[Friendica System Notify]'] = '[Системное уведомление Friendica]';
$a->strings['User deleted their account'] = 'Пользователь удалил свою учётную запись';
$a->strings['On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'] = 'Пользователь удалил свою учётную запись на вашем сервере Friendica. Пожалуйста, убедитесь, что их данные будут удалены из резервных копий.';
$a->strings['The user id is %d'] = 'id пользователя: %d';
$a->strings['Your user account has been successfully removed. Bye bye!'] = 'Ваша учётная запись была успешно удалена. Всего хорошего!';
$a->strings['Your account has been successfully removed. Bye bye!'] = 'Ваша учётная запись была успешно удалена. Всего хорошего!';
$a->strings['Remove My Account'] = 'Удалить мой аккаунт';
$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Это позволит полностью удалить ваш аккаунт. Как только это будет сделано, аккаунт восстановлению не подлежит.';
$a->strings['Please enter your password for verification:'] = 'Пожалуйста, введите свой пароль для проверки:';
@ -2665,7 +2686,6 @@ $a->strings['App-specific password successfully revoked.'] = 'Пароль дл
$a->strings['Two-factor app-specific passwords'] = 'Пароли для приложений';
$a->strings['<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>'] = '<p>Пароли для приложений это случайно сгенерированные пароли, используемые вместо основного пароля для приложений, которые не поддерживают двухфакторную аутентификацию.</p>';
$a->strings['Make sure to copy your new app-specific password now. You wont be able to see it again!'] = 'Убедитесь, что вы скопировали этот новый пароль сейчас. Вы больше его не увидите!';
$a->strings['Description'] = 'Описание';
$a->strings['Last Used'] = 'Последнее использование';
$a->strings['Revoke'] = 'Отозвать';
$a->strings['Revoke All'] = 'Отозвать все';
@ -2758,6 +2778,8 @@ $a->strings['You have ignored the top-level author\'s server or the shared post
$a->strings['Conversation Not Found'] = 'Запись не найдена';
$a->strings['Unfortunately, the requested conversation isn\'t available to you.'] = 'К сожалению, эта запись вам недоступна.';
$a->strings['Possible reasons include:'] = 'Возможные причины этого:';
$a->strings['Stack trace:'] = 'Stack trace:';
$a->strings['Exception thrown in %s:%d'] = 'Exception thrown in %s:%d';
$a->strings['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.'] = 'При регистрации и для организации взаимодействия между пользователем и другими контактами, пользователь должен указать отображаемое имя (псевдоним), имя учётной записи (ник) и действующий адрес электронной почты. Имена будут видны на странице профиля для любого посетителя, даже если другие данные будут скрыты. Адрес электронной почты будет использоваться только для отправки пользователю уведомлений о действиях, но не будет нигде отображаться. Добавление пользователя в каталог узла или глобальный каталог опционально и управляется настройками, оно не обязательно для общения в сети.';
$a->strings['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.'] = 'Эти данные необходимы для взаимодействия и передаются другим узлам партнёров по сети и сохраняются там. Пользователи могут добавить дополнительные личные данные, которые тоже могут передаваться на другие узлы.';
$a->strings['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/settings/removeme">%1$s/settings/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.'] = 'В любой момент вошедший в систему пользователь может экспортировать свои данные через <a href="%1$s/settings/userexport">настройки</a>. Если пользователь хочет удалить свою учётную запись, они могут сделать это через <a href="%1$s/settings/removeme">%1$s/settings/removeme</a>. Удаление данных будет без возможности восстановления. Запрос на удаление данных будет так же передан на узлы партнёров по сети.';
@ -2765,6 +2787,11 @@ $a->strings['Privacy Statement'] = 'Положение о конфиденциа
$a->strings['Rules'] = 'Правила';
$a->strings['Parameter uri_id is missing.'] = 'Параметр uri_id отсутствует.';
$a->strings['The requested item doesn\'t exist or has been deleted.'] = 'Запрошенная запись не существует или была удалена.';
$a->strings['You are now logged in as %s'] = 'Вы вошли как %s';
$a->strings['Switch between your accounts'] = 'Переключить учётную запись';
$a->strings['Manage your accounts'] = 'Управление учётными записями';
$a->strings['Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'] = 'Переключайтесь между разными профилями или страницами сообществ/групп, которые зарегистрированы на одинаковые контактные данные, либо вам предоставлено право управления ими.';
$a->strings['Select an identity to manage: '] = 'Выберите учётную запись:';
$a->strings['User imports on closed servers can only be done by an administrator.'] = 'Импорт пользователей на закрытых серверах может быть произведён только администратором.';
$a->strings['Move account'] = 'Удалить аккаунт';
$a->strings['You can import an account from another Friendica server.'] = 'Вы можете импортировать учетную запись с другого сервера Friendica.';
@ -2948,6 +2975,9 @@ $a->strings['Comment this item on your system'] = 'Прокомментиров
$a->strings['Remote comment'] = 'Загруженный комментарий';
$a->strings['Share via ...'] = 'Отправить в ...';
$a->strings['Share via external services'] = 'Поделиться через сторонние сервисы';
$a->strings['Unknown parent'] = 'Источник неизвестен';
$a->strings['in reply to %s'] = 'в ответ на %s';
$a->strings['Parent is probably private or not federated.'] = 'Источник приватный или не федерируется.';
$a->strings['to'] = 'к';
$a->strings['via'] = 'через';
$a->strings['Wall-to-Wall'] = 'Стена-на-Стену';

View file

@ -8,9 +8,9 @@
{{include file="field_input.tpl" field=$description}}
{{include file="field_input.tpl" field=$access_key}}
{{include file="field_select.tpl" field=$circle}}
{{include file="field_input.tpl" field=$include_tags}}
{{include file="field_input.tpl" field=$exclude_tags}}
{{include file="field_input.tpl" field=$text_search}}
{{include file="field_textarea.tpl" field=$include_tags}}
{{include file="field_textarea.tpl" field=$exclude_tags}}
{{include file="field_textarea.tpl" field=$text_search}}
{{include file="field_checkbox.tpl" field=$image}}
{{include file="field_checkbox.tpl" field=$video}}
{{include file="field_checkbox.tpl" field=$audio}}
@ -28,9 +28,9 @@
{{include file="field_input.tpl" field=$e.description}}
{{include file="field_input.tpl" field=$e.access_key}}
{{include file="field_select.tpl" field=$e.circle}}
{{include file="field_input.tpl" field=$e.include_tags}}
{{include file="field_input.tpl" field=$e.exclude_tags}}
{{include file="field_input.tpl" field=$e.text_search}}
{{include file="field_textarea.tpl" field=$e.include_tags}}
{{include file="field_textarea.tpl" field=$e.exclude_tags}}
{{include file="field_textarea.tpl" field=$e.text_search}}
{{include file="field_checkbox.tpl" field=$e.image}}
{{include file="field_checkbox.tpl" field=$e.video}}
{{include file="field_checkbox.tpl" field=$e.audio}}

View file

@ -66,20 +66,14 @@ function switchCircleViewMode(elm) {
* @returns {undefined}
*/
function filterList() {
// Declare variables
var input, filter, ul, li, a, i;
input = document.getElementById("contacts-search");
filter = input.value.toUpperCase();
li = document.querySelectorAll("#contact-circle-list>li");
const search = document.getElementById("contacts-search").value.toUpperCase();
const li = document.querySelectorAll("#contact-circle-list>li");
// Loop through all list items, and hide those who don't match the search query
for (i = 0; i < li.length; i++) {
// Get the heading element
var mh = li[i].getElementsByClassName("media-heading")[0];
// The first child of the heading element should contain
// the text which we want to filter
a = mh.firstChild;
if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
for (let i = 0; i < li.length; i++) {
let foundInDisplayName = li[i].getElementsByClassName("media-heading")[0].firstChild.textContent.toUpperCase().indexOf(search) > -1;
let foundInAddr = li[i].getElementsByClassName("contact-entry-url")[0].textContent.toUpperCase().indexOf(search) > -1;
if (foundInDisplayName || foundInAddr) {
li[i].style.display = "";
} else {
li[i].style.display = "none";