From 8eb298456f1b15232b98824974511c3515d1e22a Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Thu, 27 Aug 2026 14:25:24 +0200 Subject: [PATCH 1/7] Localisation updates from https://translatewiki.net. --- translations/fr.json | 2 +- translations/nl.json | 15 +++++++++++++-- translations/pl.json | 14 ++++++++------ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/translations/fr.json b/translations/fr.json index 0be5955..1d9e86a 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -406,7 +406,7 @@ "overview": "Aperçu", "region:": "Région :", "roles": "Rôles", - "ruleId": "chaîne des Règlements :", + "ruleId": "Chaîne du règlement :", "selectnoti": "Sélectionner le type de notification", "sendrandomwelcome?": "Envoyer un message aléatoire lorsque quelqu'un rejoint cette guilde :", "serverName": "Nom de la guilde :", diff --git a/translations/nl.json b/translations/nl.json index d0248c3..17a6c6e 100644 --- a/translations/nl.json +++ b/translations/nl.json @@ -171,8 +171,10 @@ "voice": "Spraak", "deleteThread": "Onderwerp verwijderen", "hideThreads": "Verbergen na inactiviteit", - "forum": "Forum" + "forum": "Forum", + "addChannel": "Kanaal toevoegen" }, + "charLeft": "U hebt nog $1 {{PLURAL:$1|teken|tekens}} over", "threads": { "leave": "Discussie verlaten", "join": "Aan discussie meedoen", @@ -939,7 +941,14 @@ "name": "Naam:", "tags": "Gekoppelde emoji:", "title": "Stickers", - "upload": "Stickers uploaden" + "upload": "Stickers uploaden", + "found": { + "not": "Deze sticker is niet van uw gilde. Word lid van het gilde dat hem aanbiedt om deze sticker te kunnen gebruiken", + "other": "Deze sticker komt van een van uw andere gilden.", + "private": "Het gilde waar deze sticker bij hoort is niet te vinden", + "this": "Deze sticker is afkomstig van dit gilde." + }, + "from": "Deze sticker is van" }, "submit": "Opslaan", "switchAccounts": "Van account wisselen ⇌", @@ -1037,9 +1046,11 @@ "manage": "Beveiligingssleutels beheren" }, "webhook": "WEBHOOK", + "copyCode": "Code kopiëren", "webhooks": { "EnterWebhookName": "Voer de webhook-naam in", "areYouSureDelete": "Weet u zeker dat u $1 wilt verwijderen?", + "areYouSureDeleteHead": "$1 verwijderen?", "avatar": "Avatar", "base": "Webhooks", "channel": "Webhook-uitvoer naar kanaal:", diff --git a/translations/pl.json b/translations/pl.json index cc66b77..be33103 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Atvalerie", + "PanWor", "Woytecr" ] }, @@ -137,6 +138,7 @@ "unmute": "Wyłącz wyciszenie kanału", "voice": "Głosowy" }, + "charLeft": "{{PLURAL:$1|Zostało|Zostały|Zostało}} Ci jeszcze $1 {{PLURAL:$1|znak|znaki|znaków}}", "channelLink": "# $1", "clientDesc": "Wersja klienta: $1\n\n[Dołącz do oficjalnej gildii Fermi]($2/invite/USgYJo?instance=https%3A%2F%2Fspacebar.chat)\n\n[Pomóż w tłumaczeniu Fermi](https://translatewiki.net/wiki/Translating:JankClient#sortable:3=desc)\n\n[Pomóż w tworzeniu Fermi](https://github.com/MathMan05/Fermi)\n\n[Pomóż w utrzymaniu serwera, na którym opiera się Fermi](https://github.com/spacebarchat/server)\n\n[Czytaj blog](https://blog.fermi.chat/)\n\nObliczone uprawnienia: $3", "commands": { @@ -325,7 +327,7 @@ }, "htmlPages": { "addBot": "Dodaj do gildii", - "alreadyHave": "Posiadasz już konto?", + "alreadyHave": "Masz już konto?", "box3description": "Zawsze doceniamy pomoc, niezależnie czy jest ona w postaci zgłoszeń błędów, kodu, czy nawet wskazania literówek.", "box3title": "Współtwórz Fermi", "compatableInstances": "Instancje kompatybilne z Spacebarem:", @@ -375,7 +377,7 @@ }, "invite": { "accept": "Akceptuj", - "alreadyJoined": "Już dołączyłeś", + "alreadyJoined": "Już dołączono", "channel:": "Kanał:", "createInvite": "Stwórz zaproszenie", "createdAt": "Utworzono w $1", @@ -387,7 +389,7 @@ "invitedBy": "Zostałeś zaproszony przez $1", "joinUsing": "Dołącz za pomocą zaproszenia", "loginOrCreateAccount": "Zaloguj się lub stwórz nowe konto ⇌", - "longInvitedBy": "$1 zaprosił cię do dołączenia do $2", + "longInvitedBy": "$1 zaprosił(a) Cię do dołączenia do $2", "maxUses": "Maksymalna liczba użyć: $1", "never": "Nigdy", "noAccount": "Utwórz konto, aby przyjąć zaproszenie", @@ -452,7 +454,7 @@ "disableConnection": "To połączenie zostało wyłączone po stronie serwera", "editingBot": "Edytowanie bota $1", "install": "Instaluj", - "installDesc": "Zainstalowanie Fermi pozwoli ci na otworzenie go w jego własnym oknie oraz będzie on działać jak osobna aplikacja! Możesz też po prostu korzystać z Fermi w przeglądarce, tak jak dotychczas, i będzie działać tak samo.", + "installDesc": "Zainstalowanie Fermi pozwoli Ci na otworzenie go w jego własnym oknie oraz będzie on działać jak osobna aplikacja! Możesz też po prostu korzystać z Fermi w przeglądarce, tak jak dotychczas, i będzie działać tak samo.", "installJank": "Zainstaluj Fermi", "language": "Język:", "manageBot": "Zarządzaj botem", @@ -510,7 +512,7 @@ "error": { "cancel": "Anuluj", "cont": "Kontynuuj mimo to", - "desc": "Fermi nie mógł cię wylogować\n Czy mimo wszystko chcesz usunąć konto?", + "desc": "Fermi nie udało się Cię wylogować.\n Czy mimo wszystko chcesz usunąć konto?", "title": "Wystąpił błąd podczas próby wylogowania" }, "logout": "Wyloguj się" @@ -753,7 +755,7 @@ "back": "Wstecz", "new": "Nowy", "next": "Dalej", - "nofind": "Wygląda na to, że nie ma wiadomości, które pasują do twojego wyszukiwania. Spróbuj je poszerzyć, aby znaleźć to, czego szukasz", + "nofind": "Wygląda na to, że nie ma wiadomości, które pasują do Twojego wyszukiwania. Spróbuj je poszerzyć, aby znaleźć to, czego szukasz.", "old": "Stary", "page": "Strona $1", "search": "Szukaj" From 85a0da877cb0650c9db05f05fb57d379ff227c42 Mon Sep 17 00:00:00 2001 From: Mathium05 Date: Thu, 27 Aug 2026 19:21:30 -0500 Subject: [PATCH 2/7] fix gif picker event --- src/webpage/localuser.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/webpage/localuser.ts b/src/webpage/localuser.ts index 4284f8c..80681c0 100644 --- a/src/webpage/localuser.ts +++ b/src/webpage/localuser.ts @@ -4450,7 +4450,9 @@ class Localuser { gifs.append(div); - div.onclick = () => { + div.onmousedown = (e) => { + e.preventDefault(); + e.stopImmediatePropagation(); if (this.focusChannel) { this.focusChannel.sendMessage(gif.src, { embeds: [], From 82a03bcdf7c583fa1f896bb03d5c367cf82c8717 Mon Sep 17 00:00:00 2001 From: Ivy Collective Date: Sat, 29 Aug 2026 18:49:36 -0400 Subject: [PATCH 3/7] Add preference to force 12-hour or 24-hour clock --- src/webpage/localuser.ts | 14 ++++++++++++++ src/webpage/message.ts | 12 ++++++++++-- src/webpage/utils/storage/userPreferences.ts | 11 +++++++++++ translations/en.json | 6 ++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/webpage/localuser.ts b/src/webpage/localuser.ts index 80681c0..f11192a 100644 --- a/src/webpage/localuser.ts +++ b/src/webpage/localuser.ts @@ -40,6 +40,7 @@ import {AccountSwitcher} from "./utils/switcher.js"; import {Favorites} from "./favorites.js"; import { AnimateTristateValues, + ClockFormatOverrideValues, getPreferences, setPreferences, ThemeOption, @@ -3190,6 +3191,19 @@ class Localuser { }, ); } + { + tas.addSelect( + I18n.localuser["clockFormatOverride"](), + async (_) => { + prefs.clockFormatOverride = ClockFormatOverrideValues[_]; + setPreferences(prefs); + }, + ClockFormatOverrideValues.map((_) => I18n.localuser.clockFormatOverrideValues[_]()), + { + defaultIndex: ClockFormatOverrideValues.indexOf(prefs.clockFormatOverride), + }, + ); + } } { const blog = settings.addButton(I18n.blog.blog(), {contained: true}); diff --git a/src/webpage/message.ts b/src/webpage/message.ts index 04ac46b..3faf1e1 100644 --- a/src/webpage/message.ts +++ b/src/webpage/message.ts @@ -27,7 +27,7 @@ import {Components} from "./interactions/compontents.js"; import {ImagesDisplay} from "./disimg"; import {ReportMenu} from "./reporting/report.js"; import {getDeveloperSettings} from "./utils/storage/devSettings.js"; -import {getPreferences} from "./utils/storage/userPreferences.js"; +import {ClockFormatOverride, getPreferences} from "./utils/storage/userPreferences.js"; import {TypeBox} from "./typeBox.js"; class Message extends SnowFlake { static contextmenu = new Contextmenu("message menu"); @@ -1807,8 +1807,16 @@ function formatTime(date: Date) { const conf = getPreferences(); updateTimes(); const datestring = date.toLocaleDateString(); + + let hour12: boolean | undefined = undefined; + if (conf.clockFormatOverride == ClockFormatOverride.Show12Hour) { + hour12 = true; + } else if (conf.clockFormatOverride == ClockFormatOverride.Show24Hour) { + hour12 = false; + } + const formatTime = (date: Date) => - date.toLocaleTimeString([], {hour: "2-digit", minute: "2-digit"}); + date.toLocaleTimeString([], {hour: "2-digit", minute: "2-digit", hour12: hour12}); if (datestring === now) { return conf.showToday ? I18n.todayAt(formatTime(date)) : formatTime(date); diff --git a/src/webpage/utils/storage/userPreferences.ts b/src/webpage/utils/storage/userPreferences.ts index ec29b02..b80a6a4 100644 --- a/src/webpage/utils/storage/userPreferences.ts +++ b/src/webpage/utils/storage/userPreferences.ts @@ -26,6 +26,16 @@ export const ThemeOptionValues = [ ThemeOption.NightSky, ThemeOption.NightSkyAccent, ]; +export const enum ClockFormatOverride { + Default = "default", + Show12Hour = "12hour", + Show24Hour = "24hour", +} +export const ClockFormatOverrideValues = [ + ClockFormatOverride.Default, + ClockFormatOverride.Show12Hour, + ClockFormatOverride.Show24Hour, +]; export class UserPreferences { showBlogUpdates?: boolean; @@ -43,6 +53,7 @@ export class UserPreferences { checkMemberList = false; gifProvidor?: string; showToday = true; + clockFormatOverride: ClockFormatOverride = ClockFormatOverride.Default; constructor(init?: Partial) { Object.assign(this, init); diff --git a/translations/en.json b/translations/en.json index 8773c4d..812624f 100644 --- a/translations/en.json +++ b/translations/en.json @@ -527,6 +527,12 @@ "2faDisable": "Disable 2FA", "2faEnable": "Enable 2FA", "CheckUpdate": "Check for updates", + "clockFormatOverride": "Clock format override:", + "clockFormatOverrideValues": { + "default": "Automatic", + "12hour": "Use AM/PM", + "24hour": "Use 24-hour" + }, "PasswordsNoMatch": "Passwords don't match", "TOSURL": "Terms of Service link:", "VoiceWarning": "Are you sure you want to enable this? It's very experimental and is likely to cause issues. (this feature is for devs, please don't enable if you don't know what you're doing)", From e65d748528e580f68fa9a77f908daf8cb87a6b02 Mon Sep 17 00:00:00 2001 From: Ivy Collective Date: Sat, 29 Aug 2026 19:02:24 -0400 Subject: [PATCH 4/7] fix minor issue --- src/webpage/localuser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webpage/localuser.ts b/src/webpage/localuser.ts index f11192a..92d5bd7 100644 --- a/src/webpage/localuser.ts +++ b/src/webpage/localuser.ts @@ -3193,7 +3193,7 @@ class Localuser { } { tas.addSelect( - I18n.localuser["clockFormatOverride"](), + I18n.localuser.clockFormatOverride(), async (_) => { prefs.clockFormatOverride = ClockFormatOverrideValues[_]; setPreferences(prefs); From e99be2b14549c7e7c80804eb719a80f82190d808 Mon Sep 17 00:00:00 2001 From: Ivy Collective Date: Sat, 29 Aug 2026 19:07:27 -0400 Subject: [PATCH 5/7] change casing of enum values --- src/webpage/message.ts | 4 ++-- src/webpage/utils/storage/userPreferences.ts | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/webpage/message.ts b/src/webpage/message.ts index 3faf1e1..ff420f3 100644 --- a/src/webpage/message.ts +++ b/src/webpage/message.ts @@ -1809,9 +1809,9 @@ function formatTime(date: Date) { const datestring = date.toLocaleDateString(); let hour12: boolean | undefined = undefined; - if (conf.clockFormatOverride == ClockFormatOverride.Show12Hour) { + if (conf.clockFormatOverride == ClockFormatOverride.show12Hour) { hour12 = true; - } else if (conf.clockFormatOverride == ClockFormatOverride.Show24Hour) { + } else if (conf.clockFormatOverride == ClockFormatOverride.show24Hour) { hour12 = false; } diff --git a/src/webpage/utils/storage/userPreferences.ts b/src/webpage/utils/storage/userPreferences.ts index b80a6a4..a922ddd 100644 --- a/src/webpage/utils/storage/userPreferences.ts +++ b/src/webpage/utils/storage/userPreferences.ts @@ -27,14 +27,14 @@ export const ThemeOptionValues = [ ThemeOption.NightSkyAccent, ]; export const enum ClockFormatOverride { - Default = "default", - Show12Hour = "12hour", - Show24Hour = "24hour", + default = "default", + show12Hour = "12hour", + show24Hour = "24hour", } export const ClockFormatOverrideValues = [ - ClockFormatOverride.Default, - ClockFormatOverride.Show12Hour, - ClockFormatOverride.Show24Hour, + ClockFormatOverride.default, + ClockFormatOverride.show12Hour, + ClockFormatOverride.show24Hour, ]; export class UserPreferences { @@ -53,7 +53,7 @@ export class UserPreferences { checkMemberList = false; gifProvidor?: string; showToday = true; - clockFormatOverride: ClockFormatOverride = ClockFormatOverride.Default; + clockFormatOverride: ClockFormatOverride = ClockFormatOverride.default; constructor(init?: Partial) { Object.assign(this, init); From a07b8889e9f2eb6a5dc6dfe56b8a38b75f224dcb Mon Sep 17 00:00:00 2001 From: Ivy Collective Date: Sat, 29 Aug 2026 19:20:08 -0400 Subject: [PATCH 6/7] change "default" to "automatic" to not use a reserved keyword ....which somehow still ran --- src/webpage/utils/storage/userPreferences.ts | 6 +++--- translations/en.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/webpage/utils/storage/userPreferences.ts b/src/webpage/utils/storage/userPreferences.ts index a922ddd..64ec0ff 100644 --- a/src/webpage/utils/storage/userPreferences.ts +++ b/src/webpage/utils/storage/userPreferences.ts @@ -27,12 +27,12 @@ export const ThemeOptionValues = [ ThemeOption.NightSkyAccent, ]; export const enum ClockFormatOverride { - default = "default", + automatic = "automatic", show12Hour = "12hour", show24Hour = "24hour", } export const ClockFormatOverrideValues = [ - ClockFormatOverride.default, + ClockFormatOverride.automatic, ClockFormatOverride.show12Hour, ClockFormatOverride.show24Hour, ]; @@ -53,7 +53,7 @@ export class UserPreferences { checkMemberList = false; gifProvidor?: string; showToday = true; - clockFormatOverride: ClockFormatOverride = ClockFormatOverride.default; + clockFormatOverride: ClockFormatOverride = ClockFormatOverride.automatic; constructor(init?: Partial) { Object.assign(this, init); diff --git a/translations/en.json b/translations/en.json index 812624f..e5ca409 100644 --- a/translations/en.json +++ b/translations/en.json @@ -529,7 +529,7 @@ "CheckUpdate": "Check for updates", "clockFormatOverride": "Clock format override:", "clockFormatOverrideValues": { - "default": "Automatic", + "automatic": "Automatic", "12hour": "Use AM/PM", "24hour": "Use 24-hour" }, From 8e97b93b4e0eda2f91ef0497feab6a55ebf73f7c Mon Sep 17 00:00:00 2001 From: "translatewiki.net" Date: Mon, 31 Aug 2026 14:27:27 +0200 Subject: [PATCH 7/7] Localisation updates from https://translatewiki.net. --- translations/pl.json | 2 +- translations/ru.json | 161 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 134 insertions(+), 29 deletions(-) diff --git a/translations/pl.json b/translations/pl.json index be33103..e235b51 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -12,7 +12,7 @@ "app": "Do aplikacji", "blog": "Blog Fermi", "home": "Strona główna", - "listtitle": "Może miałeś zamiar wybrać się do jednego z tych miejsc", + "listtitle": "Może chodziło Ci o to, żeby wybrać się do jednego z tych miejsc", "login": "Zaloguj się", "report": "Jeżeli znalazłeś tę stronę w kliencie, zgłoś ją:", "reset": "Strona resetowania hasła", diff --git a/translations/ru.json b/translations/ru.json index 38d8dbf..b219bf6 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -17,6 +17,7 @@ "Pacha Tchernof", "StealthTheAB", "StealthTheAngryBird", + "Viwooh", "Vl1", "Yupik" ] @@ -35,17 +36,33 @@ "whatelse": "Что ещё, по-вашему, должно произойти?", "whereever": "Куда бы это ни вело" }, + "filesize": { + "B": "Б", + "KB": "КБ", + "MB": "МБ", + "GB": "ГБ" + }, "onboarding": { + "name": "Адаптация", + "disable": "Отключить адаптацию", + "addChannel": "Добавить канал", + "channel": "Канал:", + "desc": "Описание:", + "deleteChannel": "Удалить канал из адаптации", + "enable": "Включить адаптацию", "title": "Добро пожаловать в $1!" }, + "copyMedia": "Копировать URL медиа", "DMs": { "add": "Добавить участника в этот диалог", "close": "Закрыть ЛС", + "copyURL": "Копировать URL ЛС", "copyId": "Копировать ID ЛС", "markRead": "Пометить как прочитанное", "name": "Личные сообщения" }, "ok": "Ок", + "dismiss": "Закрыть", "UrlGen": "Генератор приглашений для ботов", "Voice": { "userVol": "Громкость пользователя:", @@ -54,10 +71,15 @@ "conectionFailed": "Ошибка соединения", "done": "Подключен", "left": "Левый голосовой чат", + "makingOffer": "Отправка предложения", "noSDP": "Отсутствует SDP", "notconnected": "Не подключен", "sendingStreams": "Отправка аудиопотоков", - "startingRTC": "Запуск RTC-соединения" + "startingRTC": "Запуск RTC-соединения", + "waitingMainWS": "Ожидание основного подключения WS", + "waitingURL": "Ожидание URL голоса", + "wsAuth": "ожидание авторизации WS", + "wsOpen": "Ожидание открытия WS" } }, "accessibility": { @@ -67,8 +89,12 @@ "never": "Никогда" }, "name": "Доступность", + "visuals": "Визуалы", + "animations": "Анимации", "playGif": "Воспроизвести GIF-анимации:", "playIcon": "Проигрывать анимированные иконки:", + "playEmoji": "Проигрывать анимированные эмодзи:", + "playSticker": "Воспроизводить анимированные стикеры:", "roleColors": "Отключить цвета ролей:", "gradientColors": "Отключить градиенты:", "decorations": "Включить украшения аватара:" @@ -97,10 +123,10 @@ "guild_booster_lvl7": "Буст сервера", "guild_booster_lvl8": "Буст сервера", "guild_booster_lvl9": "Длительное время бустит сервер", - "hypesquad": "Вещь, защищённая авторским правом", - "hypesquad_house_1": "Bravery", - "hypesquad_house_2": "Brilliance", - "hypesquad_house_3": "Balance", + "hypesquad": "Vibesquad [PLACEHOLDER]", + "hypesquad_house_1": "Boldness", + "hypesquad_house_2": "Excellence", + "hypesquad_house_3": "Equilibrium", "legacy_username": "имеет старое имя пользователя", "partner": "Партнер узла", "premium": "Premium", @@ -110,9 +136,12 @@ }, "bio": "Обо мне:", "blankMessage": "Пустое сообщение", + "sentAttachment": "Отправлено вложение", + "sentPoll": "Отправлен опрос", + "sentSticker": "Отправлен стикер", "blog": { "blog": "Блог", - "blogUpdates": "Обновления в блоге:", + "blogUpdates": "Показывать новые записи в блоге при запуске приложения:", "desc": "Читайте или подписывайтесь на блог, чтобы быть в курсе новостей о Fermi!", "fermi": "Блог Fermi", "gotoPost": "Перейти к публикации", @@ -124,6 +153,7 @@ "cancel": "Отмена", "channel": { "SlowmodeCool": "Задержка медленного режима: $1", + "copyURL": "Копировать URL канала", "allowIcons": "Разрешить пользовательские значки каналов", "announcement": "Объявление", "copyId": "Копировать ID канала", @@ -149,11 +179,13 @@ "slowmode": "Медленный режим:", "text": "Текст", "topic:": "Тема канала:", + "typebox": "Написать в # $1", "unmute": "Включить оповещения канала", "voice": "Голос", "deleteThread": "Удалить ветку", "hideThreads": "Скрывать при неактивности", - "forum": "Форум" + "forum": "Форум", + "addChannel": "Добавить канал" }, "threads": { "leave": "Покинуть ветку", @@ -216,7 +248,7 @@ "gatewayComp": "Отключить сжатие Gateway:", "reportSystem": "Включить экспериментальную систему жалоб:", "logGateway": "Записывать полученные события шлюза (уровень журнала — info):", - "name": "Developer Settings", + "name": "Настройки разработчика", "traces": "Показать трассировки:" }, "deviceManage": { @@ -235,6 +267,7 @@ "region": "Регион: $1", "title": "Управление сеансами" }, + "addGuild": "Добавить гильдию", "discovery": "Путешествие", "dms": "Личные сообщения", "edit": "Изменить", @@ -278,7 +311,7 @@ "pending:": "Ожидающиеся заявки в друзья:", "removeFriend": "Удалить из друзей" }, - "goThere": "Перейти", + "goThere": "Да, погнали", "goThereTrust": "Да, и доверять домену в дальнейшем", "goingToURL": "Эта ссылка ведёт на $1. Вы уверены, что хотите перейти?", "group": { @@ -305,6 +338,7 @@ "banner:": "Баннер:", "bans": "Баны", "boostMessage?": "Отправляйте сообщение, когда кто-то бустит ваш сервер!", + "idSel": "Идентификатор:", "community": "Сообщество", "confirmDelete": "Вы уверены, что хотите удалить $1?", "confirmLeave": "Вы уверены, что хотите выйти?", @@ -313,7 +347,7 @@ "createFromTemplate": "Создать сервер из шаблона", "createNewTemplate": "Создать новый шаблон", "creating": "Создание сервера", - "default": "по умолчанию ($1)", + "default": "По умолчанию ($1)", "defaultNoti": "Установите настройки уведомлений по умолчанию для вашего сервера!", "delete": "Удалить сервер", "description:": "Описание:", @@ -337,10 +371,11 @@ "noLeave": "Не сейчас", "none": "Никакие", "notifications": "Уведомления", - "onlyMentions": "только упоминания", + "onlyMentions": "Только @упоминания", "overview": "Обзор", "region:": "Регион:", "roles": "Роли", + "ruleId": "Канал с правилами:", "selectnoti": "Выбрать тип уведомлений:", "sendrandomwelcome?": "Отправлять случайное сообщение, когда кто-то присоединяется к этому серверу:", "serverName": "Название сервера:", @@ -362,6 +397,9 @@ "yesDelete": "Да, я уверен", "yesLeave": "Да, я уверен" }, + "donate": { + "donate": "Пожертвовать" + }, "hideBlockedMessages": "Вы заблокировали этого пользователя, нажмите чтобы скрыть эти сообщения.", "home": { "icon": "значок узла $1", @@ -372,7 +410,7 @@ "addBot": "Добавить на сервер", "alreadyHave": "Уже есть учётная запись?", "box3description": "Мы всегда ценим любую помощь, будь то в виде отчетов об ошибках, кода или даже просто указания на некоторые опечатки.", - "box3title": "Внести вклад в Jank Client", + "box3title": "Внести вклад в Fermi", "compatableInstances": "Узлы, совместимые с Harmony:", "createAccount": "Создать учётную запись", "dobField": "Дата рождения:", @@ -380,15 +418,17 @@ "idpermissions": "Это позволит боту:", "instanceField": "Узел:", "loaddesc": "Это не должно занять много времени", - "loadingText": "Jank Client загружается", + "loadingText": "Fermi загружается", "loginButton": "Войти", "noAccount": "Нет учётной записи?", "pw2Field": "Введите пароль ещё раз:", "pwField": "Пароль:", "switchaccounts": "Сменить аккаунт", + "trans": "Переводить", "transDesc": "Вы можете помочь перевести Fermi на свой язык!", + "transTitle": "Переводите Fermi", "userField": "Имя пользователя:", - "welcomeJank": "Добро пожаловать в Jank Client" + "welcomeJank": "Добро пожаловать в Fermi" }, "incorrectURLS": "## Вероятно, узел отправил некорректные ссылки.\n### Если вы являетесь владельцем узла, пожалуйста, обратитесь [здесь](https://docs.spacebar.chat/setup/server/) к разделу *Подключение с удаленных машин*, чтобы исправить проблему.\n Хотите ли вы, чтобы Fermi автоматически попытался исправить эту ошибку, чтобы вы могли подключиться к узлу?", "instInfo": "Информация об узле", @@ -407,6 +447,7 @@ "users": "Зарегистрированные пользователи: $1" }, "interactions": { + "ephemeralDismiss": "Закрыть сообщение", "notImpl": "В Fermi пока не реализован компонент типа $1", "onlyYou": "Только вы видите это сообщение" }, @@ -447,6 +488,7 @@ "leaveGuild": "Покинуть сервер", "leaving": "Вы покидаете Harmony", "localuser": { + "advanced": "Дополнительные настройки", "2faCode:": "Код:", "2faCodeGive": "Вот ваш шестизначный код: $1. Он имеет ограничение в 30 секунд", "2faDisable": "Выключить двухфакторную аутентификацию", @@ -455,11 +497,11 @@ "PasswordsNoMatch": "Пароли не совпадают", "TOSURL": "URL Условий Использования:", "VoiceWarning": "Вы точно хотите включить это? Оно находится на стадии доработки. (Эта функция создана для разработчиков, пожалуйста, не включайте, если вы не знаете, что делаете)", - "accentColor": "Акцентный цвет:", + "accentColor": "Основной цвет темы:", "accountSettings": "Настройки аккаунта", "addBot": "Добавить бота", "addStatus": "Пользовательский статус", - "advancedBot": "Расширенные настройки бота", + "advancedBot": "Дополнительные настройки бота", "appName": "Название приложения:", "areYouSureDelete": "Вы уверены, что хотите удалить свою учётную запись? Если да, введите фразу $1", "badCode": "Неверный код", @@ -479,7 +521,7 @@ "createApp": "Создать приложение", "customSound": "Пользовательский звук", "customStatusWarn": "В настоящее время Harmony не поддерживает отображение пользовательских статусов, поэтому, хотя система и примет статус, она ничего не будет с ним делать", - "deleteAccount": "Удаление учётной записи", + "deleteAccount": "Удаление аккаунта", "deleteAccountButton": "Удалить учётную запись", "description": "Описание:", "devPortal": "Портал разработчика", @@ -488,7 +530,7 @@ "install": "Установить", "installDesc": "После установки Fermi вы сможете открыть его в отдельном окне, и он будет работать как самостоятельное приложение! Вы также можете просто продолжать использовать Fermi в веб-браузере, как и раньше, и он будет работать так же.", "installJank": "Установить Fermi", - "language": "Язык:", + "language": "Язык", "manageBot": "Управлять ботом", "manageInstance": "Управление узлом", "mustTypePhrase": "Чтобы удалить свою учётную запись, вам необходимо ввести фразу", @@ -501,6 +543,7 @@ "oldPassword:": "Старый пароль:", "password:": "Пароль", "privacyPolcyURL": "URL Политики безопасности:", + "secret": "Секрет", "publicAvaliable": "Сделать бота публично приглашаемым?", "requireCode": "Требовать код для приглашения бота?", "resetToken": "Сбросить токен", @@ -518,7 +561,8 @@ "trusted": "Доверенные домены", "trustedDesc": "При переходе по ссылкам, ведущим на указанные домены, у вас ***не*** будет запрашиваться разрешение на открытие, как в случае с другими ссылками. Предоставляйте это разрешение только доменам, которым вы доверяете, например, 'https://fermi.chat'.", "updateSettings": "Настройки обновлений", - "userSettings": "Настройки пользователя" + "userSettings": "Настройки пользователя", + "general": "Общие" }, "login": { "allGood": "Всё в порядке", @@ -544,11 +588,14 @@ "manageInstance": { "AreYouSureStop": "Вы уверены, что хотите остановить этот узел?", "copy": "Скопировать", + "create": "Создать", "format": "Формат:", "length": "Длина:", "stop": "Остановить узел" }, "media": { + "artist": "Художник: $1", + "composer": "Композитор: $1", "download": "Загрузить медиа", "length": "Продолжительность: $1 минут(ы) $2 секунд(ы)", "loading": "Загружается", @@ -564,15 +611,27 @@ "message": { "attached": "Отправлено вложение", "delete": "Удалить сообщение", + "endPoll": "Завершить опрос", "deleted": "Удалённое сообщение", "edit": "Редактировать сообщение", "edited": "(отредактировано)", - "reactionAdd": "Добавить реакцию" + "reactionAdd": "Добавить реакцию", + "createThread": "Создать ветку", + "reactions": "Смотреть реакции", + "reactionsTitle": "Реакции", + "pollRes": "Опрос $2, начатый $1, завершён." }, + "report": { + "back": "Назад", + "next": "Далее", + "cancel": "Отмена", + "submit": "Отправить" + }, + "messageLink": "Сообщение в # $1", "nevermind": "Не сейчас", "no": "Нет", "noEmojiFont": "Использовать системные эмодзи", - "noMessages": "Похоже, здесь нет сообщений. Будьте первым, кто что-нибудь напишет!", + "noMessages": "Здесь пока нет сообщений. Станьте первыми, кто напишет!", "noPins": "В этом канале нет закрепленных сообщений... пока что.", "notiClump": "Вы получили $1 уведомлений от $2", "notiVolume": "Громкость уведомлений:", @@ -687,30 +746,42 @@ }, "pinMessage": "Закрепить сообщение", "profile": { + "bio": "Обо мне:", "joined": "Аккаунт создан: $1", "joinedMember": "В числе участников $1 с $2", - "mut": "Общие сервера", + "mut": "Общие гильдии ($1)", "mutFriends": "Общие друзья", "permInfo": "Разрешения", - "userInfo": "Информация об участнике" + "userInfo": "Информация о пользователе", + "notes": "Заметки о пользователе" }, "profileColor": "Цвет профиля", "pronouns": "Местоимения:", "readableName": "Русский", + "recentEmoji": "Последние эмодзи", "register": { "DOBError": "Дата рождения: $1", "agreeTOS": "Я соглашаюсь с [Условиями Использования]($1):", "emailError": "Эл. почта: $1", "noTOS": "На этом узле нет условий использования, но всё равно примите их:", "passwordError:": "Пароль: $1", + "register": "Зарегистрироваться", "usernameError": "Имя пользователя: $1" }, + "remove": "Удалить", "renderJoinAvatars": "Отображать аватары для новых участников", "reply": "Ответить", "replyingTo": "В ответ $1", - "retrying": "Повтор...", + "retrying": "Повторная попытка...", "role": { "color": "Цвет", + "colors": { + "one": "Одноцветная", + "two": "Двухцветная", + "three": "Трёхцветная", + "secondColor": "Второй цвет:", + "thirdColor": "Третий цвет:" + }, "confirmDelete": "Вы уверены в том, что хотите удалить роль $1?", "copyId": "Скопировать ID роли", "delete": "Удалить роль", @@ -718,16 +789,38 @@ "hoisted": "Отображать раздельно:", "mentionable": "Разрешить всем упоминать эту роль:", "name": "Название роли:", - "remove": "Убрать роль", + "remove": "Отобрать роль", "roles": "Роли" }, + "poll": { + "durCount": { + "1": "1 час", + "4": "4 часа", + "8": "8 часов", + "24": "24 часа", + "72": "3 дня", + "168": "7 дней", + "336": "14 дней" + }, + "mult": "Разрешить несколько вариантов ответа:", + "expires": "Закончится: $1", + "tie": "Ничья!", + "winningAnswer": "Победивший ответ: $1%", + "view": "Просмотреть опрос" + }, "search": { "back": "Назад", "new": "Актуальные", "next": "Далее", "old": "Старые", "page": "Страница $1", - "search": "Поиск" + "search": "Поиск", + "settings": "Настройки поиска", + "before": "До:", + "after": "После:", + "authors": "Автор(ы):", + "mentions": "Упоминания:", + "channels": "Канал(ы):" }, "settings": { "clear": "Очистить", @@ -752,8 +845,11 @@ "upload": "Загрузить стикеры" }, "submit": "Подтвердить", - "switchAccounts": "Переключение между аккаунтами ⇌", + "switchAccounts": "Сменить аккаунт ⇌", "todayAt": "Сегодня, в $1", + "trace": { + "totalTime": "$2: $1 мс" + }, "typing": "$2 {{PLURAL:$1|печатают|печатает}}", "unableToConnect": "Не удалось подключиться к серверу Harmony. Пожалуйста, попробуйте выйти и ещё раз войти.", "unableToPin": "Не удалось закрепить сообщение", @@ -761,6 +857,10 @@ "regi": "Узлы Spacebar больше не поддерживаются Fermi официально. Хотя, скорее всего, они всё ещё будет работать, рекомендуется использовать Harmony. Продолжить?", "in": "Узлы Spaceber больше не поддерживаются Fermi официально. Хотя, скорее всего, они всё ещё будут работать, рекомендуется использовать Harmony. Продолжить?" }, + "connections": { + "sure": "Вы уверены?" + }, + "unpinMessage": "Открепить сообщение", "uploadBanner": "Загрузить баннер:", "uploadFilesText": "Загрузите свои файлы сюда!", "uploadPfp": "Загрузить аватар:", @@ -780,7 +880,9 @@ "message": "Написать пользователю", "offline": "Не в сети", "online": "В сети", - "removeRole": "Убрать роли", + "remove": "Удалить пользователя", + "removeRole": "Отобрать роли", + "sendMessage": "Написать @$1", "unblock": "Разблокировать участника" }, "vc": { @@ -793,7 +895,10 @@ "addKey": "Добавить ключ", "manage": "Управлять ключами безопасности" }, + "webhook": "ВЕБХУК", "webhooks": { + "avatar": "Аватар", + "base": "Вебхуки", "createdAt": "Создан в $1", "createdBy": "Создан:", "type": "Тип: $1"