const strings = {
error: {
server_error: "服务器错误,请重试",
aiPromptTooLong: "AI 提示过长(最多 4096 个字符)",
},
title: {
donate: "捐赠",
donateTitle: "支持 P3X Redis UI",
donateDescription: "P3X Redis UI 是一个免费的开源项目。应用程序、AI 功能、Docker 镜像、服务器和基础设施的维护成本均来自开发者自掏腰包。如果您觉得这个工具有用,请考虑通过捐款支持其持续开发。每一份贡献都有助于保持项目的活力和发展。谢谢!",
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: "集群",
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(用户名/密码)后再刷新页面。",
invalidCredentials: "用户名或密码无效。",
deleteKey: "您确定要删除此键吗?",
rename: {
title: "您确定要重命名此键吗?",
textContent: "如果您点击重命名按钮,它将永久重命名此键。",
placeholder: "Redis键(必须存在)"
},
ttl: {
title: "您要更改此键的TTL吗?",
textContent: "如果您点击更改TTL按钮,将更改此键的生存时间,将其设置为空表示永久有效。",
placeholder: "Redis键的TTL(整数或空)",
placeholderPlaceholder: "空表示永久存在,否则使用所提供的整数。",
convertTextToTime: "将文本转换为时间",
convertTextToTimePlaceholder: "例如,1d 表示 86400"
}
},
language: {
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",
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: "断开",
logout: "登出",
overview: "概览",
console: "控制台",
noConnections: "没有任何连接,请在设置菜单中添加一个连接。",
noConnectionsInSettings: "没有连接,您可以在上面添加一个新的连接。",
connectionAdd: "新连接",
addGroup: "添加分组",
extend: "拓展",
collapse: "折叠",
add: "添加",
edit: "编辑",
save: "保存",
ttl: "设置 TTL",
fieldTtl: "字段 TTL",
digest: "摘要",
delete: "删除",
remove: "删除",
areYouSure: "你确定吗?",
sure: "确定",
testConnection: "测试连接",
getKey: "加载Redis键及相关数据...",
jsonViewShow: "显示 JSON 树",
jsonViewEditor: "编辑JSON",
quickConsole: "快的",
moveUp: "上移",
moveDown: "下移",
},
diff: {
reviewChanges: "\u67e5\u770b\u66f4\u6539",
inline: "\u884c\u5185",
sideBySide: "\u5e76\u6392",
additions: "\u65b0\u589e",
deletions: "\u5220\u9664",
unchangedLines: "\u672a\u66f4\u6539\u7684\u884c",
noChanges: "\u672a\u68c0\u6d4b\u5230\u66f4\u6539",
before: "\u53d8\u66f4\u524d",
after: "\u53d8\u66f4\u540e",
},
label: {
id: {
nodeId: '节点号',
id: "连接ID",
info: "如果您不想更改以下属性:sshPassword、sshPrivateKey、password、tlsCrt、tlsKey、tlsCa,请在这些属性中输入连接 ID 以保持属性值不变。 如果您希望节点密码具有相同的逻辑,则在节点密码中输入节点 ID。"
},
secureFeature: '如果您看到以 P3X 开头的值并且看起来相似,则这是一项安全功能。 要更改设置,只需将这些设置替换为空或其他内容即可保存它们。 如果您不更改设置,这些设置将保留在服务器上的原样。',
aiTranslating: "翻译中...",
aiSettings: "AI 设置",
aiGroqApiKey: "Groq API 密钥",
aiGroqApiKeyInfo: "可选。使用自己的 Groq API 密钥获得更好性能。免费获取密钥",
aiGroqApiKeyPlaceholder: "gsk_...",
aiGroqApiKeySaved: "AI API 密钥已保存",
aiGroqApiKeyInvalid: "无效的 Groq API 密钥",
aiGroqApiKeyNotSet: "未设置(使用服务器默认)",
aiEnabled: "AI 已启用",
aiEnabledYes: "是",
aiEnabledNo: "否",
aiRouteViaNetwork: "通过 network.corifeus.com 路由",
aiRoutingDirect: "使用您自己的 API 密钥直接向 Groq 发送查询,绕过 network.corifeus.com。",
aiRoutingNetwork: "AI 查询通过 network.corifeus.com 路由。如果您有自己的免费 Groq API 密钥,可以关闭此开关直接使用 Groq。",
aiMaxTokens: "AI 最大令牌数",
aiMaxTokensInfo: "用于 AI 回复的最大令牌数。更高的值可以生成更长的回复,但可能会消耗更多 API 额度。",
consoleDrawer: {
toggleTooltip: "切换控制台",
clearTooltip: "清除回滚记录",
closeTooltip: "关闭控制台",
aiSettingsTooltip: "AI 设置",
modeRedis: "REDIS",
modeAi: "AI",
connectionChipNoDb: opts => `${opts.name}`,
connectionChipWithDb: opts => `${opts.name} · db ${opts.db}`,
pageChip: opts => `页: ${opts.page}`,
connectingTo: opts => `正在连接到 ${opts.name}…`,
connectedTo: opts => `已连接到 ${opts.name}(Redis ${opts.version} ${opts.mode},已加载 ${opts.modules} 个模块)`,
connectedToNoInfo: opts => `已连接到 ${opts.name}`,
disconnectedFrom: opts => `已从 ${opts.name} 断开连接`,
notConnected: "未连接。",
limitedAiOnly: "仅限受限 AI 模式,仍可进行通用 Redis 问答。",
connectHint: "如需实时诊断,请输入:connect <name>",
cheatsheetHint: "输入 ai: help 查看你可以提问的内容。",
needsConnection: "此功能需要有效连接。请先输入 \"connect <name>\"。",
aiNeedsConnectionReason: "实时状态 AI(tool use)仅在连接到 Redis 时可用。",
verbNeedsConnection: opts => `"${opts.verb}" 需要有效连接,请先输入 "connect <name>"。`,
aiLimitedMode: "AI 当前处于受限模式,连接前只能回答通用 Redis 知识问题。",
welcomeDisconnected: "欢迎。你目前尚未连接到任何 Redis 实例。",
readyIndicator: "就绪。",
},
cheatsheet: {
title: "AI 速查表 — 我可以问什么?",
subtitle: "点击任一提示即可粘贴到控制台,然后按回车。",
searchPlaceholder: "筛选提示…",
openOfficialDocs: "Redis 命令 ↗",
openOfficialDocsTooltip: "在 redis.io 打开官方 Redis 命令参考",
closeTooltip: "关闭 (Esc)",
empty: "没有提示符合你的筛选条件。",
footerHint: "提示:输入 \"ai:\" 后面接任何语言的任何内容 — AI 能理解 54 种语言,并在需要时使用实时的 Redis 状态。",
// Each group has: name (category label), match (search-filter alias), prompts (array of example strings)
groups: {
diagnostics: {
name: "实时诊断",
description: "让 AI 通过安全的只读工具调查服务器的实时状态。",
prompts: [
"为什么内存这么高?",
"显示最慢的 10 条查询",
"有哪些客户端已连接?",
"maxmemory 策略是什么?",
"最近有没有键被驱逐?",
"有没有延迟事件?",
"服务器已运行多久?",
"命中率是多少?",
"显示 CPU 使用率",
"总结键空间",
"每种数据类型使用了多少内存?",
"目前有什么在阻塞服务器?"
]
},
keys: {
name: "键",
description: "无需在树上点击即可查看、查找和分析键。",
prompts: [
"找出所有匹配 user:* 的键",
"每个数据库有多少个键?",
"显示这个 db 中最大的 hash",
"找出 TTL 小于 60 秒的键",
"哪些键没有 TTL?",
"键 session:abc 是什么类型?",
"估算 \"session:\" 前缀所使用的内存",
"显示键 user:42 的对象编码",
"有没有键即将过期?",
"哪个命名空间使用了最多内存?"
]
},
dataTypes: {
name: "数据类型",
description: "用自然语言描述对每种 Redis 类型执行创建/读取/更新。",
prompts: [
"创建一个名为 user:1 的 hash,字段为 name=Alice age=30",
"向 list tasks 添加三个元素",
"向 set favourites 添加成员",
"向 sorted set leaderboard 添加带分数的成员",
"向 stream events 追加一个事件",
"获取 stream events 的最后 10 条记录",
"获取 hash user:1 的所有字段",
"获取 set favourites 的成员",
"从 leaderboard 获取分数前 10 名"
]
},
modules: {
name: "模块",
description: "针对已加载的 Redis 模块的查询(下方分类仅在对应模块存在时显示)。",
prompts: []
},
json: {
name: "RedisJSON",
description: "当 ReJSON 模块被加载时可用。",
prompts: [
"在 user:42 创建一个 JSON 文档,内容为 { name: \"Alice\", age: 30 }",
"读取 user:42 的 name 字段",
"把 user:42 的 age 更新为 31",
"列出所有 JSON 键",
"从一个 JSON 文档删除一个字段",
"使用 JSONPath 获取嵌套字段"
]
},
search: {
name: "RediSearch",
description: "当 search 模块被加载时可用。",
prompts: [
"列出所有全文索引",
"在索引 idx:products 上对 \"redis\" 执行全文搜索",
"创建一个基于 hash 的索引,字段 title (TEXT) 和 price (NUMERIC)",
"获取索引 idx:products 的信息",
"删除索引 idx:products",
"找出价格介于 10 到 50 之间的文档",
"编写一个结合文本和向量相似度的混合搜索"
]
},
timeseries: {
name: "RedisTimeSeries",
description: "当 timeseries 模块被加载时可用。",
prompts: [
"列出所有 timeseries 键",
"向 temp:room1 添加一个数据点",
"获取 temp:room1 从昨天到现在的范围",
"按标签 sensor=temp 获取多范围",
"为 temp:room1 生成 100 个正弦波数据点",
"显示 temp:room1 的保留期与标签"
]
},
bloom: {
name: "RedisBloom (Bloom / Cuckoo / Top-K / CMS / T-Digest)",
description: "当 bf 模块被加载时可用。",
prompts: [
"检查条目 foo 是否存在于 bloom filter spam:ips 中",
"向 bloom filter spam:ips 添加条目",
"创建一个名为 popular 的 top-K,K=10",
"对键 /home 查询 count-min sketch traffic",
"向 t-digest 添加数值并获取第 95 百分位",
"显示 bloom filter spam:ips 的信息"
]
},
vectorSet: {
name: "VectorSet (Redis 8+)",
description: "当检测到 Redis 8+ 时可用(原生 VECTORSET 类型)。",
prompts: [
"向 embeddings 添加一个向量",
"找出与查询向量最相似的 10 个向量",
"显示 vectorset embeddings 的维度和数量",
"从 vectorset embeddings 删除一个元素",
"使用 VSIM 按元素名称搜索"
]
},
redis8: {
name: "Redis 8+ 功能",
description: "当检测到 Redis 8+ 时显示。",
prompts: [
"使用 HEXPIRE 设置 hash 字段的 TTL",
"获取字符串值的摘要",
"执行混合全文 + 向量搜索 (FT.HYBRID)",
"使用 MSETEX 为多个键设置共享过期时间",
"带消费者组删除 stream 条目 (XDELEX)",
"显示前 10 个 slot 的 cluster slot-stats"
]
},
scripting: {
name: "脚本",
description: "根据自然语言描述生成 Lua / EVAL 脚本。",
prompts: [
"编写一个原子脚本,仅在 Y > 5 时递增计数器 X",
"使用 Lua 生成 100 个随机键",
"将这条 shell 管道转换为单个 EVAL:keys user:* | GET | grep inactive | DEL",
"为了 cluster 安全性,将一个批量操作移植到 Lua",
"在单个 Lua 调用中完成 check-and-set 风格的更新",
"遍历一个 hash,删除符合某种模式的字段"
]
},
cluster: {
name: "集群",
description: "仅在 cluster 模式下显示。",
prompts: [
"显示 cluster 信息",
"列出 cluster 节点",
"按键数量显示前 10 个 slot",
"按内存显示前 10 个 slot",
"哪个 master 拥有 slot 5000?"
]
},
acl: {
name: "ACL (Redis 6+)",
description: "查看访问控制用户以及当前连接。",
prompts: [
"我以哪个身份连接?",
"列出所有 ACL 用户",
"我有哪些权限?",
"显示 default 用户的规则"
]
},
qna: {
name: "常规问答",
description: "提问 Redis 相关的知识性问题 — 不使用工具,只给答案。",
prompts: [
"什么是 ZADD?",
"cluster failover 是如何工作的?",
"解释 SCAN 与 KEYS 的区别",
"什么时候该用 EVAL 而不是多条命令?",
"Redis 有哪些持久化选项?",
"RDB 和 AOF 有什么区别?",
"Redis Sentinel 如何决定新的 master?",
"解释 cluster 模式下的 hash tag"
]
},
translate: {
name: "自然语言 → Redis 命令",
description: "用中文(或 54 种语言中的任何一种)描述你想做什么,AI 会写出对应的 Redis 命令。",
prompts: [
"删除键 user:42",
"把键 foo 重命名为 bar",
"让键 session:abc 在 10 秒后过期",
"把键 source 复制到 destination",
"把计数器 visits 加 5",
"把键 greeting 设为 \"hello\",有效 1 小时",
"显示最常被访问的 10 个键",
"删除所有匹配 temp:* 的键"
]
}
}
},
ssh: {
on: 'SSH 开启',
off: 'SSH 关闭',
sshHost: 'SSH 主机',
sshPort: 'SSH端口',
sshUsername: 'SSH 用户名',
sshPassword: 'SSH密码',
sshPrivateKey: 'SSH 私钥'
},
isBuffer: opts => `[object ArrayBuffer] 表示該值是二進位緩衝區或該值大於 ${opts.maxValueAsBuffer}`,
streamValue: `流字段和值是唯一的。 例如:field1 value1 "field 2" "value 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: `该排序(自然排序)运行在客户端的浏览器上, 意味着针对大型集合(例如超过1W个键),渲染的时长开销需要增加.Redis中没有键排序, 就像这样。`,
socketIoTimeout: options => {
return `Socket.IO 请求超时,请求时最长(最大 ${options.timeout / 1000}秒) ...`;
},
resizerInfo: options => {
return `面板(左/右)的最小宽度是 ${options.width}像素`;
},
jsonViewNotParsable: "该值JSON无法解析",
ttlTitle: "设置TTL时间(秒)",
passwordSecure: "密码可能为空,但仍会显示字符,这是一项安全功能。",
aclAuthHint: "使用 Redis ACL 用户名和密码进行身份验证。对于没有密码的默认用户,请留空。",
treeSeparatorEmpty: "如果树分隔符为空,则树将没有嵌套节点,只有纯列表",
tlsWithoutCert: "无需额外证书即可启用 TLS",
tlsRejectUnauthorized: "拒绝未经授权的证书",
tlsSecure: "如果您看到以 P3X 开头的 TLS 配置或所有 TLS 设置看起来都相同,则这是一项安全功能。 要更改设置,只需将这些设置替换为空或其他内容即可保存。 如果您不更改 TLS 设置,这些设置将保持在服务器上的原样。",
treeSeparatorEmptyNote: "没有嵌套节点,只是一个纯列表",
welcomeConsole: "欢迎来到Redis控制台",
welcomeConsoleInfo: "SHIFT + 上下方向键选择历史记录功能已启用",
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: "Auto (system)",
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 连接成功",
reverted: "\u5df2\u8fd8\u539f",
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: "键已设置/添加",
connectionRestored: "连接已恢复",
socketDisconnected: "已断开连接",
socketError: "连接错误",
deletedHashKey: "哈希键已删除",
deletedSetMember: "集合成员已删除",
deletedListElement: "列表元素已删除",
deletedZSetMember: "有序集合成员已删除",
deletedStreamTimestamp: "流条目已删除",
},
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: "如果最大值显示为零,则显示所有内容,如果大于0,则将截断。 如果它是-1,它将不显示没有编辑字符串的值,对于其他人,它显示所有内容。",
maxKeys: "最大密钥数",
maxKeysInfo: "为了避免GUI崩溃,我们限制了最大密钥数。",
keyCount: (opts) => {
return `键数: ${opts?.keyCount ?? 0}`;
},
label: {
animation: "使用动画",
noAnimation: "没有动画",
undoEnabled: "\u5df2\u542f\u7528\u64a4\u9500",
undoDisabled: "\u5df2\u7981\u7528\u64a4\u9500",
diffEnabled: "\u4fdd\u5b58\u524d\u663e\u793a diff",
diffDisabled: "\u4fdd\u5b58\u524d diff \u5df2\u7981\u7528",
jsonFormatTwoSpace: "用2个空格格式化JSON",
jsonFormatFourSpace: "用4个空格格式化JSON",
formName: "Redis设置",
searchModeClient: "客户端搜索模式",
searchModeServer: "服务端搜索模式",
searchModeStartsWith: "以模式启动搜索",
searchModeIncludes: "搜索包括模式"
},
undoHint: "\u64a4\u9500\u4ec5\u9002\u7528\u4e8e string \u548c JSON \u7c7b\u578b\u7684\u952e",
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 key",
append: "添加到现有的Redis键"
}
},
field: {
streamTimestamp: "时间戳记",
key: "键",
type: "类型",
index: "索引",
hashKey: "哈希键",
score: "分数",
value: "值",
errorRate: "错误率",
capacity: "容量",
topk: "Top K",
width: "宽度",
depth: "深度",
decay: "衰减",
compression: "压缩",
increment: "增量",
item: "项目",
vectorValues: "向量值(以逗号分隔)",
element: "元素名称",
},
error: {
streamTimestamp: "时间戳是必需的,可以是Redis格式,也可以*",
key: "键至少存在一个字符",
hashKey: "哈希表键至少是一个字符",
score: "排序的集合分数是必需的",
value: "该值是必填的",
errorRate: "错误率必须在 0 到 1 之间(例如 0.01)",
capacity: "容量必须是正整数",
topk: "Top K 必须是正整数",
width: "宽度必须是正整数",
depth: "深度必须是正整数",
item: "项目是必填的"
}
},
main: {
label: {
database: "DB"
}
}
},
page: {
search: {
title: "搜索",
index: "索引",
query: "查询",
results: "结果",
noIndex: "未找到索引",
createIndex: "创建索引",
dropIndex: "删除索引",
indexInfo: "索引信息",
indexName: "索引名称",
prefix: "键前缀(可选)",
fieldName: "字段名称",
hybridMode: "混合搜索 (FT.HYBRID)",
vectorField: "向量字段",
vectorValues: "向量值",
},
monitor: {
title: "监控",
memory: "内存",
opsPerSec: "操作/秒",
clients: "客户端",
blocked: "已阻塞",
hitsMisses: "命中率",
networkIo: "网络 I/O",
slowLog: "慢查询日志",
noSlowQueries: "未记录慢查询",
confirmSlowLogReset: "确定要重置慢查询日志吗?",
slowLogResetDone: "慢查询日志已重置",
totalCommands: "总计",
expired: "已过期",
evicted: "已驱逐",
clientList: "客户端列表",
topKeys: "内存最大的键",
killClient: "终止客户端",
clientKilled: "客户端已终止",
confirmKillClient: "确定要终止此客户端吗?",
noKeys: "没有键",
rss: "RSS",
peak: "峰值",
fragmentation: "碎片化",
hitsAndMisses: "命中 / 未命中",
noClients: "没有客户端",
slotStats: "集群槽统计",
serverInfo: "服务器信息",
os: "操作系统",
port: "网络端口",
pid: "进程号",
configFile: "配置文件",
uptime: "正常运行时间",
keyspace: "Redis 键空间",
keys: "Redis 键",
expires: "过期",
noKeyspace: "没有 Redis 键",
persistence: "数据持久化",
rdbLastSave: "RDB 最后保存",
rdbStatus: "关系数据库状态",
rdbChanges: "自上次保存以来的更改",
aofEnabled: "启用 AOF",
aofSize: "AOF 大小",
replication: "Redis 复制",
role: "复制角色",
replicas: "连接的副本",
masterHost: "主节点主机",
linkStatus: "复制链接状态",
cpu: "中央处理器使用率",
cpuSys: "系统",
cpuUser: "用户",
modules: "已加载 Redis 模块",
noModules: "未加载 Redis 模块",
clusterSlotMap: "集群槽位映射",
slotRange: "槽位范围",
totalSlots: "总槽位数",
noClusterData: "没有可用的集群数据",
},
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: "导出全部",
memoryDoctor: "Memory Doctor",
doctorNoData: "点击刷新以运行 Memory Doctor 诊断。",
},
acl: {
title: "ACL 用户",
loadUsers: "加载用户",
loading: "加载中...",
username: "用户名",
status: "状态",
enabled: "已启用",
disabled: "已禁用",
commands: "命令",
commandsHint: "例如,+@all or +@read -@dangerous",
keys: "Redis 键模式",
keysHint: "例如,~* or ~user:*",
channels: "Pub/Sub 频道",
channelsHint: "例如,&* or ¬ifications:*",
password: "密码",
noPassword: "无密码(nopass)",
passwordHint: "留空以保留当前密码",
currentUser: "当前",
createUser: "创建用户",
editUser: "编辑用户",
deleteUser: "删除",
confirmDelete: "确定要删除 ACL 用户吗",
userDeleted: "ACL 用户已删除",
userSaved: "ACL 用户已保存",
cannotDeleteDefault: "无法删除默认用户",
cannotDeleteSelf: "无法删除当前已连接的用户",
noUsers: "ACL 需要 Redis 6.0+。",
groupCommon: "通用",
groupDataTypes: "数据类型",
groupOperations: "操作",
rules: "规则",
rulesHint: "以空格分隔的令牌(例如 on >password +@all ~* &*)",
defaultUserWarning: "注意:修改默认用户可能会锁定所有连接。如果发生这种情况,您将需要重新启动 Redis 或使用 redis-cli 来恢复访问。",
},
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: "生存时间",
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: "值"
}
},
timeseries: {
chart: "图表",
info: "信息",
addPoint: "添加数据点",
from: "起始 (ms 或 -)",
to: "结束 (ms 或 +)",
aggregation: "聚合",
timeBucket: "桶 (ms)",
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"
},
probabilistic: {
info: "信息",
addItem: "添加项目",
checkItem: "检查项目",
item: "项目",
exists: "存在",
doesNotExist: "不存在",
topkList: "热门项目",
topkCount: "数量",
queryCount: "查询数量",
queryResult: "查询结果",
addedSuccessfully: "项目已成功添加",
deletedSuccessfully: "项目已成功删除",
quantile: "分位数",
quantileResult: "结果",
noItems: "没有项目可显示",
resetConfirm: "重置此 T-Digest 中的所有数据?"
},
vectorset: {
info: "信息",
elements: "元素",
similarity: "相似度搜索",
searchByElement: "按元素搜索",
searchByVector: "按向量搜索",
vectorValues: "向量值",
element: "元素",
score: "分数",
count: "数量",
addElement: "添加元素",
attributes: "属性",
noAttributes: "没有属性",
dimensions: "维度",
removeConfirm: "从 VectorSet 中移除此元素?",
noElements: "没有元素",
filter: "筛选",
searchComplete: "搜索完成",
}
},
treeControls: {
settings: "树设置",
expandAll: "展开所有",
collapseAll: "折叠所有",
level: "级别",
search: {
search: "在键中搜索",
clear: "清空当前搜索结果",
placeholderClient: "客户端搜索",
placeholderServer: "服务端搜索",
info: (opts) => `客户端搜索是匹配输入的文本,服务端搜索则遵循*{search-text}*模式搜索.对于大量数据的搜索最好在服务端进行搜索,而较小数据量可以考虑客户端搜索。如果键数超过 ${opts?.maxLightKeysCount ?? 110000}个的则只能在服务端搜索`,
largeSetInfo: "在大型集合中,禁用客户端搜索。 所以现在只能进行服务器端搜索。",
infoDetails: "要了解搜索的工作原理,请查看设置"
},
pager: {
next: "下一页",
prev: "上一页",
first: "首页",
last: "末页"
}
}
},
time: {
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",
bloom: "Bloom 过滤器",
cuckoo: "Cuckoo 过滤器",
topk: "Top-K",
cms: "Count-Min Sketch",
tdigest: "T-Digest",
vectorset: "VectorSet",
},
promo: {
title: "AI 网络助手",
description: "欢迎体验我们在 network.corifeus.com 提供的免费 AI 网络助手,可分析域名、IP、DNS 记录、SSL 证书、邮件安全和网络基础设施。由 AI 驱动,即时提供全面结果。",
disclaimer: "此推广仅显示在演示站点中,不会出现在 Docker、Electron 或 Web 应用部署中。",
toastMessage: "试试我们在 network.corifeus.com 提供的免费 AI 网络助手,分析域名、DNS、SSL 等更多内容!",
visit: "访问 network.corifeus.com",
}
};
module.exports = strings;