Merge main: keep all four Phase 2 languages in the list

This commit is contained in:
2026-08-31 13:13:47 -07:00
6 changed files with 2671 additions and 0 deletions
+3
View File
@@ -43,6 +43,9 @@ export const UI_LANGUAGES: readonly UiLanguage[] = [
{ tag: "nl", name: "Nederlands", beta: true }, { tag: "nl", name: "Nederlands", beta: true },
{ tag: "pt-BR", name: "Português (Brasil)", beta: true }, { tag: "pt-BR", name: "Português (Brasil)", beta: true },
{ tag: "ja", name: "日本語", beta: true }, { tag: "ja", name: "日本語", beta: true },
{ tag: "ru", name: "Русский", beta: true },
{ tag: "uk", name: "Українська", beta: true },
{ tag: "zh-Hans", name: "简体中文", beta: true },
]; ];
/** Where to report a bad translation. Beta languages depend on it. */ /** Where to report a bad translation. Beta languages depend on it. */
@@ -0,0 +1,37 @@
import { describe, expect, it, afterEach } from "vitest";
import { plural, setCatalog } from "@/lib/i18n";
import { catalog as ru } from "@/locales/ru";
/**
* Russian is the first shipped catalogue that needs `few` and `many`, so this
* checks the real entries rather than a fixture. English would have rendered
* "5 письмо" for all of these, which is the kind of wrong that makes a
* translation read as machine output however good the vocabulary is.
*/
const FORMS = { one: "{n} message", other: "{n} messages" };
afterEach(() => setCatalog("en", { strings: {}, plurals: {} }));
describe("Russian plurals", () => {
it("picks one, few and many by the language's own rule", () => {
setCatalog("ru", ru);
expect(plural(1, FORMS)).toBe("1 письмо"); // one
expect(plural(2, FORMS)).toBe("2 письма"); // few
expect(plural(3, FORMS)).toBe("3 письма");
expect(plural(5, FORMS)).toBe("5 писем"); // many
expect(plural(11, FORMS)).toBe("11 писем"); // 11-14 are many, not few
expect(plural(21, FORMS)).toBe("21 письмо"); // 21 is one again
expect(plural(22, FORMS)).toBe("22 письма");
expect(plural(25, FORMS)).toBe("25 писем");
expect(plural(0, FORMS)).toBe("0 писем");
});
it("carries every form for each counted string it ships", () => {
// A catalogue missing `few` silently falls back to `other`, which is
// grammatical often enough to go unnoticed and wrong the rest of the time.
for (const [key, forms] of Object.entries(ru.plurals)) {
for (const cat of ["one", "few", "many", "other"] as const) {
expect(forms[cat], `${key} is missing "${cat}"`).toBeTruthy();
}
}
});
});
@@ -0,0 +1,36 @@
import { describe, expect, it, afterEach } from "vitest";
import { plural, setCatalog } from "@/lib/i18n";
import { catalog as uk } from "@/locales/uk";
/**
* Ukrainian needs `few` and `many` where English has one plural, and the rule
* is not "n === 1": 11 is `many` despite ending in 1, and 21 is `one` again.
* English's two-form assumption would render "5 лист", which is the kind of
* wrong that makes a translation read as machine output whatever the
* vocabulary is.
*/
const FORMS = { one: "{n} message", other: "{n} messages" };
afterEach(() => setCatalog("en", { strings: {}, plurals: {} }));
describe("Ukrainian plurals", () => {
it("picks one, few and many by the language's own rule", () => {
setCatalog("uk", uk);
expect(plural(1, FORMS)).toBe("1 лист");
expect(plural(2, FORMS)).toBe("2 листи");
expect(plural(4, FORMS)).toBe("4 листи");
expect(plural(5, FORMS)).toBe("5 листів");
expect(plural(11, FORMS)).toBe("11 листів"); // many, despite ending in 1
expect(plural(21, FORMS)).toBe("21 лист"); // one again
expect(plural(0, FORMS)).toBe("0 листів");
});
it("carries every form for each counted string it ships", () => {
// A missing `few` falls back to `other` silently, and is grammatical often
// enough to go unnoticed while being wrong the rest of the time.
for (const [key, forms] of Object.entries(uk.plurals)) {
for (const cat of ["one", "few", "many", "other"] as const) {
expect(forms[cat], `${key} is missing "${cat}"`).toBeTruthy();
}
}
});
});
+867
View File
@@ -0,0 +1,867 @@
import type { Catalog } from "@/lib/i18n";
/**
* Russian — generated by AI, and not reviewed by a native speaker.
*
* First of Phase 2, and the first catalogue where the plural machinery earns
* its keep: Russian needs three forms where English has two, and choosing
* between them is not a question about the number 1. `plural()` was built
* around `Intl.PluralRules` for exactly this, and the entries below are the
* first real use of `few` and `many` rather than a test fixture.
*
* Marked Beta, with the report link doing the job a native speaker would. A
* missing string renders its English source, so deleting a bad entry is a
* valid fix.
*
* ── Decisions this file is consistent about ──────────────────────────────
*
* Register: **вы**, lowercase, which is the neutral polite address every
* Russian interface uses. Capitalised «Вы» is correspondence style — it reads
* as a letter addressed to one person, not as software — and using it here
* would be a small, constant wrongness on every screen. This follows the
* formal-address decision the other languages took, and in Russian it costs
* nothing: it is simply what software says.
*
* Most of the interface avoids the question anyway, because Russian UI
* convention is the infinitive for actions — «Удалить», «Ответить» — rather
* than an imperative addressed at the reader.
*
* Terminology, fixed once so it cannot drift:
*
* Inbox Входящие Archive (verb) архивировать
* Drafts Черновики Delete удалить
* Sent Отправленные Move to переместить в
* Deleted Items Корзина Reply ответить
* Junk / Spam Спам Reply all ответить всем
* Folder Папка Forward переслать
* Label Ярлык Star отметить
* Conversation Цепочка Read / unread прочитано / непрочитано
* Message Письмо Settings Настройки
* Attachment Вложение Signature Подпись
* Contact Контакт Identity Профиль отправителя
*
* «Письмо» rather than «сообщение» for a mail message: it is what Russian mail
* clients call one, and «сообщение» reads as a chat message. «Ярлык» for
* label, which is Gmail's word in Russian — the same rule as French, Spanish
* and Portuguese, and a fifth answer to it.
*
* Product names are never translated: ihasmail, Stalwart, JMAP, Sieve, vCard.
*/
export const catalog: Catalog = {
strings: {
// ── Actions ────────────────────────────────────────────────────────
"Archive": "Архивировать",
"Archive (e)": "Архивировать (e)",
"Delete": "Удалить",
"Delete (#)": "Удалить (#)",
"Reply": "Ответить",
"Reply (r)": "Ответить (r)",
"Reply all": "Ответить всем",
"Forward": "Переслать",
"Move to…": "Переместить в…",
"Move to (v)": "Переместить в (v)",
"Move to folder": "Переместить в папку",
"Move here": "Переместить сюда",
"Mark as read": "Отметить как прочитанное",
"Mark as read (Shift+I)": "Отметить как прочитанное (Shift+I)",
"Mark as unread": "Отметить как непрочитанное",
"Mark as unread (Shift+U)": "Отметить как непрочитанное (Shift+U)",
"Mark all as read": "Отметить всё как прочитанное",
"Mark all as read, incl. subfolders": "Отметить всё как прочитанное, включая вложенные папки",
"Star": "Отметить",
"Labels": "Ярлыки",
"Labels (l)": "Ярлыки (l)",
"Label as": "Присвоить ярлык",
"Label…": "Ярлык…",
"Compose": "Написать",
"Compose message": "Написать письмо",
"Send": "Отправить",
"Send at": "Отправить в",
"Cancel send": "Отменить отправку",
"Schedule send": "Отложить отправку",
"Save": "Сохранить",
"Save & activate": "Сохранить и включить",
"Save & close (Esc)": "Сохранить и закрыть (Esc)",
"Save as template": "Сохранить как шаблон",
"Save draft now": "Сохранить черновик сейчас",
"Cancel": "Отмена",
"Close": "Закрыть",
"Done": "Готово",
"Continue": "Продолжить",
"Edit": "Изменить",
"Edit…": "Изменить…",
"Rename": "Переименовать",
"Remove": "Убрать",
"Restore": "Восстановить",
"Retry": "Повторить",
"Reload": "Перезагрузить",
"Refresh": "Обновить",
"Copy": "Копировать",
"Copy email address": "Копировать адрес",
"Download": "Скачать",
"Download all": "Скачать всё",
"Download (.eml)": "Скачать (.eml)",
"Download latest as .eml": "Скачать последнее в .eml",
"Upload": "Загрузить",
"Upload files…": "Загрузить файлы…",
"Print": "Печать",
"Print conversation": "Напечатать цепочку",
"Undo (Ctrl+Z)": "Отменить (Ctrl+Z)",
"Redo": "Вернуть",
"Dismiss": "Закрыть",
"Discard changes": "Отменить изменения",
"Discard draft": "Удалить черновик",
"Duplicate": "Дублировать",
"Validate": "Проверить",
"Revoke": "Отозвать",
"Turn off": "Отключить",
"Clear": "Очистить",
"Clear selection": "Снять выделение",
"Clear custom colour": "Убрать свой цвет",
"Select": "Выбрать",
"Select all": "Выбрать всё",
"Unsubscribe": "Отписаться",
"Share…": "Поделиться…",
"Stop sharing": "Закрыть доступ",
"Open": "Открыть",
"Open in new tab": "Открыть в новой вкладке",
"Open in calendar": "Открыть в календаре",
"Back": "Назад",
"Back (u)": "Назад (u)",
"Back to list": "Назад к списку",
"Back to my files": "Назад к моим файлам",
"Go back to the list": "Вернуться к списку",
"Next": "Далее",
"Previous": "Назад",
"More": "Ещё",
"More actions": "Другие действия",
"More options": "Другие параметры",
"Move up": "Вверх",
"Move down": "Вниз",
"Drag to reorder": "Перетащите, чтобы изменить порядок",
"Right-click for options": "Правая кнопка мыши — параметры",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "Почта",
"Message": "Письмо",
"Messages": "Письма",
"Message body": "Текст письма",
"Message headers": "Заголовки письма",
"Message size": "Размер письма",
"Message-ID": "Message-ID",
"Original message": "Исходное письмо",
"Delete this message": "Удалить это письмо",
"New message to this address": "Новое письмо на этот адрес",
"Conversation view": "Показывать цепочками",
"Draft": "Черновик",
"Unread": "Непрочитанные",
"Unread only": "Только непрочитанные",
"All mail": "Вся почта",
"Sender": "Отправитель",
"Sender domain": "Домен отправителя",
"Recipients": "Получатели",
"From": "От",
"To": "Кому",
"Cc": "Копия",
"Bcc": "Скрытая копия",
"Subject": "Тема",
"Subject (optional)": "Тема (необязательно)",
"Body": "Текст",
"Body text": "Обычный текст",
"Attach files": "Прикрепить файлы",
"Attach from Files": "Прикрепить из Файлов",
"Remove attachment": "Убрать вложение",
"Has attachment": "Есть вложение",
"Has the words": "Содержит слова",
"Header name": "Имя заголовка",
"Show headers": "Показать заголовки",
"Show original": "Показать исходник",
"Show details": "Показать подробности",
"Show images": "Показать изображения",
"Remote images": "Внешние изображения",
"Remote images are blocked to protect your privacy.": "Внешние изображения заблокированы, чтобы защитить вашу приватность.",
"Always from {email}": "Всегда от {email}",
"This looks like a mailing list.": "Похоже, это рассылка.",
"This folder is empty": "Папка пуста",
"This folder is empty.": "Папка пуста.",
"Delete all spam now": "Удалить весь спам сейчас",
"Deleting spam is permanent — it does not go to Deleted Items first.": "Удаление спама необратимо — он не попадает сначала в корзину.",
"Keep in Inbox": "Оставить во входящих",
"Newer (k)": "Новее (k)",
"Older (j)": "Старее (j)",
"Open the next (older) conversation": "Открыть следующую цепочку (более старую)",
"Open the previous (newer) conversation": "Открыть предыдущую цепочку (более новую)",
"Loading conversation…": "Загрузка цепочки…",
"Important": "Важное",
"Unverified": "Не проверено",
"Priority": "Приоритет",
"High": "Высокий",
"Normal": "Обычный",
"Low": "Низкий",
"to {recipients}": "кому: {recipients}",
"From: {sender}": "От: {sender}",
"Waiting on the server — goes out {when}.": "Ожидает на сервере — будет отправлено {when}.",
"Scheduled — click to clear the schedule": "Отложено — нажмите, чтобы отменить",
"Nothing scheduled": "Ничего не отложено",
"The message waits on the server, so it goes out whether or not ihasmail is open.": "Письмо ждёт на сервере и будет отправлено независимо от того, открыт ihasmail или нет.",
"This server holds a message for up to {span}.": "Этот сервер удерживает письмо до {span}.",
"Date and time to send": "Дата и время отправки",
"Undo send window": "Время на отмену отправки",
"Read receipt requested": "Запрошено уведомление о прочтении",
"The sender asked for a read receipt.": "Отправитель запросил уведомление о прочтении.",
"Request read receipt": "Запросить уведомление о прочтении",
"Always request read receipts": "Всегда запрашивать уведомление о прочтении",
"Receipt": "Уведомление",
"Never send one": "Никогда не отправлять",
"Not this time": "Не в этот раз",
"It would go to {address}, which is not where the message came from.": "Оно ушло бы на {address}, а письмо пришло не оттуда.",
"Use “Show original” for the complete raw message.": "Нажмите «Показать исходник», чтобы увидеть письмо целиком.",
// ── Folders, calendar, contacts, files ─────────────────────────────
"Folder": "Папка",
"Folders": "Папки",
"Folder options": "Параметры папки",
"New folder": "Новая папка",
"New subfolder": "Новая вложенная папка",
"Delete folder": "Удалить папку",
"No matching folders": "Подходящих папок нет",
"No subfolders here.": "Здесь нет вложенных папок.",
"Type a folder name…": "Введите имя папки…",
" New folder…": "+ Новая папка…",
"Create, rename and hide folders.": "Создание, переименование и скрытие папок.",
"Show unsubscribed (hidden) folders": "Показывать неподписанные (скрытые) папки",
"Storage: {used} of {total} used.": "Хранилище: занято {used} из {total}.",
"{used} of {total}": "{used} из {total}",
"Calendar": "Календарь",
"My calendars": "Мои календари",
"New calendar": "Новый календарь",
"Calendar options": "Параметры календаря",
"Calendar & contacts": "Календарь и контакты",
"Calendar is not available": "Календарь недоступен",
"Event": "Событие",
"New event": "Новое событие",
"(new event)": "(новое событие)",
"New all-day event": "Новое событие на весь день",
"Add title": "Добавить название",
"Add location": "Добавить место",
"Add to calendar": "Добавить в календарь",
"Add to my calendar": "Добавить в мой календарь",
"Remove from calendar": "Убрать из календаря",
"Remove from my calendar": "Убрать из моего календаря",
"All day": "Весь день",
"all-day": "весь день",
"Starts": "Начало",
"Starts (optional)": "Начало (необязательно)",
"Ends": "Окончание",
"Ends (optional)": "Окончание (необязательно)",
"Day": "День",
"Week": "Неделя",
"Month": "Месяц",
"Agenda": "Список",
"Today": "Сегодня",
"Go to day": "Перейти к дню",
"Go to week": "Перейти к неделе",
"Previous month": "Предыдущий месяц",
"Next month": "Следующий месяц",
"Does not repeat": "Не повторяется",
"Daily": "Ежедневно",
"Every weekday": "По будням",
"Yearly": "Ежегодно",
"Custom…": "Свой вариант…",
"Weekly on {weekday}": "Еженедельно, {weekday}",
"Monthly on day {day}": "Ежемесячно, {day}-го числа",
"Repeat every": "Повторять каждые",
"Repeat until": "Повторять до",
"after N times": "после N раз",
"on date": "до даты",
"never": "никогда",
"day(s)": "дн.",
"week(s)": "нед.",
"month(s)": "мес.",
"year(s)": "г.",
"Reminders": "Напоминания",
"Add reminder": "Добавить напоминание",
"Remove reminder": "Убрать напоминание",
"Default reminder": "Напоминание по умолчанию",
"At time of event": "В момент события",
"5 minutes before": "За 5 минут",
"10 minutes before": "За 10 минут",
"15 minutes before": "За 15 минут",
"30 minutes before": "За 30 минут",
"1 hour before": "За 1 час",
"1 day before": "За 1 день",
"15 minutes": "15 минут",
"30 minutes": "30 минут",
"45 minutes": "45 минут",
"1 hour": "1 час",
"1.5 hours": "1,5 часа",
"2 hours": "2 часа",
"Default event length": "Длительность события по умолчанию",
"Default view": "Вид по умолчанию",
"Guests": "Участники",
"Add guests by name or email": "Добавить участников по имени или адресу",
"Send invitation emails to guests": "Отправлять участникам приглашения по почте",
"Going?": "Придёте?",
"Yes": "Да",
"No": "Нет",
"Maybe": "Возможно",
"Confirmed": "Подтверждено",
"Tentative": "Под вопросом",
"Cancelled": "Отменено",
"organizer": "организатор",
"Organizer: {name}": "Организатор: {name}",
"Free": "Свободен",
"Busy": "Занят",
"Free/busy": "Занятость",
"Show as": "Показывать как",
"Availability on {date}": "Занятость на {date}",
"Count all events as busy": "Считать все события занятостью",
"Only events I'm attending": "Только события, где я участвую",
"Don't include in availability": "Не учитывать в занятости",
"Meeting link": "Ссылка на встречу",
"No events in the next 60 days.": "В ближайшие 60 дней событий нет.",
"Working hours": "Рабочее время",
"Working hours start": "Начало рабочего времени",
"Working hours end": "Конец рабочего времени",
"Colour categories": "Цветовые категории",
"Category": "Категория",
"No category": "Без категории",
"New category": "Новая категория",
"Delete category": "Удалить категорию",
"Manage categories…": "Управление категориями…",
"Use category color": "Цвет категории",
"Use calendar color": "Цвет календаря",
"Use the default colour": "Цвет по умолчанию",
"+{n} more": "+{n}",
"Contacts": "Контакты",
"Contacts are not available": "Контакты недоступны",
"New contact": "Новый контакт",
"Edit contact": "Изменить контакт",
"Select a contact": "Выберите контакт",
"All contacts": "Все контакты",
"Search contacts": "Поиск по контактам",
"Search contacts to add…": "Найдите контакты, чтобы добавить…",
"Loading contacts…": "Загрузка контактов…",
"Add to contacts": "Добавить в контакты",
"Add to my contacts": "Добавить в мои контакты",
"Remove from my contacts": "Убрать из моих контактов",
"Address book": "Адресная книга",
"Address books": "Адресные книги",
"All address books": "Все адресные книги",
"My address books": "Мои адресные книги",
"New address book": "Новая адресная книга",
"No address books yet.": "Адресных книг пока нет.",
"Choose from address books": "Выбрать из адресных книг",
"Import vCard": "Импорт vCard",
"Export all": "Экспортировать всё",
"Export book": "Экспортировать книгу",
"Email group": "Написать группе",
"Email everyone": "Написать всем",
"Members": "Участники",
"Members ({count})": "Участники ({count})",
"Group": "Группа",
"· group": "· группа",
"Person": "Человек",
"First name": "Имя",
"Last name": "Фамилия",
"Middle name": "Отчество",
"More name fields": "Другие поля имени",
"Nickname": "Псевдоним",
"Prefix": "Обращение",
"Suffix": "Суффикс",
"Dr.": "Д-р",
"Jr.": "Мл.",
"Display name": "Отображаемое имя",
"Job title": "Должность",
"Organization": "Организация",
"Company": "Компания",
"Birthday": "День рождения",
"Notes": "Заметки",
"Website": "Сайт",
"Phone": "Телефон",
"Add phone": "Добавить телефон",
"Add email": "Добавить адрес",
"Add address": "Добавить почтовый адрес",
"Address": "Адрес",
"Street": "Улица",
"City": "Город",
"State / Region": "Область / регион",
"Postal code": "Индекс",
"Country": "Страна",
"Change photo": "Сменить фото",
"Remove photo": "Убрать фото",
"Updated {date}": "Обновлено {date}",
"Modified": "Изменено",
"Search names and addresses": "Поиск по именам и адресам",
"Add a person or group…": "Добавить человека или группу…",
"Choose recipients": "Выбрать получателей",
"Available to add": "Можно добавить",
"vCard": "vCard",
"vCard attachment": "Вложение vCard",
"Files": "Файлы",
"My files": "Мои файлы",
"File storage is not available": "Хранилище файлов недоступно",
"Drag files here or use Upload.": "Перетащите файлы сюда или нажмите «Загрузить».",
"Shared": "Общий доступ",
"Shared with me": "Доступные мне",
"Nothing is shared with you.": "Вам ничего не открыли.",
"Not shared with anyone yet.": "Доступ пока никому не открыт.",
"Check for new shares": "Проверить новые",
"Shared files are copied to your account when attached.": "При вложении общие файлы копируются в вашу учётную запись.",
"Viewer": "Чтение",
"Editor": "Изменение",
"Size": "Размер",
"Add files": "Добавить файлы",
"Minimize": "Свернуть",
// ── Settings ───────────────────────────────────────────────────────
"Settings": "Настройки",
"All settings": "Все настройки",
"Sections": "Разделы",
"General": "Общие",
"Appearance": "Внешний вид",
"Make ihasmail yours.": "Настройте ihasmail под себя.",
"Reading": "Чтение",
"Reading pane": "Область чтения",
"Reading, sending and list behaviour. Settings are stored in this browser.": "Поведение при чтении, отправке и в списке. Настройки хранятся в этом браузере.",
"Right of the list": "Справа от списка",
"Below the list": "Под списком",
"Hidden (open full width)": "Скрыта (открывать во всю ширину)",
"Off (open messages full width)": "Выключена (письма во всю ширину)",
"Off": "Выключено",
"Composing": "Написание",
"Default format": "Формат по умолчанию",
"Rich text (HTML)": "Форматированный текст (HTML)",
"Plain text": "Обычный текст",
"Quote original message in replies": "Цитировать исходное письмо в ответах",
"Place signature above quoted text": "Ставить подпись над цитатой",
"Attachment reminder": "Напоминание о вложении",
"Warn when the message mentions an attachment but none is attached.": "Предупреждать, если письмо упоминает вложение, но его нет.",
"Spell check while typing": "Проверять орфографию при вводе",
"Confirm before deleting": "Спрашивать перед удалением",
"Show message snippets": "Показывать начало письма",
"Preview the first line of each message in the list.": "Показывать первую строку каждого письма в списке.",
"Show sender avatars": "Показывать аватары отправителей",
"Group messages from the same thread together.": "Объединять письма одной цепочки.",
"After archiving or deleting": "После архивирования или удаления",
"Ask before showing (recommended)": "Спрашивать перед показом (рекомендуется)",
"Always (all messages)": "Всегда (все письма)",
"Show automatically from my contacts": "Автоматически для моих контактов",
"Immediately when opened": "Сразу при открытии",
"After 2 seconds": "Через 2 секунды",
"After 5 seconds": "Через 5 секунд",
"Never automatically": "Никогда автоматически",
"When someone requests a read receipt": "Когда запрашивают уведомление о прочтении",
"Ask me on each message": "Спрашивать для каждого письма",
"5 seconds": "5 секунд",
"8 seconds": "8 секунд",
"15 seconds": "15 секунд",
"30 seconds": "30 секунд",
"Locale": "Регион",
"Language": "Язык",
"Interface language": "Язык интерфейса",
"Language & region": "Язык и регион",
"Date format": "Формат даты",
"Time format": "Формат времени",
"Time zone": "Часовой пояс",
"Week starts on": "Неделя начинается с",
"Monday": "Понедельник",
"Tuesday": "Вторник",
"Wednesday": "Среда",
"Thursday": "Четверг",
"Friday": "Пятница",
"Saturday": "Суббота",
"Sunday": "Воскресенье",
"12-hour clock (6:23 PM)": "12-часовой формат (6:23 PM)",
"24-hour clock (18:23)": "24-часовой формат (18:23)",
"Browser default ({zone})": "Как в браузере ({zone})",
"Default ({zone})": "По умолчанию ({zone})",
"Automatic ({example})": "Автоматически ({example})",
"Automatic ({locale})": "Автоматически ({locale})",
"Automatic": "Автоматически",
"Preview: {example}": "Пример: {example}",
"Dates, times and month names follow this choice.": "Даты, время и названия месяцев следуют этому выбору.",
"Your mail server reports {name} ({tag}).": "Ваш почтовый сервер сообщает {name} ({tag}).",
"Your mail server does not report a locale, so the browser's is used.": "Ваш почтовый сервер не сообщает язык, поэтому используется язык браузера.",
"Dates": "Даты",
"Date": "Дата",
"Time": "Время",
"When": "Когда",
"Then": "Затем",
"then": "затем",
"Theme": "Тема",
"Accent color": "Акцентный цвет",
"Color": "Цвет",
"Colour": "Цвет",
"Text color": "Цвет текста",
"Density & text": "Плотность и текст",
"Display density": "Плотность отображения",
"Comfortable": "Свободная",
"Cozy (default)": "Средняя (по умолчанию)",
"Compact": "Плотная",
"Text size": "Размер текста",
"Font size": "Размер шрифта",
"Small": "Мелкий",
"Medium": "Средний",
"Large": "Крупный",
"Huge": "Очень крупный",
"Sidebar": "Боковая панель",
"Show labels in the sidebar": "Показывать ярлыки на боковой панели",
"Collapse sidebar to icons": "Свернуть боковую панель до значков",
"Apply the theme to messages too": "Применять тему и к письмам",
"Swiping": "Жесты смахивания",
"Swipe left": "Смахнуть влево",
"Swipe right": "Смахнуть вправо",
"Backup": "Резервная копия",
"Export settings": "Экспорт настроек",
"Import settings": "Импорт настроек",
"Settings imported": "Настройки импортированы",
"Invalid settings file": "Неверный файл настроек",
"Reset to defaults": "Сбросить к значениям по умолчанию",
"Default mail app": "Почтовая программа по умолчанию",
"Documentation": "Документация",
"About ihasmail": "О программе ihasmail",
"About": "О программе",
"Server": "Сервер",
"Server capabilities": "Возможности сервера",
"Accounts": "Учётные записи",
"Account": "Учётная запись",
"Max upload": "Максимальная загрузка",
"{size} MB": "{size} МБ",
"KB": "КБ",
"Image privacy proxy": "Прокси приватности изображений",
"enabled": "включён",
"disabled": "выключен",
"Enabled": "Включено",
"active": "активен",
"hidden": "скрыта",
"connected": "подключено",
"reconnecting…": "переподключение…",
"AGPL-3.0 source": "Исходный код AGPL-3.0",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "Профили отправителя и подписи",
"Add identity": "Добавить профиль",
"Delete identity": "Удалить профиль",
"Make default": "Сделать основным",
"Default": "Основной",
"Show when composing": "Показывать при написании",
"Hide when composing": "Скрывать при написании",
"Signature": "Подпись",
"Your signature…": "Ваша подпись…",
"Reply-To": "Обратный адрес",
"Reply-To (optional)": "Обратный адрес (необязательно)",
"Reply-To: {addresses}": "Обратный адрес: {addresses}",
"Replies go to…": "Ответы приходят на…",
"Set a Reply-To address": "Указать обратный адрес",
"{email} is now your default identity": "{email} теперь ваш основной профиль",
"Templates": "Шаблоны",
"New template": "Новый шаблон",
"Delete template": "Удалить шаблон",
"Insert template": "Вставить шаблон",
"Template text…": "Текст шаблона…",
"Subject: {subject}": "Тема: {subject}",
"Filters & rules": "Фильтры и правила",
"Filters unavailable": "Фильтры недоступны",
"Rules": "Правила",
"Rule name": "Название правила",
"New rule": "Новое правило",
"Delete rule": "Удалить правило",
"No filters yet": "Фильтров пока нет",
"Add condition": "Добавить условие",
"Remove condition": "Убрать условие",
"Add action": "Добавить действие",
"Remove action": "Убрать действие",
"all of the following match": "выполняются все условия",
"any of the following match": "выполняется любое из условий",
"contains": "содержит",
"does not contain": "не содержит",
"is": "равно",
"is not": "не равно",
"matches (wildcards * ?)": "совпадает с (шаблоны * ?)",
"does not match": "не совпадает с",
"matches regex": "совпадает с регулярным выражением",
"does not match regex": "не совпадает с регулярным выражением",
"exists": "существует",
"does not exist": "не существует",
"is larger than": "больше чем",
"is smaller than": "меньше чем",
"Stop processing more rules": "Прекратить обработку остальных правил",
"keep copy": "оставить копию",
"Forward to": "Переслать на",
"Reject with message": "Отклонить с сообщением",
"Scripts": "Скрипты",
"Scripts (advanced)": "Скрипты (для опытных)",
"Script name": "Название скрипта",
"New script": "Новый скрипт",
"Delete script": "Удалить скрипт",
"Sieve source": "Исходный код Sieve",
"Preview generated Sieve script": "Посмотреть созданный скрипт Sieve",
"Start with rules": "Начать с правил",
"Switch to rules?": "Перейти к правилам?",
"Create filter": "Создать фильтр",
"Filter messages like this": "Фильтровать похожие письма",
"Filter messages like this…": "Фильтровать похожие письма…",
"Also apply to existing messages in": "Применить и к письмам в",
"keyword (e.g. $important, work)": "ключевое слово (например, $important, work)",
"Other header…": "Другой заголовок…",
"Out of office": "Автоответ об отсутствии",
"Auto-reply enabled": "Автоответ включён",
// ── Security, sessions, notifications ──────────────────────────────
"Security & sessions": "Безопасность и сеансы",
"Password": "Пароль",
"Your password": "Ваш пароль",
"Current password": "Текущий пароль",
"New password": "Новый пароль",
"Confirm new password": "Подтвердите новый пароль",
"Current code": "Текущий код",
"Code from your authenticator": "Код из приложения-аутентификатора",
"Two-factor authentication": "Двухфакторная аутентификация",
"Turn off two-factor authentication": "Отключить двухфакторную аутентификацию",
"Your password alone will be enough to sign in again.": "Для входа снова будет достаточно одного пароля.",
"App passwords": "Пароли приложений",
"New app password for": "Новый пароль приложения для",
"Your new app password": "Ваш новый пароль приложения",
"Secret": "Секрет",
"Thunderbird on my laptop": "Thunderbird на ноутбуке",
"Active webmail sessions": "Активные сеансы веб-почты",
"Sign out": "Выйти",
"Sign out here": "Выйти здесь",
"Sign out all other sessions": "Завершить все остальные сеансы",
"Signed in as": "Вход выполнен как",
"This is my own device": "Это моё личное устройство",
"this device": "это устройство",
"Device": "Устройство",
"IP": "IP",
"Last active": "Последняя активность",
"Created": "Создан",
"Expires": "Истекает",
"Status": "Состояние",
"Online": "В сети",
"Reason": "Причина",
"Type": "Тип",
"Email or username": "Адрес или имя пользователя",
"Use your usual address as the username.": "В качестве имени пользователя укажите свой обычный адрес.",
"Fast, friendly webmail. Your mailbox, your way.": "Быстрая и удобная веб-почта. Ваш ящик — по-вашему.",
"Notifications": "Уведомления",
"Notifications are blocked in your browser settings.": "Уведомления заблокированы в настройках браузера.",
"Not supported in this browser.": "Не поддерживается в этом браузере.",
"Desktop notifications while ihasmail is open": "Системные уведомления, пока ihasmail открыт",
"Notify me even when ihasmail is closed": "Уведомлять, даже когда ihasmail закрыт",
"Play a sound for new mail": "Звук при новом письме",
"Test notification": "Проверить уведомление",
"Background notifications are on": "Фоновые уведомления включены",
"The tab title and favicon always show your unread Inbox count.": "Заголовок вкладки и значок всегда показывают число непрочитанных во входящих.",
"Live updates are delivered via JMAP push ({state}).": "Обновления в реальном времени приходят через JMAP push ({state}).",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "Показывает системное уведомление, когда во входящие приходит письмо, а вкладка в фоне.",
// ── Editor, search, shortcuts, misc ────────────────────────────────
"Formatting": "Форматирование",
"Formatting options": "Параметры форматирования",
"Remove formatting": "Убрать форматирование",
"Bold (Ctrl+B)": "Полужирный (Ctrl+B)",
"Italic (Ctrl+I)": "Курсив (Ctrl+I)",
"Underline (Ctrl+U)": "Подчёркнутый (Ctrl+U)",
"Strikethrough": "Зачёркнутый",
"Highlight": "Выделение цветом",
"Bulleted list": "Маркированный список",
"Numbered list": "Нумерованный список",
"Increase indent": "Увеличить отступ",
"Decrease indent": "Уменьшить отступ",
"Align left": "По левому краю",
"Align right": "По правому краю",
"Center": "По центру",
"Quote": "Цитата",
"Code block": "Блок кода",
"Normal text": "Обычный текст",
"Insert link (Ctrl+K)": "Вставить ссылку (Ctrl+K)",
"Insert image": "Вставить изображение",
"Link": "Ссылка",
"List": "Список",
"Emoji": "Эмодзи",
"Write your message…": "Напишите письмо…",
"Search": "Поиск",
"Search mail": "Поиск по почте",
"Advanced search": "Расширенный поиск",
"Keyboard shortcuts": "Сочетания клавиш",
"Keyboard shortcuts (?)": "Сочетания клавиш (?)",
"Shortcuts": "Сочетания",
"Go to": "Перейти",
"Menu": "Меню",
"Options": "Параметры",
"Send options": "Параметры отправки",
"Name": "Имя",
"Email": "Адрес",
"Email address": "Адрес электронной почты",
"Description": "Описание",
"Location": "Место",
"Visibility": "Видимость",
"Private": "Личное",
"Work": "Работа",
"Loading…": "Загрузка…",
"None": "Нет",
"optional": "необязательно",
"Always show": "Всегда показывать",
"to": "кому",
"Received": "Получено",
"In-Reply-To": "In-Reply-To",
"References": "References",
"Add label / keyword": "Добавить ярлык или ключевое слово",
"Manage labels": "Управление ярлыками",
"Create “{name}”": "Создать «{name}»",
"Type a name to create your first label.": "Введите название, чтобы создать первый ярлык.",
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Ярлыки — это ключевые слова IMAP, которые хранятся в самих письмах и синхронизируются с другими клиентами. Названия и цвета остаются в этом браузере.",
"New label": "Новый ярлык",
"Delete label": "Удалить ярлык",
"PDF": "PDF",
"Large attachments may be rejected by some servers": "Некоторые серверы отклоняют большие вложения",
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Изображения хранятся в ваших Файлах (папка «ihasmail») и вставляются при отправке.",
"Thanks for your message. I'm away until … and will reply when I'm back.": "Спасибо за письмо. Я отсутствую до … и отвечу после возвращения.",
"Automatically reply to people who email you while you're away. Each sender gets at most one reply.": "Автоматически отвечать тем, кто напишет вам во время отсутствия. Каждый отправитель получит не больше одного ответа.",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "Автоматически сортировать входящую почту. Правила выполняются на сервере (Sieve), поэтому работают во всех клиентах.",
"Canned responses you can insert into any message from the composer's template button.": "Готовые ответы, которые можно вставить в любое письмо кнопкой шаблонов в редакторе.",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "Создайте правило, чтобы складывать рассылки в папку, отмечать важных отправителей или пересылать почту.",
"Advanced: manage raw Sieve scripts. Only one script can be active at a time.": "Для опытных: работа со скриптами Sieve напрямую. Одновременно активен только один скрипт.",
"Only part of your filter script arrived.": "Скрипт фильтрации получен не полностью.",
"Your active script “{name}” was written by hand.": "Ваш активный скрипт «{name}» написан вручную.",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "Активен другой скрипт («{name}»). Если сохранить правила здесь, вместо него включится скрипт «ihasmail».",
"“{name}” will be deactivated (not deleted) and a new “ihasmail” script will take over.": "«{name}» будет отключён (не удалён), а его место займёт новый скрипт «ihasmail».",
"Sieve filtering is not available for this account.": "Фильтрация Sieve недоступна для этой учётной записи.",
"Sieve filtering is not enabled for this account.": "Фильтрация Sieve не включена для этой учётной записи.",
"Vacation responses are not available for this account.": "Автоответы об отсутствии недоступны для этой учётной записи.",
"This account does not have the JMAP calendars capability.": "У этой учётной записи нет возможности JMAP «календари».",
"This account does not have the JMAP contacts capability.": "У этой учётной записи нет возможности JMAP «контакты».",
"This account does not have the JMAP file storage capability.": "У этой учётной записи нет возможности JMAP «хранилище файлов».",
// ── Labels held in constants, translated where they render ─────────
"Add": "Добавить",
"Create subfolders": "Создавать вложенные папки",
"Dark": "Тёмная",
"Light": "Светлая",
"Match system": "Как в системе",
"Day.Month.Year": "День.Месяц.Год",
"Day/Month/Year": "День/Месяц/Год",
"Month/Day/Year": "Месяц/День/Год",
"Year-Month-Day (ISO 8601)": "Год-Месяц-День (ISO 8601)",
"Edit all": "Изменять всё",
"Edit contents": "Изменять содержимое",
"Edit own": "Изменять своё",
"Flag": "Отмечать",
"Mark read": "Отмечать прочитанным",
"Private props": "Личные свойства",
"Read": "Читать",
"Read events": "Читать события",
"RSVP": "Отвечать на приглашения",
"See free/busy": "Видеть занятость",
"Share": "Открывать доступ",
"Write": "Писать",
"Live updates connected": "Обновления в реальном времени подключены",
"Live updates reconnecting…": "Переподключение обновлений в реальном времени…",
"Live updates off — checking periodically instead": "Обновления в реальном времени выключены — идёт периодическая проверка",
"Mark as read / unread": "Отметить как прочитанное / непрочитанное",
"Star / unstar": "Отметить / снять отметку",
"Report spam / not spam": "Пометить как спам / не спам",
"Report spam": "Пометить как спам",
"Not spam": "Не спам",
"Nothing": "Ничего",
"Later today": "Сегодня позже",
"Tomorrow morning": "Завтра утром",
"Tomorrow afternoon": "Завтра днём",
"Monday morning": "В понедельник утром",
"Open draft": "Открыть черновик",
"Undo": "Отменить",
"Deleted Items": "Корзина",
"Choose a date": "Выберите дату",
"Choose a date and time": "Выберите дату и время",
"Pick date and time…": "Выбрать дату и время…",
"After": "После",
"Before": "До",
// ── Folder names shown for a JMAP role (see lib/mailboxName.ts) ────
"folder\u0004Inbox": "Входящие",
"folder\u0004Archive": "Архив",
"folder\u0004Drafts": "Черновики",
"folder\u0004Sent": "Отправленные",
"folder\u0004Deleted Items": "Корзина",
"folder\u0004Junk Mail": "Спам",
"folder\u0004Important": "Важное",
"folder\u0004All mail": "Вся почта",
"folder": "папка",
"“{name}” moved into “{parent}”": "«{name}» перемещена в «{parent}»",
"“{name}” moved to the top level": "«{name}» перемещена на верхний уровень",
"Could not move “{name}”: {reason}": "Не удалось переместить «{name}»: {reason}",
"Delete “{name}”?": "Удалить «{name}»?",
"Rename folder": "Переименовать папку",
"Search: {query}": "Поиск: {query}",
"No conversation selected": "Цепочка не выбрана",
"Drop here for the top level": "Перетащите сюда, чтобы вынести на верхний уровень",
// ── Longer prose ───────────────────────────────────────────────────
"Search mail (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)": "Поиск по почте (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)",
"Settings → Filters & rules": "Настройки → Фильтры и правила",
"Open the Mail view to see all shortcuts.": "Откройте раздел «Почта», чтобы увидеть все сочетания клавиш.",
"Gmail-style shortcuts are always on. Press {key} anywhere to see this list.": "Сочетания клавиш в стиле Gmail всегда включены. Нажмите {key} в любом месте, чтобы увидеть этот список.",
"Select a conversation to read it here · Press {key} for shortcuts": "Выберите цепочку, чтобы прочитать её здесь · {key} — сочетания клавиш",
"Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Совет: нажмите {key} на цепочке, чтобы присвоить ярлыки. Ищите через {operator}.",
"A fast, friendly, open-source webmail for {server}, built on JMAP.": "Быстрая и удобная веб-почта с открытым кодом для {server}, построенная на JMAP.",
"Defaults for the calendar views and new events.": "Значения по умолчанию для видов календаря и новых событий.",
"Replies will go to this address instead of the From address": "Ответы будут приходить на этот адрес, а не на адрес отправителя",
"Replies to mail sent from this identity go here instead of the From address.": "Ответы на письма из этого профиля приходят сюда, а не на адрес отправителя.",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "Новый профиль должен использовать адрес, с которого этой учётной записи разрешено отправлять (псевдонимы настраиваются на сервере).",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "Не предлагается при написании письма. Адрес по-прежнему принимает почту, и с него снова можно отправлять, если показать его обратно.",
"Each identity is a sender address with its own name, Reply-To and signature. The default identity is preselected when you compose; set a Reply-To when replies should go somewhere other than the From address.": "Каждый профиль — это адрес отправителя со своим именем, обратным адресом и подписью. Основной профиль подставляется при написании письма; укажите обратный адрес, если ответы должны приходить не на адрес отправителя.",
"This signature is larger than the server's {limit}-byte limit. ihasmail will keep the full version in your Files and store a short text fallback on the server — other mail clients will see the plain-text version.": "Эта подпись больше серверного предела в {limit} байт. ihasmail сохранит полную версию в ваших Файлах, а на сервере оставит короткий текстовый вариант — другие почтовые клиенты увидят именно его.",
"Outlook-style categories you can assign to events from the right-click menu or the event editor. The category name is stored on the event, so it syncs to other clients.": "Категории в стиле Outlook, которые можно присваивать событиям через контекстное меню или редактор события. Название категории хранится в самом событии и синхронизируется с другими клиентами.",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colours of its own does as well, instead of sitting on a white card. Messages that style themselves are left exactly as the sender designed them.": "Письма в обычном тексте уже следуют теме. С этой настройкой ей следуют и HTML-письма без собственных цветов, а не показываются на белом фоне. Письма с собственным оформлением остаются ровно такими, какими их задумал отправитель.",
"This is separate from {setting} in General, which decides how dates, times and numbers are written. You can read an English interface with German dates, or the other way round.": "Это не то же самое, что {setting} в разделе «Общие», где задаётся, как пишутся даты, время и числа. Можно читать английский интерфейс с русскими датами — или наоборот.",
"On a touchscreen, drag a message sideways to act on it. Each direction can do one thing, or nothing. These follow your account, so a phone and a tablet agree; a mouse ignores them and keeps dragging messages into folders instead.": "На сенсорном экране смахните письмо в сторону, чтобы выполнить над ним действие. Каждое направление может делать что-то одно — или ничего. Настройка привязана к учётной записи, поэтому телефон и планшет ведут себя одинаково; мышь её игнорирует, и письма по-прежнему перетаскиваются в папки.",
"This screen has no touchscreen, so nothing here changes what it does. Your phone or tablet will pick these up.": "У этого экрана нет сенсорного ввода, поэтому здесь ничего не изменится. Настройку подхватят телефон или планшет.",
"Holding a message selects it, and holding a folder opens its menu. Pull the top of the message list down to check for new mail.": "Долгое нажатие на письме выделяет его, а на папке — открывает её меню. Потяните список писем вниз, чтобы проверить почту.",
"A receipt tells whoever asked that this address is live and when the message was read, and the sender chooses where it goes — so there is no automatic option. Bulk mail, mailing lists and anything marked auto-submitted are never offered one at all.": "Уведомление сообщает запросившему, что адрес действующий и когда письмо было прочитано, а отправитель сам выбирает, куда его отправить, — поэтому автоматического варианта нет. Для массовых рассылок, списков рассылки и всего помеченного как отправленное автоматически оно не предлагается вовсе.",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API — you can still make ihasmail the default from your operating system if you install it as an app.": "Этот браузер не умеет регистрировать программы для ссылок {scheme}. В частности, в Safari нет такого интерфейса — но ihasmail всё равно можно сделать программой по умолчанию средствами операционной системы, установив его как приложение.",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "Для регистрации ссылок {scheme} нужно защищённое соединение (HTTPS).",
"Open {scheme} links — in web pages, documents and other apps — in ihasmail instead of a desktop mail client. Your browser will ask you to confirm, and you can change it later in its own settings (Chrome: Settings Privacy and security Site settings Protocol handlers; Firefox: Settings General Applications).": "Открывать ссылки {scheme} — на веб-страницах, в документах и других программах — в ihasmail, а не в почтовой программе на компьютере. Браузер попросит подтверждение, и позже это можно изменить в его настройках (Chrome: Настройки › Конфиденциальность и безопасность › Настройки сайтов › Обработчики протоколов; Firefox: Настройки › Основные › Приложения).",
"Requested in this browser. Whether it took effect is up to the browser — check its settings if mail links still open elsewhere.": "Запрошено в этом браузере. Сработало ли это, решает он сам — проверьте его настройки, если почтовые ссылки по-прежнему открываются в другом месте.",
"For a system-wide default, install ihasmail as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer ihasmail directly wherever it asks which mail app to use.": "Чтобы задать программу по умолчанию для всей системы, сначала установите ihasmail как приложение (в Chrome — значок установки в адресной строке). После этого операционная система сможет предлагать ihasmail везде, где спрашивает, какой почтовой программой воспользоваться.",
"Needs a browser with the Push API and a mail server that publishes a push key.": "Нужен браузер с Push API и почтовый сервер, публикующий push-ключ.",
"Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.": "Почтовый сервер доставляет их прямо в браузер, поэтому они приходят без открытой вкладки ihasmail и содержат отправителя и тему. Браузер при этом должен быть запущен: если закрыть его полностью, уведомления подождут и придут при следующем запуске.",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "Почтовый сервер может разбудить этот браузер, но не сообщит отправителя и тему. Браузер при этом должен быть запущен.",
"This is what a new-mail notification looks like.": "Так выглядит уведомление о новом письме.",
"You're signed in as {user}. Your password is never stored in the browser; the server keeps it encrypted per-session for talking to Stalwart.": "Вы вошли как {user}. Пароль никогда не хранится в браузере: сервер держит его в зашифрованном виде на время сеанса, чтобы общаться со Stalwart.",
"App passwords are managed by your mail administrator.": "Паролями приложений управляет ваш почтовый администратор.",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "Смена пароля завершает остальные сеансы веб-почты. Пароли приложений продолжают работать.",
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "Для этой учётной записи включена двухфакторная аутентификация. ihasmail пока не умеет входить по коду, поэтому для входа на другом устройстве нужен пароль приложения — либо двухфакторную аутентификацию можно отключить здесь.",
"A separate password for a mail app or device, which you can revoke on its own. App passwords skip two-factor codes, so they keep working in apps that can't ask for one.": "Отдельный пароль для почтовой программы или устройства, который можно отозвать по отдельности. Пароли приложений обходят двухфакторные коды и поэтому работают там, где запросить код невозможно.",
"Copy it into {name} now — it isn't shown again.": "Скопируйте его в {name} сейчас — больше он не показывается.",
"No other users found in the directory, so nobody new can be added. Sharing already in place is listed below and can still be removed.": "В каталоге не найдено других пользователей, поэтому добавить некого. Уже открытый доступ перечислен ниже, и его по-прежнему можно закрыть.",
"Stalwart does not publish its version number to mail clients, so ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart не сообщает почтовым клиентам номер версии, поэтому ihasmail показывает редакцию, если сервер её называет. ihasmail требует версию 0.16 или новее, и вход с более старой не выполняется.",
"It {damage}, so the rules in it can't be shown or edited — saving what did arrive would write it back over the rest. Reload the page to try again. Your rules are still on the server; nothing here has changed them.": "Он {damage}, поэтому правила в нём нельзя показать или изменить: сохранение полученной части затёрло бы остальное. Перезагрузите страницу и попробуйте снова. Ваши правила остаются на сервере, здесь их ничто не меняло.",
"The visual rule editor only manages scripts it created. You can edit the script in the {tab} tab, or start fresh with rules (the existing script will be kept but deactivated).": "Визуальный редактор правил работает только со скриптами, которые создал сам. Скрипт можно изменить на вкладке {tab} или начать заново с правил (существующий скрипт сохранится, но будет отключён).",
"Your filter script {damage}, so only part of it arrived. Adding a rule would write that part back over the whole thing. Reload the page and try again.": "Ваш скрипт фильтрации {damage}, поэтому получена только его часть. Добавление правила затёрло бы этой частью весь скрипт. Перезагрузите страницу и попробуйте снова.",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "Скрипт фильтрации сейчас не удалось прочитать, поэтому добавление правила рискует его перезаписать. Перезагрузите страницу и попробуйте снова.",
"Your active Sieve script was written by hand, so rules can't be added automatically. Open {where} to edit the script or switch to managed rules.": "Ваш активный скрипт Sieve написан вручную, поэтому правила нельзя добавить автоматически. Откройте {where}, чтобы изменить скрипт или перейти к управляемым правилам.",
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Здесь показаны только языки, на которые ihasmail переведён, поэтому список растёт вместе с переводами, а не опережает их: язык без текстов заставил бы страницу утверждать, что она написана на языке, которым не является.",
"tell us about it": "сообщите нам",
"This translation was generated by AI and has not been checked by a native speaker, so it is marked Beta until somebody who speaks it signs it off. Anything that reads wrongly is worth reporting — {report}.": "Этот перевод сделан ИИ и не проверен носителем языка, поэтому помечен как Beta до тех пор, пока кто-нибудь его не подтвердит. Обо всём, что звучит неправильно, стоит сообщить — {report}.",
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} — это палитра с {site}, с которой начинает новая учётная запись. Тема тёмная, поэтому везде, где это важно, считается тёмной, а акцентный цвет ниже применяется поверх неё.",
"ihasmail's own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "Собственная версия ihasmail — это дата коммита, из которого он собран, и указание, откуда этот коммит взялся: {example} собран из коммита от 30 августа 2026 года, пришедшего через pull request 129. Коммит, пришедший иначе, несёт вместо этого короткий SHA — {sha}. Версия намеренно ничего не сообщает о Stalwart; то, что этой сборке нужно от сервера, указано строкой выше.",
},
plurals: {
/*
* Three forms, which is the whole reason plural() takes a map rather than
* (one, other). Intl.PluralRules picks: 1 is `one`, 2-4 are `few`, 5-20
* and most others are `many`. English needs none of this and would have
* shipped "1 писем" without it.
*/
"{n} messages": { one: "{n} письмо", few: "{n} письма", many: "{n} писем", other: "{n} письма" },
"{n} conversations": { one: "{n} цепочка", few: "{n} цепочки", many: "{n} цепочек", other: "{n} цепочки" },
// Impersonal, so the count needs no agreement at all — which is what
// Russian interfaces actually do here.
"{n} selected": { one: "Выбрано: {n}", few: "Выбрано: {n}", many: "Выбрано: {n}", other: "Выбрано: {n}" },
},
};
+859
View File
@@ -0,0 +1,859 @@
import type { Catalog } from "@/lib/i18n";
/**
* Ukrainian — generated by AI, and not reviewed by a native speaker.
*
* Marked Beta, with the report link doing the job a native speaker would. A
* missing string renders its English source, so deleting a bad entry is a
* valid fix.
*
* ── Decisions this file is consistent about ──────────────────────────────
*
* This is a translation, not a transliteration of the Russian one. The two
* languages share a plural structure and a script and almost nothing else
* that matters here: «Вхідні» is not «Входящие», «Кошик» is not «Корзина»,
* «Листування» is not «Цепочка». Producing Ukrainian by adapting Russian is
* the failure mode a Ukrainian reader will spot in the first sentence and
* will rightly resent, so the vocabulary was chosen against what Ukrainian
* mail clients say rather than against the neighbouring file.
*
* Register: **ви**, lowercase — the neutral polite address, matching the
* decision every other catalogue took. As in Russian, most of the interface
* sidesteps it by using the infinitive for actions.
*
* Terminology, fixed once so it cannot drift:
*
* Inbox Вхідні Archive (verb) архівувати
* Drafts Чернетки Delete видалити
* Sent Надіслані Move to перемістити до
* Deleted Items Кошик Reply відповісти
* Junk / Spam Спам Reply all відповісти всім
* Folder Тека Forward переслати
* Label Мітка Star позначити
* Conversation Листування Read / unread прочитано / непрочитано
* Message Лист Settings Налаштування
* Attachment Вкладення Signature Підпис
* Contact Контакт Identity Профіль відправника
*
* «Тека» rather than «папка» for folder: both are used, and «тека» is the
* form Ukrainian software has settled on. «Мітка» for label rather than
* Russian's «ярлык», which in Ukrainian means a shortcut.
*
* Product names are never translated: ihasmail, Stalwart, JMAP, Sieve, vCard.
*/
export const catalog: Catalog = {
strings: {
// ── Actions ────────────────────────────────────────────────────────
"Archive": "Архівувати",
"Archive (e)": "Архівувати (e)",
"Delete": "Видалити",
"Delete (#)": "Видалити (#)",
"Reply": "Відповісти",
"Reply (r)": "Відповісти (r)",
"Reply all": "Відповісти всім",
"Forward": "Переслати",
"Move to…": "Перемістити до…",
"Move to (v)": "Перемістити до (v)",
"Move to folder": "Перемістити до теки",
"Move here": "Перемістити сюди",
"Mark as read": "Позначити як прочитане",
"Mark as read (Shift+I)": "Позначити як прочитане (Shift+I)",
"Mark as unread": "Позначити як непрочитане",
"Mark as unread (Shift+U)": "Позначити як непрочитане (Shift+U)",
"Mark all as read": "Позначити все як прочитане",
"Mark all as read, incl. subfolders": "Позначити все як прочитане, разом із вкладеними теками",
"Star": "Позначити",
"Labels": "Мітки",
"Labels (l)": "Мітки (l)",
"Label as": "Додати мітку",
"Label…": "Мітка…",
"Compose": "Написати",
"Compose message": "Написати лист",
"Send": "Надіслати",
"Send at": "Надіслати о",
"Cancel send": "Скасувати надсилання",
"Schedule send": "Запланувати надсилання",
"Save": "Зберегти",
"Save & activate": "Зберегти й увімкнути",
"Save & close (Esc)": "Зберегти й закрити (Esc)",
"Save as template": "Зберегти як шаблон",
"Save draft now": "Зберегти чернетку зараз",
"Cancel": "Скасувати",
"Close": "Закрити",
"Done": "Готово",
"Continue": "Продовжити",
"Edit": "Змінити",
"Edit…": "Змінити…",
"Rename": "Перейменувати",
"Remove": "Прибрати",
"Restore": "Відновити",
"Retry": "Повторити",
"Reload": "Перезавантажити",
"Refresh": "Оновити",
"Copy": "Копіювати",
"Copy email address": "Копіювати адресу",
"Download": "Завантажити",
"Download all": "Завантажити все",
"Download (.eml)": "Завантажити (.eml)",
"Download latest as .eml": "Завантажити останній як .eml",
"Upload": "Вивантажити",
"Upload files…": "Вивантажити файли…",
"Print": "Друк",
"Print conversation": "Надрукувати листування",
"Undo (Ctrl+Z)": "Скасувати (Ctrl+Z)",
"Redo": "Повернути",
"Dismiss": "Закрити",
"Discard changes": "Відхилити зміни",
"Discard draft": "Видалити чернетку",
"Duplicate": "Дублювати",
"Validate": "Перевірити",
"Revoke": "Відкликати",
"Turn off": "Вимкнути",
"Clear": "Очистити",
"Clear selection": "Зняти позначення",
"Clear custom colour": "Прибрати власний колір",
"Select": "Вибрати",
"Select all": "Вибрати все",
"Unsubscribe": "Відписатися",
"Share…": "Поділитися…",
"Stop sharing": "Закрити доступ",
"Open": "Відкрити",
"Open in new tab": "Відкрити в новій вкладці",
"Open in calendar": "Відкрити в календарі",
"Back": "Назад",
"Back (u)": "Назад (u)",
"Back to list": "Назад до списку",
"Back to my files": "Назад до моїх файлів",
"Go back to the list": "Повернутися до списку",
"Next": "Далі",
"Previous": "Назад",
"More": "Ще",
"More actions": "Інші дії",
"More options": "Інші параметри",
"Move up": "Вгору",
"Move down": "Вниз",
"Drag to reorder": "Перетягніть, щоб змінити порядок",
"Right-click for options": "Права кнопка миші — параметри",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "Пошта",
"Message": "Лист",
"Messages": "Листи",
"Message body": "Текст листа",
"Message headers": "Заголовки листа",
"Message size": "Розмір листа",
"Message-ID": "Message-ID",
"Original message": "Початковий лист",
"Delete this message": "Видалити цей лист",
"New message to this address": "Новий лист на цю адресу",
"Conversation view": "Показувати листуванням",
"Draft": "Чернетка",
"Unread": "Непрочитані",
"Unread only": "Лише непрочитані",
"All mail": "Уся пошта",
"Sender": "Відправник",
"Sender domain": "Домен відправника",
"Recipients": "Одержувачі",
"From": "Від",
"To": "Кому",
"Cc": "Копія",
"Bcc": "Прихована копія",
"Subject": "Тема",
"Subject (optional)": "Тема (необов'язково)",
"Body": "Текст",
"Body text": "Звичайний текст",
"Attach files": "Прикріпити файли",
"Attach from Files": "Прикріпити з Файлів",
"Remove attachment": "Прибрати вкладення",
"Has attachment": "Є вкладення",
"Has the words": "Містить слова",
"Header name": "Назва заголовка",
"Show headers": "Показати заголовки",
"Show original": "Показати оригінал",
"Show details": "Показати подробиці",
"Show images": "Показати зображення",
"Remote images": "Зовнішні зображення",
"Remote images are blocked to protect your privacy.": "Зовнішні зображення заблоковано, щоб захистити вашу приватність.",
"Always from {email}": "Завжди від {email}",
"This looks like a mailing list.": "Схоже, це розсилка.",
"This folder is empty": "Тека порожня",
"This folder is empty.": "Тека порожня.",
"Delete all spam now": "Видалити весь спам зараз",
"Deleting spam is permanent — it does not go to Deleted Items first.": "Видалення спаму остаточне — він не потрапляє спершу до кошика.",
"Keep in Inbox": "Залишити у вхідних",
"Newer (k)": "Новіше (k)",
"Older (j)": "Старіше (j)",
"Open the next (older) conversation": "Відкрити наступне листування (старіше)",
"Open the previous (newer) conversation": "Відкрити попереднє листування (новіше)",
"Loading conversation…": "Завантаження листування…",
"Important": "Важливе",
"Unverified": "Не перевірено",
"Priority": "Пріоритет",
"High": "Високий",
"Normal": "Звичайний",
"Low": "Низький",
"to {recipients}": "кому: {recipients}",
"From: {sender}": "Від: {sender}",
"Waiting on the server — goes out {when}.": "Очікує на сервері — буде надіслано {when}.",
"Scheduled — click to clear the schedule": "Заплановано — натисніть, щоб скасувати",
"Nothing scheduled": "Нічого не заплановано",
"The message waits on the server, so it goes out whether or not ihasmail is open.": "Лист чекає на сервері й буде надісланий незалежно від того, чи відкрито ihasmail.",
"This server holds a message for up to {span}.": "Цей сервер утримує лист до {span}.",
"Date and time to send": "Дата й час надсилання",
"Undo send window": "Час на скасування надсилання",
"Read receipt requested": "Запитано сповіщення про прочитання",
"The sender asked for a read receipt.": "Відправник запитав сповіщення про прочитання.",
"Request read receipt": "Запитати сповіщення про прочитання",
"Always request read receipts": "Завжди запитувати сповіщення про прочитання",
"Receipt": "Сповіщення",
"Never send one": "Ніколи не надсилати",
"Not this time": "Не цього разу",
"It would go to {address}, which is not where the message came from.": "Воно пішло б на {address}, а лист надійшов не звідти.",
"Use “Show original” for the complete raw message.": "Натисніть «Показати оригінал», щоб побачити лист повністю.",
// ── Folders, calendar, contacts, files ─────────────────────────────
"Folder": "Тека",
"Folders": "Теки",
"Folder options": "Параметри теки",
"New folder": "Нова тека",
"New subfolder": "Нова вкладена тека",
"Delete folder": "Видалити теку",
"No matching folders": "Відповідних тек немає",
"No subfolders here.": "Тут немає вкладених тек.",
"Type a folder name…": "Введіть назву теки…",
" New folder…": "+ Нова тека…",
"Create, rename and hide folders.": "Створення, перейменування та приховування тек.",
"Show unsubscribed (hidden) folders": "Показувати непідписані (приховані) теки",
"Storage: {used} of {total} used.": "Сховище: зайнято {used} з {total}.",
"{used} of {total}": "{used} з {total}",
"Calendar": "Календар",
"My calendars": "Мої календарі",
"New calendar": "Новий календар",
"Calendar options": "Параметри календаря",
"Calendar & contacts": "Календар і контакти",
"Calendar is not available": "Календар недоступний",
"Event": "Подія",
"New event": "Нова подія",
"(new event)": "(нова подія)",
"New all-day event": "Нова подія на весь день",
"Add title": "Додати назву",
"Add location": "Додати місце",
"Add to calendar": "Додати до календаря",
"Add to my calendar": "Додати до мого календаря",
"Remove from calendar": "Прибрати з календаря",
"Remove from my calendar": "Прибрати з мого календаря",
"All day": "Весь день",
"all-day": "весь день",
"Starts": "Початок",
"Starts (optional)": "Початок (необов'язково)",
"Ends": "Завершення",
"Ends (optional)": "Завершення (необов'язково)",
"Day": "День",
"Week": "Тиждень",
"Month": "Місяць",
"Agenda": "Список",
"Today": "Сьогодні",
"Go to day": "Перейти до дня",
"Go to week": "Перейти до тижня",
"Previous month": "Попередній місяць",
"Next month": "Наступний місяць",
"Does not repeat": "Не повторюється",
"Daily": "Щодня",
"Every weekday": "Щобудня",
"Yearly": "Щороку",
"Custom…": "Власний варіант…",
"Weekly on {weekday}": "Щотижня, {weekday}",
"Monthly on day {day}": "Щомісяця, {day}-го числа",
"Repeat every": "Повторювати кожні",
"Repeat until": "Повторювати до",
"after N times": "після N разів",
"on date": "до дати",
"never": "ніколи",
"day(s)": "дн.",
"week(s)": "тижн.",
"month(s)": "міс.",
"year(s)": "р.",
"Reminders": "Нагадування",
"Add reminder": "Додати нагадування",
"Remove reminder": "Прибрати нагадування",
"Default reminder": "Нагадування за замовчуванням",
"At time of event": "У момент події",
"5 minutes before": "За 5 хвилин",
"10 minutes before": "За 10 хвилин",
"15 minutes before": "За 15 хвилин",
"30 minutes before": "За 30 хвилин",
"1 hour before": "За 1 годину",
"1 day before": "За 1 день",
"15 minutes": "15 хвилин",
"30 minutes": "30 хвилин",
"45 minutes": "45 хвилин",
"1 hour": "1 година",
"1.5 hours": "1,5 години",
"2 hours": "2 години",
"Default event length": "Тривалість події за замовчуванням",
"Default view": "Вигляд за замовчуванням",
"Guests": "Учасники",
"Add guests by name or email": "Додати учасників за іменем або адресою",
"Send invitation emails to guests": "Надсилати учасникам запрошення поштою",
"Going?": "Будете?",
"Yes": "Так",
"No": "Ні",
"Maybe": "Можливо",
"Confirmed": "Підтверджено",
"Tentative": "Під питанням",
"Cancelled": "Скасовано",
"organizer": "організатор",
"Organizer: {name}": "Організатор: {name}",
"Free": "Вільний",
"Busy": "Зайнятий",
"Free/busy": "Зайнятість",
"Show as": "Показувати як",
"Availability on {date}": "Зайнятість на {date}",
"Count all events as busy": "Вважати всі події зайнятістю",
"Only events I'm attending": "Лише події, де я беру участь",
"Don't include in availability": "Не враховувати в зайнятості",
"Meeting link": "Посилання на зустріч",
"No events in the next 60 days.": "Найближчі 60 днів подій немає.",
"Working hours": "Робочий час",
"Working hours start": "Початок робочого часу",
"Working hours end": "Кінець робочого часу",
"Colour categories": "Кольорові категорії",
"Category": "Категорія",
"No category": "Без категорії",
"New category": "Нова категорія",
"Delete category": "Видалити категорію",
"Manage categories…": "Керування категоріями…",
"Use category color": "Колір категорії",
"Use calendar color": "Колір календаря",
"Use the default colour": "Колір за замовчуванням",
"+{n} more": "+{n}",
"Contacts": "Контакти",
"Contacts are not available": "Контакти недоступні",
"New contact": "Новий контакт",
"Edit contact": "Змінити контакт",
"Select a contact": "Виберіть контакт",
"All contacts": "Усі контакти",
"Search contacts": "Пошук за контактами",
"Search contacts to add…": "Знайдіть контакти, щоб додати…",
"Loading contacts…": "Завантаження контактів…",
"Add to contacts": "Додати до контактів",
"Add to my contacts": "Додати до моїх контактів",
"Remove from my contacts": "Прибрати з моїх контактів",
"Address book": "Адресна книга",
"Address books": "Адресні книги",
"All address books": "Усі адресні книги",
"My address books": "Мої адресні книги",
"New address book": "Нова адресна книга",
"No address books yet.": "Адресних книг поки немає.",
"Choose from address books": "Вибрати з адресних книг",
"Import vCard": "Імпорт vCard",
"Export all": "Експортувати все",
"Export book": "Експортувати книгу",
"Email group": "Написати групі",
"Email everyone": "Написати всім",
"Members": "Учасники",
"Members ({count})": "Учасники ({count})",
"Group": "Група",
"· group": "· група",
"Person": "Людина",
"First name": "Ім'я",
"Last name": "Прізвище",
"Middle name": "По батькові",
"More name fields": "Інші поля імені",
"Nickname": "Псевдонім",
"Prefix": "Звертання",
"Suffix": "Суфікс",
"Dr.": "Д-р",
"Jr.": "Мол.",
"Display name": "Відображуване ім'я",
"Job title": "Посада",
"Organization": "Організація",
"Company": "Компанія",
"Birthday": "День народження",
"Notes": "Нотатки",
"Website": "Сайт",
"Phone": "Телефон",
"Add phone": "Додати телефон",
"Add email": "Додати адресу",
"Add address": "Додати поштову адресу",
"Address": "Адреса",
"Street": "Вулиця",
"City": "Місто",
"State / Region": "Область / регіон",
"Postal code": "Індекс",
"Country": "Країна",
"Change photo": "Змінити фото",
"Remove photo": "Прибрати фото",
"Updated {date}": "Оновлено {date}",
"Modified": "Змінено",
"Search names and addresses": "Пошук за іменами й адресами",
"Add a person or group…": "Додати людину або групу…",
"Choose recipients": "Вибрати одержувачів",
"Available to add": "Можна додати",
"vCard": "vCard",
"vCard attachment": "Вкладення vCard",
"Files": "Файли",
"My files": "Мої файли",
"File storage is not available": "Сховище файлів недоступне",
"Drag files here or use Upload.": "Перетягніть файли сюди або натисніть «Вивантажити».",
"Shared": "Спільний доступ",
"Shared with me": "Доступні мені",
"Nothing is shared with you.": "Вам нічого не відкрили.",
"Not shared with anyone yet.": "Доступ поки нікому не відкрито.",
"Check for new shares": "Перевірити нові",
"Shared files are copied to your account when attached.": "Під час прикріплення спільні файли копіюються до вашого облікового запису.",
"Viewer": "Читання",
"Editor": "Редагування",
"Size": "Розмір",
"Add files": "Додати файли",
"Minimize": "Згорнути",
// ── Settings ───────────────────────────────────────────────────────
"Settings": "Налаштування",
"All settings": "Усі налаштування",
"Sections": "Розділи",
"General": "Загальні",
"Appearance": "Вигляд",
"Make ihasmail yours.": "Налаштуйте ihasmail під себе.",
"Reading": "Читання",
"Reading pane": "Область читання",
"Reading, sending and list behaviour. Settings are stored in this browser.": "Поведінка під час читання, надсилання та в списку. Налаштування зберігаються в цьому браузері.",
"Right of the list": "Праворуч від списку",
"Below the list": "Під списком",
"Hidden (open full width)": "Прихована (відкривати на всю ширину)",
"Off (open messages full width)": "Вимкнена (листи на всю ширину)",
"Off": "Вимкнено",
"Composing": "Написання",
"Default format": "Формат за замовчуванням",
"Rich text (HTML)": "Форматований текст (HTML)",
"Plain text": "Звичайний текст",
"Quote original message in replies": "Цитувати початковий лист у відповідях",
"Place signature above quoted text": "Ставити підпис над цитатою",
"Attachment reminder": "Нагадування про вкладення",
"Warn when the message mentions an attachment but none is attached.": "Попереджати, якщо лист згадує вкладення, але його немає.",
"Spell check while typing": "Перевіряти орфографію під час введення",
"Confirm before deleting": "Питати перед видаленням",
"Show message snippets": "Показувати початок листа",
"Preview the first line of each message in the list.": "Показувати перший рядок кожного листа у списку.",
"Show sender avatars": "Показувати аватари відправників",
"Group messages from the same thread together.": "Об'єднувати листи одного листування.",
"After archiving or deleting": "Після архівування або видалення",
"Ask before showing (recommended)": "Питати перед показом (рекомендовано)",
"Always (all messages)": "Завжди (усі листи)",
"Show automatically from my contacts": "Автоматично для моїх контактів",
"Immediately when opened": "Одразу під час відкриття",
"After 2 seconds": "Через 2 секунди",
"After 5 seconds": "Через 5 секунд",
"Never automatically": "Ніколи автоматично",
"When someone requests a read receipt": "Коли запитують сповіщення про прочитання",
"Ask me on each message": "Питати для кожного листа",
"5 seconds": "5 секунд",
"8 seconds": "8 секунд",
"15 seconds": "15 секунд",
"30 seconds": "30 секунд",
"Locale": "Регіон",
"Language": "Мова",
"Interface language": "Мова інтерфейсу",
"Language & region": "Мова та регіон",
"Date format": "Формат дати",
"Time format": "Формат часу",
"Time zone": "Часовий пояс",
"Week starts on": "Тиждень починається з",
"Monday": "Понеділок",
"Tuesday": "Вівторок",
"Wednesday": "Середа",
"Thursday": "Четвер",
"Friday": "П'ятниця",
"Saturday": "Субота",
"Sunday": "Неділя",
"12-hour clock (6:23 PM)": "12-годинний формат (6:23 PM)",
"24-hour clock (18:23)": "24-годинний формат (18:23)",
"Browser default ({zone})": "Як у браузері ({zone})",
"Default ({zone})": "За замовчуванням ({zone})",
"Automatic ({example})": "Автоматично ({example})",
"Automatic ({locale})": "Автоматично ({locale})",
"Automatic": "Автоматично",
"Preview: {example}": "Приклад: {example}",
"Dates, times and month names follow this choice.": "Дати, час і назви місяців залежать від цього вибору.",
"Your mail server reports {name} ({tag}).": "Ваш поштовий сервер повідомляє {name} ({tag}).",
"Your mail server does not report a locale, so the browser's is used.": "Ваш поштовий сервер не повідомляє мову, тому використовується мова браузера.",
"Dates": "Дати",
"Date": "Дата",
"Time": "Час",
"When": "Коли",
"Then": "Потім",
"then": "потім",
"Theme": "Тема",
"Accent color": "Акцентний колір",
"Color": "Колір",
"Colour": "Колір",
"Text color": "Колір тексту",
"Density & text": "Щільність і текст",
"Display density": "Щільність відображення",
"Comfortable": "Вільна",
"Cozy (default)": "Середня (за замовчуванням)",
"Compact": "Щільна",
"Text size": "Розмір тексту",
"Font size": "Розмір шрифту",
"Small": "Дрібний",
"Medium": "Середній",
"Large": "Великий",
"Huge": "Дуже великий",
"Sidebar": "Бічна панель",
"Show labels in the sidebar": "Показувати мітки на бічній панелі",
"Collapse sidebar to icons": "Згорнути бічну панель до значків",
"Apply the theme to messages too": "Застосовувати тему й до листів",
"Swiping": "Жести проведення",
"Swipe left": "Провести ліворуч",
"Swipe right": "Провести праворуч",
"Backup": "Резервна копія",
"Export settings": "Експорт налаштувань",
"Import settings": "Імпорт налаштувань",
"Settings imported": "Налаштування імпортовано",
"Invalid settings file": "Хибний файл налаштувань",
"Reset to defaults": "Скинути до значень за замовчуванням",
"Default mail app": "Поштова програма за замовчуванням",
"Documentation": "Документація",
"About ihasmail": "Про ihasmail",
"About": "Про програму",
"Server": "Сервер",
"Server capabilities": "Можливості сервера",
"Accounts": "Облікові записи",
"Account": "Обліковий запис",
"Max upload": "Максимальне вивантаження",
"{size} MB": "{size} МБ",
"KB": "КБ",
"Image privacy proxy": "Проксі приватності зображень",
"enabled": "увімкнено",
"disabled": "вимкнено",
"Enabled": "Увімкнено",
"active": "активний",
"hidden": "прихована",
"connected": "підключено",
"reconnecting…": "перепідключення…",
"AGPL-3.0 source": "Вихідний код AGPL-3.0",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "Профілі відправника та підписи",
"Add identity": "Додати профіль",
"Delete identity": "Видалити профіль",
"Make default": "Зробити основним",
"Default": "Основний",
"Show when composing": "Показувати під час написання",
"Hide when composing": "Приховувати під час написання",
"Signature": "Підпис",
"Your signature…": "Ваш підпис…",
"Reply-To": "Зворотна адреса",
"Reply-To (optional)": "Зворотна адреса (необов'язково)",
"Reply-To: {addresses}": "Зворотна адреса: {addresses}",
"Replies go to…": "Відповіді надходять на…",
"Set a Reply-To address": "Вказати зворотну адресу",
"{email} is now your default identity": "{email} тепер ваш основний профіль",
"Templates": "Шаблони",
"New template": "Новий шаблон",
"Delete template": "Видалити шаблон",
"Insert template": "Вставити шаблон",
"Template text…": "Текст шаблону…",
"Subject: {subject}": "Тема: {subject}",
"Filters & rules": "Фільтри та правила",
"Filters unavailable": "Фільтри недоступні",
"Rules": "Правила",
"Rule name": "Назва правила",
"New rule": "Нове правило",
"Delete rule": "Видалити правило",
"No filters yet": "Фільтрів поки немає",
"Add condition": "Додати умову",
"Remove condition": "Прибрати умову",
"Add action": "Додати дію",
"Remove action": "Прибрати дію",
"all of the following match": "виконуються всі умови",
"any of the following match": "виконується будь-яка з умов",
"contains": "містить",
"does not contain": "не містить",
"is": "дорівнює",
"is not": "не дорівнює",
"matches (wildcards * ?)": "збігається з (шаблони * ?)",
"does not match": "не збігається з",
"matches regex": "збігається з регулярним виразом",
"does not match regex": "не збігається з регулярним виразом",
"exists": "існує",
"does not exist": "не існує",
"is larger than": "більше ніж",
"is smaller than": "менше ніж",
"Stop processing more rules": "Припинити обробку решти правил",
"keep copy": "залишити копію",
"Forward to": "Переслати на",
"Reject with message": "Відхилити з повідомленням",
"Scripts": "Скрипти",
"Scripts (advanced)": "Скрипти (для досвідчених)",
"Script name": "Назва скрипту",
"New script": "Новий скрипт",
"Delete script": "Видалити скрипт",
"Sieve source": "Вихідний код Sieve",
"Preview generated Sieve script": "Переглянути створений скрипт Sieve",
"Start with rules": "Почати з правил",
"Switch to rules?": "Перейти до правил?",
"Create filter": "Створити фільтр",
"Filter messages like this": "Фільтрувати схожі листи",
"Filter messages like this…": "Фільтрувати схожі листи…",
"Also apply to existing messages in": "Застосувати й до листів у",
"keyword (e.g. $important, work)": "ключове слово (наприклад, $important, work)",
"Other header…": "Інший заголовок…",
"Out of office": "Автовідповідь про відсутність",
"Auto-reply enabled": "Автовідповідь увімкнено",
// ── Security, sessions, notifications ──────────────────────────────
"Security & sessions": "Безпека та сеанси",
"Password": "Пароль",
"Your password": "Ваш пароль",
"Current password": "Поточний пароль",
"New password": "Новий пароль",
"Confirm new password": "Підтвердьте новий пароль",
"Current code": "Поточний код",
"Code from your authenticator": "Код з програми-автентифікатора",
"Two-factor authentication": "Двофакторна автентифікація",
"Turn off two-factor authentication": "Вимкнути двофакторну автентифікацію",
"Your password alone will be enough to sign in again.": "Для входу знову буде достатньо самого пароля.",
"App passwords": "Паролі програм",
"New app password for": "Новий пароль програми для",
"Your new app password": "Ваш новий пароль програми",
"Secret": "Секрет",
"Thunderbird on my laptop": "Thunderbird на ноутбуці",
"Active webmail sessions": "Активні сеанси вебпошти",
"Sign out": "Вийти",
"Sign out here": "Вийти тут",
"Sign out all other sessions": "Завершити всі інші сеанси",
"Signed in as": "Вхід виконано як",
"This is my own device": "Це мій власний пристрій",
"this device": "цей пристрій",
"Device": "Пристрій",
"IP": "IP",
"Last active": "Остання активність",
"Created": "Створено",
"Expires": "Спливає",
"Status": "Стан",
"Online": "У мережі",
"Reason": "Причина",
"Type": "Тип",
"Email or username": "Адреса або ім'я користувача",
"Use your usual address as the username.": "Як ім'я користувача вкажіть свою звичайну адресу.",
"Fast, friendly webmail. Your mailbox, your way.": "Швидка та зручна вебпошта. Ваша скринька — на ваш смак.",
"Notifications": "Сповіщення",
"Notifications are blocked in your browser settings.": "Сповіщення заблоковано в налаштуваннях браузера.",
"Not supported in this browser.": "Не підтримується в цьому браузері.",
"Desktop notifications while ihasmail is open": "Системні сповіщення, поки ihasmail відкрито",
"Notify me even when ihasmail is closed": "Сповіщати, навіть коли ihasmail закрито",
"Play a sound for new mail": "Звук при новому листі",
"Test notification": "Перевірити сповіщення",
"Background notifications are on": "Фонові сповіщення увімкнено",
"The tab title and favicon always show your unread Inbox count.": "Заголовок вкладки та значок завжди показують кількість непрочитаних у вхідних.",
"Live updates are delivered via JMAP push ({state}).": "Оновлення в реальному часі надходять через JMAP push ({state}).",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "Показує системне сповіщення, коли до вхідних надходить лист, а вкладка у фоні.",
// ── Editor, search, shortcuts, misc ────────────────────────────────
"Formatting": "Форматування",
"Formatting options": "Параметри форматування",
"Remove formatting": "Прибрати форматування",
"Bold (Ctrl+B)": "Жирний (Ctrl+B)",
"Italic (Ctrl+I)": "Курсив (Ctrl+I)",
"Underline (Ctrl+U)": "Підкреслений (Ctrl+U)",
"Strikethrough": "Закреслений",
"Highlight": "Виділення кольором",
"Bulleted list": "Маркований список",
"Numbered list": "Нумерований список",
"Increase indent": "Збільшити відступ",
"Decrease indent": "Зменшити відступ",
"Align left": "За лівим краєм",
"Align right": "За правим краєм",
"Center": "По центру",
"Quote": "Цитата",
"Code block": "Блок коду",
"Normal text": "Звичайний текст",
"Insert link (Ctrl+K)": "Вставити посилання (Ctrl+K)",
"Insert image": "Вставити зображення",
"Link": "Посилання",
"List": "Список",
"Emoji": "Емодзі",
"Write your message…": "Напишіть лист…",
"Search": "Пошук",
"Search mail": "Пошук поштою",
"Advanced search": "Розширений пошук",
"Keyboard shortcuts": "Сполучення клавіш",
"Keyboard shortcuts (?)": "Сполучення клавіш (?)",
"Shortcuts": "Сполучення",
"Go to": "Перейти",
"Menu": "Меню",
"Options": "Параметри",
"Send options": "Параметри надсилання",
"Name": "Ім'я",
"Email": "Адреса",
"Email address": "Адреса електронної пошти",
"Description": "Опис",
"Location": "Місце",
"Visibility": "Видимість",
"Private": "Особисте",
"Work": "Робота",
"Loading…": "Завантаження…",
"None": "Немає",
"optional": "необов'язково",
"Always show": "Завжди показувати",
"to": "кому",
"Received": "Отримано",
"In-Reply-To": "In-Reply-To",
"References": "References",
"Add label / keyword": "Додати мітку або ключове слово",
"Manage labels": "Керування мітками",
"Create “{name}”": "Створити «{name}»",
"Type a name to create your first label.": "Введіть назву, щоб створити першу мітку.",
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Мітки — це ключові слова IMAP, які зберігаються в самих листах і синхронізуються з іншими клієнтами. Назви та кольори залишаються в цьому браузері.",
"New label": "Нова мітка",
"Delete label": "Видалити мітку",
"PDF": "PDF",
"Large attachments may be rejected by some servers": "Деякі сервери відхиляють великі вкладення",
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Зображення зберігаються у ваших Файлах (тека «ihasmail») і вставляються під час надсилання.",
"Thanks for your message. I'm away until … and will reply when I'm back.": "Дякую за лист. Мене немає до … і я відповім після повернення.",
"Automatically reply to people who email you while you're away. Each sender gets at most one reply.": "Автоматично відповідати тим, хто напише вам за час відсутності. Кожен відправник отримає не більше однієї відповіді.",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "Автоматично сортувати вхідну пошту. Правила виконуються на сервері (Sieve), тому працюють в усіх клієнтах.",
"Canned responses you can insert into any message from the composer's template button.": "Готові відповіді, які можна вставити в будь-який лист кнопкою шаблонів у редакторі.",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "Створіть правило, щоб складати розсилки до теки, позначати важливих відправників або пересилати пошту.",
"Advanced: manage raw Sieve scripts. Only one script can be active at a time.": "Для досвідчених: робота зі скриптами Sieve напряму. Одночасно активний лише один скрипт.",
"Only part of your filter script arrived.": "Скрипт фільтрації отримано не повністю.",
"Your active script “{name}” was written by hand.": "Ваш активний скрипт «{name}» написано вручну.",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "Активний інший скрипт («{name}»). Якщо зберегти правила тут, замість нього увімкнеться скрипт «ihasmail».",
"“{name}” will be deactivated (not deleted) and a new “ihasmail” script will take over.": "«{name}» буде вимкнено (не видалено), а його місце займе новий скрипт «ihasmail».",
"Sieve filtering is not available for this account.": "Фільтрація Sieve недоступна для цього облікового запису.",
"Sieve filtering is not enabled for this account.": "Фільтрацію Sieve не увімкнено для цього облікового запису.",
"Vacation responses are not available for this account.": "Автовідповіді про відсутність недоступні для цього облікового запису.",
"This account does not have the JMAP calendars capability.": "Цей обліковий запис не має можливості JMAP «календарі».",
"This account does not have the JMAP contacts capability.": "Цей обліковий запис не має можливості JMAP «контакти».",
"This account does not have the JMAP file storage capability.": "Цей обліковий запис не має можливості JMAP «сховище файлів».",
// ── Labels held in constants, translated where they render ─────────
"Add": "Додати",
"Create subfolders": "Створювати вкладені теки",
"Dark": "Темна",
"Light": "Світла",
"Match system": "Як у системі",
"Day.Month.Year": "День.Місяць.Рік",
"Day/Month/Year": "День/Місяць/Рік",
"Month/Day/Year": "Місяць/День/Рік",
"Year-Month-Day (ISO 8601)": "Рік-Місяць-День (ISO 8601)",
"Edit all": "Змінювати все",
"Edit contents": "Змінювати вміст",
"Edit own": "Змінювати своє",
"Flag": "Позначати",
"Mark read": "Позначати прочитаним",
"Private props": "Особисті властивості",
"Read": "Читати",
"Read events": "Читати події",
"RSVP": "Відповідати на запрошення",
"See free/busy": "Бачити зайнятість",
"Share": "Відкривати доступ",
"Write": "Писати",
"Live updates connected": "Оновлення в реальному часі підключено",
"Live updates reconnecting…": "Перепідключення оновлень у реальному часі…",
"Live updates off — checking periodically instead": "Оновлення в реальному часі вимкнено — виконується періодична перевірка",
"Mark as read / unread": "Позначити як прочитане / непрочитане",
"Star / unstar": "Позначити / зняти позначку",
"Report spam / not spam": "Позначити як спам / не спам",
"Report spam": "Позначити як спам",
"Not spam": "Не спам",
"Nothing": "Нічого",
"Later today": "Сьогодні пізніше",
"Tomorrow morning": "Завтра вранці",
"Tomorrow afternoon": "Завтра вдень",
"Monday morning": "У понеділок вранці",
"Open draft": "Відкрити чернетку",
"Undo": "Скасувати",
"Deleted Items": "Кошик",
"Choose a date": "Виберіть дату",
"Choose a date and time": "Виберіть дату й час",
"Pick date and time…": "Вибрати дату й час…",
"After": "Після",
"Before": "До",
// ── Folder names shown for a JMAP role (see lib/mailboxName.ts) ────
"folder\u0004Inbox": "Вхідні",
"folder\u0004Archive": "Архів",
"folder\u0004Drafts": "Чернетки",
"folder\u0004Sent": "Надіслані",
"folder\u0004Deleted Items": "Кошик",
"folder\u0004Junk Mail": "Спам",
"folder\u0004Important": "Важливе",
"folder\u0004All mail": "Уся пошта",
"folder": "тека",
"“{name}” moved into “{parent}”": "«{name}» переміщено до «{parent}»",
"“{name}” moved to the top level": "«{name}» переміщено на верхній рівень",
"Could not move “{name}”: {reason}": "Не вдалося перемістити «{name}»: {reason}",
"Delete “{name}”?": "Видалити «{name}»?",
"Rename folder": "Перейменувати теку",
"Search: {query}": "Пошук: {query}",
"No conversation selected": "Листування не вибрано",
"Drop here for the top level": "Перетягніть сюди, щоб винести на верхній рівень",
// ── Longer prose ───────────────────────────────────────────────────
"Search mail (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)": "Пошук поштою (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)",
"Settings → Filters & rules": "Налаштування → Фільтри та правила",
"Open the Mail view to see all shortcuts.": "Відкрийте розділ «Пошта», щоб побачити всі сполучення клавіш.",
"Gmail-style shortcuts are always on. Press {key} anywhere to see this list.": "Сполучення клавіш у стилі Gmail завжди увімкнено. Натисніть {key} будь-де, щоб побачити цей список.",
"Select a conversation to read it here · Press {key} for shortcuts": "Виберіть листування, щоб прочитати його тут · {key} — сполучення клавіш",
"Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Порада: натисніть {key} на листуванні, щоб додати мітки. Шукайте через {operator}.",
"A fast, friendly, open-source webmail for {server}, built on JMAP.": "Швидка та зручна вебпошта з відкритим кодом для {server}, побудована на JMAP.",
"Defaults for the calendar views and new events.": "Значення за замовчуванням для виглядів календаря та нових подій.",
"Replies will go to this address instead of the From address": "Відповіді надходитимуть на цю адресу, а не на адресу відправника",
"Replies to mail sent from this identity go here instead of the From address.": "Відповіді на листи з цього профілю надходять сюди, а не на адресу відправника.",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "Новий профіль має використовувати адресу, з якої цьому обліковому запису дозволено надсилати (псевдоніми налаштовуються на сервері).",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "Не пропонується під час написання листа. Адреса й далі отримує пошту, і з неї знову можна надсилати, якщо показати її назад.",
"Each identity is a sender address with its own name, Reply-To and signature. The default identity is preselected when you compose; set a Reply-To when replies should go somewhere other than the From address.": "Кожен профіль — це адреса відправника зі своїм іменем, зворотною адресою та підписом. Основний профіль підставляється під час написання листа; вкажіть зворотну адресу, якщо відповіді мають надходити не на адресу відправника.",
"This signature is larger than the server's {limit}-byte limit. ihasmail will keep the full version in your Files and store a short text fallback on the server — other mail clients will see the plain-text version.": "Цей підпис більший за серверне обмеження в {limit} байт. ihasmail збереже повну версію у ваших Файлах, а на сервері залишить короткий текстовий варіант — інші поштові клієнти побачать саме його.",
"Outlook-style categories you can assign to events from the right-click menu or the event editor. The category name is stored on the event, so it syncs to other clients.": "Категорії у стилі Outlook, які можна призначати подіям через контекстне меню або редактор події. Назва категорії зберігається в самій події й синхронізується з іншими клієнтами.",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colours of its own does as well, instead of sitting on a white card. Messages that style themselves are left exactly as the sender designed them.": "Листи у звичайному тексті вже відповідають темі. З цим налаштуванням їй відповідають і HTML-листи без власних кольорів, замість того щоб показуватися на білому тлі. Листи з власним оформленням залишаються саме такими, якими їх задумав відправник.",
"This is separate from {setting} in General, which decides how dates, times and numbers are written. You can read an English interface with German dates, or the other way round.": "Це не те саме, що {setting} у розділі «Загальні», де визначається, як записуються дати, час і числа. Можна читати англійський інтерфейс з українськими датами — або навпаки.",
"On a touchscreen, drag a message sideways to act on it. Each direction can do one thing, or nothing. These follow your account, so a phone and a tablet agree; a mouse ignores them and keeps dragging messages into folders instead.": "На сенсорному екрані проведіть по листу вбік, щоб виконати над ним дію. Кожен напрямок може робити щось одне — або нічого. Налаштування прив'язане до облікового запису, тож телефон і планшет поводяться однаково; миша його ігнорує, і листи, як і раніше, перетягуються до тек.",
"This screen has no touchscreen, so nothing here changes what it does. Your phone or tablet will pick these up.": "Цей екран не сенсорний, тому тут нічого не зміниться. Налаштування підхоплять телефон або планшет.",
"Holding a message selects it, and holding a folder opens its menu. Pull the top of the message list down to check for new mail.": "Довге натискання на листі позначає його, а на теці — відкриває її меню. Потягніть список листів донизу, щоб перевірити пошту.",
"A receipt tells whoever asked that this address is live and when the message was read, and the sender chooses where it goes — so there is no automatic option. Bulk mail, mailing lists and anything marked auto-submitted are never offered one at all.": "Сповіщення повідомляє тому, хто його запитав, що адреса діюча і коли лист було прочитано, а відправник сам обирає, куди його надіслати, — тому автоматичного варіанта немає. Для масових розсилок, списків розсилки та всього позначеного як надіслане автоматично воно не пропонується взагалі.",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API — you can still make ihasmail the default from your operating system if you install it as an app.": "Цей браузер не вміє реєструвати програми для посилань {scheme}. Зокрема, у Safari немає такого інтерфейсу — але ihasmail усе одно можна зробити програмою за замовчуванням засобами операційної системи, встановивши його як застосунок.",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "Для реєстрації посилань {scheme} потрібне захищене з'єднання (HTTPS).",
"Open {scheme} links — in web pages, documents and other apps — in ihasmail instead of a desktop mail client. Your browser will ask you to confirm, and you can change it later in its own settings (Chrome: Settings Privacy and security Site settings Protocol handlers; Firefox: Settings General Applications).": "Відкривати посилання {scheme} — на вебсторінках, у документах та інших програмах — у ihasmail, а не в поштовій програмі на комп'ютері. Браузер попросить підтвердження, і згодом це можна змінити в його налаштуваннях (Chrome: Налаштування › Конфіденційність і безпека › Налаштування сайтів › Обробники протоколів; Firefox: Налаштування › Загальні › Програми).",
"Requested in this browser. Whether it took effect is up to the browser — check its settings if mail links still open elsewhere.": "Запитано в цьому браузері. Чи спрацювало це, вирішує він сам — перевірте його налаштування, якщо поштові посилання й далі відкриваються деінде.",
"For a system-wide default, install ihasmail as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer ihasmail directly wherever it asks which mail app to use.": "Щоб задати програму за замовчуванням для всієї системи, спершу встановіть ihasmail як застосунок (у Chrome — значок встановлення в адресному рядку). Після цього операційна система зможе пропонувати ihasmail усюди, де запитує, якою поштовою програмою скористатися.",
"Needs a browser with the Push API and a mail server that publishes a push key.": "Потрібен браузер із Push API та поштовий сервер, який публікує push-ключ.",
"Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.": "Поштовий сервер доставляє їх прямо в браузер, тому вони надходять без відкритої вкладки ihasmail і містять відправника й тему. Браузер при цьому має бути запущений: якщо закрити його повністю, сповіщення почекають і надійдуть під час наступного запуску.",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "Поштовий сервер може розбудити цей браузер, але не повідомить відправника й тему. Браузер при цьому має бути запущений.",
"This is what a new-mail notification looks like.": "Так виглядає сповіщення про новий лист.",
"You're signed in as {user}. Your password is never stored in the browser; the server keeps it encrypted per-session for talking to Stalwart.": "Ви увійшли як {user}. Пароль ніколи не зберігається в браузері: сервер тримає його зашифрованим на час сеансу, щоб спілкуватися зі Stalwart.",
"App passwords are managed by your mail administrator.": "Паролями програм керує ваш поштовий адміністратор.",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "Зміна пароля завершує інші сеанси вебпошти. Паролі програм продовжують працювати.",
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "Для цього облікового запису увімкнено двофакторну автентифікацію. ihasmail поки не вміє входити за кодом, тому для входу на іншому пристрої потрібен пароль програми — або двофакторну автентифікацію можна вимкнути тут.",
"A separate password for a mail app or device, which you can revoke on its own. App passwords skip two-factor codes, so they keep working in apps that can't ask for one.": "Окремий пароль для поштової програми чи пристрою, який можна відкликати окремо. Паролі програм обходять двофакторні коди й тому працюють там, де запитати код неможливо.",
"Copy it into {name} now — it isn't shown again.": "Скопіюйте його до {name} зараз — більше він не показується.",
"No other users found in the directory, so nobody new can be added. Sharing already in place is listed below and can still be removed.": "У каталозі не знайдено інших користувачів, тому додати нікого. Уже відкритий доступ перелічено нижче, і його й далі можна закрити.",
"Stalwart does not publish its version number to mail clients, so ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart не повідомляє поштовим клієнтам номер версії, тому ihasmail показує редакцію, якщо сервер її називає. ihasmail потребує версію 0.16 або новішу, і вхід зі старішою не виконується.",
"It {damage}, so the rules in it can't be shown or edited — saving what did arrive would write it back over the rest. Reload the page to try again. Your rules are still on the server; nothing here has changed them.": "Він {damage}, тому правила в ньому не можна показати чи змінити: збереження отриманої частини затерло б решту. Перезавантажте сторінку й спробуйте знову. Ваші правила залишаються на сервері, тут їх ніщо не змінювало.",
"The visual rule editor only manages scripts it created. You can edit the script in the {tab} tab, or start fresh with rules (the existing script will be kept but deactivated).": "Візуальний редактор правил працює лише зі скриптами, які створив сам. Скрипт можна змінити на вкладці {tab} або почати заново з правил (наявний скрипт збережеться, але буде вимкнено).",
"Your filter script {damage}, so only part of it arrived. Adding a rule would write that part back over the whole thing. Reload the page and try again.": "Ваш скрипт фільтрації {damage}, тому отримано лише його частину. Додавання правила затерло б цією частиною весь скрипт. Перезавантажте сторінку й спробуйте знову.",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "Скрипт фільтрації зараз не вдалося прочитати, тому додавання правила ризикує його перезаписати. Перезавантажте сторінку й спробуйте знову.",
"Your active Sieve script was written by hand, so rules can't be added automatically. Open {where} to edit the script or switch to managed rules.": "Ваш активний скрипт Sieve написано вручну, тому правила не можна додати автоматично. Відкрийте {where}, щоб змінити скрипт або перейти до керованих правил.",
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Тут показано лише мови, якими перекладено ihasmail, тому список зростає разом із перекладами, а не випереджає їх: мова без текстів змусила б сторінку стверджувати, що вона написана мовою, якою не є.",
"tell us about it": "повідомте нам",
"This translation was generated by AI and has not been checked by a native speaker, so it is marked Beta until somebody who speaks it signs it off. Anything that reads wrongly is worth reporting — {report}.": "Цей переклад зроблено ШІ й не перевірено носієм мови, тому його позначено як Beta, доки хтось його не підтвердить. Про все, що звучить неправильно, варто повідомити — {report}.",
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} — це палітра з {site}, з якою починає новий обліковий запис. Тема темна, тому скрізь, де це важливо, вважається темною, а акцентний колір нижче застосовується поверх неї.",
"ihasmail's own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "Власна версія ihasmail — це дата коміту, з якого його зібрано, і вказівка, звідки цей коміт узявся: {example} зібрано з коміту від 30 серпня 2026 року, що надійшов через pull request 129. Коміт, який надійшов інакше, несе замість цього короткий SHA — {sha}. Версія навмисно нічого не повідомляє про Stalwart; те, що цій збірці потрібно від сервера, вказано рядком вище.",
},
plurals: {
/*
* Ukrainian takes the same three forms as Russian and the same rule, but
* not the same words. Sharing a plural structure is not sharing a
* language, and a catalogue produced by adapting the Russian one is the
* thing a Ukrainian reader would notice first.
*/
"{n} messages": { one: "{n} лист", few: "{n} листи", many: "{n} листів", other: "{n} листа" },
"{n} conversations": { one: "{n} листування", few: "{n} листування", many: "{n} листувань", other: "{n} листування" },
"{n} selected": { one: "Вибрано: {n}", few: "Вибрано: {n}", many: "Вибрано: {n}", other: "Вибрано: {n}" },
},
};
+869
View File
@@ -0,0 +1,869 @@
import type { Catalog } from "@/lib/i18n";
/**
* Chinese (Simplified) — generated by AI, and not reviewed by a native speaker.
*
* Marked Beta, with the report link doing the job a native speaker would. A
* missing string renders its English source, so deleting a bad entry is a
* valid fix.
*
* ── Decisions this file is consistent about ──────────────────────────────
*
* This is Simplified Chinese, and the tag says so. It is not a stand-in for
* Traditional: the script differs, and so does a good deal of the software
* vocabulary — 软件 against 軟體, 文件 against 檔案, 网络 against 網路. A
* zh-Hant catalogue would be a separate file, not a conversion of this one,
* because converting the characters without changing the words produces text
* that is readable and obviously foreign.
*
* Plurals: there are none. `Intl.PluralRules("zh-Hans")` returns `other` for
* every number, so each counted string carries a single form. That is not a
* gap in the catalogue — it is the language, and the machinery handles it by
* asking rather than assuming. Measure characters, not words: Chinese has no
* spaces, so a string that fits in English can be wider or much narrower here.
*
* Register: **您** where the reader is addressed directly. Chinese interfaces
* usually drop the pronoun entirely and most of this file does, which sidesteps
* the choice; 您 rather than 你 in the sentences that cannot, matching the
* formal address every other catalogue took.
*
* Terminology, fixed once so it cannot drift:
*
* Inbox 收件箱 Archive (verb) 归档
* Drafts 草稿 Delete 删除
* Sent 已发送 Move to 移动到
* Deleted Items 已删除邮件 Reply 回复
* Junk / Spam 垃圾邮件 Reply all 全部回复
* Folder 文件夹 Forward 转发
* Label 标签 Star 标星
* Conversation 会话 Read / unread 已读 / 未读
* Message 邮件 Settings 设置
* Attachment 附件 Signature 签名
* Contact 联系人 Identity 发件身份
*
* Product names are never translated: ihasmail, Stalwart, JMAP, Sieve, vCard.
*/
export const catalog: Catalog = {
strings: {
// ── Actions ────────────────────────────────────────────────────────
"Archive": "归档",
"Archive (e)": "归档 (e)",
"Delete": "删除",
"Delete (#)": "删除 (#)",
"Reply": "回复",
"Reply (r)": "回复 (r)",
"Reply all": "全部回复",
"Forward": "转发",
"Move to…": "移动到…",
"Move to (v)": "移动到 (v)",
"Move to folder": "移动到文件夹",
"Move here": "移动到这里",
"Mark as read": "标为已读",
"Mark as read (Shift+I)": "标为已读 (Shift+I)",
"Mark as unread": "标为未读",
"Mark as unread (Shift+U)": "标为未读 (Shift+U)",
"Mark all as read": "全部标为已读",
"Mark all as read, incl. subfolders": "全部标为已读,含子文件夹",
"Star": "标星",
"Labels": "标签",
"Labels (l)": "标签 (l)",
"Label as": "添加标签",
"Label…": "标签…",
"Compose": "写邮件",
"Compose message": "写新邮件",
"Send": "发送",
"Send at": "发送时间",
"Cancel send": "取消发送",
"Schedule send": "定时发送",
"Save": "保存",
"Save & activate": "保存并启用",
"Save & close (Esc)": "保存并关闭 (Esc)",
"Save as template": "另存为模板",
"Save draft now": "立即保存草稿",
"Cancel": "取消",
"Close": "关闭",
"Done": "完成",
"Continue": "继续",
"Edit": "编辑",
"Edit…": "编辑…",
"Rename": "重命名",
"Remove": "移除",
"Restore": "恢复",
"Retry": "重试",
"Reload": "重新加载",
"Refresh": "刷新",
"Copy": "复制",
"Copy email address": "复制邮箱地址",
"Download": "下载",
"Download all": "全部下载",
"Download (.eml)": "下载 (.eml)",
"Download latest as .eml": "将最新一封下载为 .eml",
"Upload": "上传",
"Upload files…": "上传文件…",
"Print": "打印",
"Print conversation": "打印会话",
"Undo (Ctrl+Z)": "撤销 (Ctrl+Z)",
"Redo": "重做",
"Dismiss": "关闭",
"Discard changes": "放弃更改",
"Discard draft": "放弃草稿",
"Duplicate": "创建副本",
"Validate": "检查",
"Revoke": "吊销",
"Turn off": "关闭",
"Clear": "清空",
"Clear selection": "取消选择",
"Clear custom colour": "清除自定义颜色",
"Select": "选择",
"Select all": "全选",
"Unsubscribe": "退订",
"Share…": "共享…",
"Stop sharing": "停止共享",
"Open": "打开",
"Open in new tab": "在新标签页中打开",
"Open in calendar": "在日历中打开",
"Back": "返回",
"Back (u)": "返回 (u)",
"Back to list": "返回列表",
"Back to my files": "返回我的文件",
"Go back to the list": "返回列表",
"Next": "下一个",
"Previous": "上一个",
"More": "更多",
"More actions": "更多操作",
"More options": "更多选项",
"Move up": "上移",
"Move down": "下移",
"Drag to reorder": "拖动以调整顺序",
"Right-click for options": "右键查看选项",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "邮件",
"Message": "邮件",
"Messages": "邮件",
"Message body": "邮件正文",
"Message headers": "邮件头",
"Message size": "邮件大小",
"Message-ID": "Message-ID",
"Original message": "原始邮件",
"Delete this message": "删除这封邮件",
"New message to this address": "写邮件到该地址",
"Conversation view": "会话视图",
"Draft": "草稿",
"Unread": "未读",
"Unread only": "仅未读",
"All mail": "全部邮件",
"Sender": "发件人",
"Sender domain": "发件人域名",
"Recipients": "收件人",
"From": "发件人",
"To": "收件人",
"Cc": "抄送",
"Bcc": "密送",
"Subject": "主题",
"Subject (optional)": "主题(可选)",
"Body": "正文",
"Body text": "正文文本",
"Attach files": "添加附件",
"Attach from Files": "从「文件」添加附件",
"Remove attachment": "移除附件",
"Has attachment": "含附件",
"Has the words": "包含字词",
"Header name": "邮件头名称",
"Show headers": "显示邮件头",
"Show original": "显示原始邮件",
"Show details": "显示详情",
"Show images": "显示图片",
"Remote images": "外部图片",
"Remote images are blocked to protect your privacy.": "为保护您的隐私,外部图片已被拦截。",
"Always from {email}": "始终显示来自 {email} 的图片",
"This looks like a mailing list.": "这看起来是一封邮件列表邮件。",
"This folder is empty": "此文件夹为空",
"This folder is empty.": "此文件夹为空。",
"Delete all spam now": "立即删除全部垃圾邮件",
"Deleting spam is permanent — it does not go to Deleted Items first.": "删除垃圾邮件不可恢复,不会先移入已删除邮件。",
"Keep in Inbox": "保留在收件箱",
"Newer (k)": "较新 (k)",
"Older (j)": "较旧 (j)",
"Open the next (older) conversation": "打开下一个(较旧的)会话",
"Open the previous (newer) conversation": "打开上一个(较新的)会话",
"Loading conversation…": "正在加载会话…",
"Important": "重要",
"Unverified": "未验证",
"Priority": "优先级",
"High": "高",
"Normal": "普通",
"Low": "低",
"to {recipients}": "收件人:{recipients}",
"From: {sender}": "发件人:{sender}",
"Waiting on the server — goes out {when}.": "正在服务器上等待,将于 {when} 发出。",
"Scheduled — click to clear the schedule": "已定时,点击可取消定时",
"Nothing scheduled": "没有定时邮件",
"The message waits on the server, so it goes out whether or not ihasmail is open.": "邮件在服务器上等待,无论 ihasmail 是否打开都会发出。",
"This server holds a message for up to {span}.": "此服务器最多可将邮件保留 {span}。",
"Date and time to send": "发送日期和时间",
"Undo send window": "撤销发送时限",
"Read receipt requested": "已请求已读回执",
"The sender asked for a read receipt.": "发件人请求了已读回执。",
"Request read receipt": "请求已读回执",
"Always request read receipts": "始终请求已读回执",
"Receipt": "回执",
"Never send one": "从不发送",
"Not this time": "这次不发送",
"It would go to {address}, which is not where the message came from.": "回执会发往 {address},而邮件并非来自该地址。",
"Use “Show original” for the complete raw message.": "使用「显示原始邮件」查看完整原文。",
// ── Folders, calendar, contacts, files ─────────────────────────────
"Folder": "文件夹",
"Folders": "文件夹",
"Folder options": "文件夹选项",
"New folder": "新建文件夹",
"New subfolder": "新建子文件夹",
"Delete folder": "删除文件夹",
"No matching folders": "没有匹配的文件夹",
"No subfolders here.": "这里没有子文件夹。",
"Type a folder name…": "输入文件夹名称…",
" New folder…": " 新建文件夹…",
"Create, rename and hide folders.": "创建、重命名和隐藏文件夹。",
"Show unsubscribed (hidden) folders": "显示未订阅(隐藏)的文件夹",
"Storage: {used} of {total} used.": "存储空间:已用 {used},共 {total}。",
"{used} of {total}": "{used} / {total}",
"Calendar": "日历",
"My calendars": "我的日历",
"New calendar": "新建日历",
"Calendar options": "日历选项",
"Calendar & contacts": "日历与联系人",
"Calendar is not available": "日历不可用",
"Event": "日程",
"New event": "新建日程",
"(new event)": "(新建日程)",
"New all-day event": "新建全天日程",
"Add title": "添加标题",
"Add location": "添加地点",
"Add to calendar": "添加到日历",
"Add to my calendar": "添加到我的日历",
"Remove from calendar": "从日历中移除",
"Remove from my calendar": "从我的日历中移除",
"All day": "全天",
"all-day": "全天",
"Starts": "开始",
"Starts (optional)": "开始(可选)",
"Ends": "结束",
"Ends (optional)": "结束(可选)",
"Day": "日",
"Week": "周",
"Month": "月",
"Agenda": "日程列表",
"Today": "今天",
"Go to day": "转到某天",
"Go to week": "转到某周",
"Previous month": "上个月",
"Next month": "下个月",
"Does not repeat": "不重复",
"Daily": "每天",
"Every weekday": "每个工作日",
"Yearly": "每年",
"Custom…": "自定义…",
"Weekly on {weekday}": "每周{weekday}",
"Monthly on day {day}": "每月 {day} 日",
"Repeat every": "重复间隔",
"Repeat until": "重复至",
"after N times": "重复 N 次后",
"on date": "到指定日期",
"never": "永不",
"day(s)": "天",
"week(s)": "周",
"month(s)": "个月",
"year(s)": "年",
"Reminders": "提醒",
"Add reminder": "添加提醒",
"Remove reminder": "移除提醒",
"Default reminder": "默认提醒",
"At time of event": "日程开始时",
"5 minutes before": "提前 5 分钟",
"10 minutes before": "提前 10 分钟",
"15 minutes before": "提前 15 分钟",
"30 minutes before": "提前 30 分钟",
"1 hour before": "提前 1 小时",
"1 day before": "提前 1 天",
"15 minutes": "15 分钟",
"30 minutes": "30 分钟",
"45 minutes": "45 分钟",
"1 hour": "1 小时",
"1.5 hours": "1.5 小时",
"2 hours": "2 小时",
"Default event length": "默认日程时长",
"Default view": "默认视图",
"Guests": "参与者",
"Add guests by name or email": "按姓名或邮箱添加参与者",
"Send invitation emails to guests": "向参与者发送邀请邮件",
"Going?": "是否参加?",
"Yes": "参加",
"No": "不参加",
"Maybe": "待定",
"Confirmed": "已确认",
"Tentative": "待定",
"Cancelled": "已取消",
"organizer": "组织者",
"Organizer: {name}": "组织者:{name}",
"Free": "空闲",
"Busy": "忙碌",
"Free/busy": "忙闲状态",
"Show as": "显示为",
"Availability on {date}": "{date} 的忙闲状态",
"Count all events as busy": "所有日程都计为忙碌",
"Only events I'm attending": "仅我参加的日程",
"Don't include in availability": "不计入忙闲状态",
"Meeting link": "会议链接",
"No events in the next 60 days.": "未来 60 天内没有日程。",
"Working hours": "工作时间",
"Working hours start": "工作时间开始",
"Working hours end": "工作时间结束",
"Colour categories": "颜色分类",
"Category": "分类",
"No category": "无分类",
"New category": "新建分类",
"Delete category": "删除分类",
"Manage categories…": "管理分类…",
"Use category color": "使用分类颜色",
"Use calendar color": "使用日历颜色",
"Use the default colour": "使用默认颜色",
"+{n} more": "还有 {n} 项",
"Contacts": "联系人",
"Contacts are not available": "联系人不可用",
"New contact": "新建联系人",
"Edit contact": "编辑联系人",
"Select a contact": "选择联系人",
"All contacts": "全部联系人",
"Search contacts": "搜索联系人",
"Search contacts to add…": "搜索要添加的联系人…",
"Loading contacts…": "正在加载联系人…",
"Add to contacts": "添加到联系人",
"Add to my contacts": "添加到我的联系人",
"Remove from my contacts": "从我的联系人中移除",
"Address book": "通讯录",
"Address books": "通讯录",
"All address books": "全部通讯录",
"My address books": "我的通讯录",
"New address book": "新建通讯录",
"No address books yet.": "还没有通讯录。",
"Choose from address books": "从通讯录中选择",
"Import vCard": "导入 vCard",
"Export all": "全部导出",
"Export book": "导出通讯录",
"Email group": "给该群组写邮件",
"Email everyone": "给所有人写邮件",
"Members": "成员",
"Members ({count})": "成员({count}",
"Group": "群组",
"· group": "· 群组",
"Person": "个人",
"First name": "名",
"Last name": "姓",
"Middle name": "中间名",
"More name fields": "更多姓名字段",
"Nickname": "昵称",
"Prefix": "称谓",
"Suffix": "后缀",
"Dr.": "博士",
"Jr.": "小",
"Display name": "显示名称",
"Job title": "职位",
"Organization": "组织",
"Company": "公司",
"Birthday": "生日",
"Notes": "备注",
"Website": "网站",
"Phone": "电话",
"Add phone": "添加电话",
"Add email": "添加邮箱",
"Add address": "添加地址",
"Address": "地址",
"Street": "街道",
"City": "城市",
"State / Region": "省 / 地区",
"Postal code": "邮政编码",
"Country": "国家/地区",
"Change photo": "更换照片",
"Remove photo": "移除照片",
"Updated {date}": "更新于 {date}",
"Modified": "修改时间",
"Search names and addresses": "搜索姓名和地址",
"Add a person or group…": "添加个人或群组…",
"Choose recipients": "选择收件人",
"Available to add": "可添加",
"vCard": "vCard",
"vCard attachment": "vCard 附件",
"Files": "文件",
"My files": "我的文件",
"File storage is not available": "文件存储不可用",
"Drag files here or use Upload.": "将文件拖到此处,或点击「上传」。",
"Shared": "已共享",
"Shared with me": "与我共享",
"Nothing is shared with you.": "没有人与您共享内容。",
"Not shared with anyone yet.": "尚未与任何人共享。",
"Check for new shares": "检查新的共享",
"Shared files are copied to your account when attached.": "添加为附件时,共享文件会复制到您的账户。",
"Viewer": "查看",
"Editor": "编辑",
"Size": "大小",
"Add files": "添加文件",
"Minimize": "最小化",
// ── Settings ───────────────────────────────────────────────────────
"Settings": "设置",
"All settings": "全部设置",
"Sections": "分区",
"General": "常规",
"Appearance": "外观",
"Make ihasmail yours.": "把 ihasmail 调成您喜欢的样子。",
"Reading": "阅读",
"Reading pane": "阅读窗格",
"Reading, sending and list behaviour. Settings are stored in this browser.": "阅读、发送和列表行为。设置保存在此浏览器中。",
"Right of the list": "列表右侧",
"Below the list": "列表下方",
"Hidden (open full width)": "隐藏(全宽打开)",
"Off (open messages full width)": "关闭(邮件全宽打开)",
"Off": "关闭",
"Composing": "写邮件",
"Default format": "默认格式",
"Rich text (HTML)": "富文本 (HTML)",
"Plain text": "纯文本",
"Quote original message in replies": "回复时引用原邮件",
"Place signature above quoted text": "将签名放在引用文本上方",
"Attachment reminder": "附件提醒",
"Warn when the message mentions an attachment but none is attached.": "邮件提到附件但未添加时提醒。",
"Spell check while typing": "输入时检查拼写",
"Confirm before deleting": "删除前确认",
"Show message snippets": "显示邮件摘要",
"Preview the first line of each message in the list.": "在列表中显示每封邮件的首行。",
"Show sender avatars": "显示发件人头像",
"Group messages from the same thread together.": "将同一会话的邮件归为一组。",
"After archiving or deleting": "归档或删除后",
"Ask before showing (recommended)": "显示前询问(推荐)",
"Always (all messages)": "始终显示(全部邮件)",
"Show automatically from my contacts": "联系人的邮件自动显示",
"Immediately when opened": "打开时立即标记",
"After 2 seconds": "2 秒后",
"After 5 seconds": "5 秒后",
"Never automatically": "从不自动标记",
"When someone requests a read receipt": "当有人请求已读回执时",
"Ask me on each message": "每封邮件都询问我",
"5 seconds": "5 秒",
"8 seconds": "8 秒",
"15 seconds": "15 秒",
"30 seconds": "30 秒",
"Locale": "区域",
"Language": "语言",
"Interface language": "界面语言",
"Language & region": "语言和地区",
"Date format": "日期格式",
"Time format": "时间格式",
"Time zone": "时区",
"Week starts on": "每周开始于",
"Monday": "星期一",
"Tuesday": "星期二",
"Wednesday": "星期三",
"Thursday": "星期四",
"Friday": "星期五",
"Saturday": "星期六",
"Sunday": "星期日",
"12-hour clock (6:23 PM)": "12 小时制 (6:23 PM)",
"24-hour clock (18:23)": "24 小时制 (18:23)",
"Browser default ({zone})": "浏览器默认({zone}",
"Default ({zone})": "默认({zone}",
"Automatic ({example})": "自动({example}",
"Automatic ({locale})": "自动({locale}",
"Automatic": "自动",
"Preview: {example}": "预览:{example}",
"Dates, times and month names follow this choice.": "日期、时间和月份名称将采用此设置。",
"Your mail server reports {name} ({tag}).": "您的邮件服务器报告为 {name}{tag})。",
"Your mail server does not report a locale, so the browser's is used.": "您的邮件服务器未报告语言,因此使用浏览器的设置。",
"Dates": "日期",
"Date": "日期",
"Time": "时间",
"When": "条件",
"Then": "则",
"then": "则",
"Theme": "主题",
"Accent color": "强调色",
"Color": "颜色",
"Colour": "颜色",
"Text color": "文字颜色",
"Density & text": "密度与文字",
"Display density": "显示密度",
"Comfortable": "宽松",
"Cozy (default)": "适中(默认)",
"Compact": "紧凑",
"Text size": "文字大小",
"Font size": "字号",
"Small": "小",
"Medium": "中",
"Large": "大",
"Huge": "特大",
"Sidebar": "侧边栏",
"Show labels in the sidebar": "在侧边栏中显示标签",
"Collapse sidebar to icons": "将侧边栏收起为图标",
"Apply the theme to messages too": "邮件也应用主题",
"Swiping": "滑动手势",
"Swipe left": "向左滑动",
"Swipe right": "向右滑动",
"Backup": "备份",
"Export settings": "导出设置",
"Import settings": "导入设置",
"Settings imported": "设置已导入",
"Invalid settings file": "设置文件无效",
"Reset to defaults": "恢复默认设置",
"Default mail app": "默认邮件应用",
"Documentation": "文档",
"About ihasmail": "关于 ihasmail",
"About": "关于",
"Server": "服务器",
"Server capabilities": "服务器功能",
"Accounts": "账户",
"Account": "账户",
"Max upload": "最大上传",
"{size} MB": "{size} MB",
"KB": "KB",
"Image privacy proxy": "图片隐私代理",
"enabled": "已启用",
"disabled": "已停用",
"Enabled": "已启用",
"active": "使用中",
"hidden": "已隐藏",
"connected": "已连接",
"reconnecting…": "正在重新连接…",
"AGPL-3.0 source": "AGPL-3.0 源代码",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "发件身份与签名",
"Add identity": "添加发件身份",
"Delete identity": "删除发件身份",
"Make default": "设为默认",
"Default": "默认",
"Show when composing": "写邮件时显示",
"Hide when composing": "写邮件时隐藏",
"Signature": "签名",
"Your signature…": "您的签名…",
"Reply-To": "回复地址",
"Reply-To (optional)": "回复地址(可选)",
"Reply-To: {addresses}": "回复地址:{addresses}",
"Replies go to…": "回复将发往…",
"Set a Reply-To address": "设置回复地址",
"{email} is now your default identity": "{email} 现在是您的默认发件身份",
"Templates": "模板",
"New template": "新建模板",
"Delete template": "删除模板",
"Insert template": "插入模板",
"Template text…": "模板内容…",
"Subject: {subject}": "主题:{subject}",
"Filters & rules": "过滤器与规则",
"Filters unavailable": "过滤器不可用",
"Rules": "规则",
"Rule name": "规则名称",
"New rule": "新建规则",
"Delete rule": "删除规则",
"No filters yet": "还没有过滤器",
"Add condition": "添加条件",
"Remove condition": "移除条件",
"Add action": "添加操作",
"Remove action": "移除操作",
"all of the following match": "满足以下全部条件",
"any of the following match": "满足以下任一条件",
"contains": "包含",
"does not contain": "不包含",
"is": "等于",
"is not": "不等于",
"matches (wildcards * ?)": "匹配(通配符 * ?",
"does not match": "不匹配",
"matches regex": "匹配正则表达式",
"does not match regex": "不匹配正则表达式",
"exists": "存在",
"does not exist": "不存在",
"is larger than": "大于",
"is smaller than": "小于",
"Stop processing more rules": "停止处理后续规则",
"keep copy": "保留副本",
"Forward to": "转发到",
"Reject with message": "拒收并回复消息",
"Scripts": "脚本",
"Scripts (advanced)": "脚本(高级)",
"Script name": "脚本名称",
"New script": "新建脚本",
"Delete script": "删除脚本",
"Sieve source": "Sieve 源码",
"Preview generated Sieve script": "预览生成的 Sieve 脚本",
"Start with rules": "改用规则",
"Switch to rules?": "切换到规则?",
"Create filter": "创建过滤器",
"Filter messages like this": "过滤类似邮件",
"Filter messages like this…": "过滤类似邮件…",
"Also apply to existing messages in": "同时应用于以下位置的现有邮件",
"keyword (e.g. $important, work)": "关键词(例如 $important、work",
"Other header…": "其他邮件头…",
"Out of office": "外出自动回复",
"Auto-reply enabled": "自动回复已启用",
// ── Security, sessions, sign-in ────────────────────────────────────
"Security & sessions": "安全与会话",
"Password": "密码",
"Your password": "您的密码",
"Current password": "当前密码",
"New password": "新密码",
"Confirm new password": "确认新密码",
"Current code": "当前验证码",
"Code from your authenticator": "身份验证器中的验证码",
"Two-factor authentication": "两步验证",
"Turn off two-factor authentication": "关闭两步验证",
"Your password alone will be enough to sign in again.": "之后仅凭密码即可重新登录。",
"App passwords": "应用专用密码",
"New app password for": "新建应用专用密码,用于",
"Your new app password": "您的新应用专用密码",
"Secret": "密钥",
"Thunderbird on my laptop": "笔记本上的 Thunderbird",
"Active webmail sessions": "活跃的网页邮箱会话",
"Sign out": "退出登录",
"Sign out here": "在此退出登录",
"Sign out all other sessions": "退出所有其他会话",
"Signed in as": "已登录为",
"This is my own device": "这是我自己的设备",
"this device": "当前设备",
"Device": "设备",
"IP": "IP",
"Last active": "最后活动",
"Created": "创建时间",
"Expires": "过期时间",
"Status": "状态",
"Online": "在线",
"Reason": "原因",
"Type": "类型",
"Email or username": "邮箱或用户名",
"Use your usual address as the username.": "用户名请使用您平时的邮箱地址。",
"Fast, friendly webmail. Your mailbox, your way.": "快速、友好的网页邮箱。您的邮箱,随您安排。",
// ── Notifications ──────────────────────────────────────────────────
"Notifications": "通知",
"Notifications are blocked in your browser settings.": "浏览器设置中已阻止通知。",
"Not supported in this browser.": "此浏览器不支持。",
"Desktop notifications while ihasmail is open": "打开 ihasmail 时显示桌面通知",
"Notify me even when ihasmail is closed": "关闭 ihasmail 后也通知我",
"Play a sound for new mail": "新邮件提示音",
"Test notification": "测试通知",
"Background notifications are on": "后台通知已开启",
"The tab title and favicon always show your unread Inbox count.": "标签页标题和图标始终显示收件箱的未读数量。",
"Live updates are delivered via JMAP push ({state}).": "实时更新通过 JMAP 推送送达({state})。",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "当标签页在后台且收件箱收到新邮件时,显示系统通知。",
// ── Editor ─────────────────────────────────────────────────────────
"Formatting": "格式",
"Formatting options": "格式选项",
"Remove formatting": "清除格式",
"Bold (Ctrl+B)": "加粗 (Ctrl+B)",
"Italic (Ctrl+I)": "斜体 (Ctrl+I)",
"Underline (Ctrl+U)": "下划线 (Ctrl+U)",
"Strikethrough": "删除线",
"Highlight": "突出显示",
"Bulleted list": "项目符号列表",
"Numbered list": "编号列表",
"Increase indent": "增加缩进",
"Decrease indent": "减少缩进",
"Align left": "左对齐",
"Align right": "右对齐",
"Center": "居中",
"Quote": "引用",
"Code block": "代码块",
"Normal text": "正文",
"Insert link (Ctrl+K)": "插入链接 (Ctrl+K)",
"Insert image": "插入图片",
"Link": "链接",
"List": "列表",
"Emoji": "表情符号",
"Write your message…": "写下您的邮件…",
// ── Search, shortcuts, generic labels ──────────────────────────────
"Search": "搜索",
"Search mail": "搜索邮件",
"Advanced search": "高级搜索",
"Keyboard shortcuts": "键盘快捷键",
"Keyboard shortcuts (?)": "键盘快捷键 (?)",
"Shortcuts": "快捷键",
"Go to": "转到",
"Menu": "菜单",
"Options": "选项",
"Send options": "发送选项",
"Name": "名称",
"Email": "邮箱",
"Email address": "邮箱地址",
"Description": "说明",
"Location": "地点",
"Visibility": "可见性",
"Private": "私密",
"Work": "工作",
"Loading…": "正在加载…",
"None": "无",
"optional": "可选",
"Always show": "始终显示",
"to": "收件人",
"Received": "接收时间",
"In-Reply-To": "In-Reply-To",
"References": "References",
// ── Labels ─────────────────────────────────────────────────────────
"Add label / keyword": "添加标签 / 关键词",
"Manage labels": "管理标签",
"Create “{name}”": "创建「{name}」",
"Type a name to create your first label.": "输入名称以创建您的第一个标签。",
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "标签是保存在邮件上的 IMAP 关键词,因此会同步到其他客户端。名称和颜色则保存在此浏览器中。",
"New label": "新建标签",
"Delete label": "删除标签",
// ── Attachments, dates, search prose ───────────────────────────────
"PDF": "PDF",
"Large attachments may be rejected by some servers": "部分服务器可能拒收过大的附件",
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "图片保存在您的「文件」中(文件夹「ihasmail」),并在发送时嵌入邮件。",
"After": "晚于",
"Before": "早于",
"Choose a date": "选择日期",
"Choose a date and time": "选择日期和时间",
"Pick date and time…": "选择日期和时间…",
"Search mail (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)": "搜索邮件 (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)",
"Settings → Filters & rules": "设置 → 过滤器与规则",
"Open the Mail view to see all shortcuts.": "打开邮件视图以查看全部快捷键。",
"Gmail-style shortcuts are always on. Press {key} anywhere to see this list.": "Gmail 风格的快捷键始终启用。在任意位置按 {key} 即可查看此列表。",
"Select a conversation to read it here · Press {key} for shortcuts": "选择一个会话即可在此阅读 · 按 {key} 查看快捷键",
"Tip: press {key} on a conversation to apply labels. Search with {operator}.": "提示:在会话上按 {key} 可添加标签。使用 {operator} 搜索。",
"A fast, friendly, open-source webmail for {server}, built on JMAP.": "一款面向 {server} 的快速、友好的开源网页邮箱,基于 JMAP 构建。",
// ── Filters, vacation, capability notices ──────────────────────────
"Thanks for your message. I'm away until … and will reply when I'm back.": "感谢您的来信。我将外出至……,回来后会尽快回复。",
"Automatically reply to people who email you while you're away. Each sender gets at most one reply.": "在您外出期间自动回复来信的人。每位发件人最多收到一封回复。",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "自动整理收到的邮件。规则在服务器上运行(Sieve),因此对您使用的每个客户端都有效。",
"Canned responses you can insert into any message from the composer's template button.": "预设的回复内容,可在写邮件时通过模板按钮插入任意邮件。",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "创建规则,把订阅邮件移入文件夹、标记重要发件人或转发邮件。",
"Advanced: manage raw Sieve scripts. Only one script can be active at a time.": "高级:管理原始 Sieve 脚本。同一时间只能启用一个脚本。",
"Only part of your filter script arrived.": "您的过滤脚本只收到了一部分。",
"Your active script “{name}” was written by hand.": "您启用的脚本「{name}」是手动编写的。",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "另一个脚本(「{name}」)正在启用中。在此保存规则将改为启用「ihasmail」脚本。",
"“{name}” will be deactivated (not deleted) and a new “ihasmail” script will take over.": "「{name}」将被停用(不会删除),改由新的「ihasmail」脚本接管。",
"Sieve filtering is not available for this account.": "此账户不支持 Sieve 过滤。",
"Sieve filtering is not enabled for this account.": "此账户未启用 Sieve 过滤。",
"Vacation responses are not available for this account.": "此账户不支持外出自动回复。",
"This account does not have the JMAP calendars capability.": "此账户不具备 JMAP 日历功能。",
"This account does not have the JMAP contacts capability.": "此账户不具备 JMAP 联系人功能。",
"This account does not have the JMAP file storage capability.": "此账户不具备 JMAP 文件存储功能。",
"It {damage}, so the rules in it can't be shown or edited — saving what did arrive would write it back over the rest. Reload the page to try again. Your rules are still on the server; nothing here has changed them.": "它{damage},因此其中的规则无法显示或编辑——保存已收到的部分会覆盖掉其余内容。请重新加载页面再试一次。您的规则仍在服务器上,这里没有对它们做任何更改。",
"The visual rule editor only manages scripts it created. You can edit the script in the {tab} tab, or start fresh with rules (the existing script will be kept but deactivated).": "可视化规则编辑器只管理它自己创建的脚本。您可以在「{tab}」标签页中编辑脚本,或者改用规则重新开始(现有脚本会保留但被停用)。",
"Your filter script {damage}, so only part of it arrived. Adding a rule would write that part back over the whole thing. Reload the page and try again.": "您的过滤脚本{damage},因此只收到了一部分。添加规则会用这一部分覆盖整个脚本。请重新加载页面再试一次。",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "刚才无法读取您的过滤脚本,因此添加规则有覆盖它的风险。请重新加载页面再试一次。",
"Your active Sieve script was written by hand, so rules can't be added automatically. Open {where} to edit the script or switch to managed rules.": "您启用的 Sieve 脚本是手动编写的,因此无法自动添加规则。请打开 {where} 编辑脚本,或切换为受管理的规则。",
// ── Settings prose ─────────────────────────────────────────────────
"tell us about it": "告诉我们",
"This translation was generated by AI and has not been checked by a native speaker, so it is marked Beta until somebody who speaks it signs it off. Anything that reads wrongly is worth reporting — {report}.": "本翻译由 AI 生成,尚未经母语者校对,因此在有人校对签核之前会一直标记为 Beta。任何读起来不对的地方都值得反馈——{report}。",
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "这里只列出 ihasmail 已经翻译过的语言,因此列表会随着译文落地而增加,而不会提前出现——提供一种背后没有译文的语言,只会让页面声称自己使用着一种它并未使用的语言。",
"This is separate from {setting} in General, which decides how dates, times and numbers are written. You can read an English interface with German dates, or the other way round.": "这与「常规」中的{setting}是两回事,后者决定日期、时间和数字的写法。您可以用英文界面配德式日期,反过来也可以。",
"Defaults for the calendar views and new events.": "日历视图和新建日程的默认设置。",
"Replies will go to this address instead of the From address": "回复将发往此地址,而不是发件人地址",
"Replies to mail sent from this identity go here instead of the From address.": "使用此发件身份发出的邮件,其回复将发往这里,而不是发件人地址。",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "新建发件身份必须使用此账户获准发信的地址(在服务器上配置的别名)。",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "写邮件时不再提供此身份。它仍会接收邮件,重新显示后也仍可用于发信。",
"Each identity is a sender address with its own name, Reply-To and signature. The default identity is preselected when you compose; set a Reply-To when replies should go somewhere other than the From address.": "每个发件身份都是一个发件地址,拥有各自的名称、回复地址和签名。写邮件时会预先选中默认身份;若希望回复发往发件人地址以外的地方,请设置回复地址。",
"This signature is larger than the server's {limit}-byte limit. ihasmail will keep the full version in your Files and store a short text fallback on the server — other mail clients will see the plain-text version.": "此签名超出了服务器 {limit} 字节的限制。ihasmail 会把完整版本保存在您的「文件」中,并在服务器上存放一段简短的文本备用版——其他邮件客户端看到的将是纯文本版本。",
"Outlook-style categories you can assign to events from the right-click menu or the event editor. The category name is stored on the event, so it syncs to other clients.": "Outlook 风格的分类,可通过右键菜单或日程编辑器指定给日程。分类名称保存在日程上,因此会同步到其他客户端。",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colours of its own does as well, instead of sitting on a white card. Messages that style themselves are left exactly as the sender designed them.": "纯文本邮件本就会跟随主题。开启后,未自带配色的 HTML 邮件也会跟随主题,而不再显示在白色卡片上。自带样式的邮件则完全保持发件人设计的样子。",
"On a touchscreen, drag a message sideways to act on it. Each direction can do one thing, or nothing. These follow your account, so a phone and a tablet agree; a mouse ignores them and keeps dragging messages into folders instead.": "在触摸屏上,横向拖动邮件即可对其操作。每个方向可以执行一项操作,也可以什么都不做。这些设置跟随您的账户,因此手机和平板保持一致;鼠标不受影响,仍然是把邮件拖入文件夹。",
"This screen has no touchscreen, so nothing here changes what it does. Your phone or tablet will pick these up.": "此屏幕没有触摸屏,因此这里的设置不会改变它的行为。您的手机或平板会应用这些设置。",
"Holding a message selects it, and holding a folder opens its menu. Pull the top of the message list down to check for new mail.": "长按邮件可选中它,长按文件夹可打开其菜单。下拉邮件列表顶部即可检查新邮件。",
"A receipt tells whoever asked that this address is live and when the message was read, and the sender chooses where it goes — so there is no automatic option. Bulk mail, mailing lists and anything marked auto-submitted are never offered one at all.": "回执会告诉请求方这个地址确实有人在用,以及邮件是何时被读的,而回执发往何处由发件人指定——因此这里没有自动发送的选项。群发邮件、邮件列表以及任何标记为自动提交的邮件,一律不提供发送回执的选项。",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API — you can still make ihasmail the default from your operating system if you install it as an app.": "此浏览器无法为 {scheme} 链接注册应用。Safari 尤其没有相应的接口——如果您把 ihasmail 安装为应用,仍可在操作系统中将它设为默认。",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "注册 {scheme} 链接需要安全连接(HTTPS)。",
"Open {scheme} links — in web pages, documents and other apps — in ihasmail instead of a desktop mail client. Your browser will ask you to confirm, and you can change it later in its own settings (Chrome: Settings Privacy and security Site settings Protocol handlers; Firefox: Settings General Applications).": "让网页、文档和其他应用中的 {scheme} 链接在 ihasmail 中打开,而不是桌面邮件客户端。浏览器会请您确认,之后也可以在浏览器自身的设置中更改(Chrome:设置 › 隐私和安全 › 网站设置 › 协议处理程序;Firefox:设置 › 常规 › 应用程序)。",
"Requested in this browser. Whether it took effect is up to the browser — check its settings if mail links still open elsewhere.": "已在此浏览器中提出请求。是否生效由浏览器决定——如果邮件链接仍在别处打开,请检查浏览器的设置。",
"For a system-wide default, install ihasmail as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer ihasmail directly wherever it asks which mail app to use.": "若要设为系统级默认,请先把 ihasmail 安装为应用(在 Chrome 中:地址栏里的安装图标)。之后操作系统在询问使用哪个邮件应用时,就会直接提供 ihasmail。",
"Needs a browser with the Push API and a mail server that publishes a push key.": "需要支持 Push API 的浏览器,以及发布了推送密钥的邮件服务器。",
"Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.": "您的邮件服务器会把通知直接送到浏览器,因此不必打开 ihasmail 标签页也能收到,并会显示发件人和主题。但浏览器仍需保持运行——如果完全退出浏览器,通知会等到您再次打开时送达。",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "您的邮件服务器可以唤醒此浏览器,但不会包含发件人或主题。浏览器仍需保持运行。",
"This is what a new-mail notification looks like.": "新邮件通知就是这个样子。",
"You're signed in as {user}. Your password is never stored in the browser; the server keeps it encrypted per-session for talking to Stalwart.": "您当前以 {user} 登录。您的密码从不保存在浏览器中;服务器会按会话加密保存,用于与 Stalwart 通信。",
"App passwords are managed by your mail administrator.": "应用专用密码由您的邮件管理员管理。",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "更改密码会让您的其他网页邮箱会话退出登录。已有的应用专用密码仍可继续使用。",
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "此账户已开启两步验证。ihasmail 目前还不能通过验证码登录,因此在其他设备上登录需要使用应用专用密码——您也可以在这里关闭两步验证。",
"A separate password for a mail app or device, which you can revoke on its own. App passwords skip two-factor codes, so they keep working in apps that can't ask for one.": "为某个邮件应用或设备单独设置的密码,可以单独吊销。应用专用密码会跳过两步验证码,因此在无法输入验证码的应用中仍然可用。",
"Copy it into {name} now — it isn't shown again.": "请立即把它复制到 {name}——它不会再次显示。",
"No other users found in the directory, so nobody new can be added. Sharing already in place is listed below and can still be removed.": "目录中没有找到其他用户,因此无法添加新的共享对象。已有的共享列在下方,仍可移除。",
"Stalwart does not publish its version number to mail clients, so ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart 不会向邮件客户端公布版本号,因此只有在服务器给出版本类型时,ihasmail 才会报告它。ihasmail 需要 0.16 或更高版本,更旧的版本一律无法登录。",
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} 是 {site} 的配色,也是新账户的初始主题。它属于深色主题,因此在需要区分明暗的地方都算作深色,下方的强调色仍会叠加在它之上。",
"ihasmail's own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "ihasmail 自身的版本号是其构建所用提交的日期,后面跟着该提交的来源:{example} 表示由 2026 年 8 月 30 日的一个提交构建而成,而该提交来自第 129 号拉取请求。未经拉取请求的提交则改用简短 SHA 表示——{sha}。版本号刻意不包含任何关于 Stalwart 的信息;此版本对服务器的要求见上一行。",
// ── Constant labels ────────────────────────────────────────────────
"Add": "添加",
"Create subfolders": "创建子文件夹",
"Dark": "深色",
"Light": "浅色",
"Match system": "跟随系统",
"Day.Month.Year": "日.月.年",
"Day/Month/Year": "日/月/年",
"Month/Day/Year": "月/日/年",
"Year-Month-Day (ISO 8601)": "年-月-日 (ISO 8601)",
"Edit all": "编辑全部",
"Edit contents": "编辑内容",
"Edit own": "编辑自己的",
"Flag": "标记",
"Mark read": "标为已读",
"Private props": "私密属性",
"Read": "读取",
"Read events": "查看日程",
"RSVP": "回复邀请",
"See free/busy": "查看忙闲状态",
"Share": "共享",
"Write": "写入",
"Live updates connected": "实时更新已连接",
"Live updates reconnecting…": "实时更新正在重新连接…",
"Live updates off — checking periodically instead": "实时更新已关闭——改为定期检查",
"Mark as read / unread": "标为已读 / 未读",
"Star / unstar": "标星 / 取消标星",
"Report spam / not spam": "举报垃圾邮件 / 取消举报",
"Report spam": "举报垃圾邮件",
"Not spam": "不是垃圾邮件",
"Nothing": "不执行任何操作",
"No conversation selected": "未选择会话",
"Drop here for the top level": "拖放到此处可移至顶层",
"Later today": "今天晚些时候",
"Tomorrow morning": "明天上午",
"Tomorrow afternoon": "明天下午",
"Monday morning": "周一上午",
"Open draft": "打开草稿",
"Undo": "撤销",
// ── Folder names (role folders only) ───────────────────────────────
"Deleted Items": "已删除邮件",
"folder\u0004Inbox": "收件箱",
"folder\u0004Archive": "归档",
"folder\u0004Drafts": "草稿",
"folder\u0004Sent": "已发送",
"folder\u0004Deleted Items": "已删除邮件",
"folder\u0004Junk Mail": "垃圾邮件",
"folder\u0004Important": "重要",
"folder\u0004All mail": "全部邮件",
"folder": "文件夹",
"“{name}” moved into “{parent}”": "「{name}」已移入「{parent}」",
"“{name}” moved to the top level": "「{name}」已移至顶层",
"Could not move “{name}”: {reason}": "无法移动「{name}」:{reason}",
"Delete “{name}”?": "删除「{name}」?",
"Rename folder": "重命名文件夹",
"Search: {query}": "搜索:{query}",
},
plurals: {
/*
* One form each, because Chinese has one. Intl.PluralRules returns `other`
* for every number, so `one`, `few` and `many` would never be selected —
* supplying them would be filling in a form the language does not have.
*/
"{n} messages": { other: "{n} 封邮件" },
"{n} conversations": { other: "{n} 个会话" },
"{n} selected": { other: "已选择 {n} 项" },
},
};