Files
Termix/plugins/ai/locales/translated/ko_KR.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
6.4 KiB
JSON

{
"permissions": {
"use": {
"title": "도우미를 사용하세요",
"description": "어시스턴트를 열고 질문을 해보세요."
},
"manage_providers": {
"title": "공급자 관리",
"description": "AI 제공업체와 해당 API 키를 추가, 편집 및 삭제할 수 있습니다."
},
"apply_proposals": {
"title": "제안서를 제출하세요",
"description": "도우미가 제안하는 변경 사항을 실행하도록 하세요."
},
"services.use": {
"title": "다른 기능의 AI를 활용하세요",
"description": "다른 기능들이 사용자를 대신하여 어시스턴트에게 전화를 걸 수도 있습니다."
},
"secrets.share": {
"title": "API 키를 공유하세요",
"description": "다른 기능들이 저장된 AI API 키를 직접 보지 않고도 사용할 수 있습니다."
}
},
"settings": {
"assistantUnavailable": "이 서버에서는 AI 비서 기능이 꺼져 있습니다.",
"providersNeedOptIn": "위의 AI 도우미를 켜서 제공업체를 추가하세요.",
"admin": {
"globallyEnabled": {
"label": "AI 비서",
"description": "사용자가 AI 비서를 켜고 끌 수 있도록 하세요. AI 비서가 꺼져 있으면 모든 사용자에게 비서 기능이 숨겨지고 차단됩니다."
},
"privateEndpoints": {
"label": "개인 AI 호스트 허용",
"description": "사용자가 공급자를 지정할 수 있는 개인 네트워크의 호스트(예: 자체 호스팅 Ollama)를 입력합니다. 각 줄에 호스트를 하나씩 입력하십시오."
}
},
"host": {
"enableAiAssistant": {
"label": "AI 어시스턴트 활성화",
"description": "이 호스트의 터미널에서 AI 도우미의 도움을 받을 수 있도록 허용합니다. 기본적으로 비활성화되어 있으며, 계정에 AI 기능이 활성화되어 있어야 합니다."
}
}
},
"ai": {
"title": "어시스턴트",
"send": "보내다",
"stop": "스톱",
"save": "저장",
"cancel": "취소",
"running": "실행 중",
"approve": "승인하다",
"reject": "거부하다",
"inputPlaceholder": "서버에 대해 문의하거나, 변경 사항을 제안해 보세요.",
"selectProvider": "제공업체를 선택하세요",
"providerSettings": "공급자 설정",
"addProvider": "공급자 추가",
"editProvider": "제공자 수정",
"removeProvider": "제공업체를 제거하세요",
"providerType": "공급자",
"providerLabel": "이름",
"providerLabelPlaceholder": "예: 지역 올라마",
"baseUrl": "서버 주소",
"apiKey": "API 키",
"defaultModel": "기본 모델",
"defaultModelPlaceholder": "예를 들어: llama3.1 또는 claude-opus-5",
"labelRequired": "이 제공업체에 이름을 지정하세요",
"providerSaveFailed": "공급자를 저장할 수 없습니다.",
"providerUpdated": "제공업체 업데이트됨",
"providerDeleteFailed": "공급자를 제거할 수 없습니다.",
"privateEndpointHint": "개인 네트워크의 주소에 접근하려면 관리자가 먼저 호스트를 허용해야 합니다.",
"providerOllama": "올라마",
"providerAnthropic": "인류",
"providerOpenai": "오픈아이",
"providerGemini": "구글 제미니",
"providerOpenaiCompatible": "OpenAI와 호환 가능",
"toolArguments": "입력",
"toolResult": "결과",
"statusApplied": "적용된",
"statusRejected": "거절됨",
"proposalApplied": "변경 사항이 적용되었습니다",
"proposalApplyFailed": "변경 사항을 적용할 수 없습니다.",
"proposalRejectFailed": "변경을 거부할 수 없었습니다",
"enableTitle": "AI 비서를 활성화하세요",
"enableDescription": "도우미가 사용자의 설정을 읽고 승인할 변경 사항을 제안하도록 하세요.",
"readOnlyCommands": "읽기 전용 진단 명령을 허용합니다.",
"readOnlyCommandsDescription": "도우미는 매번 묻지 않고 df 및 uptime과 같은 안전한 명령어 목록을 실행할 수 있습니다. 서버를 변경하는 작업은 항상 먼저 제안됩니다.",
"modelDetectFailed": "공급업체에 연결할 수 없어서 일반적인 목록을 제공합니다. 모델명을 입력하셔도 됩니다.",
"modelCustom": "모델명을 입력하세요",
"modelRefresh": "목록 새로 고침",
"modelPlaceholder": "모델을 선택하거나 입력하세요.",
"attachHint": "호스트, 코드 조각 또는 자동화를 참조하려면 @를 입력하세요. 승인을 위해 변경 사항이 제안됩니다.",
"runCommandTitle": "명령어를 실행하세요",
"assistant": "AI 어시스턴트",
"terminalPanelEmpty": "이 호스트에 대해 담당자에게 문의하십시오. 상태가 변경되는 모든 사항은 먼저 사용자의 승인이 필요합니다.",
"terminalPanelPlaceholder": "이 호스트에 대해 문의해 보세요...",
"noProvidersConfigured": "아직 AI 제공업체가 구성되지 않았습니다. AI 도우미 탭에서 추가하세요.",
"runsInOpenTerminal": "열려 있는 터미널 세션에서 실행됩니다.",
"runInTerminal": "실행",
"terminalContextPrefill": "다음은 제 터미널 출력 결과입니다:\n\n{{output}}\n\n",
"secrets": {
"shareApiKey": "다른 기능에서 AI 제공업체 API 키를 사용하여 자체 요청을 처리할 수 있도록 허용합니다. 키는 절대 복사되지 않으며 언제든지 취소할 수 있습니다."
}
},
"nav": {
"ai": "일체 포함"
},
"onboarding": {
"aiTitle": "AI 비서",
"aiIntro": "Termix에는 선택적으로 AI 비서 기능이 포함될 수 있습니다. 이 기능은 나중에 설정에서 변경할 수 있습니다.",
"aiSkipTitle": "꺼두세요",
"aiSkipDesc": "Termix는 현재와 같이 작동합니다. 어시스턴트는 숨겨진 상태로 유지됩니다.",
"aiEnableTitle": "켜세요",
"aiEnableDesc": "설정을 읽고 사용자가 승인하는 변경 사항을 제안하는 도우미를 추가합니다. 사용자가 제공하는 공급업체(예: 지역 Ollama)가 필요합니다.",
"aiNote": "공급자를 추가하고 메시지를 보내기 전까지는 아무것도 전송되지 않습니다."
},
"hosts": {
"docsLink": "문서 보기"
},
"plugin": {
"name": "AI Assistant"
}
}