Merge main: keep both ru and uk in the language list
This commit is contained in:
@@ -42,6 +42,7 @@ export const UI_LANGUAGES: readonly UiLanguage[] = [
|
||||
{ tag: "fr", name: "Français", beta: true },
|
||||
{ tag: "nl", name: "Nederlands", beta: true },
|
||||
{ tag: "pt-BR", name: "Português (Brasil)", beta: true },
|
||||
{ tag: "ru", name: "Русский", beta: true },
|
||||
{ tag: "uk", name: "Українська", beta: true },
|
||||
];
|
||||
|
||||
|
||||
@@ -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,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}" },
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user