Files
frontend/src/shared/i18n/locales/ru.ts
T

686 lines
38 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const ru = {
translation: {
appName: "WealthLedger",
navigation: {
cards: "Карты",
accounts: "Счета",
stocks: "Акции",
bonds: "Облигации",
settings: "Настройки",
},
breadcrumbs: {
label: "Хлебные крошки",
accounts: "Брокерские счета",
accountFallback: "Счет",
operations: "Операции",
income: "Пассивный доход",
events: "Будущие события",
settings: "Настройки",
},
bank: {
title: "Карты",
card: "Карта",
addCard: "Добавить карту",
editCard: "Изменить карту",
manualBalance: "Баланс по внесённым операциям",
openingHint:
"Остаток до операций с выбранной даты. Валюта — рубли (RUB).",
name: "Название карты",
bankName: "Банк (необязательно)",
paymentSystem: "Платёжная система (необязательно)",
paymentSystemUnknown: "Не указана",
paymentSystems: { mir: "МИР", visa: "Visa", mastercard: "Mastercard" },
lastFour: "Последние четыре цифры (необязательно)",
openingBalance: "Начальный остаток, ₽",
openingDate: "Дата начала учёта",
showArchive: "Показать архив",
archived: "В архиве",
archive: "Убрать в архив",
restore: "Вернуть из архива",
archiveHint:
"История и деньги сохраняются. Для финансовых изменений верните карту из архива.",
empty: "Добавьте первую карту",
emptyHint: "Укажите начальный остаток и вносите расходы вручную.",
noActive: "Нет активных карт. Включите показ архива.",
loading: "Загрузка банковских карт",
loadingHistory: "Загрузка операций",
error: "Не удалось загрузить данные карт.",
retry: "Повторить",
refreshing: "Обновляем данные…",
refreshError:
"Не удалось обновить данные. Показаны последние полученные.",
save: "Сохранить",
cancel: "Отмена",
close: "Закрыть",
summary: "Расходы",
allSummary: "Расходы по всем картам",
month: "Месяц",
period: "Период",
expenses: "Потрачено",
refunds: "Возвращено",
net: "После возвратов",
summaryHint:
"Возвраты учитываются по дате получения. Итог может быть отрицательным.",
noExpenses: "За этот период операций по расходам нет.",
categories: "Категории",
category: "Категория",
categoryName: "Название категории",
addCategory: "Добавить категорию",
rename: "Переименовать",
defaultCategory: "По умолчанию",
notFound: "Карта не найдена",
back: "К картам",
operations: "Операции",
noOperations: "Операций за период нет.",
addOperation: "Добавить операцию",
editOperation: "Изменить операцию",
kind: "Вид операции",
kinds: {
expense: "Расход",
topup: "Пополнение",
transfer: "Перевод",
refund: "Возврат",
},
source: "Карта-источник",
destination: "Карта-получатель",
operationCard: "Карта операции",
amount: "Сумма, ₽",
date: "Дата операции",
description: "Описание (необязательно)",
expense: "Исходная покупка за любой период",
availableRefund: "Доступно к возврату: {{amount}}",
expenseChoice:
"{{date}} · {{name}} · {{amount}} · доступно {{available}}",
noPurchases:
"На этой странице нет покупок. Проверьте другие страницы истории.",
purchaseImmutable: "Исходная покупка и карта возврата не изменяются.",
previous: "Назад",
next: "Далее",
page: "Страница {{page}}",
pagination: "Страницы операций",
pageSize: "Операций на странице",
allOperations: "Все",
transferTo: "Перевод на «{{name}}»",
transferFrom: "Перевод с «{{name}}»",
edit: "Изменить",
delete: "Удалить",
deleteTitle: "Удалить операцию?",
deleteHint:
"{{kind}} · {{amount}} · {{card}}. Денежное влияние будет отменено.",
deleteTransfer:
"Перевод {{amount}}: «{{source}}» → «{{target}}». Обе стороны перевода будут удалены.",
reloadRecord: "Перечитать запись",
adoptVersion: "Использовать актуальную версию {{version}}",
versionHint:
"Актуальные данные: {{details}}. Черновик сохранён; проверьте его перед повторной отправкой.",
requestError:
"Не удалось подтвердить сохранение. Ввод сохранён; повтор использует то же намерение.",
errors: {
BANK_VERSION_CONFLICT:
"Запись уже изменена. Перечитайте её и проверьте черновик перед повторным сохранением.",
BANK_WRITE_CONFLICT:
"Данные изменяются другим запросом. Перечитайте запись и повторите действие.",
BANK_DUPLICATE_CATEGORY: "Категория с таким названием уже есть.",
BANK_NOT_FOUND: "Запись не найдена или недоступна.",
BANK_INTENT_CONFLICT:
"Это намерение уже сохранено с другим содержимым. Закройте форму и проверьте историю перед новым действием.",
BANK_CARD_ARCHIVED:
"Затронутая карта в архиве. Сначала верните её из архива.",
BANK_REFUND_LIMIT:
"Сумма превышает доступный возврат. Перечитайте покупку.",
BANK_DEPENDENT_REFUNDS:
"Изменению мешают связанные возвраты. Сначала исправьте или удалите их.",
BANK_OPENING_DATE_CONFLICT:
"Дата начала противоречит сохранённой истории карты.",
BANK_INVALID_DATE:
"Проверьте дату операции и даты начала учёта обеих карт.",
BANK_INVALID_MONEY: "Введите допустимую сумму с точностью до копеек.",
BANK_INVALID_INPUT: "Проверьте поля и связанные карты.",
BANK_INVALID_REFUND: "Исходная покупка недоступна для этого возврата.",
BANK_IMMUTABLE_OPERATION:
"Вид операции и исходную покупку возврата изменить нельзя.",
BANK_OPERATION_DELETED:
"Операция уже удалена. Она не будет создана повторно.",
},
validation: {
name: "Введите название от 1 до 100 символов.",
paymentSystem: "Выберите платёжную систему из списка.",
bankName: "Не более 100 символов.",
lastFour: "Укажите ровно четыре цифры или оставьте поле пустым.",
money:
"Введите сумму в допустимом диапазоне, не более двух знаков после запятой.",
positive: "Сумма операции должна быть больше нуля.",
date: "Укажите существующую дату не позже сегодняшнего дня по Москве.",
start:
"Дата не может быть раньше начала учёта затронутых карт или исходной покупки.",
required: "Выберите значение.",
destination: "Выберите другую активную карту.",
description: "Не более 500 символов.",
category: "Введите название от 1 до 80 символов.",
duplicate: "Категория с таким названием уже есть.",
refund: "Сумма превышает доступный возврат.",
},
},
bond: {
instrument: "Облигация",
searching: "Ищем облигации",
noSearchResults:
"Облигации не найдены. Попробуйте другое название, тикер или ISIN.",
searchVariants:
"Одна карточка на выпуск (ISIN). Разные выпуски одного эмитента показаны отдельно.",
chartLabel: "Дневные цены облигации, {{currency}}",
quantity: "Количество облигаций",
historyNote:
"Операции по этой облигации на доступных открытых счетах, включая прошлые годы. Дата сделки — дата операции брокера; количество — исполненная часть. История закрытых счетов не включена.",
couponWindow:
"Календарь выпуска с {{from}} по {{to}}. Личные зачисления показаны в истории событий.",
searchTitle: "Облигации",
searchSubtitle: "Найдите выпуск по названию, тикеру или ISIN.",
searchLabel: "Поиск облигаций",
searchPlaceholder: "Например, ОФЗ или SU26238RMFS4",
loading: "Загрузка облигации",
unavailable: "Облигация недоступна",
unavailableText: "Не удалось найти выпуск или загрузить его данные.",
connect: "Подключите Т-Банк в настройках, чтобы открыть облигации.",
ambiguousTicker:
"Тикер соответствует нескольким выпускам. Выберите облигацию через поиск.",
backToSearch: "К поиску облигаций",
lot: "Размер лота",
unknown: "—",
percentOfNominal: "% от номинала",
chartNote:
"Дневная цена закрытия в процентах от номинала, без НКД. Исторические цены не пересчитаны в деньги по сегодняшнему номиналу.",
terms: "Условия выпуска",
nominal: "Текущий номинал",
initialNominal: "Первоначальный номинал",
maturity: "Погашение",
matures: "Погашение {{date}}",
callDate: "Оферта",
couponFrequency: "Купонов в год",
floatingCoupon: "Плавающий купон",
perpetual: "Бессрочная",
amortization: "С амортизацией",
subordinated: "Субординированная",
aci: "НКД на одну облигацию",
cleanPrice: "Без НКД",
dirtyPrice: "С НКД, без комиссии",
indicativePrice:
"Денежная оценка рассчитана по текущему номиналу и НКД. Котировка может относиться к более ранним торгам.",
percentagePoints: "п. п.",
coupons: "Купоны",
upcomingCoupons: "Ближайшие купоны",
couponHistory: "Прошедшие и недатированные купоны",
couponNumber: "Купон № {{number}}",
perBond: "На одну облигацию",
couponDays: "Купонный период: {{count}} дн.",
couponNote:
"Календарь выпуска, не личные зачисления. Оценка по текущей позиции не подтверждает право на выплату и не учитывает налоги и будущие сделки. Неизвестная сумма не означает нулевой купон.",
returnNote:
"Изменение стоимости открытой позиции по ценам портфеля. Не включает выплаченные купоны и результат продаж; это не доходность к погашению.",
noCoupons: "В выбранном периоде известных купонов нет.",
metrics: "Купон, рейтинг и доходность",
creditRating: "Кредитный рейтинг НКР",
ratingWithdrawn: "Отозван",
ratingUnavailable: "Источник недоступен",
ratingMissing: "В реестре НКР не найден",
ratingSource: "НКР · рейтинг выпуска от {{date}}",
ratingChecked: "Реестр получен {{date}}",
ratingCoverage:
"Источник — реестр эмиссий НКР. Рейтинг сопоставлен по ISIN; отсутствие записи не исключает рейтингов других агентств.",
couponAmount: "Размер ближайшего купона",
couponType: "Тип купона",
couponDate: "Дата выплаты купона",
effectiveYield: "Эффективная доходность, годовых",
couponYield: "Текущая купонная доходность, годовых",
yieldUnavailable:
"MOEX не предоставила доходность для этого выпуска и режима торгов.",
yieldSource:
"MOEX · {{target}} {{date}} · цена расчёта {{price}} % · торги {{at}}. Данные могут поступать с задержкой.",
yieldTargets: {
MATDATE: "к погашению",
OFFERDATE: "к оферте",
PUTOPTIONDATE: "к оферте",
CALLOPTIONDATE: "к досрочному погашению",
unknown: "к дате",
},
couponYieldNote:
"Купонная доходность = ближайший купон × 365 / дней в купонном периоде / цена без НКД × 100 %. Это годовая оценка при сохранении размера купона и номинала, без налогов, комиссий и реинвестирования; для плавающего или переменного купона будущий доход изменится.",
couponYieldPriceAt:
"Для купонной доходности использована котировка Т-Банка на {{date}}.",
metricsPartial:
"Часть показателей временно недоступна. Обновите раздел, чтобы повторить запрос.",
couponTypes: {
COUPON_TYPE_CONSTANT: "Постоянный",
COUPON_TYPE_FLOATING: "Плавающий",
COUPON_TYPE_DISCOUNT: "Дисконтный",
COUPON_TYPE_MORTGAGE: "Ипотечный",
COUPON_TYPE_FIX: "Фиксированный",
COUPON_TYPE_VARIABLE: "Переменный",
COUPON_TYPE_OTHER: "Другой",
},
},
stock: {
searchTitle: "Акции",
searchSubtitle:
"Найдите компанию, изучите цену и дивиденды, посмотрите свою историю владения.",
searchLabel: "Поиск акций",
searchPlaceholder: "Название или тикер, например Сбер или SBER",
searchHint: "Введите хотя бы два символа.",
searching: "Ищем акции",
noSearchResults:
"Акции не найдены. Попробуйте другое название или тикер.",
backToSearch: "Все акции",
searchVariants:
"Одна карточка на выпуск (ISIN). Обыкновенные и привилегированные акции показаны отдельно.",
apiUnavailable: "Торги через API недоступны",
apiAvailable: "Доступна через API",
exchangeUnknown: "Площадка не указана",
classCode: "Режим: {{code}}",
isin: "ISIN: {{value}}",
priceUnavailable: "Цена недоступна",
exchanges: {
REAL_EXCHANGE_MOEX: "Мосбиржа",
REAL_EXCHANGE_RTS: "СПБ Биржа",
REAL_EXCHANGE_OTC: "Внебиржевой рынок",
},
aboutCompany: "О компании",
priceTableHint: "Дневные закрытия · записей: {{count}} · сначала новые",
share: "Акция",
loading: "Загружаем страницу акции",
loadingSection: "Загружаем: {{section}}",
loadingPrice: "Загружаем текущую цену",
unavailable: "Акция недоступна",
ambiguousTicker:
"Этот тикер относится к нескольким выпускам. Выберите нужную акцию в поиске.",
unavailableText:
"Проверьте ссылку или попробуйте загрузить данные ещё раз.",
connect:
"Для просмотра акций подключите T-Банк в настройках или обновите подключение.",
sectionError: "Не удалось загрузить этот раздел. Попробуйте ещё раз.",
refreshPrice: "Обновить цену",
price: "Цена",
priceAt: "Цена на {{date}} UTC",
changeBase: "К закрытию предыдущего торгового дня, {{date}}",
noComparison:
"Изменение за день недоступно: нет подтверждённой цены сравнения.",
partialQuote: "Часть данных о цене или торгах временно недоступна.",
chart: "График цены",
period: "Период графика",
periods: {
month: "Месяц",
halfYear: "Полгода",
year: "Год",
all: "Вся история",
},
chartLabel: "Дневные цены акции, {{currency}}",
chartNote:
"Дневные цены по данным Т-Банка. Исторические цены могут учитывать корпоративные изменения.",
incomplete: "Последняя свеча ещё формируется: её цена может измениться.",
averageLine: "Текущая средняя покупка",
priceTable: "Цены в таблице",
date: "Дата",
candle: "Свеча",
complete: "Завершена",
forming: "Формируется",
noCandles:
"За этот период нет доступных цен. Возможно, торги ещё не начались.",
position: "Моя позиция",
quantity: "Количество акций",
value: "Текущая стоимость",
average: "Средняя покупка",
openReturn: "Результат позиции",
openReturnNote:
"Результат только открытой позиции: без проданных акций, дивидендов и полной доходности владения. «—» означает, что расчёт недоступен.",
portfolio: "Портфель",
snapshotAt: "Позиция на {{date}} UTC",
upcoming: "Предстоящие дивиденды",
companyEvent: "Событие компании",
perShare: "на акцию",
yourEstimate: "Оценка по вашей позиции",
record: "Дата реестра",
lastBuy: "Последний день покупки",
payment: "Выплата по данным источника",
noUpcoming: "Нет известных предстоящих выплат до {{to}}.",
dividendNote:
"Личная сумма — оценка по текущему количеству, не гарантия выплаты. Налоги не сопоставлены; дата выплаты компании может отличаться от дня зачисления на ваш счёт.",
estimateUnavailable:
"Данные позиции не удалось обновить. Личная оценка недоступна или рассчитана по сохранённой позиции.",
dividendHistory: "История дивидендов компании",
dividendWindow:
"События компании с {{from}} по {{to}}. Личные зачисления показаны отдельно в истории событий.",
noDividends: "Нет известных выплат за этот период.",
dateUnknown: "Дата не указана",
history: "Моя история событий",
historyNote:
"Операции по этой акции на доступных открытых счетах, включая периоды до текущего года. Дата сделки — дата операции брокера; количество — исполненная часть. История закрытых счетов не включена.",
eventFilter: "Фильтр событий",
filters: {
all: "Все",
trades: "Сделки",
dividends: "Дивиденды",
other: "Другие",
},
noOperations: "Нет доступных операций по выбранному фильтру.",
previous: "Назад",
next: "Далее",
eventQuantity: "{{value}} шт.",
eventPrice: "Цена: {{value}}",
company: "Компания и показатели",
sector: "Сектор",
lot: "Лот: {{value}} шт.",
partialCompany: "Часть сведений о компании временно недоступна.",
noFundamentals: "Нет доступных финансовых показателей.",
periodNote:
"TTM — последние 12 месяцев, MRQ — последний отчётный квартал. Дата отчётности не предоставлена источником. Отсутствующие значения не показаны.",
metrics: {
marketCapitalization: "Капитализация",
peRatioTtm: "P/E",
priceToBookTtm: "P/B",
revenueTtm: "Выручка",
ebitdaTtm: "EBITDA",
netIncomeTtm: "Чистая прибыль",
roe: "Рентабельность капитала (ROE)",
totalDebtMrq: "Общий долг",
netDebtToEbitda: "Чистый долг / EBITDA",
},
shareTypes: {
SHARE_TYPE_COMMON: "Обыкновенная акция",
SHARE_TYPE_PREFERRED: "Привилегированная акция",
SHARE_TYPE_ADR: "Депозитарная расписка",
SHARE_TYPE_GDR: "Депозитарная расписка",
},
sectors: {
financial: "Финансы",
energy: "Энергетика",
materials: "Материалы",
industrials: "Промышленность",
utilities: "Коммунальные услуги",
telecom: "Телекоммуникации",
it: "Информационные технологии",
consumer: "Потребительский сектор",
health_care: "Здравоохранение",
real_estate: "Недвижимость",
},
trading: {
unknown: "Статус торгов неизвестен",
SECURITY_TRADING_STATUS_NORMAL_TRADING: "Идут торги",
SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING: "Торги недоступны",
SECURITY_TRADING_STATUS_OPENING_PERIOD: "Период открытия",
SECURITY_TRADING_STATUS_CLOSING_PERIOD: "Период закрытия",
SECURITY_TRADING_STATUS_BREAK_IN_TRADING: "Перерыв в торгах",
SECURITY_TRADING_STATUS_CLOSING_AUCTION: "Аукцион закрытия",
SECURITY_TRADING_STATUS_OPENING_AUCTION: "Аукцион открытия",
SECURITY_TRADING_STATUS_SESSION_OPEN: "Сессия открыта",
SECURITY_TRADING_STATUS_SESSION_CLOSE: "Сессия закрыта",
SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING: "Дилерские торги",
},
},
auth: {
login: "Вход",
register: "Регистрация",
email: "Email",
password: "Пароль",
passwordConfirmation: "Подтвердите пароль",
noAccount: "Нет аккаунта? Зарегистрироваться",
haveAccount: "Уже есть аккаунт? Войти",
requestError: "Не удалось выполнить запрос. Попробуйте ещё раз.",
logout: "Выйти",
validation: {
invalidEmail: "Некорректный email",
invalidPasswordLength: "Пароль должен содержать от 12 до 72 байт",
passwordsDoNotMatch: "Пароли не совпадают",
},
},
accounts: {
all: "Все счета",
openAll: "Портфель по всем счетам",
scope: "Счёт",
allDescription: "Портфель по всем доступным инвестиционным счетам",
title: "Счета",
subtitle: "Ваши инвестиции по счетам",
currentValue: "Текущая стоимость",
stocks: "Акции",
bonds: "Облигации",
emptyTitle: "Нет инвестиционных счетов",
emptyText:
"Откройте инвестиционный счет в T-Bank, чтобы он появился здесь.",
openedOn: "Открыт {{date}}",
openAccount: "Открыть счет",
summaryUnavailable: "Сводка временно недоступна",
summaryEmpty: "Нет текущих сумм",
remainingCurrencies_one: "Еще {{count}} валюта",
remainingCurrencies_few: "Еще {{count}} валюты",
remainingCurrencies_many: "Еще {{count}} валют",
remainingCurrencies_other: "Еще {{count}} валюты",
openSettings: "Открыть настройки T-Bank",
notConnectedTitle: "Подключите T-Bank",
notConnectedText:
"Для просмотра счетов подключите T-Bank Invest в настройках.",
invalidTokenTitle: "Проверьте подключение T-Bank",
invalidTokenText: "Сохраненный token больше не дает доступ к счетам.",
unavailableTitle: "T-Bank временно недоступен",
unavailableText:
"Попробуйте загрузить счета еще раз или проверьте подключение.",
refreshing: "Обновляем данные",
refreshError:
"Не удалось обновить данные. Показаны последние полученные.",
retry: "Повторить",
types: {
BROKERAGE: "Брокерский счет",
INDIVIDUAL_INVESTMENT: "ИИС",
INVEST_BOX: "Инвесткопилка",
MONEY_MARKET_FUND: "Фонд денежного рынка",
},
},
account: { title: "Счет" },
portfolio: {
byAccount: "Позиции по счетам",
allEmptyText: "На доступных счетах нет позиций и денежных остатков.",
allUpdatedAt: "Самые ранние данные в сводке: {{date}}",
currencies: {
RUB: "Российский рубль",
USD: "Доллар США",
EUR: "Евро",
},
title: "Портфель",
emptyTitle: "Портфель пока пуст",
emptyText: "На счете нет позиций и доступных денежных остатков.",
accountUnavailableTitle: "Счет недоступен",
accountUnavailableText: "Вернитесь к списку и выберите доступный счет.",
connectionErrorTitle: "Проверьте подключение T-Bank",
connectionErrorText: "Настройте подключение, чтобы посмотреть портфель.",
back: "К счетам",
staleWarning:
"T-Bank временно недоступен. Показан последний успешный снимок.",
refreshing: "Обновляем портфель",
refreshError:
"Не удалось обновить портфель. Показан последний полученный снимок.",
updatedAt: "Данные получены {{date}}",
positions: "Позиции",
stocks: "Акции",
bonds: "Облигации",
otherPositions: "Другие позиции",
cashBalances: "Денежные остатки",
structure: {
title: "Структура портфеля",
other: "Другие активы",
cash: "Свободные деньги",
currency: "Валюта структуры портфеля",
categories: "Категории активов",
chartLabel:
"Структура по типам активов. Суммы и доли — в списке рядом.",
basis: "Доли учитывают свободные деньги и округлены до сотых процента.",
incomplete:
"Оценка неполная: ниже показаны только известные суммы. Валюта оценки части позиций неизвестна, поэтому доли и диаграмма недоступны.",
unvaluedCategory: "{{category}}: без оценки — {{count}}",
negative:
"Есть отрицательные стоимости. Кольцевая диаграмма и доли недоступны; в списке сохранены суммы со знаком.",
empty: "Нет положительной стоимости для кольцевой диаграммы.",
unavailable: "Данные о структуре портфеля пока недоступны.",
shareUnavailable: "Доля недоступна",
unvalued: "Нет оценки",
knownAmount: "Известно: {{amount}}",
smallShare: "< 0,01 %",
},
quantity: "Количество: {{value}}",
return: "Доход: {{value}}",
avgPrice: "Средняя цена: {{value}}",
share: "Доля: {{value}}",
},
ledger: {
clearPeriod: "Очистить период",
occurredAt: "{{date}} UTC",
quantity: "{{value}} шт.",
price: "Цена: {{value}}",
operationType: {
buy: "Покупка",
sell: "Продажа",
dividend: "Зачисление дивидендов",
tax: "Налог",
fee: "Комиссия",
input: "Зачисление ценных бумаг",
output: "Вывод ценных бумаг",
transfer: "Перевод между счетами",
other: "Другая операция",
},
title: "Журнал операций",
back: "К счету",
open: "Открыть журнал",
recentTitle: "Последние события",
recentLoading: "Загрузка последних событий",
recentError: "Не удалось загрузить последние события.",
recentEmpty: "Последних событий пока нет.",
period: "Период",
from: "С",
to: "По",
categories: "Категории",
categoriesPlaceholder: "Выберите категории",
apply: "Применить",
reset: "Сбросить",
previous: "Назад",
next: "Далее",
retry: "Повторить",
errorTitle: "Не удалось загрузить журнал",
errorText: "Попробуйте запросить операции еще раз.",
emptyTitle: "Операций нет",
emptyText: "Измените период или фильтры.",
noMoney: "Без движения денег",
noInstrument: "Без инструмента",
entryLabel: {
income: {
coupon: "Купон",
dividend: "Дивиденд",
},
},
category: {
trade: "Сделка",
income: "Доход",
tax: "Налог",
fee: "Комиссия",
transfer: "Перевод",
other: "Прочее",
},
},
events: {
title: "Будущие события",
open: "Открыть будущие события",
recentTitle: "Будущие события",
recentLoading: "Загрузка будущих событий",
recentError: "Не удалось загрузить будущие события.",
recentEmpty: "На ближайшие 30 дней событий не найдено.",
hint: "Прогноз рассчитан по текущей позиции до налогов. Покрытие зависит от доступных данных MOEX.",
emptyTitle: "За выбранный период событий не найдено",
emptyText:
"Доступные источники не сообщили о купонах, дивидендах, погашениях или офертах в этом периоде.",
errorTitle: "Не удалось загрузить будущие события",
errorText: "Попробуйте запросить прогноз еще раз.",
retry: "Повторить",
noAmount: "Сумма неизвестна",
projectedAmount: "Ожидаемая сумма",
dateKind: { event: "Дата события", registry: "Дата реестра" },
type: {
coupon: "Купон",
dividend: "Дивиденд",
maturity: "Погашение",
offer: "Оферта",
},
},
income: {
title: "Пассивный доход",
open: "Открыть пассивный доход",
summaryTitle: "Получено купонами и дивидендами",
summaryLoading: "Загрузка дохода текущего месяца",
summaryError: "Не удалось загрузить доход текущего месяца",
summaryRetry: "Повторить загрузку дохода",
summaryEmpty: "В текущем месяце купоны и дивиденды не найддены.",
from: "С",
to: "По",
apply: "Применить",
reset: "Сбросить",
coupon: "Купоны",
dividend: "Дивиденды",
taxBoundary: "Налоговые операции не включены в этот результат.",
comparisonEmpty: "За эти периоды купоны и дивиденды не найдены.",
yearAgo: "Годом ранее",
yearUnavailable: "Сравнение с годом ранее недоступно.",
difference: "Разница",
total: "Итого",
payments: "Выплаты",
emptyTitle: "Купоны и дивиденды не найдены",
emptyText: "За выбранный период подходящих исполненных выплат нет.",
errorTitle: "Не удалось рассчитать пассивный доход",
errorText: "Попробуйте загрузить результат еще раз.",
retry: "Повторить",
period: "Период",
datePlaceholder: "ДД.ММ.ГГГГ",
refreshing: "Обновляем пассивный доход",
refreshError:
"Не удалось обновить пассивный доход. Показан последний загруженный результат.",
validation: {
date: "Введите существующую дату в формате ДД.ММ.ГГГГ.",
future: "Дата не может быть позже сегодняшнего дня.",
period:
"Укажите корректный период без будущих дат: начало не позже окончания.",
},
},
settings: { title: "Настройки" },
tbank: {
title: "T-Bank Invest",
disconnected: "Не подключено",
connected: "Подключено с {{date}}",
hint: "Укажите read-only token T-Bank Invest.",
token: "Token T-Bank",
tokenRequired: "Введите token",
connect: "Подключить",
replace: "Заменить token",
delete: "Удалить подключение",
deleteTitle: "Удалить подключение?",
deleteText: "Backend сразу потеряет доступ к данным T-Bank.",
deleteConfirm: "Удалить",
invalidToken: "Проверьте token и его права.",
unavailable: "T-Bank временно недоступен. Повторите попытку позже.",
requestError: "Не удалось выполнить запрос. Попробуйте ещё раз.",
statusError:
"Не удалось загрузить статус подключения. Обновите страницу.",
retry: "Повторить",
},
notFound: { title: "Страница не найдена", action: "К счетам" },
routeError: {
title: "Не удалось открыть страницу",
text: "Перейдите в безопасный раздел и попробуйте снова.",
action: "Продолжить",
},
states: {
loadingTitle: "Загрузка",
loadingText: "Пожалуйста, подождите.",
errorTitle: "Что-то пошло не так",
errorText: "Попробуйте обновить страницу позже.",
emptyTitle: "Пока ничего нет",
emptyText: "Данные появятся здесь.",
},
},
} as const;
export { ru };