libre-webui 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +31 -21
  2. package/backend/dist/db.d.ts.map +1 -1
  3. package/backend/dist/db.js +2 -0
  4. package/backend/dist/db.js.map +1 -1
  5. package/backend/dist/index.d.ts.map +1 -1
  6. package/backend/dist/index.js +2 -0
  7. package/backend/dist/index.js.map +1 -1
  8. package/backend/dist/routes/chat.d.ts.map +1 -1
  9. package/backend/dist/routes/chat.js +97 -10
  10. package/backend/dist/routes/chat.js.map +1 -1
  11. package/backend/dist/routes/libreClaw.d.ts.map +1 -1
  12. package/backend/dist/routes/libreClaw.js +41 -0
  13. package/backend/dist/routes/libreClaw.js.map +1 -1
  14. package/backend/dist/routes/ollama.d.ts.map +1 -1
  15. package/backend/dist/routes/ollama.js +52 -2
  16. package/backend/dist/routes/ollama.js.map +1 -1
  17. package/backend/dist/routes/search.d.ts +3 -0
  18. package/backend/dist/routes/search.d.ts.map +1 -0
  19. package/backend/dist/routes/search.js +143 -0
  20. package/backend/dist/routes/search.js.map +1 -0
  21. package/backend/dist/services/agentAccessService.d.ts +6 -0
  22. package/backend/dist/services/agentAccessService.d.ts.map +1 -0
  23. package/backend/dist/services/agentAccessService.js +58 -0
  24. package/backend/dist/services/agentAccessService.js.map +1 -0
  25. package/backend/dist/services/agentCliService.d.ts.map +1 -1
  26. package/backend/dist/services/agentCliService.js +2 -1
  27. package/backend/dist/services/agentCliService.js.map +1 -1
  28. package/backend/dist/services/authService.d.ts +1 -0
  29. package/backend/dist/services/authService.d.ts.map +1 -1
  30. package/backend/dist/services/authService.js +2 -0
  31. package/backend/dist/services/authService.js.map +1 -1
  32. package/backend/dist/services/documentService.d.ts +2 -0
  33. package/backend/dist/services/documentService.d.ts.map +1 -1
  34. package/backend/dist/services/documentService.js +51 -23
  35. package/backend/dist/services/documentService.js.map +1 -1
  36. package/backend/dist/services/modelAccessService.d.ts +12 -0
  37. package/backend/dist/services/modelAccessService.d.ts.map +1 -0
  38. package/backend/dist/services/modelAccessService.js +66 -0
  39. package/backend/dist/services/modelAccessService.js.map +1 -0
  40. package/backend/dist/services/webSearchService.d.ts +64 -0
  41. package/backend/dist/services/webSearchService.d.ts.map +1 -0
  42. package/backend/dist/services/webSearchService.js +230 -0
  43. package/backend/dist/services/webSearchService.js.map +1 -0
  44. package/backend/dist/services/workAgentGuidance.d.ts +1 -0
  45. package/backend/dist/services/workAgentGuidance.d.ts.map +1 -1
  46. package/backend/dist/services/workAgentGuidance.js +3 -0
  47. package/backend/dist/services/workAgentGuidance.js.map +1 -1
  48. package/backend/dist/services/workAgentService.d.ts +6 -0
  49. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  50. package/backend/dist/services/workAgentService.js +199 -11
  51. package/backend/dist/services/workAgentService.js.map +1 -1
  52. package/backend/dist/services/workPolicyService.d.ts.map +1 -1
  53. package/backend/dist/services/workPolicyService.js +61 -11
  54. package/backend/dist/services/workPolicyService.js.map +1 -1
  55. package/backend/dist/storage.d.ts.map +1 -1
  56. package/backend/dist/storage.js +3 -3
  57. package/backend/dist/storage.js.map +1 -1
  58. package/backend/dist/storageMappers.d.ts +1 -0
  59. package/backend/dist/storageMappers.d.ts.map +1 -1
  60. package/backend/dist/storageMappers.js +1 -0
  61. package/backend/dist/storageMappers.js.map +1 -1
  62. package/backend/dist/types/index.d.ts +1 -0
  63. package/backend/dist/types/index.d.ts.map +1 -1
  64. package/backend/dist/types/index.js.map +1 -1
  65. package/backend/dist/utils/chatDocumentContext.d.ts +7 -0
  66. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
  67. package/backend/dist/utils/chatDocumentContext.js +38 -30
  68. package/backend/dist/utils/chatDocumentContext.js.map +1 -1
  69. package/backend/dist/websocketServer.d.ts.map +1 -1
  70. package/backend/dist/websocketServer.js +79 -15
  71. package/backend/dist/websocketServer.js.map +1 -1
  72. package/backend/package.json +1 -1
  73. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  74. package/frontend/dist/assets/index-0wfi-EpC.js +40 -0
  75. package/frontend/dist/assets/index-D7m1zWWg.css +1 -0
  76. package/frontend/dist/index.html +12 -12
  77. package/frontend/dist/js/ArtifactContainer-DPRPcuES.js +1 -0
  78. package/frontend/dist/js/{ArtifactDemoPage-BOlB1lS-.js → ArtifactDemoPage-DzwPlz9J.js} +1 -1
  79. package/frontend/dist/js/{ArtifactSandboxFrame-DqU5GDrI.js → ArtifactSandboxFrame-CKi4mSTH.js} +2 -2
  80. package/frontend/dist/js/{ArtifactSlideOutPanel-B0I-hCux.js → ArtifactSlideOutPanel-BskRCzP0.js} +1 -1
  81. package/frontend/dist/js/ChatPage-DRutCyJ5.js +16 -0
  82. package/frontend/dist/js/FirstTimeSetup-DU50YWrE.js +1 -0
  83. package/frontend/dist/js/GalleryPage-DxXIUesf.js +1 -0
  84. package/frontend/dist/js/HomePage-Bew9kMKx.js +1 -0
  85. package/frontend/dist/js/{LibreClawPage-DUd3tjQE.js → LibreClawPage-Cy9y3YlF.js} +1 -1
  86. package/frontend/dist/js/{ModelManagerModals-D9j9RECi.js → ModelManagerModals-D-NxeVvV.js} +1 -1
  87. package/frontend/dist/js/ModelSelector-DXDcDmDR.js +1 -0
  88. package/frontend/dist/js/ModelsPage-Bj2reiF9.js +2 -0
  89. package/frontend/dist/js/{NotesPage-CTutDN50.js → NotesPage-CJKEbj3J.js} +1 -1
  90. package/frontend/dist/js/{PersonasPage-C6iTMI3N.js → PersonasPage-bgWF9S7b.js} +2 -2
  91. package/frontend/dist/js/{PluginUsagePage-BQQ0-_PP.js → PluginUsagePage-CRkD1Tz6.js} +1 -1
  92. package/frontend/dist/js/{RichMessageContent-DPqeqxkQ.js → RichMessageContent-DeNjCiyN.js} +1 -1
  93. package/frontend/dist/js/SettingsModal-BUUlkZcv.js +1 -0
  94. package/frontend/dist/js/SystemPage-DcO51urv.js +1 -0
  95. package/frontend/dist/js/UserManagementPage-DLiYw6xG.js +1 -0
  96. package/frontend/dist/js/WorkPage-MMQ0Y0U5.js +5 -0
  97. package/frontend/dist/js/{api-iCpOEijB.js → api-CZURQtuc.js} +4 -4
  98. package/frontend/dist/js/{appStore-DTd6dWg2.js → appStore-sGaWMSDr.js} +2 -2
  99. package/frontend/dist/js/ar-Bm27TCMQ.js +2 -0
  100. package/frontend/dist/js/{authStore-CuK4HUVh.js → authStore-uaj0hswV.js} +3 -3
  101. package/frontend/dist/js/bn-C7CHC42H.js +2 -0
  102. package/frontend/dist/js/chatStore-tRx0Ulq0.js +2 -0
  103. package/frontend/dist/js/{config--Xp9rZtJ.js → config-D-jxRG52.js} +1 -1
  104. package/frontend/dist/js/cs-zGEtwQn_.js +2 -0
  105. package/frontend/dist/js/da-B-0sHNTu.js +2 -0
  106. package/frontend/dist/js/de-UZNE6t2h.js +2 -0
  107. package/frontend/dist/js/es-CPLnFYIw.js +2 -0
  108. package/frontend/dist/js/{estree-BAQkciRX.js → estree-CRuerC6a.js} +1 -1
  109. package/frontend/dist/js/fr-Br1o0WVz.js +2 -0
  110. package/frontend/dist/js/hi-BcEvNEpb.js +2 -0
  111. package/frontend/dist/js/{html-DxA-Bcvi.js → html-BYKlz3Jp.js} +1 -1
  112. package/frontend/dist/js/i18n-DJTg6xWw.js +2 -0
  113. package/frontend/dist/js/id-C30L2DoT.js +2 -0
  114. package/frontend/dist/js/is-BAEhfi5Z.js +2 -0
  115. package/frontend/dist/js/it-HWnfQXZY.js +2 -0
  116. package/frontend/dist/js/ja-Dvux1mon.js +2 -0
  117. package/frontend/dist/js/ko-agDQ__KP.js +2 -0
  118. package/frontend/dist/js/{markdown-IsZpJ5ke.js → markdown-DFy8bILU.js} +1 -1
  119. package/frontend/dist/js/{messageCodeStyles-CsV3zwyK.js → messageCodeStyles-_gGirbe-.js} +2 -2
  120. package/frontend/dist/js/ms-aNRa2QX7.js +2 -0
  121. package/frontend/dist/js/nl-BtkiDUn-.js +2 -0
  122. package/frontend/dist/js/pl-SEO0lBnX.js +2 -0
  123. package/frontend/dist/js/pt-BYtjmvq1.js +2 -0
  124. package/frontend/dist/js/ru-B-ynj2hU.js +2 -0
  125. package/frontend/dist/js/{standalone-CK3b5Ktq.js → standalone-jOqWoOmp.js} +1 -1
  126. package/frontend/dist/js/sv-CliKR15U.js +2 -0
  127. package/frontend/dist/js/th-DJQyDr9J.js +2 -0
  128. package/frontend/dist/js/tr-BBGKZ1la.js +2 -0
  129. package/frontend/dist/js/{typescript-BMYmVohw.js → typescript-TwGXpgeF.js} +1 -1
  130. package/frontend/dist/js/{ui-C2kNYwfG.js → ui-DSFUl2vT.js} +2 -2
  131. package/frontend/dist/js/{ui-vendor-D_pYT79f.js → ui-vendor-xUzKqAXI.js} +1 -1
  132. package/frontend/dist/js/uk-C1GcFWxE.js +2 -0
  133. package/frontend/dist/js/vi-CIxgICOQ.js +2 -0
  134. package/frontend/dist/js/{workApi-C33ZrPws.js → workApi-kClHFVkJ.js} +2 -2
  135. package/frontend/dist/js/zh-Cm7vsQ9s.js +2 -0
  136. package/package.json +2 -2
  137. package/frontend/dist/assets/index-Z4-oLWDC.js +0 -2
  138. package/frontend/dist/assets/index-tBUyDbHh.css +0 -1
  139. package/frontend/dist/js/ArtifactContainer-DQRF4rh-.js +0 -1
  140. package/frontend/dist/js/ChatPage-DyV0_oCt.js +0 -16
  141. package/frontend/dist/js/FirstTimeSetup-ButTmjp0.js +0 -1
  142. package/frontend/dist/js/GalleryPage-CaT63b-s.js +0 -1
  143. package/frontend/dist/js/HomePage-BWyg3nHu.js +0 -1
  144. package/frontend/dist/js/ModelSelector-COFcJnMJ.js +0 -1
  145. package/frontend/dist/js/ModelsPage-BRbTEXNL.js +0 -2
  146. package/frontend/dist/js/SettingsModal-C_1k75Kv.js +0 -1
  147. package/frontend/dist/js/SystemPage-CUecyRPh.js +0 -1
  148. package/frontend/dist/js/UserManagementPage-CZ4KMOY9.js +0 -1
  149. package/frontend/dist/js/WorkPage-BqDcfXV6.js +0 -5
  150. package/frontend/dist/js/ar-C8YV99Y-.js +0 -2
  151. package/frontend/dist/js/bn-C9dcls7_.js +0 -2
  152. package/frontend/dist/js/chatStore-VNT0eHRB.js +0 -2
  153. package/frontend/dist/js/cs-DtL8VeeX.js +0 -2
  154. package/frontend/dist/js/da-U3aNn1aF.js +0 -2
  155. package/frontend/dist/js/de-DzuyeVpX.js +0 -2
  156. package/frontend/dist/js/es-OiU8plii.js +0 -2
  157. package/frontend/dist/js/fr-DDa3R8bs.js +0 -2
  158. package/frontend/dist/js/hi-D8Y0hl34.js +0 -2
  159. package/frontend/dist/js/i18n-BqWNFeNo.js +0 -2
  160. package/frontend/dist/js/id-BwcWtkBv.js +0 -2
  161. package/frontend/dist/js/is-DzfQHQih.js +0 -2
  162. package/frontend/dist/js/it-C5VU3_Je.js +0 -2
  163. package/frontend/dist/js/ja-DLhOhxvf.js +0 -2
  164. package/frontend/dist/js/ko-CCKiyQD6.js +0 -2
  165. package/frontend/dist/js/ms-CXXkPvWw.js +0 -2
  166. package/frontend/dist/js/nl-CA_e0Epl.js +0 -2
  167. package/frontend/dist/js/pl-BG32wdpx.js +0 -2
  168. package/frontend/dist/js/pt-BzRGWQXO.js +0 -2
  169. package/frontend/dist/js/ru-DBjn_Q-Q.js +0 -2
  170. package/frontend/dist/js/sv-Hz_iRGdF.js +0 -2
  171. package/frontend/dist/js/th-MsyXlGH9.js +0 -2
  172. package/frontend/dist/js/tr-Cofmy_ef.js +0 -2
  173. package/frontend/dist/js/uk-B2o05LCR.js +0 -2
  174. package/frontend/dist/js/vi-CZh8uJgV.js +0 -2
  175. package/frontend/dist/js/zh-DhKXi8ZA.js +0 -2
@@ -0,0 +1,2 @@
1
+ var e={common:{loading:`読み込み中...`,save:`保存`,saving:`保存中...`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,close:`閉じる`,back:`戻る`,next:`次へ`,confirm:`確認`,error:`エラー`,success:`成功`,warning:`警告`,or:`または`,optional:`任意`,enabled:`有効`,disabled:`無効`,on:`オン`,off:`オフ`,yes:`はい`,no:`いいえ`,search:`検索`,noResults:`結果が見つかりません`,retry:`再試行`,refresh:`更新`,download:`ダウンロード`,upload:`アップロード`,export:`エクスポート`,import:`インポート`,reset:`リセット`,apply:`適用`,clear:`クリア`,all:`すべて`,none:`なし`,default:`デフォルト`,custom:`カスタム`,remove:`削除`,home:`ホーム`,more:`多`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`おかえりなさい`,subtitle:`アカウントにサインインして続行`,username:`ユーザー名`,usernamePlaceholder:`ユーザー名を入力`,password:`パスワード`,passwordPlaceholder:`パスワードを入力`,signIn:`サインイン`,signingIn:`サインイン中...`,noAccount:`アカウントをお持ちでないですか?`,signUpHere:`新規登録はこちら`,loginSuccess:`ログインに成功しました!`,loginFailed:`ログインに失敗しました`,checkCredentials:`ログインに失敗しました。認証情報を確認してください。`,enterBoth:`ユーザー名とパスワードを入力してください`,githubSuccess:`GitHubログインに成功しました!`,githubFailed:`GitHub認証に失敗しました`,githubVerifyFailed:`GitHub認証の確認に失敗しました`,approvalPending:`アカウントは管理者の承認待ちです。`,verificationFailed:`セキュリティ確認に失敗しました。ページを更新して再試行してください。`},signup:{title:`アカウント作成`,subtitle:`新しいアカウントを作成`,username:`ユーザー名`,usernamePlaceholder:`ユーザー名を選択`,email:`メールアドレス`,emailPlaceholder:`your@email.com`,password:`パスワード`,passwordPlaceholder:`パスワードを選択`,confirmPassword:`パスワード確認`,confirmPasswordPlaceholder:`パスワードを再入力`,createAccount:`アカウント作成`,creatingAccount:`アカウント作成中...`,hasAccount:`すでにアカウントをお持ちですか?`,signInHere:`サインインはこちら`,signupSuccess:`アカウントが正常に作成されました!`,signupFailed:`登録に失敗しました`,tryAgain:`登録に失敗しました。もう一度お試しください。`,usernameRequired:`ユーザー名とパスワードは必須です`,passwordMismatch:`パスワードが一致しません`,passwordTooShort:`パスワードは6文字以上である必要があります`,approvalPending:`登録を受け付けました。管理者がアカウントを承認する必要があります。`,awaitingApproval:`承認待ち`,awaitingApprovalDescription:`アカウントは作成されましたが、サインインするには管理者による有効化が必要です。`,backToSignIn:`サインインに戻る`},logout:{button:`ログアウト`,success:`正常にログアウトしました`},oauth:{continueWith:`{{provider}}で続行`,connectingTo:`{{provider}}に接続中...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`認証を確認中...`,welcome:`ようこそ`,noEmail:`メールアドレスなし`,role:`ロール`,id:`ID`,userId:`ユーザーID`,signInDescription:`続行するにはGitHubアカウントでサインインしてください`,signInWithGitHub:`GitHubでサインイン`,jwtActive:`JWT認証アクティブ`,jwtDescription:`GitHub OAuthによるJWT認証`,github:`GitHub`,provider:`プロバイダー`,tagline:`あなたのAIスタックは、あなたに応えるべきです。`,selfHosted:`セルフホスト · Apache 2.0`,highlights:{local:{title:`ローカル優先`,body:`会話やファイルは、このアプリを実行しているマシン上に留まります。`},providers:{title:`任意のプロバイダー`,body:`Ollama経由のローカルモデルに加え、お好みで追加したリモートプロバイダーも利用可能。`},work:{title:`隔離された作業環境`,body:`モデルにファイル、ターミナル、プレビューを備えたサンドボックスワークスペースを提供します。`}}},setup:{welcome:{title:`Libre WebUIへようこそ`,subtitle:`始めましょう`,description:`数ステップでLibre WebUIインスタンスをセットアップ`,createAdmin:`管理者アカウントを作成`,features:{secure:{title:`安全でプライベート`,description:`会話データはお使いのデバイスに保存されます`},fast:{title:`高速でレスポンシブ`,description:`速度とパフォーマンスに最適化`},openSource:{title:`オープンソース`,description:`無料でオープンソースのソフトウェア`}}},admin:{title:`管理者アカウントを作成`,subtitle:`管理者セットアップ`,description:`Libre WebUIインスタンスの最初の管理者アカウントを作成します`,usernamePlaceholder:`管理者ユーザー名を入力`,passwordPlaceholder:`パスワードを入力(6文字以上)`,confirmPlaceholder:`パスワードを確認`,creating:`作成中...`,createAdmin:`管理者を作成`,success:`管理者アカウントが正常に作成されました!`,failed:`管理者アカウントの作成に失敗しました`,fillAllFields:`すべてのフィールドを入力してください`,note:`これはLibre WebUIインスタンスの主要な管理者アカウントになります`,approvalUnexpected:`初期管理者を有効化できませんでした。もう一度お試しください。`},encryptionKey:{title:`暗号化キーを保存`,subtitle:`重要:このキーを保存してください`,description:`この暗号化キーは機密データを保護します。安全に保管してください - データベースの復元が必要な場合に必要になります。`,warning:`警告`,warningText:`このキーを紛失し、データベースの復元が必要な場合、暗号化されたデータ(APIキー、設定)は復元できなくなります。`,label:`暗号化キー`,loading:`読み込み中...`,copyToClipboard:`クリップボードにコピー`,copied:`暗号化キーをクリップボードにコピーしました!`,copyFailed:`キーのコピーに失敗しました`,envNote:`このキーはbackend/.envファイルにENCRYPTION_KEYとして保存されています`,acknowledgment:`暗号化キーを安全な場所に保存しました。紛失するとデータ損失の可能性があることを理解しています。`,confirmRequired:`暗号化キーを保存したことを確認してください`,continue:`Libre WebUIを開始`}},chat:{greeting:{morning:`おはようございます`,afternoon:`こんにちは`,evening:`こんばんは`,night:`おやすみなさい`},followUp:`フォローアップ`,welcome:{helpToday:`今日は何をお手伝いしましょうか?`,helpTonight:`今夜は何をお手伝いしましょうか?`,variety:{create:{title:`何をつくりましょうか?`,subtitle:`ひらめきでも、スケッチでも、なかなか解けない問題でも。`},explore:{title:`どこから始めましょうか?`,subtitle:`何度も考えてしまう問いを聞かせてください。`},imagine:{title:`何を思い描いていますか?`,subtitle:`一緒に形にしていきましょう。`},focus:{title:`いま、何に向き合いますか?`,subtitle:`次の一歩をはっきりさせましょう。`},untangle:{title:`何がこんがらがっていますか?`,subtitle:`まずは、まとまっていないまま聞かせてください。`},momentum:{title:`準備ができたら、いつでも。`,subtitle:`アイデアでも、計画でも、途中の続きでも。`},open:{title:`いま、何を考えていますか?`,subtitle:`小さな思いつきも、大きなプロジェクトも歓迎です。`},challenge:{title:`何を解決しましょうか?`,subtitle:`まだうまくいっていないところを教えてください。`},draft:{title:`まずはどこかから始めましょう。`,subtitle:`きれいにまとまっていなくても大丈夫です。`},possibility:{title:`これは何になれるでしょう?`,subtitle:`まずは素材をそのまま見せてください。`},unexpected:{title:`思いがけないものをつくりましょう。`,subtitle:`制約、ムード、まだ形にならないアイデアをひとつ。`}}},input:{placeholder:`メッセージを送信`,messagePlaceholder:`メッセージ...`,attachImages:`画像を添付`,attachments:`添付ファイルと高度な機能`,sendMessage:`メッセージを送信`,stopGeneration:`生成を停止`,menu:{uploadImages:`画像をアップロード`,attachDocument:`ドキュメントを添付`,attachWebpage:`ウェブページを添付`,structuredOutput:`構造化出力`,attach:`添付`,documentAttached:`ドキュメントを添付しました`,webpageAttached:`ウェブページを添付しました`,attachFailed:`添付できませんでした`,attachKnowledge:`ナレッジを添付`,noCollections:`コレクションがまだありません — 設定 → ドキュメントで作成`},voiceInput:`音声入力`,voiceStop:`聞き取りを停止`,webSearchOn:`ウェブ検索オン — 返信にライブ結果を使用`,webSearchOff:`このメッセージについてウェブを検索`},session:{new:`新しいチャット`,work:`作業`,chat:`チャット`,private:`プライベート`,privateMode:`プライベートモード`,privateDescription:`この会話は保存されません`,privateTooltip:`保存されないプライベート会話を開始`,deleteConfirm:`このチャットを削除してもよろしいですか?`,generatingTitle:`タイトルを生成中`,noChats:`チャットがありません`,createFirst:`上で最初のチャットを作成`,chats:`チャット`,renameChat:`チャット名を変更`,openNewTab:`新しいタブで開く`,pinChat:`ピン留め`,unpinChat:`ピン留めを解除`,deleteChat:`チャットを削除`,incognito:`シークレットチャット`,archiveChat:`チャットをアーカイブ`,groups:{pinned:`ピン留め済み`,today:`今日`,yesterday:`昨日`,previous7Days:`過去7日間`,previous30Days:`過去30日間`,older:`それ以前`},folder:{new:`新しいフォルダー`,namePlaceholder:`フォルダー名`,move:`フォルダーへ移動`,remove:`フォルダーから外す`,delete:`フォルダーを削除`,deleteConfirm:`このフォルダーを削除しますか?中のチャットは残ります。`}},persona:{applied:`ペルソナが適用されました`,label:`ペルソナ`,removeFailed:`ペルソナの削除に失敗しました`},model:{updated:`モデルが更新されました`,noModels:`利用可能なモデルがありません`,noModelsDescription:`利用可能なモデルがありません。Ollamaが実行中でモデルがインストールされていることを確認してください。`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`利用可能なモデルがありません。Ollamaが実行中でモデルがインストールされていることを確認してください。`,selectBeforePrivateChat:`プライベートチャットを開始する前に利用可能なモデルを選択してください`,selectBeforeSending:`送信する前に利用可能なモデルを選択してください`},footer:{disclaimer:`LLMは間違えることがあります - 重要な情報は確認してください`,images:`{{count}}枚の画像`,images_plural:`{{count}}枚の画像`,structuredOutput:`構造化出力`},mediaUpload:{dropImagesHere:`ここに画像をドロップするか`,supportedFormats:`対応形式: JPG, PNG, GIF, WebP(最大10MB)`,browse:`参照`},structuredOutput:{title:`レスポンス形式`,none:`なし(自然言語)`,noneDescription:`デフォルトの自然言語レスポンス`,json:`JSON`,jsonDescription:`構造化されたJSON形式`,list:`リスト`,listDescription:`項目の配列`,summary:`要約`,summaryDescription:`キーポイント付きのドキュメント要約`,analysis:`分析`,analysisDescription:`メリット・デメリットを含む構造化分析`,custom:`カスタムスキーマ`,customDescription:`独自のJSONスキーマを定義`,customSchema:`カスタムJSONスキーマ`,schemaPreview:`スキーマプレビュー`,applySchema:`スキーマを適用`,cancel:`キャンセル`,enabled:`構造化出力が有効`},controls:{title:`チャット設定`,systemPrompt:`システムプロンプト`,systemPromptPlaceholder:`このチャットのみに適用される指示…`,advancedParams:`詳細パラメータ`,advancedParamsDescription:`このチャット専用の上書き。空欄はグローバル既定値を使います。`,fromModel:`モデル由来`,fromModelHint:`この値はモデル自身の推奨設定によるものです。`,contextCapped:`モデルが学習した {{trained}} のうち {{context}} に制限しています(読み込み可能にするため)。`,saved:`設定を保存しました`,saveFailed:`設定を保存できませんでした`,params:{temperature:`温度`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`最大トークン`,repeatPenalty:`繰り返しペナルティ`,seed:`シード`,contextLength:`コンテキスト長`}},message:{sources:`出典`}},sidebar:{navigation:{chat:`チャット`,models:`モデル`,personas:`ペルソナ`,imagine:`画像生成`,settings:`設定`,userManagement:`ユーザー管理`,signOut:`サインアウト`,agents:`エージェント`,work:`作業`,exploreLabel:`探索`,usageAnalytics:`プロバイダー使用状況`,system:`システム`,notes:`ノート`},toggleSize:`サイドバーのサイズを切り替え`,expandSidebar:`サイドバーを展開`},user:{menu:{changePicture:`画像を変更`,settings:`設定`,userManagement:`ユーザー管理`,logout:`ログアウト`,usageAnalytics:`プロバイダー使用状況`,system:`システム`},avatar:{title:`プロフィール画像を変更`,updated:`プロフィール画像が更新されました`,updateFailed:`プロフィール画像の更新に失敗しました`,saving:`保存中...`,label:`アバター`,uploadAvatarImage:`アバター画像をアップロード`,dragAndDrop:`画像をドラッグ&ドロップするか、クリックして参照`,chooseImage:`画像を選択`,uploading:`アップロード中...`,enterImageUrl:`または画像URLを入力`,supportedFormats:`対応形式: JPG, PNG, GIF, WebP (最大2MB)。正方形の画像が最適です。`,customAvatar:`カスタムアバター画像`,clickToChange:`クリックして変更または削除`,removed:`アバターを削除しました`,uploaded:`アバターをアップロードしました`,invalidFile:`有効な画像ファイルを選択してください`,fileTooLarge:`アバター画像のサイズは2MB未満にしてください`,readFailed:`画像ファイルの読み取りに失敗しました`,uploadFailed:`アバター画像のアップロードに失敗しました`},profile:{noEmail:`メールアドレスが設定されていません`}},settings:JSON.parse(`{"title":"設定","tabs":{"appearance":"外観","model":"モデル","systemMessage":"システムメッセージ","plugins":"プラグイン","search":"検索","generation":"生成","documents":"ドキュメント","tts":"音声読み上げ","imageGen":"画像生成","data":"データ","shortcuts":"ショートカット","about":"概要"},"appearance":{"title":"外観","language":{"title":"言語","description":"ご希望の言語を選択"},"theme":{"title":"テーマ","light":"ライト","dark":"ダーク","amoled":"ピュアブラック","system":"システム"},"accent":{"title":"アクセントカラー","custom":"カスタムカラー","useColor":"{{color}}のアクセントを使用","behaviorTitle":"インターフェースパレット","behaviorDescription":"アクセントを操作部だけに使うか、ライト/ダークのインターフェース全体に反映するかを選択します。","defaultStyle":"デフォルト","defaultStyleDescription":"ライト/ダークテーマのニュートラルな表面色を維持します。","adaptedStyle":"アクセントに合わせる","adaptedStyleDescription":"表面、境界線、テキストをアクセントカラーで色付けします。"},"chatInterface":{"title":"チャットインターフェース","showUsername":"ユーザー名を表示","showUsernameDescription":"チャットメッセージにユーザー名を表示","followUpSuggestions":"フォローアップ提案","followUpSuggestionsDescription":"各回答の後にクイック返信を提案します","hapticFeedback":"触覚フィードバック (Android)","hapticFeedbackDescription":"モバイルの重要な操作で控えめな振動を使用します"},"background":{"title":"背景画像","enable":"背景画像を有効にする","enableDescription":"ブラー効果のあるカスタム背景を表示","blur":"ぼかし","opacity":"不透明度","upload":"背景画像をアップロード","dragDrop":"画像をドラッグ&ドロップするか、クリックして参照","chooseImage":"画像を選択"}},"saveSettings":"設定を保存","model":{"title":"モデル設定","defaultModel":"デフォルトモデル","defaultModelDescription":"このモデルは新しい会話でデフォルトで使用されます","selectModel":"モデルを選択","updateAll":"すべてのモデルを更新","updateAllDescription":"インストールされているすべてのモデルの更新を確認し、最新バージョンをプル","updateAllButton":"すべて更新","updating":"モデルを更新中...","currentModelInfo":"現在のモデル情報","name":"名前","size":"サイズ","family":"ファミリー","format":"フォーマット","status":"ステータス","statusStarting":"開始中...","statusComplete":"完了","statusError":"エラー","bulkOperations":"一括操作","autoTitle":{"title":"自動タイトル生成","enable":"自動タイトルを有効","enableDescription":"新しい会話のタイトルを自動生成","taskModel":"タスクモデル","selectTaskModel":"タスクモデルを選択","taskModelDescription":"会話タイトルの生成に使用するモデル"},"persona":"ペルソナ","updatingModel":"{{name}} を更新中 ({{current}}/{{total}})","modelsProgress":"{{total}} モデル中 {{current}}","specializedModels":"専用モデル","visionModel":"ビジョンモデル","selectVisionModel":"現在のチャットモデルを使用","visionModelDescription":"送信するチャットコンテキストに画像が含まれる場合、自動的に使用されます。画像入力に対応したモデルを選択してください。","visionModelUpdateFailed":"ビジョンモデルの更新に失敗しました: {{error}}","visionModelNoProvider":"このビジョンモデルにはプロバイダー識別情報がありません。利用可能なモデルを選択してください。"},"systemMessage":{"title":"システムメッセージ","description":"すべての新しい会話で使用されるカスタムシステムメッセージを設定します。","placeholder":"システムメッセージを入力...","saved":"システムメッセージが保存されました","saveFailed":"システムメッセージの保存に失敗しました"},"plugins":{"title":"プラグイン","description":"インストールされているプラグインを管理","addNew":"新しいプラグインを追加","upload":"プラグインをアップロード","addJson":"JSONを追加","uploading":"アップロード中...","jsonPlaceholder":"プラグインのJSON設定を貼り付け...","install":"プラグインをインストール","noPlugins":"プラグインがインストールされていません","noPluginsDescription":"機能を拡張するプラグインを追加","loading":"プラグインを読み込み中...","installed":"インストール済みプラグイン","active":"アクティブなプラグイン","activeLabel":"アクティブ","inactive":"非アクティブ","activate":"有効化","deactivate":"無効化","models":"モデル","apiKeySet":"APIキー設定済み","apiKeyConfiguration":"APIキー設定","apiKeyEnvAlternative":"または環境変数を設定","environmentVariable":"環境変数","apiKeyConfigured":"APIキーが設定されています","apiKeyPlaceholder":"APIキーを入力...","saveApiKey":"APIキーを保存","apiKey":{"title":"APIキー","placeholder":"APIキーを入力","save":"キーを保存","remove":"キーを削除","configured":"APIキー設定済み","notConfigured":"APIキーが必要","saved":"APIキーが正常に保存されました","removed":"APIキーが削除されました","saveFailed":"APIキーの保存に失敗しました","removeFailed":"APIキーの削除に失敗しました","enterKey":"APIキーを入力してください"},"variables":"Variables","providerConnections":"プロバイダー接続","providerConnectionsDescription":"プラグインを通じてモデルプロバイダーに接続、設定、確認します。","providers":"プロバイダー","searchProviders":"プロバイダーを検索","noProvidersFound":"検索に一致するプロバイダーがありません。","selectProvider":"プロバイダーを選択","selectProviderDescription":"プロバイダーを選択して、接続状況とモデルカタログを確認します。","apiKeyDescription":"{{name}}用の個人APIキーを保存します。","showApiKey":"APIキーを表示","hideApiKey":"APIキーを非表示","configure":"設定","providerSettings":"プロバイダー設定","status":"ステータス","defaultEndpoint":"デフォルトエンドポイント","modelCatalog":"モデルカタログ","modelCatalogDescription":"このプロバイダーで検出・設定されたモデルとその機能一覧。","refreshModels":"モデルを更新","noModelsConfigured":"このプロバイダーにはモデルが設定されていません。","modelId":"モデルID","capabilities":"機能","modelCatalogUpdated":"モデルカタログを更新しました: {{count}}件のモデル。","modelCatalogUnchanged":"モデルカタログはすでに最新です。","modelCatalogNeedsApiKey":"このプロバイダーのライブモデルリストを読み込むには、有効なAPIキーを追加してください。","modelCatalogUnavailable":"プロバイダーのモデルリストを読み込めませんでした。","modelCatalogRefreshFailed":"モデルカタログの更新に失敗しました","capability":{"chat":"チャット","embedding":"エンベディング","image":"画像","speech":"音声合成","transcription":"文字起こし"},"exportPlugin":"プラグインをエクスポート","deletePlugin":"プラグインを削除"},"generation":{"title":"生成オプション","description":"AIがレスポンスを生成する方法を設定","scopeLabel":"適用先","scopeAll":"すべてのモデル","scopeModel":"{{model}} のみ","scopeAllHint":"個別の設定がないかぎり、すべてのモデルが使う値です。","scopeModelHint":"このモデルだけに保存され、全体の値より優先されます。","coreParameters":"コアパラメータ","temperature":"温度","temperatureDescription":"ランダム性を制御します。低い値はより集中的、高い値はより創造的。","topP":"Top P","topPDescription":"核サンプリングによる多様性を制御します。低い値は確率の高いトークンに集中。","topK":"Top K","topKDescription":"トークン選択を上位K個の最も確率の高いものに制限。0で無効化。","minP":"Min P","minPDescription":"トークン選択の最小確率しきい値。","generationControl":"生成制御","maxTokens":"最大トークン数","maxTokensDescription":"レスポンスで生成する最大トークン数。","repeatPenalty":"繰り返しペナルティ","repeatPenaltyDescription":"繰り返しトークンにペナルティを与えます。高い値は繰り返しを減少。","contextLength":"コンテキスト長","contextLengthDescription":"会話の最大コンテキストウィンドウサイズ。","seed":"シード","optional":"任意","random":"ランダム","seedDescription":"再現可能な出力のための特定のシードを設定。","advancedOptions":"詳細オプション","presencePenalty":"存在ペナルティ","presencePenaltyDescription":"コンテキストに出現するトークンにペナルティを与えます。","frequencyPenalty":"頻度ペナルティ","frequencyPenaltyDescription":"頻繁に使用されるトークンにペナルティを与えます。","stopSequences":"停止シーケンス","commaSeparated":"カンマ区切り","stopSequencesDescription":"検出されると生成を停止するカスタムトークン。","resetDefaults":"デフォルトにリセット","saveOptions":"オプションを保存","embeddingSettings":"埋め込み設定","enableEmbeddings":"ドキュメント埋め込みを有効にする","advancedSettings":"高度な生成設定","advancedSettingsDescription":"サンプリング、トークン制限、コンテキスト、ペナルティ、ストップシーケンス"},"documents":{"title":"ドキュメント設定","embeddings":{"title":"埋め込み","enable":"ドキュメント埋め込みを有効にする","model":"埋め込みモデル","modelDescription":"ドキュメント埋め込みに使用するモデルを選択","chunkSize":"チャンクサイズ","chunkSizeInTokens":"(トークン単位)","chunkSizeDescription":"埋め込み用のテキストチャンクサイズ","chunkOverlap":"チャンクオーバーラップ","chunkOverlapInTokens":"(トークン単位)","chunkOverlapDescription":"連続するチャンク間のオーバーラップ","similarityThreshold":"類似度しきい値","similarityDescription":"結果に含める最小類似度スコア","status":"埋め込みステータス","statusLabel":"ステータス","available":"利用可能","unavailable":"利用不可","chunksWithEmbeddings":"埋め込み済みチャンク","coverage":"カバレッジ","regenerate":"埋め込みを再生成","regenerating":"再生成中..."},"collections":{"title":"ナレッジコレクション","description":"ドキュメントをコレクションにまとめ、任意のチャットに添付できます。","namePlaceholder":"コレクション名","create":"作成","none":"コレクションなし","deleteConfirm":"このコレクションを削除しますか?中のドキュメントは残ります。"}},"tts":{"title":"音声読み上げ","description":"メッセージを音声で読み上げるための音声合成設定を構成","loadingProviders":"TTSプロバイダーを読み込み中...","noProviders":"TTSプロバイダーがありません","noProvidersDescription":"音声読み上げを有効にするには、TTS対応プラグインを設定してください","enable":"TTSを有効にする","enableDescription":"アシスタントメッセージの音声読み上げを許可","autoPlay":"レスポンスを自動再生","autoPlayDescription":"新しいアシスタントメッセージを自動的に読み上げ","streamSentences":"文章ごとにストリーミング","streamSentencesDescription":"メッセージ全体を待たずに、文章ごとに音声を再生します。長いメッセージでのタイムアウトを避けるため、ローカルTTSに推奨されます。","voiceConfiguration":"音声設定","model":"TTSモデル","modelDescription":"音声合成に使用するモデルを選択","voice":"音声","selectVoice":"音声を選択","voiceDescription":"音声読み上げに使用する声を選択","speed":"速度","speedSlow":"0.5倍","speedNormal":"1.0倍","speedFast":"2.0倍","availableProviders":"利用可能なプロバイダー","models":"モデル","test":"テスト","testing":"テスト中...","stop":"停止"},"imageGen":{"title":"画像生成","description":"画像生成の設定とプロバイダーを構成","loadingProviders":"画像生成プロバイダーを読み込み中...","noProviders":"画像生成プロバイダーがありません","noProvidersDescription":"画像生成対応プラグインを設定してください","enable":"画像生成を有効にする","enableDescription":"会話でのAI画像生成を許可","configuration":"設定","model":"モデル","modelDescription":"画像生成に使用するモデルを選択","size":"サイズ","sizeDescription":"生成画像の解像度","quality":"品質","qualityDescription":"生成画像の品質レベル","style":"スタイル","styleDescription":"生成画像のスタイルプリセット","availableProviders":"利用可能なプロバイダー","models":"モデル"},"data":{"title":"データ管理","export":"データをエクスポート","exportDescription":"設定、セッション、ドキュメントを含むすべてのデータをダウンロード。","exportAll":"すべてのデータをエクスポート","import":"データをインポート","importDescription":"以前のエクスポートからデータをインポート。","importData":"データをインポート","importing":"インポート中...","clearSessions":"セッションをクリア","clearSessionsDescription":"すべてのチャットセッションを削除します。この操作は元に戻せません。","clearAll":"すべてクリア","clearing":"クリア中...","importOptions":"インポートオプション","importOptionsDescription":"既存データの処理方法を選択","skipDuplicates":"重複をスキップ","overwrite":"既存を上書き","importResults":"インポート結果","preferences":"設定","imported":"インポート済み","failed":"失敗","sessions":"セッション","importedLabel":"インポート済み","skipped":"スキップ","documents":"ドキュメント","errors":"エラー","archivedChats":{"title":"アーカイブ済みチャット","empty":"アーカイブ済みのチャットはありません","unarchive":"アーカイブ解除"}},"about":{"title":"概要","versionLabel":"バージョン","ollama":{"title":"Ollamaステータス","version":"バージョン","healthy":"正常","unhealthy":"異常"},"stats":{"models":"モデル","sessions":"セッション"},"features":{"privacy":{"title":"プライバシー優先","description":"データはお使いのデバイスに保存されます"},"openSource":{"title":"オープンソース","description":"無料でオープンソースのソフトウェア"},"localInference":{"title":"ローカル推論","description":"OllamaでAIモデルをローカル実行"}},"openSourceBy":"{{company}}によるオープンソース","links":{"title":"リンク","github":"GitHub","githubDescription":"ソースコードを見る・貢献する","website":"ウェブサイト","websiteDescription":"ウェブサイトを訪問","ollama":"Ollama","ollamaDescription":"Ollamaについて詳しく","documentation":"ドキュメント","reportIssue":"問題を報告","reportIssueDescription":"バグ報告・機能リクエスト","gitlab":"GitLabミラー","gitlabDescription":"セルフホストGitLabリポジトリ","documentationDescription":"ガイド、チュートリアル、APIリファレンス"},"version":"バージョン {{version}}"},"groups":{"general":"一般","chat":"チャット","media":"音声と画像","connections":"接続"},"search":{"title":"ウェブ検索","description":"セルフホストの SearXNG インスタンスでウェブを検索します。有効にすると、チャット入力に検索トグルが表示され、ネットワーク接続のある Work タスクも検索できます。","enableLabel":"ウェブ検索を有効化","enableDescription":"チャットと Work タスクにウェブ検索を提供します。検索は設定済みインスタンスに対してサーバー側で実行されます。","urlLabel":"SearXNG URL","urlDescription":"サーバーから到達可能な SearXNG インスタンスのベース URL。同梱のプライベートデプロイスタックは http://searxng:8080 を提供します。","maxResultsLabel":"検索ごとの結果数","maxResultsDescription":"返信やツール呼び出しに使う結果数(1-10)。","maxResultsInvalid":"検索ごとの結果数は 1 から 10 の間で指定してください。","safeSearchLabel":"セーフサーチ","safeSearchDescription":"エンジンに露骨な結果のフィルタリングを依頼します。","test":"接続テスト","testing":"テスト中…","testOk":"検索は動作しています — {{results}} 件の結果","testFailed":"検索テストに失敗しました","save":"保存","saved":"検索設定を保存しました","saveFailed":"検索設定を保存できませんでした"}}`),models:{title:`モデル`,subtitle:`Ollamaモデルのプル、管理、監視`,installed:`インストール済みモデル`,available:`利用可能なモデル`,pull:`モデルをプル`,pulling:`プル中...`,delete:`モデルを削除`,deleting:`削除中...`,size:`サイズ`,modified:`更新日時`,family:`ファミリー`,parameters:`パラメータ`,quantization:`量子化`,noModels:`モデルがインストールされていません`,pullFirst:`モデルをプルして開始`,noModelsFound:`モデルが見つかりません`},personas:{title:`ペルソナ`,create:`ペルソナを作成`,edit:`ペルソナを編集`,delete:`ペルソナを削除`,name:`名前`,description:`説明`,systemPrompt:`システムプロンプト`,model:`モデル`,avatar:`アバター`,background:`背景`,noPersonas:`ペルソナが作成されていません`,createFirst:`最初のペルソナを作成してチャット体験をカスタマイズ`},gallery:{title:`ギャラリー`,subtitle:`AI生成画像ギャラリー`,imageCount:`{{count}}枚の画像`,generate:`画像を生成`,generateDescription:`AIで画像を作成`,generating:`生成中...`,prompt:`プロンプト`,promptPlaceholder:`生成したい画像を説明してください...`,noImages:`まだ画像が生成されていません`,download:`ダウンロード`,delete:`削除`,regenerate:`再生成`,model:`モデル`,size:`サイズ`,quality:`品質`,created:`作成日`},errors:{generic:`エラーが発生しました`,network:`ネットワークエラー。接続を確認してください。`,unauthorized:`この操作を行う権限がありません。`,notFound:`リクエストされたリソースが見つかりません。`,serverError:`サーバーエラー。後でもう一度お試しください。`,validation:`入力を確認して再試行してください。`},keyboard:{title:`キーボードショートカット`,toggleSidebar:`サイドバーを切り替え`,openSettings:`設定を開く`,toggleDarkMode:`ダークモードを切り替え`,showShortcuts:`ショートカットを表示`,closeModals:`モーダルを閉じる`,groups:{navigation:`ナビゲーション`,general:`一般`,chat:`チャット`,workspace:`ワークスペース`},actions:{sendMessage:`メッセージを送信`,newLine:`メッセージ内で改行`,saveEdit:`編集したメッセージを保存`,cancelEdit:`編集をキャンセル`,saveFile:`ファイルを保存`,formatCode:`コードを整形`},description:`Libre WebUI で使えるすべてのキーボードショートカット。`,newChat:`新しいチャット`,newWork:`新しい Work セッション`,openPalette:`コマンドパレットを開く`},modelManager:{title:`モデル`,loading:`モデルを読み込み中...`,systemStatus:{online:`Ollamaオンライン`,offline:`Ollamaオフライン`,models:`モデル`,models_plural:`モデル`,running:`実行中`,vram:`VRAM`},sections:{pull:`新しいモデルをプル`,library:`ライブラリを閲覧`,running:`実行中のモデル`,local:`ローカルモデル`,advanced:`詳細アクション`,huggingface:`HuggingFace Hub`},pull:{placeholder:`モデル名を入力(例: llama3.2:3b, deepseek-r1:14b)`,button:`プル`,cancel:`キャンセル`,popular:`人気のモデル:`,browseAll:`ollama.comですべてのモデルを閲覧`,success:`モデル{{name}}のプルに成功しました`,cancelled:`モデルのプルがキャンセルされました`,failed:`モデルのプルに失敗しました`,enterName:`モデル名を入力してください`,restricted:`このインスタンスでは、モデルのインストールは管理者のみに制限されています。`},progress:{starting:`初期化中...`,pulling:`モデルをダウンロード中...`,pullingLayer:`ダウンロード中`,verifying:`整合性を検証中...`,verifyingDigest:`sha256ダイジェストを検証中`,writing:`マニフェストを書き込み中...`,cleaning:`クリーンアップ中...`},library:{available:`利用可能`,search:`モデルを検索...`,noResults:`条件に一致するモデルが見つかりません`,installed:`インストール済み`,more:`+{{count}}件`,refresh:`ライブラリを更新`},local:{noModels:`まだモデルがインストールされていません`,pullToStart:`上でモデルをプルして開始`,installed:`インストール済み`,running:`実行中`,info:`情報`,copy:`コピー`,delete:`削除`,deleteConfirm:`モデル「{{name}}」を削除してもよろしいですか?`,deleteSuccess:`モデル{{name}}が正常に削除されました`,deleteFailed:`モデルの削除に失敗しました`},advanced:{createModel:`モデルを作成`,fromModelfile:`Modelfileから`,copyModel:`モデルをコピー`,duplicateExisting:`既存を複製`,testEmbeddings:`埋め込みをテスト`,generateVectors:`ベクトルを生成`,healthCheck:`ヘルスチェック`,testConnection:`接続をテスト`,healthy:`Ollamaは正常です!`},modals:{details:{title:`モデル詳細`,info:`モデル情報`,family:`ファミリー`,parameters:`パラメータ`,quantization:`量子化`,format:`フォーマット`,systemPrompt:`システムプロンプト`,template:`テンプレート`,license:`ライセンス`,modelfile:`Modelfile`,noDetails:`詳細がありません`},copy:{title:`モデルをコピー`,source:`ソースモデル`,selectModel:`モデルを選択...`,newName:`新しいモデル名`,placeholder:`例: my-custom-model`,copying:`コピー中...`,button:`モデルをコピー`,success:`モデルが{{name}}にコピーされました`,failed:`モデルのコピーに失敗しました`,enterBoth:`ソースと宛先の名前を両方入力してください`},create:{title:`カスタムモデルを作成`,name:`モデル名`,namePlaceholder:`例: my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
2
+ SYSTEM You are a helpful assistant.`,see:`参照:`,docs:`Modelfileドキュメント`,docsLink:`(構文リファレンス)`,creating:`作成中...`,button:`モデルを作成`,success:`モデル{{name}}が正常に作成されました`,failed:`モデルの作成に失敗しました`,enterBoth:`モデル名とModelfileの内容を入力してください`},embeddings:{title:`埋め込みをテスト`,model:`埋め込みモデル`,selectModel:`モデルを選択...`,recommended:`推奨: nomic-embed-text, mxbai-embed-large`,input:`入力テキスト`,placeholder:`埋め込みを生成するテキストを入力...`,generating:`生成中...`,button:`埋め込みを生成`,result:`結果({{count}}次元)`,success:`{{count}}次元の埋め込みベクトルを生成しました`,failed:`埋め込みの生成に失敗しました`,enterBoth:`モデルを選択してテキストを入力してください`}},huggingface:{browseAll:`HuggingFaceで全て見る`,checkingGguf:`GGUFファイルを確認中...`,noGgufAvailable:`Ollamaで直接プルできるGGUFファイルがありません`,ggufFilesCount:`GGUFファイル ({{count}}) - Ollamaに直接プル`,noModelsFound:`モデルが見つかりません`,noResults:`モデルが見つかりません。検索条件やフィルターを調整してください。`,browseAllLink:`すべて見る`,search:`HuggingFaceモデルを検索...`,by:`作成者`,gated:`アクセス制限`,viewOnHF:`HuggingFaceで表示`,sortDownloads:`ダウンロード数`,sortLikes:`いいね`,sortRecent:`最近`,taskTextGeneration:`テキスト生成`,taskTextToSpeech:`音声合成`,taskTextToImage:`画像生成`,taskSpeechRecognition:`音声認識`,tasks:{textGen:`テキスト生成`,tts:`音声合成`,image:`画像生成`,stt:`音声認識`},sort:{downloads:`ダウンロード数順`,likes:`人気順`,recent:`更新順`}}},personaManager:{title:`ペルソナ`,subtitle:`カスタムパーソナリティ、記憶、動作を持つAIペルソナを作成・管理`,loading:`ペルソナを読み込み中...`,createButton:`ペルソナを作成`,importExport:`インポート/エクスポート`,stats:{title:`あなたのペルソナ`,count:`{{count}}個のペルソナを作成`,count_plural:`{{count}}個のペルソナを作成`},empty:{title:`まだペルソナがありません`,description:`パーソナライズされたAIインタラクションを始めるために最初のペルソナを作成`,button:`最初のペルソナを作成`},deleteConfirm:`「{{name}}」を削除してもよろしいですか?`,deleteSuccess:`ペルソナ「{{name}}」が正常に削除されました`,downloadSuccess:`ペルソナ「{{name}}」が正常にダウンロードされました`,failed:`ペルソナの{{action}}に失敗しました`},personaForm:{title:{create:`新しいペルソナを作成`,edit:`ペルソナを編集`},subtitle:{create:`カスタムパーソナリティ、記憶システム、適応学習機能を持つ新しいAIペルソナを作成`,edit:`高度な記憶、適応学習、インテリジェントパラメータでAIペルソナをカスタマイズ`},loading:`フォームを読み込み中...`,saved:`保存済み`,tabs:{basic:`基本`,parameters:`パラメータ`,memory:`記憶と学習`,advanced:`詳細`},basic:{name:`名前`,namePlaceholder:`ペルソナ名を入力`,model:`モデル`,selectModel:`モデルを選択`,description:`説明`,descriptionPlaceholder:`ペルソナを説明...`,systemPrompt:`システムプロンプト`,systemPromptPlaceholder:`ペルソナの動作を定義するシステムプロンプトを入力...`,systemPromptHint:`システムプロンプトはペルソナの動作とレスポンスを定義します。`},parameters:{temperature:`温度`,temperatureHint:`創造性と一貫性のバランスを制御`,topP:`Top-P`,topPHint:`レスポンスの多様性を制御`,topK:`Top-K`,topKHint:`語彙を上位kトークンに制限`,contextWindow:`コンテキストウィンドウ`,contextWindowHint:`会話履歴の最大長`,maxTokens:`最大トークン数`,maxTokensHint:`レスポンスの最大長`,repeatPenalty:`繰り返しペナルティ`,repeatPenaltyHint:`繰り返しレスポンスを削減`},memory:{title:`記憶システム`,subtitle:`ペルソナは時間の経過とともに会話を記憶`,enableHint:`記憶システムを有効にして、ペルソナが会話を記憶し、時間をかけてコンテキストを構築できるようにします。`,loading:`記憶ステータスを読み込み中...`,noData:`まだ記憶データがありません`,memories:`記憶`,mbUsed:`MB使用`,lastBackup:`最終バックアップ`,never:`なし`,maxMemories:`最大記憶数`,maxMemoriesHint:`このペルソナが保存できる記憶の数`,retention:`記憶保持期間`,retentionHint:`クリーンアップ前に記憶を保持する日数`,autoCleanup:`古い記憶を自動クリーンアップ`,wipeAll:`すべての記憶を消去`,wipeCannot:`元に戻せません`,wipeButton:`消去`,wiping:`消去中...`,wipeConfirm:`すべての記憶を消去してもよろしいですか?元に戻せません。`,wipeSuccess:`{{count}}件の記憶を消去しました`},learning:{title:`適応学習`,subtitle:`ペルソナはインタラクションに基づいて進化`,enableHint:`適応学習を有効にして、ペルソナがインタラクションに基づいて進化し、レスポンスをパーソナライズできるようにします。`,speed:`学習速度`,slow:`遅い`,slowDesc:`緩やかな変化`,balanced:`バランス`,balancedDesc:`適度なペース`,fast:`速い`,fastDesc:`素早い適応`,autoAdapt:`ユーザーの好みに自動適応`,whatLearns:`ペルソナが学習する内容:`,conversationTone:`会話のトーン`,responseStyle:`レスポンススタイル`,userPreferences:`ユーザーの好み`,topicInterests:`トピックの関心`},advanced:{embeddingModel:`埋め込みモデル`,embeddingHint:`記憶のエンコードとセマンティック検索に使用するモデルを選択します。埋め込みモデルが最初に表示され、その後に他の利用可能なモデルが続きます。`,noModels:`モデルが見つかりません`,embeddingModels:`埋め込みモデル`,otherModels:`その他のモデル`,installHint:`埋め込みモデルをインストール:`,recommended:`推奨: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed`,aboutTitle:`詳細設定について`,aboutDescription:`埋め込みモデルは、記憶システムがセマンティックな意味を理解し、会話中に関連する記憶を見つけるために使用します。使用ケースと利用可能なリソースに合ったモデルを選択してください。`},actions:{cancel:`キャンセル`,save:`保存`,saving:`保存中...`,saveClose:`保存して閉じる`,create:`作成`},success:{created:`ペルソナを作成しました`,updated:`ペルソナを更新しました`},error:{saveFailed:`保存に失敗しました`}},personaCard:{enhanced:`拡張`,systemPrompt:`システムプロンプト`,memories:`記憶`,use:`使用`,editTooltip:`ペルソナを編集`,downloadTooltip:`ペルソナをダウンロード`,backup:`バックアップ`,exportDNA:`DNAをエクスポート`,wipeMemories:`記憶を消去`,wipeConfirm:`このペルソナのすべての記憶を消去してもよろしいですか?この操作は元に戻せません。`,wipeSuccess:`{{count}}件の記憶を消去しました`,backupSuccess:`ペルソナのバックアップが正常にダウンロードされました`,dnaSuccess:`ペルソナDNAが正常にエクスポートされました`,failed:`{{action}}に失敗しました`},userManager:{title:`ユーザー管理`,subtitle:`ユーザーアカウントと権限を管理`,pageDescription:`Libre WebUIインスタンスのユーザーアカウント、権限、アクセス制御を管理します。`,loading:`ユーザーを読み込み中...`,createUser:`ユーザーを作成`,search:`ユーザーを検索...`,noUsers:`ユーザーが見つかりません`,noUsersMatching:`検索に一致するユーザーがいません`,columns:{user:`ユーザー`,email:`メール`,role:`役割`,created:`作成日`,actions:`アクション`},roles:{admin:`管理者`,user:`ユーザー`},noEmail:`メールなし`,deleteConfirm:`ユーザー「{{name}}」を削除してもよろしいですか?`,deleteSuccess:`ユーザーが正常に削除されました`,deleteFailed:`ユーザーの削除に失敗しました`,cannotDeleteSelf:`自分のアカウントは削除できません`,form:{title:{create:`ユーザーを作成`,edit:`ユーザーを編集`},username:`ユーザー名`,usernamePlaceholder:`ユーザー名を入力`,email:`メール`,emailPlaceholder:`メールを入力(任意)`,password:`パスワード`,passwordPlaceholder:`パスワードを入力`,passwordHint:`現在のパスワードを維持するには空白のままに`,role:`役割`,creating:`作成中...`,updating:`更新中...`,createButton:`ユーザーを作成`,updateButton:`ユーザーを更新`,createSuccess:`ユーザーが正常に作成されました`,updateSuccess:`ユーザーが正常に更新されました`,createFailed:`ユーザーの作成に失敗しました`,updateFailed:`ユーザーの更新に失敗しました`},approval:{title:`保留中の承認`,description:`このインスタンスへのアクセスを許可する前に、新規登録を確認してください。`,registered:`登録日`,activate:`アカウントを有効化`,reject:`登録を拒否`,approved:`{{name}} はサインインできるようになりました。`,failed:`アカウントを承認できませんでした。`,notification:`{{count}}件の登録が承認待ちです。`,notificationBadge:`{{count}}件の保留中のユーザー承認`},workAccess:{title:`Work へのアクセス`,description:`すべてのアクティブなユーザーが隔離されたサンドボックスで Work タスクを作成・実行できるようにします。管理者は常にアクセスできます。ホストフォルダーのワークスペースは管理者専用のままです。`,saved:`Work へのアクセスを更新しました`,saveFailed:`Work へのアクセスを更新できませんでした`},workPolicies:{title:`Work ポリシー`,description:`タスク作成時に選べる名前付きランタイムプリセット(イメージ、制限、アイドル停止)。空欄はグローバル既定値を継承します。`,add:`ポリシーを追加`,name:`名前`,image:`イメージ`,memory:`メモリ`,cpu:`CPU`,pids:`PID 制限`,workspaceSize:`ワークスペースサイズ`,idleMinutes:`アイドル停止(分)`,networkDefault:`ネットワーク既定値`,networkInherit:`既定値を継承`,networkOn:`有効`,networkOff:`無効`,save:`保存`,cancel:`キャンセル`,edit:`ポリシーを編集`,delete:`ポリシーを削除`,deleteConfirm:`このポリシーを削除しますか?使用中のタスクはグローバル既定値に戻ります。`,empty:`ポリシーはまだありません。タスクはグローバルなランタイム既定値を使用します。`,saved:`Work ポリシーを保存しました`,deleted:`Work ポリシーを削除しました`,failed:`Work ポリシーを保存できませんでした`,invalidNumber:`PID 制限とアイドル停止は数値で入力してください。`},modelAccess:{title:`モデルのダウンロード`,description:`すべてのアクティブユーザーに Ollama と Hugging Face ブラウザからのモデル取得を許可します。管理者は常にモデルをダウンロードできます。`,saved:`モデルダウンロードのアクセスを更新しました`,saveFailed:`モデルダウンロードのアクセスを更新できませんでした`},webSearchAccess:{title:`ウェブ検索`,description:`すべてのアクティブユーザーがチャットと Work タスクでウェブ検索を使えるようにします。管理者は常に使用できます。エンジンは設定 > 検索で構成します。`,saved:`ウェブ検索のアクセスを更新しました`,saveFailed:`ウェブ検索のアクセスを更新できませんでした`},agentAccess:{title:`エージェント`,description:`管理者向けにエージェントセクション(Libre Claw)を提供します。エージェント CLI は Work サンドボックスの外で、サーバーユーザーとしてホスト上で実行されます。`,saved:`エージェントへのアクセスを更新しました`,saveFailed:`エージェントへのアクセスを更新できませんでした`,lockedByEnv:`環境変数 AGENT_CLI_MODELS_ENABLED によって固定されています。`}},chatHistory:{label:`会話履歴`,jumpToTurn:`{{total}} 件中 {{index}} 件目に移動`},chatMessage:{you:`あなた`,assistant:`アシスタント`,system:`システム`,copy:`コピー`,copyMessage:`メッセージをコピー`,copied:`コピーしました!`,regenerate:`再生成`,regenerateResponse:`レスポンスを再生成`,edit:`編集`,editSystemMessage:`システムメッセージを編集`,saveChanges:`変更を保存`,cancelEditing:`編集をキャンセル`,saveAndSubmit:`保存して送信`,goodResponse:`良い回答`,badResponse:`悪い回答`,delete:`削除`,deleteConfirm:`このメッセージを削除しますか?`,branch:`分岐`,speaking:`読み上げ中...`,speakMessage:`メッセージを読み上げ`,stopSpeaking:`読み上げを停止`,showMore:`もっと見る`,showLess:`閉じる`,thinking:`考え中`,thoughtFor:`{{duration}}考えました`,hiddenLines:`非表示の行: {{count}}`,systemMessagePlaceholder:`システムメッセージを入力...`,fullSizeImage:`フルサイズ画像`,startConversation:`会話を始める`,startConversationDescription:`メッセージを送信してAIアシスタントとの会話を開始します。質問したり、コードのヘルプを得たり、自然な会話を楽しんだりできます。`,scrollToBottom:`一番下にスクロール`,newMessages:`新しいメッセージ`},imageGallery:{title:`画像ギャラリー`,noImages:`まだ画像がありません`,noImagesHint:`右のパネルを使用して最初の画像を生成`,delete:`削除`,download:`ダウンロード`,deleteConfirm:`この画像を削除してもよろしいですか?`,deleteSuccess:`画像が削除されました`,deleteFailed:`画像の削除に失敗しました`,downloadFailed:`画像のダウンロードに失敗しました`,loadMore:`さらに読み込む({{current}}/{{total}})`,loadFailed:`ギャラリーの読み込みに失敗しました`},imageGeneration:{title:`画像を生成`,prompt:`プロンプト`,promptPlaceholder:`作成したい画像を説明してください...`,model:`モデル`,selectModel:`モデルを選択`,noModels:`画像生成モデルがありません`,configurePlugin:`画像生成対応プラグインを設定`,size:`サイズ`,quality:`品質`,style:`スタイル`,generate:`生成`,generating:`生成中...`,success:`画像が正常に生成されました`,failed:`画像の生成に失敗しました`,enterPrompt:`プロンプトを入力してください`,promptTooLong:`プロンプトが最大文字数{{max}}文字を超えています`},errorBoundary:{title:`エラーが発生しました`,description:`予期しないエラーが発生しました。ページを更新してください。`,tryAgain:`ページを更新`,goHome:`ホームに戻る`,errorDetails:`エラー詳細(開発)`},documents:{title:`ドキュメント`,upload:`ドキュメントをアップロード`,uploading:`アップロード中...`,noDocuments:`ドキュメントがアップロードされていません`,uploadHint:`会話で使用するドキュメントをアップロード`,delete:`削除`,deleteConfirm:`このドキュメントを削除してもよろしいですか?`,deleteSuccess:`ドキュメントが削除されました`,deleteFailed:`ドキュメントの削除に失敗しました`,uploadSuccess:`ドキュメントが正常にアップロードされました`,uploadFailed:`ドキュメントのアップロードに失敗しました`,types:`対応形式: PDF, TXT, MD, DOCX`,unsupportedFileType:`PDFとTXTファイルのみ対応しています`,fileSizeTooLarge:`ファイルサイズは10MB未満である必要があります`,uploadSuccessWithName:`ドキュメント「{{name}}」が正常にアップロードされました`,removeSuccess:`ドキュメントが正常に削除されました`,removeFailed:`ドキュメントの削除に失敗しました`,removeError:`ドキュメントの削除中にエラーが発生しました`,clickToUpload:`クリックしてアップロード`,orDragAndDrop:`またはドラッグ&ドロップ`,fileTypesAndSize:`PDFまたはTXTファイル(最大10MB)`,uploadedDocuments:`アップロードされたドキュメント`,removeDocument:`ドキュメントを削除`},ttsButton:{speak:`読み上げ`,stop:`停止`,speaking:`読み上げ中...`,generateFailed:`音声の生成に失敗しました`,playbackFailed:`音声の再生に失敗しました`,stopSpeaking:`読み上げを停止`,generatingSpeech:`音声を生成中...`,readAloud:`音声で読み上げ`},artifacts:{title:`アーティファクト`,code:`コード`,preview:`プレビュー`,copy:`コードをコピー`,copied:`コピーしました!`,download:`ダウンロード`,expand:`展開`,collapse:`折りたたむ`,openInNewTab:`新しいタブで開く`,invalidSvg:`無効なSVGコンテンツ`,invalidJson:`無効なJSONコンテンツ`,previewMode:`プレビューモード`,codeMode:`コードモード`,copyContent:`コンテンツをコピー`,openInPanel:`パネルで開く`,openInNewWindow:`新しいウィンドウで開く`,created:`作成日`,closePanelEsc:`パネルを閉じる(Esc)`,copyButton:`コピー`,open:`開く`,dragEdgeToResize:`端をドラッグしてサイズ変更`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`バージョン {{current}} / {{total}}`,previousVersion:`前のバージョン`,nextVersion:`次のバージョン`},personaImportExport:{title:`ペルソナのインポート&エクスポート`,description:`ペルソナをエクスポートして共有したり、他の人のペルソナをインポート`,exportPersonas:`ペルソナをエクスポート`,importPersonas:`ペルソナをインポート`,noPersonasToExport:`エクスポートするペルソナがありません`,personasAvailable:`{{count}}個のペルソナが利用可能`,personasAvailable_plural:`{{count}}個のペルソナが利用可能`,exportAll:`すべてエクスポート`,uploadJsonFile:`JSONファイルをアップロード`,pasteJsonLabel:`JSONデータを貼り付け`,pasteJsonPlaceholder:`ペルソナのJSONデータをここに貼り付け...`,importing:`インポート中...`,importButton:`ペルソナをインポート`,expectedFormat:`期待されるJSON形式:`,exportSuccess:`ペルソナ「{{name}}」が正常にエクスポートされました`,exportFailed:`ペルソナのエクスポートに失敗しました`,exportAllSuccess:`{{count}}個のペルソナがすべて正常にエクスポートされました`,exportAllFailed:`ペルソナのエクスポートに失敗しました`,pasteJsonData:`ペルソナのJSONデータを貼り付けてください`,importMultipleSuccess:`{{count}}個のペルソナが正常にインポートされました`,importMultipleFailed:`{{count}}個のペルソナのインポートに失敗しました`,importNoneFailed:`ペルソナのインポートに失敗しました`,importSuccess:`ペルソナが正常にインポートされました`,importFailed:`ペルソナのインポートに失敗しました`},generationStats:{details:`詳細`,promptTokens:`プロンプトトークン:`,generatedTokens:`生成トークン:`,totalTokens:`合計トークン:`,speed:`速度:`,promptEval:`プロンプト評価:`,generation:`生成:`,modelLoad:`モデル読み込み:`,totalTime:`合計時間:`,generatedAt:`生成日時:`},userMenu:{loggedOut:`ログアウトしました`,pictureUpdated:`プロフィール画像を更新しました`,failedUpdateAvatar:`アバターの更新に失敗しました`,failedUpdatePicture:`プロフィール画像の更新に失敗しました`,noEmail:`メールアドレスなし`,changePicture:`画像を変更`,settings:`設定`,userManagement:`ユーザー管理`,signOut:`サインアウト`,changeProfilePicture:`プロフィール画像を変更`},pluginManager:{title:`プラグインマネージャー`,upload:`アップロード`,addJson:`JSON追加`,browseHF:`HF Hubを閲覧`,confirmDelete:`このプラグインを削除してもよろしいですか?`,uploading:`プラグインをアップロード中...`,pasteJson:`プラグインのJSONをここに貼り付け...`,installPlugin:`プラグインをインストール`,loading:`プラグインを読み込み中...`,noPlugins:`インストール済みプラグインなし`,noPluginsDescription:`プラグインファイルをアップロードするかJSONから追加してください。`,active:`アクティブ`,id:`ID`,endpoint:`エンドポイント`,activate:`有効化`,deactivate:`無効化`,activePlugin:`アクティブなプラグイン`,activePluginDescription:`すべてのチャットリクエストはこのプラグインを通じてルーティングされます`,variables:{title:`変数`,save:`保存`,saving:`保存中...`,saved:`変数を保存しました`,saveFailed:`変数の保存に失敗しました`,resetDefaults:`デフォルトにリセット`,reset:`変数をリセットしました`,sensitiveSet:`値が設定済み(変更するには新しい値を入力)`,resetFailed:`変数のリセットに失敗しました`,showValue:`{{label}}の値を表示`,hideValue:`{{label}}の値を非表示`,connection:`接続`,advanced:`詳細パラメータ`,inherited:`プロバイダーのデフォルトを使用`,inheritedValue:`プロバイダーのデフォルトを使用 ({{value}})`,enabled:`有効`,disabled:`無効`,required:`値が必要です`,fullApiEndpoint:`完全なAPIエンドポイントURL`,endpointHelp:`プロバイダーのベースURLだけでなく、操作パス(例: /v1/chat/completions)を含む完全なリクエストURLを入力してください。`,invalidUrl:`有効な完全なAPIエンドポイントURLを入力してください(例: https://provider.example/v1/chat/completions)`,insecureUrl:`APIエンドポイントはHTTPまたはHTTPSを使用する必要があります。`,httpWarning:`HTTPは認証情報やトラフィックを暗号化しません。信頼できるネットワークでのみ使用してください。`,invalidBaseUrl:`ベースURLにクエリ文字列やフラグメントを含めることはできません。`,invalidApiPath:`/で始まり、URL、クエリ、フラグメント、または..セグメントを含まない必要があります`,tooLong:`値が長すぎます`}},huggingface:{title:`HuggingFaceモデルブラウザ`,subtitle:`Hubからモデルを閲覧・選択`,searchPlaceholder:`モデルを検索...`,filters:`フィルター`,task:`タスク`,sortBy:`並び替え`,noModels:`モデルが見つかりません`,adjustSearch:`検索条件やフィルターを調整してみてください`,gated:`制限付き`,selected:`選択済み`,select:`選択`,refresh:`更新`,modelsFound:`件のモデルが見つかりました`},demoMode:{title:`デモモード`,github:`GitHub`},personaBackground:{label:`背景画像`,uploadBackgroundImage:`背景画像をアップロード`,dragAndDrop:`画像をドラッグ&ドロップするか、クリックして参照`,chooseImage:`画像を選択`,uploading:`アップロード中...`,enterImageUrl:`または画像URLを入力`,supportedFormats:`対応形式: JPG, PNG, GIF, WebP (最大5MB)。横長の画像が最適です。`,customBackground:`カスタム背景画像`,clickToChange:`クリックして変更または削除`,removed:`背景を削除しました`,uploaded:`背景のアップロードに成功しました`,invalidFile:`有効な画像ファイルを選択してください`,fileTooLarge:`背景画像のサイズは5MB未満にしてください`,readFailed:`画像ファイルの読み取りに失敗しました`,uploadFailed:`背景画像のアップロードに失敗しました`},modelSelector:{searchInstalled:`インストール済みモデルを検索...`,searchOllama:`Ollamaライブラリを検索...`,searchHuggingFace:`HuggingFaceを検索...`,selectModel:`モデルを選択`,personas:`ペルソナ`,ollamaModels:`Ollamaモデル`,pluginModels:`プラグインモデル`,actions:`アクション`,installed:`インストール済み`,use:`使用`,pull:`ダウンロード`,pullRestricted:`このインスタンスでは、モデルのインストールは管理者のみに制限されています。`,adminOnlyPull:`管理者のみ`,legacyProvider:`プロバイダー未記録`,providerNotRecorded:`プロバイダー未記録`,providerUnavailable:`プロバイダー利用不可`,reselectProvider:`このモデルを固定するにはプロバイダーを再選択してください`,unavailable:`利用不可`,unavailableSelections:`利用できない選択`,agentModels:`エージェント`},libreClaw:{title:`エージェント`,subtitle:`ローカル エージェントの実行、承認、スケジュール、メモリ、ツール、および使用状況。`,dashboard:`ダッシュボード`,connection:{disconnectedTitle:`Libre Claw デーモンが接続されていません`,disconnectedDescription:`<command>libre-claw start</command> を使用してローカルで開始するか、バックエンド環境で <env>LIBRE_CLAW_BASE_URL</env> を設定します。`},status:{connected:`接続済み`,disconnected:`切断されました`,activeRuns:`{{count}} アクティブ`,activeRuns_plural:`{{count}} アクティブ`},states:{queued:`キューに入れられました`,running:`実行中`,blocked:`ブロックされました`,done:`完了`,failed:`失敗しました`,cancelled:`キャンセルされました`},startRun:{title:`エージェント実行を開始`,placeholder:`Libre Claw にリポジトリの検査、バグの修正、レビューの実行、レポートのスケジュールを依頼してください...`,chatRun:`チャットラン`,goalMode:`ゴールモード`,providerOverride:`プロバイダーのオーバーライド`,modelOverride:`モデルオーバーライド`,run:`実行`},modelRoute:{title:`モデルルート`,providerPlaceholder:`プロバイダー`,modelPlaceholder:`モデル`,persistGlobal:`Libre Claw グローバル構成を保持する`,saveModel:`モデルの保存`,theme:`Libre Claw テーマ`,saveTheme:`テーマの保存`},runs:{title:`実行`,empty:`Libre Claw の実行はまだありません。`},timeline:{title:`実行タイムライン`,empty:`実行を選択してそのイベントを検査します。`,streaming:`ストリーミング中...`,assistantResponse:`アシスタントの応答`,resultOk:`わかりました`,resultError:`エラー`,labels:{userMessage:`ユーザーメッセージ`,toolCall:`ツール呼び出し`,toolResult:`ツールの結果`,approvalRequest:`承認リクエスト`,approvalResponse:`承認応答`,runStarted:`実行開始`,runFinished:`実行完了`,usage:`使用法`,error:`エラー`}},approvals:{needed:`承認が必要です`,allowOnce:`一度許可する`,alwaysAllowTool:`ツールを常に許可する`,deny:`拒否`,toolApprovalRequested:`ツールの承認が要求されました`},automations:{title:`自動化`,namePlaceholder:`名前`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`自動化プロンプト`,create:`作成`,empty:`スケジュールされたLibre Claw 自動化はありません。`,runNow:`今すぐ実行`,pause:`一時停止`,resume:`再開`,routes:{report:`レポート`,telegram:`Telegram`},status:{active:`アクティブ`,paused:`一時停止中`}},usageFallback:{title:`使用法とフォールバック`,usage:`使用法`,fallbackRoute:`フォールバックルート`,noUsage:`まだ使用実績はありません。`},metrics:{provider:`プロバイダー`,model:`モデル`,input:`入力`,output:`出力`,cached:`キャッシュされた`,reasoning:`推論`,cost:`コスト`,tool:`ツール`,resolution:`解像度`,state:`状態`,stopReason:`停止理由`,tokens:`{{formatted}} トークン`,tokens_plural:`{{formatted}} トークン`},fallbacks:{tool:`ツール`,unknown:`不明`,resolved:`解決済み`,unknownError:`不明なエラー`},toasts:{loadStatusFailed:`Libre Claw ステータスをロードできませんでした`,enterTask:`Libre Claw のタスクを入力してください`,runStarted:`Libre Claw の実行を開始しました`,startRunFailed:`Libre Claw の実行を開始できませんでした`,runCancelled:`実行をキャンセルしました`,cancelRunFailed:`実行をキャンセルできませんでした`,approved:`承認済み`,denied:`拒否されました`,resolvePermissionFailed:`権限を解決できませんでした`,providerModelRequired:`プロバイダーとモデルは必須です`,modelUpdated:`Libre Claw モデルが更新されました`,updateModelFailed:`モデルを更新できませんでした`,themeUpdated:`Libre Claw テーマを更新しました`,updateThemeFailed:`テーマを更新できませんでした`,automationRequired:`オートメーション名、スケジュール、プロンプトは必須です`,automationCreated:`自動化が作成されました`,createAutomationFailed:`オートメーションを作成できませんでした`,automationUpdated:`自動化が更新されました`,updateAutomationFailed:`オートメーションを更新できませんでした`}},work:{title:`作業`,subtitle:`隔離されたモデルワークスペース`,tasks:{title:`作業タスク`,subtitle:`永続的なローカルワークスペース`,new:`新しいタスク`,emptyTitle:`作業タスクはまだありません`,empty:`最初のメッセージを送信すると、作業タスクがここに表示されます。`,untitled:`無題のタスク`,actions:`タスク操作`,delete:`タスクを削除`,deleteNamed:`{{title}}を削除`,deleteConfirm:`「{{title}}」とそのワークスペースを完全に削除しますか?`,close:`作業タスクを閉じる`,open:`作業タスクを開く`,rename:`タスク名`,loading:`タスクを読み込み中…`,notFound:`この作業タスクは利用できません`,back:`新しいタスクを開始`,status:`ステータス:{{status}}`},landing:{title:`新しい作業タスクを開始`,description:`ローカルモデルまたは設定済みプロバイダーのモデルに、永続的で隔離されたワークスペースを提供します。モデルはファイルの確認やツールの実行ができ、次回も続きから作業できます。`,isolated:`隔離`,isolatedBody:`各タスクには専用のコンテナとファイルがあります。`,durable:`永続的`,durableBody:`後から会話とワークスペースに戻れます。`,controlled:`制御`,controlledBody:`ランタイムとタスクファイルはホストから隔離されます。`},composer:{placeholder:`作成または変更したい内容を入力…`,model:`作業モデル`,noModels:`作業対応モデルがありません`,cancel:`停止`,send:`実行`,hint:`各タスクは専用のファイルと履歴を保持します。使用前にモデルの出力を確認してください。`,remoteTitle:`リモートプロバイダー`,remoteHint:`会話とツール出力は、設定済みのサービスに送信されます。1 回の自律実行で複数回プロバイダーを呼び出し、料金が発生する場合があります。ツールが内容を返さない限り、ワークスペースのファイルはローカルに保持されます。`,remoteDismiss:`閉じる`,remoteDismissLabel:`リモートプロバイダーの通知を閉じる`,remoteDismissFailed:`リモートプロバイダーの設定を保存できませんでした。`,noModelSelected:`作業対応モデルが選択されていません。`},conversation:{ready:`ワークスペースの準備ができました`,empty:`下からタスクを続けてください。この会話とファイルは、このワークスペースに紐づいたまま保持されます。`,loadOlder:`過去のメッセージを読み込む`},status:{preparing:`隔離ワークスペースを準備中…`,running:`ローカルワークスペースで作業中…`},statusLabels:{idle:`待機中`,thinking:`思考中`,complete:`完了`,needsInput:`入力待ち`,error:`エラー`},live:{connecting:`ライブ更新に接続しています…`,reconnecting:`ライブ更新に再接続しています…`,unavailable:`ライブ更新を利用できません`,newActivity:`新しいアクティビティ`,skillsLoaded:`ワークスペーススキル · {{count}}`},runtime:{unavailable:`ランタイムを利用できません`,ready:`ランタイム準備完了`,readyOllama:`Docker 準備完了`,readyPlugin:`Docker + プラグイン準備完了`,readyHybrid:`Docker + モデル準備完了`,reason:`Docker と、利用可能な Ollama またはプラグインのモデルプロバイダーが必要です。`},workspace:{label:`ワークスペース表示`,files:`ファイル`,activity:`アクティビティ`,preview:`プレビュー`,resize:`会話とワークスペースのサイズを変更`,resizeHint:`ドラッグしてサイズを変更します。細かく調整するには矢印キーを使用します。ダブルクリックまたは Enter キーでリセットします。`,splitSize:`会話 {{conversation}}%、ワークスペース {{workspace}}%`,terminal:`ターミナル`,git:`Git`},files:{discard:`未保存のファイル変更を破棄しますか?`,leaveWithDraft:`このファイルから移動しますか?未保存の編集内容はブラウザーの下書きとして残ります。`,up:`親フォルダー`,back:`ファイルに戻る`,empty:`このフォルダーにはまだファイルがありません。`,select:`確認・編集するファイルを選択してください。`,editorLabel:`ファイルエディター:{{path}}`,format:`整形`,formatted:`コードを整形しました。`,formatFailed:`このファイルを整形できませんでした。`,formatShortcut:`整形(Shift+Alt+F)`,formatTooLarge:`整形できるのは、100,000 文字未満かつ 4,000 行未満のファイルです。`,formatUnsupported:`このファイル形式は整形できません。`,saveShortcut:`保存(⌘/Ctrl+S)`,highlightPaused:`編集の応答性を保つため、大きなファイルではリアルタイムハイライトを一時停止しています。`,plainTextLarge:`プレーンテキスト・大きなファイル`,changes:`変更`,changesSince:`前のターン以降の変更点`,diffLabel:`前のターン以降の変更: {{path}}`,diffFolded:`変更のない行 {{count}} 行`},activity:{empty:`コマンド、ファイル操作、ツールの結果がここに表示されます。`,toolActivity:`ツールアクティビティ`,details:`詳細`,kinds:{message:`メッセージ`,toolCall:`ツール呼び出し`,toolResult:`ツール結果`,error:`エラー`}},preview:{command:`任意の起動コマンド`,start:`プレビューを開始`,stop:`プレビューを停止`,open:`開く`,starting:`プレビューを開始中…`,frameTitle:`ワークスペースのプレビュー`,failed:`プレビューを開始できませんでした。アクティビティを確認して、別のコマンドをお試しください。`,empty:`このワークスペース内でアプリを起動すると、ここで確認できます。`},mobile:{surface:`タスク画面`,conversation:`会話`,workspace:`ワークスペース`},toasts:{runFailed:`作業タスクを開始できませんでした。`,updateFailed:`このタスクを更新できませんでした。`,renameFailed:`このタスク名を変更できませんでした。`,cancelled:`作業の実行を停止しました。`,cancelFailed:`作業の実行を停止できませんでした。`,deleteFailed:`この作業タスクを削除できませんでした。`,saveFailed:`このファイルを保存できませんでした。`,saved:`ファイルを保存しました。`,previewFailed:`プレビューを開始できませんでした。`,previewStopFailed:`プレビューを停止できませんでした。`},terminal:{connecting:`サンドボックスでシェルを開いています…`,closed:`ターミナルセッションが終了しました。`,failed:`ターミナルセッションを開始できませんでした。`,reconnect:`再接続`,unavailable:`この環境では対話型ターミナルを利用できません。`,blockedByRun:`モデルがこのコンテナを使用中です。ターンの終了後にターミナルが開きます。`,taskRunning:`モデルのターンを実行中`},policy:{label:`ランタイムポリシー`,default:`デフォルト(グローバル制限)`},git:{actionFailed:`Git 操作に失敗しました。`,blockedByPreview:`Git の状態を変更する前にプレビューを停止してください。`,blockedByRun:`Git の書き込み操作はモデルのターン終了後に解放されます。`,branchCreated:`{{name}} を作成しました。`,branchSwitched:`{{name}} に切り替えました。`,clean:`作業ツリーはクリーンです。`,commit:`ステージ済みの変更をコミット`,commitMessage:`コミットメッセージ`,committed:`コミットを作成しました。`,detached:`切り離された HEAD`,diff:`差分プレビュー`,diffFailed:`この差分を読み込めませんでした。`,history:`ローカル履歴`,initialize:`Git を初期化`,initializeDescription:`状態・差分・ブランチ・コミットのためのローカルリポジトリを作成します。リモート認証情報は接続されません。`,initialized:`Git リポジトリを初期化しました。`,loadFailed:`Git の状態を読み込めませんでした。`,localOnly:`ローカル Git のみ。push・pull・プルリクエストには別の信頼できる認証情報ブローカーが必要です。`,newBranch:`新しいローカルブランチ`,noCommits:`まだコミットはありません。`,noDiff:`テキスト差分はまだありません。未追跡ファイルはステージ後に表示されます。`,notInitialized:`Git は初期化されていません`,selectChange:`差分を確認するには変更されたファイルを選択してください。`,selectPath:`{{path}} を選択`,stageAll:`すべてステージ`,stageSelected:`{{count}} 件をステージ`,staged:`変更をステージしました。`,switchBranch:`ローカルブランチを切り替え`,changes:`変更`,createBranch:`作成`},hostWorkspace:{hint:`分離ワークスペースの場合は空欄のまま、またはこのマシンのフォルダーをタスクに指定します。`,label:`ワークスペースフォルダー(任意)`,warning:`タスクはこのフォルダーを直接読み書きできます。分離ワークスペースを使うには空欄のままにしてください。`}},usageAnalytics:{eyebrow:`管理`,title:`プロバイダーの使用状況`,description:`このインスタンスで有効なプラグイン全体の送信API呼び出しとモデル消費量を追跡します。`,days:`{{count}}日間`,refresh:`使用状況を更新`,loadFailed:`プロバイダーの使用状況を読み込めませんでした。`,metrics:{calls:`呼び出し`,tokens:`トークン`},cards:{calls:`API呼び出し`,callsDetail:`{{count}}人のアクティブユーザー全体`,tokens:`報告されたトークン`,tokensDetail:`{{count}}件の呼び出しで報告された使用量`,success:`成功率`,successDetail:`{{count}}件の失敗した呼び出し`,latency:`平均レイテンシ`,latencyDetail:`エンドツーエンドのプロバイダ時間`},activity:{title:`時間経過に伴う消費量`,callsDescription:`有効なプラグインへの1日の送信リクエスト`,tokensDescription:`プロバイダから報告された1日のトークン合計`,chartLabel:`1日のプロバイダ {{metric}} チャート`},models:{title:`モデル消費量`,description:`この期間中に最もトラフィックが多いモデル。`,model:`モデル`,success:`成功`,latency:`レイテンシ`},providers:{title:`有効なプラグインのトラフィック`},capabilities:{title:`機能の構成`,characters:`{{count}} 文字`,images:`{{count}} 画像`,jobs:`{{count}} 件の動画ジョブ`,inputs:`{{count}} 件の入力`,reportedTokens:`{{count}} 報告トークン`},empty:{title:`プロバイダ呼び出しはまだありません`,description:`有効なプラグインがチャット、Work、埋め込み、画像、音声、サウンド、または動画のリクエストを処理すると、呼び出しがここに表示されます。`},privacyNote:`使用量はサーバー上の送信プラグイン境界で計測されます。Libre WebUIはプロバイダ、モデル、タイミング、ステータス、および報告されたカウンターを保存しますが、プロンプト、レスポンス、エンドポイント、資格情報、またはプロバイダのエラー本文は保存しません。トークン合計には、プロバイダが使用量メタデータを返した呼び出しのみが含まれます。`,heatmap:{title:`1年間のアクティビティ`,description:`過去1年間の日次プロバイダー呼び出し。各日の最も使用されたモデルごとに色分けされています。`,calls:`回の呼び出し`,noCalls:`呼び出しなし`,other:`その他のモデル`,less:`少`,more:`多`,yearTotal:`過去1年間で{{formatted}}回の呼び出し`}},systemPage:{eyebrow:`管理`,title:`システム`,description:`この Libre WebUI インスタンスをホストしているマシンとランタイムを監視します。`,updated:`更新日時: {{date}}`,refresh:`システム情報を更新`,loadFailed:`システム情報を読み込めませんでした。`,cards:{uptime:`ホストの稼働時間`,uptimeDetail:`{{date}} から稼働中`,memory:`使用メモリ`,memoryDetail:`{{total}} 中 {{used}} 使用`,freeSpace:`空き容量`,freeSpaceDetail:`{{label}} · 合計 {{total}}`,containers:`実行中のコンテナ`,containersDetail:`Docker に認識されている {{total}} 個のコンテナ`,dockerUnavailable:`Docker は利用できません`,unavailable:`利用不可`},host:{title:`ホストとランタイム`,description:`オペレーティングシステム、プロセッサ、および Libre WebUI プロセスの詳細。`,container:`コンテナランタイム`,native:`ネイティブランタイム`,hostname:`ホスト名`,operatingSystem:`オペレーティングシステム`,processor:`プロセッサー`,logicalCpus:`論理 CPU`,loadAverage:`負荷平均 · 1 / 5 / 15 分`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`プロセス`,workingDirectory:`作業ディレクトリ`},memory:{title:`メモリ`,description:`ランタイムで認識されるシステムメモリとアプリケーションプロセスの使用状況。`,usedOf:`{{total}} のうち {{used}} 使用中`,free:`{{value}} 空き`,processRss:`プロセス RSS`,heapUsed:`V8 ヒープ使用量`,heapTotal:`V8 ヒープ合計`,external:`外部メモリ`},storage:{title:`ストレージ`,description:`ランタイムファイルシステムおよび永続的なアプリケーションデータに利用可能な空き容量。`,used:`{{value}} 使用済み`,free:`{{value}} 空き`,empty:`このランタイムではファイルシステム情報を利用できません。`},docker:{title:`Docker`,description:`読み取り専用の Docker Engine ステータスと、絞り込まれたコンテナのリスト。`,connected:`接続済み`,unavailable:`利用不可`,unavailableDetail:`Docker Engine の診断は利用できません。`,socketStatus:`ローカルソケット: {{status}}`,mounted:`マウント済み`,notMounted:`未マウント`,running:`実行中`,stopped:`停止`,paused:`一時停止`,total:`合計`,version:`バージョン`,host:`ホスト`,architecture:`アーキテクチャ`,cpus:`CPU`,memory:`メモリ`,container:`コンテナ`,image:`イメージ`,state:`状態`,created:`作成日時`,empty:`Dockerに接続されており、現在リストされているコンテナはありません。`},network:{title:`ネットワーク`,description:`ランタイムで表示されるインターフェース、アドレス、およびLinuxトラフィックカウンター。`,internal:`内部`,empty:`アプリケーションランタイムに表示されるネットワークインターフェースはありません。`},securityNote:`このページは管理者に限定されています。サーバーは運用上の要約のみを返します。環境変数、認証情報、Dockerラベル、マウント、コンテナコマンド、またはinspectペイロードは公開されません。Libre WebUIがコンテナ内で実行されている場合、ローカルソケットが利用可能であれば、ホストレベルのCPUおよびメモリの詳細はDocker Engineから取得されます。その他の値はアプリケーションランタイムを示します。`,work:{title:`Work`,description:`全ユーザーのサンドボックス`,access:`アクセス`,accessAdmins:`管理者のみ`,accessAllUsers:`すべてのユーザー`,runtimeAvailable:`利用可能`,runtimeUnavailable:`利用不可`,activeRuntimes:`アクティブなランタイム`,pendingCleanups:`保留中のクリーンアップ`,orphans:`孤立したコンテナ`,owner:`所有者`,task:`タスク`,state:`状態`,preview:`プレビュー`,terminals:`ターミナル`,updated:`更新日時`,stateRunning:`実行中`,stateStopped:`停止`,stateStarting:`起動中`,stateUnknown:`不明`,noTasks:`Work タスクはまだありません。`}},mediaGeneration:{title:`メディアを生成`,description:`有効化されたメディアプロバイダーでビデオ、サウンド、音楽、または音声を作成します。`,image:`画像`,video:`ビデオ`,audio:`オーディオ`,sound:`サウンド`,speech:`音声`,model:`モデル`,voice:`音声または音声ID`,resolution:`解像度`,aspectRatio:`アスペクト比`,duration:`長さ`,providerDefault:`プロバイダーのデフォルト`,generateAudio:`サポートされている場合、ビデオと一緒にオーディオを生成`,prompt:`プロンプト`,text:`読み上げるテキスト`,videoPlaceholder:`シーン、動き、カメラ、照明を説明してください...`,audioPlaceholder:`音声に読み上げさせたいテキストを入力してください...`,soundPlaceholder:`欲しいサウンド、音楽、雰囲気、または音声応答を説明してください...`,generate:`生成`,generating:`生成中… 数分かかる場合があります`,success:`メディアが生成され、Imagineに保存されました`,failed:`メディアの生成に失敗しました`,loadFailed:`メディアプロバイダーの読み込みに失敗しました`,noModels:`利用可能な{{kind}}モデルはありません。互換性のあるプロバイダーを有効化し、その認証情報を先に保存してください。`},mediaGallery:{itemCount:`{{count}} 件`,empty:`まだ生成されたメディアはありません`,emptyHint:`画像、ビデオ、または音声クリップを生成すると、ここに表示されます。`,filters:{all:`すべて`,image:`画像`,video:`動画`,audio:`オーディオ`}},whatsNew:{title:`新機能`,releaseNotes:`リリースノート`,cta:`さあ、始めましょう`},notes:{title:`ノート`,new:`新しいノート`,untitled:`無題`,empty:`ノートはまだありません`,selectOrCreate:`ノートを選択するか新規作成してください`,contentPlaceholder:`Markdownで書く…`,saved:`保存済み`,saveFailed:`ノートを保存できませんでした`,createFailed:`ノートを作成できませんでした`,deleteConfirm:`このノートを削除しますか?`,deleteFailed:`ノートを削除できませんでした`},home:{active:`アクティブ`,continue:`続行`,start:`開始`,explore:`探索`},palette:{empty:`一致なし。`,placeholder:`チャット・Work・アクションを検索…`,toggleTheme:`テーマ切り替え`,actions:`アクション`,chats:`チャット`,search:`検索`,settings:`設定`,work:`作業`},tabs:{actions:`タブ操作`,close:`タブを閉じる`,closeAll:`すべてのタブを閉じる`,closeOthers:`他のタブを閉じる`,closeRight:`右側のタブを閉じる`,home:`ホーム`,label:`開いているタブ`,new:`新しいタブ`,newWork:`新しい Work`,chat:`チャット`,newChat:`新しいチャット`,work:`作業`}};export{e as default};
@@ -0,0 +1,2 @@
1
+ var e={common:{loading:`로딩 중...`,save:`저장`,saving:`저장 중...`,cancel:`취소`,delete:`삭제`,edit:`편집`,close:`닫기`,back:`뒤로`,next:`다음`,confirm:`확인`,error:`오류`,success:`성공`,warning:`경고`,or:`또는`,optional:`선택사항`,enabled:`활성화됨`,disabled:`비활성화됨`,on:`켜짐`,off:`꺼짐`,yes:`예`,no:`아니오`,search:`검색`,noResults:`결과 없음`,retry:`재시도`,refresh:`새로고침`,download:`다운로드`,upload:`업로드`,export:`내보내기`,import:`가져오기`,reset:`초기화`,apply:`적용`,clear:`지우기`,all:`모두`,none:`없음`,default:`기본값`,custom:`사용자 정의`,remove:`제거`,home:`홈`,more:`많음`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`다시 오신 것을 환영합니다`,subtitle:`계속하려면 계정에 로그인하세요`,username:`사용자 이름`,usernamePlaceholder:`사용자 이름을 입력하세요`,password:`비밀번호`,passwordPlaceholder:`비밀번호를 입력하세요`,signIn:`로그인`,signingIn:`로그인 중...`,noAccount:`계정이 없으신가요?`,signUpHere:`여기서 가입하세요`,loginSuccess:`로그인 성공!`,loginFailed:`로그인 실패`,checkCredentials:`로그인 실패. 자격 증명을 확인하세요.`,enterBoth:`사용자 이름과 비밀번호를 모두 입력하세요`,githubSuccess:`GitHub 로그인 성공!`,githubFailed:`GitHub 인증 실패`,githubVerifyFailed:`GitHub 인증 확인 실패`,approvalPending:`계정이 관리자 승인을 기다리고 있습니다.`,verificationFailed:`보안 확인에 실패했습니다. 페이지를 새로 고친 뒤 다시 시도하세요.`},signup:{title:`계정 만들기`,subtitle:`새 계정을 등록하세요`,username:`사용자 이름`,usernamePlaceholder:`사용자 이름을 선택하세요`,email:`이메일`,emailPlaceholder:`your@email.com`,password:`비밀번호`,passwordPlaceholder:`비밀번호를 선택하세요`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`비밀번호를 다시 입력하세요`,createAccount:`계정 만들기`,creatingAccount:`계정 생성 중...`,hasAccount:`이미 계정이 있으신가요?`,signInHere:`여기서 로그인하세요`,signupSuccess:`계정이 성공적으로 생성되었습니다!`,signupFailed:`가입 실패`,tryAgain:`가입 실패. 다시 시도해주세요.`,usernameRequired:`사용자 이름과 비밀번호가 필요합니다`,passwordMismatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자 이상이어야 합니다`,approvalPending:`가입이 완료되었습니다. 관리자가 계정을 승인해야 합니다.`,awaitingApproval:`승인 대기 중`,awaitingApprovalDescription:`계정이 생성되었지만, 로그인하려면 관리자가 계정을 활성화해야 합니다.`,backToSignIn:`로그인으로 돌아가기`},logout:{button:`로그아웃`,success:`성공적으로 로그아웃되었습니다`},oauth:{continueWith:`{{provider}}로 계속하기`,connectingTo:`{{provider}}에 연결 중...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`인증 확인 중...`,welcome:`환영합니다`,noEmail:`이메일 없음`,role:`역할`,id:`ID`,userId:`사용자 ID`,signInDescription:`계속하려면 GitHub 계정으로 로그인하세요`,signInWithGitHub:`GitHub로 로그인`,jwtActive:`JWT 인증 활성`,jwtDescription:`GitHub OAuth 기반 JWT 인증`,github:`GitHub`,provider:`제공자`,tagline:`당신의 AI 스택은 당신이 통제해야 합니다.`,selfHosted:`자체 호스팅 · Apache 2.0`,highlights:{local:{title:`로컬 우선`,body:`대화와 파일은 이 앱을 실행하는 기기에 그대로 보관됩니다.`},providers:{title:`모든 프로바이더`,body:`Ollama를 통한 로컬 모델과 추가하기로 선택한 원격 프로바이더를 지원합니다.`},work:{title:`격리된 작업 환경`,body:`모델에 파일, 터미널, 미리보기가 있는 샌드박스 작업 공간을 제공하세요.`}}},setup:{welcome:{title:`Libre WebUI에 오신 것을 환영합니다`,subtitle:`시작하기`,description:`몇 단계만으로 Libre WebUI 인스턴스를 설정하세요`,createAdmin:`관리자 계정 만들기`,features:{secure:{title:`안전하고 개인적인`,description:`대화가 기기에 저장됩니다`},fast:{title:`빠르고 반응이 좋은`,description:`속도와 성능에 최적화됨`},openSource:{title:`오픈 소스`,description:`무료 오픈 소스 소프트웨어`}}},admin:{title:`관리자 계정 만들기`,subtitle:`관리자 설정`,description:`Libre WebUI 인스턴스의 첫 번째 관리자 계정을 만드세요`,usernamePlaceholder:`관리자 사용자 이름을 입력하세요`,passwordPlaceholder:`비밀번호를 입력하세요 (최소 6자)`,confirmPlaceholder:`비밀번호를 다시 입력하세요`,creating:`생성 중...`,createAdmin:`관리자 만들기`,success:`관리자 계정이 성공적으로 생성되었습니다!`,failed:`관리자 계정 생성 실패`,fillAllFields:`모든 필드를 입력하세요`,note:`이것은 Libre WebUI 인스턴스의 기본 관리자 계정이 됩니다`,approvalUnexpected:`초기 관리자를 활성화할 수 없습니다. 다시 시도해 주세요.`},encryptionKey:{title:`암호화 키 저장`,subtitle:`중요: 이 키를 저장하세요`,description:`이 암호화 키는 민감한 데이터를 보호합니다. 안전하게 저장하세요 - 데이터베이스를 복원해야 할 때 필요합니다.`,warning:`경고`,warningText:`이 키를 분실하고 데이터베이스를 복원해야 하는 경우, 암호화된 데이터(API 키, 환경설정)를 복구할 수 없습니다.`,label:`암호화 키`,loading:`로딩 중...`,copyToClipboard:`클립보드에 복사`,copied:`암호화 키가 클립보드에 복사되었습니다!`,copyFailed:`키를 클립보드에 복사하지 못했습니다`,envNote:`이 키는 backend/.env 파일에 ENCRYPTION_KEY로도 저장됩니다`,acknowledgment:`암호화 키를 안전한 장소에 저장했으며, 분실 시 데이터 손실이 발생할 수 있음을 이해합니다.`,confirmRequired:`암호화 키를 저장했음을 확인하세요`,continue:`Libre WebUI로 계속`}},chat:{greeting:{morning:`좋은 아침입니다`,afternoon:`좋은 오후입니다`,evening:`좋은 저녁입니다`,night:`안녕히 주무세요`},followUp:`후속 질문`,welcome:{helpToday:`오늘 무엇을 도와드릴까요?`,helpTonight:`오늘 밤 무엇을 도와드릴까요?`,variety:{create:{title:`무엇을 만들어 볼까요?`,subtitle:`떠오른 생각, 간단한 스케치, 좀처럼 풀리지 않는 문제에서 시작해 보세요.`},explore:{title:`어디서부터 시작할까요?`,subtitle:`자꾸만 다시 떠오르는 질문을 가져오세요.`},imagine:{title:`무엇을 상상하고 있나요?`,subtitle:`함께 구체적인 모습으로 만들어 봐요.`},focus:{title:`지금 무엇에 집중할까요?`,subtitle:`다음 단계를 분명하게 정해 봅시다.`},untangle:{title:`무엇이 복잡하게 얽혀 있나요?`,subtitle:`우선 정리되지 않은 그대로 들려주세요.`},momentum:{title:`준비되면 시작해요.`,subtitle:`아이디어, 계획, 하다 만 이야기 어디서든 이어가세요.`},open:{title:`무슨 생각을 하고 있나요?`,subtitle:`작은 생각도 큰 프로젝트도 모두 좋아요.`},challenge:{title:`무엇을 해결할까요?`,subtitle:`아직 뜻대로 되지 않는 부분을 알려주세요.`},draft:{title:`어디서든 시작해 봅시다.`,subtitle:`아직 다듬어지지 않아도 괜찮아요.`},possibility:{title:`이건 무엇이 될 수 있을까요?`,subtitle:`가공하지 않은 재료부터 보여주세요.`},unexpected:{title:`예상 밖의 무언가를 만들어 봐요.`,subtitle:`제약 하나, 분위기 하나, 혹은 어렴풋한 아이디어를 주세요.`}}},input:{placeholder:`메시지를 보내세요`,messagePlaceholder:`메시지...`,attachImages:`이미지 첨부`,attachments:`첨부 파일 및 고급 기능`,sendMessage:`메시지 보내기`,stopGeneration:`생성 중지`,menu:{uploadImages:`이미지 업로드`,attachDocument:`문서 첨부`,attachWebpage:`웹페이지 첨부`,structuredOutput:`구조화된 출력`,attach:`첨부`,documentAttached:`문서가 첨부되었습니다`,webpageAttached:`웹페이지가 첨부되었습니다`,attachFailed:`첨부하지 못했습니다`,attachKnowledge:`지식 첨부`,noCollections:`아직 컬렉션이 없습니다 — 설정 → 문서에서 만드세요`},voiceInput:`음성 입력`,voiceStop:`듣기 중지`,webSearchOn:`웹 검색 켜짐 — 답변에 실시간 결과 사용`,webSearchOff:`이 메시지에 대해 웹 검색`},session:{new:`새 채팅`,work:`작업`,chat:`채팅`,private:`비공개`,privateMode:`비공개 모드`,privateDescription:`이 대화는 저장되지 않습니다`,privateTooltip:`저장되지 않는 비공개 대화 시작`,deleteConfirm:`이 채팅을 삭제하시겠습니까?`,generatingTitle:`제목 생성 중`,noChats:`채팅이 없습니다`,createFirst:`위에서 첫 번째 채팅을 만드세요`,chats:`채팅`,renameChat:`채팅 이름 변경`,openNewTab:`새 탭에서 열기`,pinChat:`고정`,unpinChat:`고정 해제`,deleteChat:`채팅 삭제`,incognito:`시크릿 채팅`,archiveChat:`채팅 보관`,groups:{pinned:`고정됨`,today:`오늘`,yesterday:`어제`,previous7Days:`지난 7일`,previous30Days:`지난 30일`,older:`이전`},folder:{new:`새 폴더`,namePlaceholder:`폴더 이름`,move:`폴더로 이동`,remove:`폴더에서 제거`,delete:`폴더 삭제`,deleteConfirm:`이 폴더를 삭제할까요? 안의 채팅은 유지됩니다.`}},persona:{applied:`페르소나 적용됨`,label:`페르소나`,removeFailed:`페르소나 제거에 실패했습니다`},model:{updated:`모델 업데이트됨`,noModels:`사용 가능한 모델 없음`,noModelsDescription:`사용 가능한 모델이 없습니다. Ollama가 실행 중이고 모델이 설치되어 있는지 확인하세요.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`사용 가능한 모델이 없습니다. Ollama가 실행 중이고 모델이 설치되어 있는지 확인하세요.`,selectBeforePrivateChat:`비공개 채팅을 시작하기 전에 사용 가능한 모델을 선택하세요`,selectBeforeSending:`전송하기 전에 사용 가능한 모델을 선택하세요`},footer:{disclaimer:`LLM은 실수를 할 수 있습니다 - 중요한 정보는 확인하세요`,images:`이미지 {{count}}개`,images_plural:`이미지 {{count}}개`,structuredOutput:`구조화된 출력`},mediaUpload:{dropImagesHere:`여기에 이미지를 놓거나`,supportedFormats:`지원: JPG, PNG, GIF, WebP (각 최대 10MB)`,browse:`찾아보기`},structuredOutput:{title:`응답 형식`,none:`없음 (자연어)`,noneDescription:`기본 자연어 응답`,json:`JSON`,jsonDescription:`구조화된 JSON 형식`,list:`목록`,listDescription:`항목 배열`,summary:`요약`,summaryDescription:`핵심 사항이 포함된 문서 요약`,analysis:`분석`,analysisDescription:`장단점이 포함된 구조화된 분석`,custom:`사용자 정의 스키마`,customDescription:`자신만의 JSON 스키마 정의`,customSchema:`사용자 정의 JSON 스키마`,schemaPreview:`스키마 미리보기`,applySchema:`스키마 적용`,cancel:`취소`,enabled:`구조화된 출력 활성화됨`},controls:{title:`채팅 컨트롤`,systemPrompt:`시스템 프롬프트`,systemPromptPlaceholder:`이 채팅에만 적용되는 지시사항…`,advancedParams:`고급 매개변수`,advancedParamsDescription:`이 채팅 전용 재정의입니다. 빈 칸은 전역 기본값을 사용합니다.`,fromModel:`모델 제공`,fromModelHint:`이 값은 모델 자체의 권장 설정에서 가져온 것입니다.`,contextCapped:`모델이 학습한 {{trained}} 중 {{context}}로 제한했습니다. 그래야 계속 로드됩니다.`,saved:`컨트롤이 저장되었습니다`,saveFailed:`컨트롤을 저장하지 못했습니다`,params:{temperature:`온도`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`최대 토큰`,repeatPenalty:`반복 페널티`,seed:`시드`,contextLength:`컨텍스트 길이`}},message:{sources:`출처`}},sidebar:{navigation:{chat:`채팅`,models:`모델`,personas:`페르소나`,imagine:`이미지 생성`,settings:`설정`,userManagement:`사용자 관리`,signOut:`로그아웃`,agents:`에이전트`,work:`작업`,exploreLabel:`둘러보기`,usageAnalytics:`프로바이더 사용량`,system:`시스템`,notes:`노트`},toggleSize:`사이드바 크기 전환`,expandSidebar:`사이드바 확장`},user:{menu:{changePicture:`사진 변경`,settings:`설정`,userManagement:`사용자 관리`,logout:`로그아웃`,usageAnalytics:`프로바이더 사용량`,system:`시스템`},avatar:{title:`프로필 사진 변경`,updated:`프로필 사진이 업데이트되었습니다`,updateFailed:`프로필 사진 업데이트 실패`,saving:`저장 중...`,label:`아바타`,uploadAvatarImage:`아바타 이미지 업로드`,dragAndDrop:`이미지를 드래그하거나 클릭하여 찾아보기`,chooseImage:`이미지 선택`,uploading:`업로드 중...`,enterImageUrl:`또는 이미지 URL 입력`,supportedFormats:`지원 형식: JPG, PNG, GIF, WebP (최대 2MB). 정사각형 이미지가 가장 좋습니다.`,customAvatar:`사용자 정의 아바타 이미지`,clickToChange:`클릭하여 변경 또는 제거`,removed:`아바타가 제거되었습니다`,uploaded:`아바타가 업로드되었습니다`,invalidFile:`유효한 이미지 파일을 선택하세요`,fileTooLarge:`아바타 이미지 크기는 2MB 미만이어야 합니다`,readFailed:`이미지 파일을 읽지 못했습니다`,uploadFailed:`아바타 이미지 업로드 실패`},profile:{noEmail:`이메일 없음`}},settings:JSON.parse(`{"title":"설정","tabs":{"appearance":"외관","model":"모델","systemMessage":"시스템 메시지","plugins":"플러그인","search":"검색","generation":"생성","documents":"문서","tts":"음성 합성","imageGen":"이미지 생성","data":"데이터","shortcuts":"단축키","about":"정보"},"appearance":{"title":"외관","language":{"title":"언어","description":"선호하는 언어를 선택하세요"},"theme":{"title":"테마","light":"라이트","dark":"다크","amoled":"퓨어 블랙","system":"시스템"},"accent":{"title":"강조 색상","custom":"사용자 지정 색상","useColor":"{{color}} 강조 색상 사용","behaviorTitle":"인터페이스 팔레트","behaviorDescription":"강조 색상을 컨트롤에만 사용할지 밝은 또는 어두운 인터페이스 전체에 적용할지 선택하세요.","defaultStyle":"기본","defaultStyleDescription":"밝은 테마와 어두운 테마의 중립적인 표면을 유지합니다.","adaptedStyle":"강조 색상에 맞추기","adaptedStyleDescription":"표면, 테두리, 텍스트를 강조 색상으로 물들입니다."},"chatInterface":{"title":"채팅 인터페이스","showUsername":"사용자 이름 표시","showUsernameDescription":"채팅 메시지에 사용자 이름 표시","followUpSuggestions":"후속 질문 제안","followUpSuggestionsDescription":"각 응답 후 빠른 답장을 제안합니다","hapticFeedback":"햅틱 피드백 (Android)","hapticFeedbackDescription":"중요한 모바일 작업에 미세한 진동 사용"},"background":{"title":"배경 이미지","enable":"배경 이미지 활성화","enableDescription":"블러 효과가 있는 사용자 정의 배경 표시","blur":"블러","opacity":"불투명도","upload":"배경 이미지 업로드","dragDrop":"이미지를 끌어다 놓거나 클릭하여 찾아보기","chooseImage":"이미지 선택"}},"saveSettings":"설정 저장","model":{"title":"모델 설정","defaultModel":"기본 모델","defaultModelDescription":"이 모델은 새 대화에 기본으로 사용됩니다","selectModel":"모델 선택","updateAll":"모든 모델 업데이트","updateAllDescription":"설치된 모든 모델의 최신 버전 확인 및 풀","updateAllButton":"모두 업데이트","updating":"모델 업데이트 중...","currentModelInfo":"현재 모델 정보","name":"이름","size":"크기","family":"계열","format":"형식","status":"상태","statusStarting":"시작 중...","statusComplete":"완료","statusError":"오류","bulkOperations":"일괄 작업","autoTitle":{"title":"자동 제목 생성","enable":"자동 제목 활성화","enableDescription":"새 대화의 제목을 자동으로 생성","taskModel":"작업 모델","selectTaskModel":"작업 모델 선택","taskModelDescription":"대화 제목 생성에 사용되는 모델"},"persona":"페르소나","updatingModel":"{{name}} 업데이트 중 ({{current}}/{{total}})","modelsProgress":"{{total}}개 모델 중 {{current}}개","specializedModels":"특화 모델","visionModel":"비전 모델","selectVisionModel":"현재 채팅 모델 사용","visionModelDescription":"전송되는 채팅 컨텍스트에 이미지가 포함될 때마다 자동으로 사용됩니다. 이미지 입력을 지원하는 모델을 선택하세요.","visionModelUpdateFailed":"비전 모델 업데이트에 실패했습니다: {{error}}","visionModelNoProvider":"이 비전 모델에는 제공자 정보가 없습니다. 사용 가능한 모델을 선택하세요."},"systemMessage":{"title":"시스템 메시지","description":"모든 새 대화에 사용될 사용자 정의 시스템 메시지를 설정하세요.","placeholder":"시스템 메시지를 입력하세요...","saved":"시스템 메시지가 저장되었습니다","saveFailed":"시스템 메시지 저장 실패"},"plugins":{"title":"플러그인","description":"설치된 플러그인 관리","addNew":"새 플러그인 추가","upload":"플러그인 업로드","addJson":"JSON 추가","uploading":"업로드 중...","jsonPlaceholder":"플러그인 JSON 구성 붙여넣기...","install":"플러그인 설치","noPlugins":"설치된 플러그인 없음","noPluginsDescription":"기능을 확장하려면 플러그인을 추가하세요","loading":"플러그인 로딩 중...","installed":"설치된 플러그인","active":"활성 플러그인","activeLabel":"활성","inactive":"비활성","activate":"활성화","deactivate":"비활성화","models":"모델","apiKeySet":"API 키 설정됨","apiKeyConfiguration":"API 키 구성","apiKeyEnvAlternative":"또는 다음을 설정하세요:","environmentVariable":"환경 변수","apiKeyConfigured":"API 키가 구성됨","apiKeyPlaceholder":"API 키를 입력하세요...","saveApiKey":"API 키 저장","apiKey":{"title":"API 키","placeholder":"API 키 입력","save":"키 저장","remove":"키 제거","configured":"API 키 구성됨","notConfigured":"API 키 필요","saved":"API 키가 성공적으로 저장되었습니다","removed":"API 키가 제거되었습니다","saveFailed":"API 키 저장 실패","removeFailed":"API 키 제거 실패","enterKey":"API 키를 입력하세요"},"variables":"Variables","providerConnections":"프로바이더 연결","providerConnectionsDescription":"플러그인을 통해 모델 프로바이더를 연결, 구성 및 검사합니다.","providers":"프로바이더","searchProviders":"프로바이더 검색","noProvidersFound":"검색과 일치하는 프로바이더가 없습니다.","selectProvider":"프로바이더 선택","selectProviderDescription":"연결 및 모델 카탈로그를 검사할 프로바이더를 선택하세요.","apiKeyDescription":"{{name}}의 개인 API 키를 저장합니다.","showApiKey":"API 키 표시","hideApiKey":"API 키 숨기기","configure":"구성","providerSettings":"프로바이더 설정","status":"상태","defaultEndpoint":"기본 엔드포인트","modelCatalog":"모델 카탈로그","modelCatalogDescription":"이 프로바이더에 대해 검색 및 구성된 모델과 기능입니다.","refreshModels":"모델 새로고침","noModelsConfigured":"이 제공자에 대해 구성된 모델이 없습니다.","modelId":"모델 ID","capabilities":"기능","modelCatalogUpdated":"모델 카탈로그가 업데이트되었습니다: {{count}}개 모델.","modelCatalogUnchanged":"모델 카탈로그가 이미 최신 상태입니다.","modelCatalogNeedsApiKey":"이 제공자의 실시간 모델 목록을 불러오려면 유효한 API 키를 추가하세요.","modelCatalogUnavailable":"제공자의 모델 목록을 불러올 수 없습니다.","modelCatalogRefreshFailed":"모델 카탈로그를 새로고침하지 못했습니다.","capability":{"chat":"채팅","embedding":"임베딩","image":"이미지","speech":"음성","transcription":"전사"},"exportPlugin":"플러그인 내보내기","deletePlugin":"플러그인 삭제"},"generation":{"title":"생성 옵션","description":"AI가 응답을 생성하는 방식 구성","scopeLabel":"적용 대상","scopeAll":"모든 모델","scopeModel":"{{model}}만","scopeAllHint":"개별 설정이 없는 한 모든 모델이 사용하는 값입니다.","scopeModelHint":"이 모델에만 저장되며 전체 값보다 우선합니다.","coreParameters":"핵심 매개변수","temperature":"온도","temperatureDescription":"무작위성을 제어합니다. 낮은 값은 더 집중적이고, 높은 값은 더 창의적입니다.","topP":"Top P","topPDescription":"핵 샘플링을 통해 다양성을 제어합니다. 낮은 값은 가능성 높은 토큰에 집중합니다.","topK":"Top K","topKDescription":"토큰 선택을 상위 K개로 제한합니다. 0으로 설정하면 비활성화됩니다.","minP":"Min P","minPDescription":"토큰 선택을 위한 최소 확률 임계값입니다.","generationControl":"생성 제어","maxTokens":"최대 토큰","maxTokensDescription":"응답에서 생성할 최대 토큰 수입니다.","repeatPenalty":"반복 페널티","repeatPenaltyDescription":"반복된 토큰에 페널티를 부여합니다. 높은 값은 반복을 줄입니다.","contextLength":"컨텍스트 길이","contextLengthDescription":"대화의 최대 컨텍스트 창 크기입니다.","seed":"시드","optional":"선택사항","random":"무작위","seedDescription":"재현 가능한 출력을 위해 특정 시드를 설정합니다.","advancedOptions":"고급 옵션","presencePenalty":"존재 페널티","presencePenaltyDescription":"컨텍스트에 나타나는 토큰에 페널티를 부여합니다.","frequencyPenalty":"빈도 페널티","frequencyPenaltyDescription":"자주 사용되는 토큰에 페널티를 부여합니다.","stopSequences":"중지 시퀀스","commaSeparated":"쉼표로 구분","stopSequencesDescription":"발견 시 생성을 중지하는 사용자 정의 토큰입니다.","resetDefaults":"기본값으로 재설정","saveOptions":"옵션 저장","embeddingSettings":"임베딩 설정","enableEmbeddings":"문서 임베딩 활성화","advancedSettings":"고급 생성 설정","advancedSettingsDescription":"샘플링, 토큰 제한, 컨텍스트, 페널티 및 정지 시퀀스"},"documents":{"title":"문서 설정","embeddings":{"title":"임베딩","enable":"문서 임베딩 활성화","model":"임베딩 모델","modelDescription":"문서 임베딩에 사용할 모델 선택","chunkSize":"청크 크기","chunkSizeInTokens":"(토큰 단위)","chunkSizeDescription":"임베딩을 위한 텍스트 청크 크기","chunkOverlap":"청크 겹침","chunkOverlapInTokens":"(토큰 단위)","chunkOverlapDescription":"연속 청크 간의 겹침","similarityThreshold":"유사도 임계값","similarityDescription":"결과를 포함하기 위한 최소 유사도 점수","status":"임베딩 상태","statusLabel":"상태","available":"사용 가능","unavailable":"사용 불가","chunksWithEmbeddings":"임베딩이 있는 청크","coverage":"커버리지","regenerate":"임베딩 재생성","regenerating":"재생성 중..."},"collections":{"title":"지식 컬렉션","description":"문서를 컬렉션으로 묶어 어느 채팅에나 첨부하세요.","namePlaceholder":"컬렉션 이름","create":"만들기","none":"컬렉션 없음","deleteConfirm":"이 컬렉션을 삭제할까요? 안의 문서는 유지됩니다."}},"tts":{"title":"음성 합성","description":"메시지를 소리로 읽어주는 텍스트 음성 변환 설정 구성","loadingProviders":"TTS 제공자 로딩 중...","noProviders":"TTS 제공자 없음","noProvidersDescription":"음성 합성을 활성화하려면 TTS를 지원하는 플러그인을 구성하세요","enable":"TTS 활성화","enableDescription":"어시스턴트 메시지에 대한 음성 합성 허용","autoPlay":"응답 자동 재생","autoPlayDescription":"새 어시스턴트 메시지를 자동으로 소리로 읽기","streamSentences":"문장 단위 스트리밍","streamSentencesDescription":"전체 메시지를 기다리지 않고 문장 단위로 오디오를 재생합니다. 긴 메시지의 타임아웃을 방지하기 위해 로컬 TTS에 권장됩니다.","voiceConfiguration":"음성 구성","model":"TTS 모델","modelDescription":"음성 합성에 사용할 모델 선택","voice":"음성","selectVoice":"음성 선택","voiceDescription":"음성 합성에 사용할 음성 선택","speed":"속도","speedSlow":"0.5배","speedNormal":"1.0배","speedFast":"2.0배","availableProviders":"사용 가능한 제공자","models":"모델","test":"테스트","testing":"테스트 중...","stop":"중지"},"imageGen":{"title":"이미지 생성","description":"이미지 생성 설정 및 제공자 구성","loadingProviders":"이미지 생성 제공자 로딩 중...","noProviders":"이미지 생성 제공자 없음","noProvidersDescription":"이미지 생성을 지원하는 플러그인을 구성하세요","enable":"이미지 생성 활성화","enableDescription":"대화에서 AI 이미지 생성 허용","configuration":"구성","model":"모델","modelDescription":"이미지 생성에 사용할 모델 선택","size":"크기","sizeDescription":"생성된 이미지의 해상도","quality":"품질","qualityDescription":"생성된 이미지의 품질 수준","style":"스타일","styleDescription":"생성된 이미지의 스타일 프리셋","availableProviders":"사용 가능한 제공자","models":"모델"},"data":{"title":"데이터 관리","export":"데이터 내보내기","exportDescription":"환경설정, 세션, 문서를 포함한 모든 데이터를 다운로드합니다.","exportAll":"모든 데이터 내보내기","import":"데이터 가져오기","importDescription":"이전 내보내기에서 데이터를 가져옵니다.","importData":"데이터 가져오기","importing":"가져오는 중...","clearSessions":"세션 지우기","clearSessionsDescription":"모든 채팅 세션을 삭제합니다. 이 작업은 취소할 수 없습니다.","clearAll":"모두 지우기","clearing":"지우는 중...","importOptions":"가져오기 옵션","importOptionsDescription":"기존 데이터 처리 방법 선택","skipDuplicates":"중복 건너뛰기","overwrite":"기존 항목 덮어쓰기","importResults":"가져오기 결과","preferences":"환경설정","imported":"가져옴","failed":"실패","sessions":"세션","importedLabel":"가져옴","skipped":"건너뜀","documents":"문서","errors":"오류","archivedChats":{"title":"보관된 채팅","empty":"보관된 채팅이 없습니다","unarchive":"보관 해제"}},"about":{"title":"정보","versionLabel":"버전","ollama":{"title":"Ollama 상태","version":"버전","healthy":"정상","unhealthy":"비정상"},"stats":{"models":"모델","sessions":"세션"},"features":{"privacy":{"title":"프라이버시 우선","description":"데이터가 기기에 저장됩니다"},"openSource":{"title":"오픈 소스","description":"무료 오픈 소스 소프트웨어"},"localInference":{"title":"로컬 추론","description":"Ollama로 로컬에서 AI 모델 실행"}},"openSourceBy":"{{company}}의 오픈 소스","links":{"title":"링크","github":"GitHub","githubDescription":"소스 코드 보기 및 기여","website":"웹사이트","websiteDescription":"웹사이트 방문","ollama":"Ollama","ollamaDescription":"Ollama에 대해 자세히 알아보기","documentation":"문서","reportIssue":"문제 보고","reportIssueDescription":"버그 보고서 및 기능 요청","gitlab":"GitLab 미러","gitlabDescription":"자체 호스팅 GitLab 저장소","documentationDescription":"가이드, 튜토리얼 및 API 레퍼런스"},"version":"버전 {{version}}"},"groups":{"general":"일반","chat":"채팅","media":"음성 및 이미지","connections":"연결"},"search":{"title":"웹 검색","description":"자체 호스팅 SearXNG 인스턴스로 웹을 검색합니다. 활성화하면 채팅 입력창에 검색 토글이 표시되고 네트워크 접근이 있는 Work 작업도 검색할 수 있습니다.","enableLabel":"웹 검색 활성화","enableDescription":"채팅과 Work 작업에 웹 검색을 제공합니다. 검색은 구성된 인스턴스에 대해 서버 측에서 실행됩니다.","urlLabel":"SearXNG URL","urlDescription":"서버에서 접근 가능한 SearXNG 인스턴스의 기본 URL. 포함된 프라이빗 배포 스택은 http://searxng:8080 을 제공합니다.","maxResultsLabel":"검색당 결과 수","maxResultsDescription":"답변이나 도구 호출에 사용할 결과 수, 1-10.","maxResultsInvalid":"검색당 결과 수는 1에서 10 사이여야 합니다.","safeSearchLabel":"세이프서치","safeSearchDescription":"엔진에 노골적인 결과 필터링을 요청합니다.","test":"연결 테스트","testing":"테스트 중…","testOk":"검색 작동 — {{results}}개의 결과 반환","testFailed":"검색 테스트 실패","save":"저장","saved":"검색 설정이 저장되었습니다","saveFailed":"검색 설정을 저장할 수 없습니다"}}`),models:{title:`모델`,subtitle:`Ollama 모델 풀, 관리 및 모니터링`,installed:`설치된 모델`,available:`사용 가능한 모델`,pull:`모델 풀`,pulling:`풀 중...`,delete:`모델 삭제`,deleting:`삭제 중...`,size:`크기`,modified:`수정됨`,family:`계열`,parameters:`매개변수`,quantization:`양자화`,noModels:`설치된 모델 없음`,pullFirst:`시작하려면 모델을 풀하세요`,noModelsFound:`모델을 찾을 수 없습니다`},personas:{title:`페르소나`,create:`페르소나 만들기`,edit:`페르소나 편집`,delete:`페르소나 삭제`,name:`이름`,description:`설명`,systemPrompt:`시스템 프롬프트`,model:`모델`,avatar:`아바타`,background:`배경`,noPersonas:`만들어진 페르소나 없음`,createFirst:`채팅 경험을 사용자 정의하려면 첫 번째 페르소나를 만드세요`},gallery:{title:`갤러리`,subtitle:`AI 생성 이미지 갤러리`,imageCount:`이미지 {{count}}개`,generate:`이미지 생성`,generateDescription:`AI로 이미지 만들기`,generating:`생성 중...`,prompt:`프롬프트`,promptPlaceholder:`생성하려는 이미지를 설명하세요...`,noImages:`아직 생성된 이미지 없음`,download:`다운로드`,delete:`삭제`,regenerate:`재생성`,model:`모델`,size:`크기`,quality:`품질`,created:`생성됨`},errors:{generic:`오류가 발생했습니다`,network:`네트워크 오류. 연결을 확인하세요.`,unauthorized:`이 작업을 수행할 권한이 없습니다.`,notFound:`요청한 리소스를 찾을 수 없습니다.`,serverError:`서버 오류. 나중에 다시 시도하세요.`,validation:`입력을 확인하고 다시 시도하세요.`},keyboard:{title:`키보드 단축키`,toggleSidebar:`사이드바 전환`,openSettings:`설정 열기`,toggleDarkMode:`다크 모드 전환`,showShortcuts:`키보드 단축키 표시`,closeModals:`모달 닫기`,groups:{navigation:`탐색`,general:`일반`,chat:`채팅`,workspace:`작업 공간`},actions:{sendMessage:`메시지 보내기`,newLine:`메시지에 새 줄`,saveEdit:`편집한 메시지 저장`,cancelEdit:`편집 취소`,saveFile:`파일 저장`,formatCode:`코드 서식 정리`},description:`Libre WebUI에서 사용할 수 있는 모든 키보드 단축키입니다.`,newChat:`새 채팅`,newWork:`새 Work 세션`,openPalette:`명령 팔레트 열기`},modelManager:{title:`모델`,loading:`모델 로딩 중...`,systemStatus:{online:`Ollama 온라인`,offline:`Ollama 오프라인`,models:`모델`,models_plural:`모델`,running:`실행 중`,vram:`VRAM`},sections:{pull:`새 모델 풀`,library:`라이브러리 찾아보기`,running:`실행 중인 모델`,local:`로컬 모델`,advanced:`고급 작업`,huggingface:`HuggingFace Hub`},pull:{placeholder:`모델 이름 입력 (예: llama3.2:3b, deepseek-r1:14b)`,button:`풀`,cancel:`취소`,popular:`인기 모델:`,browseAll:`ollama.com에서 모든 모델 찾아보기`,success:`모델 {{name}}이(가) 성공적으로 풀되었습니다`,cancelled:`모델 풀이 취소되었습니다`,failed:`모델 풀 실패`,enterName:`모델 이름을 입력하세요`,restricted:`이 인스턴스에서 모델 설치는 관리자만 가능합니다.`},progress:{starting:`초기화 중...`,pulling:`모델 다운로드 중...`,pullingLayer:`다운로드 중`,verifying:`무결성 확인 중...`,verifyingDigest:`sha256 다이제스트 확인 중`,writing:`매니페스트 작성 중...`,cleaning:`정리 중...`},library:{available:`사용 가능`,search:`모델 검색...`,noResults:`기준에 맞는 모델을 찾을 수 없습니다`,installed:`설치됨`,more:`+{{count}}개 더`,refresh:`라이브러리 새로고침`},local:{noModels:`아직 설치된 모델 없음`,pullToStart:`시작하려면 위에서 모델을 풀하세요`,installed:`설치됨`,running:`실행 중`,info:`정보`,copy:`복사`,delete:`삭제`,deleteConfirm:`모델 "{{name}}"을(를) 삭제하시겠습니까?`,deleteSuccess:`모델 {{name}}이(가) 성공적으로 삭제되었습니다`,deleteFailed:`모델 삭제 실패`},advanced:{createModel:`모델 만들기`,fromModelfile:`Modelfile에서`,copyModel:`모델 복사`,duplicateExisting:`기존 항목 복제`,testEmbeddings:`임베딩 테스트`,generateVectors:`벡터 생성`,healthCheck:`상태 점검`,testConnection:`연결 테스트`,healthy:`Ollama가 정상입니다!`},modals:{details:{title:`모델 세부정보`,info:`모델 정보`,family:`계열`,parameters:`매개변수`,quantization:`양자화`,format:`형식`,systemPrompt:`시스템 프롬프트`,template:`템플릿`,license:`라이선스`,modelfile:`Modelfile`,noDetails:`사용 가능한 세부정보 없음`},copy:{title:`모델 복사`,source:`소스 모델`,selectModel:`모델 선택...`,newName:`새 모델 이름`,placeholder:`예: my-custom-model`,copying:`복사 중...`,button:`모델 복사`,success:`모델이 {{name}}(으)로 복사되었습니다`,failed:`모델 복사 실패`,enterBoth:`소스와 대상 이름을 모두 입력하세요`},create:{title:`사용자 정의 모델 만들기`,name:`모델 이름`,namePlaceholder:`예: my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
2
+ SYSTEM You are a helpful assistant.`,see:`참조:`,docs:`Modelfile 문서`,docsLink:`구문 참조용`,creating:`만드는 중...`,button:`모델 만들기`,success:`모델 {{name}}이(가) 성공적으로 만들어졌습니다`,failed:`모델 만들기 실패`,enterBoth:`모델 이름과 Modelfile 내용을 입력하세요`},embeddings:{title:`임베딩 테스트`,model:`임베딩 모델`,selectModel:`모델 선택...`,recommended:`권장: nomic-embed-text, mxbai-embed-large`,input:`입력 텍스트`,placeholder:`임베딩을 생성할 텍스트를 입력하세요...`,generating:`생성 중...`,button:`임베딩 생성`,result:`결과 ({{count}}차원)`,success:`{{count}}차원 임베딩 벡터가 생성되었습니다`,failed:`임베딩 생성 실패`,enterBoth:`모델을 선택하고 텍스트를 입력하세요`}},huggingface:{browseAll:`HuggingFace에서 모두 보기`,checkingGguf:`GGUF 파일 확인 중...`,noGgufAvailable:`Ollama로 직접 풀할 수 있는 GGUF 파일이 없습니다`,ggufFilesCount:`GGUF 파일 ({{count}}) - Ollama로 직접 풀`,noModelsFound:`모델을 찾을 수 없습니다`,noResults:`모델을 찾을 수 없습니다. 검색어나 필터를 조정해 보세요.`,browseAllLink:`모두 보기`,search:`HuggingFace 모델 검색...`,by:`작성자`,gated:`제한된 액세스`,viewOnHF:`HuggingFace에서 보기`,sortDownloads:`다운로드`,sortLikes:`좋아요`,sortRecent:`최근`,taskTextGeneration:`텍스트 생성`,taskTextToSpeech:`텍스트 음성 변환`,taskTextToImage:`텍스트 이미지 변환`,taskSpeechRecognition:`음성 인식`,tasks:{textGen:`텍스트 생성`,tts:`텍스트 음성 변환`,image:`텍스트 이미지 변환`,stt:`음성 인식`},sort:{downloads:`다운로드 순`,likes:`인기 순`,recent:`최근 업데이트`}}},personaManager:{title:`페르소나`,subtitle:`사용자 정의 성격, 메모리 및 행동을 가진 AI 페르소나 생성 및 관리`,loading:`페르소나 로딩 중...`,createButton:`페르소나 만들기`,importExport:`가져오기/내보내기`,stats:{title:`내 페르소나`,count:`페르소나 {{count}}개 생성됨`,count_plural:`페르소나 {{count}}개 생성됨`},empty:{title:`아직 페르소나 없음`,description:`개인화된 AI 상호작용을 시작하려면 첫 번째 페르소나를 만드세요`,button:`첫 번째 페르소나 만들기`},deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,deleteSuccess:`페르소나 "{{name}}"이(가) 성공적으로 삭제되었습니다`,downloadSuccess:`페르소나 "{{name}}"이(가) 성공적으로 다운로드되었습니다`,failed:`페르소나 {{action}} 실패`},personaForm:{title:{create:`새 페르소나 만들기`,edit:`페르소나 편집`},subtitle:{create:`사용자 정의 성격, 메모리 시스템 및 적응형 학습 기능을 가진 새 AI 페르소나 만들기`,edit:`고급 메모리, 적응형 학습 및 지능형 매개변수로 AI 페르소나 사용자 정의`},loading:`양식 로딩 중...`,saved:`저장됨`,tabs:{basic:`기본`,parameters:`매개변수`,memory:`메모리 및 학습`,advanced:`고급`},basic:{name:`이름`,namePlaceholder:`페르소나 이름 입력`,model:`모델`,selectModel:`모델 선택`,description:`설명`,descriptionPlaceholder:`페르소나를 설명하세요...`,systemPrompt:`시스템 프롬프트`,systemPromptPlaceholder:`페르소나 행동을 정의하는 시스템 프롬프트를 입력하세요...`,systemPromptHint:`시스템 프롬프트는 페르소나가 어떻게 행동하고 응답할지를 정의합니다.`},parameters:{temperature:`온도`,temperatureHint:`창의성 대 일관성 제어`,topP:`Top-P`,topPHint:`응답 다양성 제어`,topK:`Top-K`,topKHint:`어휘를 상위 k개 토큰으로 제한`,contextWindow:`컨텍스트 창`,contextWindowHint:`최대 대화 기록 길이`,maxTokens:`최대 토큰`,maxTokensHint:`최대 응답 길이`,repeatPenalty:`반복 페널티`,repeatPenaltyHint:`반복적인 응답 감소`},memory:{title:`메모리 시스템`,subtitle:`페르소나가 시간이 지남에 따라 대화를 기억합니다`,enableHint:`메모리 시스템을 활성화하여 페르소나가 대화를 기억하고 시간이 지남에 따라 컨텍스트를 구축하게 하세요.`,loading:`메모리 상태 로딩 중...`,noData:`아직 메모리 데이터 없음`,memories:`메모리`,mbUsed:`MB 사용됨`,lastBackup:`마지막 백업`,never:`없음`,maxMemories:`최대 메모리`,maxMemoriesHint:`이 페르소나가 저장할 수 있는 메모리 수`,retention:`메모리 보존`,retentionHint:`정리 전 메모리 보존 기간(일)`,autoCleanup:`오래된 메모리 자동 정리`,wipeAll:`모든 메모리 지우기`,wipeCannot:`이 작업은 취소할 수 없습니다`,wipeButton:`지우기`,wiping:`지우는 중...`,wipeConfirm:`모든 메모리를 지우시겠습니까? 이 작업은 취소할 수 없습니다.`,wipeSuccess:`메모리 {{count}}개가 지워졌습니다`},learning:{title:`적응형 학습`,subtitle:`페르소나가 상호작용에 따라 진화합니다`,enableHint:`적응형 학습을 활성화하여 페르소나가 상호작용에 따라 진화하고 응답을 개인화하게 하세요.`,speed:`학습 속도`,slow:`느림`,slowDesc:`점진적 변화`,balanced:`균형`,balancedDesc:`보통 속도`,fast:`빠름`,fastDesc:`빠른 적응`,autoAdapt:`사용자 선호도에 자동 적응`,whatLearns:`페르소나가 학습하는 것:`,conversationTone:`대화 톤`,responseStyle:`응답 스타일`,userPreferences:`사용자 선호도`,topicInterests:`주제 관심사`},advanced:{embeddingModel:`임베딩 모델`,embeddingHint:`메모리 인코딩 및 의미 검색에 사용할 모델을 선택하세요. 임베딩 모델이 먼저 표시되고 다른 사용 가능한 모델이 뒤따릅니다.`,noModels:`모델을 찾을 수 없음`,embeddingModels:`임베딩 모델`,otherModels:`다른 모델`,installHint:`임베딩 모델 설치:`,recommended:`권장: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed`,aboutTitle:`고급 설정 정보`,aboutDescription:`임베딩 모델은 메모리 시스템에서 의미를 이해하고 대화 중 관련 메모리를 찾는 데 사용됩니다. 사용 사례와 가용 리소스에 맞는 모델을 선택하세요.`},actions:{cancel:`취소`,save:`저장`,saving:`저장 중...`,saveClose:`저장 후 닫기`,create:`만들기`},success:{created:`페르소나가 생성되었습니다`,updated:`페르소나가 업데이트되었습니다`},error:{saveFailed:`저장 실패`}},personaCard:{enhanced:`향상됨`,systemPrompt:`시스템 프롬프트`,memories:`메모리`,use:`사용`,editTooltip:`페르소나 편집`,downloadTooltip:`페르소나 다운로드`,backup:`백업`,exportDNA:`DNA 내보내기`,wipeMemories:`메모리 지우기`,wipeConfirm:`이 페르소나의 모든 메모리를 지우시겠습니까? 이 작업은 취소할 수 없습니다.`,wipeSuccess:`메모리 {{count}}개가 지워졌습니다`,backupSuccess:`페르소나 백업이 성공적으로 다운로드되었습니다`,dnaSuccess:`페르소나 DNA가 성공적으로 내보내졌습니다`,failed:`{{action}} 실패`},userManager:{title:`사용자 관리`,subtitle:`사용자 계정 및 권한 관리`,pageDescription:`Libre WebUI 인스턴스의 사용자 계정, 권한 및 액세스 제어를 관리합니다.`,loading:`사용자 로딩 중...`,createUser:`사용자 만들기`,search:`사용자 검색...`,noUsers:`사용자 없음`,noUsersMatching:`검색과 일치하는 사용자 없음`,columns:{user:`사용자`,email:`이메일`,role:`역할`,created:`생성됨`,actions:`작업`},roles:{admin:`관리자`,user:`사용자`},noEmail:`이메일 없음`,deleteConfirm:`사용자 "{{name}}"을(를) 삭제하시겠습니까?`,deleteSuccess:`사용자가 성공적으로 삭제되었습니다`,deleteFailed:`사용자 삭제 실패`,cannotDeleteSelf:`자신의 계정은 삭제할 수 없습니다`,form:{title:{create:`사용자 만들기`,edit:`사용자 편집`},username:`사용자 이름`,usernamePlaceholder:`사용자 이름 입력`,email:`이메일`,emailPlaceholder:`이메일 입력 (선택사항)`,password:`비밀번호`,passwordPlaceholder:`비밀번호 입력`,passwordHint:`현재 비밀번호를 유지하려면 비워두세요`,role:`역할`,creating:`만드는 중...`,updating:`업데이트 중...`,createButton:`사용자 만들기`,updateButton:`사용자 업데이트`,createSuccess:`사용자가 성공적으로 만들어졌습니다`,updateSuccess:`사용자가 성공적으로 업데이트되었습니다`,createFailed:`사용자 만들기 실패`,updateFailed:`사용자 업데이트 실패`},approval:{title:`대기 중인 승인`,description:`이 인스턴스에 들어오기 전에 새 등록을 검토하세요.`,registered:`등록됨`,activate:`계정 활성화`,reject:`등록 거부`,approved:`{{name}}님이 이제 로그인할 수 있습니다.`,failed:`계정을 승인할 수 없습니다.`,notification:`{{count}}건의 등록이 승인을 기다리고 있습니다.`,notificationBadge:`{{count}}건의 대기 중인 사용자 승인`},workAccess:{title:`Work 접근`,description:`모든 활성 사용자가 격리된 샌드박스에서 Work 작업을 만들고 실행할 수 있도록 허용합니다. 관리자는 항상 접근할 수 있으며, 호스트 폴더 워크스페이스는 관리자 전용으로 유지됩니다.`,saved:`Work 접근이 업데이트되었습니다`,saveFailed:`Work 접근을 업데이트할 수 없습니다`},workPolicies:{title:`Work 정책`,description:`작업을 만들 때 선택할 수 있는 이름 있는 런타임 프리셋(이미지, 제한, 유휴 중지)입니다. 빈 필드는 전역 기본값을 상속합니다.`,add:`정책 추가`,name:`이름`,image:`이미지`,memory:`메모리`,cpu:`CPU`,pids:`PID 제한`,workspaceSize:`워크스페이스 크기`,idleMinutes:`유휴 중지(분)`,networkDefault:`네트워크 기본값`,networkInherit:`기본값 상속`,networkOn:`사용`,networkOff:`사용 안 함`,save:`저장`,cancel:`취소`,edit:`정책 편집`,delete:`정책 삭제`,deleteConfirm:`이 정책을 삭제할까요? 이 정책을 사용하는 작업은 전역 기본값으로 돌아갑니다.`,empty:`아직 정책이 없습니다. 작업은 전역 런타임 기본값을 사용합니다.`,saved:`Work 정책이 저장되었습니다`,deleted:`Work 정책이 삭제되었습니다`,failed:`Work 정책을 저장할 수 없습니다`,invalidNumber:`PID 제한과 유휴 중지는 숫자여야 합니다.`},modelAccess:{title:`모델 다운로드`,description:`모든 활성 사용자가 Ollama와 Hugging Face 브라우저에서 모델을 가져올 수 있도록 허용합니다. 관리자는 항상 모델을 다운로드할 수 있습니다.`,saved:`모델 다운로드 접근이 업데이트되었습니다`,saveFailed:`모델 다운로드 접근을 업데이트할 수 없습니다`},webSearchAccess:{title:`웹 검색`,description:`모든 활성 사용자가 채팅과 Work 작업에서 웹 검색을 사용할 수 있도록 허용합니다. 관리자는 항상 사용할 수 있습니다. 엔진은 설정 > 검색에서 구성합니다.`,saved:`웹 검색 접근이 업데이트되었습니다`,saveFailed:`웹 검색 접근을 업데이트할 수 없습니다`},agentAccess:{title:`에이전트`,description:`관리자에게 에이전트 섹션(Libre Claw)을 제공합니다. 에이전트 CLI는 Work 샌드박스 밖에서 서버 사용자로 호스트에서 실행됩니다.`,saved:`에이전트 접근이 업데이트되었습니다`,saveFailed:`에이전트 접근을 업데이트할 수 없습니다`,lockedByEnv:`AGENT_CLI_MODELS_ENABLED 환경 변수로 고정되어 있습니다.`}},chatHistory:{label:`대화 기록`,jumpToTurn:`{{total}}개 중 {{index}}번째 대화로 이동`},chatMessage:{you:`나`,assistant:`어시스턴트`,system:`시스템`,copy:`복사`,copyMessage:`메시지 복사`,copied:`복사됨!`,regenerate:`재생성`,regenerateResponse:`응답 재생성`,edit:`편집`,editSystemMessage:`시스템 메시지 편집`,saveChanges:`변경사항 저장`,cancelEditing:`편집 취소`,saveAndSubmit:`저장 후 전송`,goodResponse:`좋은 응답`,badResponse:`나쁜 응답`,delete:`삭제`,deleteConfirm:`이 메시지를 삭제하시겠습니까?`,branch:`분기`,speaking:`말하는 중...`,speakMessage:`메시지 읽기`,stopSpeaking:`읽기 중지`,showMore:`더 보기`,showLess:`접기`,thinking:`생각 중`,thoughtFor:`{{duration}} 동안 생각함`,hiddenLines:`숨겨진 줄: {{count}}`,systemMessagePlaceholder:`시스템 메시지를 입력하세요...`,fullSizeImage:`전체 크기 이미지`,startConversation:`대화 시작하기`,startConversationDescription:`AI 어시스턴트와 채팅을 시작하려면 메시지를 보내세요. 질문하고, 코드 도움을 받거나, 자연스러운 대화를 나누세요.`,scrollToBottom:`맨 아래로 스크롤`,newMessages:`새 메시지`},imageGallery:{title:`이미지 갤러리`,noImages:`아직 이미지 없음`,noImagesHint:`오른쪽 패널을 사용하여 첫 번째 이미지를 생성하세요`,delete:`삭제`,download:`다운로드`,deleteConfirm:`이 이미지를 삭제하시겠습니까?`,deleteSuccess:`이미지가 삭제되었습니다`,deleteFailed:`이미지 삭제 실패`,downloadFailed:`이미지 다운로드 실패`,loadMore:`더 보기 ({{current}}/{{total}})`,loadFailed:`갤러리 로드 실패`},imageGeneration:{title:`이미지 생성`,prompt:`프롬프트`,promptPlaceholder:`만들고 싶은 이미지를 설명하세요...`,model:`모델`,selectModel:`모델 선택`,noModels:`사용 가능한 이미지 생성 모델 없음`,configurePlugin:`이미지 생성을 지원하는 플러그인을 구성하세요`,size:`크기`,quality:`품질`,style:`스타일`,generate:`생성`,generating:`생성 중...`,success:`이미지가 성공적으로 생성되었습니다`,failed:`이미지 생성 실패`,enterPrompt:`프롬프트를 입력하세요`,promptTooLong:`프롬프트가 최대 {{max}}자를 초과합니다`},errorBoundary:{title:`문제가 발생했습니다`,description:`예기치 않은 오류가 발생했습니다. 페이지를 새로고침해 보세요.`,tryAgain:`페이지 새로고침`,goHome:`홈으로 가기`,errorDetails:`오류 세부정보 (개발용)`},documents:{title:`문서`,upload:`문서 업로드`,uploading:`업로드 중...`,noDocuments:`업로드된 문서 없음`,uploadHint:`대화에서 사용할 문서를 업로드하세요`,delete:`삭제`,deleteConfirm:`이 문서를 삭제하시겠습니까?`,deleteSuccess:`문서가 삭제되었습니다`,deleteFailed:`문서 삭제 실패`,uploadSuccess:`문서가 성공적으로 업로드되었습니다`,uploadFailed:`문서 업로드 실패`,types:`지원: PDF, TXT, MD, DOCX`,unsupportedFileType:`PDF와 TXT 파일만 지원됩니다`,fileSizeTooLarge:`파일 크기는 10MB 미만이어야 합니다`,uploadSuccessWithName:`문서 "{{name}}"이(가) 성공적으로 업로드되었습니다`,removeSuccess:`문서가 성공적으로 제거되었습니다`,removeFailed:`문서 제거 실패`,removeError:`문서를 제거하는 중 오류가 발생했습니다`,clickToUpload:`클릭하여 업로드`,orDragAndDrop:`또는 드래그 앤 드롭`,fileTypesAndSize:`PDF 또는 TXT 파일 최대 10MB`,uploadedDocuments:`업로드된 문서`,removeDocument:`문서 제거`},ttsButton:{speak:`읽기`,stop:`중지`,speaking:`읽는 중...`,generateFailed:`음성 생성 실패`,playbackFailed:`오디오 재생 실패`,stopSpeaking:`읽기 중지`,generatingSpeech:`음성 생성 중...`,readAloud:`소리로 읽기`},artifacts:{title:`아티팩트`,code:`코드`,preview:`미리보기`,copy:`코드 복사`,copied:`복사됨!`,download:`다운로드`,expand:`확장`,collapse:`접기`,openInNewTab:`새 탭에서 열기`,invalidSvg:`잘못된 SVG 콘텐츠`,invalidJson:`잘못된 JSON 콘텐츠`,previewMode:`미리보기 모드`,codeMode:`코드 모드`,copyContent:`콘텐츠 복사`,openInPanel:`패널에서 열기`,openInNewWindow:`새 창에서 열기`,created:`생성됨`,closePanelEsc:`패널 닫기 (Esc)`,copyButton:`복사`,open:`열기`,dragEdgeToResize:`가장자리를 끌어 크기 조절`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`버전 {{current}} / {{total}}`,previousVersion:`이전 버전`,nextVersion:`다음 버전`},personaImportExport:{title:`페르소나 가져오기 및 내보내기`,description:`페르소나를 공유하기 위해 내보내거나 다른 사람의 페르소나를 가져오세요`,exportPersonas:`페르소나 내보내기`,importPersonas:`페르소나 가져오기`,noPersonasToExport:`내보낼 페르소나 없음`,personasAvailable:`페르소나 {{count}}개 사용 가능`,personasAvailable_plural:`페르소나 {{count}}개 사용 가능`,exportAll:`모두 내보내기`,uploadJsonFile:`JSON 파일 업로드`,pasteJsonLabel:`JSON 데이터 붙여넣기`,pasteJsonPlaceholder:`여기에 페르소나 JSON 데이터를 붙여넣으세요...`,importing:`가져오는 중...`,importButton:`페르소나 가져오기`,expectedFormat:`예상 JSON 형식:`,exportSuccess:`페르소나 "{{name}}"이(가) 성공적으로 내보내졌습니다`,exportFailed:`페르소나 내보내기 실패`,exportAllSuccess:`모든 {{count}}개 페르소나가 성공적으로 내보내졌습니다`,exportAllFailed:`페르소나 내보내기 실패`,pasteJsonData:`페르소나 JSON 데이터를 붙여넣으세요`,importMultipleSuccess:`페르소나 {{count}}개가 성공적으로 가져왔습니다`,importMultipleFailed:`페르소나 {{count}}개 가져오기 실패`,importNoneFailed:`페르소나를 가져오지 못했습니다`,importSuccess:`페르소나가 성공적으로 가져왔습니다`,importFailed:`페르소나 가져오기 실패`},generationStats:{details:`세부 정보`,promptTokens:`프롬프트 토큰:`,generatedTokens:`생성된 토큰:`,totalTokens:`총 토큰:`,speed:`속도:`,promptEval:`프롬프트 평가:`,generation:`생성:`,modelLoad:`모델 로드:`,totalTime:`총 시간:`,generatedAt:`생성 시각:`},userMenu:{loggedOut:`로그아웃되었습니다`,pictureUpdated:`프로필 사진이 업데이트되었습니다`,failedUpdateAvatar:`아바타 업데이트 실패`,failedUpdatePicture:`프로필 사진 업데이트 실패`,noEmail:`이메일 없음`,changePicture:`사진 변경`,settings:`설정`,userManagement:`사용자 관리`,signOut:`로그아웃`,changeProfilePicture:`프로필 사진 변경`},pluginManager:{title:`플러그인 관리자`,upload:`업로드`,addJson:`JSON 추가`,browseHF:`HF Hub 찾아보기`,confirmDelete:`이 플러그인을 삭제하시겠습니까?`,uploading:`플러그인 업로드 중...`,pasteJson:`플러그인 JSON을 여기에 붙여넣기...`,installPlugin:`플러그인 설치`,loading:`플러그인 로딩 중...`,noPlugins:`설치된 플러그인 없음`,noPluginsDescription:`시작하려면 플러그인 파일을 업로드하거나 JSON에서 추가하세요.`,active:`활성`,id:`ID`,endpoint:`엔드포인트`,activate:`활성화`,deactivate:`비활성화`,activePlugin:`활성 플러그인`,activePluginDescription:`모든 채팅 요청이 이 플러그인을 통해 라우팅됩니다`,variables:{title:`변수`,save:`저장`,saving:`저장 중...`,saved:`변수가 저장되었습니다`,saveFailed:`변수 저장 실패`,resetDefaults:`기본값으로 재설정`,reset:`변수가 재설정되었습니다`,sensitiveSet:`값이 설정됨 (변경하려면 새 값 입력)`,resetFailed:`변수 초기화 실패`,showValue:`{{label}} 값 표시`,hideValue:`{{label}} 값 숨기기`,connection:`연결`,advanced:`고급 매개변수`,inherited:`제공자 기본값 사용`,inheritedValue:`제공자 기본값 사용 ({{value}})`,enabled:`활성화됨`,disabled:`비활성화됨`,required:`값이 필요합니다`,fullApiEndpoint:`전체 API 엔드포인트 URL`,endpointHelp:`제공자 기본 URL이 아닌 작업 경로(예: /v1/chat/completions)를 포함한 전체 요청 URL을 입력하세요.`,invalidUrl:`유효한 전체 API 엔드포인트 URL을 입력하세요. 예: https://provider.example/v1/chat/completions`,insecureUrl:`API 엔드포인트는 HTTP 또는 HTTPS를 사용해야 합니다.`,httpWarning:`HTTP는 자격 증명이나 트래픽을 암호화하지 않습니다. 신뢰할 수 있는 네트워크에서만 사용하세요.`,invalidBaseUrl:`기본 URL에는 쿼리 문자열이나 프래그먼트가 포함될 수 없습니다.`,invalidApiPath:`/로 시작해야 하며 URL, 쿼리, 프래그먼트 또는 .. 세그먼트를 포함할 수 없습니다.`,tooLong:`값이 너무 깁니다`}},huggingface:{title:`HuggingFace 모델 브라우저`,subtitle:`Hub에서 모델을 찾아 선택하세요`,searchPlaceholder:`모델 검색...`,filters:`필터`,task:`태스크`,sortBy:`정렬`,noModels:`모델을 찾을 수 없습니다`,adjustSearch:`검색어나 필터를 조정해보세요`,gated:`제한됨`,selected:`선택됨`,select:`선택`,refresh:`새로고침`,modelsFound:`개 모델 발견`},demoMode:{title:`데모 모드`,github:`GitHub`},personaBackground:{label:`배경 이미지`,uploadBackgroundImage:`배경 이미지 업로드`,dragAndDrop:`이미지를 끌어다 놓거나 클릭하여 찾아보기`,chooseImage:`이미지 선택`,uploading:`업로드 중...`,enterImageUrl:`또는 이미지 URL 입력`,supportedFormats:`지원 형식: JPG, PNG, GIF, WebP (최대 5MB). 넓은 가로 이미지가 가장 잘 작동합니다.`,customBackground:`사용자 정의 배경 이미지`,clickToChange:`클릭하여 변경 또는 제거`,removed:`배경 제거됨`,uploaded:`배경이 성공적으로 업로드되었습니다`,invalidFile:`유효한 이미지 파일을 선택하세요`,fileTooLarge:`배경 이미지 크기는 5MB 미만이어야 합니다`,readFailed:`이미지 파일을 읽지 못했습니다`,uploadFailed:`배경 이미지를 업로드하지 못했습니다`},modelSelector:{searchInstalled:`설치된 모델 검색...`,searchOllama:`Ollama 라이브러리 검색...`,searchHuggingFace:`HuggingFace 검색...`,selectModel:`모델 선택`,personas:`페르소나`,ollamaModels:`Ollama 모델`,pluginModels:`플러그인 모델`,actions:`작업`,installed:`설치됨`,use:`사용`,pull:`다운로드`,pullRestricted:`이 인스턴스에서 모델 설치는 관리자만 가능합니다.`,adminOnlyPull:`관리자만`,legacyProvider:`프로바이더 미기록`,providerNotRecorded:`프로바이더 미기록`,providerUnavailable:`프로바이더 사용 불가`,reselectProvider:`이 모델을 고정하려면 프로바이더를 다시 선택하세요`,unavailable:`사용 불가`,unavailableSelections:`사용할 수 없는 선택`,agentModels:`에이전트`},libreClaw:{title:`에이전트`,subtitle:`로컬 에이전트 실행, 승인, 일정, 메모리, 도구 및 사용량입니다.`,dashboard:`대시보드`,connection:{disconnectedTitle:`Libre Claw 데몬이 연결되지 않았습니다`,disconnectedDescription:`<command>libre-claw start</command>로 로컬에서 시작하거나 백엔드 환경에서 <env>LIBRE_CLAW_BASE_URL</env>을 설정하세요.`},status:{connected:`연결됨`,disconnected:`연결이 끊김`,activeRuns:`{{count}} 활성`,activeRuns_plural:`{{count}} 활성`},states:{queued:`대기 중`,running:`실행 중`,blocked:`차단됨`,done:`완료`,failed:`실패`,cancelled:`취소됨`},startRun:{title:`에이전트 실행 시작`,placeholder:`저장소 검사, 버그 수정, 검토 실행, 보고서 예약 등을 Libre Claw에 요청하세요.`,chatRun:`채팅 실행`,goalMode:`목표 모드`,providerOverride:`공급자 재정의`,modelOverride:`모델 재정의`,run:`실행`},modelRoute:{title:`모델 루트`,providerPlaceholder:`공급자`,modelPlaceholder:`모델`,persistGlobal:`Libre Claw 전역 구성 유지`,saveModel:`모델 저장`,theme:`Libre Claw 테마`,saveTheme:`테마 저장`},runs:{title:`실행`,empty:`아직 Libre Claw 실행이 없습니다.`},timeline:{title:`실행 타임라인`,empty:`이벤트를 검사하려면 실행을 선택하세요.`,streaming:`스트리밍 중...`,assistantResponse:`어시스턴트 응답`,resultOk:`알았어`,resultError:`오류`,labels:{userMessage:`사용자 메시지`,toolCall:`도구 호출`,toolResult:`도구 결과`,approvalRequest:`승인 요청`,approvalResponse:`승인 응답`,runStarted:`실행 시작됨`,runFinished:`실행 완료됨`,usage:`사용법`,error:`오류`}},approvals:{needed:`승인 필요`,allowOnce:`한 번만 허용`,alwaysAllowTool:`항상 도구 허용`,deny:`거부`,toolApprovalRequested:`도구 승인이 요청되었습니다.`},automations:{title:`자동화`,namePlaceholder:`이름`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`자동화 프롬프트`,create:`만들기`,empty:`예정된 Libre Claw 자동화가 없습니다.`,runNow:`지금 실행`,pause:`일시중지`,resume:`재개`,routes:{report:`신고`,telegram:`Telegram`},status:{active:`활성`,paused:`일시중지됨`}},usageFallback:{title:`사용법 및 대체`,usage:`사용법`,fallbackRoute:`대체 경로`,noUsage:`아직 이용기록이 없습니다.`},metrics:{provider:`공급자`,model:`모델`,input:`입력`,output:`출력`,cached:`캐시됨`,reasoning:`추론`,cost:`비용`,tool:`도구`,resolution:`해상도`,state:`상태`,stopReason:`중지 이유`,tokens:`{{formatted}} 토큰`,tokens_plural:`{{formatted}} 토큰`},fallbacks:{tool:`도구`,unknown:`알 수 없음`,resolved:`해결됨`,unknownError:`알 수 없는 오류`},toasts:{loadStatusFailed:`Libre Claw 상태를 로드할 수 없습니다.`,enterTask:`Libre Claw에 대한 작업을 입력하세요.`,runStarted:`Libre Claw 실행이 시작되었습니다`,startRunFailed:`Libre Claw 실행을 시작할 수 없습니다`,runCancelled:`실행이 취소되었습니다`,cancelRunFailed:`실행을 취소할 수 없습니다`,approved:`승인됨`,denied:`거부됨`,resolvePermissionFailed:`권한을 확인할 수 없습니다.`,providerModelRequired:`제공업체 및 모델이 필요합니다.`,modelUpdated:`Libre Claw 모델이 업데이트되었습니다`,updateModelFailed:`모델을 업데이트할 수 없습니다.`,themeUpdated:`Libre Claw 테마가 업데이트되었습니다`,updateThemeFailed:`테마를 업데이트할 수 없습니다.`,automationRequired:`자동화 이름, 일정, 프롬프트가 필요합니다.`,automationCreated:`자동화가 생성되었습니다.`,createAutomationFailed:`자동화를 생성할 수 없습니다.`,automationUpdated:`자동화 업데이트됨`,updateAutomationFailed:`자동화를 업데이트할 수 없습니다.`}},work:{title:`작업`,subtitle:`격리된 모델 워크스페이스`,tasks:{title:`작업 태스크`,subtitle:`영구 로컬 워크스페이스`,new:`새 태스크`,emptyTitle:`아직 작업 태스크가 없습니다`,empty:`첫 메시지를 보내면 작업 태스크가 여기에 표시됩니다.`,untitled:`제목 없는 태스크`,actions:`태스크 작업`,delete:`태스크 삭제`,deleteNamed:`{{title}} 삭제`,deleteConfirm:`“{{title}}” 및 해당 워크스페이스를 영구적으로 삭제할까요?`,close:`작업 태스크 닫기`,open:`작업 태스크 열기`,rename:`태스크 제목`,loading:`태스크 불러오는 중…`,notFound:`이 작업 태스크를 사용할 수 없습니다`,back:`새 태스크 시작`,status:`상태: {{status}}`},landing:{title:`새 작업 태스크 시작`,description:`로컬 모델 또는 설정된 제공자 모델에 영구적이고 격리된 워크스페이스를 제공합니다. 모델은 파일을 확인하고 도구를 실행하며, 나중에 돌아와 이어서 작업할 수 있습니다.`,isolated:`격리`,isolatedBody:`각 태스크에는 전용 컨테이너와 파일이 있습니다.`,durable:`영구`,durableBody:`나중에 대화와 워크스페이스로 돌아올 수 있습니다.`,controlled:`제어`,controlledBody:`런타임과 태스크 파일은 호스트에서 격리됩니다.`},composer:{placeholder:`만들거나 변경할 내용을 설명하세요…`,model:`작업 모델`,noModels:`작업 호환 모델이 없습니다`,cancel:`중지`,send:`실행`,hint:`각 태스크는 자체 파일과 기록을 보관합니다. 사용하기 전에 모델 출력을 검토하세요.`,remoteTitle:`원격 제공자`,remoteHint:`대화와 도구 출력이 설정된 서비스로 전송됩니다. 한 번의 자율 실행에서 제공자를 여러 번 호출해 비용이 발생할 수 있습니다. 도구가 파일 내용을 반환하지 않는 한 워크스페이스 파일은 로컬에 유지됩니다.`,remoteDismiss:`닫기`,remoteDismissLabel:`원격 제공자 안내 닫기`,remoteDismissFailed:`원격 제공자 설정을 저장할 수 없습니다.`,noModelSelected:`선택된 작업 호환 모델이 없습니다.`},conversation:{ready:`워크스페이스 준비 완료`,empty:`아래에서 태스크를 계속하세요. 이 대화와 파일은 해당 워크스페이스에 계속 연결됩니다.`,loadOlder:`이전 메시지 불러오기`},status:{preparing:`격리된 워크스페이스 준비 중…`,running:`로컬 워크스페이스에서 작업 중…`},statusLabels:{idle:`대기`,thinking:`생각 중`,complete:`완료`,needsInput:`입력 필요`,error:`오류`},live:{connecting:`실시간 업데이트에 연결하는 중…`,reconnecting:`실시간 업데이트에 다시 연결하는 중…`,unavailable:`실시간 업데이트를 사용할 수 없습니다`,newActivity:`새 활동`,skillsLoaded:`워크스페이스 기술 · {{count}}`},runtime:{unavailable:`런타임을 사용할 수 없습니다`,ready:`런타임 준비 완료`,readyOllama:`Docker 준비 완료`,readyPlugin:`Docker + 플러그인 준비 완료`,readyHybrid:`Docker + 모델 준비 완료`,reason:`Docker와 사용 가능한 Ollama 또는 플러그인 모델 제공자가 필요합니다.`},workspace:{label:`워크스페이스 보기`,files:`파일`,activity:`활동`,preview:`미리보기`,resize:`대화 및 워크스페이스 크기 조절`,resizeHint:`드래그하여 크기를 조절하세요. 세밀하게 조절하려면 화살표 키를 사용하세요. 재설정하려면 두 번 클릭하거나 Enter를 누르세요.`,splitSize:`대화 {{conversation}}%, 워크스페이스 {{workspace}}%`,terminal:`터미널`,git:`Git`},files:{discard:`저장하지 않은 파일 변경 사항을 버릴까요?`,leaveWithDraft:`이 파일을 닫을까요? 저장하지 않은 편집 내용은 브라우저 초안으로 유지됩니다.`,up:`상위 폴더`,back:`파일로 돌아가기`,empty:`이 폴더에는 아직 파일이 없습니다.`,select:`확인하고 편집할 파일을 선택하세요.`,editorLabel:`파일 편집기: {{path}}`,format:`서식 정리`,formatted:`코드 서식을 정리했습니다.`,formatFailed:`이 파일의 서식을 정리할 수 없습니다.`,formatShortcut:`서식 정리(Shift+Alt+F)`,formatTooLarge:`서식 정리는 100,000자 및 4,000줄 미만의 파일로 제한됩니다.`,formatUnsupported:`이 파일 형식은 서식 정리를 지원하지 않습니다.`,saveShortcut:`저장(⌘/Ctrl+S)`,highlightPaused:`편집 반응성을 유지하기 위해 큰 파일의 실시간 강조 표시를 일시 중지했습니다.`,plainTextLarge:`일반 텍스트 · 큰 파일`,changes:`변경 사항`,changesSince:`마지막 턴 이후 변경된 내용`,diffLabel:`마지막 턴 이후 변경 사항: {{path}}`,diffFolded:`변경되지 않은 줄 {{count}}개`},activity:{empty:`명령, 파일 작업 및 도구 결과가 여기에 표시됩니다.`,toolActivity:`도구 활동`,details:`세부 정보`,kinds:{message:`메시지`,toolCall:`도구 호출`,toolResult:`도구 결과`,error:`오류`}},preview:{command:`선택적 시작 명령`,start:`미리보기 시작`,stop:`미리보기 중지`,open:`열기`,starting:`미리보기 시작 중…`,frameTitle:`워크스페이스 미리보기`,failed:`미리보기를 시작할 수 없습니다. 활동을 확인한 다음 다른 명령을 시도하세요.`,empty:`이 워크스페이스에서 앱을 시작하면 여기에서 확인할 수 있습니다.`},mobile:{surface:`태스크 화면`,conversation:`대화`,workspace:`워크스페이스`},toasts:{runFailed:`작업 태스크를 시작할 수 없습니다.`,updateFailed:`이 태스크를 업데이트할 수 없습니다.`,renameFailed:`이 태스크의 이름을 변경할 수 없습니다.`,cancelled:`작업 실행을 중지했습니다.`,cancelFailed:`작업 실행을 중지할 수 없습니다.`,deleteFailed:`이 작업 태스크를 삭제할 수 없습니다.`,saveFailed:`이 파일을 저장할 수 없습니다.`,saved:`파일을 저장했습니다.`,previewFailed:`미리보기를 시작할 수 없습니다.`,previewStopFailed:`미리보기를 중지할 수 없습니다.`},terminal:{connecting:`샌드박스에서 셸을 여는 중…`,closed:`터미널 세션이 종료되었습니다.`,failed:`터미널 세션을 시작할 수 없습니다.`,reconnect:`다시 연결`,unavailable:`이 배포에서는 대화형 터미널을 사용할 수 없습니다.`,blockedByRun:`모델이 이 컨테이너를 사용 중입니다. 턴이 끝나면 터미널이 열립니다.`,taskRunning:`모델 턴 진행 중`},policy:{label:`런타임 정책`,default:`기본값(전역 제한)`},git:{actionFailed:`Git 작업이 실패했습니다.`,blockedByPreview:`Git 상태를 변경하기 전에 미리보기를 중지하세요.`,blockedByRun:`Git 쓰기 작업은 모델 턴이 끝나면 잠금 해제됩니다.`,branchCreated:`{{name}} 생성됨.`,branchSwitched:`{{name}}(으)로 전환했습니다.`,clean:`작업 트리가 깨끗합니다.`,commit:`스테이징된 변경 사항 커밋`,commitMessage:`커밋 메시지`,committed:`커밋이 생성되었습니다.`,detached:`분리된 HEAD`,diff:`디프 미리보기`,diffFailed:`이 디프를 불러올 수 없습니다.`,history:`로컬 기록`,initialize:`Git 초기화`,initializeDescription:`상태, 디프, 브랜치, 커밋을 위한 로컬 저장소를 만듭니다. 원격 자격 증명은 연결되지 않습니다.`,initialized:`Git 저장소가 초기화되었습니다.`,loadFailed:`Git 상태를 불러올 수 없습니다.`,localOnly:`로컬 Git 전용. push, pull, 풀 리퀘스트에는 별도의 신뢰할 수 있는 자격 증명 브로커가 필요합니다.`,newBranch:`새 로컬 브랜치`,noCommits:`아직 커밋이 없습니다.`,noDiff:`아직 텍스트 디프가 없습니다. 추적되지 않은 파일은 스테이징 후 표시됩니다.`,notInitialized:`Git이 초기화되지 않았습니다`,selectChange:`디프를 확인할 변경된 파일을 선택하세요.`,selectPath:`{{path}} 선택`,stageAll:`모두 스테이징`,stageSelected:`{{count}}개 스테이징`,staged:`변경 사항이 스테이징되었습니다.`,switchBranch:`로컬 브랜치 전환`,changes:`변경 사항`,createBranch:`만들기`},hostWorkspace:{hint:`격리된 작업 공간을 쓰려면 비워 두고, 아니면 이 컴퓨터의 폴더를 지정하세요.`,label:`작업 공간 폴더(선택)`,warning:`작업이 이 폴더를 직접 읽고 쓸 수 있습니다. 격리된 작업 공간을 쓰려면 비워 두세요.`}},usageAnalytics:{eyebrow:`관리`,title:`제공자 사용량`,description:`이 인스턴스에서 활성화된 플러그인의 아웃바운드 API 호출 및 모델 소비를 추적하세요.`,days:`{{count}}일`,refresh:`사용량 새로고침`,loadFailed:`제공자 사용량을 불러올 수 없습니다.`,metrics:{calls:`호출`,tokens:`토큰`},cards:{calls:`API 호출`,callsDetail:`{{count}}명의 활성 사용자 기준`,tokens:`보고된 토큰`,tokensDetail:`{{count}}건의 호출에 보고된 사용량`,success:`성공률`,successDetail:`{{count}}건의 실패한 호출`,latency:`평균 지연 시간`,latencyDetail:`엔드투엔드 제공자 시간`},activity:{title:`시간 경과에 따른 사용량`,callsDescription:`활성화된 플러그인에 대한 일일 아웃바운드 요청`,tokensDescription:`제공자가 보고한 일일 토큰 총량`,chartLabel:`일일 제공자 {{metric}} 차트`},models:{title:`모델 사용량`,description:`이 기간 동안 트래픽이 가장 많은 모델입니다.`,model:`모델`,success:`성공`,latency:`지연 시간`},providers:{title:`활성화된 플러그인 트래픽`},capabilities:{title:`기능 분포`,characters:`{{count}}자`,images:`{{count}}개 이미지`,jobs:`{{count}}개 비디오 작업`,inputs:`{{count}}개 입력`,reportedTokens:`{{count}}개 보고된 토큰`},empty:{title:`아직 제공자 호출이 없습니다`,description:`활성화된 플러그인이 채팅, Work, 임베딩, 이미지, 음성, 소리 또는 비디오 요청을 처리하면 호출이 여기에 표시됩니다.`},privacyNote:`사용량은 아웃바운드 플러그인 경계에서 서버를 통해 측정됩니다. Libre WebUI는 제공자, 모델, 타이밍, 상태 및 보고된 카운터를 저장하며, 프롬프트, 응답, 엔드포인트, 자격 증명 또는 제공자 오류 본문은 절대 저장하지 않습니다. 토큰 총량에는 제공자가 사용 메타데이터를 반환한 호출만 포함됩니다.`,heatmap:{title:`1년간의 활동`,description:`지난 1년간의 일별 프로바이더 호출을 그날 가장 많이 사용된 모델별 색상으로 표시합니다.`,calls:`회 호출`,noCalls:`호출 없음`,other:`기타 모델`,less:`적음`,more:`많음`,yearTotal:`지난 1년간 {{formatted}}회 호출`}},systemPage:{eyebrow:`관리`,title:`시스템`,description:`이 Libre WebUI 인스턴스를 호스팅하는 머신과 런타임을 모니터링합니다.`,updated:`{{date}}에 업데이트됨`,refresh:`시스템 정보 새로고침`,loadFailed:`시스템 정보를 불러올 수 없습니다.`,cards:{uptime:`호스트 가동 시간`,uptimeDetail:`{{date}}부터 실행 중`,memory:`사용된 메모리`,memoryDetail:`{{total}} 중 {{used}}`,freeSpace:`여유 공간`,freeSpaceDetail:`{{label}} · 총 {{total}}`,containers:`실행 중인 컨테이너`,containersDetail:`Docker에 알려진 컨테이너 {{total}}개`,dockerUnavailable:`Docker 사용 불가`,unavailable:`사용 불가`},host:{title:`호스트 및 런타임`,description:`운영 체제, 프로세서 및 Libre WebUI 프로세스 세부 정보입니다.`,container:`컨테이너 런타임`,native:`네이티브 런타임`,hostname:`호스트 이름`,operatingSystem:`운영 체제`,processor:`프로세서`,logicalCpus:`논리 CPU`,loadAverage:`평균 부하 · 1 / 5 / 15분`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`프로세스`,workingDirectory:`작업 디렉터리`},memory:{title:`메모리`,description:`런타임에서 보이는 시스템 메모리 및 애플리케이션 프로세스 사용량.`,usedOf:`{{total}} 중 {{used}} 사용`,free:`{{value}} 여유`,processRss:`프로세스 RSS`,heapUsed:`V8 힙 사용량`,heapTotal:`V8 전체 힙`,external:`외부 메모리`},storage:{title:`저장소`,description:`런타임 파일 시스템 및 영구 애플리케이션 데이터에 사용 가능한 공간.`,used:`{{value}} 사용`,free:`{{value}} 여유`,empty:`이 런타임에서는 파일 시스템 정보를 사용할 수 없습니다.`},docker:{title:`Docker`,description:`읽기 전용 Docker Engine 상태 및 축소된 컨테이너 목록.`,connected:`연결됨`,unavailable:`사용 불가`,unavailableDetail:`Docker Engine 진단을 사용할 수 없습니다.`,socketStatus:`로컬 소켓: {{status}}`,mounted:`마운트됨`,notMounted:`마운트되지 않음`,running:`실행 중`,stopped:`중지됨`,paused:`일시 정지됨`,total:`전체`,version:`버전`,host:`호스트`,architecture:`아키텍처`,cpus:`CPU`,memory:`메모리`,container:`컨테이너`,image:`이미지`,state:`상태`,created:`생성됨`,empty:`Docker에 연결되었으며 현재 나열된 컨테이너가 없습니다.`},network:{title:`네트워크`,description:`런타임에 표시되는 인터페이스, 주소 및 Linux 트래픽 카운터.`,internal:`내부`,empty:`애플리케이션 런타임에 표시되는 네트워크 인터페이스가 없습니다.`},securityNote:`이 페이지는 관리자 전용입니다. 서버는 운영 요약만 반환합니다: 환경 변수, 자격 증명, Docker 레이블, 마운트, 컨테이너 명령 또는 검사 페이로드를 노출하지 않습니다. Libre WebUI가 컨테이너에서 실행될 때 로컬 소켓을 사용할 수 있는 경우 호스트 수준 CPU 및 메모리 세부 정보는 Docker Engine에서 가져옵니다. 다른 값은 애플리케이션 런타임을 설명합니다.`,work:{title:`Work`,description:`모든 사용자의 샌드박스`,access:`접근`,accessAdmins:`관리자만`,accessAllUsers:`모든 사용자`,runtimeAvailable:`사용 가능`,runtimeUnavailable:`사용 불가`,activeRuntimes:`활성 런타임`,pendingCleanups:`대기 중인 정리`,orphans:`고아 컨테이너`,owner:`소유자`,task:`작업`,state:`상태`,preview:`미리보기`,terminals:`터미널`,updated:`업데이트됨`,stateRunning:`실행 중`,stateStopped:`중지됨`,stateStarting:`시작 중`,stateUnknown:`알 수 없음`,noTasks:`아직 Work 작업이 없습니다.`}},mediaGeneration:{title:`미디어 생성`,description:`활성화된 미디어 제공자로 비디오, 사운드, 음악 또는 음성을 생성합니다.`,image:`이미지`,video:`비디오`,audio:`오디오`,sound:`사운드`,speech:`음성`,model:`모델`,voice:`음성 또는 음성 ID`,resolution:`해상도`,aspectRatio:`화면 비율`,duration:`길이`,providerDefault:`제공자 기본값`,generateAudio:`지원되는 경우 비디오와 함께 오디오 생성`,prompt:`프롬프트`,text:`음성으로 변환할 텍스트`,videoPlaceholder:`장면, 동작, 카메라 및 조명을 설명하세요...`,audioPlaceholder:`음성으로 말할 텍스트를 입력하세요...`,soundPlaceholder:`원하는 사운드, 음악, 분위기 또는 음성 응답을 설명하세요...`,generate:`생성`,generating:`생성 중… 몇 분 정도 걸릴 수 있습니다`,success:`미디어가 생성되어 Imagine에 저장되었습니다`,failed:`미디어 생성 실패`,loadFailed:`미디어 제공자 로드 실패`,noModels:`사용 가능한 {{kind}} 모델이 없습니다. 호환되는 제공자를 활성화하고 자격 증명을 먼저 저장하세요.`},mediaGallery:{itemCount:`{{count}}개 항목`,empty:`아직 생성된 미디어가 없습니다`,emptyHint:`이미지, 비디오 또는 음성 클립을 생성하면 여기에 표시됩니다.`,filters:{all:`전체`,image:`이미지`,video:`동영상`,audio:`오디오`}},whatsNew:{title:`새로운 기능`,releaseNotes:`릴리스 노트`,cta:`좋아요, 시작하죠`},notes:{title:`노트`,new:`새 노트`,untitled:`제목 없음`,empty:`아직 노트가 없습니다`,selectOrCreate:`노트를 선택하거나 새로 만드세요`,contentPlaceholder:`Markdown으로 작성…`,saved:`저장됨`,saveFailed:`노트를 저장하지 못했습니다`,createFailed:`노트를 만들지 못했습니다`,deleteConfirm:`이 노트를 삭제할까요?`,deleteFailed:`노트를 삭제하지 못했습니다`},home:{active:`활성`,continue:`계속`,start:`시작`,explore:`둘러보기`},palette:{empty:`일치 항목 없음.`,placeholder:`채팅, Work, 작업 검색…`,toggleTheme:`테마 전환`,actions:`작업`,chats:`채팅`,search:`검색`,settings:`설정`,work:`작업`},tabs:{actions:`탭 작업`,close:`탭 닫기`,closeAll:`모든 탭 닫기`,closeOthers:`다른 탭 닫기`,closeRight:`오른쪽 탭 닫기`,home:`홈`,label:`열린 탭`,new:`새 탭`,newWork:`새 Work`,chat:`채팅`,newChat:`새 채팅`,work:`작업`}};export{e as default};
@@ -1,4 +1,4 @@
1
- import{_ as e,g as t,h as n,m as r,p as i}from"./router-vendor-Ca9zqOqT.js";import{g as a}from"../assets/index-Z4-oLWDC.js";var o,s,c,l,u,d,f,p,m=Object.create,h=Object.defineProperty,g=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,v=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty,b=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(e){throw t=0,e}},x=(e,t)=>{for(var n in t)h(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of _(t))!y.call(e,i)&&i!==n&&h(e,i,{get:()=>t[i],enumerable:!(r=g(t,i))||r.enumerable});return e},C=(e,t,n)=>(n=e==null?{}:m(v(e)),S(t||!e||!e.__esModule?h(n,`default`,{value:e,enumerable:!0}):n,e)),w=b((e,t)=>{t.exports=m;var n=9,r=10,i=32,a=33,o=58,s=91,c=92,l=93,u=94,d=96,f=4,p=1024;function m(e){var t=this.Parser,n=this.Compiler;h(t)&&_(t,e),g(n)&&v(n)}function h(e){return!!(e&&e.prototype&&e.prototype.blockTokenizers)}function g(e){return!!(e&&e.prototype&&e.prototype.visitors)}function _(e,t){for(var m=t||{},h=e.prototype,g=h.blockTokenizers,_=h.inlineTokenizers,v=h.blockMethods,x=h.inlineMethods,S=g.definition,C=_.reference,w=[],T=-1,E=v.length,D;++T<E;)D=v[T],D!==`newline`&&D!==`indentedCode`&&D!==`paragraph`&&D!==`footnoteDefinition`&&w.push([D]);w.push([`footnoteDefinition`]),m.inlineNotes&&(y(x,`reference`,`inlineNote`),_.inlineNote=A),y(v,`definition`,`footnoteDefinition`),y(x,`reference`,`footnoteCall`),g.definition=M,g.footnoteDefinition=O,_.footnoteCall=k,_.reference=j,h.interruptFootnoteDefinition=w,j.locator=C.locator,k.locator=N,A.locator=P;function O(e,t,a){for(var c=this,d=c.interruptFootnoteDefinition,m=c.offset,h=t.length+1,_=0,v=[],y,x,S,C,w,T,E,D,O,k,A,j,M;_<h&&(C=t.charCodeAt(_),C===n||C===i);)_++;if(t.charCodeAt(_++)===s&&t.charCodeAt(_++)===u){for(x=_;_<h;){if(C=t.charCodeAt(_),C!==C||C===r||C===n||C===i)return;if(C===l){S=_,_++;break}_++}if(S!==void 0&&x!==S&&t.charCodeAt(_++)===o){if(a)return!0;for(y=t.slice(x,S),w=e.now(),O=0,k=0,A=_,j=[];_<h;){if(C=t.charCodeAt(_),C!==C||C===r)M={start:O,contentStart:A||_,contentEnd:_,end:_},j.push(M),C===r&&(O=_+1,k=0,A=void 0,M.end=O);else if(k!==void 0)if(C===i||C===n)k+=C===i?1:f-k%f,k>f&&(k=void 0,A=_);else{if(k<f&&M&&(M.contentStart===M.contentEnd||b(d,g,c,[e,t.slice(_,p),!0])))break;k=void 0,A=_}_++}for(_=-1,h=j.length;h>0&&(M=j[h-1],M.contentStart===M.contentEnd);)h--;for(T=e(t.slice(0,M.contentEnd));++_<h;)M=j[_],m[w.line+_]=(m[w.line+_]||0)+(M.contentStart-M.start),v.push(t.slice(M.contentStart,M.end));return E=c.enterBlock(),D=c.tokenizeBlock(v.join(``),w),E(),T({type:`footnoteDefinition`,identifier:y.toLowerCase(),label:y,children:D})}}}function k(e,t,a){var o=t.length+1,c=0,d,f,p,m;if(t.charCodeAt(c++)===s&&t.charCodeAt(c++)===u){for(f=c;c<o;){if(m=t.charCodeAt(c),m!==m||m===r||m===n||m===i)return;if(m===l){p=c,c++;break}c++}if(p!==void 0&&f!==p)return a?!0:(d=t.slice(f,p),e(t.slice(0,c))({type:`footnoteReference`,identifier:d.toLowerCase(),label:d}))}}function A(e,t,n){var r=this,i=t.length+1,a=0,o=0,f,p,m,h,g,_,v;if(t.charCodeAt(a++)===u&&t.charCodeAt(a++)===s){for(m=a;a<i;){if(p=t.charCodeAt(a),p!==p)return;if(_===void 0)if(p===c)a+=2;else if(p===s)o++,a++;else if(p===l)if(o===0){h=a,a++;break}else o--,a++;else if(p===d){for(g=a,_=1;t.charCodeAt(g+_)===d;)_++;a+=_}else a++;else if(p===d){for(g=a,v=1;t.charCodeAt(g+v)===d;)v++;a+=v,_===v&&(_=void 0),v=void 0}else a++}if(h!==void 0)return n?!0:(f=e.now(),f.column+=2,f.offset+=2,e(t.slice(0,a))({type:`footnote`,children:r.tokenizeInline(t.slice(m,h),f)}))}}function j(e,t,n){var r=0;if(t.charCodeAt(r)===a&&r++,t.charCodeAt(r)===s&&t.charCodeAt(r+1)!==u)return C.call(this,e,t,n)}function M(e,t,r){for(var a=0,o=t.charCodeAt(a);o===i||o===n;)o=t.charCodeAt(++a);if(o===s&&t.charCodeAt(a+1)!==u)return S.call(this,e,t,r)}function N(e,t){return e.indexOf(`[`,t)}function P(e,t){return e.indexOf(`^[`,t)}}function v(e){var t=e.prototype.visitors,n=` `;t.footnote=r,t.footnoteReference=i,t.footnoteDefinition=a;function r(e){return`^[`+this.all(e).join(``)+`]`}function i(e){return`[^`+(e.label||e.identifier)+`]`}function a(e){for(var t=this.all(e).join(`
1
+ import{_ as e,g as t,h as n,m as r,p as i}from"./router-vendor-Ca9zqOqT.js";import{g as a}from"../assets/index-0wfi-EpC.js";var o,s,c,l,u,d,f,p,m=Object.create,h=Object.defineProperty,g=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,v=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty,b=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(e){throw t=0,e}},x=(e,t)=>{for(var n in t)h(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of _(t))!y.call(e,i)&&i!==n&&h(e,i,{get:()=>t[i],enumerable:!(r=g(t,i))||r.enumerable});return e},C=(e,t,n)=>(n=e==null?{}:m(v(e)),S(t||!e||!e.__esModule?h(n,`default`,{value:e,enumerable:!0}):n,e)),w=b((e,t)=>{t.exports=m;var n=9,r=10,i=32,a=33,o=58,s=91,c=92,l=93,u=94,d=96,f=4,p=1024;function m(e){var t=this.Parser,n=this.Compiler;h(t)&&_(t,e),g(n)&&v(n)}function h(e){return!!(e&&e.prototype&&e.prototype.blockTokenizers)}function g(e){return!!(e&&e.prototype&&e.prototype.visitors)}function _(e,t){for(var m=t||{},h=e.prototype,g=h.blockTokenizers,_=h.inlineTokenizers,v=h.blockMethods,x=h.inlineMethods,S=g.definition,C=_.reference,w=[],T=-1,E=v.length,D;++T<E;)D=v[T],D!==`newline`&&D!==`indentedCode`&&D!==`paragraph`&&D!==`footnoteDefinition`&&w.push([D]);w.push([`footnoteDefinition`]),m.inlineNotes&&(y(x,`reference`,`inlineNote`),_.inlineNote=A),y(v,`definition`,`footnoteDefinition`),y(x,`reference`,`footnoteCall`),g.definition=M,g.footnoteDefinition=O,_.footnoteCall=k,_.reference=j,h.interruptFootnoteDefinition=w,j.locator=C.locator,k.locator=N,A.locator=P;function O(e,t,a){for(var c=this,d=c.interruptFootnoteDefinition,m=c.offset,h=t.length+1,_=0,v=[],y,x,S,C,w,T,E,D,O,k,A,j,M;_<h&&(C=t.charCodeAt(_),C===n||C===i);)_++;if(t.charCodeAt(_++)===s&&t.charCodeAt(_++)===u){for(x=_;_<h;){if(C=t.charCodeAt(_),C!==C||C===r||C===n||C===i)return;if(C===l){S=_,_++;break}_++}if(S!==void 0&&x!==S&&t.charCodeAt(_++)===o){if(a)return!0;for(y=t.slice(x,S),w=e.now(),O=0,k=0,A=_,j=[];_<h;){if(C=t.charCodeAt(_),C!==C||C===r)M={start:O,contentStart:A||_,contentEnd:_,end:_},j.push(M),C===r&&(O=_+1,k=0,A=void 0,M.end=O);else if(k!==void 0)if(C===i||C===n)k+=C===i?1:f-k%f,k>f&&(k=void 0,A=_);else{if(k<f&&M&&(M.contentStart===M.contentEnd||b(d,g,c,[e,t.slice(_,p),!0])))break;k=void 0,A=_}_++}for(_=-1,h=j.length;h>0&&(M=j[h-1],M.contentStart===M.contentEnd);)h--;for(T=e(t.slice(0,M.contentEnd));++_<h;)M=j[_],m[w.line+_]=(m[w.line+_]||0)+(M.contentStart-M.start),v.push(t.slice(M.contentStart,M.end));return E=c.enterBlock(),D=c.tokenizeBlock(v.join(``),w),E(),T({type:`footnoteDefinition`,identifier:y.toLowerCase(),label:y,children:D})}}}function k(e,t,a){var o=t.length+1,c=0,d,f,p,m;if(t.charCodeAt(c++)===s&&t.charCodeAt(c++)===u){for(f=c;c<o;){if(m=t.charCodeAt(c),m!==m||m===r||m===n||m===i)return;if(m===l){p=c,c++;break}c++}if(p!==void 0&&f!==p)return a?!0:(d=t.slice(f,p),e(t.slice(0,c))({type:`footnoteReference`,identifier:d.toLowerCase(),label:d}))}}function A(e,t,n){var r=this,i=t.length+1,a=0,o=0,f,p,m,h,g,_,v;if(t.charCodeAt(a++)===u&&t.charCodeAt(a++)===s){for(m=a;a<i;){if(p=t.charCodeAt(a),p!==p)return;if(_===void 0)if(p===c)a+=2;else if(p===s)o++,a++;else if(p===l)if(o===0){h=a,a++;break}else o--,a++;else if(p===d){for(g=a,_=1;t.charCodeAt(g+_)===d;)_++;a+=_}else a++;else if(p===d){for(g=a,v=1;t.charCodeAt(g+v)===d;)v++;a+=v,_===v&&(_=void 0),v=void 0}else a++}if(h!==void 0)return n?!0:(f=e.now(),f.column+=2,f.offset+=2,e(t.slice(0,a))({type:`footnote`,children:r.tokenizeInline(t.slice(m,h),f)}))}}function j(e,t,n){var r=0;if(t.charCodeAt(r)===a&&r++,t.charCodeAt(r)===s&&t.charCodeAt(r+1)!==u)return C.call(this,e,t,n)}function M(e,t,r){for(var a=0,o=t.charCodeAt(a);o===i||o===n;)o=t.charCodeAt(++a);if(o===s&&t.charCodeAt(a+1)!==u)return S.call(this,e,t,r)}function N(e,t){return e.indexOf(`[`,t)}function P(e,t){return e.indexOf(`^[`,t)}}function v(e){var t=e.prototype.visitors,n=` `;t.footnote=r,t.footnoteReference=i,t.footnoteDefinition=a;function r(e){return`^[`+this.all(e).join(``)+`]`}function i(e){return`[^`+(e.label||e.identifier)+`]`}function a(e){for(var t=this.all(e).join(`
2
2
 
3
3
  `).split(`
4
4
  `),r=0,i=t.length,a;++r<i;)a=t[r],a!==``&&(t[r]=n+a);return`[^`+(e.label||e.identifier)+`]: `+t.join(`
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{d as t,f as n}from"./markdown-core-DHnR5Hw8.js";import{t as r}from"./useTranslation-CdeLZqSW.js";import{Gt as i,Ht as a,Jt as o,Rt as s,en as c,on as l,tn as u}from"./ui-vendor-D_pYT79f.js";import{t as d}from"./logger-DSXjF4ye.js";import{r as f}from"./utils-BhpNrGnR.js";import{t as p}from"./appStore-DTd6dWg2.js";var m=e(n(),1),h={selection:8,impact:14,success:[10,28,12],warning:[18,42,18]},g=()=>typeof window>`u`||typeof navigator>`u`?!1:navigator.maxTouchPoints>0||window.matchMedia?.(`(pointer: coarse)`).matches===!0,_=()=>typeof navigator<`u`&&typeof navigator.vibrate==`function`&&g(),v=(e=`selection`)=>p.getState().preferences.hapticFeedbackEnabled!==!0||!_()?!1:navigator.vibrate(h[e]),y=[/^ {0,3}(?:`{3,}|~{3,})/m,/`[^`\n]+`/,/^\s{0,3}#{1,6}\s/m,/^\s{0,3}[-*+]\s/m,/^\s{0,3}\d+\.\s/m,/^\s{0,3}>\s/m,/\[[^\]]+\]\([^)]+\)/,/!\[[^\]]*]\([^)]+\)/,/\|.*\|/,/\*\*[^*]+\*\*/,/__[^_]+__/,/~~[^~]+~~/,/\\\[[\s\S]*?\\\]/,/\\\([\s\S]*?\\\)/,/\$\$[\s\S]*?\$\$/,/(^|[^$])\$[^$\n]+\$/],b=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function x(e){let t=[],n=/^( {0,3})(`{3,}|~{3,})([^\n\r]*)(?:\r?\n|$)/gm,r;for(;r=n.exec(e);){let i=r[1].length,a=r[2],o=a[0],s=r[3].trim();if(o==="`"&&s.includes("`"))continue;let c=n.lastIndex,l=RegExp(`^ {0,3}${b(o)}{${a.length},}[ \\t]*(?:\\r?\\n|$)`,`gm`);l.lastIndex=c;let u=l.exec(e),d=s.split(/\s+/)[0]||null;if(!u){t.push({start:r.index,end:e.length,codeStart:c,codeEnd:e.length,indent:i,language:d,complete:!1});break}t.push({start:r.index,end:l.lastIndex,codeStart:c,codeEnd:u.index,indent:i,language:d,complete:!0}),n.lastIndex=l.lastIndex}return t}function S(e){return/<(?:html|head|body)(?:\s|>)|<\/(?:head|body|html)\s*>/i.test(e)}function C(e,t){return e.start<t.end&&t.start<e.end}function w(e,t){let n=/^( {0,3})(<!doctype\s+html(?:\s|>|$)|<html(?:\s[^>\n\r]*)?>)/gim,r;for(;r=n.exec(e);){let n=r.index+r[1].length;if(t.some(e=>n>=e.start&&n<e.end))continue;let i=e.slice(n);if(!S(i.slice(r[2].length)))continue;let a=/<\/html\s*>/i.exec(i),o=a?n+a.index+a[0].length:e.length;return{start:r.index,end:o,codeStart:n,codeEnd:o,indent:0,language:`html`,complete:!!a}}return null}function T(e){let t=x(e),n=w(e,t);return n?[...t.filter(e=>!C(e,n)),n].sort((e,t)=>e.start-t.start):t}function E(e,t){return t===0?e:e.replace(RegExp(`^ {1,${t}}`,`gm`),``)}function D(e){return y.some(t=>t.test(e))}function O(e){let t=[],n=T(e),r=0;for(let i of n){let n=e.slice(r,i.start);n&&t.push({type:`text`,content:n}),t.push({type:`code`,language:i.language,content:E(e.slice(i.codeStart,i.codeEnd),i.indent),complete:i.complete}),r=i.end}let i=e.slice(r);return(i||t.length===0)&&t.push({type:`text`,content:i}),t}function k(e){let t=e=>e.replace(/\\\[([\s\S]*?)\\\]/g,(e,t)=>`$$${t}$$`).replace(/\\\(([\s\S]*?)\\\)/g,(e,t)=>`$${t}$`),n=e=>{let n=/`[^`\n]+`/g,r=``,i=0,a;for(;a=n.exec(e);)r+=t(e.slice(i,a.index)),r+=a[0],i=n.lastIndex;return r+t(e.slice(i))},r=x(e),i=``,a=0;for(let t of r)i+=n(e.slice(a,t.start)),i+=e.slice(t.start,t.end),a=t.end;return i+=n(e.slice(a)),i}var A=t(),j=d(`components:ui:message-code-block`),M=24,N={bash:`sh`,c:`c`,cpp:`cpp`,csharp:`cs`,css:`css`,go:`go`,html:`html`,htm:`html`,java:`java`,javascript:`js`,js:`js`,json:`json`,jsx:`jsx`,kotlin:`kt`,markdown:`md`,mermaid:`mmd`,php:`php`,python:`py`,py:`py`,ruby:`rb`,rust:`rs`,sh:`sh`,shell:`sh`,sql:`sql`,svg:`svg`,swift:`swift`,toml:`toml`,ts:`ts`,tsx:`tsx`,typescript:`ts`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`sh`};function P(e,t){let n=(e||``).toLowerCase();if(n===`html`||n===`htm`)return`html`;if(n===`svg`)return`svg`;if(n===`mermaid`)return`mermaid`;let r=t.slice(0,500).toLowerCase();return(!n||n===`xml`)&&r.includes(`<svg`)?`svg`:!n&&(r.includes(`<!doctype html`)||r.includes(`<html`))?`html`:null}function F({code:e,language:t,state:n,children:d}){let{t:h}=r(),g=p(e=>e.openArtifactPanel),[_,y]=m.useState(null),[b,x]=m.useState(null),S=m.useRef(null),C=_===e,w=t||`text`,T=h(C?`artifacts.copied`:`artifacts.copy`),E=`${T}: ${w}`,D=m.useMemo(()=>e?e.split(`
2
- `).length:0,[e]),O=b===null?n===`complete`&&D>M:!b,k=n===`complete`?P(t,e):null;return m.useEffect(()=>()=>{S.current!==null&&window.clearTimeout(S.current)},[]),(0,A.jsxs)(`div`,{dir:`ltr`,"data-testid":`code-block`,"data-state":n,"data-language":w,"data-collapsed":O,className:`group relative my-4 overflow-hidden rounded-xl border border-line bg-surface-subtle text-left text-ink shadow-[0_12px_32px_rgba(13,17,23,0.1)] dark:border-white/10 dark:bg-[#0D1117] dark:text-[#E6EDF3] dark:shadow-[0_12px_32px_rgba(13,17,23,0.16)]`,children:[(0,A.jsxs)(`div`,{className:`flex h-10 items-center justify-between border-b border-line bg-surface-raised/70 px-3.5 dark:border-white/10 dark:bg-white/[0.035]`,children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,A.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-ink-subtle dark:text-[#8B949E]`}),(0,A.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium lowercase tracking-[-0.01em] text-ink-muted dark:text-[#B1BAC4]`,children:w})]}),(0,A.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n===`streaming`&&(0,A.jsx)(`span`,{role:`status`,"aria-label":h(`common.loading`),className:`flex h-7 w-7 items-center justify-center`,children:(0,A.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-primary-400`})}),D>M&&(0,A.jsx)(`button`,{type:`button`,onClick:()=>x(O),className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:h(O?`artifacts.expand`:`artifacts.collapse`),"aria-label":h(O?`artifacts.expand`:`artifacts.collapse`),"aria-expanded":!O,children:O?(0,A.jsx)(c,{className:`h-3.5 w-3.5`}):(0,A.jsx)(u,{className:`h-3.5 w-3.5`})}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>{if(!e)return;let n=N[(t||``).toLowerCase()]||`txt`,r=new Blob([e],{type:`text/plain;charset=utf-8`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`snippet.${n}`,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)},disabled:!e,className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 disabled:cursor-default disabled:opacity-35 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:h(`common.download`),"aria-label":`${h(`common.download`)}: ${w}`,children:(0,A.jsx)(a,{className:`h-3.5 w-3.5`})}),k&&(0,A.jsx)(`button`,{type:`button`,onClick:()=>{if(!k||!e)return;let t=Date.now();g({id:f(),type:k,title:`${w} ${h(`artifacts.preview`)}`,content:e,language:w,createdAt:t,updatedAt:t})},className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:h(`artifacts.preview`),"aria-label":`${h(`artifacts.preview`)}: ${w}`,children:(0,A.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,A.jsx)(`button`,{type:`button`,onClick:async()=>{if(e)try{await navigator.clipboard.writeText(e),v(`success`),y(e),S.current!==null&&window.clearTimeout(S.current),S.current=window.setTimeout(()=>{y(null),S.current=null},2e3)}catch(e){j.error(`Failed to copy code:`,e)}},disabled:!e,className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 disabled:cursor-default disabled:opacity-35 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:T,"aria-label":E,children:C?(0,A.jsx)(l,{className:`h-3.5 w-3.5 text-green-400`}):(0,A.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,A.jsx)(`span`,{className:`sr-only`,"aria-live":`polite`,children:C?E:``})]})]}),O?(0,A.jsx)(`button`,{type:`button`,onClick:()=>x(!0),className:`block w-full px-3.5 py-2.5 text-left font-mono text-[11px] italic text-ink-subtle transition-colors hover:bg-surface-raised/70 hover:text-ink dark:text-[#8B949E] dark:hover:bg-white/[0.035] dark:hover:text-[#E6EDF3]`,children:h(`chatMessage.hiddenLines`,{count:D})}):d]})}var I=`#0D1117`,L=`rgb(var(--color-surface-subtle))`,R=`max-h-[60vh] min-h-12 overflow-auto bg-surface-subtle p-4 text-left font-mono text-[14px] leading-6 text-ink whitespace-pre tabular-nums dark:bg-[#0D1117] dark:text-[#E6EDF3]`,z={maxHeight:`60vh`,minHeight:`3rem`,overflow:`auto`,padding:`1rem`,fontSize:`14px`,lineHeight:`1.5rem`,fontFamily:`"JetBrains Mono", ui-monospace, SFMono-Regular, monospace`,whiteSpace:`pre`};export{F as a,D as c,z as i,v as l,L as n,O as o,R as r,k as s,I as t};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{d as t,f as n}from"./markdown-core-DHnR5Hw8.js";import{t as r}from"./useTranslation-CdeLZqSW.js";import{Kt as i,Ut as a,Yt as o,nn as s,sn as c,tn as l,zt as u}from"./ui-vendor-xUzKqAXI.js";import{t as d}from"./logger-DSXjF4ye.js";import{r as f}from"./utils-BhpNrGnR.js";import{t as p}from"./appStore-sGaWMSDr.js";var m=e(n(),1),h={selection:8,impact:14,success:[10,28,12],warning:[18,42,18]},g=()=>typeof window>`u`||typeof navigator>`u`?!1:navigator.maxTouchPoints>0||window.matchMedia?.(`(pointer: coarse)`).matches===!0,_=()=>typeof navigator<`u`&&typeof navigator.vibrate==`function`&&g(),v=(e=`selection`)=>p.getState().preferences.hapticFeedbackEnabled!==!0||!_()?!1:navigator.vibrate(h[e]),y=[/^ {0,3}(?:`{3,}|~{3,})/m,/`[^`\n]+`/,/^\s{0,3}#{1,6}\s/m,/^\s{0,3}[-*+]\s/m,/^\s{0,3}\d+\.\s/m,/^\s{0,3}>\s/m,/\[[^\]]+\]\([^)]+\)/,/!\[[^\]]*]\([^)]+\)/,/\|.*\|/,/\*\*[^*]+\*\*/,/__[^_]+__/,/~~[^~]+~~/,/\\\[[\s\S]*?\\\]/,/\\\([\s\S]*?\\\)/,/\$\$[\s\S]*?\$\$/,/(^|[^$])\$[^$\n]+\$/],b=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function x(e){let t=[],n=/^( {0,3})(`{3,}|~{3,})([^\n\r]*)(?:\r?\n|$)/gm,r;for(;r=n.exec(e);){let i=r[1].length,a=r[2],o=a[0],s=r[3].trim();if(o==="`"&&s.includes("`"))continue;let c=n.lastIndex,l=RegExp(`^ {0,3}${b(o)}{${a.length},}[ \\t]*(?:\\r?\\n|$)`,`gm`);l.lastIndex=c;let u=l.exec(e),d=s.split(/\s+/)[0]||null;if(!u){t.push({start:r.index,end:e.length,codeStart:c,codeEnd:e.length,indent:i,language:d,complete:!1});break}t.push({start:r.index,end:l.lastIndex,codeStart:c,codeEnd:u.index,indent:i,language:d,complete:!0}),n.lastIndex=l.lastIndex}return t}function S(e){return/<(?:html|head|body)(?:\s|>)|<\/(?:head|body|html)\s*>/i.test(e)}function C(e,t){return e.start<t.end&&t.start<e.end}function w(e,t){let n=/^( {0,3})(<!doctype\s+html(?:\s|>|$)|<html(?:\s[^>\n\r]*)?>)/gim,r;for(;r=n.exec(e);){let n=r.index+r[1].length;if(t.some(e=>n>=e.start&&n<e.end))continue;let i=e.slice(n);if(!S(i.slice(r[2].length)))continue;let a=/<\/html\s*>/i.exec(i),o=a?n+a.index+a[0].length:e.length;return{start:r.index,end:o,codeStart:n,codeEnd:o,indent:0,language:`html`,complete:!!a}}return null}function T(e){let t=x(e),n=w(e,t);return n?[...t.filter(e=>!C(e,n)),n].sort((e,t)=>e.start-t.start):t}function E(e,t){return t===0?e:e.replace(RegExp(`^ {1,${t}}`,`gm`),``)}function D(e){return y.some(t=>t.test(e))}function O(e){let t=[],n=T(e),r=0;for(let i of n){let n=e.slice(r,i.start);n&&t.push({type:`text`,content:n}),t.push({type:`code`,language:i.language,content:E(e.slice(i.codeStart,i.codeEnd),i.indent),complete:i.complete}),r=i.end}let i=e.slice(r);return(i||t.length===0)&&t.push({type:`text`,content:i}),t}function k(e){let t=e=>e.replace(/\\\[([\s\S]*?)\\\]/g,(e,t)=>`$$${t}$$`).replace(/\\\(([\s\S]*?)\\\)/g,(e,t)=>`$${t}$`),n=e=>{let n=/`[^`\n]+`/g,r=``,i=0,a;for(;a=n.exec(e);)r+=t(e.slice(i,a.index)),r+=a[0],i=n.lastIndex;return r+t(e.slice(i))},r=x(e),i=``,a=0;for(let t of r)i+=n(e.slice(a,t.start)),i+=e.slice(t.start,t.end),a=t.end;return i+=n(e.slice(a)),i}var A=t(),j=d(`components:ui:message-code-block`),M=24,N={bash:`sh`,c:`c`,cpp:`cpp`,csharp:`cs`,css:`css`,go:`go`,html:`html`,htm:`html`,java:`java`,javascript:`js`,js:`js`,json:`json`,jsx:`jsx`,kotlin:`kt`,markdown:`md`,mermaid:`mmd`,php:`php`,python:`py`,py:`py`,ruby:`rb`,rust:`rs`,sh:`sh`,shell:`sh`,sql:`sql`,svg:`svg`,swift:`swift`,toml:`toml`,ts:`ts`,tsx:`tsx`,typescript:`ts`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`sh`};function P(e,t){let n=(e||``).toLowerCase();if(n===`html`||n===`htm`)return`html`;if(n===`svg`)return`svg`;if(n===`mermaid`)return`mermaid`;let r=t.slice(0,500).toLowerCase();return(!n||n===`xml`)&&r.includes(`<svg`)?`svg`:!n&&(r.includes(`<!doctype html`)||r.includes(`<html`))?`html`:null}function F({code:e,language:t,state:n,children:d}){let{t:h}=r(),g=p(e=>e.openArtifactPanel),[_,y]=m.useState(null),[b,x]=m.useState(null),S=m.useRef(null),C=_===e,w=t||`text`,T=h(C?`artifacts.copied`:`artifacts.copy`),E=`${T}: ${w}`,D=m.useMemo(()=>e?e.split(`
2
+ `).length:0,[e]),O=b===null?n===`complete`&&D>M:!b,k=n===`complete`?P(t,e):null;return m.useEffect(()=>()=>{S.current!==null&&window.clearTimeout(S.current)},[]),(0,A.jsxs)(`div`,{dir:`ltr`,"data-testid":`code-block`,"data-state":n,"data-language":w,"data-collapsed":O,className:`group relative my-4 overflow-hidden rounded-xl border border-line bg-surface-subtle text-left text-ink shadow-[0_12px_32px_rgba(13,17,23,0.1)] dark:border-white/10 dark:bg-[#0D1117] dark:text-[#E6EDF3] dark:shadow-[0_12px_32px_rgba(13,17,23,0.16)]`,children:[(0,A.jsxs)(`div`,{className:`flex h-10 items-center justify-between border-b border-line bg-surface-raised/70 px-3.5 dark:border-white/10 dark:bg-white/[0.035]`,children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,A.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-ink-subtle dark:text-[#8B949E]`}),(0,A.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium lowercase tracking-[-0.01em] text-ink-muted dark:text-[#B1BAC4]`,children:w})]}),(0,A.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n===`streaming`&&(0,A.jsx)(`span`,{role:`status`,"aria-label":h(`common.loading`),className:`flex h-7 w-7 items-center justify-center`,children:(0,A.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-primary-400`})}),D>M&&(0,A.jsx)(`button`,{type:`button`,onClick:()=>x(O),className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:h(O?`artifacts.expand`:`artifacts.collapse`),"aria-label":h(O?`artifacts.expand`:`artifacts.collapse`),"aria-expanded":!O,children:O?(0,A.jsx)(l,{className:`h-3.5 w-3.5`}):(0,A.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>{if(!e)return;let n=N[(t||``).toLowerCase()]||`txt`,r=new Blob([e],{type:`text/plain;charset=utf-8`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`snippet.${n}`,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)},disabled:!e,className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 disabled:cursor-default disabled:opacity-35 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:h(`common.download`),"aria-label":`${h(`common.download`)}: ${w}`,children:(0,A.jsx)(a,{className:`h-3.5 w-3.5`})}),k&&(0,A.jsx)(`button`,{type:`button`,onClick:()=>{if(!k||!e)return;let t=Date.now();g({id:f(),type:k,title:`${w} ${h(`artifacts.preview`)}`,content:e,language:w,createdAt:t,updatedAt:t})},className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:h(`artifacts.preview`),"aria-label":`${h(`artifacts.preview`)}: ${w}`,children:(0,A.jsx)(u,{className:`h-3.5 w-3.5`})}),(0,A.jsx)(`button`,{type:`button`,onClick:async()=>{if(e)try{await navigator.clipboard.writeText(e),v(`success`),y(e),S.current!==null&&window.clearTimeout(S.current),S.current=window.setTimeout(()=>{y(null),S.current=null},2e3)}catch(e){j.error(`Failed to copy code:`,e)}},disabled:!e,className:`flex h-7 w-7 items-center justify-center rounded-md text-ink-subtle transition-colors hover:bg-surface-subtle hover:text-ink focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400/70 disabled:cursor-default disabled:opacity-35 dark:text-[#8B949E] dark:hover:bg-white/[0.08] dark:hover:text-[#E6EDF3]`,title:T,"aria-label":E,children:C?(0,A.jsx)(c,{className:`h-3.5 w-3.5 text-green-400`}):(0,A.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,A.jsx)(`span`,{className:`sr-only`,"aria-live":`polite`,children:C?E:``})]})]}),O?(0,A.jsx)(`button`,{type:`button`,onClick:()=>x(!0),className:`block w-full px-3.5 py-2.5 text-left font-mono text-[11px] italic text-ink-subtle transition-colors hover:bg-surface-raised/70 hover:text-ink dark:text-[#8B949E] dark:hover:bg-white/[0.035] dark:hover:text-[#E6EDF3]`,children:h(`chatMessage.hiddenLines`,{count:D})}):d]})}var I=`#0D1117`,L=`rgb(var(--color-surface-subtle))`,R=`max-h-[60vh] min-h-12 overflow-auto bg-surface-subtle p-4 text-left font-mono text-[14px] leading-6 text-ink whitespace-pre tabular-nums dark:bg-[#0D1117] dark:text-[#E6EDF3]`,z={maxHeight:`60vh`,minHeight:`3rem`,overflow:`auto`,padding:`1rem`,fontSize:`14px`,lineHeight:`1.5rem`,fontFamily:`"JetBrains Mono", ui-monospace, SFMono-Regular, monospace`,whiteSpace:`pre`};export{F as a,D as c,z as i,v as l,L as n,O as o,R as r,k as s,I as t};