From 46f750c325ea3f3dfe26fc451b6066d6b77b13af Mon Sep 17 00:00:00 2001 From: patrikx3 Date: Sat, 9 Mar 2024 08:47:41 +0100 Subject: [PATCH] r0b08x [chore] 3/9/2024, 8:47:41 AM --- README.md | 4 +- package.json | 2 +- .../pages/main/key/p3xr-main-key-string.html | 18 + .../pages/main/key/p3xr-main-key-string.js | 68 +- src/strings/en/strings.js | 2 + src/strings/ru/strings.js | 823 +++++++++--------- src/strings/zn/strings.js | 799 ++++++++--------- 7 files changed, 916 insertions(+), 800 deletions(-) diff --git a/README.md b/README.md index 4043715..54a4946 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ https://corifeus.com/redis-ui --- -# 💿 The p3x-redis-ui-material web interface that connects to the p3x-redis-ui-server via http and socket.io v2024.4.134 +# 💿 The p3x-redis-ui-material web interface that connects to the p3x-redis-ui-server via http and socket.io v2024.4.135 @@ -77,7 +77,7 @@ All my domains ([patrikx3.com](https://patrikx3.com) and [corifeus.com](https:// --- -[**P3X-REDIS-UI-MATERIAL**](https://corifeus.com/redis-ui-material) Build v2024.4.134 +[**P3X-REDIS-UI-MATERIAL**](https://corifeus.com/redis-ui-material) Build v2024.4.135 [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) diff --git a/package.json b/package.json index 8db3a6d..80bdac2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p3x-redis-ui-material", - "version": "2024.4.134", + "version": "2024.4.135", "description": "💿 The p3x-redis-ui-material web interface that connects to the p3x-redis-ui-server via http and socket.io", "corifeus": { "icon": "fas fa-database", diff --git a/src/angular/pages/main/key/p3xr-main-key-string.html b/src/angular/pages/main/key/p3xr-main-key-string.html index ade7c6e..d1b1efa 100644 --- a/src/angular/pages/main/key/p3xr-main-key-string.html +++ b/src/angular/pages/main/key/p3xr-main-key-string.html @@ -19,6 +19,24 @@ + + + upload + {{ $root.p3xr.strings.intention.setBuffer }} + {{ + $root.p3xr.strings.intention.setBuffer }} + + + + + + download + {{ $root.p3xr.strings.intention.downloadBuffer }} + {{ + $root.p3xr.strings.intention.downloadBuffer }} + + + format_line_spacing diff --git a/src/angular/pages/main/key/p3xr-main-key-string.js b/src/angular/pages/main/key/p3xr-main-key-string.js index 721a986..d029ba9 100644 --- a/src/angular/pages/main/key/p3xr-main-key-string.js +++ b/src/angular/pages/main/key/p3xr-main-key-string.js @@ -5,7 +5,48 @@ p3xr.ng.component('p3xrMainKeyString', { p3xrKey: '<', p3xrResponse: '<', }, - controller: function (p3xrSocket, p3xrCommon, $rootScope, p3xrDialogJsonView, p3xrDialogJsonEditor) { + controller: function (p3xrSocket, p3xrCommon, $rootScope, p3xrDialogJsonView, p3xrDialogJsonEditor, $scope) { + + this.setBufferUpload = () => { + document.getElementById('p3xr-main-key-string-upload-buffer').click() + } + + $scope.readFileAsBuffer = async (event) => { + const file = event.target.files[0]; + if (!file) { + return; + } + const reader = new FileReader(); + reader.onload = async (loadEvent) => { + const arrayBuffer = loadEvent.target.result; + // Process the buffer here + //console.log(arrayBuffer); + + try { + const response = await p3xrSocket.request({ + action: 'key-set', + payload: { + type: this.p3xrResponse.type, + value: arrayBuffer, + key: this.p3xrKey, + } + }) + + window['gtag']('config', p3xr.settings.googleAnalytics, + { + 'page_path': '/key-set' + } + ); + + } catch (e) { + p3xrCommon.generalHandleError(e) + } finally { + $rootScope.$broadcast('p3xr-refresh-key'); + } + + }; + reader.readAsArrayBuffer(file); + } this.copy = () => { @@ -15,6 +56,31 @@ p3xr.ng.component('p3xrMainKeyString', { p3xrCommon.toast(p3xr.strings.status.dataCopied) } + this.downloadBuffer = async () => { + try { + const response = await p3xrSocket.request({ + action: 'key-get-string-buffer', + payload: { + key: this.p3xrKey, + } + }) + //console.log('response', response) + + const blob = new Blob([response.bufferValue]); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `${this.p3xrKey}.bin`; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (e) { + p3xrCommon.generalHandleError(e) + } finally { + } + } + this.editable = false; let originalValue this.edit = () => { diff --git a/src/strings/en/strings.js b/src/strings/en/strings.js index d33b89b..4d37afa 100644 --- a/src/strings/en/strings.js +++ b/src/strings/en/strings.js @@ -71,6 +71,8 @@ const strings = { }, intention: { copy: 'Copy', + downloadBuffer: 'Download buffer', + setBuffer: 'Set buffer', saveWithFormatJson: 'Save with format', formatJson: 'Format Json', pubsubMonitor: 'PubSub Monitor', diff --git a/src/strings/ru/strings.js b/src/strings/ru/strings.js index 2e1008a..f3382e1 100644 --- a/src/strings/ru/strings.js +++ b/src/strings/ru/strings.js @@ -1,418 +1,443 @@ const strings = { - error: { - cleared_license: 'Очищенная лицензия', - invalid_license: 'Неверная лицензия', - server_error: 'Серверная ошибка, пожалуйсто попробуйте снова', - }, - title: { - donate: 'Донат', - jsonRecursive: 'Расширяем все листья', - name: 'P3X Redis UI', - nameDonated: 'P3X Redis UI+', - main: 'Вы можете выбрать Redis коннектор для соединения из меню снизу слева.', - statistics: 'Статистика', - error: 'Ошибка', - connectingRedis: 'Подключаемся к Redis ...', - socketioConnectError: 'Ошибка Socket.IO', + error: { + cleared_license: "Очищенная лицензия", + invalid_license: "Неверная лицензия", + server_error: "Серверная ошибка, пожалуйсто попробуйте снова", + }, + title: { + donate: "Донат", + 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: 'Кластер', + db: "База данных", + server: "Сервер", + clients: "Клиент", + memory: "Память", + persistence: "Постоянность", + stats: "Статистика", + replication: "Репликация", + cpu: "ЦПУ", + cluster: "Кластер", + }, + confirm: { + title: "Подтвердить", + alert: "Внимание", + info: "Информация", + deleteListItem: "Вы точно хотите удалить этот список?", + deleteHashKey: "Вы точно хотите удалить этот хэш?", + deleteStreamTimestamp: + "Вы точно хотите удалить эту временную отметку потока?", + deleteSetMember: "Вы точно хотите удалить этого члена набора?", + deleteZSetMember: + "Вы точно хотите удалить этого члена сортированного набора?", + deleteConnection: "Подтвердить", + deleteConnectionText: "Вы точно хотите удалить это подключение Redis?", + deleteNode: "Вы точно хотите удалить эту ноду Redis?", + deleteAllKeys: (opts) => { + return `Удалить это дерево и все его ключи (${opts.key})?`; }, - confirm: { - title: 'Подтвердить', - alert: 'Внимание', - info: 'Информация', - deleteListItem: 'Вы точно хотите удалить этот список?', - deleteHashKey: 'Вы точно хотите удалить этот хэш?', - deleteStreamTimestamp: 'Вы точно хотите удалить эту временную отметку потока?', - deleteSetMember: 'Вы точно хотите удалить этого члена набора?', - deleteZSetMember: 'Вы точно хотите удалить этого члена сортированного набора?', - deleteConnection: 'Подтвердить', - deleteConnectionText: 'Вы точно хотите удалить это подключение Redis?', - deleteNode: 'Вы точно хотите удалить эту ноду Redis?', - deleteAllKeys: (opts) => { - return `Удалить это дерево и все его ключи (${opts.key})?` - }, - socketioConnectError: 'Socket.IO не может подключится к серверу, вы можете перезагрузить и решить проблему с соединением самостоятельно, клиент не знает как решить это.', - deleteKey: 'Вы точно хотите удалить этот ключ?', - rename: { - title: 'Вы точно хотите переименовать этот ключ?', - textContent: 'Если вы нажмёте кнопку \"Переименоват\" вы навсегда переименуете этот ключ.', - placeholder: 'Ключ Redis (обязательно)', - - }, - ttl: { - title: 'Вы точно хотите изменить TTL этого ключа?', - textContent: 'Если вы нажмёте \"Изменить\" вы измените TTL этого ключа, пустой TTL равен вечному.', - placeholder: 'TTL ключа Redis (цельная цифра или ничего)', - placeholderPlaceholder: 'Пустота означает вечность, для других случаев используйте целое число.', - convertTextToTime: 'Конвертировать текст во время', - convertTextToTimePlaceholder: 'Например, 1d равен 86400', - }, - license: { - title: 'Включить лицензию донатера?', - textContent: 'Если вы хотите использовать функции для донатеров, пожалуйсто запросите лицензию у alabard@gmail.com . Донат стоит $1/месяц.', - placeholder: 'Ключ лицензии', - }, + socketioConnectError: + "Socket.IO не может подключится к серверу, вы можете перезагрузить и решить проблему с соединением самостоятельно, клиент не знает как решить это.", + deleteKey: "Вы точно хотите удалить этот ключ?", + rename: { + title: "Вы точно хотите переименовать этот ключ?", + textContent: + 'Если вы нажмёте кнопку "Переименоват" вы навсегда переименуете этот ключ.', + placeholder: "Ключ Redis (обязательно)", }, - language: { - // When you translate the english name, keep the Language in English - // eg. Inglés / English - en: 'Английский / English', - zn: '中文 / Chinese', - ru: 'Русский / Russian' + ttl: { + title: "Вы точно хотите изменить TTL этого ключа?", + textContent: + 'Если вы нажмёте "Изменить" вы измените TTL этого ключа, пустой TTL равен вечному.', + placeholder: "TTL ключа Redis (цельная цифра или ничего)", + placeholderPlaceholder: + "Пустота означает вечность, для других случаев используйте целое число.", + convertTextToTime: "Конвертировать текст во время", + convertTextToTimePlaceholder: "Например, 1d равен 86400", }, - intention: { - copy: 'Копировать', - saveWithFormatJson: 'Сохранить с форматом', - formatJson: 'Форматировать Json', - pubsubMonitor: 'Мониторинг PubSub', - // 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: 'Обновить', - clear: 'Очистить', - rename: 'Переименовать', - main: 'Домой', - cancel: 'Отмена', - theme: 'Тема', - github: 'GitHub', - githubRepo: 'Репозиторий', - githubRelease: 'Релизы', - githubChangelog: 'Изменения', - settings: 'Настройки', - connect: 'Подключиться', - disconnect: 'Отключится', - overview: 'Обзор', - console: 'Консоль', - noConnections: 'Подключения отсутствуют, добавьте подключение в меню настроек.', - noConnectionsInSettings: 'Подключения отсутствуют, вы можете добавить НОВОЕ ПОДКЛЮЧЕНИЕ выше.', - connectionAdd: 'Новое подключение', - extend: 'Расширить', - collapse: 'Схлопнуть', - add: 'Добавить', - edit: 'Редактировать', - save: 'Сохранить', - ttl: 'Выбрать TTL', - license: 'Выбрать лицензию', - 'delete': 'Удалить', - remove: 'Убрать', - 'sure': 'Хорошо', - testConnection: 'Проверка соединения', - getKey: 'Загрузка ключа Redis и асоциированных данных ...', - jsonViewShow: 'Показать JSON', - jsonViewEditor: 'Редактировать JSON', - quickConsole: 'Быстрый', + license: { + title: "Включить лицензию донатера?", + textContent: + "Если вы хотите использовать функции для донатеров, пожалуйсто запросите лицензию у alabard@gmail.com . Донат стоит $1/месяц.", + placeholder: "Ключ лицензии", }, - label: { - streamValue: `Поле и значение потока это однополосник. Например: поле1 значение1 "поле 2" "значение 2"`, - streamTimestampId: `'*' означает автогенерацию или определяется как -`, - 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: 'Кластеризация деактивирована', - }, - readonly: { - on: 'Режим \"только чтение\"', - off: 'Режим \"редактирование\"', - }, - theme: { - light: 'Светлая', - dark: 'Тёмная корпоративная', - darkNeu: 'Тёмная', - darkoBluo: 'Тёмное синево', - enterprise: 'Корпоративная', - redis: 'Redis', - matrix: 'Матрица', - }, - connected: (opts) => { - return `Подключено: ${opts.name}` - }, - tree: 'Дерево', - askAuth: 'Запросить авторизацию', + }, + language: { + // When you translate the english name, keep the Language in English + // eg. Inglés / English + en: "Английский / English", + zn: "Китайский / Chinese", + ru: "Русский / Russian", + }, + intention: { + copy: "Копировать", + copyBuffer: "Копировать буфер", + setBuffer: 'Установить как буфер', + saveWithFormatJson: "Сохранить с форматом", + formatJson: "Форматировать Json", + pubsubMonitor: "Мониторинг PubSub", + // 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: "Обновить", + clear: "Очистить", + rename: "Переименовать", + main: "Домой", + cancel: "Отмена", + theme: "Тема", + github: "GitHub", + githubRepo: "Репозиторий", + githubRelease: "Релизы", + githubChangelog: "Изменения", + settings: "Настройки", + connect: "Подключиться", + disconnect: "Отключится", + overview: "Обзор", + console: "Консоль", + noConnections: + "Подключения отсутствуют, добавьте подключение в меню настроек.", + noConnectionsInSettings: + "Подключения отсутствуют, вы можете добавить НОВОЕ ПОДКЛЮЧЕНИЕ выше.", + connectionAdd: "Новое подключение", + extend: "Расширить", + collapse: "Схлопнуть", + add: "Добавить", + edit: "Редактировать", + save: "Сохранить", + ttl: "Выбрать TTL", + license: "Выбрать лицензию", + delete: "Удалить", + remove: "Убрать", + sure: "Хорошо", + testConnection: "Проверка соединения", + getKey: "Загрузка ключа Redis и асоциированных данных ...", + jsonViewShow: "Показать JSON", + jsonViewEditor: "Редактировать JSON", + quickConsole: "Быстрый", + }, + label: { + streamValue: `Поле и значение потока это однополосник. Например: поле1 значение1 "поле 2" "значение 2"`, + streamTimestampId: `'*' означает автогенерацию или определяется как -`, + unableToLoadKey: ({ key }) => { + return `Не вышло загрузить ключ: ${key}. Возможно он был удалён. Полная ошибка написана в консоли.`; }, - status: { - dataCopied: 'Данные скопированы в буфер обмена', - licenseSaved: 'Лицензия сохранена', - 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: 'Этот ключ был применён/добавлен' + 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 + } секунд) ...`; }, - code: { - 'delete-connection': 'Это соединение было удалено и по этому вы были отключены от этой инстанции Redis.', - 'save-connection': 'Это подключение было изменено и по этому вы были отключены от этой инстанции Redis. Вы можете переподключится.', - 'readonly-connections': 'Добавление/сохранение/удаление соединений в режиме \"только чтение\"!', - 'readonly-connection-mode': 'Это соединение в режиме \"только чтение\"!', - 'list-out-of-bounds': 'Индекс этого списка вышел за границы', - 'donation-ware-feature': 'Эта функция доступна в донатерской версии.', - 'auto-connection-failed': 'Вероятно, соединение было удалено и авто-соединение провалилось по таковой причине.', - invalid_console_command: 'Эта команда не работает через GUI.', + resizerInfo: (options) => { + return `Минимальная ширина левой или правой панели это ${options.width}px`; }, - form: { - error: { - required: 'Обязательно', - port: 'Порт в границах 1-65535', - invalid: 'Форма заполнена неверно' + 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: "Кластеризация деактивирована", + }, + readonly: { + on: 'Режим "только чтение"', + off: 'Режим "редактирование"', + }, + theme: { + light: "Светлая", + dark: "Тёмная корпоративная", + darkNeu: "Тёмная", + darkoBluo: "Тёмное синево", + enterprise: "Корпоративная", + redis: "Redis", + matrix: "Матрица", + }, + connected: (opts) => { + return `Подключено: ${opts.name}`; + }, + tree: "Дерево", + askAuth: "Запросить авторизацию", + }, + status: { + dataCopied: "Данные скопированы в буфер обмена", + licenseSaved: "Лицензия сохранена", + 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: "Этот ключ был применён/добавлен", + }, + code: { + "delete-connection": + "Это соединение было удалено и по этому вы были отключены от этой инстанции Redis.", + "save-connection": + "Это подключение было изменено и по этому вы были отключены от этой инстанции Redis. Вы можете переподключится.", + "readonly-connections": + 'Добавление/сохранение/удаление соединений в режиме "только чтение"!', + "readonly-connection-mode": 'Это соединение в режиме "только чтение"!', + "list-out-of-bounds": "Индекс этого списка вышел за границы", + "donation-ware-feature": "Эта функция доступна в донатерской версии.", + "auto-connection-failed": + "Вероятно, соединение было удалено и авто-соединение провалилось по таковой причине.", + invalid_console_command: "Эта команда не работает через GUI.", + }, + form: { + error: { + required: "Обязательно", + port: "Порт в границах 1-65535", + invalid: "Форма заполнена неверно", + }, + connection: { + label: { + name: "Название", + host: "Имя хоста", + port: "Порт", + password: "Пароль", + username: "Имя пользователя", + }, + }, + treeSettings: { + maxValueDisplay: "Длинна видимой строки", + maxValueDisplayInfo: + "Если значение длинны показа равно нулю, будет показано всё, если же оно больше - вывод будет урезан. Если он равен минус одному, вывод будет скрыт до начала редактирования для строк, для других же типов будет показано всё.", + maxKeys: "Максимум символов", + maxKeysInfo: "Максимум ключей ограничен что бы GUI не падал.", + keyCount: () => { + return `Количество ключей: ${p3xr.state.keysRaw.length}`; + }, + 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 - 1000", + maxValueDisplay: + "Максимальное количество показываемых значений должен быть цельным числом между -1 и 32768", + maxKeys: + "Максимальное количество показываемых ключей должен быть цельным числом между 100 и 100000", + }, + }, + key: { + label: { + formName: { + add: "Добавить новый ключ Redis", + edit: "Редактировать ключ Redis", + append: "Добавить к существующему ключу Redis", }, - connection: { - label: { - name: 'Название', - host: 'Имя хоста', - port: 'Порт', - password: 'Пароль', - username: 'Имя пользователя', - }, + }, + field: { + streamTimestamp: "Временная отметка", + key: "Ключ", + type: "Тип", + index: "Индекс", + hashKey: "Хэш", + score: "Очки", + value: "Значение", + }, + error: { + streamTimestamp: + "Временная отметка обязательна, либо в формате Redis либо как *", + key: "Ключ должен иметь длинну минимум одного символа", + hashKey: "Стол хэшей ключей должен иметь длинну минимум одного символа", + score: "Очки сортировки набора обязательны", + value: "Значение обязательно", + }, + }, + main: { + label: { + database: "База данных", + }, + }, + }, + page: { + overview: { + noConnected: "Нету подключения к Redis.", + overviewClients: "Показать подключения по количеству клиентов", + connectedCount: (opt) => { + if (opt.length === 1) { + return "1 клиент"; + } + return `${opt.length} клиентов`; + }, + }, + key: { + label: { + key: "Ключ", + encoding: "Кодировка", + length: "Размер", + ttl: "TTL", + ttlTitle: "Время На Жизнь (TTL)", + type: "Тип", + ttlNotExpire: "не истекает", + lengthString: "символы", + lengthItem: "обьекты", + actions: "Действия", + }, + list: { + table: { + index: "Индекс", + value: "Значение", }, - treeSettings: { - maxValueDisplay: 'Длинна видимой строки', - maxValueDisplayInfo: 'Если значение длинны показа равно нулю, будет показано всё, если же оно больше - вывод будет урезан. Если он равен минус одному, вывод будет скрыт до начала редактирования для строк, для других же типов будет показано всё.', - maxKeys: 'Максимум символов', - maxKeysInfo: 'Максимум ключей ограничен что бы GUI не падал.', - keyCount: () => { - return `Количество ключей: ${p3xr.state.keysRaw.length}` - }, - 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 - 1000', - maxValueDisplay: 'Максимальное количество показываемых значений должен быть цельным числом между -1 и 32768', - maxKeys: 'Максимальное количество показываемых ключей должен быть цельным числом между 100 и 100000', - }, - + }, + hash: { + table: { + hashkey: "Хэш", + value: "Значение", }, - key: { - label: { - formName: { - add: 'Добавить новый ключ Redis', - edit: 'Редактировать ключ Redis', - append: 'Добавить к существующему ключу Redis', - } - }, - field: { - streamTimestamp: 'Временная отметка', - key: 'Ключ', - type: 'Тип', - index: 'Индекс', - hashKey: 'Хэш', - score: 'Очки', - value: 'Значение', - }, - error: { - streamTimestamp: 'Временная отметка обязательна, либо в формате Redis либо как *', - key: 'Ключ должен иметь длинну минимум одного символа', - hashKey: 'Стол хэшей ключей должен иметь длинну минимум одного символа', - score: 'Очки сортировки набора обязательны', - value: 'Значение обязательно', - } + }, + set: { + table: { + value: "Член", }, - main: { - label: { - database: 'База данных', - } - } - }, - page: { - overview: { - noConnected: 'Нету подключения к Redis.', - overviewClients: 'Показать подключения по количеству клиентов', - connectedCount: (opt) => { - if (opt.length === 1) { - return '1 клиент' - } - return `${opt.length} клиентов` - - } + }, + zset: { + table: { + value: "Член", + score: "Очки", }, - key: { - label: { - key: 'Ключ', - encoding: 'Кодировка', - 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: 'Значение', - } - }, + }, + stream: { + table: { + timestamp: "Идентификатор временной отметки", + field: "Поле", + value: "Значение", }, - treeControls: { - settings: 'Настройки дерева', - expandAll: 'Развернуть все', - collapseAll: 'Свернуть все', - 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: 'Поиск в клиенте означает совпадание с содержимым поля поиска. Серверный поиск означает поиск паттерном на подобие *{искомый-текст}*. Для поиска больших наборов лучше использовать серверный поиск. Для меньших поисковых наборов лучше использовать поиск клиентом.' + ` Если количество ключей превышает ${p3xr.settings.maxLightKeysCount}, можно будет искать только серверным поиском.`, - infoDetails: 'Что бы понять как поиск работает, изучите настройки' - }, - pager: { - next: 'Следующий', - prev: 'Предыдущий', - first: 'Первый', - last: 'Последний' - } - } + }, }, - time: { - years: 'года', - months: 'месяца', - days: 'дни', - year: 'год', - month: 'месяц', - day: 'день', + treeControls: { + settings: "Настройки дерева", + expandAll: "Развернуть все", + collapseAll: "Свернуть все", + 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: + "Поиск в клиенте означает совпадание с содержимым поля поиска. Серверный поиск означает поиск паттерном на подобие *{искомый-текст}*. Для поиска больших наборов лучше использовать серверный поиск. Для меньших поисковых наборов лучше использовать поиск клиентом." + + ` Если количество ключей превышает ${p3xr.settings.maxLightKeysCount}, можно будет искать только серверным поиском.`, + infoDetails: "Что бы понять как поиск работает, изучите настройки", + }, + pager: { + next: "Следующий", + prev: "Предыдущий", + first: "Первый", + last: "Последний", + }, }, - redisTypes: { - string: 'Строка', - list: 'Список', - hash: 'Стол хэшей', - set: 'Набор', - zset: 'Сортированный набор - zset', - stream: 'Поток', - } -} - + }, + time: { + years: "года", + months: "месяца", + days: "дни", + year: "год", + month: "месяц", + day: "день", + }, + redisTypes: { + string: "Строка", + list: "Список", + hash: "Стол хэшей", + set: "Набор", + zset: "Сортированный набор - zset", + stream: "Поток", + }, +}; module.exports = strings; diff --git a/src/strings/zn/strings.js b/src/strings/zn/strings.js index 3c6c853..a6a90bd 100644 --- a/src/strings/zn/strings.js +++ b/src/strings/zn/strings.js @@ -1,416 +1,421 @@ const strings = { - error: { - cleared_license: '清除许可证', - invalid_license: '无效的许可证', - server_error: '服务器错误,请重试', - }, - title: { - donate: '捐赠', - jsonRecursive: '展开所有叶子', - name: 'P3X Redis UI', - nameDonated: 'P3X Redis UI+', - main: '您可以从左下方菜单中选择要连接的Redis进行连接访问', - statistics: 'Statistics', - error: '错误', - connectingRedis: '连接到Redis ...', - socketioConnectError: 'Socket.IO 错误', - - db: 'DB', - server: '服务端', - clients: '客户端', - memory: '内存', - persistence: '持久性', - stats: '统计', - replication: '同步复制', - cpu: 'CPU', - cluster: '集群', + error: { + cleared_license: "清除许可证", + invalid_license: "无效的许可证", + server_error: "服务器错误,请重试", + }, + title: { + donate: "捐赠", + jsonRecursive: "展开所有叶子", + name: "P3X Redis UI", + nameDonated: "P3X Redis UI+", + main: "您可以从左下方菜单中选择要连接的Redis进行连接访问", + statistics: "Statistics", + error: "错误", + connectingRedis: "连接到Redis ...", + socketioConnectError: "Socket.IO 错误", + db: "DB", + server: "服务端", + clients: "客户端", + memory: "内存", + persistence: "持久性", + stats: "统计", + replication: "同步复制", + cpu: "CPU", + cluster: "集群", + }, + confirm: { + title: "确认", + alert: "警告", + info: "信息", + deleteListItem: "您确定要删除该列表项吗?", + deleteHashKey: "您确定要删除该哈希键项吗?", + deleteStreamTimestamp: "您确定要删除此流时间戳吗?", + deleteSetMember: "您确定要删除该集合成员?", + deleteZSetMember: "您确定要删除该有序集合成员?", + deleteConnection: "确认", + deleteConnectionText: "您确定要删除此Redis连接吗?", + deleteNode: "您确定要删除此Redis节点吗?", + deleteAllKeys: (opts) => { + return `删除此树及其所有键 (${opts.key})?`; }, - confirm: { - title: '确认', - alert: '警告', - info: '信息', - deleteListItem: '您确定要删除该列表项吗?', - deleteHashKey: '您确定要删除该哈希键项吗?', - deleteStreamTimestamp: '您确定要删除此流时间戳吗?', - deleteSetMember: '您确定要删除该集合成员?', - deleteZSetMember: '您确定要删除该有序集合成员?', - deleteConnection: '确认', - deleteConnectionText: '您确定要删除此Redis连接吗?', - deleteNode: '您确定要删除此Redis节点吗?', - deleteAllKeys: (opts) => { - return `删除此树及其所有键 (${opts.key})?` - }, - socketioConnectError: 'Socket.IO 不能连接到该服务, 您可以重新加载及尝试自己解决该错误, 客户端自身无法解决该错误', - deleteKey: '您确定要删除这个键吗?', - rename: { - title: '您确定要重命名该键名么?', - textContent: '如果您点击重命名按钮,它将永久重命名此键。', - placeholder: '该Redis键(必须存在)', - - }, - ttl: { - title: '您要改变该键的TTL吗?', - textContent: '如果您点击更改TTL按钮, 会改变该键的生存时间,设置为空则有效期永久', - placeholder: 'Redis键的TTL(整数或空)', - placeholderPlaceholder: '空意味着它将永久存在,否则将使用所使用的整数。', - convertTextToTime: '将文字转换为时间', - convertTextToTimePlaceholder: '例如。 1d将是86400', - }, - license: { - title: '启用捐赠的许可证?', - textContent: '如果要使用捐赠的功能,请联系alabard@gmail.com申请许可证。 捐款是每月1美元。', - placeholder: '注册码', - }, + socketioConnectError: + "Socket.IO 无法连接到该服务,请重新加载并尝试解决此错误,客户端无法解决此错误", + deleteKey: "您确定要删除此键吗?", + rename: { + title: "您确定要重命名此键吗?", + textContent: "如果您点击重命名按钮,它将永久重命名此键。", + placeholder: "Redis键(必须存在)", }, - language: { - en: '英语 / English', - zn: '中文 / Chinese', - ru: 'Русский / Russian' + ttl: { + title: "您要更改此键的TTL吗?", + textContent: + "如果您点击更改TTL按钮,将更改此键的生存时间,将其设置为空表示永久有效。", + placeholder: "Redis键的TTL(整数或空)", + placeholderPlaceholder: "空表示永久存在,否则使用所提供的整数。", + convertTextToTime: "将文本转换为时间", + convertTextToTimePlaceholder: "例如,1d 表示 86400", }, - intention: { - copy: '复制', - saveWithFormatJson: '保存格式', - formatJson: '格式化Json', - pubsubMonitor: 'PubSub监视器', - language: '语言 / Language', - ok: '确定', - addKey: '加入此键', - addKeyRoot: '加入一个根键', - reloadKey: '重载键', - reload: '重载', - close: '关闭', - commands: '命令', - view: '视图', - statistics: '统计', - refresh: '刷新', - clear: '清除', - rename: '重命名', - main: '主页', - cancel: '取消', - theme: '主题', - github: 'GitHub', - githubRepo: '仓库', - githubRelease: '发布', - githubChangelog: '更新日志', - settings: '设置', - connect: '连接', - disconnect: '断开', - overview: '概览', - console: '控制台', - noConnections: '没有任何连接,请在设置菜单中添加一个连接。', - noConnectionsInSettings: '没有连接,您可以在上面添加一个新的连接。', - connectionAdd: '新连接', - extend: '拓展', - collapse: '折叠', - add: '添加', - edit: '编辑', - save: '保存', - ttl: '设置 TTL', - license: '设定牌照', - 'delete': '删除', - remove: '删除', - 'sure': '确定', - testConnection: '测试连接', - getKey: '加载Redis键及相关数据...', - jsonViewShow: '显示 JSON 树', - jsonViewEditor: '编辑JSON', - quickConsole: '快的', + license: { + title: "启用捐赠许可证?", + textContent: + "如果要使用捐赠版本的功能,请联系alabard@gmail.com申请许可证。 捐赠金额为每月1美元。", + placeholder: "注册码", }, - label: { - streamValue: `流字段和值是唯一的。 例如:field1 value1 "field 2" "value 2"`, - streamTimestampId: `'*'表示自动生成或指定为-`, - unableToLoadKey: ({ key }) => { - return `无法加载此密钥:: ${key}。可能,密钥被删除了。确切的错误在控制台中。` - }, - bigJson: '此JSON对象超过10 kb,因此请确保您知道自己在做什么,因为某些功能可能会缓慢呈现。', - addNode: '添加节点', - validateJson: '验证JSON', - reducedFunction: `功能限制`, - tooManyKeys: (opts) => { - return `对于最大函数允许的键个数为 ${opts.maxLightKeysCount}. 该数据库允许共超过的键总数为 ${opts.count}.但键的排序及范式树等相关信息会被禁用。搜索仅在服务器上进行,而不是客户端搜索。`; - }, - redisCommandNotFound: '找不到匹配的Redis命令...', - treeKeyStore: `该排序(自然排序)运行在客户端的浏览器上, 意味着针对大型集合(例如超过1W个键),渲染的时长开销需要增加.Redis中没有键排序, 就像这样。`, - socketIoTimeout: (options) => { - return `Socket.IO 请求超时,请求时最长(最大 ${options.timeout / 1000}秒) ...`; - }, - resizerInfo: (options) => { - return `面板(左/右)的最小宽度是 ${options.width}像素` - }, - jsonViewNotParsable: '该值JSON无法解析', - ttlTitle: '设置TTL时间(秒)', - passwordSecure: '密码可能为空,但仍会显示字符,这是一项安全功能。', - treeSeparatorEmpty: '如果树分隔符为空,则树将没有嵌套节点,只有纯列表', - tlsWithoutCert: '无需额外证书即可启用 TLS', - tlsRejectUnauthorized: '拒绝未经授权的证书', - tlsSecure: '如果您看到以 P3X 开头的 TLS 配置或所有 TLS 设置看起来都相同,则这是一项安全功能。 要更改设置,只需将这些设置替换为空或其他内容即可保存。 如果您不更改 TLS 设置,这些设置将保持在服务器上的原样。', - treeSeparatorEmptyNote: '没有嵌套节点,只是一个纯列表', - welcomeConsole: '欢迎来到Redis控制台', - welcomeConsoleInfo: '上下方向键选择历史记录功能已启用', - redisListIndexInfo: '空值追加, -1 到前置或保存到光标之处', - console: '控制台', - connectiondAdd: '添加连接', - connectiondEdit: '编辑连接', - connectiondView: '查看连接', - connections: '连接', - keysSort: { - on: '开启键排序', - off: '关闭键排序' - }, - cluster: { - on: '群集', - off: '集群关闭', - }, - readonly: { - on: '只读', - off: '只读关闭', - }, - theme: { - light: '浅棕', - dark: '黑暗企业', - darkNeu: '暗色', - darkoBluo: '蓝色', - enterprise: '企业风', - redis: 'Redis风格', - matrix: '矩阵', - }, - connected: (opts) => { - return `已连接: ${opts.name}` - }, - tree: '树', - askAuth: '请求授权', + }, + language: { + en: "英语 / English", + zn: "中文 / Chinese", + ru: "Русский / Russian", + }, + intention: { + copy: "复制", + copyBuffer: "复制缓冲区", + setBuffer: '设置为缓冲区', + saveWithFormatJson: "保存格式", + formatJson: "格式化Json", + pubsubMonitor: "PubSub监视器", + language: "语言 / Language", + ok: "确定", + addKey: "加入此键", + addKeyRoot: "加入一个根键", + reloadKey: "重载键", + reload: "重载", + close: "关闭", + commands: "命令", + view: "视图", + statistics: "统计", + refresh: "刷新", + clear: "清除", + rename: "重命名", + main: "主页", + cancel: "取消", + theme: "主题", + github: "GitHub", + githubRepo: "仓库", + githubRelease: "发布", + githubChangelog: "更新日志", + settings: "设置", + connect: "连接", + disconnect: "断开", + overview: "概览", + console: "控制台", + noConnections: "没有任何连接,请在设置菜单中添加一个连接。", + noConnectionsInSettings: "没有连接,您可以在上面添加一个新的连接。", + connectionAdd: "新连接", + extend: "拓展", + collapse: "折叠", + add: "添加", + edit: "编辑", + save: "保存", + ttl: "设置 TTL", + license: "设定牌照", + delete: "删除", + remove: "删除", + sure: "确定", + testConnection: "测试连接", + getKey: "加载Redis键及相关数据...", + jsonViewShow: "显示 JSON 树", + jsonViewEditor: "编辑JSON", + quickConsole: "快的", + }, + label: { + streamValue: `流字段和值是唯一的。 例如:field1 value1 "field 2" "value 2"`, + streamTimestampId: `'*'表示自动生成或指定为-`, + unableToLoadKey: ({ key }) => { + return `无法加载此密钥:: ${key}。可能,密钥被删除了。确切的错误在控制台中。`; }, - status: { - dataCopied: '数据在剪贴板中', - licenseSaved: '许可证已保存', - 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 `db索引设置为 ${opts.db}. ` - }, - treeDeleted: (opts) => { - return `该树已删除 (${opts.key}).` - - }, - deletedKey: (opts) => { - return `该键已删除 (${opts.key}).` - }, - renamedKey: '该键已重命名', - ttlChanged: '该键TTL已被更改', - notInteger: '输入值不是一个整数', - persisted: '永久键', - set: '键已设置/添加' + bigJson: + "此JSON对象超过10 kb,因此请确保您知道自己在做什么,因为某些功能可能会缓慢呈现。", + addNode: "添加节点", + validateJson: "验证JSON", + reducedFunction: `功能限制`, + tooManyKeys: (opts) => { + return `对于最大函数允许的键个数为 ${opts.maxLightKeysCount}. 该数据库允许共超过的键总数为 ${opts.count}.但键的排序及范式树等相关信息会被禁用。搜索仅在服务器上进行,而不是客户端搜索。`; + }, + redisCommandNotFound: "找不到匹配的Redis命令...", + treeKeyStore: `该排序(自然排序)运行在客户端的浏览器上, 意味着针对大型集合(例如超过1W个键),渲染的时长开销需要增加.Redis中没有键排序, 就像这样。`, + socketIoTimeout: (options) => { + return `Socket.IO 请求超时,请求时最长(最大 ${ + options.timeout / 1000 + }秒) ...`; }, - code: { - 'delete-connection': '此连接已删除,因此您与此Redis实例断开连接。', - 'save-connection': '此连接已更改,因此您与此Redis实例断开连接。 你可以重新连接。', - 'readonly-connections': '连接(添加/保存/删除)只是只读!', - 'readonly-connection-mode': '此连接为只读模式!', - 'list-out-of-bounds': '此列表索引超出范围', - 'donation-ware-feature': '捐赠版本中提供了此功能。', - 'auto-connection-failed': '因此,可能导致连接被删除并且自动连接失败。', - invalid_console_command: '此命令无法通过 GUI 运行。', + resizerInfo: (options) => { + return `面板(左/右)的最小宽度是 ${options.width}像素`; }, - form: { - error: { - required: '必填', - port: '端口号范围是 1-65535', - invalid: '值无效,请重新输入' + jsonViewNotParsable: "该值JSON无法解析", + ttlTitle: "设置TTL时间(秒)", + passwordSecure: "密码可能为空,但仍会显示字符,这是一项安全功能。", + treeSeparatorEmpty: "如果树分隔符为空,则树将没有嵌套节点,只有纯列表", + tlsWithoutCert: "无需额外证书即可启用 TLS", + tlsRejectUnauthorized: "拒绝未经授权的证书", + tlsSecure: + "如果您看到以 P3X 开头的 TLS 配置或所有 TLS 设置看起来都相同,则这是一项安全功能。 要更改设置,只需将这些设置替换为空或其他内容即可保存。 如果您不更改 TLS 设置,这些设置将保持在服务器上的原样。", + treeSeparatorEmptyNote: "没有嵌套节点,只是一个纯列表", + welcomeConsole: "欢迎来到Redis控制台", + welcomeConsoleInfo: "上下方向键选择历史记录功能已启用", + redisListIndexInfo: "空值追加, -1 到前置或保存到光标之处", + console: "控制台", + connectiondAdd: "添加连接", + connectiondEdit: "编辑连接", + connectiondView: "查看连接", + connections: "连接", + keysSort: { + on: "开启键排序", + off: "关闭键排序", + }, + cluster: { + on: "群集", + off: "集群关闭", + }, + readonly: { + on: "只读", + off: "只读关闭", + }, + theme: { + light: "浅棕", + dark: "黑暗企业", + darkNeu: "暗色", + darkoBluo: "蓝色", + enterprise: "企业风", + redis: "Redis风格", + matrix: "矩阵", + }, + connected: (opts) => { + return `已连接: ${opts.name}`; + }, + tree: "树", + askAuth: "请求授权", + }, + status: { + dataCopied: "数据在剪贴板中", + licenseSaved: "许可证已保存", + 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 `db索引设置为 ${opts.db}. `; + }, + treeDeleted: (opts) => { + return `该树已删除 (${opts.key}).`; + }, + deletedKey: (opts) => { + return `该键已删除 (${opts.key}).`; + }, + renamedKey: "该键已重命名", + ttlChanged: "该键TTL已被更改", + notInteger: "输入值不是一个整数", + persisted: "永久键", + set: "键已设置/添加", + }, + code: { + "delete-connection": "此连接已删除,因此您与此Redis实例断开连接。", + "save-connection": + "此连接已更改,因此您与此Redis实例断开连接。 你可以重新连接。", + "readonly-connections": "连接(添加/保存/删除)只是只读!", + "readonly-connection-mode": "此连接为只读模式!", + "list-out-of-bounds": "此列表索引超出范围", + "donation-ware-feature": "捐赠版本中提供了此功能。", + "auto-connection-failed": "因此,可能导致连接被删除并且自动连接失败。", + invalid_console_command: "此命令无法通过 GUI 运行。", + }, + form: { + error: { + required: "必填", + port: "端口号范围是 1-65535", + invalid: "值无效,请重新输入", + }, + connection: { + label: { + name: "连接名字", + host: "主机名", + port: "端口", + password: "密码", + username: "用户名", + }, + }, + treeSettings: { + maxValueDisplay: "最大值显示字符串长度", + maxValueDisplayInfo: + "如果最大值显示为零,则显示所有内容,如果大于0,则将截断。 如果它是-1,它将不显示没有编辑字符串的值,对于其他人,它显示所有内容。", + maxKeys: "最大密钥数", + maxKeysInfo: "为了避免GUI崩溃,我们限制了最大密钥数。", + keyCount: () => { + return `键数: ${p3xr.state.keysRaw.length}`; + }, + label: { + animation: "使用动画", + noAnimation: "没有动画", + jsonFormatTwoSpace: "用2个空格格式化JSON", + jsonFormatFourSpace: "用4个空格格式化JSON", + formName: "Redis设置", + searchModeClient: "客户端搜索模式", + searchModeServer: "服务端搜索模式", + searchModeStartsWith: "以模式启动搜索", + searchModeIncludes: "搜索包括模式", + }, + field: { + treeSeparator: "树分隔符", + treeSeparatorSelector: "树分隔符选择器", + page: "树分页数", + keyPageCount: "按键分页数", + keysSort: "对键进行排序", + searchMode: "搜索模式", + searchModeStartsWith: "搜索以 / 开头", + }, + error: { + keyPageCount: "密钥页数必须为5到100之间的整数", + page: "页数必须是10 - 500之间的整数", + maxValueDisplay: "最大显示值必须是介于-1和32768之间的整数", + maxKeys: "最大密钥计数值必须是100到100000之间的整数", + }, + }, + key: { + label: { + formName: { + add: "添加新的Redis键", + edit: "编辑 Redis key", + append: "添加到现有的Redis键", }, - connection: { - label: { - name: '连接名字', - host: '主机名', - port: '端口', - password: '密码', - username: '用户名', - }, + }, + field: { + streamTimestamp: "时间戳记", + key: "键", + type: "类型", + index: "索引", + hashKey: "哈希键", + score: "分数", + value: "值", + }, + error: { + streamTimestamp: "时间戳是必需的,可以是Redis格式,也可以*", + key: "键至少存在一个字符", + hashKey: "哈希表键至少是一个字符", + score: "排序的集合分数是必需的", + value: "该值是必填的", + }, + }, + main: { + label: { + database: "DB", + }, + }, + }, + page: { + overview: { + noConnected: "没有任何连接到Redis", + overviewClients: "按客户端连接计数展示所有连接", + connectedCount: (opt) => { + if (opt.length === 1) { + return "1 客户端"; + } + return `${opt.length} 客户端`; + }, + }, + key: { + label: { + key: "键", + encoding: "编码", + length: "大小", + ttl: "TTL", + ttlTitle: "生存时间", + type: "类型", + ttlNotExpire: "不会过期", + lengthString: "字符", + lengthItem: "项数", + actions: "操作", + }, + list: { + table: { + index: "索引", + value: "值", }, - treeSettings: { - maxValueDisplay: '最大值显示字符串长度', - maxValueDisplayInfo: '如果最大值显示为零,则显示所有内容,如果大于0,则将截断。 如果它是-1,它将不显示没有编辑字符串的值,对于其他人,它显示所有内容。', - maxKeys: '最大密钥数', - maxKeysInfo: '为了避免GUI崩溃,我们限制了最大密钥数。', - keyCount: () => { - return `键数: ${p3xr.state.keysRaw.length}` - }, - label: { - animation: '使用动画', - noAnimation: '没有动画', - jsonFormatTwoSpace: '用2个空格格式化JSON', - jsonFormatFourSpace: '用4个空格格式化JSON', - formName: 'Redis设置', - searchModeClient: '客户端搜索模式', - searchModeServer: '服务端搜索模式', - searchModeStartsWith: '以模式启动搜索', - searchModeIncludes: '搜索包括模式', - }, - field: { - treeSeparator: '树分隔符', - treeSeparatorSelector: '树分隔符选择器', - page: '树分页数', - keyPageCount: '按键分页数', - keysSort: '对键进行排序', - searchMode: '搜索模式', - searchModeStartsWith: '搜索以 / 开头' - }, - error: { - keyPageCount: '密钥页数必须为5到100之间的整数', - page: '页数必须是10 - 500之间的整数', - maxValueDisplay: '最大显示值必须是介于-1和32768之间的整数', - maxKeys: '最大密钥计数值必须是100到100000之间的整数', - }, - + }, + hash: { + table: { + hashkey: "哈希", + value: "值", }, - key: { - label: { - formName: { - add: '添加新的Redis键', - edit: '编辑 Redis key', - append: '添加到现有的Redis键', - } - }, - field: { - streamTimestamp: '时间戳记', - key: '键', - type: '类型', - index: '索引', - hashKey: '哈希键', - score: '分数', - value: '值', - }, - error: { - streamTimestamp: '时间戳是必需的,可以是Redis格式,也可以*', - key: '键至少存在一个字符', - hashKey: '哈希表键至少是一个字符', - score: '排序的集合分数是必需的', - value: '该值是必填的', - } + }, + set: { + table: { + value: "成员", }, - main: { - label: { - database: 'DB', - } - } - }, - page: { - overview: { - noConnected: '没有任何连接到Redis', - overviewClients: '按客户端连接计数展示所有连接', - connectedCount: (opt) => { - if (opt.length === 1) { - return '1 客户端' - } - return `${opt.length} 客户端` - - } + }, + zset: { + table: { + value: "成员", + score: "分数", }, - key: { - label: { - key: '键', - encoding: '编码', - length: '大小', - ttl: 'TTL', - ttlTitle: '生存时间', - type: '类型', - ttlNotExpire: '不会过期', - lengthString: '字符', - lengthItem: '项数', - actions: '操作', - }, - list: { - table: { - index: '索引', - value: '值', - } - }, - hash: { - table: { - hashkey: '哈希', - value: '值', - } - }, - set: { - table: { - value: '成员' - } - }, - zset: { - table: { - value: '成员', - score: '分数', - } - }, - stream: { - table:{ - timestamp: '时间戳ID', - field: '领域', - value: '值', - } - }, - + }, + stream: { + table: { + timestamp: "时间戳ID", + field: "领域", + value: "值", }, - treeControls: { - settings: '树设置', - expandAll: '展开所有', - collapseAll: '折叠所有', - search: { - search: '在键中搜索', - clear: '清空当前搜索结果', - placeholderClient: '客户端搜索', - placeholderServer: '服务端搜索', - info: `客户端搜索是匹配输入的文本,服务端搜索则遵循*{search-text}*模式搜索.对于大量数据的搜索最好在服务端进行搜索,而较小数据量可以考虑客户端搜索。如果键数超过 ${p3xr.settings.maxLightKeysCount}个的则只能在服务端搜索`, - largeSetInfo: '在大型集合中,禁用客户端搜索。 所以现在只能进行服务器端搜索。', - infoDetails: '要了解搜索的工作原理,请查看设置' - }, - pager: { - next: '下一页', - prev: '上一页', - first: '首页', - last: '末页' - } - } + }, }, - time: { - years: '年份', - months: '个月', - days: '天', - year: '年', - month: '月', - day: '天', + treeControls: { + settings: "树设置", + expandAll: "展开所有", + collapseAll: "折叠所有", + search: { + search: "在键中搜索", + clear: "清空当前搜索结果", + placeholderClient: "客户端搜索", + placeholderServer: "服务端搜索", + info: `客户端搜索是匹配输入的文本,服务端搜索则遵循*{search-text}*模式搜索.对于大量数据的搜索最好在服务端进行搜索,而较小数据量可以考虑客户端搜索。如果键数超过 ${p3xr.settings.maxLightKeysCount}个的则只能在服务端搜索`, + largeSetInfo: + "在大型集合中,禁用客户端搜索。 所以现在只能进行服务器端搜索。", + infoDetails: "要了解搜索的工作原理,请查看设置", + }, + pager: { + next: "下一页", + prev: "上一页", + first: "首页", + last: "末页", + }, }, - redisTypes: { - string: '字符串', - list: '列表', - hash: '哈希表', - set: '集合', - zset: '有序集合 - zset', - stream: '流', - } -} - + }, + time: { + years: "年份", + months: "个月", + days: "天", + year: "年", + month: "月", + day: "天", + }, + redisTypes: { + string: "字符串", + list: "列表", + hash: "哈希表", + set: "集合", + zset: "有序集合 - zset", + stream: "流", + }, +}; module.exports = strings;