const strings = {
error: {
server_error: "Serverfel, vänligen försök igen",
aiPromptTooLong: "AI-prompten är för lång (max 4096 tecken)",
},
title: {
donate: "Donera",
donateTitle: "Stöd P3X Redis UI",
donateDescription: "P3X Redis UI är ett gratis projekt med öppen källkod. Kostnaderna för underhåll av appen, AI-funktioner, Docker-images, servrar och infrastruktur kommer ur utvecklarens egen ficka. Om du tycker att detta verktyg är användbart, överväg att stödja dess fortsatta utveckling med en donation. Varje bidrag hjälper projektet att leva och växa. Tack!",
jsonRecursive: "Expanderar alla löv",
name: "P3X Redis UI",
nameDonated: "P3X Redis UI+",
main: "Du kan välja en Redis-anslutning att ansluta till från menyn nere till vänster.",
statistics: "Statistik",
error: "Fel",
connectingRedis: "Ansluter till Redis ...",
socketioConnectError: "Socket.IO-fel",
db: "DB",
server: "Server",
clients: "Klienter",
memory: "Minne",
persistence: "Persistens",
stats: "Statistik",
replication: "Replikering",
cpu: "CPU",
cluster: "Cluster",
modules: "Moduler",
errorstats: "Felstatistik",
commandstats: "Kommandostatistik",
latencystats: "Latensstatistik",
keysizes: "Nyckelstorlekar",
threads: "Trådar"
},
confirm: {
dropIndex: "Är du säker på att du vill ta bort detta index?",
uploadBuffer: "Är du säker på att du vill ladda upp denna binärdata?",
uploadBufferDone: "Binärdatan har laddats upp",
uploadBufferDoneAndSave: "Binärdatan har laddats upp och sparats på servern",
title: "Bekräfta",
alert: "Varning",
info: "Info",
deleteListItem: "Är du säker på att du vill radera detta listobjekt?",
deleteHashKey: "Är du säker på att du vill radera denna hash-nyckel?",
deleteStreamTimestamp: "Är du säker på att du vill radera denna stream-tidsstämpel?",
deleteSetMember: "Är du säker på att du vill radera denna uppsättningsmedlem?",
deleteZSetMember: "Är du säker på att du vill radera denna sorterade uppsättningsmedlem?",
deleteConnection: "Bekräfta",
deleteConnectionText: "Är du säker på att du vill radera denna Redis-anslutning?",
deleteNode: "Är du säker på att du vill radera denna Redis-nod?",
deleteAllKeys: opts => {
return `Radera detta träd och alla dess nycklar (${opts.key})?`;
},
deleteSearchKeys: opts => {
return `Är du säker på att du vill radera alla nycklar som matchar "${opts.pattern}"? Hittade ${opts.count} nycklar.`;
},
socketioConnectError: "Socket.IO kan inte ansluta till servern, du kan ladda om och försöka lösa anslutningsfelet själv, klienten vet inte hur den ska lösa det.",
socketioAuthRequired: "Socket.IO-auktorisering krävs. Vänligen autentisera med HTTP Basic Auth (användarnamn/lösenord) och ladda om.",
invalidCredentials: "Ogiltigt användarnamn eller lösenord.",
delete: "Radera?",
deleteKey: "Är du säker på att du vill radera denna nyckel?",
rename: {
title: "Är du säker på att du vill byta namn på denna nyckel?",
textContent: "Denna åtgärd byter namn på nyckeln permanent.",
placeholder: "Redis-nyckeln (obligatorisk)"
},
ttl: {
title: "Är du säker på att du vill ändra denna nyckels TTL?",
textContent: "Att ändra TTL uppdaterar nyckelns livstid. Lämna tomt för att behålla nyckeln för alltid.",
placeholder: "Redis-nyckelns TTL (heltal eller tomt)",
placeholderPlaceholder: "Tomt betyder att den finns kvar för alltid; annars ange ett heltal.",
convertTextToTime: "Konvertera text till tid",
convertTextToTimePlaceholder: "T.ex. 1d blir 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: "Kopiera",
downloadBuffer: "Ladda ner binär",
setBuffer: "Ladda upp binär",
exportKeys: "Exportera nycklar",
exportAllKeys: (opts) => `Exportera alla ${opts.count} nycklar`,
exportSearchResults: (opts) => `Exportera ${opts.count} resultat`,
deleteAllKeysMenu: (opts) => `Radera alla ${opts.count}`,
importKeys: "Importera nycklar",
deleteSearchKeys: (opts) => `Radera ${opts.count} matchande nycklar`,
saveWithFormatJson: "Spara med formatering",
formatJson: "Formatera Json",
wrap: "Radbrytning",
unwrap: "Ingen radbrytning",
downloadJson: "Ladda ner JSON",
pubsubMonitor: "PubSub",
pulse: "Pulse",
profiler: "Profiler",
memoryAnalysis: "Analysis",
language: "Språk / Language",
ok: "OK",
addKey: "Lägg till i denna nyckel",
addKeyRoot: "Lägg till en rotnyckel",
reloadKey: "Ladda om nyckel",
reload: "Ladda om",
close: "Stäng",
commands: "Kommandon",
view: "Visa",
statistics: "Statistik",
refresh: "Uppdatera",
pause: "Pausa",
resume: "Återuppta",
clear: "Rensa",
rename: "Byt namn",
main: "Databas",
cancel: "Avbryt",
theme: "Tema",
github: "GitHub",
githubRepo: "Förråd",
githubRelease: "Utgåvor",
githubChangelog: "Ändringslogg",
info: "Info",
settings: "Inställningar",
connect: "Anslut",
disconnect: "Koppla från",
logout: "Logga ut",
overview: "Översikt",
console: "Konsol",
noConnections: "Inga anslutningar, lägg till en anslutning i inställningsmenyn.",
noConnectionsInSettings: "Inga anslutningar, du kan lägga till en NY ANSLUTNING ovan.",
connectionAdd: "Ny anslutning",
addGroup: "Lägg till grupp",
extend: "Expandera",
collapse: "Komprimera",
add: "Lägg till",
edit: "Redigera",
save: "Spara",
ttl: "Ange TTL",
fieldTtl: "Fält TTL",
digest: "Sammandrag",
delete: "Radera",
remove: "Ta bort",
areYouSure: "Är du säker?",
sure: "Säker",
testConnection: "Testa anslutning",
getKey: "Laddar Redis-nyckel och tillhörande data ...",
jsonViewShow: "Visa JSON",
jsonViewEditor: "Redigera JSON",
quickConsole: "Snabbkonsol",
moveUp: "Flytta upp",
moveDown: "Flytta ned",
},
diff: {
reviewChanges: "Granska \u00e4ndringar",
inline: "Infogat",
sideBySide: "Sida vid sida",
additions: "till\u00e4gg",
deletions: "borttagningar",
unchangedLines: "of\u00f6r\u00e4ndrade rader",
noChanges: "Inga \u00e4ndringar uppt\u00e4cktes",
before: "F\u00f6re",
after: "Efter",
},
label: {
id: {
nodeId: 'Nod-ID',
id: "Anslutnings-ID",
info: "Om du inte vill ändra egenskaperna för: sshPassword, sshPrivateKey, password, tlsCrt, tlsKey, tlsCa, ange anslutningens ID i dessa egenskaper för att behålla värdena. Om du vill ha samma logik för nodlösenordet, ange nod-ID:t i nodlösenordet."
},
secureFeature: 'Om du ser ett värde som börjar med P3X och ser likadant ut, är det en säkerhetsfunktion. För att ändra inställningarna, ersätt dem med tomt eller något annat så sparas de. Om du inte ändrar inställningarna behålls de som de är på servern.',
aiTranslating: "Översätter...",
aiSettings: "AI-inställningar",
aiGroqApiKey: "Groq API-nyckel",
aiGroqApiKeyInfo: "Valfritt. Egen Groq API-nyckel för bättre prestanda. Skaffa en gratis nyckel på",
aiGroqApiKeyPlaceholder: "gsk_...",
aiGroqApiKeySaved: "AI API-nyckel sparad",
aiGroqApiKeyInvalid: "Ogiltig Groq API-nyckel",
aiGroqApiKeyNotSet: "Ej inställd (serverstandard)",
aiEnabled: "AI aktiverad",
aiEnabledYes: "Ja",
aiEnabledNo: "Nej",
aiRouteViaNetwork: "Dirigera via network.corifeus.com",
aiRoutingDirect: "Frågor går direkt till Groq med din egen API-nyckel, utan network.corifeus.com.",
aiRoutingNetwork: "AI-frågor dirigeras via network.corifeus.com. Om du har din egen gratis Groq API-nyckel kan du stänga av denna växel.",
aiMaxTokens: "Maximalt antal AI-token",
aiMaxTokensInfo: "Maximalt antal token för AI-svar. Högre värden ger längre svar men kan använda fler API-krediter.",
consoleDrawer: {
toggleTooltip: "Visa/dölj konsolen",
clearTooltip: "Rensa konsolhistoriken",
closeTooltip: "Stäng konsolen",
aiSettingsTooltip: "AI-inställningar",
modeRedis: "REDIS",
modeAi: "AI",
connectionChipNoDb: opts => `${opts.name}`,
connectionChipWithDb: opts => `${opts.name} · db ${opts.db}`,
pageChip: opts => `sida: ${opts.page}`,
connectingTo: opts => `Ansluter till ${opts.name}…`,
connectedTo: opts => `Ansluten till ${opts.name} (Redis ${opts.version} ${opts.mode}, ${opts.modules} moduler laddade)`,
connectedToNoInfo: opts => `Ansluten till ${opts.name}`,
disconnectedFrom: opts => `Frånkopplad från ${opts.name}`,
notConnected: "Inte ansluten.",
limitedAiOnly: "Endast begränsad AI — allmänna Redis-frågor fungerar.",
connectHint: "För live-diagnostik, skriv: connect <name>",
cheatsheetHint: "Skriv ai: help för att se vad du kan fråga om.",
needsConnection: "Detta kräver en aktiv anslutning. Skriv \"connect <name>\" först.",
aiNeedsConnectionReason: "AI med live-status (verktygsanvändning) är endast tillgänglig när du är ansluten till Redis.",
verbNeedsConnection: opts => `"${opts.verb}" kräver en aktiv anslutning — skriv "connect <name>" först.`,
aiLimitedMode: "AI är i begränsat läge — endast allmänna frågor om Redis fungerar tills du ansluter.",
welcomeDisconnected: "Välkommen. Du är inte ansluten till någon Redis-instans ännu.",
readyIndicator: "Klar.",
},
cheatsheet: {
title: "AI-fusklapp — Vad kan jag fråga?",
subtitle: "Klicka på en prompt för att klistra in den i konsolen. Tryck sedan på Enter.",
searchPlaceholder: "Filtrera prompts…",
openOfficialDocs: "Redis-kommandon ↗",
openOfficialDocsTooltip: "Öppna den officiella referensen för Redis-kommandon på redis.io",
closeTooltip: "Stäng (Esc)",
empty: "Inga prompts matchar ditt filter.",
footerHint: "Tips: skriv \"ai:\" följt av vad som helst på vilket språk som helst — AI:n förstår 54 språk och använder aktuell Redis-status vid behov.",
// Each group has: name (category label), match (search-filter alias), prompts (array of example strings)
groups: {
diagnostics: {
name: "Livediagnostik",
description: "Be AI:n undersöka serverns aktuella tillstånd med säkra skrivskyddade verktyg.",
prompts: [
"varför är minnesanvändningen hög?",
"visa mig de 10 långsammaste frågorna",
"vilka klienter är anslutna?",
"vad är maxmemory-policyn?",
"har det skett några nyligen avhysningar?",
"finns det någon latenshändelse?",
"hur länge har servern varit igång?",
"vad är hit rate?",
"visa CPU-användning",
"sammanfatta nyckelutrymmet",
"hur mycket minne använder varje datatyp?",
"blockerar något servern just nu?"
]
},
keys: {
name: "Nycklar",
description: "Inspektera, hitta och resonera kring nycklar utan att klicka i trädet.",
prompts: [
"hitta alla nycklar som matchar user:*",
"hur många nycklar i varje databas?",
"visa den största hashen i denna db",
"hitta nycklar med TTL mindre än 60 sekunder",
"vilka nycklar har ingen TTL?",
"vilken typ har nyckeln session:abc?",
"uppskatta minne som används av prefixet \"session:\"",
"visa objektkodningen för nyckeln user:42",
"finns det nycklar som snart löper ut?",
"vilken namnrymd använder mest minne?"
]
},
dataTypes: {
name: "Datatyper",
description: "Naturligt språk för att skapa/läsa/uppdatera varje Redis-typ.",
prompts: [
"skapa en hash med namnet user:1 med fälten name=Alice age=30",
"lägg till tre objekt i listan tasks",
"lägg till medlemmar i set favourites",
"lägg till medlemmar med poäng i sorted set leaderboard",
"lägg till en händelse i stream events",
"hämta de 10 senaste posterna från stream events",
"hämta alla fält från hash user:1",
"hämta medlemmar i set favourites",
"hämta topp 10 efter poäng från leaderboard"
]
},
modules: {
name: "Moduler",
description: "Frågor för laddade Redis-moduler (kategorierna nedan visas endast när modulen finns).",
prompts: []
},
json: {
name: "RedisJSON",
description: "Tillgängligt när modulen ReJSON är laddad.",
prompts: [
"skapa ett JSON-dokument på user:42 med { name: \"Alice\", age: 30 }",
"läs fältet name för user:42",
"uppdatera age för user:42 till 31",
"lista alla JSON-nycklar",
"ta bort ett fält från ett JSON-dokument",
"hämta ett nästlat fält med JSONPath"
]
},
search: {
name: "RediSearch",
description: "Tillgängligt när search-modulen är laddad.",
prompts: [
"lista alla fulltextindex",
"kör en fulltextsökning efter \"redis\" på index idx:products",
"skapa ett hash-baserat index med fälten title (TEXT) och price (NUMERIC)",
"hämta info om index idx:products",
"släpp index idx:products",
"hitta dokument där price är mellan 10 och 50",
"skriv en hybridsökning som kombinerar text och vektorliket"
]
},
timeseries: {
name: "RedisTimeSeries",
description: "Tillgängligt när timeseries-modulen är laddad.",
prompts: [
"lista alla timeseries-nycklar",
"lägg till en datapunkt i temp:room1",
"hämta intervallet för temp:room1 från igår till nu",
"hämta multi-range efter etikett sensor=temp",
"generera 100 sinusvågs-datapunkter för temp:room1",
"visa retention och etiketter för temp:room1"
]
},
bloom: {
name: "RedisBloom (Bloom / Cuckoo / Top-K / CMS / T-Digest)",
description: "Tillgängligt när bf-modulen är laddad.",
prompts: [
"kontrollera om elementet foo finns i bloom-filtret spam:ips",
"lägg till element i bloom-filtret spam:ips",
"skapa en top-K med namnet popular med K=10",
"fråga count-min sketch traffic för nyckeln /home",
"lägg till värden i t-digest och hämta 95:e percentilen",
"visa info för bloom-filtret spam:ips"
]
},
vectorSet: {
name: "VectorSet (Redis 8+)",
description: "Tillgängligt när Redis 8+ upptäcks (inbyggd VECTORSET-typ).",
prompts: [
"lägg till en vektor i embeddings",
"hitta de 10 mest lika vektorerna till en frågevektor",
"visa dimensioner och antal för vectorset embeddings",
"ta bort ett element från vectorset embeddings",
"sök efter elementnamn med VSIM"
]
},
redis8: {
name: "Redis 8+ funktioner",
description: "Visas när Redis 8+ upptäcks.",
prompts: [
"sätt TTL på hashfält med HEXPIRE",
"hämta digest av ett strängvärde",
"kör en hybrid fulltext- + vektorsökning (FT.HYBRID)",
"sätt flera nycklar med gemensam utgång via MSETEX",
"ta bort en stream-post med consumergroup (XDELEX)",
"visa cluster slot-stats för de 10 största slotsen"
]
},
scripting: {
name: "Skript",
description: "Generera Lua- / EVAL-skript från beskrivningar på naturligt språk.",
prompts: [
"skriv ett atomiskt skript som ökar räknaren X endast om Y > 5",
"generera 100 slumpmässiga nycklar med Lua",
"konvertera denna shell-pipeline till en enda EVAL: keys user:* | GET | grep inactive | DEL",
"porta en batchoperation till Lua för klustersäkerhet",
"uppdatering i check-and-set-stil i ett enda Lua-anrop",
"iterera över en hash och ta bort fält som matchar ett mönster"
]
},
cluster: {
name: "Kluster",
description: "Visas endast i klusterläge.",
prompts: [
"visa klusterinformation",
"lista klusternoder",
"visa de 10 största slotsen efter antal nycklar",
"visa de 10 största slotsen efter minne",
"vilken master äger slot 5000?"
]
},
acl: {
name: "ACL (Redis 6+)",
description: "Inspektera åtkomstkontrollanvändare och den aktuella anslutningen.",
prompts: [
"som vem är jag ansluten?",
"lista alla ACL-användare",
"vilka behörigheter har jag?",
"visa reglerna för default-användaren"
]
},
qna: {
name: "Allmän Q&A",
description: "Ställ kunskapsfrågor om Redis — inga verktyg, bara svar.",
prompts: [
"vad är ZADD?",
"hur fungerar cluster failover?",
"förklara SCAN kontra KEYS",
"när ska jag använda EVAL istället för flera kommandon?",
"vilka persistensalternativ har Redis?",
"vad är skillnaden mellan RDB och AOF?",
"hur beslutar Redis Sentinel om en ny master?",
"förklara hash tags i klusterläge"
]
},
translate: {
name: "Naturligt språk → Redis-kommando",
description: "Beskriv vad du vill ha på vanlig svenska (eller något av 54 språk); AI:n skriver Redis-kommandot.",
prompts: [
"radera nyckel user:42",
"byt namn på nyckel foo till bar",
"låt nyckel session:abc löpa ut om 10 sekunder",
"kopiera nyckel source till destination",
"öka räknaren visits med 5",
"sätt nyckel greeting till \"hello\" i 1 timme",
"visa mig de 10 mest använda nycklarna",
"radera alla nycklar som matchar temp:*"
]
}
}
},
ssh: {
on: 'SSH på',
off: 'SSH av',
sshHost: 'SSH-värd',
sshPort: 'SSH-port',
sshUsername: 'SSH-användarnamn',
sshPassword: 'SSH-lösenord',
sshPrivateKey: 'SSH privat nyckel'
},
isBuffer: opts => `[object ArrayBuffer] betyder att värdet är binärdata eller att värdet är större än ${opts.maxValueAsBuffer}`,
streamValue: `Stream-fält och värde är på en rad. T.ex.: field1 value1 "field 2" "value 2"`,
streamTimestampId: `'*' betyder autogenererat eller specifikationen som <millisekunderTid>-<sekvensnummer>`,
unableToLoadKey: ({
key
}) => {
return `Kan inte ladda denna nyckel: ${key}. Möjligen har nyckeln raderats. Det exakta felet finns i konsolen.`;
},
bigJson: "Detta JSON-objekt är över 10 kb, så se till att du vet vad du gör, eftersom vissa funktioner kan vara långsamma att rendera.",
addNode: "Lägg till nod",
validateJson: "Validera JSON",
reducedFunction: `Reducerad funktionalitet`,
tooManyKeys: opts => {
return `Det maximala antalet nycklar för full funktionalitet är ${opts.maxLightKeysCount}. Denna databas har fler nycklar totalt ${opts.count}. Nyckelsortering och ytterligare trädinfo är inaktiverat. Sökningen sker bara på servern istället för klientsökning.`;
},
redisCommandNotFound: "Inget matchande Redis-kommando hittades ...",
treeKeyStore: `Sorteringen (naturlig jämförelse) utförs på klienten, dvs. webbläsaren, vilket innebär att det finns en prestandakostnad för stora uppsättningar, som över 10k nycklar, det kan lägga till lite tid till sidans rendering. Det finns ingen nyckelsortering i Redis, bara så här.`,
socketIoTimeout: options => {
return `Socket.IO-förfrågan tog för lång tid (max ${options.timeout / 1000} sekunder) ...`;
},
resizerInfo: options => {
return `Minsta bredd för vänster eller höger panel är ${options.width}px`;
},
jsonViewNotParsable: "Detta värde kan inte tolkas som JSON ",
ttlTitle: "Ange TTL i sekunder",
passwordSecure: "Lösenordet kan vara tomt, men det visar fortfarande tecken, detta är en säkerhetsfunktion.",
aclAuthHint: "Använd Redis ACL-användarnamn och lösenord för att autentisera. Lämna tomt för standardanvändaren utan lösenord.",
tlsWithoutCert: "Aktivera TLS utan ytterligare certifikat",
tlsRejectUnauthorized: "Avvisa obehörigt certifikat",
tlsSecure: "Om du ser en TLS-konfiguration som börjar med P3X eller alla TLS-inställningar ser likadana ut, är det en säkerhetsfunktion. För att ändra inställningarna, ersätt dem med tomt eller något annat så sparas de. Om du inte ändrar TLS-inställningarna behålls de som de är på servern.",
treeSeparatorEmpty: "Om trädseparatorn är tom kommer trädet inte ha några kapslade noder, bara en ren lista",
treeSeparatorEmptyNote: "Inga kapslade noder, bara en ren lista",
welcomeConsole: "Välkommen till Redis-konsolen",
welcomeConsoleInfo: "SHIFT + Piltangent UPP eller NER för historik är aktiverat",
redisListIndexInfo: "Tomt för att lägga till sist, -1 för att lägga till först eller spara på den visade positionen.",
console: "Konsol",
connectiondAdd: "Lägg till anslutning",
connectiondEdit: "Redigera anslutning",
connectiondView: "Visa anslutning",
connections: "Anslutningar",
keysSort: {
on: "Nyckelsortering på",
off: "Nyckelsortering av"
},
cluster: {
on: "Cluster på",
off: "Cluster av"
},
sentinel: {
on: "Sentinel på",
off: "Sentinel av",
name: "Sentinel-namn"
},
readonly: {
on: "Skrivskydd på",
off: "Skrivskydd av"
},
theme: {
light: "Ljus",
dark: "Mörk enterprise",
darkNeu: "Mörk",
darkoBluo: "Darko bluo",
enterprise: "Enterprise",
redis: "Redis",
matrix: "Matrix"
},
connected: opts => {
return `Ansluten: ${opts.name}`;
},
tree: "Träd",
askAuth: "Fråga efter auktorisering",
keyboardShortcuts: "Kortkommandon",
about: "Om",
supportedLanguages: "Språk som stöds",
version: "Version",
redisVersion: "Redis-version",
modules: "Moduler",
shortcutRefresh: "Uppdatera",
shortcutSearch: "Fokusera sökning",
shortcutNewKey: "Ny nyckel",
shortcutDisconnect: "Koppla från",
themeAuto: "Automatisk (system)",
languageAuto: "Auto (system)",
shortcutCommandPalette: "Kommandopalett",
commandPalette: "Kommandopalett",
noResults: "Inga resultat",
redisCommandsReference: "Redis Kommandon",
ungrouped: "Ogrupperad",
grouped: "Grupperad",
connectFirst: "Anslut först till en Redis-server",
searchLanguage: "Sök språk...",
exportProgress: "Exporterar nycklar...",
importProgress: "Importerar nycklar...",
importPreview: "Förhandsgranskning",
importOverwrite: "Skriv över",
importSkip: "Hoppa över",
importConflict: "Om nyckeln redan finns:",
noKeysToExport: "Inga nycklar att exportera",
time: "Tid",
type: "Typ",
format: "Format",
loading: "Laddar...",
autoRefresh: "Auto",
exportSearchHint: "Exporterar bara nycklar som matchar aktuell sökning",
importSearchHint: "Import gäller hela databasen, inte bara sökresultat",
deleteSearchHint: "Raderar alla nycklar som matchar den aktuella sökningen på servern",
deletingSearchKeys: "Raderar matchande nycklar...",
importNoKeys: "Inga nycklar hittades i filen",
desktopNotifications: "Skrivbordsmeddelanden",
desktopNotificationsEnabled: "Aktivera skrivbordsmeddelanden",
desktopNotificationsInfo: "Få OS-meddelanden för Redis-frånkopplingar och återanslutningar när appen inte är i fokus."
},
status: {
dataCopied: "Datan finns i urklipp",
exportDone: "Export klar",
deletedSearchKeys: (opts) => `${opts.count} nycklar raderade`,
indexCreated: "Index skapat",
indexDropped: "Index borttaget",
importDone: (opts) => `Import klar: ${opts.created} skapade, ${opts.skipped} hoppade över, ${opts.errors} fel`,
nodeRemoved: "Nod borttagen",
keyIsNotExisting: "Denna nyckel kan ha raderats eller gått ut.",
keyCount: opts => {
if (opts.keyCount === 0) {
return "Ingen nyckel";
} else if (opts.keyCount === 1) {
return "1 nyckel";
} else {
return `${opts.keyCount} nycklar`;
}
},
treeExpandAll: "Expandera alla trädlöv. Denna operation kan vara kostsam och kan ta tid ...",
noRedisKeys: "Det finns inga nycklar i denna databas.",
redisConnected: "Redis anslutet framgångsrikt",
reverted: "\u00c5ngrad",
reloadingDataInfo: "Laddar om Redis-datainfo",
added: "Tillagd",
saved: "Uppdaterad",
cancelled: "Avbruten",
deleted: "Raderad",
savedRedis: "Redis-data är sparad",
redisDisconnected: opts => {
return `Den aktuella anslutningen hade ett fel: ${opts.error.message}`;
},
dbChanged: opts => {
return `DB-index satt till ${opts.db}. `;
},
treeDeleted: opts => {
return `Trädnyckeln raderades (${opts.key}).`;
},
deletedKey: opts => {
return `Nyckeln raderades (${opts.key}).`;
},
renamedKey: "Denna nyckel har bytt namn",
ttlChanged: "Denna nyckels TTL har ändrats",
notInteger: "Denna inmatning är inte ett heltal",
persisted: "Denna nyckel finns kvar för alltid",
set: "Nyckeln är satt/tillagd",
connectionRestored: "Anslutningen återställd",
socketDisconnected: "Frånkopplad",
socketError: "Anslutningsfel",
deletedHashKey: "Hash-nyckel raderad",
deletedSetMember: "Set-medlem raderad",
deletedListElement: "Listelement raderat",
deletedZSetMember: "Sorterat set-medlem raderad",
deletedStreamTimestamp: "Stream-post raderad",
},
code: {
"delete-connection": "Denna anslutning raderades, så du är frånkopplad från denna Redis-instans.",
"save-connection": "Denna anslutning ändrades, så du är frånkopplad från denna Redis-instans. Du kan ansluta igen.",
"readonly-connections": "Anslutningar lägg till/spara/radera är enbart skrivskyddade!",
"readonly-connection-mode": "Denna anslutning är i skrivskyddat läge!",
"list-out-of-bounds": "Detta listindex är utanför intervallet",
"invalid-json-value": "The value is not valid JSON.",
"http_auth_required": "Auktorisering krävs: vänligen autentisera med HTTP Basic Auth och ladda om.",
"auto-connection-failed": "Möjligen togs anslutningen bort och den automatiska anslutningen misslyckades på grund av detta.",
invalid_console_command: "Detta kommando fungerar inte via GUI.",
"AI_DISABLED": "AI är inaktiverad. Aktivera det i AI-inställningar.",
"AI_PROMPT_REQUIRED": "AI-förfrågan krävs.",
"GROQ_API_KEY_READONLY": "Groq API-nyckeln är skrivskyddad och kan inte ändras.",
"blocked_api_access": "Din Groq API-plan tillåter inte åtkomst till denna modell. Uppgradera din Groq-plan eller använd network.corifeus.com proxy.",
"rate_limit": "AI-hastighetsgräns nådd. Försök igen senare eller använd din egen Groq API-nyckel i inställningarna."
},
form: {
error: {
required: "Obligatoriskt",
port: "Porten måste vara mellan 1-65535",
invalid: "Formuläret är ogiltigt"
},
connection: {
label: {
name: "Namn",
group: "Grupp",
host: "Värdnamn",
port: "Port",
password: "Lösenord",
username: "Användarnamn"
}
},
treeSettings: {
maxValueDisplay: "Max visningslängd för värde",
maxValueDisplayInfo: "Om satt till 0, visa fullständiga värden. Om större än 0, korta av till denna längd. Om -1: för strängar, dölj värdet tills redigering; för andra typer, visa fullständigt innehåll.",
maxKeys: "Max antal nycklar",
maxKeysInfo: "För att GUI:t inte ska krascha begränsar vi max antal nycklar.",
keyCount: (opts) => {
return `Antal nycklar: ${opts?.keyCount ?? 0}`;
},
label: {
animation: "Använd animation",
noAnimation: "Ingen animation",
undoEnabled: "\u00c5ngra aktiverat",
undoDisabled: "\u00c5ngra inaktiverat",
diffEnabled: "Visa diff f\u00f6re sparning",
diffDisabled: "Diff f\u00f6re sparning \u00e4r inaktiverat",
jsonFormatTwoSpace: "Formatera JSON med 2 mellanslag",
jsonFormatFourSpace: "Formatera JSON med 4 mellanslag",
formName: "Redis-inställningar",
searchModeClient: "Klientsökningsläge",
searchModeServer: "Serversökningsläge",
searchModeStartsWith: "Sök med börjar-med-läge",
searchModeIncludes: "Sök med innehåller-läge"
},
undoHint: "\u00c5ngra \u00e4r bara tillg\u00e4ngligt f\u00f6r nyckeltyperna string och JSON",
field: {
treeSeparator: "Trädseparator",
treeSeparatorSelector: "Trädseparatorväljare",
page: "Trädpagineringsantal",
keyPageCount: "Nyckelpagineringsantal",
keysSort: "Sortera nycklarna",
searchMode: "Sökläge",
searchModeStartsWith: "Sök börjar med / innehåller"
},
error: {
keyPageCount: "Nyckelsidantal måste vara ett heltal mellan 5 - 100",
page: "Sidantalet måste vara ett heltal mellan 10 - 5000",
maxValueDisplay: "Det maximala visningsvärdet måste vara ett heltal mellan -1 och 32768",
maxKeys: "Det maximala nyckelantalet måste vara ett heltal mellan 100 och 100000"
}
},
key: {
label: {
formName: {
add: "Lägg till ny Redis-nyckel",
edit: "Redigera Redis-nyckel",
append: "Lägg till i befintlig Redis-nyckel"
}
},
field: {
streamTimestamp: "Tidsstämpel",
key: "Nyckel",
type: "Typ",
index: "Index",
hashKey: "Hash-nyckel",
score: "Poäng",
value: "Värde",
errorRate: "Felfrekvens",
capacity: "Kapacitet",
topk: "Top K",
width: "Bredd",
depth: "Djup",
decay: "Förfall",
compression: "Komprimering",
increment: "Ökning",
item: "Objekt",
vectorValues: "Vektorvärden (kommaseparerade)",
element: "Elementnamn",
},
error: {
streamTimestamp: "Tidsstämpeln krävs, antingen Redis-format eller som *",
key: "Nyckeln måste ha minst ett tecken",
hashKey: "Hash-tabellnyckeln måste ha minst ett tecken",
score: "Sorterad uppsättningspoäng krävs",
value: "Värdet krävs",
errorRate: "Felfrekvensen måste vara mellan 0 och 1 (t.ex. 0.01)",
capacity: "Kapaciteten måste vara ett positivt heltal",
topk: "Top K måste vara ett positivt heltal",
width: "Bredden måste vara ett positivt heltal",
depth: "Djupet måste vara ett positivt heltal",
item: "Objektet krävs"
}
},
main: {
label: {
database: "DB"
}
}
},
page: {
search: {
title: "Sök",
index: "Index",
query: "Fråga",
results: "Resultat",
noIndex: "Inga index hittades",
createIndex: "Skapa index",
dropIndex: "Ta bort index",
indexInfo: "Indexinfo",
indexName: "Indexnamn",
prefix: "Nyckelprefix (valfritt)",
fieldName: "Fältnamn",
hybridMode: "Hybridsökning (FT.HYBRID)",
vectorField: "Vektorfält",
vectorValues: "Vektorvärden",
},
monitor: {
title: "Övervakning",
memory: "Minne",
opsPerSec: "Ops/sek",
clients: "Klienter",
blocked: "Blockerade",
hitsMisses: "Träffkvot",
networkIo: "Nätverk I/O",
slowLog: "Långsam logg",
noSlowQueries: "Inga långsamma frågor registrerade.",
confirmSlowLogReset: "Är du säker på att du vill återställa den långsamma loggen?",
slowLogResetDone: "Den långsamma loggen återställdes.",
totalCommands: "Totalt",
expired: "Utgångna",
evicted: "Borttagna",
clientList: "Klientlista",
topKeys: "Största nycklar efter minne",
killClient: "Avsluta klient",
clientKilled: "Klient avslutad",
confirmKillClient: "Är du säker på att du vill avsluta denna klient?",
noKeys: "Inga nycklar",
rss: "RSS",
peak: "Topp",
fragmentation: "Fragmentering",
hitsAndMisses: "Träffar / Missar",
noClients: "Inga klienter",
slotStats: "Kluster slot statistik",
serverInfo: "Serverinformation",
os: "Operativsystem",
port: "Nätverksport",
pid: "Process ID",
configFile: "Konfigurationsfil",
uptime: "Upptid",
keyspace: "Redis nyckelutrymme",
keys: "Redis-nycklar",
expires: "Upphör att gälla",
noKeyspace: "Inga nycklar",
persistence: "Databeständighet",
rdbLastSave: "RDB Senast sparad",
rdbStatus: "RDB-status",
rdbChanges: "Ändringar sedan senast sparade",
aofEnabled: "AOF aktiverad",
aofSize: "AOF Storlek",
replication: "Redis Replikering",
role: "Replikeringsroll",
replicas: "Kopplade repliker",
masterHost: "Primär värd",
linkStatus: "Replikeringslänkstatus",
cpu: "CPU-användning",
cpuSys: "System",
cpuUser: "Användare",
modules: "Laddade Redis-moduler",
noModules: "Inga Redis-moduler laddade",
clusterSlotMap: "Redis kluster slot karta",
slotRange: "Cluster slot intervall",
totalSlots: "Totala klusterplatser",
noClusterData: "Ingen Redis-klusterdata tillgänglig.",
},
analysis: {
title: "Minnesanalys",
runAnalysis: "Kör analys",
running: "Analyserar...",
typeDistribution: "Typfördelning",
prefixMemory: "Minne per prefix",
topKeysByMemory: "Största nycklar per minne",
expirationOverview: "Nyckelutgång",
memoryBreakdown: "Minnesfördelning",
keysScanned: "Skannade nycklar",
totalMemory: "Totalt minne",
rssMemory: "RSS-minne",
peakMemory: "Toppminne",
luaMemory: "Lua-minne",
overheadMemory: "Overhead",
datasetMemory: "Datauppsättning",
fragmentation: "Fragmentering",
allocator: "Allokator",
withTTL: "Med TTL",
persistent: "Permanenta",
avgTTL: "Genomsnittlig TTL",
prefix: "Prefix",
keyCount: "Antal nycklar",
memoryUsage: "Minnesanvändning",
noPrefix: "(inget prefix)",
topN: "Top N",
maxScanKeys: "Max. skannade nycklar",
type: "Typ",
noData: "Ingen data. Klicka Kör analys för att starta.",
exportAll: "Exportera allt",
memoryDoctor: "Memory Doctor",
doctorNoData: "Klicka på Uppdatera för att köra Memory Doctor-diagnostik.",
},
acl: {
title: "ACL-användare",
loadUsers: "Ladda användare",
loading: "Laddar...",
username: "Användarnamn",
status: "Status",
enabled: "Aktiverad",
disabled: "Inaktiverad",
commands: "Kommandon",
commandsHint: "t.ex. +@all or +@read -@dangerous",
keys: "Redis nyckelmönster",
keysHint: "t.ex. ~* or ~user:*",
channels: "Pub/Sub-kanaler",
channelsHint: "t.ex. &* or ¬ifications:*",
password: "Lösenord",
noPassword: "Inget lösenord (nopass)",
passwordHint: "Lämna tomt för att behålla nuvarande lösenord",
currentUser: "Aktuell",
createUser: "Skapa användare",
editUser: "Redigera användare",
deleteUser: "Radera",
confirmDelete: "Är du säker på att du vill ta bort ACL-användaren?",
userDeleted: "ACL-användaren raderades.",
userSaved: "ACL-användaren sparades.",
cannotDeleteDefault: "Det går inte att ta bort standardanvändaren.",
cannotDeleteSelf: "Det går inte att ta bort den för närvarande anslutna användaren.",
noUsers: "ACL kräver Redis 6.0+.",
groupCommon: "Allmänt",
groupDataTypes: "Datatyper",
groupOperations: "Åtgärder",
rules: "Regler",
rulesHint: "Mellanslagsseparerade tokens (till exempel on >password +@all ~* &*)",
defaultUserWarning: "Varning: Om du ändrar standardanvändaren kan alla anslutningar låsas. Om detta händer måste du starta om Redis eller använda redis-cli för att återställa åtkomsten.",
},
overview: {
noConnected: "Det finns ingen anslutning till Redis.",
overviewClients: "Lista de anslutna efter antal klienter",
connectedCount: opt => {
if (opt.length === 1) {
return "1 klient";
}
return `${opt.length} klienter`;
}
},
key: {
label: {
key: "Nyckel",
encoding: "Kodning",
compression: "Komprimering",
aiRateLimited: "AI-förfrågningsgränsen har nåtts. Försök igen senare eller använd din egen Groq API-nyckel i Inställningar.",
aiError: "AI-förfrågan misslyckades",
length: "Storlek",
ttl: "TTL",
ttlTitle: "Livstid",
type: "Typ",
ttlNotExpire: "går inte ut",
lengthString: "byte",
lengthItem: "objekt",
actions: "Åtgärder"
},
list: {
table: {
index: "Index",
value: "Värde"
}
},
hash: {
table: {
hashkey: "Hash-nyckel",
value: "Värde"
}
},
set: {
table: {
value: "Medlem"
}
},
zset: {
table: {
value: "Medlem",
score: "Poäng"
}
},
stream: {
table: {
timestamp: "Tidsstämpel-ID",
field: "Fält",
value: "Värde"
}
},
timeseries: {
chart: "Diagram",
info: "Info",
addPoint: "Lägg till datapunkt",
from: "Från (ms eller -)",
to: "Till (ms eller +)",
aggregation: "Aggregering",
timeBucket: "Tidsintervall (ms)",
none: "Ingen",
dataPoints: "datapunkter",
labels: "Etiketter",
rules: "Regler",
retention: "Lagring",
timestamp: "Tidsstämpel",
value: "Värde",
retentionHint: "0 = ingen utgång, eller millisekunder",
duplicatePolicy: "Dubblettpolicy",
labelsHint: "nyckel1 värde1 nyckel2 värde2",
timestampHint: "'*' betyder automatisk generering, eller tidsstämpel i millisekunder",
editAllHint: "En datapunkt per rad: tidsstämpel värde (tidsstämpel kan vara * för auto)",
autoSpread: "Automatiskt * spridningsintervall",
formula: "Formel",
formulaLinear: "Linjär",
formulaRandom: "Slumpmässig",
formulaSawtooth: "Sågtand",
formulaPoints: "Punkter",
formulaAmplitude: "Amplitud",
formulaOffset: "Förskjutning",
generate: "Generera",
exportChart: "Exportera PNG",
overlay: "Överlagra nycklar",
overlayHint: "Kommaseparerade nycklar",
mrangeFilter: "Etikettfilter",
bulkMode: "Massgenerering",
mrangeHint: "t.ex. sensor=temp"
},
probabilistic: {
info: "Info",
addItem: "Lägg till objekt",
checkItem: "Kontrollera objekt",
item: "Objekt",
exists: "Finns",
doesNotExist: "Finns inte",
topkList: "Toppobjekt",
topkCount: "Antal",
queryCount: "Antal förfrågningar",
queryResult: "Frågeresultat",
addedSuccessfully: "Objektet lades till framgångsrikt",
deletedSuccessfully: "Objektet raderades framgångsrikt",
quantile: "Kvantil",
quantileResult: "Resultat",
noItems: "Inga objekt att visa",
resetConfirm: "Återställa all data i detta T-Digest?"
},
vectorset: {
info: "Info",
elements: "Element",
similarity: "Likhetssökning",
searchByElement: "Sök efter element",
searchByVector: "Sök efter vektor",
vectorValues: "Vektorvärden",
element: "Element",
score: "Poäng",
count: "Antal",
addElement: "Lägg till element",
attributes: "Attribut",
noAttributes: "Inga attribut",
dimensions: "Dimensioner",
removeConfirm: "Ta bort detta element från VectorSet?",
noElements: "Inga element",
filter: "Filter",
searchComplete: "Sökning slutförd",
}
},
treeControls: {
settings: "Trädinställningar",
expandAll: "Expandera alla",
collapseAll: "Komprimera alla",
level: "Nivå",
search: {
search: "Sök bland nycklarna",
clear: "Rensa aktuell sökning",
placeholderClient: "Sök på klientsidan",
placeholderServer: "Sök på serversidan",
info: (opts) => "Klientsidessökning innebär att den matchar texten i sökfältet. Serversidessökning innebär att den söker i nyckelmönster som *{sök-text}*. För stora sökuppsättningar är det bättre att använda serversidessökning. För mindre sökuppsättningar är det bättre att använda klientsidessökning." + ` Om nyckelantalet överstiger ${opts?.maxLightKeysCount ?? 110000} kan du bara söka på serversidan.`,
largeSetInfo: "I en stor uppsättning är klientsidessökning inaktiverad, så just nu är bara serversidessökning möjlig.",
infoDetails: "För att ta reda på hur sökningen fungerar, kontrollera inställningarna"
},
pager: {
next: "Nästa",
prev: "Föregående",
first: "Första",
last: "Sista"
}
}
},
time: {
years: "år",
months: "månader",
days: "dagar",
year: "år",
month: "månad",
day: "dag",
second: "sekund",
seconds: "sekunder",
minute: "minut",
minutes: "minuter",
hour: "timme",
hours: "timmar"
},
redisTypes: {
string: "String",
list: "List",
hash: "Hash table",
set: "Set",
zset: "Sorted set - zset",
stream: "Stream",
json: "JSON",
timeseries: "Time Series",
bloom: "Bloom filter",
cuckoo: "Cuckoo filter",
topk: "Top-K",
cms: "Count-Min Sketch",
tdigest: "T-Digest",
vectorset: "VectorSet",
},
promo: {
title: "AI-nätverksassistent",
description: "Upptäck vår kostnadsfria AI-nätverksassistent på network.corifeus.com — analysera domäner, IP-adresser, DNS-poster, SSL-certifikat, e-postsäkerhet och nätverksinfrastruktur. Drivs av AI för omedelbara, heltäckande resultat.",
disclaimer: "Denna kampanj visas endast på demosajten och kommer inte att visas i Docker-, Electron- eller webbappsdistributioner.",
toastMessage: "Prova vår kostnadsfria AI-nätverksassistent på network.corifeus.com — analysera domäner, DNS, SSL med mera!",
visit: "Besök network.corifeus.com",
}
};
module.exports = strings;