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: "สถิติ",
error: "เกิดข้อผิดพลาด",
connectingRedis: "กำลังเชื่อมต่อกับ Redis ...",
socketioConnectError: "ข้อผิดพลาด Socket.IO",
db: "DB",
server: "เซิร์ฟเวอร์",
clients: "ลูกค้า",
memory: "หน่วยความจำ",
persistence: "ความพากเพียร",
stats: "สถิติ",
replication: "การจำลองแบบ",
cpu: "CPU",
cluster: "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 นี้",
deleteAllKeys: opts => {
return `ลบแผนผังนี้และกุญแจทั้งหมด (${opts.key})?`;
},
deleteSearchKeys: opts => {
return `คุณแน่ใจหรือไม่ว่าจะลบคีย์ทั้งหมดที่ตรงกับ "${opts.pattern}"? พบ ${opts.count} คีย์`;
},
socketioConnectError: "Socket.IO ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ คุณสามารถโหลดซ้ำและลองแก้ไขข้อผิดพลาดในการเชื่อมต่อด้วยตนเอง ไคลเอ็นต์ไม่ทราบวิธีแก้ปัญหาด้วยตนเอง",
socketioAuthRequired: "ต้องมีการอนุญาต Socket.IO โปรดตรวจสอบสิทธิ์ด้วย HTTP Basic Auth (ชื่อผู้ใช้/รหัสผ่าน) แล้วโหลดซ้ำ",
invalidCredentials: "ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง",
delete: "ลบ?",
deleteKey: "คุณแน่ใจหรือว่าจะลบคีย์นี้",
rename: {
title: "คุณแน่ใจหรือว่าจะเปลี่ยนชื่อคีย์นี้",
textContent: "การดำเนินการนี้จะเปลี่ยนชื่อคีย์อย่างถาวร",
placeholder: "คีย์ Redis (จำเป็น)"
},
ttl: {
title: "คุณแน่ใจหรือไม่ว่าต้องการเปลี่ยน TTL ของคีย์นี้",
textContent: "การเปลี่ยน TTL จะอัปเดตเวลาใช้งานของคีย์นี้ เว้นว่างไว้เพื่อเก็บคีย์นี้ไว้ตลอดไป",
placeholder: "TTL ของคีย์ TTL (จำนวนเต็มหรือว่าง)",
placeholderPlaceholder: "ความว่างเปล่าหมายความว่ามันคงอยู่ตลอดไป มิฉะนั้นให้ป้อนจำนวนเต็ม",
convertTextToTime: "แปลงข้อความเป็นเวลา",
convertTextToTimePlaceholder: "เช่น 1d จะเป็น 86400"
}
},
language: {
ar: "العربية / Arabic",
az: "Azərbaycanca / Azerbaijani",
be: "Беларуская / Belarusian",
bg: "Български / Bulgarian",
bn: "বাংলা / Bengali",
cs: "Čeština / Czech",
da: "Dansk / Danish",
de: "Deutsch / German",
el: "Ελληνικά / Greek",
en: "English",
es: "Español / Spanish",
et: "Eesti / Estonian",
fi: "Suomi / Finnish",
fil: "Filipino / Filipino",
fr: "Français / French",
he: "עברית / Hebrew",
hr: "Hrvatski / Croatian",
hu: "Magyar / Hungarian",
hy: "Հայերեն / Armenian",
id: "Bahasa Indonesia / Indonesian",
it: "Italiano / Italian",
ja: "日本語 / Japanese",
ka: "ქართული / Georgian",
kk: "Қазақша / Kazakh",
km: "ខ្មែរ / Khmer",
ko: "한국어 / Korean",
ky: "Кыргызча / Kyrgyz",
lt: "Lietuvių / Lithuanian",
mk: "Македонски / Macedonian",
ms: "Bahasa Melayu / Malay",
ne: "नेपाली / Nepali",
nl: "Nederlands / Dutch",
no: "Norsk / Norwegian",
pl: "Polski / Polish",
"pt-BR": "Português (Brasil) / Portuguese (Brazil)",
"pt-PT": "Português / Portuguese",
ro: "Română / Romanian",
ru: "Русский / Russian",
sk: "Slovenčina / Slovak",
sl: "Slovenščina / Slovenian",
sr: "Српски / Serbian",
sv: "Svenska / Swedish",
tg: "Тоҷикӣ / Tajik",
th: "ไทย / Thai",
tr: "Türkçe / Turkish",
uk: "Українська / Ukrainian",
vi: "Tiếng Việt / Vietnamese",
"zh-HK": "中文(香港) / Chinese (Hong Kong)",
"zh-TW": "中文(台灣) / Chinese (Taiwan)",
zn: "中文 / Chinese",
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: "การวิเคราะห์",
// When you translate the language, keep the Language in English
// eg. Idioma / 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: "ข้อมูล",
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: "\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07",
inline: "\u0e43\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14",
sideBySide: "\u0e40\u0e04\u0e35\u0e22\u0e07\u0e02\u0e49\u0e32\u0e07\u0e01\u0e31\u0e19",
additions: "\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e21",
deletions: "\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e25\u0e1a",
unchangedLines: "\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07",
noChanges: "\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07",
before: "\u0e01\u0e48\u0e2d\u0e19",
after: "\u0e2b\u0e25\u0e31\u0e07",
},
label: {
id: {
nodeId: "รหัสโหนด",
id: "รหัสการเชื่อมต่อ",
info: "หากคุณไม่ต้องการเปลี่ยนคุณสมบัติของ: sshPassword, sshPrivateKey, รหัสผ่าน, tlsCrt, tlsKey, tlsCa โปรดป้อน ID ของการเชื่อมต่อในคุณสมบัติเหล่านั้นเพื่อรักษาค่าคุณสมบัติให้คงเดิม หากคุณต้องการตรรกะเดียวกันในรหัสผ่านโหนด ให้ป้อน ID โหนดในรหัสผ่านโหนด"
},
secureFeature: "หากคุณเห็นค่าที่ขึ้นต้นด้วย P3X และมีลักษณะเหมือนกัน แสดงว่าเป็นคุณสมบัติที่ปลอดภัย หากต้องการเปลี่ยนการตั้งค่า เพียงแทนที่การตั้งค่าเหล่านี้ด้วยค่าว่างหรืออย่างอื่น จากนั้นระบบจะบันทึกการตั้งค่าเหล่านั้น หากคุณไม่เปลี่ยนการตั้งค่า การตั้งค่าจะถูกเก็บไว้เหมือนเดิมบนเซิร์ฟเวอร์",
aiTranslating: "กำลังแปล...",
aiSettings: "ตั้งค่า AI",
aiGroqApiKey: "คีย์ API Groq",
aiGroqApiKeyInfo: "ไม่บังคับ คีย์ API Groq ของคุณเองเพื่อประสิทธิภาพที่ดีขึ้น รับคีย์ฟรีจาก",
aiGroqApiKeyPlaceholder: "gsk_...",
aiGroqApiKeySaved: "บันทึกคีย์ API AI แล้ว",
aiGroqApiKeyInvalid: "คีย์ Groq API ไม่ถูกต้อง",
aiGroqApiKeyNotSet: "ยังไม่ตั้งค่า (ค่าเริ่มต้นเซิร์ฟเวอร์)",
aiEnabled: "AI เปิดใช้งาน",
aiEnabledYes: "ใช่",
aiEnabledNo: "ไม่",
aiRouteViaNetwork: "ส่งผ่าน network.corifeus.com",
aiRoutingDirect: "คำขอจะถูกส่งไปยัง Groq โดยตรงด้วยคีย์ API ของคุณเอง โดยไม่ผ่าน network.corifeus.com",
aiRoutingNetwork: "คำขอ AI จะถูกส่งผ่าน network.corifeus.com หากคุณมีคีย์ Groq API ฟรีของตัวเอง คุณสามารถปิดสวิตช์นี้เพื่อส่งตรงไปยัง Groq โดยไม่ผ่าน network.corifeus.com",
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 แบบสถานะสด (การใช้เครื่องมือ) ใช้งานได้เฉพาะเมื่อเชื่อมต่อกับ Redis เท่านั้น",
verbNeedsConnection: opts => `"${opts.verb}" ต้องใช้การเชื่อมต่อที่ใช้งานอยู่ — ให้พิมพ์ "connect <name>" ก่อน`,
aiLimitedMode: "AI อยู่ในโหมดจำกัด — จนกว่าคุณจะเชื่อมต่อ จะถามได้เฉพาะความรู้ทั่วไปเกี่ยวกับ Redis",
welcomeDisconnected: "ยินดีต้อนรับ ขณะนี้คุณยังไม่ได้เชื่อมต่อกับอินสแตนซ์ Redis ใดเลย.",
readyIndicator: "พร้อม.",
},
cheatsheet: {
title: "AI Cheatsheet — ฉันถามอะไรได้บ้าง?",
subtitle: "คลิกที่คำสั่งใดก็ได้เพื่อวางลงในคอนโซล แล้วกด Enter",
searchPlaceholder: "กรองคำสั่ง…",
openOfficialDocs: "คำสั่ง Redis ↗",
openOfficialDocsTooltip: "เปิดเอกสารอ้างอิงคำสั่ง Redis อย่างเป็นทางการที่ redis.io",
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 คืออะไร?",
"มี eviction ล่าสุดไหม?",
"มีเหตุการณ์ latency หรือไม่?",
"เซิร์ฟเวอร์ทำงานมานานแค่ไหน?",
"hit rate เท่าไร?",
"แสดงการใช้ CPU",
"สรุป keyspace",
"แต่ละประเภทข้อมูลใช้หน่วยความจำเท่าไร?",
"มีอะไรบล็อกเซิร์ฟเวอร์อยู่ตอนนี้หรือไม่?"
]
},
keys: {
name: "คีย์",
description: "ตรวจสอบ ค้นหา และวิเคราะห์คีย์โดยไม่ต้องคลิกในต้นไม้",
prompts: [
"หาคีย์ทั้งหมดที่ตรงกับ user:*",
"แต่ละฐานข้อมูลมีคีย์กี่อัน?",
"แสดง hash ที่ใหญ่ที่สุดใน db นี้",
"หาคีย์ที่มี TTL น้อยกว่า 60 วินาที",
"คีย์ใดบ้างที่ไม่มี TTL?",
"คีย์ session:abc เป็นประเภทอะไร?",
"ประมาณการหน่วยความจำที่ใช้โดย prefix \"session:\"",
"แสดง object encoding ของคีย์ user:42",
"มีคีย์ใดใกล้หมดอายุหรือไม่?",
"namespace ใดใช้หน่วยความจำมากที่สุด?"
]
},
dataTypes: {
name: "ประเภทข้อมูล",
description: "ถ้อยคำภาษาธรรมชาติสำหรับการสร้าง/อ่าน/ปรับปรุงในทุกประเภทของ Redis",
prompts: [
"สร้าง hash ชื่อ user:1 ที่มีฟิลด์ name=Alice age=30",
"เพิ่มสามรายการลงใน list tasks",
"เพิ่มสมาชิกลงใน set favourites",
"เพิ่มสมาชิกพร้อมคะแนนลงใน sorted set leaderboard",
"เพิ่มเหตุการณ์ลงใน stream events",
"ดึง 10 รายการล่าสุดจาก stream events",
"ดึงทุกฟิลด์ของ hash user:1",
"ดึงสมาชิกของ set favourites",
"ดึง top 10 ตามคะแนนจาก leaderboard"
]
},
modules: {
name: "โมดูล",
description: "คำสั่งสำหรับโมดูล Redis ที่โหลดไว้ (หมวดหมู่ด้านล่างจะแสดงเฉพาะเมื่อโมดูลมีอยู่)",
prompts: []
},
json: {
name: "RedisJSON",
description: "ใช้ได้เมื่อโมดูล ReJSON ถูกโหลด",
prompts: [
"สร้างเอกสาร JSON ที่ user:42 ด้วย { name: \"Alice\", age: 30 }",
"อ่านฟิลด์ name ของ user:42",
"ปรับปรุง age ของ user:42 เป็น 31",
"แสดงคีย์ JSON ทั้งหมด",
"ลบฟิลด์จากเอกสาร JSON",
"ดึงฟิลด์ซ้อนโดยใช้ JSONPath"
]
},
search: {
name: "RediSearch",
description: "ใช้ได้เมื่อโมดูล search ถูกโหลด",
prompts: [
"แสดงดัชนี full-text ทั้งหมด",
"ค้นหา full-text สำหรับ \"redis\" ในดัชนี idx:products",
"สร้างดัชนีที่ใช้ hash เป็นฐาน ด้วยฟิลด์ title (TEXT) และ price (NUMERIC)",
"ดูข้อมูลของดัชนี idx:products",
"ลบดัชนี idx:products",
"หาเอกสารที่มีราคาอยู่ระหว่าง 10 ถึง 50",
"เขียนการค้นหาแบบไฮบริดที่รวมข้อความและความคล้ายของเวกเตอร์"
]
},
timeseries: {
name: "RedisTimeSeries",
description: "ใช้ได้เมื่อโมดูล timeseries ถูกโหลด",
prompts: [
"แสดงคีย์ timeseries ทั้งหมด",
"เพิ่มจุดข้อมูลลงใน temp:room1",
"ดึงช่วง temp:room1 ตั้งแต่เมื่อวานจนถึงตอนนี้",
"ดึงหลายช่วงตามเลเบล sensor=temp",
"สร้างจุดข้อมูล sine-wave 100 จุดสำหรับ temp:room1",
"แสดง retention และเลเบลของ temp:room1"
]
},
bloom: {
name: "RedisBloom (Bloom / Cuckoo / Top-K / CMS / T-Digest)",
description: "ใช้ได้เมื่อโมดูล bf ถูกโหลด",
prompts: [
"ตรวจสอบว่ารายการ foo มีอยู่ใน bloom filter spam:ips หรือไม่",
"เพิ่มรายการลงใน bloom filter spam:ips",
"สร้าง top-K ชื่อ popular พร้อม K=10",
"สอบถาม count-min sketch traffic สำหรับคีย์ /home",
"เพิ่มค่าลงใน t-digest และดึง percentile ที่ 95",
"แสดงข้อมูลของ bloom filter spam:ips"
]
},
vectorSet: {
name: "VectorSet (Redis 8+)",
description: "ใช้ได้เมื่อตรวจพบ Redis 8+ (ประเภท VECTORSET ดั้งเดิม)",
prompts: [
"เพิ่มเวกเตอร์ลงใน embeddings",
"หา 10 เวกเตอร์ที่คล้ายที่สุดกับเวกเตอร์คำสั่ง",
"แสดงมิติและจำนวนของ vectorset embeddings",
"ลบ element จาก vectorset embeddings",
"ค้นหาตามชื่อ element ด้วย VSIM"
]
},
redis8: {
name: "คุณสมบัติ Redis 8+",
description: "แสดงเมื่อตรวจพบ Redis 8+",
prompts: [
"ตั้ง ttl ฟิลด์ hash ด้วย HEXPIRE",
"ดึง digest ของค่า string",
"เรียกการค้นหาไฮบริด full-text + เวกเตอร์ (FT.HYBRID)",
"ตั้งหลายคีย์พร้อมวันหมดอายุร่วมกันด้วย MSETEX",
"ลบรายการ stream พร้อม consumer group (XDELEX)",
"แสดง cluster slot-stats สำหรับ top 10 slots"
]
},
scripting: {
name: "สคริปต์",
description: "สร้างสคริปต์ Lua / EVAL จากคำอธิบายภาษาธรรมชาติ",
prompts: [
"เขียนสคริปต์ atomic ที่เพิ่ม counter X เฉพาะเมื่อ Y > 5",
"สร้าง 100 คีย์แบบสุ่มด้วย Lua",
"แปลง shell pipeline นี้เป็น EVAL เดียว: keys user:* | GET | grep inactive | DEL",
"พอร์ตการทำงานแบบ batch ไปยัง Lua เพื่อความปลอดภัยของ cluster",
"ปรับปรุงแบบ check-and-set ในการเรียก Lua ครั้งเดียว",
"วนรอบบน hash และลบฟิลด์ที่ตรงกับรูปแบบ"
]
},
cluster: {
name: "Cluster",
description: "แสดงเฉพาะในโหมด cluster",
prompts: [
"แสดงข้อมูล cluster",
"แสดงรายการ nodes ของ cluster",
"แสดง top 10 slots ตามจำนวนคีย์",
"แสดง top 10 slots ตามหน่วยความจำ",
"master ใดเป็นเจ้าของ slot 5000?"
]
},
acl: {
name: "ACL (Redis 6+)",
description: "ตรวจสอบผู้ใช้ access-control และการเชื่อมต่อปัจจุบัน",
prompts: [
"ฉันเชื่อมต่อในฐานะใคร?",
"แสดงผู้ใช้ ACL ทั้งหมด",
"ฉันมีสิทธิ์อะไรบ้าง?",
"แสดงกฎของผู้ใช้ default"
]
},
qna: {
name: "ถาม-ตอบทั่วไป",
description: "ถามคำถามความรู้เกี่ยวกับ Redis — ไม่มีเครื่องมือ มีแค่คำตอบ",
prompts: [
"ZADD คืออะไร?",
"cluster failover ทำงานอย่างไร?",
"อธิบาย SCAN เทียบกับ KEYS",
"ควรใช้ EVAL เมื่อใดเทียบกับหลายคำสั่ง?",
"ตัวเลือก persistence ของ Redis มีอะไรบ้าง?",
"RDB กับ AOF ต่างกันอย่างไร?",
"Redis Sentinel ตัดสินใจเลือก master ใหม่อย่างไร?",
"อธิบาย hash tags ในโหมด cluster"
]
},
translate: {
name: "ภาษาธรรมชาติ → คำสั่ง Redis",
description: "อธิบายสิ่งที่คุณต้องการเป็นภาษาอังกฤษธรรมดา (หรือหนึ่งใน 54 ภาษา) AI จะเขียนคำสั่ง Redis ให้",
prompts: [
"ลบคีย์ user:42",
"เปลี่ยนชื่อคีย์ foo เป็น bar",
"ทำให้คีย์ session:abc หมดอายุใน 10 วินาที",
"คัดลอกคีย์ source ไปยัง destination",
"เพิ่ม counter 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: `ฟิลด์สตรีมและค่าเป็น oneliner เช่น: 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: `การเรียงลำดับ (การเปรียบเทียบแบบธรรมชาติ) จะดำเนินการบนไคลเอนต์หรือที่เรียกว่าเบราว์เซอร์ ซึ่งหมายความว่ามีการลงโทษสำหรับชุดขนาดใหญ่ขนาดใหญ่ เช่น มากกว่า 10,000 คีย์ ซึ่งอาจเพิ่มเวลาเล็กน้อยในการแสดงผลเพจ ไม่มีการเรียงลำดับคีย์ใน Redis มีเพียงเท่านี้เท่านั้น`,
socketIoTimeout: options => {
return `Socket.IO หมดเวลาสำหรับคำขอนี้ (สูงสุด ${options.timeout / 1000} วินาที) ...`;
},
resizerInfo: options => {
return `ความกว้างขั้นต่ำของแผงด้านซ้ายหรือด้านขวาคือ ${options.width}พิกเซล`;
},
jsonViewNotParsable: "ค่านี้ไม่สามารถแยกวิเคราะห์ JSON ได้ ",
ttlTitle: "ตั้งค่า TTL เป็นวินาที",
passwordSecure: "รหัสผ่านอาจจะว่างเปล่า แต่ยังคงแสดงตัวอักษร นี่คือคุณลักษณะด้านความปลอดภัย",
aclAuthHint: "ใช้ชื่อผู้ใช้และรหัสผ่าน Redis ACL เพื่อตรวจสอบสิทธิ์ เว้นว่างไว้สำหรับผู้ใช้เริ่มต้นที่ไม่มีรหัสผ่าน",
tlsWithoutCert: "เปิดใช้งาน TLS โดยไม่มีใบรับรองเพิ่มเติม",
tlsRejectUnauthorized: "ปฏิเสธใบรับรองที่ไม่ได้รับอนุญาต",
tlsSecure: "หากคุณเห็นการกำหนดค่า TLS ที่ขึ้นต้นด้วย P3X หรือการตั้งค่า TLS ทั้งหมดเหมือนกัน แสดงว่าเป็นคุณสมบัติที่ปลอดภัย หากต้องการเปลี่ยนการตั้งค่า เพียงแทนที่การตั้งค่าเหล่านี้ด้วยค่าว่างหรืออย่างอื่น จากนั้นระบบจะบันทึกการตั้งค่าเหล่านั้น หากคุณไม่เปลี่ยนการตั้งค่า TLS การตั้งค่าจะถูกเก็บไว้เหมือนเดิมบนเซิร์ฟเวอร์",
treeSeparatorEmpty: "หากตัวแยกแผนผังว่างเปล่า ต้นไม้จะไม่มีโหนดที่ซ้อนกัน เป็นเพียงรายการล้วนๆ",
treeSeparatorEmptyNote: "ไม่มีโหนดที่ซ้อนกัน เป็นเพียงรายการล้วนๆ",
welcomeConsole: "ยินดีต้อนรับสู่คอนโซล Redis",
welcomeConsoleInfo: "SHIFT + เปิดใช้งานประวัติเคอร์เซอร์ขึ้นหรือลง",
redisListIndexInfo: "เว้นว่างไว้เพื่อต่อท้าย -1 เพื่อเติมหรือบันทึกลงในตำแหน่งที่แสดง",
console: "คอนโซล",
connectiondAdd: "เพิ่มการเชื่อมต่อ",
connectiondEdit: "แก้ไขการเชื่อมต่อ",
connectiondView: "ดูการเชื่อมต่อ",
connections: "การเชื่อมต่อ",
keysSort: {
on: "เปิดการเรียงลำดับคีย์",
off: "การเรียงลำดับคีย์ออก"
},
cluster: {
on: "เปิด Cluster",
off: "ปิด Cluster"
},
sentinel: {
on: "เปิด Sentinel",
off: "ปิด Sentinel",
name: "ชื่อ Sentinel"
},
readonly: {
on: "เปิดอ่านอย่างเดียว",
off: "ปิดอ่านอย่างเดียว"
},
theme: {
light: "เบา",
dark: "องค์กรแห่งความมืด",
darkNeu: "มืด",
darkoBluo: "ดาร์โก บลู",
enterprise: "องค์กร",
redis: "Redis",
matrix: "เมทริกซ์"
},
connected: opts => {
return `เชื่อมต่อแล้ว: ${opts.name}`;
},
tree: "ต้นไม้",
askAuth: "ขออนุญาติ",
keyboardShortcuts: "Keyboard Shortcuts",
about: "About",
supportedLanguages: "Supported Languages",
version: "Version",
redisVersion: "Redis Version",
modules: "โมดูล",
shortcutRefresh: "Refresh",
shortcutSearch: "Focus Search",
shortcutNewKey: "New Key",
shortcutDisconnect: "ตัดการเชื่อมต่อ",
themeAuto: "Auto (system)",
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: "รับการแจ้งเตือนจาก OS เมื่อ 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: "\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e41\u0e25\u0e49\u0e27",
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": "ค่านี้ไม่ถูกต้อง 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 หรือใช้ proxy 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 แสดงค่าเต็ม หากมากกว่า 0 ให้ตัดทอนตามความยาวนี้ ถ้า -1: สำหรับสตริง ให้ซ่อนค่าจนกว่าจะแก้ไข สำหรับประเภทอื่นๆ ให้แสดงเนื้อหาทั้งหมด",
maxKeys: "จำนวนคีย์สูงสุด",
maxKeysInfo: "เพื่อให้ GUI ไม่ขัดข้อง เราจึงจำกัดจำนวนคีย์สูงสุด",
keyCount: (opts) => {
return `จำนวนปุ่ม: ${opts?.keyCount ?? 0}`;
},
label: {
animation: "ใช้ภาพเคลื่อนไหว",
noAnimation: "ไม่มีภาพเคลื่อนไหว",
undoEnabled: "\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33",
undoDisabled: "\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33",
diffEnabled: "\u0e41\u0e2a\u0e14\u0e07 diff \u0e01\u0e48\u0e2d\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",
diffDisabled: "\u0e1b\u0e34\u0e14 diff \u0e01\u0e48\u0e2d\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",
jsonFormatTwoSpace: "จัดรูปแบบ JSON โดยเว้นวรรค 2 ช่อง",
jsonFormatFourSpace: "จัดรูปแบบ JSON ด้วยช่องว่าง 4 ช่อง",
formName: "การตั้งค่า Redis",
searchModeClient: "โหมดการค้นหาลูกค้า",
searchModeServer: "โหมดการค้นหาเซิร์ฟเวอร์",
searchModeStartsWith: "ค้นหาด้วยการเริ่มต้นด้วยโหมด",
searchModeIncludes: "ค้นหารวมถึงโหมด"
},
undoHint: "\u0e01\u0e32\u0e23\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e01\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e04\u0e35\u0e22\u0e4c string \u0e41\u0e25\u0e30 JSON \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19",
field: {
treeSeparator: "เครื่องแยกต้นไม้",
treeSeparatorSelector: "ตัวเลือกตัวแยกต้นไม้",
page: "จำนวนเพจต้นไม้",
keyPageCount: "จำนวนการเพจคีย์",
keysSort: "จัดเรียงคีย์",
searchMode: "โหมดการค้นหา",
searchModeStartsWith: "ค้นหาเริ่มต้นด้วย / รวม"
},
error: {
keyPageCount: "จำนวนหน้าหลักต้องเป็นจำนวนเต็มระหว่าง 5 - 100",
page: "จำนวนหน้าต้องเป็นจำนวนเต็มระหว่าง 10 - 5,000",
maxValueDisplay: "ค่าที่แสดงสูงสุดต้องเป็นจำนวนเต็มระหว่าง -1 ถึง 32768",
maxKeys: "ค่าจำนวนคีย์สูงสุดต้องเป็นจำนวนเต็มระหว่าง 100 ถึง 100,000"
}
},
key: {
label: {
formName: {
add: "เพิ่มคีย์ Redis ใหม่",
edit: "แก้ไขคีย์ Redis",
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: "ไม่มีคีย์",
persistence: "ความคงอยู่ของข้อมูล",
rdbLastSave: "RDB บันทึกครั้งสุดท้าย",
rdbStatus: "สถานะ RDB",
rdbChanges: "การเปลี่ยนแปลงตั้งแต่บันทึกครั้งล่าสุด",
aofEnabled: "เปิดใช้งาน AOF แล้ว",
aofSize: "ขนาด AOF",
replication: "การจำลองแบบ Redis",
role: "บทบาทการจำลองแบบ",
replicas: "แบบจำลองที่เชื่อมต่อ",
masterHost: "โฮสต์หลัก",
linkStatus: "สถานะลิงก์การจำลองแบบ",
cpu: "การใช้งานซีพียู",
cpuSys: "ระบบ",
cpuUser: "ผู้ใช้",
modules: "โหลดโมดูล Redis แล้ว",
noModules: "ไม่มีการโหลดโมดูล Redis",
clusterSlotMap: "แมปสล็���ตคลัสเตอร์ Redis",
slotRange: "ช่วงสล็อตคลัสเตอร์",
totalSlots: "สล็อตคลัสเตอร์ทั้งหมด",
noClusterData: "ไม่มีข้อมูลคลัสเตอร์ Redis",
},
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: "รหัสการประทับเวลา",
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: "ค้นพบผู้ช่วยเครือข่าย AI ฟรีของเราที่ network.corifeus.com — วิเคราะห์โดเมน, IP, ระเบียน DNS, ใบรับรอง SSL, ความปลอดภัยอีเมล และโครงสร้างพื้นฐานเครือข่าย ขับเคลื่อนด้วย AI เพื่อผลลัพธ์ที่รวดเร็วและครอบคลุม",
disclaimer: "โปรโมชันนี้จะแสดงเฉพาะบนไซต์เดโม และจะไม่ปรากฏใน Docker, Electron หรือการดีพลอยเว็บแอป",
toastMessage: "ลองผู้ช่วยเครือข่าย AI ฟรีของเราที่ network.corifeus.com — วิเคราะห์โดเมน, DNS, SSL และอีกมากมาย!",
visit: "ไปที่ network.corifeus.com",
}
};
module.exports = strings;