const strings = {
error: {
server_error: "Серверная ошибка, пожалуйсто попробуйте снова"
},
title: {
donate: "Донат",
donateTitle: "Поддержите P3X Redis UI",
donateDescription: "P3X Redis UI — бесплатный проект с открытым исходным кодом. Расходы на обслуживание приложения, функции ИИ, образы Docker, серверы и инфраструктуру оплачиваются из собственного кармана разработчика. Если вы считаете этот инструмент полезным, пожалуйста, поддержите его дальнейшее развитие пожертвованием. Каждый вклад помогает проекту жить и расти. Спасибо!",
jsonRecursive: "Расширяем все листья",
name: "P3X Redis UI",
nameDonated: "P3X Redis UI+",
main: "Вы можете выбрать Redis коннектор для соединения из меню снизу слева.",
statistics: "Статистика",
error: "Ошибка",
connectingRedis: "Подключаемся к Redis ...",
socketioConnectError: "Ошибка Socket.IO",
db: "База данных",
server: "Сервер",
clients: "Клиент",
memory: "Память",
persistence: "Постоянность",
stats: "Статистика",
replication: "Репликация",
cpu: "ЦПУ",
cluster: "Кластер",
modules: "Модули",
errorstats: "Статистика ошибок",
commandstats: "Статистика команд",
latencystats: "Статистика задержек",
keysizes: "Размеры ключей",
threads: "Потоки"
},
confirm: {
dropIndex: "Вы уверены, что хотите удалить этот индекс?",
uploadBuffer: "Вы уверены, чтобы загрузить эти двоичные данные?",
uploadBufferDone: "Двоичные данные загружаются",
uploadBufferDoneAndSave: "Двоичные данные загружаются и сохраняются на сервере.",
title: "Подтвердить",
alert: "Внимание",
info: "Информация",
deleteListItem: "Вы точно хотите удалить этот список?",
deleteHashKey: "Вы точно хотите удалить этот хэш?",
deleteStreamTimestamp: "Вы точно хотите удалить эту временную отметку потока?",
deleteSetMember: "Вы точно хотите удалить этого члена набора?",
deleteZSetMember: "Вы точно хотите удалить этого члена сортированного набора?",
deleteConnection: "Подтвердить",
deleteConnectionText: "Вы точно хотите удалить это подключение Redis?",
deleteNode: "Вы точно хотите удалить эту ноду Redis?",
delete: "Удалить?",
deleteAllKeys: opts => {
return `Удалить это дерево и все его ключи (${opts.key})?`;
},
deleteSearchKeys: opts => {
return `Вы уверены, что хотите удалить все ключи, соответствующие "${opts.pattern}"? Найдено ${opts.count} ключей.`;
},
socketioConnectError: "Socket.IO не может подключится к серверу, вы можете перезагрузить и решить проблему с соединением самостоятельно, клиент не знает как решить это.",
socketioAuthRequired: "Для Socket.IO нужна авторизация. Выполните вход через HTTP Basic Auth (логин/пароль) и перезагрузите страницу.",
deleteKey: "Вы точно хотите удалить этот ключ?",
rename: {
title: "Вы точно хотите переименовать этот ключ?",
textContent: 'Если вы нажмёте кнопку "Переименоват" вы навсегда переименуете этот ключ.',
placeholder: "Ключ Redis (обязательно)"
},
ttl: {
title: "Вы точно хотите изменить TTL этого ключа?",
textContent: 'Если вы нажмёте "Изменить" вы измените TTL этого ключа, пустой TTL равен вечному.',
placeholder: "TTL ключа Redis (цельная цифра или ничего)",
placeholderPlaceholder: "Пустота означает вечность, для других случаев используйте целое число.",
convertTextToTime: "Конвертировать текст во время",
convertTextToTimePlaceholder: "Например, 1d равен 86400"
}
},
language: {
// When you translate the english name, keep the Language in English
// eg. Inglés / English
bg: "Български / Bulgarian",
cs: "Čeština / Czech",
de: "Deutsch / German",
el: "Ελληνικά / Greek",
en: "Английский / English",
es: "Español / Spanish",
fr: "Français / French",
hu: "Magyar / Hungarian",
it: "Italiano / Italian",
ja: "日本語 / Japanese",
nl: "Nederlands / Dutch",
pl: "Polski / Polish",
"pt-PT": "Português / Portuguese",
ro: "Română / Romanian",
ru: "Русский / Russian",
sk: "Slovenčina / Slovak",
sr: "Српски / Serbian",
sv: "Svenska / Swedish",
tr: "Türkçe / Turkish",
uk: "Українська / Ukrainian",
zn: "中文 / Chinese",
ar: "العربية / Arabic",
az: "Azərbaycanca / Azerbaijani",
be: "Беларуская / Belarusian",
bn: "বাংলা / Bengali",
da: "Dansk / Danish",
et: "Eesti / Estonian",
fi: "Suomi / Finnish",
fil: "Filipino / Filipino",
he: "עברית / Hebrew",
hr: "Hrvatski / Croatian",
hy: "Հայերեն / Armenian",
id: "Bahasa Indonesia / Indonesian",
ka: "ქართული / Georgian",
kk: "Қазақша / Kazakh",
km: "ខ្មែរ / Khmer",
ko: "한국어 / Korean",
ky: "Кыргызча / Kyrgyz",
lt: "Lietuvių / Lithuanian",
mk: "Македонски / Macedonian",
ms: "Bahasa Melayu / Malay",
ne: "नेपाली / Nepali",
no: "Norsk / Norwegian",
"pt-BR": "Português (Brasil) / Portuguese (Brazil)",
sl: "Slovenščina / Slovenian",
tg: "Тоҷикӣ / Tajik",
th: "ไทย / Thai",
vi: "Tiếng Việt / Vietnamese",
"zh-HK": "中文(香港) / Chinese (Hong Kong)",
"zh-TW": "中文(台灣) / Chinese (Taiwan)",
bs: 'Bosanski / Bosnian',
si: 'සිංහල / Sinhala',
sw: 'Kiswahili / Swahili',
ta: 'தமிழ் / Tamil'
},
intention: {
copy: "Копировать",
downloadBuffer: "Скачать бинарный файл",
setBuffer: "Загрузить двоичный файл",
exportKeys: "Экспорт ключей",
exportAllKeys: (opts) => `Экспорт всех ${opts.count} ключей`,
exportSearchResults: (opts) => `Экспорт ${opts.count} результатов`,
deleteAllKeysMenu: (opts) => `Удалить все ${opts.count}`,
importKeys: "Импорт ключей",
deleteSearchKeys: (opts) => `Удалить ${opts.count} совпадающих ключей`,
saveWithFormatJson: "Сохранить с форматом",
formatJson: "Форматировать Json",
wrap: "Перенос",
unwrap: "Без переноса",
downloadJson: "Скачать JSON",
pubsubMonitor: "PubSub",
pulse: "Pulse",
profiler: "Profiler",
memoryAnalysis: "Analysis",
// When you translate the language, keep the Language in English
// eg. Idioma / Language
language: "Язык / Language",
ok: "ОК",
addKey: "Добавить к этому ключу",
addKeyRoot: "Добавить к корневому ключу",
reloadKey: "Кнопка перезагрузки",
reload: "Перезагрузить",
close: "Закрыть",
commands: "Команды",
view: "Вид",
statistics: "Статистика",
refresh: "Обновить",
pause: "Пауза",
resume: "Продолжить",
clear: "Очистить",
rename: "Переименовать",
main: "База данных",
cancel: "Отмена",
theme: "Тема",
github: "GitHub",
githubRepo: "Репозиторий",
githubRelease: "Релизы",
githubChangelog: "Изменения",
info: "Info",
settings: "Настройки",
connect: "Подключиться",
disconnect: "Отключится",
overview: "Обзор",
console: "Консоль",
noConnections: "Подключения отсутствуют, добавьте подключение в меню настроек.",
noConnectionsInSettings: "Подключения отсутствуют, вы можете добавить НОВОЕ ПОДКЛЮЧЕНИЕ выше.",
connectionAdd: "Новое подключение",
addGroup: "Добавить группу",
extend: "Расширить",
collapse: "Схлопнуть",
add: "Добавить",
edit: "Редактировать",
save: "Сохранить",
ttl: "Выбрать TTL",
delete: "Удалить",
remove: "Убрать",
areYouSure: "Вы уверены?",
sure: "Хорошо",
testConnection: "Проверка соединения",
getKey: "Загрузка ключа Redis и асоциированных данных ...",
jsonViewShow: "Показать JSON",
jsonViewEditor: "Редактировать JSON",
quickConsole: "Быстрый"
},
label: {
id: {
nodeId: 'Идентификатор узла',
id: "Идентификатор соединения",
info: "Если вы не хотите изменять свойства: sshPassword, sshPrivateKey, пароля, tlsCrt, tlsKey, tlsCa, введите идентификатор соединения в эти свойства, чтобы сохранить значения свойств нетронутыми. Если вы хотите использовать ту же логику в пароле узла, введите идентификатор узла в пароле узла."
},
secureFeature: 'Если вы видите значение, которое начинается с P3X и выглядит похоже, это функция безопасности. Чтобы изменить настройки, просто замените эти настройки на пустые или что-то другое, и они будут сохранены. Если вы не измените настройки, настройки останутся такими, какие они есть на сервере.',
aiTranslating: "Перевод...",
aiSettings: "Настройки ИИ",
aiGroqApiKey: "Ключ API Groq",
aiGroqApiKeyInfo: "Необязательно. Собственный ключ API Groq для лучшей производительности. Получите бесплатный ключ на",
aiGroqApiKeyPlaceholder: "gsk_...",
aiGroqApiKeySaved: "Ключ API ИИ сохранён",
aiGroqApiKeyInvalid: "Недействительный ключ API Groq",
aiGroqApiKeyNotSet: "Не задан (по умолчанию сервера)",
aiEnabled: "ИИ включён",
aiEnabledYes: "Да",
aiEnabledNo: "Нет",
aiRouteViaNetwork: "Маршрут через network.corifeus.com",
aiRoutingDirect: "Запросы идут напрямую в Groq с вашим собственным API-ключом, минуя network.corifeus.com.",
aiRoutingNetwork: "AI-запросы маршрутизируются через network.corifeus.com. Если у вас есть собственный бесплатный ключ API Groq, вы можете отключить этот переключатель.",
ssh: {
on: 'SSH включен',
off: 'SSH выключен',
sshHost: 'Хост SSH',
sshPort: 'Порт SSH',
sshUsername: 'Имя пользователя SSH',
sshPassword: 'Пароль SSH',
sshPrivateKey: 'Приватный ключ SSH'
},
isBuffer: opts => `[object ArrayBuffer] означает, что значение представляет собой двоичный буфер или значение превышает ${opts.maxValueAsBuffer}`,
streamValue: `Поле и значение потока это однополосник. Например: поле1 значение1 "поле 2" "значение 2"`,
streamTimestampId: `'*' означает автогенерацию или определяется как <millisecondsTime>-<sequenceNumber>`,
unableToLoadKey: ({
key
}) => {
return `Не вышло загрузить ключ: ${key}. Возможно он был удалён. Полная ошибка написана в консоли.`;
},
bigJson: "Этот JSON обьект больше 10 kb, удостоверьтесь что вы знаете что делаете, так как некоторые функции рендерятся медленнее.",
addNode: "Добавить ноду",
validateJson: "Проверить JSON",
reducedFunction: `Урезанная функциональность`,
tooManyKeys: opts => {
return `Для полноценной работы максимума функций разрешены ключи в общем количестве ${opts.maxLightKeysCount} штук. Эта база данных имеет больше ключей чем разрешено, суммой ${opts.count}. Сортировка и информация древом для ключей выключены. Поиск будет производится только на серверной стороне.`;
},
redisCommandNotFound: "Ни одна команда Redis не совпадает с вводом ...",
treeKeyStore: `Сортировка (природное сравнение) выполняется в клиенте (он же браузер), что замедляет большие сортировки, например больше чем 10k ключей, это может добавить немного задержки к прогрузке страницы. В самом Redis нету сортировки ключей, это можно делать только так.`,
socketIoTimeout: options => {
return `Socket.IO не успел ответить на запрос (максимум ${options.timeout / 1000} секунд) ...`;
},
resizerInfo: options => {
return `Минимальная ширина левой или правой панели это ${options.width}px`;
},
jsonViewNotParsable: "Это значение не подобно JSON",
ttlTitle: "Выбрать TTL в секундах",
passwordSecure: "Пароль может быть пустым, но он всё ещё будет отображать символы, это фича для безопасности.",
tlsWithoutCert: "Включить TLS без дополнительного сертификата",
tlsRejectUnauthorized: "Reject unauthorized certificate",
tlsSecure: "Если вы видите TLS конфигурацию которая начинается с P3X или все настройки TLS выглядят одинаково, это фича для безопасности. Для изминения настроек надо заменить эти настройки пустыми или чем либо ещё, и они сохранятся. Если вы ек измените настройки TLS, настройки останутся такими же как и на самом сервере.",
treeSeparatorEmpty: "Если разделитель дерева пуст, в дереве вместо вложенных нод будет лишь чистый список",
treeSeparatorEmptyNote: "Никаких вложенных нод, только чистый список",
welcomeConsole: "Добро пожаловать в консоль Redis",
welcomeConsoleInfo: "История по нажатию ВВЕРХ или ВНИЗ кллючена",
redisListIndexInfo: "Пустое для добавления, -1 что бы сделать вид или сохранить в указанную позицию.",
console: "Консоль",
connectiondAdd: "Добавить соединение",
connectiondEdit: "Изменить соединение",
connectiondView: "Осмотреть соединение",
connections: "Соединения",
keysSort: {
on: "Сортировка ключей включена",
off: "Сортировка ключей выключена"
},
cluster: {
on: "Кластеризация активирована",
off: "Кластеризация деактивирована"
},
sentinel: {
on: "Сентинел включен",
off: "Сентинел выключен",
name: "Имя дозорного"
},
readonly: {
on: 'Режим "только чтение"',
off: 'Режим "редактирование"'
},
theme: {
light: "Светлая",
dark: "Тёмная корпоративная",
darkNeu: "Тёмная",
darkoBluo: "Тёмное синево",
enterprise: "Корпоративная",
redis: "Redis",
matrix: "Матрица"
},
connected: opts => {
return `Подключено: ${opts.name}`;
},
tree: "Дерево",
askAuth: "Запросить авторизацию",
keyboardShortcuts: "Горячие клавиши",
about: "О программе",
supportedLanguages: "Поддерживаемые языки",
version: "Версия",
redisVersion: "Версия Redis",
modules: "Модули",
shortcutRefresh: "Обновить",
shortcutSearch: "Фокус на поиске",
shortcutNewKey: "Новый ключ",
shortcutDisconnect: "Отключится",
themeAuto: "Авто (система)",
languageAuto: "Авто (система)",
shortcutCommandPalette: "Палитра команд",
commandPalette: "Палитра команд",
noResults: "Нет результатов",
redisCommandsReference: "Команды Redis",
ungrouped: "Без группы",
grouped: "Сгруппированы",
connectFirst: "Сначала подключитесь к серверу Redis",
searchLanguage: "Поиск языка...",
exportProgress: "Экспорт ключей...",
importProgress: "Импорт ключей...",
importPreview: "Предпросмотр",
importOverwrite: "Перезаписать",
importSkip: "Пропустить",
importConflict: "Если ключ уже существует:",
noKeysToExport: "Нет ключей для экспорта",
time: "Время",
type: "Тип",
format: "Формат",
loading: "Загрузка...",
autoRefresh: "Авто",
exportSearchHint: "Экспортируются только ключи, соответствующие текущему поиску",
importSearchHint: "Импорт применяется ко всей базе данных, а не только к результатам поиска",
deleteSearchHint: "Удалить все ключи, соответствующие текущему поиску",
deletingSearchKeys: "Удаление совпадающих ключей...",
importNoKeys: "Ключи не найдены в файле",
desktopNotifications: "Уведомления рабочего стола",
desktopNotificationsEnabled: "Включить уведомления рабочего стола",
desktopNotificationsInfo: "Получайте уведомления ОС при отключении и повторном подключении Redis, когда приложение не в фокусе."
},
status: {
dataCopied: "Данные скопированы в буфер обмена",
exportDone: "Экспорт завершён",
deletedSearchKeys: (opts) => `${opts.count} ключей удалено`,
indexCreated: "Индекс создан",
indexDropped: "Индекс удалён",
importDone: (opts) => `Импорт завершён: ${opts.created} создано, ${opts.skipped} пропущено, ${opts.errors} ошибок`,
nodeRemoved: "Нода удалена",
keyIsNotExisting: "Этот ключ вероятно был удалён или истёк.",
keyCount: opts => {
if (opts.keyCount === 0) {
return "Нету ключей";
} else if (opts.keyCount === 1) {
return "1 ключ";
} else {
return `${opts.keyCount} ключей`;
}
},
treeExpandAll: "Развернуть все листья дерева, это имеет цену, временную ...",
noRedisKeys: "Нету ключей в базе данных.",
redisConnected: "Redis успешно подключен",
reloadingDataInfo: "Перезагружаем информацию о данных Redis",
added: "Добавлено",
saved: "Обновлено",
cancelled: "Отменено",
deleted: "Удалено",
savedRedis: "Данные Redis были сохранены",
redisDisconnected: opts => {
return `Произошла ошибка в теперешнем соединении: ${opts.error.message}`;
},
dbChanged: opts => {
return `Выбран индекс базы данных ${opts.db}. `;
},
treeDeleted: opts => {
return `Ключ дерева был удалён (${opts.key}).`;
},
deletedKey: opts => {
return `Ключ был удалён (${opts.key}).`;
},
renamedKey: "Этот ключ был переименован",
ttlChanged: "TTL этого ключа был изменён",
notInteger: "Этот ввод не для цельной цифры",
persisted: "Этот ключ не исчезнет сам",
set: "Этот ключ был применён/добавлен",
connectionRestored: "Соединение восстановлено"
},
code: {
"delete-connection": "Это соединение было удалено и по этому вы были отключены от этой инстанции Redis.",
"save-connection": "Это подключение было изменено и по этому вы были отключены от этой инстанции Redis. Вы можете переподключится.",
"readonly-connections": 'Добавление/сохранение/удаление соединений в режиме "только чтение"!',
"readonly-connection-mode": 'Это соединение в режиме "только чтение"!',
"list-out-of-bounds": "Индекс этого списка вышел за границы",
"invalid-json-value": "The value is not valid JSON.",
"http_auth_required": "Требуется авторизация: выполните вход через HTTP Basic Auth и перезагрузите страницу.",
"auto-connection-failed": "Вероятно, соединение было удалено и авто-соединение провалилось по таковой причине.",
invalid_console_command: "Эта команда не работает через GUI.",
"AI_DISABLED": "AI отключен. Включите его в настройках AI.",
"AI_PROMPT_REQUIRED": "Требуется запрос AI.",
"GROQ_API_KEY_READONLY": "Ключ Groq API доступен только для чтения и не может быть изменён.",
"blocked_api_access": "Ваш план Groq API не позволяет доступ к этой модели. Обновите план Groq или используйте прокси network.corifeus.com.",
"rate_limit": "Достигнут лимит AI. Попробуйте позже или используйте свой ключ Groq API в настройках."
},
form: {
error: {
required: "Обязательно",
port: "Порт в границах 1-65535",
invalid: "Форма заполнена неверно"
},
connection: {
label: {
name: "Название",
group: "Группа",
host: "Имя хоста",
port: "Порт",
password: "Пароль",
username: "Имя пользователя"
}
},
treeSettings: {
maxValueDisplay: "Длинна видимой строки",
maxValueDisplayInfo: "Если значение длинны показа равно нулю, будет показано всё, если же оно больше - вывод будет урезан. Если он равен минус одному, вывод будет скрыт до начала редактирования для строк, для других же типов будет показано всё.",
maxKeys: "Максимум символов",
maxKeysInfo: "Максимум ключей ограничен что бы GUI не падал.",
keyCount: (opts) => {
return `Количество ключей: ${opts?.keyCount ?? 0}`;
},
label: {
animation: "Использовать анимацию",
noAnimation: "Выключить анимацию",
jsonFormatTwoSpace: "Форматировать JSON двумя пробелами",
jsonFormatFourSpace: "Форматировать JSON четырьмя пробелами",
formName: "Настройки Redis",
searchModeClient: "Клиентский режим поиска",
searchModeServer: "Серверный режим поиска",
searchModeStartsWith: "Поиск начала",
searchModeIncludes: "Поиск содержимого"
},
field: {
treeSeparator: "Разделитель дерева",
treeSeparatorSelector: "Избиратель разделителя дерева",
page: "Счётчик количества страниц",
keyPageCount: "Счётчик количества ключей",
keysSort: "Сортировка ключей",
searchMode: "Режим поиска",
searchModeStartsWith: "Поиск начинается с / содержит"
},
error: {
keyPageCount: "Ограничитель показа ключей на странице должен быть цельным числом в границах 5 - 100",
page: "Ограничитель показа страниц должен быть цельным числом в границах 10 - 5000",
maxValueDisplay: "Максимальное количество показываемых значений должен быть цельным числом между -1 и 32768",
maxKeys: "Максимальное количество показываемых ключей должен быть цельным числом между 100 и 100000"
}
},
key: {
label: {
formName: {
add: "Добавить новый ключ Redis",
edit: "Редактировать ключ Redis",
append: "Добавить к существующему ключу Redis"
}
},
field: {
streamTimestamp: "Временная отметка",
key: "Ключ",
type: "Тип",
index: "Индекс",
hashKey: "Хэш",
score: "Очки",
value: "Значение"
},
error: {
streamTimestamp: "Временная отметка обязательна, либо в формате Redis либо как *",
key: "Ключ должен иметь длинну минимум одного символа",
hashKey: "Стол хэшей ключей должен иметь длинну минимум одного символа",
score: "Очки сортировки набора обязательны",
value: "Значение обязательно"
}
},
main: {
label: {
database: "База данных"
}
}
},
page: {
search: {
title: "Поиск",
index: "Индекс",
query: "Запрос",
results: "Результаты",
noIndex: "Индексы не найдены",
createIndex: "Создать индекс",
dropIndex: "Удалить индекс",
indexInfo: "Информация об индексе",
indexName: "Имя индекса",
prefix: "Префикс ключа (необязательно)",
fieldName: "Имя поля"
},
monitor: {
title: "Мониторинг",
memory: "Память",
opsPerSec: "Операций/сек",
clients: "Клиенты",
blocked: "Заблокировано",
hitsMisses: "Попадания",
networkIo: "Сеть I/O",
slowLog: "Медленный журнал",
totalCommands: "Всего",
expired: "Истекли",
evicted: "Вытеснено",
clientList: "Список клиентов",
topKeys: "Крупнейшие ключи по памяти",
killClient: "Завершить клиента",
clientKilled: "Клиент завершён",
confirmKillClient: "Вы уверены, что хотите завершить этого клиента?",
noKeys: "Нет ключей",
rss: "RSS",
peak: "Пик",
fragmentation: "Фрагментация",
hitsAndMisses: "Попадания / Промахи",
noClients: "Нет клиентов"
},
analysis: {
title: "Анализ памяти",
runAnalysis: "Запустить анализ",
running: "Анализ...",
typeDistribution: "Распределение типов",
prefixMemory: "Память по префиксу",
topKeysByMemory: "Крупнейшие ключи по памяти",
expirationOverview: "Срок действия ключей",
memoryBreakdown: "Разбивка памяти",
keysScanned: "Просканировано ключей",
totalMemory: "Общая память",
rssMemory: "RSS память",
peakMemory: "Пиковая память",
luaMemory: "Lua память",
overheadMemory: "Накладные расходы",
datasetMemory: "Набор данных",
fragmentation: "Фрагментация",
allocator: "Аллокатор",
withTTL: "С TTL",
persistent: "Постоянные",
avgTTL: "Средний TTL",
prefix: "Префикс",
keyCount: "Количество ключей",
memoryUsage: "Использование памяти",
noPrefix: "(без префикса)",
topN: "Top N",
maxScanKeys: "Макс. сканируемых ключей",
type: "Тип",
noData: "Нет данных. Нажмите Запустить анализ, чтобы начать.",
exportAll: "Экспорт всего"
},
overview: {
noConnected: "Нету подключения к Redis.",
overviewClients: "Показать подключения по количеству клиентов",
connectedCount: opt => {
if (opt.length === 1) {
return "1 клиент";
}
return `${opt.length} клиентов`;
}
},
key: {
label: {
key: "Ключ",
encoding: "Кодировка",
compression: "Сжатие",
aiRateLimited: "Достигнут лимит запросов AI. Попробуйте позже или используйте собственный ключ Groq API в Настройках.",
aiError: "Запрос AI не удался",
length: "Размер",
ttl: "TTL",
ttlTitle: "Время На Жизнь (TTL)",
type: "Тип",
ttlNotExpire: "не истекает",
lengthString: "байты",
lengthItem: "обьекты",
actions: "Действия"
},
list: {
table: {
index: "Индекс",
value: "Значение"
}
},
hash: {
table: {
hashkey: "Хэш",
value: "Значение"
}
},
set: {
table: {
value: "Член"
}
},
zset: {
table: {
value: "Член",
score: "Очки"
}
},
stream: {
table: {
timestamp: "Идентификатор временной отметки",
field: "Поле",
value: "Значение"
}
},
timeseries: {
chart: "График",
info: "Информация",
addPoint: "Добавить точку",
from: "От (мс или -)",
to: "До (мс или +)",
aggregation: "Агрегация",
timeBucket: "Bucket (мс)",
none: "Нет",
dataPoints: "точки данных",
labels: "Метки",
rules: "Правила",
retention: "Хранение",
timestamp: "Временная метка",
value: "Значение",
retentionHint: "0 = без срока действия, или миллисекунды",
duplicatePolicy: "Политика дубликатов",
labelsHint: "ключ1 значение1 ключ2 значение2",
timestampHint: "'*' означает автогенерацию, или метка времени в миллисекундах",
editAllHint: "Одна точка данных на строку: метка_времени значение (метка времени может быть * для автоматической)",
autoSpread: "Автоматический интервал разброса *",
formula: "Формула",
formulaLinear: "Линейная",
formulaRandom: "Случайная",
formulaSawtooth: "Пилообразная",
formulaPoints: "Точки",
formulaAmplitude: "Амплитуда",
formulaOffset: "Смещение",
generate: "Сгенерировать",
exportChart: "Экспорт PNG",
overlay: "Наложение ключей",
overlayHint: "Ключи через запятую",
mrangeFilter: "Фильтр меток",
bulkMode: "Массовая генерация",
mrangeHint: "напр. sensor=temp"
}
},
treeControls: {
settings: "Настройки дерева",
expandAll: "Развернуть все",
collapseAll: "Свернуть все",
level: "Уровень",
search: {
search: "Поиск ключа",
clear: "Очистить теперешний поиск",
placeholderClient: "Искать в клиенте",
placeholderServer: "Искать на сервере",
largeSetInfo: "In a large set, client side searching is disabled. so right now only server side searching is possible.",
info: (opts) => "Поиск в клиенте означает совпадание с содержимым поля поиска. Серверный поиск означает поиск паттерном на подобие *{искомый-текст}*. Для поиска больших наборов лучше использовать серверный поиск. Для меньших поисковых наборов лучше использовать поиск клиентом." + ` Если количество ключей превышает ${opts?.maxLightKeysCount ?? 110000}, можно будет искать только серверным поиском.`,
infoDetails: "Что бы понять как поиск работает, изучите настройки"
},
pager: {
next: "Следующий",
prev: "Предыдущий",
first: "Первый",
last: "Последний"
}
}
},
time: {
type: "Тип",
format: "Формат",
loading: "Загрузка...",
years: "года",
months: "месяца",
days: "дни",
year: "год",
month: "месяц",
day: "день",
second: "секунда",
seconds: "секунды",
minute: "минута",
minutes: "минуты",
hour: "час",
hours: "часы"
},
redisTypes: {
string: "String",
list: "List",
hash: "Hash table",
set: "Set",
zset: "Sorted set - zset",
stream: "Stream",
json: "JSON",
timeseries: "Time Series"
}
};
module.exports = strings;