Files
pangolin/client/lib/l10n/strings_ru.dart
T
2026-07-13 08:17:11 +08:00

538 lines
21 KiB
Dart
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.
// strings_ru.dart — русские текстовые ресурсы (отображение на одном языке)
//
// Запрещённые слова: термины обхода цензуры. Список см. design/CLAUDE.md §1 правило 13.
// Позиционирование: ускорение сети / оптимизация опыта + приватность.
// Номера тарифов соответствуют design/CLAUDE.md §7.
import 'app_text.dart';
class StringsRu extends AppText {
const StringsRu();
@override
AppLang get lang => AppLang.ru;
@override
String get brand => 'Pangolin';
@override
String get online => 'В сети';
@override
String get offline => '○ Не в сети';
@override
String get capOff => 'Нажмите для подключения';
@override
String get capConnecting => 'Подключение…';
@override
String get capOn => 'Подключено · Шифрование';
@override
String get connectNow => 'ПОДКЛЮЧИТЬ';
@override
String get secure => 'ЗАЩИЩЕНО';
@override
String get tabConnect => 'Подключение';
@override
String get tabServers => 'Серверы';
@override
String get tabStats => 'Статистика';
@override
String get tabMe => 'Аккаунт';
@override
String get currentNode => 'Текущий узел';
@override
String get download => 'Приём';
@override
String get upload => 'Отдача';
@override
String get latency => 'Пинг';
@override
String get quotaToday => 'Осталось сегодня';
@override
String get minutes => 'мин';
@override
String get quotaFree => 'Бесплатно · 10 мин/день';
@override
String get planFreeTag => 'Бесплатно';
@override
String get watchAd => 'Смотрите рекламу, чтобы начать';
@override
String get adUnlocked => 'Открыто на сегодня';
@override
String get quotaLeftLabel => 'Осталось';
@override
String get quotaUsedUp => 'Дневной бесплатный лимит исчерпан';
@override
String get watchAdMore => 'Смотрите рекламу, чтобы добавить время';
@override
String get quotaExhaustedNotice => 'Дневной бесплатный лимит исчерпан. Оформите подписку, чтобы продолжить подключение.';
@override
String get adPlaying => 'Реклама воспроизводится…';
@override
String adRewarded(int minutes) => '+$minutes мин добавлено';
@override
String get adFailed => 'Не удалось добавить время, попробуйте ещё раз';
@override
String get quotaDesktopTitle => 'Дневной бесплатный лимит исчерпан';
@override
String get quotaDesktopBody => 'Смотрите рекламу в мобильном приложении, чтобы добавить время, или оформите подписку для безлимитного доступа.';
@override
String get gotIt => 'Понятно';
@override
String get chooseNode => 'Выбор сервера';
@override
String get searchPh => 'Поиск страны / города';
@override
String get smartSelect => 'Умный выбор';
@override
String nodeSwitchTitle(String name) => 'Переключиться на $name?';
@override
String get nodeSwitchBody => 'Текущее соединение будет разорвано и восстановлено через этот узел.';
@override
String get nodeSwitchConfirm => 'Переключить';
@override
String get nodeUnhealthySwitched => 'Текущий узел недоступен — переключение выполнено автоматически';
@override
String get nodeUnhealthyError => 'Текущий узел недоступен — переподключитесь или смените узел';
@override
String get nodeReconnecting => 'Сеть нестабильна, переподключение…';
@override
String get smartSub => 'Подбирает лучший узел для вашей сети';
@override
String get recommended => 'Рекомендуется';
@override
String get statsTitle => 'Статистика';
@override
String get trafficMonth => 'Трафик';
@override
String get avgPing => 'Средний пинг';
@override
String get durMonth => 'Время';
@override
String get weekTraffic => 'На этой неделе (ГБ)';
@override
List<String> get days7 => const ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
@override
String get byDevice => 'По устройствам';
@override
String get noDeviceUsage => 'Пока нет данных по устройствам';
@override
String get periodMonth => 'Этот месяц';
@override
String get periodWeek => 'Эта неделя';
@override
String get periodToday => 'Сегодня';
@override
String get statDown => 'Приём';
@override
String get statUp => 'Отдача';
@override
String get statDuration => 'Длительность';
@override
String get chartTwoWeeks => 'Последние 2 недели';
@override
String get allDevices => 'Все устройства';
@override
String get meTitle => 'Аккаунт';
@override
String get proMember => 'PRO-подписка';
@override
String get freePlanName => 'Бесплатный';
@override
String get expires => 'Действует до';
@override
String get upgradeBtn => 'Продлить / Улучшить';
@override
String get accInfoTitle => 'Данные аккаунта';
@override
String get accEmail => 'Эл. почта';
@override
String get accPassword => 'Пароль';
@override
String get accChange => 'Изменить';
@override
String get deviceLimitTitle => 'Достигнут лимит устройств';
@override
String get deviceLimitDesc => 'Ваш тариф допускает до %s устройств. Удалите одно, чтобы продолжить.';
@override
String get deviceLimitRemoveOldest => 'Удалить давно неиспользуемое';
@override
String get myDevices => 'Мои устройства';
@override
String get devicesSub => 'До 3 устройств на PRO';
@override
String get thisDevice => 'Это устройство';
@override
String get remove => 'Удалить';
@override
String get devOnline => 'В сети';
@override
String get devOffline => 'Не в сети';
@override
String get devLastOnline => 'Был(а) в сети';
@override
String get devNeverLogin => 'Ни разу не входил(а)';
@override
String get devForceLogout => 'Принудительный выход';
@override
String get devClearLogin => 'Очистить данные входа';
@override
String get devRename => 'Переименовать';
@override
String get devRenameHint => 'Имя устройства';
@override
String get devSave => 'Сохранить';
@override
String get devForceLogoutConfirm => 'Это завершит сеанс входа устройства — оно будет отключено и потребует повторного входа. Устройство останется в списке.';
@override
String get devClearLoginConfirm => 'Это полностью удалит устройство из списка и отзовёт его сеанс входа и учётные данные передачи данных. Чтобы снова использовать устройство, нужно войти заново.';
@override
String get devCancel => 'Отмена';
@override
String get sessionRevokedTitle => 'Это устройство было отключено';
@override
String get sessionRevokedBody => 'Вход с этого устройства завершён с другого устройства вашего аккаунта. Пожалуйста, войдите снова.';
@override
String get sessionRevokedOk => 'Войти снова';
@override
String get redeemEntry => 'Активация';
@override
String get contactEntry => 'Связаться с нами';
@override
String get signOut => 'Выйти';
@override
String get language => 'Язык';
@override
String get darkAppearance => 'Тёмная тема';
@override
String get stateOn => 'Вкл.';
@override
String get followLight => 'Выкл.';
@override
String get protocol => 'Протокол';
@override
String get settingsTitle => 'Настройки';
@override
String get autostart => 'Запуск при старте системы';
@override
String get autostartSub => 'Запускать автоматически при включении системы';
@override
String get autoConnect => 'Автоподключение';
@override
String get autoConnectSub => 'Подключаться автоматически при запуске';
@override
String autoConnectingTo(String name) => 'Автоподключение к $name';
@override
String get smartRoute => 'Умная маршрутизация';
@override
String get smartRouteSub => 'Ускорение для зарубежных ресурсов, прямой доступ для локальных';
@override
String get killSwitch => 'Kill Switch';
@override
String get killSwitchSub => 'Блокировать трафик при разрыве соединения';
@override
String get checkUpdate => 'Проверить обновления';
@override
String get webUserCenter => 'Личный кабинет (веб)';
@override
String updateAvailableTitle(String version) => 'Доступна новая версия v$version';
@override
String get updateNotesFallback => 'Это обновление включает исправления и улучшения стабильности.';
@override
String get updateLater => 'Позже';
@override
String get updateDownload => 'Скачать обновление';
@override
String get updateUpToDate => 'У вас установлена последняя версия';
@override
String get updateCheckFailed => 'Не удалось проверить обновления, попробуйте позже';
@override
String get freePlan => 'Бесплатный';
@override
String get proPlan => 'Pro';
@override
String get teamPlan => 'Команда';
@override
String get perMonth => '/мес';
@override
String get current => 'Текущий';
@override
String get upgrade => 'Улучшить';
@override
String get choose => 'Выбрать';
@override
String get mostPopular => 'Популярный';
@override
List<String> get featsFree => const [
'Только 1 базовый узел',
'10 минут в день',
'Смотрите рекламу, чтобы начать',
'7 дней бесплатно при регистрации',
];
@override
List<String> get featsPro =>
const ['80+ локаций', 'Безлимитно · быстро', '5 устройств', 'Оптимизация для стриминга'];
@override
List<String> get featsTeam =>
const ['Всё из Pro', '10 мест', 'Единый счёт', 'Приоритетная поддержка'];
@override
String get redeemTitle => 'Активация и покупка';
@override
String get redeemCodeTitle => 'Активировать код';
@override
String get redeemPh => 'Введите код активации';
@override
String get redeemBtn => 'Активировать';
@override
String get redeemOk => 'Активировано · PRO открыт';
@override
String get buyTitle => 'Где купить';
@override
String get buySub => 'Оплата внутри приложения недоступна. Получить код можно через:';
@override
String get chStore => 'Магазин самообслуживания';
@override
String get chEmail => 'Поддержка по эл. почте';
@override
String get contactTitle => 'Связаться с нами';
@override
String get contactIntro =>
'Нужна помощь? Свяжитесь с нами любым способом ниже — обычно отвечаем за считанные минуты.';
@override
String get contactEmail => 'Поддержка по эл. почте';
@override
String get contactStore => 'Магазин самообслуживания';
@override
String get contactWebsite => 'Веб-сайт';
@override
String get contactHoursTitle => 'Часы поддержки';
@override
String get contactHours => 'Ежедневно 9:00 24:00 (GMT+8)';
@override
String get authTagline => 'Быстро · Стабильно · Без усилий';
@override
String get tabLogin => 'Вход';
@override
String get tabRegister => 'Регистрация';
@override
String get emailLabel => 'Эл. почта';
@override
String get emailPh => 'your@email.com';
@override
String get pwLabel => 'Пароль';
@override
String get pwPh => 'Введите пароль';
@override
String get setPwPh => 'Задайте пароль (для входа с нескольких устройств)';
@override
String get codeLabel => 'Код подтверждения';
@override
String codeSentTo(String email) => 'Код отправлен на $email';
@override
String get sendCode => 'Отправить код';
@override
String get resend => 'Отправить снова';
@override
String get doLogin => 'Войти';
@override
String get doNext => 'Далее';
@override
String get doCreate => 'Создать аккаунт';
@override
String get forgotPw => 'Забыли пароль?';
@override
String get tos => 'Продолжая, вы принимаете наши Условия и Политику конфиденциальности';
@override
String get obSkip => 'Пропустить';
@override
String get obNext => 'Далее';
@override
String get obAllow => 'Разрешить и продолжить';
@override
String get obStart => 'Начать';
@override
String get ob1Title => 'Подключение по всему миру';
@override
String get ob1Sub => '80+ локаций, автоматический выбор самого быстрого маршрута, надёжная стабильность.';
@override
String get ob2Title => 'Разрешите настройку сети';
@override
String get ob2Sub => 'Система запросит добавление сетевого профиля для создания зашифрованного туннеля.';
@override
String get ob3Title => 'Приватность по умолчанию';
@override
String get ob3Sub => 'Сквозное шифрование. Мы не храним журналы просмотров.';
// ── 购买 / 支付 ──
@override
String get purchaseTitle => 'Покупка тарифа';
@override
String get paymentTitle => 'Оплата';
@override
String get buyNow => 'Купить';
@override
String get payMethodAlipay => 'Alipay';
@override
String get payMethodCrypto => 'USDT (TRC20)';
@override
String get choosePayMethod => 'Выберите способ оплаты';
@override
String get proMonthly => 'Pro · Месяц';
@override
String get proQuarterly => 'Pro · Квартал';
@override
String get proYearly => 'Pro · Год';
@override
String get perQuarter => '/квартал';
@override
String get perYear => '/год';
@override
String get payAmountLabel => 'Сумма перевода';
@override
String get payAddressLabel => 'Адрес для оплаты';
@override
String get payNetworkLabel => 'Сеть';
@override
String get payExactAmountHint => 'Отправьте точную сумму — активация произойдёт автоматически';
@override
String get copied => 'Скопировано';
@override
String get openAlipay => 'Оплатить через Alipay';
@override
String get openAlipayHint => 'Вернитесь после оплаты — страница обновится автоматически';
@override
String get openAlipayFailed => 'Не удалось открыть Alipay. Проверьте, установлен ли он, или повторите';
@override
String get awaitingPayment => 'Ожидание оплаты';
@override
String get paySucceeded => 'Активировано';
@override
String get payExpiresAt => 'Действует до';
@override
String get payDone => 'Готово';
@override
String get payFailed => 'Оплата не удалась';
@override
String get payRetry => 'Повторить';
@override
String get switchPayMethod => 'Сменить способ оплаты';
@override
String get cancelOrder => 'Отменить заказ';
@override
String get qrNotSupported => 'Скопируйте и откройте в Alipay';
// ── 支付渠道 switch + 订单 ──
@override
String get payChannel => 'Способ оплаты';
@override
String get payChannelUsdt => 'USDT · Крипто';
@override
String get payChannelCny => 'Юань · Alipay';
@override
String get perMonthSuffix => ' /мес';
@override
String get ordersTitle => 'Мои заказы';
@override
String get orderDetailTitle => 'Детали заказа';
@override
String get ordersEmpty => 'Заказов пока нет';
@override
String get orderNoLabel => 'Номер заказа';
@override
String get orderPlanLabel => 'Тариф';
@override
String get orderMethodLabel => 'Способ оплаты';
@override
String get orderAmountLabel => 'Сумма';
@override
String get orderCreatedLabel => 'Создан';
@override
String get orderPaidLabel => 'Оплачен';
@override
String get orderStatusPaid => 'Активирован';
@override
String get orderStatusCanceled => 'Отменён';
@override
String get orderContinuePay => 'Продолжить оплату';
@override
String get orderRefresh => 'Обновить';
@override
String get orderRebuy => 'Купить снова';
@override
String get payMethodNezha => 'Nazhapay';
// ── 邀请 / 通知 / 设置分组 / 订单过期(Spec ②③占位) ──
@override
String get inviteEntry => 'Приглашайте друзей и получайте членство';
@override
String get inviteEntrySub => 'Друг регистрируется · оба получают дни подписки';
@override
String get inviteTitle => 'Пригласить друзей';
@override
String get inviteCodeLabel => 'Код приглашения';
@override
String get inviteLinkLabel => 'Ссылка приглашения';
@override
String get inviteCopyCode => 'Скопировать код';
@override
String get inviteCopyLink => 'Скопировать ссылку';
@override
String get inviteRewardsTitle => 'Правила наград';
@override
String get inviteRewardRegister => 'Регистрация друга · +3 дня каждому';
@override
String get inviteRewardFirstBuy => 'Первая покупка друга · +7 дней каждому';
@override
String get inviteRewardJoinTg => 'Вступление в TG-канал · +3 дня';
@override
String get inviteProgressTitle => 'Мои награды';
@override
String get inviteTasksTitle => 'Больше способов заработать';
@override
String get inviteJoinTgTitle => 'Вступить в Telegram-канал';
@override
String get inviteJoinTgBtn => 'Вступить в канал';
@override
String get inviteVerifyBtn => 'Проверить и получить';
@override
String get inviteTaskDone => 'Получено +3 дня';
@override
String get inviteStatInvited => 'Приглашено';
@override
String get inviteStatConverted => 'Конвертировано';
@override
String get inviteStatDays => 'Всего получено (дней)';
@override
String get inviteCodeFieldLabel => 'Код приглашения (необязательно)';
@override
String get notifTitle => 'Уведомления';
@override
String get notifEmpty => 'Пока нет уведомлений';
@override
String get notifTypeNews => 'Новости';
@override
String get notifTypeFeature => 'Функции';
@override
String get notifTypeImportant => 'Важное';
@override
String get settingsGroupConn => 'Подключение';
@override
String get settingsGroupAppearance => 'Внешний вид';
@override
String get settingsGroupAbout => 'О приложении';
@override
String get orderStatusExpired => 'Истёк';
@override
String get promoBadge => 'Спецпредложение';
@override
String get promoOriginalPrice => 'Было';
}