diff --git a/.drone.yml b/.drone.yml index a5ce0744ac..ab2875e980 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,6 +15,22 @@ steps: --- kind: pipeline type: docker +name: Integrity checks + +steps: + - name: Check database version + image: alpine + commands: + - export DBSTRUCTURE_VERSION="$(sed -rn "s/.*'DB_UPDATE_VERSION', ([0-9]+).*/\1/p" static/dbstructure.config.php)" + - export DATABASE_VERSION="$(sed -rn 's/.*DB_UPDATE_VERSION ([0-9]+).*/\1/p' database.sql)" + - echo "Database $DATABASE_VERSION - DB-Structure $DBSTRUCTURE_VERSION" + - if [[ "$DBSTRUCTURE_VERSION" != "$DATABASE_VERSION" ]]; then + echo "Database version mismatch."; + exit 1; + fi +--- +kind: pipeline +type: docker name: php7.3-lint steps: diff --git a/CHANGELOG b/CHANGELOG index 02935eac4b..67429b3960 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,10 +1,60 @@ -Version 2021.09 (unreleased) +Version 2021.12 (unreleased) + +Version 2021.09 (2021-09-25) Friendica Core - Simplified the proxy mechanism. The proxy cache directory (/proxy) can now be removed [annando] - DFRN is now always handled with the Diaspora transport layer. The legacy DFRN transport layer is removed [annando] - Legacy OAuth server is removed [annando] - Scheduled posts are now possible [annando] - The minimal PHP version in the composer is increased to version 7.2 [annando] + Updates to the translation DE, FR, HU, RU [translation teams] + Updates to the documentation [foss-, nupplaphil] + General code cleanup [annando, MrPetovan, nupplaphil] + Unification of setting label wordings towards activating something [heluecht] + Enhanced the proxy mechanism [annando] + Enhanced the desktop notifications [annando] + Enhanced the Mastodon compatible API [annando] + Enhanced the UI to follow new contacts [MrPetovan] + Enhanced remote AP follow of new contacts [annando] + Enhanced the installer [tobiasd] + Enhanced the handling of attachments by the addon hooks [MrPetovan] + Enhanced the federation with PeerTube [MrPetovan] + Enhanced the federation with Diaspora* [annando] + Enhanced the federation with Mastodon [MrPetovan, realkinetix] + Enhanced the interaction with items in various places [annando] + Enhanced the storage back-end handling [nupplaphil] + Enhanced the handling of zmg BBCode elements [annando] + Enhanced the display of logs in the admin panel [fabrixxm] + Fixed a bug in the L10n functions not showing plural forms [annando] + Fixed a bug in following IMAP accounts [annando] + Fixed a bug preventing photos to be deleted [annando] + Fixed a bug preventing the display of the accounts avatar [annando] + Fixed a bug preventing following accounts from profiles visited [annando] + Removed the legacy DFRN transport layer, DFRN is now always using the Diaspora* transport layer [annando] + Removed the legacy OAuth server [annando] + Bumped the minimal PHP version to 7.2 + Added user option to control how postings are shortened [annando] + Added Persian to the possible detected languages of a postings [MrPetovan] + Added Matrix account profile field [annando] + Added scheduled postings [annando] + Added transmission of push subscriptions [annando] + Added the possibility to put the config files in a different directory [nupplaphil] + + Friendica Addons + Updates to the translation JA, ZH CN [translation teams] + advancedcontentfilter + allow filtering by attachments [MrPetovan] + blockbot + some good guys and bad guys added [annando] + irc + switch from freenode to libera.chat [tobiasd] + langfilter + improved performance [annando] + nitter + handle mobile links as well [tobiasd] + improve settings [tobiasd] + rendertime + rename "Parser" to "session" [annando] + + Closed Issues + 6101, 8038, 9378, 9723, 9871, 10262, 10491, 10502, 10514, 10558, + 10568, 10587, 10603, 10617, 10640, 10651, 10672, 10692, 10698, + 10699, 10705 Version 2021.07 (2021-07-04) Friendica Core @@ -17,7 +67,7 @@ Version 2021.07 (2021-07-04) Enhanced the possibilities to download the calendar [annando] Enhanced the Vagrant development box setup [fabrixxm] Enhanced the console commands [fabrixxm, mexon] - Enhances the support of PHP8 [nupplaphil, MrPetovan] + Enhanced the support of PHP8 [nupplaphil, MrPetovan] Enhanced the link detection [annando] Enhanced the worker task display in the admin panel [tobiasd] Enhanced the installation wizard [tobiasd] diff --git a/VERSION b/VERSION index e0b18b8b3b..9fb7221fc5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2021.09-rc +2021.12-dev diff --git a/boot.php b/boot.php index 9c3be4a429..a4d0fe5c73 100644 --- a/boot.php +++ b/boot.php @@ -38,7 +38,7 @@ use Friendica\Util\DateTimeFormat; define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_CODENAME', 'Siberian Iris'); -define('FRIENDICA_VERSION', '2021.09-rc'); +define('FRIENDICA_VERSION', '2021.12-dev'); define('DFRN_PROTOCOL_VERSION', '2.23'); define('NEW_TABLE_STRUCTURE_VERSION', 1288); diff --git a/include/conversation.php b/include/conversation.php index 1cb2c745cc..507add97d6 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -312,7 +312,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o . "'; \r\n"; } } elseif ($mode === 'profile') { - $items = conversation_add_children($items, false, $order, $uid); + $items = conversation_add_children($items, false, $order, local_user()); if (!$update) { $tab = 'posts'; @@ -400,7 +400,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o $formSecurityToken = BaseModule::getFormSecurityToken('contact_action'); if (!empty($items)) { - if (in_array($mode, ['community', 'contacts'])) { + if (in_array($mode, ['community', 'contacts', 'profile'])) { $writable = true; } else { $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], Protocol::FEDERATED); diff --git a/src/Content/Widget/ContactBlock.php b/src/Content/Widget/ContactBlock.php index c755a7d4f6..751aa92178 100644 --- a/src/Content/Widget/ContactBlock.php +++ b/src/Content/Widget/ContactBlock.php @@ -44,10 +44,16 @@ class ContactBlock * @hook contact_block_end (contacts=>array, output=>string) * @return string */ - public static function getHTML(array $profile) + public static function getHTML(array $profile, int $visitor_uid = null) { $o = ''; + if (is_null($visitor_uid) || ($visitor_uid == $profile['uid'])) { + $contact_uid = $profile['uid']; + } else { + $contact_uid = 0; + } + $shown = DI::pConfig()->get($profile['uid'], 'system', 'display_friend_count', 24); if ($shown == 0) { return $o; @@ -82,7 +88,7 @@ class ContactBlock $rel = [Contact::FOLLOWER, Contact::FRIEND]; } - $contact_ids_stmt = DBA::select('contact', ['id'], [ + $personal_contacts = DBA::selectToArray('contact', ['uri-id'], [ 'uid' => $profile['uid'], 'self' => false, 'blocked' => false, @@ -93,13 +99,10 @@ class ContactBlock 'network' => Protocol::FEDERATED, ], ['limit' => $shown]); - if (DBA::isResult($contact_ids_stmt)) { - $contact_ids = []; - while($contact = DBA::fetch($contact_ids_stmt)) { - $contact_ids[] = $contact["id"]; - } + $contact_uriids = array_column($personal_contacts, 'uri-id'); - $contacts_stmt = DBA::select('contact', ['id', 'uid', 'addr', 'url', 'name', 'thumb', 'avatar', 'network'], ['id' => $contact_ids]); + if (!empty($contact_uriids)) { + $contacts_stmt = DBA::select('contact', ['id', 'uid', 'addr', 'url', 'name', 'thumb', 'avatar', 'network'], ['uri-id' => $contact_uriids, 'uid' => $contact_uid]); if (DBA::isResult($contacts_stmt)) { $contacts_title = DI::l10n()->tt('%d Contact', '%d Contacts', $total); @@ -113,8 +116,6 @@ class ContactBlock DBA::close($contacts_stmt); } - - DBA::close($contact_ids_stmt); } $tpl = Renderer::getMarkupTemplate('widget/contacts.tpl'); diff --git a/src/Model/Profile.php b/src/Model/Profile.php index a1e97d1ee4..4e984baa6f 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -406,7 +406,7 @@ class Profile } if (!$block && $show_contacts) { - $contact_block = ContactBlock::getHTML($profile); + $contact_block = ContactBlock::getHTML($profile, local_user()); if (is_array($profile) && !$profile['hide-friends']) { $contact_count = DBA::count('contact', [ diff --git a/src/Object/Thread.php b/src/Object/Thread.php index 7d59759a0d..a2504a2ad1 100644 --- a/src/Object/Thread.php +++ b/src/Object/Thread.php @@ -80,7 +80,7 @@ class Thread break; case 'profile': $this->profile_owner = $a->getProfileOwner(); - $this->writable = Security::canWriteToUserWall($this->profile_owner); + $this->writable = Security::canWriteToUserWall($this->profile_owner) || $writable; break; case 'display': $this->profile_owner = $a->getProfileOwner(); diff --git a/src/Util/JsonLD.php b/src/Util/JsonLD.php index f91d84ad5c..6ffe9a0a0f 100644 --- a/src/Util/JsonLD.php +++ b/src/Util/JsonLD.php @@ -165,7 +165,7 @@ class JsonLD } catch (Exception $e) { $compacted = false; - Logger::error('compacting error', ['line' => $e->getLine(), 'message' => $e->getMessage()]); + Logger::notice('compacting error', ['line' => $e->getLine(), 'exception' => $e]); } $json = json_decode(json_encode($compacted, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), true); diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php index 391b96767e..5891649525 100644 --- a/src/Util/ParseUrl.php +++ b/src/Util/ParseUrl.php @@ -1116,7 +1116,11 @@ class ParseUrl } $content = JsonLD::fetchElement($jsonld, 'image', 'url', '@type', 'ImageObject'); - if (!empty($content)) { + if (!empty($content) && !is_string($content)) { + Logger::notice('Unexpected return value for the author image', ['content' => $content]); + } + + if (!empty($content) && is_string($content)) { $jsonldinfo['author_img'] = trim($content); } diff --git a/view/lang/ru/messages.po b/view/lang/ru/messages.po index 82fc9dfa08..acfe196799 100644 --- a/view/lang/ru/messages.po +++ b/view/lang/ru/messages.po @@ -25,7 +25,7 @@ msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-09-10 00:27+0000\n" -"PO-Revision-Date: 2021-09-11 07:34+0000\n" +"PO-Revision-Date: 2021-09-22 05:47+0000\n" "Last-Translator: Alexander An \n" "Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n" "MIME-Version: 1.0\n" @@ -174,7 +174,7 @@ msgstr "" #: include/conversation.php:680 #, php-format msgid "%s is participating in this thread." -msgstr "%s участвует в этой ветке." +msgstr "%s участвует в этом обсуждении" #: include/conversation.php:683 msgid "Stored" @@ -204,7 +204,7 @@ msgstr "" #: include/conversation.php:844 view/theme/frio/theme.php:323 msgid "Follow Thread" -msgstr "Подписаться на тему" +msgstr "Подписаться на обсуждение" #: include/conversation.php:845 src/Model/Contact.php:1050 msgid "View Status" @@ -481,7 +481,7 @@ msgstr "Категории (список через запятую)" #: include/conversation.php:1143 src/Module/Item/Compose.php:172 msgid "Scheduled at" -msgstr "" +msgstr "Запланировано на" #: include/conversation.php:1147 mod/editpost.php:108 msgid "Permission settings" @@ -4636,7 +4636,7 @@ msgstr "" #: src/Model/Notification.php:189 #, php-format msgid "%1$s had started following you" -msgstr "" +msgstr "%1$s подписались на вас" #: src/Model/Notification.php:259 #, php-format @@ -4681,7 +4681,7 @@ msgstr "" #: src/Model/Notification.php:297 #, php-format msgid "%1$s commented in your thread %2$s" -msgstr "" +msgstr "%1$s ответил в вашем обсуждении %2$s" #: src/Model/Notification.php:301 #, php-format @@ -4691,27 +4691,27 @@ msgstr "" #: src/Model/Notification.php:307 #, php-format msgid "%1$s commented in their thread %2$s" -msgstr "" +msgstr "%1$s ответил в своём обсуждении %2$s" #: src/Model/Notification.php:309 #, php-format msgid "%1$s commented in their thread" -msgstr "" +msgstr "%1$s ответил в своём обсуждении" #: src/Model/Notification.php:311 #, php-format msgid "%1$s commented in the thread %2$s from %3$s" -msgstr "" +msgstr "%1$s ответил в обсуждении %2$s от %3$s" #: src/Model/Notification.php:313 #, php-format msgid "%1$s commented in the thread from %3$s" -msgstr "" +msgstr "%1$s ответил в обсуждении от %3$s" #: src/Model/Notification.php:318 #, php-format msgid "%1$s commented on your thread %2$s" -msgstr "" +msgstr "%1$s ответил в вашем обсуждении %2$s" #: src/Model/Notification.php:323 #, php-format @@ -7057,16 +7057,16 @@ msgstr "" #: src/Module/Api/Mastodon/Statuses/Bookmark.php:51 msgid "Only starting posts can be bookmarked" -msgstr "" +msgstr "Только заглавные записи могут быть добавлены в закладки" #: src/Module/Api/Mastodon/Statuses/Mute.php:50 msgid "Only starting posts can be muted" -msgstr "" +msgstr "Только заглавные записи можно заглушить" #: src/Module/Api/Mastodon/Statuses/Pin.php:50 #: src/Module/Api/Mastodon/Statuses/Unpin.php:50 msgid "Only starting posts can be pinned" -msgstr "" +msgstr "Только заглавные записи можно закрепить" #: src/Module/Api/Mastodon/Statuses/Reblog.php:53 #, php-format @@ -7218,11 +7218,11 @@ msgstr "Только вы можете это видеть" #: src/Module/BaseProfile.php:115 src/Module/Profile/Schedule.php:82 msgid "Scheduled Posts" -msgstr "" +msgstr "Запланированные записи" #: src/Module/BaseProfile.php:118 msgid "Posts that are scheduled for publishing" -msgstr "" +msgstr "Записи, публикация которых запланирована" #: src/Module/BaseProfile.php:137 src/Module/BaseProfile.php:140 msgid "Tips for New Members" @@ -7589,7 +7589,7 @@ msgstr "Пакетные действия" #: src/Module/Contact.php:886 msgid "Conversations started by this contact" -msgstr "" +msgstr "Диалоги этого контакта" #: src/Module/Contact.php:891 msgid "Posts and Comments" @@ -8902,7 +8902,7 @@ msgstr "Комментарии %s" #: src/Module/Profile/Schedule.php:84 msgid "Scheduled" -msgstr "" +msgstr "Запланировано" #: src/Module/Profile/Schedule.php:85 msgid "Content" @@ -9402,11 +9402,11 @@ msgstr "Автоматически подгружать новые записи, #: src/Module/Settings/Display.php:215 msgid "Enable Smart Threading" -msgstr "" +msgstr "Включить умное ветвление обсуждений" #: src/Module/Settings/Display.php:215 msgid "Enable the automatic suppression of extraneous thread indentation." -msgstr "" +msgstr "Включить автоматическое удаление излишних отступов в ветках обсуждений." #: src/Module/Settings/Display.php:216 msgid "Display the Dislike feature" @@ -10263,7 +10263,7 @@ msgstr "Редактировать" #: src/Object/Post.php:214 msgid "Pinned item" -msgstr "" +msgstr "Закреплённая запись" #: src/Object/Post.php:218 msgid "Delete globally" @@ -10296,11 +10296,11 @@ msgstr "Возможно" #: src/Object/Post.php:303 msgid "Ignore thread" -msgstr "Игнорировать тему" +msgstr "Игнорировать обсуждение" #: src/Object/Post.php:304 msgid "Unignore thread" -msgstr "Не игнорировать тему" +msgstr "Не игнорировать обсуждение" #: src/Object/Post.php:305 msgid "Toggle ignore status" @@ -10308,31 +10308,31 @@ msgstr "Переключить игнорирование" #: src/Object/Post.php:315 msgid "Add star" -msgstr "" +msgstr "Добавить в Избранное" #: src/Object/Post.php:316 msgid "Remove star" -msgstr "" +msgstr "Убрать из Избранного" #: src/Object/Post.php:317 msgid "Toggle star status" -msgstr "" +msgstr "Добавить/убрать из Избранного" #: src/Object/Post.php:328 msgid "Pin" -msgstr "" +msgstr "Закрепить" #: src/Object/Post.php:329 msgid "Unpin" -msgstr "" +msgstr "Открепить" #: src/Object/Post.php:330 msgid "Toggle pin status" -msgstr "" +msgstr "Закрепить/открепить" #: src/Object/Post.php:333 msgid "Pinned" -msgstr "" +msgstr "Закреплено" #: src/Object/Post.php:338 msgid "Add tag" @@ -10755,7 +10755,7 @@ msgstr "" #: view/theme/frio/config.php:166 msgid "Pink" -msgstr "" +msgstr "Розовый" #: view/theme/frio/config.php:167 msgid "Copy or paste schemestring" diff --git a/view/lang/ru/strings.php b/view/lang/ru/strings.php index 59d9aa8aff..a308cca7ab 100644 --- a/view/lang/ru/strings.php +++ b/view/lang/ru/strings.php @@ -40,10 +40,10 @@ $a->strings["You are following %s."] = "Вы подписаны на %s."; $a->strings["Tagged"] = "Отмечено"; $a->strings["%s reshared this."] = "%s поделился этим."; $a->strings["Reshared"] = "Репост"; -$a->strings["%s is participating in this thread."] = "%s участвует в этой ветке."; +$a->strings["%s is participating in this thread."] = "%s участвует в этом обсуждении"; $a->strings["Relayed"] = "Ретранслировано"; $a->strings["Fetched"] = "Загружено"; -$a->strings["Follow Thread"] = "Подписаться на тему"; +$a->strings["Follow Thread"] = "Подписаться на обсуждение"; $a->strings["View Status"] = "Просмотреть статус"; $a->strings["View Profile"] = "Просмотреть профиль"; $a->strings["View Photos"] = "Просмотреть фото"; @@ -100,6 +100,7 @@ $a->strings["Clear browser location"] = "Очистить местонахожд $a->strings["clear location"] = "убрать местонахождение"; $a->strings["Set title"] = "Установить заголовок"; $a->strings["Categories (comma-separated list)"] = "Категории (список через запятую)"; +$a->strings["Scheduled at"] = "Запланировано на"; $a->strings["Permission settings"] = "Настройки разрешений"; $a->strings["Permissions"] = "Разрешения"; $a->strings["Public post"] = "Публичное сообщение"; @@ -975,6 +976,13 @@ $a->strings["Content warning: %s"] = "Предупреждение о конте $a->strings["bytes"] = "байт"; $a->strings["View on separate page"] = "Посмотреть в отдельной вкладке"; $a->strings["[no subject]"] = "[без темы]"; +$a->strings["%1\$s had started following you"] = "%1\$s подписались на вас"; +$a->strings["%1\$s commented in your thread %2\$s"] = "%1\$s ответил в вашем обсуждении %2\$s"; +$a->strings["%1\$s commented in their thread %2\$s"] = "%1\$s ответил в своём обсуждении %2\$s"; +$a->strings["%1\$s commented in their thread"] = "%1\$s ответил в своём обсуждении"; +$a->strings["%1\$s commented in the thread %2\$s from %3\$s"] = "%1\$s ответил в обсуждении %2\$s от %3\$s"; +$a->strings["%1\$s commented in the thread from %3\$s"] = "%1\$s ответил в обсуждении от %3\$s"; +$a->strings["%1\$s commented on your thread %2\$s"] = "%1\$s ответил в вашем обсуждении %2\$s"; $a->strings["Edit profile"] = "Редактировать профиль"; $a->strings["Change profile photo"] = "Изменить фото профиля"; $a->strings["Homepage:"] = "Домашняя страничка:"; @@ -1405,6 +1413,9 @@ $a->strings["Request date"] = "Запрос даты"; $a->strings["No registrations."] = "Нет регистраций."; $a->strings["Note from the user"] = "Сообщение от пользователя"; $a->strings["Deny"] = "Отклонить"; +$a->strings["Only starting posts can be bookmarked"] = "Только заглавные записи могут быть добавлены в закладки"; +$a->strings["Only starting posts can be muted"] = "Только заглавные записи можно заглушить"; +$a->strings["Only starting posts can be pinned"] = "Только заглавные записи можно закрепить"; $a->strings["Contact not found"] = "Контакт не найден"; $a->strings["Profile not found"] = "Профиль не найден"; $a->strings["No installed applications."] = "Нет установленных приложений."; @@ -1427,6 +1438,8 @@ $a->strings["Diagnostics"] = "Диагностика"; $a->strings["User registrations waiting for confirmation"] = "Регистрации пользователей, ожидающие подтверждения"; $a->strings["Profile Details"] = "Информация о вас"; $a->strings["Only You Can See This"] = "Только вы можете это видеть"; +$a->strings["Scheduled Posts"] = "Запланированные записи"; +$a->strings["Posts that are scheduled for publishing"] = "Записи, публикация которых запланирована"; $a->strings["Tips for New Members"] = "Советы для новых участников"; $a->strings["People Search - %s"] = "Поиск по людям - %s"; $a->strings["Forum Search - %s"] = "Поиск по форумам - %s"; @@ -1510,6 +1523,7 @@ $a->strings["Search your contacts"] = "Поиск ваших контактов" $a->strings["Results for: %s"] = "Результаты для: %s"; $a->strings["Update"] = "Обновление"; $a->strings["Batch Actions"] = "Пакетные действия"; +$a->strings["Conversations started by this contact"] = "Диалоги этого контакта"; $a->strings["Posts and Comments"] = "Записи и комментарии"; $a->strings["View all known contacts"] = "Показать все известные контакты"; $a->strings["Advanced Contact Settings"] = "Дополнительные Настройки Контакта"; @@ -1764,6 +1778,7 @@ $a->strings["View as"] = "Посмотреть как"; $a->strings["%s's timeline"] = "Лента %s"; $a->strings["%s's posts"] = "Записи %s"; $a->strings["%s's comments"] = "Комментарии %s"; +$a->strings["Scheduled"] = "Запланировано"; $a->strings["Only parent users can create additional accounts."] = "Только основные пользователи могут создавать дополнительные учётные записи."; $a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Если вы не знакомы с OpenID, пожалуйста, оставьте это поле пустым и заполните остальные элементы."; $a->strings["Your OpenID (optional): "] = "Ваш OpenID (необязательно):"; @@ -1858,6 +1873,8 @@ $a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "Минимум $a->strings["Auto update may add new posts at the top of the post stream pages, which can affect the scroll position and perturb normal reading if it happens anywhere else the top of the page."] = "Автообновление может загружать новые записи в начало ленты, что может изменить положение прокрутки и помешать чтению, если вы находитесь не в начале страницы."; $a->strings["Infinite scroll"] = "Бесконечная прокрутка"; $a->strings["Automatic fetch new items when reaching the page end."] = "Автоматически подгружать новые записи, когда вы оказываетесь в конце страницы."; +$a->strings["Enable Smart Threading"] = "Включить умное ветвление обсуждений"; +$a->strings["Enable the automatic suppression of extraneous thread indentation."] = "Включить автоматическое удаление излишних отступов в ветках обсуждений."; $a->strings["Beginning of week:"] = "Начало недели:"; $a->strings["Profile Name is required."] = "Необходимо имя профиля."; $a->strings["Profile couldn't be updated."] = "Профиль не получилось обновить."; @@ -1962,6 +1979,7 @@ $a->strings["%s posted an update."] = "%s отправил/а/ обновлен $a->strings["This entry was edited"] = "Эта запись была отредактирована"; $a->strings["Private Message"] = "Личное сообщение"; $a->strings["Edit"] = "Редактировать"; +$a->strings["Pinned item"] = "Закреплённая запись"; $a->strings["Delete globally"] = "Удалить везде"; $a->strings["Remove locally"] = "Убрать для себя"; $a->strings["Block %s"] = "Заблокировать %s"; @@ -1969,9 +1987,16 @@ $a->strings["Save to folder"] = "Сохранить в папку"; $a->strings["I will attend"] = "Я буду"; $a->strings["I will not attend"] = "Меня не будет"; $a->strings["I might attend"] = "Возможно"; -$a->strings["Ignore thread"] = "Игнорировать тему"; -$a->strings["Unignore thread"] = "Не игнорировать тему"; +$a->strings["Ignore thread"] = "Игнорировать обсуждение"; +$a->strings["Unignore thread"] = "Не игнорировать обсуждение"; $a->strings["Toggle ignore status"] = "Переключить игнорирование"; +$a->strings["Add star"] = "Добавить в Избранное"; +$a->strings["Remove star"] = "Убрать из Избранного"; +$a->strings["Toggle star status"] = "Добавить/убрать из Избранного"; +$a->strings["Pin"] = "Закрепить"; +$a->strings["Unpin"] = "Открепить"; +$a->strings["Toggle pin status"] = "Закрепить/открепить"; +$a->strings["Pinned"] = "Закреплено"; $a->strings["Add tag"] = "Добавить тег"; $a->strings["Quote share this"] = "Поделиться с комментарием"; $a->strings["Quote Share"] = "Цитировать"; @@ -2034,3 +2059,4 @@ $a->strings["minutes"] = "мин."; $a->strings["second"] = "секунда"; $a->strings["seconds"] = "сек."; $a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s назад"; +$a->strings["Pink"] = "Розовый";