- 引导页协议多语言支持(languageId传递) - 登录页双书名号修复 + 注册页协议勾选 - 个人中心页面多语言(18个翻译键) - 网络断开提示增加关闭/刷新按钮 - 了解我们:新增秋叶qy开发者 + ayk签名修改 + 贡献者精简 + 微风暴微信搜索 - iOS快捷按钮重复修复(删除Info.plist静态定义) - 测试账号123456警告提示 - 扫码登录自动跳转(HTTP轮询+WebSocket双通道) - 登录页老用户按钮改次要色 - Syncfusion图表崩溃修复(DeferredBuilder+animationDuration:0) - macOS标题栏跟随软件夜间模式 - 平台兼容分发渠道弹窗 - 软件著作权图片+交叉水印 - 桌面小部件平台兼容说明默认收起 - iOS/macOS图标更新+名称确认为闲言 - 12个语言文件补全roleNative+7个分发渠道翻译字段
1771 lines
100 KiB
Dart
1771 lines
100 KiB
Dart
/// ============================================================
|
||
/// 闲言APP — 俄语翻译数据
|
||
/// 创建时间: 2026-05-29
|
||
/// 更新时间: 2026-06-01
|
||
/// 作用: 俄语(ru)翻译文本
|
||
/// 上次更新: 新增accountSettings/dataManagement/source/favorites/offline模块翻译
|
||
/// ============================================================
|
||
|
||
import '../types/t.dart';
|
||
|
||
const ru = T(
|
||
nav: TNav(
|
||
home: 'Сяньянь',
|
||
discover: 'Обзор',
|
||
profile: 'Я',
|
||
footprint: 'Следы',
|
||
inspiration: 'Вдохновение',
|
||
),
|
||
common: TCommon(
|
||
cancel: 'Отмена',
|
||
ok: 'ОК',
|
||
save: 'Сохранить',
|
||
confirm: 'Подтвердить',
|
||
clear: 'Очистить',
|
||
reset: 'Сбросить',
|
||
delete: 'Удалить',
|
||
success: 'Успешно',
|
||
failed: 'Не удалось',
|
||
enabled: 'Вкл',
|
||
disabled: 'Выкл',
|
||
loading: 'Загрузка...',
|
||
view: 'Просмотр',
|
||
search: 'Поиск настроек...',
|
||
entriesCountUnit: 'шт.',
|
||
copyright: '© 2026 Команда Сяньянь',
|
||
done: 'Готово',
|
||
all: 'Все',
|
||
refresh: 'Обновить',
|
||
retry: 'Повторить',
|
||
copy: 'Копировать',
|
||
),
|
||
home: THome(
|
||
base: THomeBase(
|
||
batteryCritical: 'Батарея почти разряжена! Зарядите 🔴',
|
||
batteryLow: 'Батарея разряжается, не забудьте зарядить 💛',
|
||
defaultSentence: '',
|
||
defaultFeedName: 'Xianyan',
|
||
authorPrefix: '— ',
|
||
numberWan: 'w',
|
||
numberThousand: 'k',
|
||
dailyRecommendation: 'Рекомендация дня',
|
||
findingNewSentences: 'Поиск новых цитат...',
|
||
gettingTodayRecommendation: 'Загрузка рекомендации...',
|
||
createCard: 'Создать карточку',
|
||
editThisSentence: 'Редактировать цитату',
|
||
noSentences: 'Нет цитат',
|
||
pullDownToRefresh: 'Потяните для обновления',
|
||
networkConnectionFailed: 'Сбой подключения к сети',
|
||
clickToRetry: 'Нажмите для повтора',
|
||
sentenceCopied: 'Цитата скопирована',
|
||
offlineMode: 'Офлайн — Кэшированные данные',
|
||
quoteSquare: 'Площадь цитат',
|
||
dragToSort: '📖 Перетащите для сортировки',
|
||
sortNewest: 'Новые',
|
||
sortHot: 'Популярные',
|
||
sortClassic: 'Классика',
|
||
noContent: '📋 Нет содержимого',
|
||
recentlyOpened: '🕐 Недавно открытые',
|
||
selectCustomTool: '🔧 Выбрать инструмент',
|
||
collapse: 'Свернуть',
|
||
openAnyPageAutoRecord: 'Откройте любую страницу\nАвтозапись',
|
||
longPressToSet: 'Удерживайте для настройки',
|
||
shareAppSignature: '— Xianyan APP',
|
||
shareFailed: 'Не удалось поделиться',
|
||
),
|
||
sentenceDetail: TSentenceDetail(
|
||
longPressToSelect: 'Долгое нажатие для выделения',
|
||
originalContent: '📝 Оригинальный контент',
|
||
liked: 'Нравится',
|
||
like: 'Нравится',
|
||
likeCanceled: 'Лайк удалён',
|
||
likeToast: '👍 Нравится',
|
||
favorited: 'В избранном',
|
||
favorite: 'В избранное',
|
||
favoriteCanceled: 'Удалено из избранного',
|
||
favoriteToast: '⭐ В избранном',
|
||
readLaterMarked: 'Отмечено',
|
||
readLaterLabel: 'Читать позже',
|
||
alreadyInReadLater: 'Уже в списке для чтения',
|
||
share: 'Поделиться',
|
||
shareSentence: 'Поделиться цитатой',
|
||
sentenceDetail: 'Детали цитаты',
|
||
bookmarkAdded: '🔖 Закладка добавлена',
|
||
bookmarkRemoved: '🔖 Закладка удалена',
|
||
bookmark: '🔖 Закладка',
|
||
tag: '🏷️ Тег',
|
||
externalSearch: '🔍 Внешний поиск',
|
||
readAloud: '🔊 Читать вслух',
|
||
searchEmpty: 'Пустой поисковый запрос',
|
||
searchUrlError: 'Не удалось создать URL поиска',
|
||
searchFailed: 'Внешний поиск не удался',
|
||
nfcShareSuccess: '📡 NFC-отправка успешна',
|
||
nfcShareFailed: 'NFC-отправка не удалась',
|
||
addTag: '🏷️ Добавить тег',
|
||
tagInputHint: 'Введите название тега',
|
||
tagAdded: '🏷️ Тег добавлен',
|
||
tagAddFailed: 'Не удалось добавить тег',
|
||
addLabel: 'Добавить',
|
||
editSentence: '✏️ Редактировать цитату',
|
||
blocked: '🚫 Заблокировано',
|
||
block: '🚫 Заблокировать',
|
||
notInterestedToast: '🙈 Отмечено как неинтересное',
|
||
notInterested: '🙈 Не интересно',
|
||
searchQuery: '🔍 Искать "{0}"',
|
||
),
|
||
readLater: TReadLater(
|
||
readLaterLabel: 'Читать позже',
|
||
readLaterPageTitle: '📖 Читать позже',
|
||
readLaterCountFormat: '{0} элементов',
|
||
readLaterEmpty: 'Нет элементов для чтения',
|
||
readLaterEmptyHint: 'Свайпните по цитате, чтобы добавить',
|
||
imageType: 'Изображение',
|
||
videoType: 'Видео',
|
||
fileType: 'Файл',
|
||
linkType: 'Ссылка',
|
||
docType: 'Документ',
|
||
textType: 'Текст',
|
||
imageEmoji: '🖼️ Изображение',
|
||
videoEmoji: '🎬 Видео',
|
||
fileEmoji: '📄 Файл',
|
||
textEmoji: '📝 Текст',
|
||
archiveLabel: 'Архив',
|
||
fileLabel: 'Файл',
|
||
removedFromReadLater: 'Удалено из списка чтения',
|
||
operationFailed: 'Операция не удалась',
|
||
detailLabel: 'Подробности',
|
||
closeLabel: 'Закрыть',
|
||
sizeLabel: 'Размер',
|
||
typeLabel: 'Тип',
|
||
searchPlaceholder: 'Поиск в Читать позже',
|
||
allLabel: 'Все',
|
||
selectedLabel: 'Выбрано',
|
||
cancelLabel: 'Отмена',
|
||
selectAllLabel: 'Выбрать все',
|
||
deleteLabel: 'Удалить',
|
||
markReadLabel: 'Отметить прочитанным',
|
||
markedReadLabel: 'Отмечено прочитанным',
|
||
markAllReadLabel: 'Отметить всё прочитанным',
|
||
markAllReadConfirm: 'Отметить все элементы как прочитанные?',
|
||
confirmLabel: 'Подтвердить',
|
||
batchDeletedLabel: 'Удалено {0} элементов',
|
||
sortLabel: 'Сортировка',
|
||
sortTimeDesc: 'Время (Новые)',
|
||
sortTimeAsc: 'Время (Старые)',
|
||
sortType: 'По типу',
|
||
sortSize: 'По размеру',
|
||
copyLabel: 'Копировать',
|
||
copiedLabel: 'Скопировано',
|
||
copyLinkLabel: 'Копировать ссылку',
|
||
shareLabel: 'Поделиться',
|
||
removeReadLaterLabel: 'Убрать из Читать позже',
|
||
openBrowserLabel: 'Открыть в браузере',
|
||
),
|
||
),
|
||
discover: TDiscover(
|
||
base: TDiscoverBase(
|
||
browse: '📋 Обзор',
|
||
likes: '👍 Нравится',
|
||
favorite: '⭐ Избранное',
|
||
readLater: '📖 Позже',
|
||
notes: '📝 Заметки',
|
||
loginToSync: 'Войдите для синхронизации',
|
||
login: 'Войти',
|
||
noInspiration: 'Пока нет вдохновения',
|
||
refresh: 'Обновить',
|
||
listView: 'Список',
|
||
gridView: 'Карточки',
|
||
pinned: 'Закреплено',
|
||
conversations: 'Диалоги',
|
||
pullDownTools: '⬆️ Потяните для инструментов',
|
||
remark: '✏️ Заметка',
|
||
originalName: 'Оригинальное имя',
|
||
remarkPlaceholder: 'Введите заметку (пусто = оригинал)',
|
||
saveRemark: 'Сохранить заметку',
|
||
loginRequired: 'Сначала войдите',
|
||
comingSoon: 'Скоро ✨',
|
||
browseHistory: 'История просмотров',
|
||
likesHistory: 'История лайков',
|
||
myNotes: 'Мои заметки',
|
||
readLaterFull: 'Читать позже',
|
||
makeCard: '🎨 Создать карточку',
|
||
favoriteAction: '👍 В избранное',
|
||
tryOtherCategory: 'Попробуйте другую категорию',
|
||
shareAction: 'Поделиться',
|
||
shareText: 'Поделиться вдохновением',
|
||
cardSaved: 'Карточка сохранена',
|
||
cardSaveFailed: 'Ошибка сохранения',
|
||
copiedToClipboard: 'Скопировано в буфер обмена',
|
||
errorLoading: 'Ошибка загрузки, нажмите для повтора',
|
||
favorited: 'В избранном',
|
||
relatedRecommend: '🎯 Похожие',
|
||
notInterested: 'Не интересно',
|
||
dailyRead: '📖 Читать сегодня',
|
||
changeGroup: 'Обновить',
|
||
relatedRecommendShort: 'Похожие',
|
||
noRecommendContent: 'Нет рекомендаций',
|
||
inspiration: 'Вдохновение',
|
||
stopReading: 'Стоп',
|
||
readAloud: 'Читать вслух',
|
||
inspirationCategory: '🏷️ Категории',
|
||
searchLabel: 'Поиск',
|
||
loadMore: 'Загрузить ещё',
|
||
// Названия и описания сессий
|
||
sessionReadLater: 'Читать позже',
|
||
sessionReadLaterDesc: 'Сохранить контент для чтения позже',
|
||
sessionInspiration: 'Вдохновение',
|
||
sessionInspirationDesc: 'Популярные цитаты · Категории · Выбор дня',
|
||
sessionFootprint: 'История',
|
||
sessionFootprintDesc: 'Чтение · Лайки · Избранное · Позже · Заметки',
|
||
sessionDailyCard: 'Карта дня',
|
||
sessionDailyCardDesc: 'Цитата дня · Сменить стиль · Поделиться',
|
||
sessionTemplate: 'Шаблоны обоев',
|
||
sessionTemplateDesc: 'Шаблоны · Категории · Мгновенное применение',
|
||
sessionReadingReport: 'Отчёт о чтении',
|
||
sessionReadingReportDesc:
|
||
'Неделя/Месяц/Год · Тренды · Тепловая карта · Достижения',
|
||
sessionWeather: 'Поэзия и погода',
|
||
sessionWeatherDesc:
|
||
'Погода в реальном времени · Контекстные стихи · Настроение',
|
||
sessionPoetry: 'Стих дня',
|
||
sessionPoetryDesc:
|
||
'Рекомендация дня · Полное стихотворение · Перевод и анализ',
|
||
sessionDailyFortune: 'Гороскоп дня',
|
||
sessionDailyFortuneDesc: 'Гороскоп · 6D-анализ · Счастливые показатели',
|
||
sessionSolarTerm: 'Солнечные термины',
|
||
sessionSolarTermDesc: '24 солнечных термина · Стихи · Обычаи',
|
||
sessionKnowledgeGraph: 'Граф знаний',
|
||
sessionKnowledgeGraphDesc:
|
||
'Исследовать связи между стихами, авторами и темами',
|
||
sessionStudyPlan: 'План обучения',
|
||
sessionStudyPlanDesc: 'Составить план, заниматься каждый день',
|
||
sessionProgress: 'Прогресс',
|
||
sessionProgressDesc: 'Сегодня · Неделя · Месяц · Год · Обратный отсчёт',
|
||
sessionFileTransfer: 'Передача файлов',
|
||
sessionFileTransferDesc: 'LAN · Bluetooth · NFC · WebRTC · USB',
|
||
sessionRssFeed: 'RSS-лента',
|
||
sessionRssFeedDesc: 'Сторонние RSS/XML подписки',
|
||
sessionTranslate: 'Переводчик',
|
||
sessionTranslateDesc: 'Многоязычный перевод · Автоопределение языка',
|
||
sessionLeisure: 'Досуг',
|
||
sessionLeisureDesc: 'Цветы · Еда · Достопримечательности · Хронология',
|
||
),
|
||
chatFlow: TChatFlow(
|
||
chatFlow: '',
|
||
chatSettings: 'Настройки чата',
|
||
defaultConversation: '',
|
||
searchMessages: '',
|
||
categoryAll: '',
|
||
categoryHot: '',
|
||
categoryLove: '',
|
||
categoryNature: '',
|
||
categoryMotivate: '',
|
||
categoryLiterature: '',
|
||
categoryMovie: '',
|
||
expandCategories: '',
|
||
collapseCategories: '',
|
||
inputPlaceholderChat: '',
|
||
inputPlaceholderReadlater: '',
|
||
attachmentGallery: '',
|
||
attachmentCamera: '',
|
||
attachmentVideo: '',
|
||
attachmentAudio: '',
|
||
attachmentFile: '',
|
||
attachmentLocation: '',
|
||
attachmentLink: '',
|
||
attachmentRichText: '',
|
||
hiddenSessions: '',
|
||
noHiddenSessions: '',
|
||
swipeToHide: '',
|
||
unhide: '',
|
||
hidden: '',
|
||
searchSessionOrContent: 'Поиск сессии или содержимого…',
|
||
noSearchResults: 'Результаты не найдены',
|
||
sessionSection: '📱 Сессии',
|
||
messageContentSection: '💬 Содержание сообщения',
|
||
pin: '📌 Закрепить',
|
||
unpin: 'Открепить',
|
||
hideSession: '👁️🗨️ Скрыть',
|
||
unhideSession: '👁️ Показать',
|
||
remark: '✏️ Заметка',
|
||
markAsRead: '👁️ Прочитано',
|
||
markAsUnread: '👁️ Не прочитано',
|
||
muteNotifications: '🔕 Отключить уведомления',
|
||
unmuteNotifications: '🔔 Включить уведомления',
|
||
hideSettings: '⚙️ Настройки скрытия',
|
||
deleteSession: '🗑️ Удалить',
|
||
emptyReadlater: 'Нет отложенного для чтения',
|
||
emptyChat: 'Нет сообщений',
|
||
emptyReadlaterHint: 'Сохраните контент для чтения позже 📖',
|
||
emptyChatHint: 'Отправьте сообщение, чтобы начать разговор',
|
||
newConversation: '✨ Новый разговор',
|
||
conversationNamePlaceholder: 'Название разговора',
|
||
create: 'Создать',
|
||
sentToCategory: 'Отправлено в',
|
||
sent: '✈️ Отправлено',
|
||
readlaterList: '📋 Список отложенного',
|
||
manageTags: '🏷️ Управление тегами',
|
||
manageFolders: '📁 Управление папками',
|
||
cloudSync: '☁️ Облачная синхронизация',
|
||
aiSummary: '🤖 ИИ-резюме',
|
||
sharedCollab: '👥 Совместная работа',
|
||
deviceSync: '📱 Синхронизация устройств',
|
||
updateWidget: '🏠 Обновить виджет',
|
||
clipboardMonitor: '📋 Монитор буфера обмена',
|
||
markAllRead: '✅ Пометить всё как прочитанное',
|
||
exportContent: '📤 Экспорт содержимого',
|
||
clearReadlater: '🗑️ Очистить отложенное',
|
||
allMarkedRead: 'Всё помечено как прочитанное',
|
||
clearReadlaterConfirm:
|
||
'Очистить {count} элементов отложенного? Это действие нельзя отменить.',
|
||
clearButton: 'Очистить',
|
||
readlaterCleared: 'Отложенное очищено',
|
||
readlaterStats:
|
||
'📊 Всего: {total} · Прочитано: {read} · Непрочитано: {unread}',
|
||
tagManagement: '🏷️ Управление тегами',
|
||
addTagButton: '➕ Добавить',
|
||
noTags: 'Нет тегов',
|
||
addTagHint: 'Нажмите, чтобы добавить теги',
|
||
addTagTitle: '🏷️ Добавить тег',
|
||
tagNamePlaceholder: 'Название тега',
|
||
tagDeleted: 'Тег "{tag}" удалён',
|
||
tagAdded: 'Тег "{tag}" добавлен',
|
||
tagFilterTitle: '🏷️ Тег: {tag}',
|
||
tagMessageCount: '{count} сообщений',
|
||
folderManagement: '📁 Управление папками',
|
||
createFolderButton: '➕ Новая',
|
||
noFolders: 'Нет папок',
|
||
createFolderHint: 'Нажмите, чтобы создать папку',
|
||
folderDeleted: 'Папка "{name}" удалена',
|
||
createFolderTitle: '📁 Новая папка',
|
||
folderNamePlaceholder: 'Название папки',
|
||
folderCreated: 'Папка "{name}" создана',
|
||
renameFolderTitle: '✏️ Переименовать папку',
|
||
messageCountUnit: '{count} сообщений',
|
||
addTagAction: 'Добавить',
|
||
aiSummaryAction: 'ИИ-резюме',
|
||
smartTagAction: 'Умные теги',
|
||
archiveToFolder: '📁 Архивировать в папку',
|
||
existingTags: 'Существующие теги: {tags}',
|
||
generatingSummary: '🤖 Генерация резюме...',
|
||
summaryCopied: 'Резюме скопировано',
|
||
aiSummaryUnavailable: 'ИИ-резюме недоступно',
|
||
aiSummaryFailed: 'Ошибка ИИ-резюме: {error}',
|
||
analyzingTags: '🏷️ Анализ...',
|
||
emptyContentNoTags: 'Пустой контент, невозможно предложить теги',
|
||
noTagSuggestions: 'ИИ не предлагает теги',
|
||
smartTagSuggestionTitle: '🏷️ Умные предложения тегов',
|
||
aiSuggestedTags: 'ИИ предложенные теги: {tags}',
|
||
tagsAddedCount: 'Добавлено тегов: {count}',
|
||
addAllTags: 'Добавить все',
|
||
selectFolder: '📁 Выбрать папку',
|
||
archivedToFolder: 'Архивировано в "{name}"',
|
||
createFolderFirst: 'Сначала создайте папку',
|
||
exportAsJsonAction: '📋 Экспорт в JSON',
|
||
exportAsMarkdownAction: '📝 Экспорт в Markdown',
|
||
exportAsZipAction: '📦 Экспорт в ZIP',
|
||
exportedToClipboardJson:
|
||
'{count} элементов экспортировано в буфер обмена (JSON)',
|
||
exportedToClipboardMarkdown:
|
||
'{count} элементов экспортировано в буфер обмена (Markdown)',
|
||
readlaterExportTitle: '📖 Экспорт отложенного',
|
||
zipExportSuccess: 'ZIP-экспорт успешен',
|
||
exportFailedMsg: 'Ошибка экспорта: {error}',
|
||
readlaterExportSubject: 'Экспорт отложенного',
|
||
syncing: '☁️ Синхронизация...',
|
||
syncComplete:
|
||
'Синхронизация завершена ↑{uploaded} ↓{downloaded} ⚡{conflicts}',
|
||
syncFailed: 'Ошибка синхронизации: {error}',
|
||
noContentForSummary: 'Нет контента для генерации резюме',
|
||
generatingAiSummary: '🤖 Генерация ИИ-резюме...',
|
||
summaryCopiedToClipboard: 'Резюме скопировано в буфер обмена',
|
||
aiSummaryUnavailableRetry: 'ИИ-резюме недоступно, попробуйте позже',
|
||
sharedCollabTitle: '👥 Совместная работа',
|
||
createButton: '➕ Создать',
|
||
noSharedLists: 'Нет общих списков',
|
||
createSharedListHint: 'Создайте общий список для совместной работы',
|
||
sharedListStats: '{members} участников · {messages} сообщений',
|
||
createSharedListTitle: '👥 Создать общий список',
|
||
listNamePlaceholder: 'Название списка',
|
||
sharedListCreated: 'Общий список "{name}" создан',
|
||
membersCount: 'Участники: {count}',
|
||
messagesCount: 'Сообщения: {count}',
|
||
createdDate: 'Создано: {date}',
|
||
leftSharedList: 'Вы покинули общий список',
|
||
leaveList: 'Покинуть список',
|
||
discoveringDevices: '📱 Поиск устройств...',
|
||
noDevicesFound: 'Устройства не найдены, убедитесь, что они подключены',
|
||
selectTargetDevice: '📱 Выберите целевое устройство',
|
||
syncingToDevice: '📱 Синхронизация с {device}...',
|
||
syncSendFailed: 'Ошибка отправки синхронизации',
|
||
deviceDiscoveryFailed: 'Ошибка поиска устройств: {error}',
|
||
widgetUpdated: '🏠 Виджет обновлён',
|
||
widgetUpdateFailed: 'Ошибка обновления виджета: {error}',
|
||
clipboardMonitorTitle: '📋 Монитор буфера обмена',
|
||
clipboardStatusMonitoring: 'Статус: Мониторинг',
|
||
clipboardStatusOff: 'Статус: Выключен',
|
||
clipboardMonitorEnabled: '📋 Монитор буфера обмена включён',
|
||
clipboardMonitorDisabled: '📋 Монитор буфера обмена выключен',
|
||
enableMonitor: 'Включить монитор',
|
||
disableMonitor: 'Выключить монитор',
|
||
viewClipboard: 'Просмотр буфера обмена',
|
||
clipboardContent: '📋 Содержимое буфера обмена: {content}',
|
||
clipboardEmpty: 'Буфер обмена пуст',
|
||
),
|
||
chatSettings: TChatSettings(
|
||
appearance: '',
|
||
backgroundImage: '',
|
||
setBackground: '',
|
||
themeColor: '',
|
||
customAccentColor: '',
|
||
data: '',
|
||
exportMessages: '',
|
||
exportAsJson: '',
|
||
importMessages: '',
|
||
importFromJson: '',
|
||
shareChatRecord: '',
|
||
sync: '',
|
||
syncInfo: '',
|
||
syncInfoDetail: '',
|
||
gotIt: '',
|
||
categoryManagement: '',
|
||
manageCategories: '',
|
||
editCategoryNames: '',
|
||
editCategory: '',
|
||
enterNewName: '',
|
||
recycleBin: '',
|
||
viewDeletedMessages: '',
|
||
recycleBinEmpty: '',
|
||
recycleBinCleared: '',
|
||
emptyBin: '',
|
||
close: '',
|
||
restore: '',
|
||
messageRestored: '',
|
||
permanentDelete: '',
|
||
messagePermanentlyDeleted: '',
|
||
dangerZone: '',
|
||
clearMessages: '',
|
||
clearAllMessagesConfirm: '',
|
||
messagesCleared: '',
|
||
exportFailed: '',
|
||
fromAlbum: '',
|
||
restoreDefault: '',
|
||
defaultPurple: '',
|
||
oceanBlue: '',
|
||
mintGreen: '',
|
||
warmOrange: '',
|
||
roseRed: '',
|
||
skyCyan: '',
|
||
brownCoffee: '',
|
||
silverGrey: '',
|
||
selectAccentColor: '',
|
||
),
|
||
toolCenter: TToolCenter(
|
||
toolCenter: '',
|
||
discoverMoreHelpers: '',
|
||
toolCount: '',
|
||
myFavorites: '',
|
||
recentlyUsed: '',
|
||
startUsingTools: '',
|
||
viewAll: '',
|
||
useCountTimes: '',
|
||
recommendedTools: '',
|
||
refreshBatch: '',
|
||
editLayout: '',
|
||
importTool: '',
|
||
stayTuned: '',
|
||
toolSettings: '',
|
||
searchTools: '',
|
||
searchHistory: '',
|
||
clearHistory: '',
|
||
noSearchResult: '',
|
||
toolRemoved: '',
|
||
dragToRemove: '',
|
||
releaseToRemove: '',
|
||
closeToolPanel: '',
|
||
tapToClose: '',
|
||
cancelFavorite: '',
|
||
pinToTop: '',
|
||
cancelPin: '',
|
||
newBadge: '',
|
||
tapToOpen: '',
|
||
longPressForMore: '',
|
||
),
|
||
toolStats: TToolStats(
|
||
usageCount: '',
|
||
lastUsed: '',
|
||
never: '',
|
||
rating: '',
|
||
noRating: '',
|
||
usageTrend: '',
|
||
version: '',
|
||
),
|
||
),
|
||
profile: TProfile(
|
||
title: 'Я',
|
||
myFavorites: 'Избранное',
|
||
readingHistory: 'История',
|
||
darkMode: 'Тёмный режим',
|
||
accountSettings: 'Аккаунт',
|
||
dataManagement: 'Данные',
|
||
offlineMode: 'Офлайн',
|
||
cacheManagement: 'Кэш',
|
||
themeCustomization: 'Тема',
|
||
desktopWidgets: 'Виджеты',
|
||
sentenceSource: 'Источники',
|
||
aboutApp: 'О приложении',
|
||
rateApp: 'Оценить',
|
||
debugMode: 'Отладка',
|
||
tapToLogin: 'Нажмите для входа',
|
||
defaultUserName: 'Пользователь Сяньянь',
|
||
appSlogan: 'Открывайте цитаты, создавайте карточки',
|
||
freeTier: 'Бесплатно',
|
||
points: 'Баллы',
|
||
checkin: 'Отметиться',
|
||
notes: 'Заметки',
|
||
quickActions: 'Быстрые действия',
|
||
scanQr: 'Скан',
|
||
nearbyTransfer: 'Передача',
|
||
payment: 'Оплата',
|
||
selectScanMethod: 'Выберите способ сканирования',
|
||
scanQrLogin: 'QR-вход',
|
||
scanQrCode: 'Сканировать QR-код',
|
||
appStoreNotFound: 'Магазин приложений не найден',
|
||
experimentalFeature: 'Экспериментальные функции',
|
||
underReview: 'На рассмотрении',
|
||
changeAvatar: 'Изменить аватар',
|
||
inputAvatarUrl: 'Введите URL аватара',
|
||
selectFromAlbum: 'Выбрать из альбома (Скоро)',
|
||
avatarUrlHint: 'URL не должен превышать 2048 символов, поддерживаются только ссылки http/https',
|
||
pleaseInputUrl: 'Пожалуйста, введите URL',
|
||
urlMustStartWithHttp: 'URL должен начинаться с http:// или https://',
|
||
urlTooLong: 'URL превышает лимит в 2048 символов',
|
||
invalidUrlFormat: 'Неверный формат URL',
|
||
avatarUnderReview: '🔍 Изображение на проверке',
|
||
avatarReviewing: 'Проверка изображения аватара, подождите...',
|
||
avatarChangeSuccess: 'Аватар успешно изменён',
|
||
avatarChangeFailed: 'Не удалось изменить аватар',
|
||
success: 'Успешно',
|
||
failed: 'Ошибка',
|
||
ok: 'OK',
|
||
loading: 'Загрузка...',
|
||
loginToViewProfile: 'Войдите, чтобы увидеть профиль',
|
||
goLogin: 'Войти',
|
||
),
|
||
settings: TSettings(
|
||
language: 'Язык',
|
||
languageSubtitle: 'Изменить язык интерфейса',
|
||
generalSettings: 'Общие',
|
||
selectLanguage: 'Выбрать язык',
|
||
followSystem: 'Системный',
|
||
collaborativeTranslation: 'Сотрудничество',
|
||
collaborativeTranslationDesc: 'Помогите улучшить переводы',
|
||
lastTranslation: 'Последний перевод',
|
||
translationVersion: 'Версия',
|
||
interaction: TSettingsInteraction(
|
||
interaction: 'Взаимодействие',
|
||
sound: 'Звук',
|
||
soundSubtitle: 'Звуки операций и уведомлений',
|
||
vibration: 'Вибрация',
|
||
vibrationSubtitle: 'Интенсивность тактильной отдачи',
|
||
soundEffect: 'Звуковой эффект',
|
||
soundEffectSubtitle: 'Выберите стиль звука операций',
|
||
pageTransitionMode: 'Переход страниц',
|
||
pageTransitionModeNavigate: 'Стандартная навигация со свайпом назад',
|
||
pageTransitionModeSheet: 'Нижняя панель для широких экранов',
|
||
predictiveBack: 'Предиктивный возврат',
|
||
predictiveBackSubtitle: 'Предпросмотр предыдущей страницы при свайпе',
|
||
longPressPreview: 'Предпросмотр долгим нажатием',
|
||
longPressPreviewSubtitle: 'Просмотр деталей долгим нажатием',
|
||
vibrationStrength: 'Интенсивность вибрации',
|
||
soundEffectStyle: 'Стиль звукового эффекта',
|
||
pageTransitionModeTitle: 'Переход страниц',
|
||
navigateDescDetail:
|
||
'Свайп от левого края для возврата, поддерживается предиктивная анимация',
|
||
sheetDescDetail:
|
||
'Открывается как нижняя панель, подходит для широких экранов, нажмите ✕ для закрытия',
|
||
standardNavigation: 'Стандартная навигация',
|
||
bottomSheet: 'Нижняя панель',
|
||
),
|
||
notification: 'Уведомления',
|
||
pushNotification: 'Push-уведомления',
|
||
pushNotificationSubtitle:
|
||
'Ежедневные подборки, отметки и сезонные оповещения',
|
||
display: TSettingsDisplay(
|
||
display: 'Экран',
|
||
screenTimeout: 'Тайм-аут экрана',
|
||
screenTimeoutSubtitle: 'Установить время автоблокировки',
|
||
fontSize: 'Размер шрифта',
|
||
fontSizeSubtitle: 'Перейти к настройкам темы',
|
||
startupPage: 'Стартовая страница',
|
||
startupPageSubtitle: 'Выберите страницу при запуске',
|
||
immersiveStatus: 'Иммерсивная строка состояния',
|
||
immersiveStatusSubtitle:
|
||
'Скрыть строку состояния для полноэкранного режима',
|
||
contentDensity: 'Плотность контента',
|
||
contentDensitySubtitle: 'Настроить интервалы списков и карточек',
|
||
reduceAnimations: 'Уменьшить анимации',
|
||
reduceAnimationsSubtitle: 'Уменьшить эффекты анимации интерфейса',
|
||
screenTimeoutTitle: 'Тайм-аут экрана',
|
||
startupPageTitle: 'Стартовая страница',
|
||
contentDensityTitle: 'Плотность контента',
|
||
),
|
||
performance: TSettingsPerformance(
|
||
performance: 'Производительность',
|
||
smartMode: 'Умный режим',
|
||
smartModeSubtitle: 'Автопереключение в зависимости от сети',
|
||
preload: 'Предзагрузка',
|
||
preloadSubtitle: 'Загружать контент заранее',
|
||
cacheStrategy: 'Стратегия кэширования',
|
||
cacheStrategySubtitle: 'Управление поведением кэширования контента',
|
||
imageQuality: 'Качество изображений',
|
||
imageQualityOriginal: 'Загружать оригиналы, больше трафика',
|
||
imageQualitySaver: 'Сжимать изображения, экономия трафика',
|
||
imageQualityBalanced: 'Баланс качества и трафика',
|
||
dataSaver: 'Экономия трафика',
|
||
dataSaverSubtitle: 'Снизить расход данных',
|
||
cacheStrategyTitle: 'Стратегия кэширования',
|
||
imageQualityTitle: 'Качество изображений',
|
||
),
|
||
privacy: TSettingsPrivacy(
|
||
privacyAndPermissions: 'Конфиденциальность и доступы',
|
||
appLock: 'Блокировка приложения',
|
||
appLockSubtitle: 'Разблокировка по Face ID / отпечатку',
|
||
clipboardRead: 'Чтение буфера обмена',
|
||
clipboardReadSubtitle: 'Разрешить чтение содержимого буфера обмена',
|
||
permissionManagement: 'Разрешения',
|
||
permissionManagementSubtitle: 'Управление разрешениями приложения',
|
||
privacyPolicy: 'Политика конфиденциальности',
|
||
privacyPolicySubtitle: 'Просмотр содержания политики конфиденциальности',
|
||
),
|
||
advanced: TSettingsAdvanced(
|
||
advanced: 'Дополнительно',
|
||
moreSettings: 'Ещё настройки',
|
||
moreSettingsSubtitle: 'Совместимость, отладка, прокси, батарея',
|
||
autoCheckUpdate: 'Автопроверка обновлений',
|
||
autoCheckUpdateSubtitle: 'Проверять новую версию при запуске',
|
||
syncSettings: 'Синхронизация настроек',
|
||
syncSettingsSubtitle: 'Синхронизировать настройки между устройствами',
|
||
logManagement: 'Журналы',
|
||
logManagementSubtitle: 'Просмотр и экспорт журналов приложения',
|
||
exportImportSettings: 'Экспорт / Импорт',
|
||
exportImportSettingsSubtitle: 'Перенос настроек через JSON',
|
||
dataExport: 'Экспорт данных',
|
||
dataExportSubtitle: 'Экспорт персональных данных',
|
||
clearCache: 'Очистить кэш',
|
||
clearCacheSubtitle: 'Очистить локальные кэшированные данные',
|
||
resetSettings: 'Сбросить настройки',
|
||
resetSettingsSubtitle: 'Восстановить все настройки по умолчанию',
|
||
youMayBeLookingFor: 'Возможно, вы ищете',
|
||
fontManagement: 'Шрифты',
|
||
clearCacheConfirm:
|
||
'Вы уверены, что хотите очистить все кэшированные данные?',
|
||
resetSettingsConfirm:
|
||
'Вы уверены, что хотите сбросить все настройки? Это действие нельзя отменить.',
|
||
exportSettings: '📤 Экспорт настроек',
|
||
importSettings: '📥 Импорт настроек',
|
||
importSettingsDesc:
|
||
'Вставьте экспортированный JSON ниже. Импорт перезапишет текущие настройки.',
|
||
confirmImport: 'Подтвердить импорт',
|
||
importSuccess: 'Импорт выполнен успешно',
|
||
importFailed: 'Ошибка импорта, неверный формат',
|
||
pasteJson: 'Вставить JSON',
|
||
pasteJsonPlaceholder: 'Вставьте экспортированное содержимое JSON...',
|
||
),
|
||
cache: TSettingsCache(
|
||
cacheManagement: 'Управление кэшем изображений',
|
||
storageOverview: 'Обзор хранилища',
|
||
totalCache: 'Общий кэш',
|
||
fileCount: 'Файлы',
|
||
feedCache: 'Кэш ленты',
|
||
cacheBreakdown: 'Структура кэша',
|
||
recentCache: 'Недавний кэш',
|
||
expiredCache: 'Просроченный кэш',
|
||
cacheFiles: 'Файлы кэша',
|
||
cacheActions: 'Действия с кэшем',
|
||
autoCleanPolicy: 'Автоочистка',
|
||
autoCleanPolicyDesc:
|
||
'Кэш старше установленного времени будет очищен автоматически',
|
||
clearExpiredCache: 'Очистить просроченный кэш',
|
||
clearAllCache: 'Очистить весь кэш',
|
||
cacheSizeLimit: 'Лимит размера кэша',
|
||
cacheSizeLimitDesc: 'Предупреждать при превышении лимита',
|
||
batchDelete: 'Пакетное удаление',
|
||
selectAll: 'Выбрать все',
|
||
deselectAll: 'Снять выбор',
|
||
deleteSelected: 'Удалить выбранное',
|
||
cleaningProgress: 'Очистка...',
|
||
cleanLog: 'Журнал очистки',
|
||
cleanLogDesc: 'Просмотр истории очистки кэша',
|
||
noCache: 'Нет кэша изображений',
|
||
noCacheHint: 'Кэш изображений появится здесь после просмотра',
|
||
retry: 'Повторить',
|
||
loadFailed: 'Ошибка загрузки',
|
||
fileDetail: 'Детали файла',
|
||
fileName: 'Имя файла',
|
||
fileSize: 'Размер файла',
|
||
createdTime: 'Создан',
|
||
expiresTime: 'Истекает',
|
||
resolution: 'Разрешение',
|
||
format: 'Формат',
|
||
sourceUrl: 'URL источника',
|
||
category: 'Категория',
|
||
expired: 'Просрочен',
|
||
sortBy: 'Сортировать по',
|
||
sortByDate: 'По дате',
|
||
sortBySize: 'По размеру',
|
||
sortByType: 'По типу',
|
||
usedSpace: 'Использовано',
|
||
refLimit: 'Лимит',
|
||
confirmDelete: 'Удалить этот файл кэша?',
|
||
confirmClearExpired:
|
||
'Просроченный кэш будет очищен. Это нельзя отменить.',
|
||
confirmClearAll: 'Весь кэш будет очищен. Это нельзя отменить.',
|
||
irreversible: 'Это нельзя отменить',
|
||
cleared: 'Очищено',
|
||
clearFailed: 'Ошибка очистки',
|
||
filesUnit: 'файлов',
|
||
daysUnit: 'дней',
|
||
policyOff: 'Выкл',
|
||
edit: 'Редактировать',
|
||
cancel: 'Отмена',
|
||
delete: 'Удалить',
|
||
clear: 'Очистить',
|
||
totalCacheLabel: 'Итого',
|
||
basicInfo: 'Основная информация',
|
||
imageInfo: 'Информация об изображении',
|
||
sourceInfo: 'Информация об источнике',
|
||
clearLog: 'Очистить',
|
||
noCleanLog: 'Нет записей об очистке',
|
||
selectedCount: 'Выбрано',
|
||
status: 'Статус',
|
||
done: 'Готово',
|
||
all: 'Все',
|
||
withinDays: 'в течение',
|
||
beforeDays: 'до',
|
||
currentLabel: 'Текущий',
|
||
autoCleanSuffix: 'автоочистка просроченного кэша',
|
||
currentLimitLabel: 'Текущий лимит',
|
||
confirmBatchDelete: 'Удалить выбранные файлы кэша?',
|
||
deleted: 'Удалено',
|
||
unknown: 'Неизвестно',
|
||
logCleared: 'Журнал очищен',
|
||
confirmClearLog: 'Очистить все журналы очистки?',
|
||
clearingExpired: 'Очистка просроченного кэша...',
|
||
clearingAll: 'Очистка всего кэша...',
|
||
clearingBatch: 'Пакетное удаление...',
|
||
),
|
||
permission: TSettingsPermission(
|
||
pageTitle: 'Управление разрешениями',
|
||
loadFailed: 'Ошибка загрузки',
|
||
headerTitle: 'Информация о разрешениях',
|
||
headerDesc:
|
||
'Xianyan запрашивает только необходимые разрешения для основных функций. Вы можете управлять разрешениями в любое время. Отказ от некоторых разрешений может повлиять на функциональность.',
|
||
appPermissionSection: '📱 Разрешения приложения',
|
||
appPermissionSubtitle: 'Функции, требующие авторизации',
|
||
systemCapabilitySection: '⚙️ Системные возможности',
|
||
systemCapabilitySubtitle: 'Управляются ОС, ручная авторизация не нужна',
|
||
disclaimer:
|
||
'Xianyan не запрашивает избыточных разрешений. Некоторые запрашиваются только для конкретных функций.',
|
||
usageStats: 'Статистика использования',
|
||
noUsageData: 'Нет данных об использовании',
|
||
totalCountPrefix: 'Всего ',
|
||
totalCountSuffix: ' раз',
|
||
badgeSystem: 'Система',
|
||
badgeRequired: 'Обязательно',
|
||
badgeOptional: 'Опционально',
|
||
statusGranted: 'Разрешено',
|
||
statusDenied: 'Отказано',
|
||
statusPermanentlyDenied: 'Отклонено',
|
||
statusNotDetermined: 'Не запрошено',
|
||
statusRestricted: 'Ограничено',
|
||
recentUsagePrefix: 'Недавно: ',
|
||
timesSuffix: ' раз',
|
||
btnGoSettings: 'Настройки',
|
||
btnRequest: 'Запросить',
|
||
shakeEnabled: 'Вкл',
|
||
shakeDisabled: 'Выкл',
|
||
frequencyHigh: 'Высокая',
|
||
frequencyMedium: 'Средняя',
|
||
frequencyLow: 'Низкая',
|
||
permCameraLabel: 'Камера',
|
||
permCameraDesc:
|
||
'Используется для фотографирования, сканирования QR-кодов и сопряжения передачи файлов. Запрашивается только при активном использовании, никогда в фоновом режиме.',
|
||
permCameraUsage:
|
||
'Обои — Сделать фото|QR-код — Сканирование входа/сопряжения|Передача — Сканирование подключения',
|
||
permCameraDenial:
|
||
'Невозможно фотографировать, сканировать QR-коды и сопрягать устройства',
|
||
permPhotosLabel: 'Фото и хранилище',
|
||
permPhotosDesc:
|
||
'Используется для выбора изображений, сохранения работ в альбом и установки аватара. Доступ только к выбранным изображениям, никогда не читает весь альбом.',
|
||
permPhotosUsage:
|
||
'Обои — Выбрать изображение|Сохранить карточку — Сохранить в альбом|Профиль — Установить аватар',
|
||
permPhotosDenial:
|
||
'Невозможно выбрать изображения и сохранить работы в альбом',
|
||
permNotificationLabel: 'Уведомления',
|
||
permNotificationDesc:
|
||
'Используется для ежедневных цитат, напоминаний, системных объявлений, статуса передачи и интерактивных сообщений. Можно отключить в настройках системы.',
|
||
permNotificationUsage:
|
||
'Ежедневная цитата — Запланированный пуш|Регистрация — Ежедневное напоминание|Передача — Статус|Сообщения — Лайки и комментарии',
|
||
permNotificationDenial:
|
||
'Невозможно получать цитаты, напоминания и сообщения',
|
||
permLocationLabel: 'Местоположение (приблизительное)',
|
||
permLocationDesc:
|
||
'Используется для информации о погоде и напоминаний о солнечных терминах. Использует только приблизительное местоположение (уровень города), никогда точное, без отслеживания.',
|
||
permLocationUsage:
|
||
'Погода — Погода в текущем городе|Солнечные термины — Местные напоминания',
|
||
permLocationDenial:
|
||
'Невозможно получить информацию о погоде и напоминания',
|
||
permBluetoothLabel: 'Bluetooth',
|
||
permBluetoothDesc:
|
||
'Используется для сопряжения Bluetooth и обнаружения устройств при передаче файлов. Запрашивается только при использовании передачи.',
|
||
permBluetoothUsage:
|
||
'Передача — Сопряжение Bluetooth|Обнаружение — Поиск ближайших устройств',
|
||
permBluetoothDenial:
|
||
'Невозможно использовать сопряжение Bluetooth и обнаружение устройств',
|
||
permNearbyDevicesLabel: 'Ближайшие устройства',
|
||
permNearbyDevicesDesc:
|
||
'Используется для обнаружения и подключения устройств LAN при передаче файлов. Запрашивается только при использовании передачи.',
|
||
permNearbyDevicesUsage:
|
||
'Передача — Обнаружение LAN|Подключение — WiFi Direct',
|
||
permNearbyDevicesDenial:
|
||
'Невозможно обнаружить или подключить устройства LAN',
|
||
permMicrophoneLabel: 'Микрофон',
|
||
permMicrophoneDesc:
|
||
'Используется для голосового чтения, голосового поиска и голосового ввода в чате ИИ. Запрашивается только при активном использовании, никогда не записывает в фоновом режиме.',
|
||
permMicrophoneUsage:
|
||
'Голосовое чтение — Читать фразы|Голосовой поиск — Голосовой ввод|Чат ИИ — Голосовое сообщение',
|
||
permMicrophoneDenial:
|
||
'Невозможно использовать голосовой поиск, голосовое чтение и голосовой ввод',
|
||
permStorageLabel: 'Хранилище',
|
||
permStorageDesc:
|
||
'Используется для локального сохранения карточек и обоев, экспорта шрифтов и данных. Android 12 и ниже (API≤32) требует разрешение на чтение; Android 13+ заменяется разрешением на фото; запись использует ограниченное хранилище.',
|
||
permStorageUsage:
|
||
'Сохранить карточку — Экспорт локально|Обои — Сохранить обои|Шрифты — Скачать шрифты|Данные — Экспорт данных',
|
||
permStorageDenial: 'Невозможно сохранить карточки и обои локально',
|
||
permNetworkLabel: 'Сетевое подключение',
|
||
permNetworkDesc:
|
||
'Xianyan требует сеть для получения цитат, синхронизации данных и push-уведомлений. Убедитесь, что разрешение на сеть включено.',
|
||
permNetworkUsage:
|
||
'Цитаты — Загрузить ежедневные подборки|Синхронизация — Облачная синхронизация|Уведомления — Получать сообщения',
|
||
permNetworkDenial: 'Невозможно получать цитаты и синхронизировать данные',
|
||
permClipboardLabel: 'Буфер обмена',
|
||
permClipboardDesc:
|
||
'Используется для копирования цитат в буфер обмена и вставки текста в редактор. Доступ только при активном действии, никогда автоматически.',
|
||
permClipboardUsage:
|
||
'Копировать цитату — Копирование одним нажатием|Редактор — Вставить текст|Поиск — Вставить ключевые слова',
|
||
permClipboardDenial: 'Невозможно копировать цитаты и вставлять текст',
|
||
permShareLabel: 'Поделиться',
|
||
permShareDesc:
|
||
'Позволяет делиться контентом с другими приложениями через системный лист обмена',
|
||
permShareUsage:
|
||
'Поделиться цитатой — Отправить в WeChat/QQ|Поделиться карточкой — Опубликовать в соцсетях|Экспорт логов — Поделиться файлами',
|
||
permShareDenial: 'Невозможно поделиться контентом с другими приложениями',
|
||
permShakeLabel: 'Встряхнуть',
|
||
permShakeDesc:
|
||
'Встряхните телефон для переключения цитат или обновления контента',
|
||
permShakeUsage:
|
||
'Переключить ежедневную цитату|Обновить контент|Пасхальное яйцо',
|
||
permShakeDenial:
|
||
'Невозможно использовать встряхивание для переключения цитат',
|
||
),
|
||
dataCollection: TSettingsDataCollection(
|
||
pageTitle: 'Собираемые данные',
|
||
introTitle: 'Уведомление о сборе данных',
|
||
introDesc:
|
||
'Xianyan ценит вашу конфиденциальность. Ниже категории собираемой, используемой и хранимой информации. Мы собираем только данные, необходимые для основных функций, и никогда не продаём третьим лицам.',
|
||
collectionMethod: 'Метод сбора: ',
|
||
riskHigh: 'Высокий риск',
|
||
riskMedium: 'Средний риск',
|
||
riskLow: 'Низкий риск',
|
||
riskNone: 'Нет риска',
|
||
categoryAccount: 'Информация аккаунта',
|
||
categoryAccountItems:
|
||
'Имя пользователя, Пароль(зашифрован), Email, Телефон(опционально), Контрольный вопрос(зашифрован)',
|
||
categoryAccountMethod: 'Предоставляется при регистрации',
|
||
categoryProfile: 'Профиль',
|
||
categoryProfileItems: 'Никнейм, Био, Аватар',
|
||
categoryProfileMethod: 'Отправляется при редактировании профиля',
|
||
categoryDevice: 'Информация устройства',
|
||
categoryDeviceItems:
|
||
'Модель устройства, Платформа, device_id, IP-адрес, User-Agent',
|
||
categoryDeviceMethod: 'Собирается автоматически при запуске',
|
||
categoryBehavior: 'Поведение использования',
|
||
categoryBehaviorItems:
|
||
'История просмотров, Поисковые запросы, Комментарии, Лайки и Избранное',
|
||
categoryBehaviorMethod: 'Записывается автоматически при действиях',
|
||
categoryLocation: 'Информация о местоположении',
|
||
categoryLocationItems: 'Город по IP (без GPS)',
|
||
categoryLocationMethod: 'Определяется автоматически при сетевых запросах',
|
||
categoryLocalStorage: 'Локальное хранилище',
|
||
categoryLocalStorageItems:
|
||
'SharedPreferences, SQLite, Временная директория',
|
||
categoryLocalStorageMethod: 'Записывается локально при работе',
|
||
categoryCloudStorage: 'Облачное хранилище',
|
||
categoryCloudStorageItems:
|
||
'Заметки, Избранное, Облачные черновики(зашифрованы), Профиль пользователя',
|
||
categoryCloudStorageMethod: 'Загружается на сервер при синхронизации',
|
||
categoryNotCollected: 'Несобираемые данные',
|
||
categoryNotCollectedItems:
|
||
'Контакты, SMS, Точное GPS, Биометрия, Рекламные данные',
|
||
categoryNotCollectedMethod: '—',
|
||
rightsTitle: 'Ваши права',
|
||
rightAccess: 'Право доступа',
|
||
rightAccessDesc: 'Вы имеете право знать, какую информацию мы собираем',
|
||
rightCorrection: 'Право на исправление',
|
||
rightCorrectionDesc:
|
||
'Вы имеете право запросить исправление неточной информации',
|
||
rightDeletion: 'Право на удаление',
|
||
rightDeletionDesc:
|
||
'Вы имеете право запросить удаление ваших персональных данных',
|
||
rightExport: 'Право на экспорт',
|
||
rightExportDesc:
|
||
'Вы имеете право экспортировать ваши персональные данные',
|
||
rightWithdraw: 'Право на отзыв согласия',
|
||
rightWithdrawDesc: 'Вы имеете право отозвать согласие на сбор данных',
|
||
footerTitle: 'Отказ от ответственности',
|
||
footerDesc:
|
||
'Мы можем корректировать объём сбора данных при обновлениях и уведомим вас в приложении. По вопросам обращайтесь через страницу «О приложении».',
|
||
),
|
||
),
|
||
about: TAbout(
|
||
appInfo: 'Информация о приложении',
|
||
learnUs: 'О нас',
|
||
learnUsSlogan: 'Соединяйтесь словами, выражайте сердцем',
|
||
techStack: 'Технологии',
|
||
techLanguage: 'Язык',
|
||
techState: 'Управление состоянием',
|
||
techRouter: 'Маршрутизация',
|
||
techNetwork: 'Сеть',
|
||
buildInfo: 'Информация о сборке',
|
||
version: 'Версия',
|
||
buildNumber: 'Номер сборки',
|
||
buildTime: 'Время сборки',
|
||
deviceInfo: 'Информация об устройстве',
|
||
os: 'ОС',
|
||
deviceType: 'Тип устройства',
|
||
deviceUnknown: 'Неизвестно',
|
||
deviceMobile: 'Мобильное',
|
||
deviceDesktop: 'Настольное',
|
||
renderEngine: 'Движок рендеринга',
|
||
screenDetail: 'Детали экрана',
|
||
screenSize: 'Размер экрана',
|
||
pixelRatio: 'Пиксельное соотношение',
|
||
platformCompat: 'Совместимость платформ',
|
||
updateLog: 'Что нового',
|
||
updateLog1: 'Новая страница О нас с дизайном жидкого стекла',
|
||
updateLog2: 'Отображение информации об устройстве на разных платформах',
|
||
updateLog3: 'Улучшения производительности и UX',
|
||
openSource: 'Лицензии открытого ПО',
|
||
footerSlogan: 'Сделано с ❤️',
|
||
officialSiteTitle: 'Официальный сайт',
|
||
officialSite: 'Главная',
|
||
officialSiteDesc: 'Посетите официальный сайт для новостей и загрузок',
|
||
downloadPage: 'Загрузка',
|
||
otherProducts: 'Другие продукты',
|
||
productPoetry: 'Сценическая поэзия',
|
||
productPoetryDesc: 'Рекомендует поэзию для разных времён и мест',
|
||
productKitchen: 'Кухня СяоМа',
|
||
productKitchenDesc:
|
||
'10 000+ рецептов, 1 000+ ингредиентов, кулинарная энциклопедия',
|
||
developer: 'Разработчик',
|
||
companyName: 'Micro storm studio',
|
||
companyDesc: 'Специализация на разработке мобильных приложений',
|
||
contactEmail: 'Контактная почта',
|
||
viewEmails: 'Просмотр адресов почты',
|
||
emailPrimary: '🌐 Основная',
|
||
emailSupport: '🤝 Поддержка',
|
||
emailAny: '📬 Общая',
|
||
wechatAccount: 'Официальный аккаунт WeChat',
|
||
teamInfo: 'Команда',
|
||
roleDesign: 'Разработка и дизайн',
|
||
roleUIUX: 'UI/UX',
|
||
roleBackend: 'Бэкенд',
|
||
roleNative: 'Нативный стек',
|
||
roleSupport: 'Поддержка i18n',
|
||
member1: '无书的书',
|
||
member1Sig: 'Всегда почти',
|
||
member2: 'ayk',
|
||
member2Sig: 'Маленькая мастерская, большой вкус',
|
||
member3: '伯乐不相马',
|
||
member3Sig: 'Чей это фиолетовый такой вау~',
|
||
member4: '泼茶香',
|
||
member4Sig: 'Вместе заводить кошек, смотреть море',
|
||
member1Social: 'TikTok:@loveroiy',
|
||
member2Social: 'Twitter@Ayk_Ago',
|
||
member3Social: 'telegram@iboler',
|
||
qqGroup: 'Группа QQ',
|
||
qqGroupDesc: 'Присоединяйтесь к группе, чтобы поделиться опытом',
|
||
joinQQGroup: 'Вступить в группу QQ',
|
||
qqGroupConfirm:
|
||
'Вы покинете приложение и откроете страницу группы QQ. Продолжить?',
|
||
qqGroupTelegram: 'Группа Telegram',
|
||
qqGroupTelegramDesc: 'https://t.me/Windmill_CodeTalk',
|
||
icpInfo: 'APP Номер регистрации ICP',
|
||
icpInfoHint:
|
||
'В материковом Китае регистрация ICP для интернет-приложений обязательна как мера безопасности. Она подтверждает личность разработчика и обеспечивает полную прослеживаемость через правительственные сайты. Зарубежные пользователи могут это игнорировать.',
|
||
icpDesc: 'Номер регистрации ICP МИИТ',
|
||
viewIcpDetail: 'Подробности регистрации',
|
||
icpLaunchConfirm:
|
||
'Вы покинете приложение и перейдёте на сайт регистрации ICP. Продолжить?',
|
||
contributors: 'Участники',
|
||
contributorsDesc: 'Спасибо всем участникам',
|
||
specialThanks: 'Особая благодарность',
|
||
specialThanksDesc: 'Благодарим следующие организации и лица',
|
||
contributorRole1: 'Разработка кода',
|
||
contributorRole2: 'UI-дизайн',
|
||
contributorRole3: 'Тестирование',
|
||
contributorRole4: 'Документация',
|
||
contributorRole5: 'Специальный тестировщик',
|
||
contributorRole5Name: '广州性感母蟑螂',
|
||
thanksFlutter:
|
||
'Спасибо команде Flutter за отличный кроссплатформенный фреймворк',
|
||
thanksOpenSource: 'Спасибо сообществу open source за вклад и поддержку',
|
||
thanksQQGroup:
|
||
'Спасибо участникам группы QQ за обратную связь и предложения',
|
||
thanksUsers: 'Спасибо всем пользователям за поддержку',
|
||
specialThanksTools: 'Инструменты и плагины',
|
||
bottomEnd: '— Конец —',
|
||
copied: 'Скопировано в буфер обмена',
|
||
openLink: 'Открыть ссылку',
|
||
leaveAppHint: 'Вы покинете Сяньянь и откроете внешнюю ссылку',
|
||
copyLink: 'Копировать ссылку',
|
||
goTo: 'Перейти',
|
||
aboutTitle: 'О приложении',
|
||
basicInfo: 'Основная информация',
|
||
softwareInfoDesc: 'Посмотреть версию и подробности',
|
||
learnUsMenuDesc: 'История и видение Xianyan',
|
||
usageGuide: 'Руководство',
|
||
usageGuideDesc: 'Введение в функции и руководство',
|
||
interactionFeedback: 'Обратная связь',
|
||
userFeedback: 'Отзыв пользователя',
|
||
userFeedbackDesc: 'Отправить мнения или предложения',
|
||
rateAppMenu: 'Оценить приложение',
|
||
rateAppMenuDesc: 'Оцените нас в магазине приложений',
|
||
contactEmailMenuDesc: 'Посмотреть все email',
|
||
rateDialogTitle: 'Поставьте нам 5 звёзд!',
|
||
rateDialogContent1: 'Если вам нравится Xianyan, оставьте отзыв!',
|
||
rateDialogContent2: 'Ваша поддержка — наша мотивация',
|
||
laterButton: 'Позже',
|
||
huaweiStore: 'Huawei AppGallery',
|
||
goRate: 'Оценить',
|
||
emailHint1: 'Если нет ответа 24ч, попробуйте другой email',
|
||
emailHint2: 'Любой email подходит для связи',
|
||
legalInfo: 'Правовая информация',
|
||
softwareAgreement: 'Лицензионное соглашение',
|
||
softwareAgreementDesc: 'Политика конфиденциальности, условия и т.д.',
|
||
dataCollectionMenu: 'Сбор данных',
|
||
dataCollectionMenuDesc: 'Посмотреть, какую информацию мы собираем',
|
||
softwarePermission: 'Разрешения',
|
||
softwarePermissionDesc: 'Посмотреть объявления разрешений',
|
||
openSourceDesc: 'Посмотреть лицензии open source',
|
||
updateLogMenuDesc: 'Посмотреть историю обновлений',
|
||
checkUpdate: 'Проверить обновления',
|
||
alreadyLatest: 'Обновлений нет',
|
||
alreadyLatestDesc: 'У вас уже последняя версия',
|
||
okButton: 'OK',
|
||
comingSoon: 'Скоро',
|
||
distributionChannel: 'Канал распространения',
|
||
distAndroid: 'Загрузка с официального сайта Xianyan',
|
||
distIOS: 'Распространение через App Store',
|
||
distMacOS: 'Распространение через App Store',
|
||
distHarmony: 'Распространение через AppGallery',
|
||
distWeb: 'Требуется заявка',
|
||
distWindows: 'Загрузка с официального сайта Xianyan',
|
||
),
|
||
auth: TAuth(
|
||
welcomeBack: 'С возвращением',
|
||
loginToAccount: 'Войдите в аккаунт Xianyan',
|
||
password: 'Пароль',
|
||
verifyCode: 'Код',
|
||
token: 'Token',
|
||
legacyUser: 'Старый',
|
||
passwordLogin: 'Вход по паролю',
|
||
codeLogin: 'Вход по коду',
|
||
tokenLogin: 'Вход по Token',
|
||
legacyLogin: 'Вход старого пользователя',
|
||
noAccountRegister: 'Нет аккаунта? Зарегистрируйтесь',
|
||
skipLogin: 'Пропустить',
|
||
otherMethods: 'Другие способы',
|
||
webLogin: 'Веб-вход',
|
||
wechat: 'WeChat',
|
||
qrcode: 'QR-код',
|
||
loginAgreePrefix: 'Входя, вы соглашаетесь ',
|
||
registerAgreePrefix: 'Регистрируясь, вы соглашаетесь ',
|
||
userAgreement: 'Условия использования',
|
||
and: ' и ',
|
||
privacyPolicy: 'Политика конфиденциальности',
|
||
resetPassword: 'Сбросить пароль',
|
||
resetPasswordHint: 'Войдите через код, чтобы изменить пароль',
|
||
featureNotSupported: 'Эта функция не поддерживается на этом устройстве',
|
||
loginSuccess: 'Вход выполнен, с возвращением!',
|
||
pleaseAgreeTerms: 'Сначала примите условия и политику конфиденциальности',
|
||
pleaseEnterAccount: 'Введите имя пользователя или email',
|
||
pleaseEnterPassword: 'Введите пароль',
|
||
passwordTooShort: 'Пароль должен быть не менее 6 символов',
|
||
pleaseEnterEmail: 'Введите адрес email',
|
||
pleaseEnterValidEmail: 'Введите корректный адрес email',
|
||
pleaseEnterCode: 'Введите код подтверждения',
|
||
codeExpiredOrWrong: 'Код неверен или истёк',
|
||
codeLoginFailed: 'Ошибка входа по коду',
|
||
pleaseEnterToken: 'Введите Token',
|
||
tokenTooShort: 'Token слишком короткий, проверьте и повторите',
|
||
tokenLoginFailed: 'Ошибка входа по Token',
|
||
legacyMigrating: 'Этот метод входа мигрирует, используйте другой',
|
||
openInBrowser: 'Открыть в браузере',
|
||
registerNotice: 'ℹ️ Уведомление о регистрации',
|
||
iUnderstand: 'Понятно',
|
||
createAccount: 'Создать аккаунт',
|
||
registerNewAccount: 'Зарегистрируйтесь, чтобы начать',
|
||
username: 'Имя пользователя',
|
||
usernameHint: '3-30 символов, буквы/цифры/подчёркивание/CJK',
|
||
emailRequired: 'Email (обязательно)',
|
||
emailHint: 'Для подтверждения и восстановления пароля',
|
||
nextStep: 'Далее',
|
||
prevStep: 'Назад',
|
||
codeSentTo: 'Код отправлен на',
|
||
enterCodeHint: 'Введите 6-значный код',
|
||
resend: 'Отправить снова',
|
||
codeNotReceivedTip:
|
||
'Не получили код? Проверьте спам. Обратитесь в поддержку.',
|
||
setPassword: 'Установить пароль',
|
||
passwordHint: 'Пароль 6-30 символов',
|
||
confirmPassword: 'Подтвердить пароль',
|
||
confirmPasswordHint: 'Введите пароль ещё раз',
|
||
secQuestionOptional: '🛡️ Контрольный вопрос (необязательно)',
|
||
selected: 'Выбрано',
|
||
enhanceSecurity: 'Повысить безопасность аккаунта',
|
||
selectSecQuestion: 'Выбрать контрольный вопрос',
|
||
enterSecAnswerHint: 'Введите ответ (1-50 символов)',
|
||
subscribeEmail: 'Подписаться на рассылку команды Xianyan',
|
||
completeRegister: 'Завершить регистрацию',
|
||
hasAccountLogin: 'Уже есть аккаунт? Войти',
|
||
pleaseFillRequired: 'Заполните все обязательные поля',
|
||
passwordMismatch: 'Пароли не совпадают',
|
||
codeError: 'Ошибка кода подтверждения',
|
||
registerSuccess: 'Регистрация успешна, добро пожаловать!',
|
||
codeSendFailed: 'Ошибка отправки кода, проверьте email',
|
||
codeSent: 'Код подтверждения отправлен',
|
||
codeSendFailedShort: 'Ошибка отправки кода',
|
||
emailRegistered: 'Email уже зарегистрирован',
|
||
emailRegisteredHint:
|
||
'\u042d\u0442\u043e\u0442 email ({email}) \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d. \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0445\u043e\u0434\u0430?',
|
||
goLogin: 'Перейти к входу',
|
||
forgotPassword: 'Забыли пароль?',
|
||
accountOrEmail: 'Имя пользователя или email',
|
||
emailAddress: 'Адрес email',
|
||
emailVerifyCode: 'Код подтверждения email',
|
||
sendCode: 'Отправить код',
|
||
emailNotReceivedHint:
|
||
'Не получили email? Проверьте спам или попробуйте позже',
|
||
tokenLoginHint:
|
||
'Введите Token для быстрого входа\nПодходит для синхронизации нескольких устройств',
|
||
pasteOrEnterToken: 'Вставить или ввести Token',
|
||
tokenManageHint: 'Получите Token в Безопасности и управлении Token',
|
||
legacyLoginTitle: 'Вход старого пользователя',
|
||
legacyLoginSubtitle: 'Вход через старую систему аккаунтов',
|
||
aboutLegacyLogin: 'О входе старого пользователя',
|
||
legacyLoginNotice:
|
||
'Пользователи, зарегистрированные с 2019 по июнь 2023 — старые пользователи с привилегиями:\n• Сохранение баллов и уровней\n• Эксклюзивный значок и титул\n• Приоритетный доступ к премиум-функциям\n\nЭтот метод входа мигрирует, используйте другой.',
|
||
loginSuccessTitle: 'Вход выполнен',
|
||
redirecting: 'Перенаправление...',
|
||
selectOpenMethod: 'Выберите способ открытия:',
|
||
browser: 'Браузер',
|
||
unableOpenBrowser: 'Не удалось открыть браузер',
|
||
),
|
||
progress: TProgress(
|
||
title: 'Прогресс',
|
||
inputHint: 'Введите название прогресса...',
|
||
noData: 'Нет данных о прогрессе',
|
||
addProgress: 'Добавить прогресс',
|
||
editProgress: 'Редактировать прогресс',
|
||
deleteItem: 'Удалить элемент',
|
||
clearAll: 'Очистить весь пользовательский прогресс',
|
||
clearAllConfirm: 'Очистить пользовательский прогресс',
|
||
clearAllConfirmMsg:
|
||
'Вы уверены, что хотите удалить весь пользовательский прогресс? Это действие нельзя отменить.',
|
||
cancel: 'Отмена',
|
||
add: 'Добавить',
|
||
save: 'Сохранить',
|
||
name: 'Название',
|
||
nameHint: 'Напр. Обратный отсчёт до экзамена',
|
||
tag: 'Тег',
|
||
tagHint: 'Напр. Финальный рывок',
|
||
type: 'Тип',
|
||
countdown: 'Обратный отсчёт',
|
||
progress: 'Прогресс',
|
||
targetDate: 'Целевая дата',
|
||
displayStyle: 'Стиль отображения',
|
||
custom: 'Пользовательский',
|
||
system: 'Системный',
|
||
settings: 'Настройки прогресса',
|
||
styleSetting: 'Стиль отображения',
|
||
styleSettingDesc: 'Настроить стиль отображения прогресса',
|
||
dataManagement: 'Управление данными',
|
||
dataManagementDesc: 'Управление данными пользовательского прогресса',
|
||
shareCard: 'Поделиться карточкой прогресса',
|
||
shareCardDesc: 'Создать отчёт о прогрессе для публикации',
|
||
refreshData: 'Обновить данные',
|
||
refreshDataDesc: 'Пересчитать системный прогресс',
|
||
selectStyle: 'Выбрать стиль отображения',
|
||
applyStyleTo: 'Применить «{style}» к',
|
||
applyAll: 'Применить ко всем',
|
||
current: 'Текущий',
|
||
applied: '{style} применён',
|
||
allApplied: '{style} применён ко всем',
|
||
noUserItems: 'Нет пользовательского прогресса',
|
||
noShareData: 'Нет данных прогресса для публикации',
|
||
saveToAlbum: 'Сохранить в альбом',
|
||
systemShare: 'Системный обмен',
|
||
saveFailed: 'Ошибка сохранения',
|
||
shareFailed: 'Ошибка отправки',
|
||
savedToAlbum: 'Сохранено в альбом',
|
||
progressReport: 'Отчёт о прогрессе Сяньянь',
|
||
totalProgress: 'Общий прогресс',
|
||
inProgress: 'В процессе',
|
||
completed: 'Завершено',
|
||
moreItems: 'Ещё {n} элементов',
|
||
done: 'Готово',
|
||
progressLabel: 'Прогресс',
|
||
deleted: 'Удалено',
|
||
cleared: 'Очищено',
|
||
updated: 'Обновлено',
|
||
refreshed: 'Обновлено',
|
||
styleDescProgressBar:
|
||
'Горизонтальная полоса, наглядно показывает соотношение',
|
||
styleDescRingProgress: 'Кольцевой стиль, подходит для процентов',
|
||
styleDescCountdownGrid:
|
||
'Сетка дни/часы/мин/сек, обратный отсчёт в реальном времени',
|
||
styleDescTagOnly: 'Простой тег, для просроченных элементов',
|
||
nameRequired: 'Введите название прогресса',
|
||
dateMustBeFuture: 'Целевая дата должна быть позже сегодняшней',
|
||
undo: 'Отменить',
|
||
itemDeleted: 'Удалён «{name}»',
|
||
allCleared: 'Весь пользовательский прогресс очищен',
|
||
),
|
||
onboarding: TOnboarding(
|
||
welcomeTitle: 'Добро пожаловать в Xianyan',
|
||
welcomeSubtitle: 'Открыть жизнь словами · Цитаты + Обои',
|
||
featureDailyQuote: 'Цитата дня',
|
||
featureDailyQuoteDesc: 'Каждый день выбранная цитата для начала чтения',
|
||
featureDailyQuoteDetail:
|
||
'Каждый день для вас выбирается изящная цитата с поддержкой избранного, обмена и создания обоев',
|
||
featureWallpaper: 'Создание обоев',
|
||
featureWallpaperDesc: 'Превратите цитаты в красивые обои для обмена',
|
||
featureWallpaperDetail:
|
||
'Создавайте потрясающие обои из любимых цитат с множеством шаблонов и стилей',
|
||
featureFileTransfer: 'Передача файлов',
|
||
featureFileTransferDesc:
|
||
'Быстрая передача между устройствами через LAN/Bluetooth',
|
||
featureFileTransferDetail:
|
||
'Быстрая передача файлов по LAN, поддержка Bluetooth, WiFi Direct и других способов',
|
||
featureChatFlow: 'Чат-поток',
|
||
featureChatFlowDesc: 'Подписывайтесь на RSS-каналы, агрегируйте контент',
|
||
featureChatFlowDetail:
|
||
'Подписывайтесь на RSS-каналы, агрегируйте интересующий контент с умными рекомендациями',
|
||
permissionEntry: 'Разрешения приложения',
|
||
dataCollectionEntry: 'Сбор данных',
|
||
languageLabel: '🌐 Язык / Language',
|
||
startButton: 'Начать',
|
||
gotIt: 'Понятно',
|
||
dailyQuoteLabel: 'Цитата дня',
|
||
collectAction: 'Избранное',
|
||
shareAction: 'Поделиться',
|
||
makeWallpaperAction: 'Обои',
|
||
templateSimple: 'Минимализм',
|
||
templateGradient: 'Градиент',
|
||
templateGlass: 'Матовое стекло',
|
||
transferring: 'Передача 70%',
|
||
bluetooth: 'Bluetooth',
|
||
wifiDirect: 'WiFi Direct',
|
||
rssLabel: 'RSS-каналы',
|
||
addRssSource: 'Добавить канал',
|
||
welcomeNavLabel: 'Приветствие',
|
||
agreementTitle: 'Соглашения',
|
||
agreementSubtitle:
|
||
'Пожалуйста, прочитайте и согласитесь с условиями для защиты ваших прав',
|
||
privacyPolicyTab: 'Политика конфиденциальности',
|
||
userAgreementTab: 'Пользовательское соглашение',
|
||
permissionInfoTab: 'Разрешения',
|
||
updateDateLabel: 'Обновлено: ',
|
||
permissionUsageTitle: 'Использование разрешений приложения',
|
||
permissionUsageDesc:
|
||
'Следующие разрешения запрашиваются только при использовании связанных функций',
|
||
requiredWarning: '⚠️ Отказ повлияет на основные функции',
|
||
optionalLabel: 'Опционально',
|
||
systemManagedLabel: 'Управляется системой',
|
||
requiredBadge: 'Обязательно',
|
||
systemBadge: 'Системный',
|
||
agreeAllCheckbox:
|
||
'Я прочитал и согласен с 《Пользовательским соглашением》 и 《Политикой конфиденциальности》',
|
||
readPermissionCheckbox: 'Я прочитал 《Использование разрешений приложения》',
|
||
agreeAndContinue: 'Согласиться и продолжить',
|
||
skipOnboarding: 'Пропустить',
|
||
agreementNavLabel: 'Соглашения',
|
||
personalizationTitle: 'Персонализация',
|
||
personalizationSubtitle:
|
||
'Настройте свой опыт чтения, можно изменить в любое время',
|
||
livePreview: 'Предпросмотр',
|
||
appearance: 'Внешний вид',
|
||
features: 'Функции',
|
||
accentColor: 'Цвет акцента',
|
||
cardStyle: 'Стиль карточки',
|
||
fontStyle: 'Шрифт',
|
||
shakeToSwitch: 'Встряхнуть для смены',
|
||
shaderBackground: 'Анимированный фон',
|
||
soundFeedback: 'Звуковая обратная связь',
|
||
showOnNextLaunch: 'Показать вводный экран при следующем запуске',
|
||
completeSetup: 'Готово, войти в Xianyan',
|
||
),
|
||
theme: TTheme(
|
||
title: 'Персонализация темы',
|
||
presetSection: 'Предустановки темы',
|
||
appearanceSection: 'Режим оформления',
|
||
autoDarkSection: 'Тёмный по расписанию',
|
||
accentColorSection: 'Цвет акцента',
|
||
fontSection: 'Настройки шрифта',
|
||
glassEffectSection: 'Эффект матового стекла',
|
||
animationSection: 'Интенсивность анимации',
|
||
cornerRadiusSection: 'Стиль скругления',
|
||
cardStyleSection: 'Стиль карточки',
|
||
tabExpressionSection: 'Захват света',
|
||
tabCharacterSection: 'Предпочтение формы Tab',
|
||
bubbleStyleSection: 'Стиль пузыря',
|
||
wallpaperSection: 'Обои/фон',
|
||
previewSection: 'Предпросмотр в реальном времени',
|
||
shareSection: 'Поделиться темой',
|
||
modeLight: 'Светлый',
|
||
modeDark: 'Тёмный',
|
||
modeAmoled: 'Чистый чёрный',
|
||
modeSystem: 'Системный',
|
||
autoDarkOff: 'Выкл',
|
||
autoDarkSunset: 'Закат',
|
||
autoDarkCustom: 'Пользовательский',
|
||
sunsetHint: 'Автоматическое переключение по закату (прибл. 18:00 – 06:30)',
|
||
accentPurple: 'Лаванда',
|
||
accentCoral: 'Коралловый',
|
||
accentTeal: 'Мята',
|
||
accentBlue: 'Небесно-голубой',
|
||
accentOrange: 'Тёплый оранжевый',
|
||
accentPink: 'Цвет сакуры',
|
||
accentGreen: 'Изумруд',
|
||
accentRose: 'Розовое золото',
|
||
accentNoir: 'Чёрный',
|
||
accentCustom: 'Пользовательский',
|
||
customAccentTitle: 'Пользовательский цвет акцента',
|
||
hueLabel: 'Оттенок',
|
||
applyLabel: 'Применить',
|
||
fontSizeLabel: 'Размер шрифта',
|
||
fontWeightLabel: 'Насыщенность шрифта',
|
||
fontStyleLabel: 'Стиль шрифта',
|
||
fontSizeXs: 'Крошечный',
|
||
fontSizeSmall: 'Маленький',
|
||
fontSizeNormal: 'Стандартный',
|
||
fontSizeLarge: 'Большой',
|
||
fontSizeXlarge: 'Очень большой',
|
||
fontWeightLight: 'Тонкий',
|
||
fontWeightRegular: 'Стандартный',
|
||
fontWeightMedium: 'Средний',
|
||
fontWeightSemibold: 'Полужирный',
|
||
fontStyleSystem: 'Системный по умолчанию',
|
||
fontStyleSerif: 'С засечками',
|
||
fontStyleMono: 'Моноширинный',
|
||
fontStyleRounded: 'Округлый',
|
||
glassOff: 'Выкл',
|
||
glassLight: 'Лёгкий',
|
||
glassMedium: 'Средний',
|
||
glassStrong: 'Насыщенный',
|
||
animNone: 'Без анимации',
|
||
animSubtle: 'Слабая',
|
||
animNormal: 'Стандартная',
|
||
animPlayful: 'Игривая',
|
||
cornerCompact: 'Компактный',
|
||
cornerStandard: 'Стандартный',
|
||
cornerRounded: 'Округлый',
|
||
cornerSuper: 'Супер округлый',
|
||
cornerRadiusPreview: 'Предпросмотр',
|
||
cardStandard: 'Стандартный',
|
||
cardBorderless: 'Без рамки',
|
||
cardShadow: 'Тень',
|
||
cardMinimal: 'Минималистичный',
|
||
cardIos: 'Xianyan',
|
||
tabExpressionDesc: 'Выразительность выбранных иконок навигации',
|
||
tabExpressionExaggerated: 'Захват света',
|
||
tabExpressionSubtle: 'Захват света·Сдержанный',
|
||
tabCharacterDesc: 'Стиль персонажа иконок навигации, питомец или человек',
|
||
tabCharacterPet: '🐾 Питомец',
|
||
tabCharacterHuman: '👤 Человек',
|
||
tabCharacterCat: 'Мяу',
|
||
tabCharacterDog: 'Гав',
|
||
tabCharacterBoy: 'Мальчик',
|
||
tabCharacterGirl: 'Девочка',
|
||
bubbleStyleDesc: 'Внешний вид пузырей чата, глобальный эффект',
|
||
bubbleStandard: 'Стандартный',
|
||
bubbleMinimal: 'Минималистичный',
|
||
bubbleGlass: 'Матовое стекло',
|
||
bubbleShadow: 'Тень',
|
||
selectWallpaper: 'Выбрать обои',
|
||
clearWallpaper: 'Удалить обои',
|
||
wallpaperOnlineSet: '🌐 Онлайн-обои установлены',
|
||
wallpaperGallerySet: '📷 Обои из галереи установлены',
|
||
wallpaperGradientSet: '🎨 Градиент установлен',
|
||
wallpaperSolidSet: '🎨 Сплошной цвет установлен',
|
||
wallpaperDefaultSet: 'Обои установлены',
|
||
wallpaperOnline: '🌐 Онлайн-обои',
|
||
wallpaperGradientPreset: '🎨 Градиентные пресеты',
|
||
wallpaperFromGallery: '📷 Выбрать из галереи',
|
||
wallpaperSolidBackground: '🎯 Сплошной фон',
|
||
gradientPresetTitle: 'Градиентные пресеты',
|
||
solidColorTitle: 'Сплошной фон',
|
||
applyCustomColor: 'Применить пользовательский цвет',
|
||
wpStarry: 'Звёздное небо',
|
||
wpForest: 'Лес',
|
||
wpOcean: 'Океан',
|
||
wpDesert: 'Пустыня',
|
||
wpAurora: 'Северное сияние',
|
||
wpSunset: 'Закат',
|
||
wpLavender: 'Лаванда',
|
||
wpMist: 'Утренний туман',
|
||
solidInkBlack: 'Чёрный',
|
||
solidDeepBlue: 'Тёмно-синий',
|
||
solidInkGreen: 'Тёмно-зелёный',
|
||
solidWarmGray: 'Тёплый серый',
|
||
solidWineRed: 'Бордовый',
|
||
solidIndigo: 'Индиго',
|
||
solidOffWhite: 'Молочный',
|
||
solidLightGray: 'Светло-серый',
|
||
photoPermissionTitle: 'Требуется доступ к галерее',
|
||
photoPermissionDesc:
|
||
'Разрешите Xianyan доступ к галерее в системных настройках.',
|
||
goToSettings: 'К настройкам',
|
||
resetTitle: 'Сбросить тему',
|
||
resetConfirm: 'Сбросить все настройки темы к значениям по умолчанию?',
|
||
resetToDefault: 'Сбросить по умолчанию',
|
||
previewTitleText: 'Предпросмотр заголовка',
|
||
previewBodyText:
|
||
'Предпросмотр текста — цвет акцента, размер и насыщенность шрифта, скругление и эффект стекла видны здесь.',
|
||
exportJson: 'Экспорт JSON',
|
||
importJson: 'Импорт JSON',
|
||
themeConfigJson: 'Конфигурация темы JSON',
|
||
closeLabel: 'Закрыть',
|
||
copyLabel: 'Копировать',
|
||
importConfigTitle: 'Импорт конфигурации темы',
|
||
pasteJsonPlaceholder: 'Вставить конфигурацию JSON',
|
||
importLabel: 'Импорт',
|
||
presetInk: 'Чёрный',
|
||
presetLavender: 'Лаванда',
|
||
presetSunset: 'Тёплый',
|
||
presetMint: 'Мята',
|
||
presetMidnight: 'Полярная ночь',
|
||
presetSakura: 'Сакура',
|
||
systemDefaultFont: 'Системный по умолчанию',
|
||
previewCornerRadius: 'Угол',
|
||
previewCardStyle: 'Карта',
|
||
previewGlassEffect: 'Стекло',
|
||
fontPreviewSample: 'Привет мир',
|
||
),
|
||
search: TSearch(
|
||
placeholder: 'Поиск цитат, стихов, фильмов, статей...',
|
||
typeAll: 'Все',
|
||
typeSentence: 'Цитаты',
|
||
typePoetry: 'Стихи',
|
||
typeArticle: 'Статьи',
|
||
typeFilm: 'Фильмы',
|
||
typeMusic: 'Музыка',
|
||
typeBook: 'Книги',
|
||
typeHanzi: 'Ханьцзы',
|
||
typeCy: 'Идиомы',
|
||
modeFuzzy: 'Нечёткий',
|
||
modeExact: 'Точный',
|
||
modeRelated: 'Связанный',
|
||
suggestions: 'Подсказки',
|
||
hotSearch: 'Популярное',
|
||
searchHistory: 'История',
|
||
countTimes: '{0} раз',
|
||
noResults: 'Результатов не найдено',
|
||
tryDifferentKeyword: 'Попробуйте другой запрос',
|
||
loadingMore: 'Загрузка результатов...',
|
||
loading: 'Загрузка...',
|
||
foundCountSearching: 'Найдено {0}, поиск...',
|
||
foundCountResults: 'Найдено {0} результатов',
|
||
modeLabel: 'Режим: {0}',
|
||
keywordHighlight: 'Подсветка ключевых слов',
|
||
hotSearchRank: '🔥 Тренды',
|
||
periodToday: '📅 Сегодня',
|
||
periodWeek: '📆 Эта неделя',
|
||
periodMonth: '🗓️ Этот месяц',
|
||
loadFailed: 'Ошибка загрузки',
|
||
noHotSearch: 'Нет трендов для {0}',
|
||
numberWan: 'w',
|
||
searchPreference: '🎯 Настройки поиска',
|
||
noPreference: 'Нет настроек поиска',
|
||
preferenceHint:
|
||
'Ваши типовые настройки сохраняются автоматически при поиске',
|
||
preferenceDetail: '📊 Детали настроек',
|
||
preferenceOverview: 'Обзор',
|
||
totalSearchCount: '🔍 Всего поисков',
|
||
mostSearched: '⭐ Самое популярное',
|
||
preferenceTypeCount: '📂 Типы настроек',
|
||
lastSearch: 'Последний поиск: {0}',
|
||
justNow: 'Только что',
|
||
minutesAgo: '{0} мин. назад',
|
||
hoursAgo: '{0} ч. назад',
|
||
daysAgo: '{0} дн. назад',
|
||
contentPreference: '🎯 Настройки контента',
|
||
contentPreferenceHint: 'Отключённые типы будут исключены из рекомендаций',
|
||
contentPoetry: '📜 Классическая поэзия',
|
||
contentChengyu: '📖 Идиомы',
|
||
contentStory: '📖 Истории',
|
||
contentWisdom: '💬 Цитаты',
|
||
contentRiddle: '❓ Загадки',
|
||
contentBrainteaser: '🧠 Головоломки',
|
||
contentEfs: '💬 Пословицы',
|
||
clearPreferenceTitle: 'Очистить настройки',
|
||
clearPreferenceConfirm:
|
||
'Очистить все настройки поиска? Это действие нельзя отменить.',
|
||
),
|
||
accountSettings: TAccountSettings(
|
||
title: 'Настройки аккаунта',
|
||
nickname: 'Никнейм',
|
||
notSet: 'Не задано',
|
||
bio: 'О себе',
|
||
notFilled: 'Не заполнено',
|
||
bindEmail: 'Привязать email',
|
||
notBound: 'Не привязан',
|
||
bindMobile: 'Привязать телефон',
|
||
changePassword: 'Сменить пароль',
|
||
securityQuestion: 'Контрольный вопрос',
|
||
alreadySet: 'Задан',
|
||
securityAndToken: 'Безопасность и токены',
|
||
exportPersonalInfo: 'Экспорт личных данных',
|
||
deleteAccount: 'Удалить аккаунт',
|
||
logout: 'Выйти',
|
||
logoutConfirm: 'Вы уверены, что хотите выйти?',
|
||
logoutButton: 'Выйти',
|
||
verified: 'Подтверждено',
|
||
unverified: 'Не подтверждено',
|
||
),
|
||
dataManagement: TDataManagement(
|
||
title: '💾 Управление данными',
|
||
storageOverview: 'Обзор хранилища',
|
||
totalLocalData: '{count} локальных записей',
|
||
favorites: 'Избранное',
|
||
history: 'История',
|
||
notes: 'Заметки',
|
||
shares: 'Поделиться',
|
||
entriesUnit: 'записей',
|
||
dataDistribution: 'Распределение данных',
|
||
dataCategories: 'Категории данных',
|
||
favoriteData: 'Данные избранного',
|
||
localFavorites: '{count} локальных избранных',
|
||
readingHistory: 'История чтения',
|
||
localHistory: '{count} локальных записей',
|
||
noteData: 'Данные заметок',
|
||
localNotes: '{count} локальных заметок',
|
||
shareHistory: 'История публикаций',
|
||
shareRecords: '{count} записей публикаций',
|
||
imageCache: 'Кэш изображений',
|
||
hanziCache: 'Кэш иероглифов',
|
||
queryCache: '{count} записей кэша запросов',
|
||
offlineQueue: 'Оффлайн-очередь',
|
||
pendingSync: '{count} ожидает синхронизации',
|
||
clearName: '🗑️ Очистить {name}',
|
||
clearConfirm: 'Очистить {name}? Это нельзя отменить.',
|
||
cleared: '{name} очищено',
|
||
dangerZone: 'Опасная зона',
|
||
clearAllData: '⚠️ Очистить все данные',
|
||
clearAllConfirm: 'Все локальные данные будут удалены. Это нельзя отменить!',
|
||
clearAll: 'Очистить всё',
|
||
clearAllLocalData: '🗑️ Очистить все локальные данные',
|
||
allDataCleared: 'Все данные очищены',
|
||
),
|
||
source: TSource(
|
||
title: 'Источник предложений',
|
||
dataOverview: 'Обзор данных',
|
||
totalContent: 'Всего контента',
|
||
openChannels: 'Открытые каналы',
|
||
totalViews: 'Всего просмотров',
|
||
searchChannel: 'Поиск каналов...',
|
||
channelManagement: 'Управление каналами',
|
||
enabledCount: 'Включено',
|
||
manage: 'Управление',
|
||
noChannelFound: 'Канал не найден',
|
||
displaySettings: 'Настройки отображения',
|
||
sortOrder: 'Порядок сортировки',
|
||
newestFirst: 'Сначала новые',
|
||
hottestFirst: 'Сначала популярные',
|
||
contentDedup: 'Дедупликация контента',
|
||
dedupSubtitle: 'Исключить просмотренное при обновлении',
|
||
mixMode: 'Режим микса',
|
||
perPage: 'На страницу',
|
||
perPageUnit: '{count} записей',
|
||
homeCardSettings: 'Настройки карточек',
|
||
cardSource: 'Источник карточек',
|
||
cardSourceSubtitle: 'Настроить источник контента карточек',
|
||
cardMixMode: 'Режим микса карточек',
|
||
advanced: 'Дополнительно',
|
||
importSource: 'Источник импорта',
|
||
importSubtitle: 'Импорт JSON / CSV файлов',
|
||
moreSources: 'Больше источников',
|
||
moreSourcesSubtitle: 'Найти больше каналов контента',
|
||
enableAll: 'Включить все',
|
||
disableAll: 'Отключить все',
|
||
contentCount: 'Контент',
|
||
viewCount: 'Просмотры',
|
||
status: 'Статус',
|
||
enabledStatus: 'Включено',
|
||
disabledStatus: 'Отключено',
|
||
browseChannel: 'Обзор канала',
|
||
channelInfo: '{count} записей · {views} просмотров',
|
||
importSentenceSource: 'Импорт источника',
|
||
importComingSoon:
|
||
'Импорт скоро будет доступен!\n\nПоддержка:\n• JSON / CSV импорт\n• URL подписка на удалённые источники\n• Кастомное сопоставление полей',
|
||
newest: 'Новые',
|
||
hottest: 'Популярные',
|
||
),
|
||
favorites: TFavorites(
|
||
title: 'Избранное',
|
||
manage: 'Управление',
|
||
favorites: 'Избранное',
|
||
categories: 'Категории',
|
||
noStats: 'Нет статистики',
|
||
searchFavorites: 'Поиск в избранном',
|
||
newestFav: '🕐 Новые',
|
||
oldestFav: '📅 Старые',
|
||
sortByType: '📂 По типу',
|
||
newest: 'Новые',
|
||
oldest: 'Старые',
|
||
type: 'Тип',
|
||
selectedCount: 'Выбрано: {count}',
|
||
selectAll: 'Выбрать все',
|
||
unfavorite: 'Убрать из избранного',
|
||
batchUnfavorite: 'Массовое удаление',
|
||
batchUnfavoriteConfirm: 'Убрать {count} выбранных из избранного?',
|
||
unfavoriteSuccess: 'Удалено из избранного',
|
||
unfavoriteConfirm: 'Убрать из избранного',
|
||
unfavoriteItemConfirm: 'Убрать «{title}» из избранного?',
|
||
thinkAgain: 'Отмена',
|
||
copyContent: 'Копировать',
|
||
share: 'Поделиться',
|
||
addTag: '🏷️ Добавить тег',
|
||
moveGroup: '📁 В группу',
|
||
article: '📖 Статья',
|
||
tool: '🔧 Инструмент',
|
||
page: '📄 Страница',
|
||
localMode: 'Локальный режим · Войдите для синхронизации',
|
||
loginSync: 'Войти и синхронизировать',
|
||
noMatchingFavorites: 'Ничего не найдено',
|
||
noFavoritesYet: 'Пока нет избранного',
|
||
tryOtherKeywords: 'Попробуйте другие ключевые слова',
|
||
tapToFavorite: 'Нажмите ❤️ на главной, чтобы добавить',
|
||
shareFavorite: 'Поделиться избранным',
|
||
systemShare: '📤 Системный доступ',
|
||
nfcShare: '📡 NFC-доступ',
|
||
noContentToCopy: 'Нечего копировать',
|
||
copiedToClipboard: 'Скопировано в буфер',
|
||
addTagTitle: '🏷️ Добавить тег',
|
||
tagSeparatorHint: 'Разделяйте теги запятыми',
|
||
tagPlaceholder: 'напр: мотивация, поэзия, жизнь',
|
||
tagSaved: 'Тег сохранён',
|
||
exportFavorites: '📤 Экспорт избранного',
|
||
exportAsText: '📝 Как текст',
|
||
exportAsJson: '📋 Как JSON',
|
||
exportAsCsv: '📊 Как CSV',
|
||
noFavoritesToExport: 'Нечего экспортировать',
|
||
exportHeader: 'Экспорт избранного Xianyan',
|
||
formatCopied: '{format} скопировано в буфер',
|
||
moveToGroup: '📁 Переместить в группу',
|
||
defaultGroup: 'По умолчанию',
|
||
newGroup: 'Новая группа...',
|
||
movedToGroup: 'Перемещено в «{group}»',
|
||
moveFailed: 'Ошибка перемещения',
|
||
newGroupTitle: '📁 Новая группа',
|
||
groupNamePlaceholder: 'Название группы',
|
||
createAndMove: 'Создать и переместить',
|
||
createdAndMoved: 'Создано и перемещено в «{name}»',
|
||
operationFailed: 'Операция не удалась',
|
||
favoriteGroups: '📁 Группы избранного',
|
||
createNew: 'Новая',
|
||
noGroups: 'Нет групп',
|
||
tapToCreateGroup: 'Нажмите + для создания группы',
|
||
deleteGroup: 'Удалить группу',
|
||
deleteGroupConfirm:
|
||
'Удалить группу «{name}»? Избранное переместится в группу по умолчанию.',
|
||
groupDeleted: 'Группа удалена',
|
||
deleteFailed: 'Ошибка удаления',
|
||
renameGroup: 'Переименовать группу',
|
||
newNamePlaceholder: 'Новое название',
|
||
renamed: 'Переименовано',
|
||
renameFailed: 'Ошибка переименования',
|
||
groupCreated: 'Группа создана',
|
||
createFailed: 'Ошибка создания',
|
||
noTitle: 'Без названия',
|
||
noContentToShare: 'Нечем поделиться',
|
||
shareCopied: 'Содержимое скопировано',
|
||
nfcShareSuccess: '📡 NFC-отправка успешна',
|
||
nfcShareFailed: 'Ошибка NFC-отправки',
|
||
thisContent: 'этот контент',
|
||
),
|
||
offline: TOffline(
|
||
title: 'Оффлайн-режим',
|
||
online: 'Онлайн',
|
||
offline: 'Оффлайн',
|
||
onlineDesc: 'Сеть подключена, все функции доступны',
|
||
offlineDesc: 'Сеть отключена, доступен только кэш',
|
||
syncNow: 'Синхронизировать',
|
||
pendingActions: 'Ожидающие действия',
|
||
pendingSync: 'Ожидает',
|
||
lastSync: 'Последняя синхронизация',
|
||
successCount: '{count} успешно',
|
||
noData: 'Нет данных',
|
||
syncAll: 'Синхронизировать все',
|
||
clearQueue: 'Очистить очередь',
|
||
preloadManagement: 'Управление предзагрузкой',
|
||
wifiAutoPreload: 'Автопредзагрузка по WiFi',
|
||
wifiAutoPreloadSubtitle: 'Автокэширование рекомендаций по WiFi',
|
||
autoSyncOnReconnect: 'Автосинхронизация при подключении',
|
||
autoSyncOnReconnectSubtitle:
|
||
'Автосинхронизация оффлайн-действий при подключении',
|
||
preloadChannels: 'Каналы предзагрузки',
|
||
preloadNow: 'Предзагрузить сейчас',
|
||
smartPreloadStrategy: 'Умная предзагрузка',
|
||
preloadMode: 'Режим предзагрузки',
|
||
preloadContent: 'Содержимое предзагрузки',
|
||
preloadFrequency: 'Частота предзагрузки',
|
||
batteryThreshold: 'Порог батареи',
|
||
smartMode: '🧠 Умный',
|
||
wifiOnly: '📶 Только WiFi',
|
||
disabledMode: '🚫 Выкл',
|
||
textContent: 'Текст',
|
||
imageContent: 'Изображения',
|
||
audioContent: 'Аудио',
|
||
realtime: 'В реальном времени',
|
||
hourly: 'Ежечасно',
|
||
daily: 'Ежедневно',
|
||
smartModeDesc:
|
||
'Умный режим: полная предзагрузка по WiFi, только текст по мобильной сети, пауза при низком заряде',
|
||
cacheStrategy: 'Стратегия кэша',
|
||
offlineModeSwitch: 'Оффлайн-режим',
|
||
offlineModeSwitchSubtitle: 'Автокэширование просмотренного контента',
|
||
cacheLimit: 'Лимит кэша',
|
||
cacheExpiryDays: 'Срок действия кэша',
|
||
maxOfflineActions: 'Макс. оффлайн-действий',
|
||
maxRetryCount: 'Макс. попыток',
|
||
daysUnit: 'дней',
|
||
clearQueueTitle: 'Очистить очередь',
|
||
clearQueueConfirm: 'Очистить все ожидающие действия? Это нельзя отменить.',
|
||
syncComplete: 'Синхронизация завершена, {count} успешно',
|
||
syncNoSuccess: 'Синхронизация завершена, нет успешных элементов',
|
||
syncFailed: 'Синхронизация не удалась, попробуйте позже',
|
||
syncError: 'Ошибка синхронизации: {error}',
|
||
wifiPreloadDisabled:
|
||
'Автопредзагрузка по WiFi выключена, включите её сначала',
|
||
networkUnavailable: 'Сеть недоступна, проверьте подключение',
|
||
preloadComplete: 'Предзагрузка завершена, {count} каналов кэшировано',
|
||
preloadSkipped: '{count} каналов уже в кэше, пропущено',
|
||
allChannelsCached: 'Все каналы уже в кэше',
|
||
preloadFailed: 'Предзагрузка не удалась, проверьте подключение',
|
||
preloadError: 'Ошибка предзагрузки: {error}',
|
||
),
|
||
);
|