Files
Termix/plugins/ai/locales/translated/af_ZA.json
T
Luke GustafsonandZacharyZcR 6b708106e1 release-2.9.1 (#1557)
* fix(sso): send the PKCE verifier for GitHub login (#1534)

* fix(remote-desktop): clip cursor overflow without disabling zoom (#1535)

* test(remote-desktop): preserve sessions beyond one hour (#1536)

* fix(hosts): expose controls for overflowing editor tabs (#1537)

* fix(hosts): expose controls for overflowing editor tabs

* test(hosts): mock resize observation in admin panel tests

* fix(status): skip TCP probes while host sessions are active (#1538)

* fix(database): batch session activity persistence (#1539)

* docs(api): describe cookie and API key authentication (#1540)

* fix(snippets): repair missing note column on SQLite upgrades (#1541)

* fix(docker): retain stored SSH credential association (#1543)

* fix(file-manager): render transfer toasts without plugin hooks (#1546)

* feat(hosts): keep compact row actions inline (#1547)

* fix(auth): allow retrying unavailable second-factor interfaces (#1549)

* fix(auth): reject unresolved legacy identity provisioning (#1550)

* fix(desktop): ship the plugin SDK inside Mac App Store builds (#1551)

* fix(tmux): pass full session info to the terminal's session picker (#1552)

The tmux.sessions service reduced detected sessions to bare names, but the
picker reads session.name, so every entry rendered blank and selecting one
sent an empty name, which created a new session instead of attaching.

* fix(ssh): read force keyboard-interactive as a boolean when resolving hosts (#1553)

The column holds the text "true"/"false", and the resolver passed it
through as-is. The string "false" is truthy, so the password provider
treated every saved host as forced keyboard-interactive and left the
password out. Jump hops are built straight from the resolved host, so a
password hop whose server doesn't offer keyboard-interactive failed with
"All configured authentication methods failed".

* fix(database): batch database saves for bulk host writes (#1554)

* fix(database): yield to the event loop between database saves

Each SQLite save serializes and encrypts the whole database into new
buffers, which V8 only releases once the event loop turns. Boot
migrations and bulk host import write plugin settings per host and per
key in an awaited loop, so hundreds of full copies piled up and the
container ran out of memory.

* fix(database): save once per bulk host write instead of once per row

On SQLite every repository write force-saves the whole database. Boot
plugin data migrations, host defaults materialization and the bulk
host routes write one row per host per setting, so they serialized and
encrypted the full database hundreds of times in a row.

DatabaseSaveTrigger.batched wraps a function so force saves made while
it runs collapse into a single save when it finishes. Nested scopes fold
into the outer one, and work that outlives its scope saves normally.

* feat(hosts): add instance-wide predefined tag suggestions (#1548)

* feat(hosts): add shared predefined tag suggestions

* style(hosts): format tag catalog routes

* test(database): advance fake timers past the save yield (#1555)

* fix(i18n): complete Simplified Chinese core and plugin translations (#1542)

* fix(i18n): complete Chinese onboarding and navigation labels

* fix(i18n): translate remaining Chinese core and plugin interfaces

* fix(i18n): translate host editor tab overflow controls

* fix(i18n): use consistent Chinese fleet terminology

* fix(i18n): localize hardcoded controls and plugin views

* fix(i18n): translate built-in homepage widget catalog

* test(homepage): follow translated timezone placeholder

* fix(i18n): translate plugin-provided homepage widgets

* fix(i18n): localize feature settings section titles

* fix: 2.8 oidc accounts unable to sign in after upgrading (#1381)

* fix: plugins losing the saved ssh login when copying a host (#1391)

* fix: fleets, proxmox and automations not getting the host sudo password

* fix: host imports running a defaults pass and metrics restart per host (#1384)

* fix: high cpu from status probes and full database saves on every sample (#1300)

* fix: user data export freezing the server (#1393)

* fix: op:// secret references rejected as ssh keys on credentials (#1394)

* fix: slow file deletes from the trash lookups on every delete (#1390)

* fix: add openapi docs and error handling to host tag routes

* test: compare download stream buffers directly so it stops timing out

* chore: drop em dash from host row comment

* chore: update release notes for 2.9.1

* fix: restore space to add host tags and redesign predefined tags editor

* fix: host key silently accepted when the host is missing from the database (#1397)

* fix: clearer host login failed status label and fix its translations (#1396)

* chore: add host key and status label fixes to release notes

* fix: sso and ldap provider dialogs overflowing the screen and using mismatched toggles

* chore: increment ver

* fix(audit): store plugin entries with no acting user as a null user_id (#1556)

Plugin audit entries written outside a request used the literal "system"
as user_id. That column references users.id, so the insert was refused
(Postgres logs it as an FK violation) and the entry was silently dropped.
Write null instead and keep "system" / plugin:<id> in username.

* chore: add sso/ldap dialog and audit log fixes to release notes

* fix: tunnels and host settings missing from shared hosts on desktop

* fix: remote desktop logins missing from shared hosts on desktop

* fix: simplify host status to online/offline and keep it live without a refresh

* chore: sync Crowdin translations for 2.9.1

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
2026-10-04 15:11:41 -05:00

123 lines
5.6 KiB
JSON

{
"permissions": {
"use": {
"title": "Gebruik die assistent",
"description": "Maak die assistent oop en vra dit dinge."
},
"manage_providers": {
"title": "Bestuur verskaffers",
"description": "Voeg die KI-verskaffers en hul API-sleutels by, wysig en verwyder hulle."
},
"apply_proposals": {
"title": "Pas voorstelle toe",
"description": "Laat die assistent die veranderinge wat dit voorstel, uitvoer."
},
"services.use": {
"title": "Gebruik KI van ander funksies",
"description": "Ander funksies kan die assistent namens jou skakel."
},
"secrets.share": {
"title": "Deel die API-sleutel",
"description": "Ander funksies mag die gestoorde KI API-sleutel gebruik sonder om dit te sien."
}
},
"settings": {
"assistantUnavailable": "Die KI-assistent is afgeskakel op hierdie bediener.",
"providersNeedOptIn": "Skakel die KI-assistent hierbo aan om verskaffers by te voeg.",
"admin": {
"globallyEnabled": {
"label": "KI-assistent",
"description": "Laat gebruikers die KI-assistent aanskakel. Terwyl dit af is, is die assistent vir almal versteek en geblokkeer."
},
"privateEndpoints": {
"label": "Toegelate private KI-gashere",
"description": "Gashere op jou privaat netwerk waarna gebruikers 'n verskaffer kan verwys, soos 'n self-gehoste Ollama. Plaas een gasheer op elke lyn."
}
},
"host": {
"enableAiAssistant": {
"label": "Aktiveer KI-assistent",
"description": "Laat die KI-assistent toe om in hierdie gasheer se terminaal te help. Standaard afgeskakel, en KI moet steeds vir jou rekening geaktiveer word."
}
}
},
"ai": {
"title": "Assistent",
"send": "Stuur",
"stop": "Stop",
"save": "Stoor",
"cancel": "Kanselleer",
"running": "hardloop",
"approve": "Goedkeur",
"reject": "Verwerp",
"inputPlaceholder": "Vra oor jou bedieners, of beskryf 'n verandering om voor te stel",
"selectProvider": "Kies 'n verskaffer",
"providerSettings": "Verskafferinstellings",
"addProvider": "Voeg verskaffer by",
"editProvider": "Wysig verskaffer",
"removeProvider": "Verwyder verskaffer",
"providerType": "Verskaffer",
"providerLabel": "Naam",
"providerLabelPlaceholder": "Byvoorbeeld: Plaaslike Ollama",
"baseUrl": "Bedieneradres",
"apiKey": "API-sleutel",
"defaultModel": "Standaardmodel",
"defaultModelPlaceholder": "Byvoorbeeld: llama3.1 of claude-opus-5",
"labelRequired": "Gee hierdie verskaffer 'n naam",
"providerSaveFailed": "Kon nie die verskaffer stoor nie",
"providerUpdated": "Verskaffer opgedateer",
"providerDeleteFailed": "Kon nie die verskaffer verwyder nie",
"privateEndpointHint": "Adresse op jou private netwerk benodig eers 'n administrateur om die gasheer toe te laat.",
"providerOllama": "Ollama",
"providerAnthropic": "Antropiese",
"providerOpenai": "OpenAI",
"providerGemini": "Google Tweeling",
"providerOpenaiCompatible": "OpenAI-versoenbaar",
"toolArguments": "Invoer",
"toolResult": "Resultaat",
"statusApplied": "Toegepas",
"statusRejected": "Verwerp",
"proposalApplied": "Verandering toegepas",
"proposalApplyFailed": "Kon nie die verandering toepas nie",
"proposalRejectFailed": "Kon nie die verandering verwerp nie",
"enableTitle": "Aktiveer die KI-assistent",
"enableDescription": "Laat die assistent jou opstelling lees en veranderinge voorstel wat jy kan goedkeur.",
"readOnlyCommands": "Laat leesalleen-diagnostiese bevele toe",
"readOnlyCommandsDescription": "Die assistent kan 'n kort lys veilige opdragte soos df en uptime uitvoer sonder om elke keer te vra. Enigiets wat 'n bediener verander, word altyd eerste voorgestel.",
"modelDetectFailed": "Kon nie die verskaffer bereik nie, so dit is 'n algemene lys. Jy kan enige modelnaam tik.",
"modelCustom": "Voer 'n modelnaam in",
"modelRefresh": "Verfris lys",
"modelPlaceholder": "Kies of tik 'n model",
"attachHint": "Tik @ om na 'n gasheer, brokkie of outomatisering te verwys. Veranderinge word voorgestel vir jou om goed te keur.",
"runCommandTitle": "Voer opdrag uit",
"assistant": "KI-assistent",
"terminalPanelEmpty": "Vra die assistent oor hierdie gasheer. Enigiets wat van status verander, benodig eers jou goedkeuring.",
"terminalPanelPlaceholder": "Vra oor hierdie gasheer...",
"noProvidersConfigured": "Geen KI-verskaffer is nog gekonfigureer nie. Voeg een by in die KI-assistent-oortjie.",
"runsInOpenTerminal": "Loop in jou oop terminaalsessie.",
"runInTerminal": "Hardloop",
"terminalContextPrefill": "Hier is my terminaaluitvoer:\n\n{{output}}\n\n",
"secrets": {
"shareApiKey": "Laat ander funksies jou KI-verskaffer API-sleutel vir hul eie versoeke gebruik. Die sleutel word nooit gekopieer nie, en jy kan dit te eniger tyd herroep."
}
},
"nav": {
"ai": "KI"
},
"onboarding": {
"aiTitle": "KI-assistent",
"aiIntro": "Termix kan 'n opsionele KI-assistent insluit. Jy kan dit later in jou instellings verander.",
"aiSkipTitle": "Los dit af",
"aiSkipDesc": "Termix werk soos dit nou doen. Die assistent bly versteek.",
"aiEnableTitle": "Skakel dit aan",
"aiEnableDesc": "Voeg 'n assistent by wat jou opstelling lees en veranderinge voorstel wat jy goedkeur. Benodig 'n verskaffer wat jy verskaf, soos 'n plaaslike Ollama.",
"aiNote": "Niks word êrens heen gestuur totdat jy 'n verskaffer byvoeg en 'n boodskap stuur nie."
},
"hosts": {
"docsLink": "Bekyk dokumente"
},
"plugin": {
"name": "AI Assistant"
}
}