diff --git a/.typos.toml b/.typos.toml index f3dacdc5d..375481b9b 100644 --- a/.typos.toml +++ b/.typos.toml @@ -17,6 +17,7 @@ extend-exclude = [ "*.rtl.css", ".git/", "app/i18n/az/", + "app/i18n/be/", "app/i18n/cs/", "app/i18n/de/", "app/i18n/el/", diff --git a/CREDITS.md b/CREDITS.md index 23ad3925c..7edded92b 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -260,6 +260,7 @@ People are sorted by name so please keep this order. * [papaschloss](https://github.com/papaschloss): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:papaschloss) * [Patrick Crandol](https://github.com/pattems): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:pattems) * [Paulius Šukys](https://github.com/psukys): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:psukys), [Web](https://www.sukys.eu/) +* [Pavel Miniutka](https://github.com/pavel-miniutka): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:pavel-miniutka) * [Paweł Kalemba](https://github.com/pkalemba): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:pkalemba) * [payaci](https://github.com/payaci): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is%3Apr+author%3Apayaci) * [pe1uca](https://github.com/pe1uca): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:pe1uca) diff --git a/README.fr.md b/README.fr.md index 216d95d6e..240a5793f 100644 --- a/README.fr.md +++ b/README.fr.md @@ -237,6 +237,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio | Langage | Progression | | | - | - | - | | Azərbaycanca (az) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Faz+%2F%28TODO%7CDIRTY%29%24%2F) | +| Беларуская (be) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fbe+%2F%28TODO%7CDIRTY%29%24%2F) | | Čeština (cs) | ■■■■■■■■・・ 81% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) | | Deutsch (de) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) | | Ελληνικά (el) | ■■■■■■■・・・ 75% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) | diff --git a/README.md b/README.md index aa929b53b..b5f451d72 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E | Language | Progress | | | - | - | - | | Azərbaycanca (az) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Faz+%2F%28TODO%7CDIRTY%29%24%2F) | +| Беларуская (be) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fbe+%2F%28TODO%7CDIRTY%29%24%2F) | | Čeština (cs) | ■■■■■■■■・・ 81% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) | | Deutsch (de) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) | | Ελληνικά (el) | ■■■■■■■・・・ 75% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) | diff --git a/app/i18n/az/gen.php b/app/i18n/az/gen.php index 1675f54df..5aa6337ac 100644 --- a/app/i18n/az/gen.php +++ b/app/i18n/az/gen.php @@ -191,6 +191,7 @@ return array( ), 'lang' => array( 'az' => 'Azərbaycanca', // IGNORE + 'be' => 'Беларуская', // IGNORE 'cs' => 'Čeština', // IGNORE 'de' => 'Deutsch', // IGNORE 'el' => 'Ελληνικά', // IGNORE diff --git a/app/i18n/be/admin.php b/app/i18n/be/admin.php new file mode 100644 index 000000000..c77c029fc --- /dev/null +++ b/app/i18n/be/admin.php @@ -0,0 +1,165 @@ + array( + 'allow_anonymous' => 'Дазволіць ананімнае чытанне артыкулаў прадвызначанага карыстальніка (%s)', + 'allow_anonymous_refresh' => 'Дазволіць ананімнае абнаўленне артыкулаў', + 'api_enabled' => 'Дазволіць доступ да API (патрабуецца для мабільных праграм і абагульвання карыстальніцкіх запытаў)', + 'form' => 'Вэб-форма (традыцыйны спосаб, патрабуе JavaScript)', + 'http' => 'HTTP (для дасведчаных: кіруецца вэб-серверам, OIDC, SSO…)', + 'none' => 'Няма (небяспечна)', + 'title' => 'Аўтэнтыфікацыя', + 'token' => 'Галоўны токен аўтэнтыфікацыі', + 'token_help' => 'Дазваляе доступ да ўсіх RSS-вывадаў карыстальніка, а таксама абнаўленне стужак без аўтэнтыфікацыі:', + 'type' => 'Спосаб аўтэнтыфікацыі', + ), + 'extensions' => array( + 'author' => 'Аўтар', + 'community' => 'Даступныя пашырэнні супольнасці', + 'description' => 'Апісанне', + 'disabled' => 'Адключана', + 'empty_list' => 'Усталяваных пашырэнняў няма', + 'empty_list_help' => 'Праверце журналы, каб вызначыць прычыну пустога спісу пашырэнняў.', + 'enabled' => 'Уключана', + 'is_compatible' => 'Сумяшчальнасць', + 'latest' => 'Усталявана', + 'name' => 'Назва', + 'no_configure_view' => 'Гэта пашырэнне нельга сканфігураваць.', + 'system' => array( + '_' => 'Сістэмныя пашырэнні', + 'no_rights' => 'Сістэмнае пашырэнне (у вас няма неабходных дазволаў)', + ), + 'title' => 'Пашырэнні', + 'update' => 'Даступна абнаўленне', + 'user' => 'Карыстальніцкія пашырэнні', + 'version' => 'Версія', + ), + 'stats' => array( + '_' => 'Статыстыка', + 'all_feeds' => 'Усе стужкі', + 'category' => 'Катэгорыя', + 'date_published' => 'Дата публікацыі', + 'date_received' => 'Дата атрымання', + 'entry_count' => 'Колькасць артыкулаў', + 'entry_per_category' => 'Артыкулы па катэгорыях', + 'entry_per_day' => 'Колькасць артыкулаў за дзень (апошнія 30 дзён)', + 'entry_per_day_of_week' => 'За дзень тыдня (у сярэднім: %.2f артыкулаў)', + 'entry_per_hour' => 'За гадзіну (у сярэднім: %.2f артыкулаў)', + 'entry_per_month' => 'За месяц (у сярэднім: %.2f артыкулаў)', + 'entry_repartition' => 'Размеркаванне артыкулаў', + 'feed' => 'Стужка', + 'feed_per_category' => 'Стужкі па катэгорыях', + 'idle' => 'Неактыўныя стужкі', + 'main' => 'Асноўная статыстыка', + 'main_stream' => 'Асноўная стужка', + 'nb_unreads' => 'Колькасць непрачытаных артыкулаў', + 'no_idle' => 'Неактыўных стужак няма!', + 'number_entries' => '%d артыкулаў', + 'overview' => 'Агляд', + 'percent_of_total' => '% ад агульнай колькасці', + 'repartition' => 'Размеркаванне артыкулаў: %s', + 'status_favorites' => 'Абранае', + 'status_read' => 'Прачытанае', + 'status_total' => 'Усяго', + 'status_unread' => 'Непрачытанае', + 'title' => 'Статыстыка', + 'top_feed' => 'Дзесяць найлепшых стужак', + 'unread_dates' => 'Даты з найбольшай колькасцю непрачытаных артыкулаў', + ), + 'system' => array( + '_' => 'Канфігурацыя сістэмы', + 'auto-update-url' => 'URL-адрас сервера аўтаматычнага абнаўлення', + 'base-url' => array( + '_' => 'Базавы URL-адрас', + 'recommendation' => 'Аўтаматычная рэкамендацыя: %s', + ), + 'closed_registration_message' => 'Паведамленне пры закрытай рэгістрацыі', + 'cookie-duration' => array( + 'help' => 'у секундах', + 'number' => 'Працягласць сеансу', + ), + 'default_closed_registration_message' => 'У дадзены момант гэты сервер не прымае новых рэгістрацый.', + 'force_email_validation' => 'Прымусова правяраць адрас электроннай пошты', + 'instance-name' => 'Назва сервера', + 'internal-host-allowlist' => array( + '_' => 'Спіс дазволеных унутраных вузлоў', + 'help' => 'Дадайце адзін запіс у кожным радку:
host:port. Напрыклад, 127.0.0.1:8080 або rss-bridge:800.0.0.0/0, каб дазволіць любы IPv4, або ::/0, каб дазволіць любы IPv6*, каб дазволіць любы вузел (небяспечна)%2F, некаторыя кліенты могуць не працаваць!',
+ 'invalid-configuration' => '⚠️ УВАГА: верагодна, няправільны базавы URL-адрас у ./data/config.php',
+ 'pass' => '✔️ ПРАЙШОЎ',
+ 'unknown-error' => '❌',
+ ),
+ 'test' => array(
+ 'fever' => 'Праверка канфігурацыі Fever API:',
+ 'greader' => 'Праверка канфігурацыі Google Reader API:',
+ ),
+ 'title' => array(
+ '_' => 'Кропкі доступу FreshRSS API',
+ 'extension' => 'API для пашырэнняў',
+ 'fever' => 'API, сумяшчальны з Fever',
+ 'greader' => 'API, сумяшчальны з Google Reader',
+ ),
+ ),
+);
diff --git a/app/i18n/be/conf.php b/app/i18n/be/conf.php
new file mode 100644
index 000000000..c5c9b4d4c
--- /dev/null
+++ b/app/i18n/be/conf.php
@@ -0,0 +1,384 @@
+ array(
+ '_' => 'Архіваванне',
+ 'exception' => 'Выключэнне з ачысткі',
+ 'help' => 'Дадатковыя параметры даступныя ў наладах асобнай стужкі',
+ 'keep_favourites' => 'Ніколі не выдаляць абранае',
+ 'keep_labels' => 'Ніколі не выдаляць меткі',
+ 'keep_max' => 'Максімальная колькасць артыкулаў для захавання ў стужцы',
+ 'keep_min_by_feed' => 'Мінімальная колькасць артыкулаў для захавання ў стужцы',
+ 'keep_period' => 'Максімальны ўзрост артыкулаў для захавання',
+ 'keep_unreads' => 'Ніколі не выдаляць непрачытаныя артыкулы',
+ 'maintenance' => 'Абслугоўванне',
+ 'optimize' => 'Аптымізаваць базу даных',
+ 'optimize_help' => 'Запускайце перыядычна, каб паменшыць памер базы даных',
+ 'policy' => 'Палітыка ачысткі',
+ 'policy_warning' => 'Калі палітыка ачысткі не выбрана, усе артыкулы будуць захоўвацца.',
+ 'purge_now' => 'Ачысціць зараз',
+ 'title' => 'Архіваванне',
+ 'ttl' => 'Мінімальны інтэрвал аўтаматычнага абнаўлення',
+ ),
+ 'display' => array(
+ '_' => 'Выгляд',
+ 'article' => array(
+ 'authors_date' => array(
+ '_' => 'Аўтары і дата',
+ 'both' => 'У загалоўку і падвале',
+ 'footer' => 'У падвале',
+ 'header' => 'У загалоўку',
+ 'none' => 'Няма',
+ ),
+ 'feed_name' => array(
+ 'above_title' => 'Над назвай/тэгамі',
+ 'none' => 'Няма',
+ 'with_authors' => 'У радку аўтараў і даты',
+ ),
+ 'feed_title' => 'Назва стужкі',
+ 'icons' => array(
+ '_' => 'Пазіцыя значкоў артыкула#force_feed да URL-адраса.',
+ 'invalid_url' => 'Няправільны URL-адрас %s',
+ 'n_actualized' => '%d стужак абноўлена',
+ 'n_entries_deleted' => '%d артыкулаў выдалена',
+ 'no_refresh' => 'Няма стужак для абнаўлення',
+ 'not_added' => 'Не ўдалося дадаць %s',
+ 'not_found' => 'Стужку немагчыма знайсці',
+ 'over_max' => 'Вы дасягнулі ліміту стужак (%d)',
+ 'reloaded' => '%s перазагружана',
+ 'selector_preview' => array(
+ 'http_error' => 'Не ўдалося загрузіць змесціва сайта.',
+ 'no_entries' => 'У гэтай стужцы няма артыкулаў. Для стварэння перадпрагляду патрэбны як мінімум адзін артыкул.',
+ 'no_feed' => 'Унутраная памылка (стужка не знойдзена).',
+ 'no_result' => 'Селектар не адпавядае ніводнаму элементу. Замест гэтага будзе паказаны зыходны тэкст стужкі.',
+ 'selector_empty' => 'Селектар пусты. Для стварэння перадпрагляду трэба задаць селектар.',
+ ),
+ 'updated' => 'Стужка абноўлена',
+ ),
+ 'purge_completed' => 'Ачыстка завершана (%d артыкулаў выдалена)',
+ ),
+ 'tag' => array(
+ 'created' => 'Метка «%s» створана.',
+ 'error' => 'Не ўдалося абнавіць метку!',
+ 'name_exists' => 'Назва меткі ўжо існуе.',
+ 'renamed' => 'Метка «%s» перайменавана ў «%s».',
+ 'updated' => 'Метка абноўлена.',
+ ),
+ 'update' => array(
+ 'can_apply' => 'Даступна абнаўленне FreshRSS: версія %s.',
+ 'error' => 'Падчас абнаўлення ўзнікла памылка: %s',
+ 'file_is_nok' => 'Даступна абнаўленне FreshRSS (версія %s), але праверце правы доступу да каталога %s. HTTP-сервер павінен мець права на запіс.',
+ 'finished' => 'Абнаўленне завершана!',
+ 'none' => 'Абнаўленняў няма',
+ 'server_not_found' => 'Сервер абнаўленняў не знойдзены. [%s]',
+ ),
+ 'user' => array(
+ 'created' => array(
+ '_' => 'Карыстальнік %s створаны',
+ 'error' => 'Немагчыма стварыць карыстальніка %s',
+ ),
+ 'deleted' => array(
+ '_' => 'Карыстальнік %s выдалены',
+ 'error' => 'Немагчыма выдаліць карыстальніка %s',
+ ),
+ 'updated' => array(
+ '_' => 'Карыстальнік %s абноўлены',
+ 'error' => 'Карыстальнік %s не абноўлены',
+ ),
+ ),
+);
diff --git a/app/i18n/be/gen.php b/app/i18n/be/gen.php
new file mode 100644
index 000000000..3682a05a3
--- /dev/null
+++ b/app/i18n/be/gen.php
@@ -0,0 +1,351 @@
+ array(
+ 'actualize' => 'Абнавіць стужкі',
+ 'add' => 'Дадаць',
+ 'back_to_rss_feeds' => '← Вярнуцца да RSS-стужак',
+ 'cancel' => 'Скасаваць',
+ 'close' => 'Закрыць',
+ 'create' => 'Стварыць',
+ 'delete_all_feeds' => 'Выдаліць усе стужкі',
+ 'delete_errored_feeds' => 'Выдаліць стужкі з памылкамі',
+ 'delete_muted_feeds' => 'Выдаліць прыглушаныя стужкі',
+ 'demote' => 'Панізіць',
+ 'disable' => 'Адключыць',
+ 'download' => 'Спампаваць',
+ 'empty' => 'Апаражніць',
+ 'enable' => 'Уключыць',
+ 'export' => 'Экспартаваць',
+ 'filter' => 'Фільтр',
+ 'import' => 'Імпартаваць',
+ 'load_default_shortcuts' => 'Загрузіць прадвызначаныя спалучэнні клавіш',
+ 'manage' => 'Наладзіць',
+ 'mark_read' => 'Пазначыць як прачытанае',
+ 'menu' => array(
+ 'open' => 'Адкрыць меню',
+ ),
+ 'nav_buttons' => array(
+ 'next' => 'Перайсці да наступнага артыкула',
+ 'prev' => 'Перайсці да папярэдняга артыкула',
+ 'up' => 'Перайсці ўверх',
+ ),
+ 'open_url' => 'Адкрыць URL-адрас',
+ 'promote' => 'Павысіць',
+ 'purge' => 'Ачысціць',
+ 'refresh_opml' => 'Абнавіць OPML',
+ 'remove' => 'Выдаліць',
+ 'rename' => 'Перайменаваць',
+ 'see_website' => 'Праглядзець сайт',
+ 'submit' => 'Адправіць',
+ 'truncate' => 'Выдаліць усе артыкулы',
+ 'update' => 'Абнавіць',
+ ),
+ 'auth' => array(
+ 'accept_tos' => 'Я прымаю ўмовы выкарыстання.',
+ 'email' => 'Адрас электроннай пошты',
+ 'keep_logged_in' => 'Не выходзіць з уліковага запісу (%s сут)',
+ 'login' => 'Увайсці',
+ 'logout' => 'Выйсці',
+ 'password' => array(
+ '_' => 'Пароль',
+ 'format' => 'Не менш за 7 сімвалаў',
+ ),
+ 'reauth' => array(
+ 'header' => 'Патрабуецца паўторная аўтэнтыфікацыя',
+ 'tip' => 'Паўторны ўваход не спатрэбіцца на працягу %d хв',
+ 'title' => 'Паўторная аўтэнтыфікацыя',
+ ),
+ 'registration' => array(
+ '_' => 'Новы ўліковы запіс',
+ 'ask' => 'Стварыць уліковы запіс?',
+ 'title' => 'Стварэнне ўліковага запісу',
+ ),
+ 'username' => array(
+ '_' => 'Імя карыстальніка',
+ 'format' => '1-39 сімвалаў: літары, лічбы і . _ @ -',
+ ),
+ ),
+ 'date' => array(
+ 'Apr' => '\\к\\р\\а\\с\\а\\в\\і\\к\\а',
+ 'Aug' => '\\ж\\н\\і\\ў\\н\\я',
+ 'Dec' => '\\с\\н\\е\\ж\\н\\я',
+ 'Feb' => '\\л\\ю\\т\\а\\г\\а',
+ 'Jan' => '\\с\\т\\у\\д\\з\\е\\н\\я',
+ 'Jul' => '\\л\\і\\п\\е\\н\\я',
+ 'Jun' => '\\ч\\э\\р\\в\\е\\н\\я',
+ 'Mar' => '\\с\\а\\к\\а\\в\\і\\к\\а',
+ 'May' => '\\м\\а\\я',
+ 'Nov' => '\\л\\і\\с\\т\\а\\п\\а\\д\\а',
+ 'Oct' => '\\к\\а\\с\\т\\р\\ы\\ч\\н\\і\\к\\а',
+ 'Sep' => '\\в\\е\\р\\а\\с\\н\\я',
+ 'apr' => 'кра',
+ 'april' => 'Красавік',
+ 'aug' => 'жні',
+ 'august' => 'Жнівень',
+ 'before_yesterday' => 'Пазаўчора',
+ 'dec' => 'сне',
+ 'december' => 'Снежань',
+ 'feb' => 'лют',
+ 'february' => 'Люты',
+ 'format_date' => 'j %s Y', // IGNORE
+ 'format_date_hour' => 'j %s Y \\у H\\:i',
+ 'fri' => 'Пт',
+ 'jan' => 'сту',
+ 'january' => 'Студзень',
+ 'jul' => 'ліп',
+ 'july' => 'Ліпень',
+ 'jun' => 'чэр',
+ 'june' => 'Чэрвень',
+ 'last_2_year' => 'Апошнія два гады',
+ 'last_3_month' => 'Апошнія тры месяцы',
+ 'last_3_year' => 'Апошнія тры гады',
+ 'last_5_year' => 'Апошнія пяць гадоў',
+ 'last_6_month' => 'Апошнія шэсць месяцаў',
+ 'last_month' => 'Апошні месяц',
+ 'last_week' => 'Апошні тыдзень',
+ 'last_year' => 'Мінулы год',
+ 'mar' => 'сак',
+ 'march' => 'Сакавік',
+ 'may' => 'мая',
+ 'may_' => 'май',
+ 'mon' => 'Пн',
+ 'month' => 'мес',
+ 'nov' => 'ліс',
+ 'november' => 'Лістапад',
+ 'oct' => 'кас',
+ 'october' => 'Кастрычнік',
+ 'sat' => 'Сб',
+ 'sep' => 'вер',
+ 'september' => 'Верасень',
+ 'sun' => 'Нд',
+ 'thu' => 'Чц',
+ 'today' => 'Сёння',
+ 'tue' => 'Аў',
+ 'wed' => 'Ср',
+ 'yesterday' => 'Учора',
+ ),
+ 'dir' => 'ltr', // IGNORE
+ 'freshrss' => array(
+ '_' => 'FreshRSS', // IGNORE
+ 'about' => 'Пра FreshRSS',
+ ),
+ 'interval' => array(
+ 'day' => array(
+ 0 => '%d дзень таму',
+ 1 => '%d дні таму',
+ 2 => '%d дзён таму',
+ ),
+ 'hour' => array(
+ 0 => '%d гадзіну таму',
+ 1 => '%d гадзіны таму',
+ 2 => '%d гадзін таму',
+ ),
+ 'justnow' => 'толькі што',
+ 'minute' => array(
+ 0 => '%d хвіліну таму',
+ 1 => '%d хвіліны таму',
+ 2 => '%d хвілін таму',
+ ),
+ 'month' => array(
+ 0 => '%d месяц таму',
+ 1 => '%d месяцы таму',
+ 2 => '%d месяцаў таму',
+ ),
+ 'second' => array(
+ 0 => '%d секунду таму',
+ 1 => '%d секунды таму',
+ 2 => '%d секунд таму',
+ ),
+ 'year' => array(
+ 0 => '%d год таму',
+ 1 => '%d гады таму',
+ 2 => '%d гадоў таму',
+ ),
+ ),
+ 'js' => array(
+ 'category_empty' => 'Пустая катэгорыя',
+ 'confirm_action' => 'Вы ўпэўненыя, што хочаце выканаць гэта дзеянне? Яго нельга скасаваць!',
+ 'confirm_action_feed_cat' => 'Вы ўпэўненыя, што хочаце выканаць гэта дзеянне? Вы страціце звязанае абранае і карыстальніцкія запыты. Яго нельга скасаваць!',
+ 'confirm_exit_slider' => 'Вы ўпэўненыя, што хочаце скасаваць незахаваныя налады?',
+ 'feedback' => array(
+ 'body_new_articles' => array(
+ 0 => 'На FreshRSS ёсць %d новы артыкул для чытання.',
+ 1 => 'На FreshRSS ёсць %d новыя артыкулы для чытання.',
+ 2 => 'На FreshRSS ёсць %d новых артыкулаў для чытання.',
+ ),
+ 'body_unread_articles' => array(
+ 0 => '(непрачытана: %d)',
+ 1 => '(непрачытана: %d)',
+ 2 => '(непрачытана: %d)',
+ ),
+ 'request_failed' => 'Запыт не атрымаўся; магчыма, прычынай былі праблемы з падключэннем да інтэрнэту.',
+ 'title_new_articles' => 'FreshRSS: новыя артыкулы!',
+ ),
+ 'labels_empty' => 'Няма метак',
+ 'new_article' => 'Даступныя новыя артыкулы, націсніце, каб абнавіць старонку.',
+ 'should_be_activated' => 'Неабходна ўключыць JavaScript',
+ 'unsafe_csp_header' => 'Загаловак CSP, які выкарыстоўваецца, небяспечны, і FreshRSS можа быць уразлівай да атак XSS. Паглядзіце дакументацыю',
+ ),
+ 'lang' => array(
+ 'az' => 'Azərbaycanca', // IGNORE
+ 'be' => 'Беларуская', // IGNORE
+ 'cs' => 'Čeština', // IGNORE
+ 'de' => 'Deutsch', // IGNORE
+ 'el' => 'Ελληνικά', // IGNORE
+ 'en' => 'English', // IGNORE
+ 'en-US' => 'English (United States)', // IGNORE
+ 'es' => 'Español', // IGNORE
+ 'fa' => 'فارسی', // IGNORE
+ 'fi' => 'Suomi', // IGNORE
+ 'fr' => 'Français', // IGNORE
+ 'he' => 'עברית', // IGNORE
+ 'hu' => 'Magyar', // IGNORE
+ 'id' => 'Bahasa Indonesia', // IGNORE
+ 'it' => 'Italiano', // IGNORE
+ 'ja' => '日本語', // IGNORE
+ 'ko' => '한국어', // IGNORE
+ 'lt' => 'Lietuvių', // IGNORE
+ 'lv' => 'Latviešu', // IGNORE
+ 'nl' => 'Nederlands', // IGNORE
+ 'oc' => 'Occitan', // IGNORE
+ 'pl' => 'Polski', // IGNORE
+ 'pt-BR' => 'Português (Brasil)', // IGNORE
+ 'pt-PT' => 'Português (Portugal)', // IGNORE
+ 'ru' => 'Русский', // IGNORE
+ 'sk' => 'Slovenčina', // IGNORE
+ 'tr' => 'Türkçe', // IGNORE
+ 'uk' => 'Українська', // IGNORE
+ 'zh-CN' => '简体中文', // IGNORE
+ 'zh-TW' => '正體中文', // IGNORE
+ ),
+ 'menu' => array(
+ 'about' => 'Пра праграму',
+ 'account' => 'Уліковы запіс',
+ 'admin' => 'Адміністраванне',
+ 'advanced_search' => 'Пашыраны пошук',
+ 'archiving' => 'Архіваванне',
+ 'authentication' => 'Аўтэнтыфікацыя',
+ 'check_install' => 'Праверка ўсталявання',
+ 'configuration' => 'Канфігурацыя',
+ 'display' => 'Выгляд',
+ 'extensions' => 'Пашырэнні',
+ 'logs' => 'Журнал',
+ 'privacy' => 'Прыватнасць',
+ 'queries' => 'Карыстальніцкія запыты',
+ 'reading' => 'Чытанне',
+ 'search' => 'Пошук слоў або #тэгаў',
+ 'search_help' => 'Глядзіце дакументацыю па пашыраных параметрах пошуку',
+ 'sharing' => 'Абагульванне',
+ 'shortcuts' => 'Спалучэнні клавіш',
+ 'stats' => 'Статыстыка',
+ 'system' => 'Канфігурацыя сістэмы',
+ 'update' => 'Абнаўленне',
+ 'user_management' => 'Кіраванне карыстальнікамі',
+ 'user_profile' => 'Профіль',
+ ),
+ 'period' => array(
+ 'days' => 'сут',
+ 'hours' => 'гадз',
+ 'months' => 'мес',
+ 'weeks' => 'тыд',
+ 'years' => 'г',
+ ),
+ 'readme' => array(
+ 'contribute' => 'Унесці ўклад',
+ 'language' => 'Мова',
+ 'translated' => 'Прагрэс',
+ ),
+ 'search' => array(
+ 'advanced_search_help' => 'Гэта форма дапамагае ствараць пошукавыя запыты, але ручныя запыты яшчэ больш магутныя.',
+ 'authors' => 'Аўтары',
+ 'categories' => 'Катэгорыі',
+ 'content' => 'Змесціва',
+ 'date_from' => 'Ад',
+ 'date_modified' => 'Дата змянення на серверы',
+ 'date_past' => 'За апошнія',
+ 'date_published' => 'Дата публікацыі',
+ 'date_range' => 'Дыяпазон дат',
+ 'date_received' => 'Дата атрымання',
+ 'date_to' => 'Да',
+ 'date_user' => 'Дата змянення карыстальнікам',
+ 'feeds' => 'Стужкі',
+ 'free_text' => 'Вольны тэкст',
+ 'free_text_help' => 'Шукае і ў загалоўку, і ў змесціве',
+ 'full_documentation' => 'Праглядзець поўную дакументацыю па пошуку',
+ 'labels' => 'Мае меткі',
+ 'multiple_help' => 'Выберыце адзін або некалькі варыянтаў (утрымлівайце Ctrl або Cmd)',
+ 'sources' => 'Крыніцы',
+ 'tags' => 'Тэгі артыкулаў',
+ 'text' => 'Пошук па тэксце',
+ 'text_help' => 'Некалькі радкоў аб’ядноўваюцца лагічным або. Таксама падтрымліваюцца рэгулярныя выразы.',
+ 'text_placeholder' => 'Ключавое слова',
+ 'title' => 'Загаловак',
+ 'url' => 'URL-адрас',
+ 'user_queries' => 'Карыстальніцкія запыты',
+ ),
+ 'share' => array(
+ 'Known' => 'Вядомыя сайты',
+ 'archiveIS' => 'archive.is', // IGNORE
+ 'archiveORG' => 'archive.org', // IGNORE
+ 'archivePH' => 'archive.ph', // IGNORE
+ 'bluesky' => 'Bluesky', // IGNORE
+ 'buffer' => 'Buffer', // IGNORE
+ 'clipboard' => 'Буфер абмену',
+ 'diaspora' => 'Diaspora*', // IGNORE
+ 'email' => 'Электронная пошта',
+ 'email-webmail-firefox-fix' => 'Пошта (вэб-пошта — выпраўленне для Firefox)',
+ 'facebook' => 'Facebook', // IGNORE
+ 'gnusocial' => 'GNU social', // IGNORE
+ 'jdh' => 'Journal du hacker', // IGNORE
+ 'lemmy' => 'Lemmy', // IGNORE
+ 'linkace' => 'LinkAce', // IGNORE
+ 'linkding' => 'Linkding', // IGNORE
+ 'linkedin' => 'LinkedIn', // IGNORE
+ 'mastodon' => 'Mastodon', // IGNORE
+ 'movim' => 'Movim', // IGNORE
+ 'nextcloud-bookmarks' => 'Nextcloud Bookmarks', // IGNORE
+ 'omnivore' => 'Omnivore', // IGNORE
+ 'pinboard' => 'Pinboard', // IGNORE
+ 'pinterest' => 'Pinterest', // IGNORE
+ 'print' => 'Друк',
+ 'raindrop' => 'Raindrop.io', // IGNORE
+ 'reddit' => 'Reddit', // IGNORE
+ 'shaarli' => 'Shaarli', // IGNORE
+ 'telegram' => 'Telegram', // IGNORE
+ 'twitter' => 'Twitter', // IGNORE
+ 'wallabag' => 'wallabag v1', // IGNORE
+ 'wallabagv2' => 'wallabag v2', // IGNORE
+ 'web-sharing-api' => 'Сістэмнае абагульванне',
+ 'whatsapp' => 'Whatsapp', // IGNORE
+ 'xing' => 'Xing', // IGNORE
+ ),
+ 'short' => array(
+ 'attention' => 'Увага!',
+ 'blank_to_disable' => 'Пакіньце пустым, каб адключыць',
+ 'by_author' => 'Аўтар:',
+ 'by_default' => 'Прадвызначана',
+ 'damn' => 'Трасца!',
+ 'default_category' => 'Без катэгорыі',
+ 'no' => 'Не',
+ 'not_applicable' => 'Недаступна',
+ 'ok' => 'Добра!',
+ 'or' => 'або',
+ 'yes' => 'Так',
+ ),
+ 'stream' => array(
+ 'load_more' => 'Паказаць яшчэ артыкулы',
+ 'mark_all_read' => 'Пазначыць усё як прачытанае',
+ 'nothing_to_load' => 'Больш няма артыкулаў',
+ ),
+);
diff --git a/app/i18n/be/index.php b/app/i18n/be/index.php
new file mode 100644
index 000000000..82798ab48
--- /dev/null
+++ b/app/i18n/be/index.php
@@ -0,0 +1,132 @@
+ array(
+ '_' => 'Пра праграму',
+ 'agpl3' => 'AGPL 3', // IGNORE
+ 'bug_reports' => array(
+ 'environment_information' => array(
+ '_' => 'Сістэмная інфармацыя',
+ 'browser' => 'Браўзер',
+ 'database' => 'База даных',
+ 'server_software' => 'Сервернае праграмнае забеспячэнне',
+ 'version_curl' => 'Версія cURL',
+ 'version_frss' => 'Версія FreshRSS',
+ 'version_php' => 'Версія PHP',
+ ),
+ ),
+ 'bugs_reports' => 'Паведамленні пра памылкі',
+ 'documentation' => 'Дакументацыя',
+ 'freshrss_description' => 'FreshRSS — гэта агрэгатар і чытальнік RSS, які можна ўсталяваць на ўласным серверы. Ён дазваляе чытаць і сачыць за некалькімі навінавымі сайтамі адначасова, не пераходзячы з аднаго на іншы. FreshRSS — лёгкая праграма, простая ў выкарыстанні і наладжванні.',
+ 'github' => 'на GitHub',
+ 'license' => 'Ліцэнзія',
+ 'project_website' => 'Вэб-сайт праекта',
+ 'title' => 'Пра праграму',
+ 'version' => 'Версія',
+ ),
+ 'feed' => array(
+ 'empty' => 'Няма артыкулаў для паказу.',
+ 'published' => array(
+ '_' => 'Апублікавана',
+ 'future' => 'Апублікавана ў будучыні',
+ 'today' => 'Апублікавана сёння',
+ 'yesterday' => 'Апублікавана ўчора',
+ ),
+ 'received' => array(
+ '_' => 'Атрымана',
+ 'today' => 'Атрымана сёння',
+ 'yesterday' => 'Атрымана ўчора',
+ ),
+ 'rss_of' => 'RSS-стужка %s',
+ 'title' => 'Асноўная стужка',
+ 'title_fav' => 'Абранае',
+ 'title_global' => 'Глабальны выгляд',
+ 'userModified' => array(
+ '_' => 'Зменена карыстальнікам',
+ 'today' => 'Зменена карыстальнікам сёння',
+ 'yesterday' => 'Зменена карыстальнікам учора',
+ ),
+ ),
+ 'log' => array(
+ '_' => 'Журнал',
+ 'clear' => 'Ачысціць журнал',
+ 'empty' => 'Файл журнала пусты',
+ 'title' => 'Журнал',
+ ),
+ 'menu' => array(
+ 'about' => 'Пра FreshRSS',
+ 'before_one_day' => 'Старэйшыя за адзін дзень',
+ 'before_one_week' => 'Старэйшыя за адзін тыдзень',
+ 'bookmark_query' => 'Дадаць бягучы запыт у закладкі',
+ 'favorites' => 'Абранае (%s)',
+ 'global_view' => 'Глабальны выгляд',
+ 'important' => 'Важныя стужкі',
+ 'main_stream' => 'Асноўная стужка',
+ 'mark_all_read' => 'Пазначыць усё як прачытанае',
+ 'mark_cat_read' => 'Пазначыць катэгорыю як прачытаную',
+ 'mark_feed_read' => 'Пазначыць стужку як прачытаную',
+ 'mark_selection_unread' => 'Пазначыць выбранае як непрачытанае',
+ 'mylabels' => 'Мае меткі',
+ 'non-starred' => 'Паказваць неабранае',
+ 'normal_view' => 'Звычайны выгляд',
+ 'queries' => 'Карыстальніцкія запыты',
+ 'read' => 'Паказваць прачытанае',
+ 'reader_view' => 'Рэжым чытання',
+ 'rss_view' => 'RSS-стужка',
+ 'search_short' => 'Пошук',
+ 'sort' => array(
+ 'asc' => 'Па ўзрастанні',
+ 'c' => array(
+ 'name_asc' => 'Катэгорыя, назвы стужак A→Z',
+ 'name_desc' => 'Катэгорыя, назвы стужак Z→A',
+ ),
+ 'date_asc' => 'Дата публікацыі 1→9',
+ 'date_desc' => 'Дата публікацыі 9→1',
+ 'desc' => 'Па ўбыванні',
+ 'f' => array(
+ 'name_asc' => 'Назва стужкі A→Z',
+ 'name_desc' => 'Назва стужкі Z→A',
+ ),
+ 'id_asc' => 'Апошнія атрыманыя — у канцы',
+ 'id_desc' => 'Апошнія атрыманыя — спачатку',
+ 'length_asc' => 'Даўжыня змесціва 1→9',
+ 'length_desc' => 'Даўжыня змесціва 9→1',
+ 'link_asc' => 'Спасылка A→Z',
+ 'link_desc' => 'Спасылка Z→A',
+ 'primary' => array(
+ '_' => 'Крытэрый сартавання',
+ 'help' => 'Сартаванне па даце атрымання рэкамендуецца ў большасці выпадкаў для ўзгодненасці і прадукцыйнасці',
+ ),
+ 'rand' => 'Выпадковы парадак',
+ 'secondary' => array(
+ '_' => 'Другасны крытэрый сартавання',
+ 'help' => 'Мае значэнне толькі тады, калі асноўным крытэрыем сартавання з\'яўляюцца катэгорыі або назвы стужак',
+ ),
+ 'title_asc' => 'Назва A→Z',
+ 'title_desc' => 'Назва Z→A',
+ 'user_modified_asc' => 'Зменены карыстальнікам 1→9',
+ 'user_modified_desc' => 'Зменены карыстальнікам 9→1',
+ ),
+ 'starred' => 'Паказваць абранае',
+ 'stats' => 'Статыстыка',
+ 'subscription' => 'Кіраванне падпіскамі',
+ 'unread' => 'Паказваць непрачытанае',
+ ),
+ 'share' => 'Абагуліць',
+ 'tag' => array(
+ 'related' => 'Тэгі артыкула',
+ ),
+ 'tos' => array(
+ 'title' => 'Умовы выкарыстання',
+ ),
+);
diff --git a/app/i18n/be/install.php b/app/i18n/be/install.php
new file mode 100644
index 000000000..5771a443a
--- /dev/null
+++ b/app/i18n/be/install.php
@@ -0,0 +1,173 @@
+ array(
+ 'finish' => 'Завяршыць усталяванне',
+ 'fix_errors_before' => 'Перад пераходам да наступнага кроку выпраўце ўсе памылкі.',
+ 'keep_install' => 'Захаваць папярэднюю канфігурацыю',
+ 'next_step' => 'Перайсці да наступнага кроку',
+ 'reinstall' => 'Пераўсталяваць FreshRSS',
+ ),
+ 'bdd' => array(
+ '_' => 'База даных',
+ 'conf' => array(
+ '_' => 'Канфігурацыя базы даных',
+ 'ko' => 'Праверце канфігурацыю базы даных.',
+ 'ok' => 'Канфігурацыя базы даных захавана.',
+ ),
+ 'host' => 'Хост',
+ 'password' => 'Пароль базы даных',
+ 'prefix' => 'Прэфікс табліц',
+ 'type' => 'Тып базы даных',
+ 'username' => 'Імя карыстальніка базы даных',
+ ),
+ 'check' => array(
+ '_' => 'Праверкі',
+ 'already_installed' => 'Выяўлена, што FreshRSS ужо ўсталяваны!',
+ 'cache' => array(
+ 'nok' => 'Праверце правы доступу да каталога %1$s для карыстальніка %2$s. HTTP-сервер павінен мець права на запіс.',
+ 'ok' => 'Правы доступу да каталога кэшу ў парадку.',
+ ),
+ 'ctype' => array(
+ 'nok' => 'Не ўдаецца знайсці неабходную бібліятэку для праверкі тыпаў сімвалаў (php-ctype).',
+ 'ok' => 'У вас ёсць неабходная бібліятэка для праверкі тыпаў сімвалаў (ctype).',
+ ),
+ 'curl' => array(
+ 'nok' => 'Не ўдаецца знайсці неабходную бібліятэку cURL (пакет php-curl).',
+ 'ok' => 'У вас ёсць неабходная бібліятэка cURL.',
+ ),
+ 'data' => array(
+ 'nok' => 'Праверце правы доступу да каталога %1$s для карыстальніка %2$s. HTTP-сервер павінен мець права на запіс.',
+ 'ok' => 'Правы доступу да каталога даных у парадку.',
+ ),
+ 'database-connection' => array(
+ 'nok' => 'Памылка злучэння з базай даных.',
+ 'ok' => 'Злучэнне з базай даных наладжана.',
+ ),
+ 'database-table' => array(
+ 'nok' => 'Табліца базы даных «%s» няпоўная.',
+ 'ok' => 'Табліца базы даных «%s» у парадку.',
+ ),
+ 'database-tables' => array(
+ 'nok' => 'Некаторыя табліцы базы даных адсутнічаюць.',
+ 'ok' => 'Усе табліцы базы даных існуюць.',
+ ),
+ 'database-title' => 'База даных',
+ 'docroot' => array(
+ 'nok' => 'Каранёвы каталог дакументаў вэб-сервера, здаецца, не паказвае на папку ./p/. Іншыя папкі, такія як ./data/, могуць быць агульнадаступнымі.',
+ 'ok' => 'Каранёвы каталог вэб-сервера правільна паказвае на папку ./p/.',
+ ),
+ 'dom' => array(
+ 'nok' => 'Немагчыма знайсці патрэбную бібліятэку для прагляду DOM.',
+ 'ok' => 'У вас ёсць патрэбная бібліятэка для прагляду DOM.',
+ ),
+ 'favicons' => array(
+ 'nok' => 'Праверце правы доступу да каталога %1$s для карыстальніка %2$s. HTTP-сервер павінен мець права на запіс.',
+ 'ok' => 'Правы доступу да каталога значкоў у парадку.',
+ ),
+ 'fileinfo' => array(
+ 'nok' => 'Немагчыма знайсці рэкамендаваную бібліятэку PHP fileinfo (пакет fileinfo).',
+ 'ok' => 'У вас ёсць рэкамендаваная бібліятэка PHP fileinfo (пакет fileinfo).',
+ ),
+ 'files' => 'Усталяванне файлаў',
+ 'gmp' => array(
+ 'nok' => 'Немагчыма знайсці патрэбнае пашырэнне GMP для 32-разраднага PHP (пакет php-gmp).',
+ 'ok' => 'У вас ёсць патрэбнае пашырэнне GMP для 32-разраднага PHP.',
+ ),
+ 'intl' => array(
+ 'nok' => 'Немагчыма знайсці рэкамендаваную бібліятэку php-intl для інтэрнацыяналізацыі.',
+ 'ok' => 'У вас ёсць рэкамендаваная бібліятэка php-intl для інтэрнацыяналізацыі.',
+ ),
+ 'json' => array(
+ 'nok' => 'Немагчыма знайсці патрэбную бібліятэку для разбору JSON.',
+ 'ok' => 'У вас ёсць патрэбная бібліятэка для разбору JSON.',
+ ),
+ 'mbstring' => array(
+ 'nok' => 'Немагчыма знайсці рэкамендаваную бібліятэку mbstring для Unicode.',
+ 'ok' => 'У вас ёсць рэкамендаваная бібліятэка mbstring для Unicode.',
+ ),
+ 'pcre' => array(
+ 'nok' => 'Немагчыма знайсці патрэбную бібліятэку для рэгулярных выразаў (php-pcre).',
+ 'ok' => 'У вас ёсць патрэбная бібліятэка для рэгулярных выразаў (PCRE).',
+ ),
+ 'pdo-mysql' => array(
+ 'nok' => 'Немагчыма знайсці патрэбны драйвер PDO для MySQL/MariaDB.',
+ ),
+ 'pdo-pgsql' => array(
+ 'nok' => 'Немагчыма знайсці патрэбны драйвер PDO для PostgreSQL.',
+ ),
+ 'pdo-sqlite' => array(
+ 'nok' => 'Немагчыма знайсці драйвер PDO для SQLite.',
+ 'ok' => 'У вас ёсць драйвер PDO для SQLite.',
+ ),
+ 'pdo' => array(
+ 'nok' => 'Немагчыма знайсці PDO або адзін з драйвераў, што падтрымліваюцца (pdo_sqlite, pdo_pgsql, pdo_mysql).',
+ 'ok' => 'У вас ёсць PDO і прынамсі адзін з драйвераў, што падтрымліваюцца (pdo_sqlite, pdo_pgsql, pdo_mysql).',
+ ),
+ 'php' => array(
+ '_' => 'Усталяванне PHP',
+ 'nok' => 'Версія PHP — %s, але для FreshRSS патрабуецца версія не ніжэйшая за %s.',
+ 'ok' => 'Версія PHP (%s) сумяшчальная з FreshRSS.',
+ ),
+ 'reload' => 'Праверыць яшчэ раз',
+ 'tmp' => array(
+ 'nok' => 'Праверце правы доступу да каталога %1$s для карыстальніка %2$s. HTTP-сервер павінен мець правы на запіс.',
+ 'ok' => 'Правы доступу да часовага каталога ў парадку.',
+ ),
+ 'tokens' => array(
+ 'nok' => 'Праверце правы доступу да каталога ./data/tokens. HTTP-сервер павінен мець права на запіс.',
+ 'ok' => 'Правы доступу да каталога токенаў у парадку.',
+ ),
+ 'unknown_process_username' => 'невядома',
+ 'users' => array(
+ 'nok' => 'Праверце правы доступу да каталога %1$s для карыстальніка %2$s. HTTP-сервер павінен мець правы на запіс.',
+ 'ok' => 'Правы доступу да каталога карыстальнікаў у парадку.',
+ ),
+ 'xml' => array(
+ 'nok' => 'Немагчыма знайсці патрэбную бібліятэку для разбору XML.',
+ 'ok' => 'У вас ёсць патрэбная бібліятэка для разбору XML.',
+ ),
+ 'zip' => array(
+ 'nok' => 'Немагчыма знайсці рэкамендаванае пашырэнне для ZIP (пакет php-zip).',
+ 'ok' => 'У вас ёсць рэкамендаванае пашырэнне для ZIP (пакет php-zip).',
+ ),
+ ),
+ 'conf' => array(
+ '_' => 'Агульныя параметры',
+ 'ok' => 'Агульныя параметры захаваны.',
+ ),
+ 'congratulations' => 'Віншуем!',
+ 'default_user' => array(
+ '_' => 'Імя прадвызначанага карыстальніка',
+ 'max_char' => '1-39 сімвалаў: літары, лічбы і . _ @ -',
+ ),
+ 'fix_errors_before' => 'Выпраўце памылкі перад пераходам да наступнага кроку.',
+ 'javascript_is_better' => 'FreshRSS прыемней выкарыстоўваць з уключаным JavaScript',
+ 'js' => array(
+ 'confirm_reinstall' => 'Пераўсталяванне FreshRSS прывядзе да страты папярэдняй канфігурацыі. Вы ўпэўнены, што хочаце працягнуць?',
+ ),
+ 'language' => array(
+ '_' => 'Мова',
+ 'choose' => 'Выберыце мову для FreshRSS',
+ 'defined' => 'Мова вызначана.',
+ ),
+ 'missing_applied_migrations' => 'Нешта пайшло не так; стварыце ўручную пусты файл %s.',
+ 'ok' => 'Працэс усталявання паспяхова завершаны.',
+ 'session' => array(
+ 'nok' => 'Здаецца, вэб-сервер няправільна сканфігураваны для выкарыстання кукі, неабходных для сеансаў PHP!',
+ ),
+ 'step' => 'крок %d',
+ 'steps' => 'Крокі',
+ 'this_is_the_end' => 'Гатова',
+ 'title' => 'Усталяванне · FreshRSS',
+);
diff --git a/app/i18n/be/plurals.php b/app/i18n/be/plurals.php
new file mode 100644
index 000000000..114d2a300
--- /dev/null
+++ b/app/i18n/be/plurals.php
@@ -0,0 +1,10 @@
+=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
+// This file is generated by cli/compile.plurals.php.
+// Edit the formula comment and run `make fix-all`.
+
+return array(
+ 'nplurals' => 3,
+ 'plural' => static fn (int $n): int => ($n % 10 === 1 && $n % 100 !== 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2)),
+);
diff --git a/app/i18n/be/sub.php b/app/i18n/be/sub.php
new file mode 100644
index 000000000..221ba7097
--- /dev/null
+++ b/app/i18n/be/sub.php
@@ -0,0 +1,316 @@
+ array(
+ 'documentation' => 'Скапіруйце наступны URL-адрас, каб выкарыстоўваць яго ў знешнім інструменце.',
+ 'title' => 'API', // IGNORE
+ ),
+ 'bookmarklet' => array(
+ 'documentation' => 'Перацягніце гэту кнопку на панэль закладак або націсніце на яе правай кнопкай мышы і выберыце «Дадаць спасылку ў закладкі». Затым націсніце кнопку «Падпісацца» на любой старонцы, на якую хочаце падпісацца.',
+ 'label' => 'Падпісацца',
+ 'title' => 'Закладка-скрыпт',
+ ),
+ 'category' => array(
+ '_' => 'Катэгорыя',
+ 'add' => 'Дадаць катэгорыю',
+ 'archiving' => 'Архіваванне',
+ 'dynamic_opml' => array(
+ '_' => 'Дынамічны OPML',
+ 'help' => 'Укажыце URL-адрас файла OPML, каб дынамічна напоўніць гэту катэгорыю стужкамі',
+ ),
+ 'empty' => 'Пустая катэгорыя',
+ 'error' => 'У гэтай дынамічнай катэгорыі OPML узнікла праблема. Праверце, ці па-ранейшаму даступны URL-адрас OPML і ці не перавышана максімальная колькасць стужак на карыстальніка.',
+ 'expand' => 'Разгарнуць катэгорыю',
+ 'information' => 'Інфармацыя',
+ 'open' => 'Адкрыць катэгорыю',
+ 'opml_url' => 'URL-адрас OPML',
+ 'position' => 'Пазіцыя паказу',
+ 'position_help' => 'Для кіравання парадкам сартавання катэгорый',
+ 'title' => 'Назва',
+ ),
+ 'feed' => array(
+ 'accept_cookies' => 'Прымаць кукі',
+ 'accept_cookies_help' => 'Дазваляе серверу стужкі ўсталёўваць кукі (захоўваюцца ў памяці толькі на час запыту)',
+ 'add' => 'Дадаць стужку',
+ 'advanced' => 'Дадатковыя',
+ 'archiving' => 'Архіваванне',
+ 'auth' => array(
+ 'configuration' => 'Уваход',
+ 'help' => 'Забяспечвае доступ да абароненых праз HTTP RSS-стужак',
+ 'http' => 'Аўтэнтыфікацыя HTTP',
+ 'password' => 'Пароль HTTP',
+ 'username' => 'Імя карыстальніка HTTP',
+ ),
+ 'change_favicon' => 'Змяніць…',
+ 'clear_cache' => 'Заўсёды ачышчаць кэш',
+ 'content_action' => array(
+ '_' => 'Дзеянне са змесцівам пры атрыманні змесціва артыкула',
+ 'append' => 'Дадаць пасля наяўнага змесціва',
+ 'prepend' => 'Дадаць перад наяўным змесцівам',
+ 'replace' => 'Замяніць наяўнае змесціва',
+ ),
+ 'content_retrieval' => 'Атрыманне змесціва',
+ 'css_cookie' => 'Кукі пры атрыманні змесціва артыкула',
+ 'css_cookie_help' => 'Прыклад: foo=bar; gdpr_consent=true; cookie=value',
+ 'css_help' => 'Атрымлівае скарочаныя RSS-стужкі (увага, патрабуе больш часу!)',
+ 'css_path' => 'CSS-селектар артыкула на арыгінальным вэб-сайце',
+ 'css_path_filter' => array(
+ '_' => 'CSS-селектар элементаў для выдалення',
+ 'help' => 'CSS-селектар можа быць спісам, напрыклад: footer, aside, p[data-sanitized-class~="menu"]',
+ ),
+ 'description' => 'Апісанне',
+ 'empty' => 'Гэта стужка пустая. Праверце, ці па-ранейшаму падтрымліваецца яна.',
+ 'error' => 'У гэтай стужцы ўзнікла праблема. Калі сітуацыя не зменіцца, праверце, ці па-ранейшаму даступная яна.',
+ 'export-as-opml' => array(
+ 'download' => 'Спампаваць',
+ 'help' => 'Файл XML (падмноства даных. Глядзіце дакументацыю)',
+ 'label' => 'Экспартаваць у OPML',
+ ),
+ 'ext_favicon' => 'Задаваць аўтаматычна',
+ 'favicon_changed_by_ext' => 'Значок зададзены пашырэннем %s.',
+ 'filteractions' => array(
+ '_' => 'Дзеянні фільтрацыі',
+ 'help' => 'Запісвайце па адным пошукавым фільтры ў радку. Аператары: глядзіце дакументацыю.',
+ 'view_filter' => 'Перадпрагляд фільтраў на наяўных артыкулах (новае акно)',
+ ),
+ 'global_hint' => 'Выкарыстоўвайце глабальны выгляд, каб убачыць, колькі артыкулаў у кожнай стужцы адпавядае стану або пошукаваму выразу',
+ 'http_headers' => 'Загалоўкі HTTP',
+ 'http_headers_help' => 'Загалоўкі аддзяляюцца сімвалам новага радка, а назва і значэнне загалоўка — двукроп\'ем (напрыклад: Accept: application/atom+xml
Authorization: Bearer some-token).',
+ 'icon' => 'Значок',
+ 'information' => 'Інфармацыя',
+ 'keep_adding_feed' => 'Дадаць потым яшчэ стужкі',
+ 'keep_min' => 'Мінімальная колькасць артыкулаў для захавання',
+ 'kind' => array(
+ '_' => 'Тып крыніцы стужкі',
+ 'html_json' => array(
+ '_' => 'HTML + XPath + кропкавая натацыя JSON (JSON у HTML)',
+ 'xpath' => array(
+ '_' => 'XPath для JSON у HTML',
+ 'help' => 'Прыклад: normalize-space(//script[@type="application/json"]) (адзін JSON)//script[@type="application/ld+json"] (па адным аб\'екце JSON на артыкул)',
+ ),
+ ),
+ 'html_xpath' => array(
+ '_' => 'HTML + XPath (вэб-скрэйпінг)',
+ 'feed_title' => array(
+ '_' => 'Назва стужкі',
+ 'help' => 'Прыклад: //title або статычны радок: "My custom feed"',
+ ),
+ 'help' => 'XPath 1.0 — стандартная мова запытаў для дасведчаных карыстальнікаў, якую FreshRSS падтрымлівае для вэб-скрэйпінгу.',
+ 'item' => array(
+ '_' => 'Пошук элементаў навін//div[@class="news-item"]',
+ ),
+ 'item_author' => array(
+ '_' => 'Аўтар элемента',
+ 'help' => 'Можа быць і статычным радком. Прыклад: "Anonymous"',
+ ),
+ 'item_categories' => 'Тэгі элемента',
+ 'item_content' => array(
+ '_' => 'Змесціва элемента',
+ 'help' => 'Прыклад атрымання элемента цалкам: .',
+ ),
+ 'item_thumbnail' => array(
+ '_' => 'Мініяцюра элемента',
+ 'help' => 'Прыклад: descendant::img/@src',
+ ),
+ 'item_timeFormat' => array(
+ '_' => 'Карыстальніцкі фармат даты і часу',
+ 'help' => 'Неабавязкова. Фармат, што падтрымліваецца DateTime::createFromFormat(), напрыклад d-m-Y H:i:s',
+ ),
+ 'item_timestamp' => array(
+ '_' => 'Дата элемента',
+ 'help' => 'Вынік будзе разабраны з дапамогай strtotime()',
+ ),
+ 'item_title' => array(
+ '_' => 'Назва элемента',
+ 'help' => 'Ужывайце, у прыватнасці, вось XPath descendant::, напрыклад descendant::h2',
+ ),
+ 'item_uid' => array(
+ '_' => 'Унікальны ідэнтыфікатар элемента',
+ 'help' => 'Неабавязкова. Прыклад: descendant::div/@data-uri',
+ ),
+ 'item_uri' => array(
+ '_' => 'Спасылка элемента (URL)',
+ 'help' => 'Прыклад: descendant::a/@href',
+ ),
+ 'relative' => 'XPath (адносна элемента) для:',
+ 'xpath' => 'XPath для:',
+ ),
+ 'json_dotnotation' => array(
+ '_' => 'JSON з кропкавай натацыяй',
+ 'feed_title' => array(
+ '_' => 'Назва стужкі',
+ 'help' => 'Прыклад: meta.title або статычны радок: "My custom feed"',
+ ),
+ 'help' => 'У кропкавай натацыі JSON кропкі выкарыстоўваюцца паміж аб\'ектамі, а квадратныя дужкі — для масіваў (напрыклад, data.items[0].title)',
+ 'item' => array(
+ '_' => 'Пошук элементаў навін$ або newsItems',
+ ),
+ 'item_author' => 'Аўтар элемента',
+ 'item_categories' => 'Тэгі элемента',
+ 'item_content' => array(
+ '_' => 'Змесціва элемента',
+ 'help' => 'Ключ, пад якім знаходзіцца змесціва, напрыклад content',
+ ),
+ 'item_thumbnail' => array(
+ '_' => 'Мініяцюра элемента',
+ 'help' => 'Прыклад: image',
+ ),
+ 'item_timeFormat' => array(
+ '_' => 'Карыстальніцкі фармат даты і часу',
+ 'help' => 'Неабавязкова. Фармат, што падтрымліваецца DateTime::createFromFormat(), напрыклад d-m-Y H:i:s',
+ ),
+ 'item_timestamp' => array(
+ '_' => 'Дата элемента',
+ 'help' => 'Вынік будзе разабраны з дапамогай strtotime()',
+ ),
+ 'item_title' => 'Назва элемента',
+ 'item_uid' => 'Унікальны ідэнтыфікатар элемента',
+ 'item_uri' => array(
+ '_' => 'Спасылка элемента (URL)',
+ 'help' => 'Прыклад: permalink',
+ ),
+ 'json' => 'кропкавая натацыя для:',
+ 'relative' => 'шлях у кропкавай натацыі (адносна элемента) для:',
+ ),
+ 'jsonfeed' => 'JSON Feed', // IGNORE
+ 'rss' => 'RSS / Atom (прадвызначаны)',
+ 'xml_xpath' => 'XML + XPath', // IGNORE
+ ),
+ 'last-entry-publication-date' => 'Апошні апублікаваны артыкул .',
+ 'last-entry-received-date' => 'Апошні атрыманы артыкул .',
+ 'last-error-date' => 'Апошняе памылковае абнаўленне .',
+ 'last-update' => 'Апошняе паспяховае абнаўленне .',
+ 'maintenance' => array(
+ 'clear_cache' => 'Ачысціць кэш',
+ 'clear_cache_help' => 'Ачышчае кэш гэтай стужкі.',
+ 'reload_articles' => 'Перазагрузіць артыкулы',
+ 'reload_articles_help' => 'Перазагружае зададзеную колькасць артыкулаў і атрымлівае поўнае змесціва, калі вызначаны селектар.',
+ 'title' => 'Абслугоўванне',
+ ),
+ 'max_http_redir' => 'Максімальная колькасць перанакіраванняў HTTP',
+ 'max_http_redir_help' => 'Задайце 0 або пакіньце поле пустым, каб адключыць перанакіраванні; -1 — для безліміту перанакіраванняў',
+ 'method' => array(
+ '_' => 'Метад HTTP',
+ ),
+ 'method_help' => 'Цела запыту POST аўтаматычна падтрымлівае application/x-www-form-urlencoded і application/json',
+ 'method_postparams' => 'Цела запыту POST',
+ 'moved_category_deleted' => 'Пасля выдалення катэгорыі яе стужкі аўтаматычна класіфікуюцца ў %s.',
+ 'mute' => array(
+ '_' => 'заглушыць',
+ 'state_is_muted' => 'Гэта стужка заглушана',
+ ),
+ 'no_selected' => 'Стужка не выбрана.',
+ 'number_entries' => '%d артыкулаў',
+ 'open_feed' => 'Адкрыць стужку %s',
+ 'path_entries_conditions' => 'Умовы атрымання змесціва',
+ 'priority' => array(
+ '_' => 'Бачнасць',
+ 'category' => 'Паказваць у катэгорыі',
+ 'feed' => 'Паказваць у стужцы',
+ 'hidden' => 'Не паказваць',
+ 'important' => 'Паказваць у важных стужках',
+ 'main_stream' => 'Паказваць у галоўнай стужцы',
+ ),
+ 'proxy' => 'Проксі для атрымання гэтай стужкі',
+ 'proxy_help' => 'Выберыце пратакол (напрыклад: SOCKS5) і ўвядзіце адрас проксі (напрыклад: 127.0.0.1:1080 або username:password@127.0.0.1:1080)',
+ 'reset_favicon' => 'Скінуць да прадвызначанага',
+ 'selector_preview' => array(
+ 'show_raw' => 'Паказаць зыходны код',
+ 'show_rendered' => 'Паказваць змесціва',
+ ),
+ 'show' => array(
+ 'all' => 'Усе стужкі',
+ 'error' => 'Паказаць толькі стужкі з памылкамі',
+ ),
+ 'showing' => array(
+ 'error' => 'Паказваюцца толькі стужкі з памылкамі',
+ ),
+ 'ssl_verify' => 'Правяраць бяспеку SSL',
+ 'stats' => 'Статыстыка',
+ 'think_to_add' => 'Дадайце некалькі стужак.',
+ 'timeout' => 'Час чакання ў секундах',
+ 'title' => 'Назва',
+ 'title_add' => 'Дадаць RSS-стужку',
+ 'ttl' => 'Мінімальны інтэрвал аўтаматычнага абнаўлення',
+ 'unicityCriteria' => array(
+ '_' => 'Крытэрый унікальнасці артыкулаў',
+ 'forced' => 'Прымусова',
+ 'help' => 'Актуальна для праблемных стужак.