loadtoagent 1.0.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.
- package/README.ko.md +175 -0
- package/README.md +175 -0
- package/README.zh-CN.md +175 -0
- package/bin/loadtoagent.js +171 -0
- package/docs/ARCHITECTURE.md +30 -0
- package/docs/PROVIDER-CONTRACTS.md +58 -0
- package/docs/assets/loadtoagent-dashboard.png +0 -0
- package/docs/assets/loadtoagent-demo.gif +0 -0
- package/main.js +493 -0
- package/package.json +133 -0
- package/preload.js +75 -0
- package/renderer/app-agent-actions.js +285 -0
- package/renderer/app-bootstrap.js +95 -0
- package/renderer/app-dashboard.js +361 -0
- package/renderer/app-drawer-content.js +203 -0
- package/renderer/app-drawer-data.js +41 -0
- package/renderer/app-drawer.js +183 -0
- package/renderer/app-events-dialogs.js +169 -0
- package/renderer/app-events-filters.js +74 -0
- package/renderer/app-events-navigation.js +96 -0
- package/renderer/app-events-sessions.js +195 -0
- package/renderer/app-events.js +16 -0
- package/renderer/app-graph-layout.js +71 -0
- package/renderer/app-graph-model.js +107 -0
- package/renderer/app-graph-orchestration.js +76 -0
- package/renderer/app-graph-view.js +544 -0
- package/renderer/app-run-modal.js +221 -0
- package/renderer/app-session-render.js +243 -0
- package/renderer/app-tmux-render.js +247 -0
- package/renderer/app.js +608 -0
- package/renderer/fonts/geist-ext.woff2 +0 -0
- package/renderer/fonts/geist.woff2 +0 -0
- package/renderer/i18n-messages.js +355 -0
- package/renderer/i18n.js +122 -0
- package/renderer/index.html +386 -0
- package/renderer/shared.js +26 -0
- package/renderer/styles-agent-map.css +401 -0
- package/renderer/styles-cards.css +600 -0
- package/renderer/styles-collaboration.css +534 -0
- package/renderer/styles-components.css +1293 -0
- package/renderer/styles-onboarding.css +344 -0
- package/renderer/styles-overlays.css +284 -0
- package/renderer/styles-product.css +686 -0
- package/renderer/styles-responsive-product.css +689 -0
- package/renderer/styles-responsive-runtime.css +718 -0
- package/renderer/styles-responsive-shell.css +533 -0
- package/renderer/styles-responsive-workflows.css +778 -0
- package/renderer/styles-run-composer.css +695 -0
- package/renderer/styles-settings.css +606 -0
- package/renderer/styles-terminal.css +1241 -0
- package/renderer/styles-tmux.css +1162 -0
- package/renderer/styles-workflow-map.css +513 -0
- package/renderer/styles-workflows.css +1217 -0
- package/renderer/styles.css +486 -0
- package/renderer/terminal-agent.js +152 -0
- package/renderer/terminal-events.js +226 -0
- package/renderer/terminal-workbench.js +464 -0
- package/renderer/terminal.js +497 -0
- package/src/agentMonitor/claudeParser.js +197 -0
- package/src/agentMonitor/codexCollaboration.js +95 -0
- package/src/agentMonitor/codexParser.js +447 -0
- package/src/agentMonitor/genericParser.js +244 -0
- package/src/agentMonitor/hierarchy.js +248 -0
- package/src/agentMonitor/sessionFiles.js +86 -0
- package/src/agentMonitor.js +591 -0
- package/src/agentRunner.js +465 -0
- package/src/bridgeServer.js +246 -0
- package/src/contracts.js +71 -0
- package/src/diagnostics.js +23 -0
- package/src/ipc/registerAgentIpc.js +12 -0
- package/src/ipc/registerAppIpc.js +20 -0
- package/src/ipc/registerTerminalIpc.js +50 -0
- package/src/ipc/registerTmuxIpc.js +30 -0
- package/src/ipc/registerWorkspaceIpc.js +14 -0
- package/src/monitorWorker.js +273 -0
- package/src/processMonitor.js +394 -0
- package/src/providerRegistry.js +120 -0
- package/src/terminalManager.js +438 -0
- package/src/tmuxController.js +183 -0
- package/src/tmuxMonitor.js +432 -0
- package/src/updateManager.js +339 -0
- package/src/workspaceStore.js +77 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
(() => {
|
|
4
|
+
window.LoadToAgentMessages = Object.freeze({
|
|
5
|
+
"app.accessibility.skip_to_content": {"ko":"본문으로 바로가기","en":"Skip to main content","zh-CN":"跳到主要内容"},
|
|
6
|
+
"app.brand.subtitle": {"ko":"AI 작업 도우미","en":"AI Work Assistant","zh-CN":"AI 工作助手"},
|
|
7
|
+
"app.document.title": {"ko":"LoadToAgent · AI 작업 도우미","en":"LoadToAgent · AI Work Assistant","zh-CN":"LoadToAgent · AI 工作助手"},
|
|
8
|
+
"app.nav.active": {"ko":"진행 중","en":"Active","zh-CN":"进行中"},
|
|
9
|
+
"app.nav.application": {"ko":"프로그램","en":"Application","zh-CN":"应用"},
|
|
10
|
+
"app.nav.continue_session": {"ko":"기존 세션에 이어서 입력","en":"Continue an existing session","zh-CN":"继续现有会话"},
|
|
11
|
+
"app.nav.home": {"ko":"홈","en":"Home","zh-CN":"首页"},
|
|
12
|
+
"app.nav.label": {"ko":"화면 선택","en":"Choose view","zh-CN":"选择页面"},
|
|
13
|
+
"app.nav.more": {"ko":"더보기","en":"More","zh-CN":"更多"},
|
|
14
|
+
"app.nav.needs_review": {"ko":"내 확인 필요","en":"Needs review","zh-CN":"需要我确认"},
|
|
15
|
+
"app.nav.session_terminal": {"ko":"세션 터미널","en":"Session Terminal","zh-CN":"会话终端"},
|
|
16
|
+
"app.nav.settings": {"ko":"설정","en":"Settings","zh-CN":"设置"},
|
|
17
|
+
"app.nav.tmux": {"ko":"tmux 작업","en":"tmux Workspaces","zh-CN":"tmux 工作"},
|
|
18
|
+
"common.active": {"ko":"{count}개 유지 중","en":"{count} active","zh-CN":"{count} 个保持中"},
|
|
19
|
+
"common.agents": {"ko":"{count}명","en":"{count} agents","zh-CN":"{count} 个智能体"},
|
|
20
|
+
"common.cancel": {"ko":"취소","en":"Cancel","zh-CN":"取消"},
|
|
21
|
+
"common.close": {"ko":"닫기","en":"Close","zh-CN":"关闭"},
|
|
22
|
+
"common.count": {"ko":"{count}개","en":"{count}","zh-CN":"{count} 个"},
|
|
23
|
+
"common.events": {"ko":"{count}건","en":"{count} events","zh-CN":"{count} 条"},
|
|
24
|
+
"common.items": {"ko":"{count}개 항목","en":"{count} items","zh-CN":"{count} 个项目"},
|
|
25
|
+
"common.progress": {"ko":"{current} / {total} 완료","en":"{current} / {total} complete","zh-CN":"已完成 {current} / {total}"},
|
|
26
|
+
"common.remaining": {"ko":"작업 더 보기 · {count}개 남음","en":"Show more tasks · {count} remaining","zh-CN":"显示更多任务 · 剩余 {count} 个"},
|
|
27
|
+
"common.running": {"ko":"{count}개 실행 중","en":"{count} running","zh-CN":"{count} 个运行中"},
|
|
28
|
+
"common.send": {"ko":"보내기","en":"Send","zh-CN":"发送"},
|
|
29
|
+
"drawer.title": {"ko":"작업 자세히 보기","en":"View task details","zh-CN":"查看任务详情"},
|
|
30
|
+
"filter.result_summary": {"ko":"{providers} 선택 · {count}개 결과","en":"{providers} selected · {count} results","zh-CN":"已选择 {providers} · {count} 条结果"},
|
|
31
|
+
"guide.steps_remaining": {"ko":"{count}단계 남았어요. 하나씩 눌러 직접 둘러보세요.","en":"{count} steps left. Try each one to explore the app.","zh-CN":"还剩 {count} 步。请逐项点击体验。"},
|
|
32
|
+
"provider.assign": {"ko":"{provider}에게 맡기기","en":"Assign to {provider}","zh-CN":"交给 {provider}"},
|
|
33
|
+
"provider.install_guide": {"ko":"{provider} 설치 안내","en":"{provider} setup guide","zh-CN":"{provider} 安装指南"},
|
|
34
|
+
"provider.started": {"ko":"{provider} 작업을 시작했습니다. ‘진행 중’ 화면에서 상태를 확인하세요.","en":"{provider} task started. Check its status in Active.","zh-CN":"{provider} 任务已启动。请在“进行中”页面查看状态。"},
|
|
35
|
+
"session.background_count": {"ko":"AI 백그라운드 {count}개","en":"{count} AI background","zh-CN":"{count} 个 AI 后台任务"},
|
|
36
|
+
"session.latest_count": {"ko":"최근 {count}개 표시","en":"Showing latest {count}","zh-CN":"显示最近 {count} 条"},
|
|
37
|
+
"session.messages": {"ko":"대화 {count}개","en":"{count} messages","zh-CN":"{count} 条对话"},
|
|
38
|
+
"session.total_count": {"ko":"전체 {count}개","en":"{count} total","zh-CN":"共 {count} 个"},
|
|
39
|
+
"settings.language.label": {"ko":"앱 언어","en":"App language","zh-CN":"应用语言"},
|
|
40
|
+
"settings.language.ko_name": {"ko":"한국어","en":"Korean","zh-CN":"韩语"},
|
|
41
|
+
"settings.language.title": {"ko":"표시 언어","en":"Display language","zh-CN":"显示语言"},
|
|
42
|
+
"settings.title": {"ko":"프로그램 설정","en":"Application Settings","zh-CN":"应用设置"},
|
|
43
|
+
"settings.update.check": {"ko":"업데이트 확인","en":"Check for updates","zh-CN":"检查更新"},
|
|
44
|
+
"settings.update.download": {"ko":"업데이트 파일 받기","en":"Download update","zh-CN":"下载更新"},
|
|
45
|
+
"time.days_ago": {"ko":"{count}일 전","en":"{count} days ago","zh-CN":"{count} 天前"},
|
|
46
|
+
"time.hours_ago": {"ko":"{count}시간 전","en":"{count} hr ago","zh-CN":"{count} 小时前"},
|
|
47
|
+
"time.just_now": {"ko":"방금 전","en":"Just now","zh-CN":"刚刚"},
|
|
48
|
+
"time.minutes_ago": {"ko":"{count}분 전","en":"{count} min ago","zh-CN":"{count} 分钟前"},
|
|
49
|
+
"time.seconds_ago": {"ko":"{count}초 전","en":"{count} sec ago","zh-CN":"{count} 秒前"},
|
|
50
|
+
"terminal.activity_details": {"ko":"활동 {count}건은 상세에서 확인","en":"See {count} activities in details","zh-CN":"在详情中查看 {count} 条活动"},
|
|
51
|
+
"terminal.move_down": {"ko":"{title} 아래로 이동","en":"Move {title} down","zh-CN":"下移 {title}"},
|
|
52
|
+
"terminal.move_up": {"ko":"{title} 위로 이동","en":"Move {title} up","zh-CN":"上移 {title}"},
|
|
53
|
+
"terminal.reorder_group": {"ko":"{title} 순서 변경","en":"Reorder {title}","zh-CN":"调整 {title} 的顺序"},
|
|
54
|
+
"terminal.reorder_hint": {"ko":"끌어서 순서 변경 · Alt+↑/↓ 키도 사용 가능","en":"Drag to reorder · Alt+↑/↓ also works","zh-CN":"拖动排序 · 也可使用 Alt+↑/↓"},
|
|
55
|
+
"terminal.reorder_help": {"ko":"세션 옆의 위아래 버튼을 누르거나, 세션에 초점을 둔 뒤 Alt와 위아래 화살표 키를 눌러 순서를 바꿀 수 있습니다.","en":"Use the up and down buttons beside a session, or focus it and press Alt with the arrow keys to reorder.","zh-CN":"可使用会话旁的上下按钮,或聚焦会话后按 Alt 加方向键调整顺序。"},
|
|
56
|
+
"terminal.reordered": {"ko":"세션 순서를 변경했습니다.","en":"Session order updated.","zh-CN":"会话顺序已更新。"},
|
|
57
|
+
"ui.10_minute_quick_start": {"ko":"10분 시작 가이드","en":"10-minute quick start","zh-CN":"10 分钟快速入门"},
|
|
58
|
+
"ui.a_new_update_is_available": {"ko":"새 업데이트가 있습니다.","en":"A new update is available.","zh-CN":"有新的更新可用。"},
|
|
59
|
+
"ui.a_new_version_is_available": {"ko":"새 버전을 사용할 수 있습니다.","en":"A new version is available.","zh-CN":"有新版本可用。"},
|
|
60
|
+
"ui.a_verified_installer_for_this_computer_can_be_downloaded_in": {"ko":"이 컴퓨터에 맞는 설치 파일을 앱에서 안전하게 받을 수 있습니다.","en":"A verified installer for this computer can be downloaded in the app.","zh-CN":"可在应用中安全下载适用于此电脑的已验证安装文件。"},
|
|
61
|
+
"ui.absolute_project_path": {"ko":"프로젝트의 절대 경로","en":"Absolute project path","zh-CN":"项目绝对路径"},
|
|
62
|
+
"ui.active_ai": {"ko":"활동 AI","en":"Active AI","zh-CN":"活跃 AI"},
|
|
63
|
+
"ui.active_now": {"ko":"지금 진행 중","en":"Active now","zh-CN":"正在进行"},
|
|
64
|
+
"ui.active_tasks": {"ko":"진행 중인 작업","en":"Active tasks","zh-CN":"进行中的任务"},
|
|
65
|
+
"ui.active_work_and_items_needing_your_review_appear_first_find": {"ko":"진행 중인 일과 내 확인이 필요한 일을 먼저 보여주고, 나머지 기록은 아래에서 찾을 수 있습니다.","en":"Active work and items needing your review appear first. Find everything else below.","zh-CN":"优先显示进行中的工作和需要您确认的事项,其余记录可在下方查看。"},
|
|
66
|
+
"ui.activity": {"ko":"활동","en":"Activity","zh-CN":"活动"},
|
|
67
|
+
"ui.add_tests": {"ko":"테스트 추가","en":"Add tests","zh-CN":"添加测试"},
|
|
68
|
+
"ui.add_window": {"ko":"창 추가","en":"Add window","zh-CN":"添加窗口"},
|
|
69
|
+
"ui.add_workspace": {"ko":"작업 폴더 추가","en":"Add workspace","zh-CN":"添加工作文件夹"},
|
|
70
|
+
"ui.advanced_settings": {"ko":"고급 설정","en":"Advanced settings","zh-CN":"高级设置"},
|
|
71
|
+
"ui.advanced_tools_and_settings": {"ko":"고급 기능과 설정","en":"Advanced tools and settings","zh-CN":"高级功能与设置"},
|
|
72
|
+
"ui.advanced_tools_to_open_only_when_needed": {"ko":"필요할 때만 여는 고급 기능이에요.","en":"Advanced tools to open only when needed.","zh-CN":"仅在需要时打开的高级功能。"},
|
|
73
|
+
"ui.advanced_work": {"ko":"고급 작업","en":"Advanced work","zh-CN":"高级工作"},
|
|
74
|
+
"ui.advanced_work_tools": {"ko":"고급 작업 도구","en":"Advanced work tools","zh-CN":"高级工作工具"},
|
|
75
|
+
"ui.agent_navigation_path": {"ko":"에이전트 탐색 경로","en":"Agent navigation path","zh-CN":"智能体导航路径"},
|
|
76
|
+
"ui.ai_cli_connections_were_checked_again": {"ko":"AI CLI 연결 상태를 다시 확인했습니다.","en":"AI CLI connections were checked again.","zh-CN":"已重新检查 AI CLI 连接状态。"},
|
|
77
|
+
"ui.ai_conversation_history": {"ko":"AI 대화 기록","en":"AI conversation history","zh-CN":"AI 对话记录"},
|
|
78
|
+
"ui.ai_provider_filter": {"ko":"AI 제공사 필터","en":"AI provider filter","zh-CN":"AI 提供商筛选"},
|
|
79
|
+
"ui.ai_task": {"ko":"AI 작업","en":"AI Task","zh-CN":"AI 任务"},
|
|
80
|
+
"ui.ai_with_a_green_indicator_is_working_now": {"ko":"초록 표시가 있는 AI는 지금 일하고 있어요.","en":"AI with a green indicator is working now.","zh-CN":"带绿色标记的 AI 正在工作。"},
|
|
81
|
+
"ui.ai_work_currently_in_progress": {"ko":"현재 진행 중인 AI 작업","en":"AI work currently in progress","zh-CN":"当前进行中的 AI 工作"},
|
|
82
|
+
"ui.ai_work_overview": {"ko":"AI 작업 현황","en":"AI Work Overview","zh-CN":"AI 工作概览"},
|
|
83
|
+
"ui.ai_working_now": {"ko":"지금 일하는 AI","en":"AI working now","zh-CN":"正在工作的 AI"},
|
|
84
|
+
"ui.all_ai": {"ko":"모든 AI","en":"All AI","zh-CN":"所有 AI"},
|
|
85
|
+
"ui.all_caught_up": {"ko":"모두 확인했습니다","en":"All caught up","zh-CN":"全部已确认"},
|
|
86
|
+
"ui.all_tasks": {"ko":"전체 작업","en":"All tasks","zh-CN":"全部任务"},
|
|
87
|
+
"ui.all_workspaces": {"ko":"모든 작업 폴더","en":"All workspaces","zh-CN":"所有工作文件夹"},
|
|
88
|
+
"ui.allow_ai_to_edit_files": {"ko":"AI가 파일을 고칠 수 있게 허용","en":"Allow AI to edit files","zh-CN":"允许 AI 修改文件"},
|
|
89
|
+
"ui.an_installer_for_this_computer_is_available": {"ko":"이 컴퓨터에 맞는 설치 파일을 받을 수 있습니다.","en":"An installer for this computer is available.","zh-CN":"可以下载适用于此电脑的安装文件。"},
|
|
90
|
+
"ui.application_management": {"ko":"프로그램 관리","en":"Application management","zh-CN":"应用管理"},
|
|
91
|
+
"ui.assign_a_new_task_to_ai": {"ko":"AI에게 새 일 맡기기","en":"Assign a new task to AI","zh-CN":"向 AI 分配新任务"},
|
|
92
|
+
"ui.assign_to_ai": {"ko":"AI에게 맡기기","en":"Assign to AI","zh-CN":"交给 AI"},
|
|
93
|
+
"ui.assign_work_to_ai": {"ko":"AI에게 일 맡기기","en":"Assign work to AI","zh-CN":"向 AI 分配工作"},
|
|
94
|
+
"ui.assistance": {"ko":"도움","en":"Assistance","zh-CN":"协助"},
|
|
95
|
+
"ui.available": {"ko":"사용 가능","en":"Available","zh-CN":"可用"},
|
|
96
|
+
"ui.available_ai": {"ko":"사용 가능한 AI","en":"Available AI","zh-CN":"可用 AI"},
|
|
97
|
+
"ui.back_to_all": {"ko":"전체 목록으로","en":"Back to all","zh-CN":"返回全部列表"},
|
|
98
|
+
"ui.back_to_task_list": {"ko":"작업 목록으로","en":"Back to task list","zh-CN":"返回任务列表"},
|
|
99
|
+
"ui.basics_completed": {"ko":"기본 사용법 완료","en":"Basics completed","zh-CN":"基础使用已完成"},
|
|
100
|
+
"ui.browse": {"ko":"폴더 찾기","en":"Browse","zh-CN":"浏览"},
|
|
101
|
+
"ui.change_the_search_filters_or_assign_a_new_task_to": {"ko":"검색 조건을 바꾸거나 AI에게 새 일을 맡겨보세요.","en":"Change the search filters or assign a new task to AI.","zh-CN":"请更改搜索条件或向 AI 分配新任务。"},
|
|
102
|
+
"ui.check_ai_connections_again": {"ko":"AI 연결 상태 다시 확인","en":"Check AI connections again","zh-CN":"重新检查 AI 连接"},
|
|
103
|
+
"ui.check_ai_readiness_then_start_your_first_task": {"ko":"AI 준비 상태를 확인한 뒤 첫 작업을 시작해보세요.","en":"Check AI readiness, then start your first task.","zh-CN":"检查 AI 准备状态后,开始第一个任务。"},
|
|
104
|
+
"ui.check_failed": {"ko":"확인 실패","en":"Check failed","zh-CN":"检查失败"},
|
|
105
|
+
"ui.check_progress": {"ko":"진행 상황 확인","en":"Check progress","zh-CN":"查看进度"},
|
|
106
|
+
"ui.check_version_and_updates": {"ko":"버전과 업데이트 확인","en":"Check version and updates","zh-CN":"检查版本和更新"},
|
|
107
|
+
"ui.check_versions_and_updates": {"ko":"버전과 업데이트를 확인하세요.","en":"Check versions and updates.","zh-CN":"检查版本和更新。"},
|
|
108
|
+
"ui.check_your_internet_connection_and_try_again": {"ko":"인터넷 연결을 확인한 뒤 다시 시도할 수 있습니다.","en":"Check your internet connection and try again.","zh-CN":"请检查网络连接后重试。"},
|
|
109
|
+
"ui.checking": {"ko":"확인 중…","en":"Checking…","zh-CN":"检查中…"},
|
|
110
|
+
"ui.checking_for_updates": {"ko":"업데이트를 확인하고 있습니다.","en":"Checking for updates.","zh-CN":"正在检查更新。"},
|
|
111
|
+
"ui.checking_installation_type": {"ko":"설치 방식 확인 중","en":"Checking installation type","zh-CN":"正在检查安装方式"},
|
|
112
|
+
"ui.checking_latest_version": {"ko":"최신 버전 확인 중","en":"Checking latest version","zh-CN":"正在检查最新版本"},
|
|
113
|
+
"ui.checking_size": {"ko":"크기 확인 중","en":"Checking size","zh-CN":"正在检查大小"},
|
|
114
|
+
"ui.checking_the_latest_version": {"ko":"최신 버전을 확인하고 있습니다.","en":"Checking the latest version.","zh-CN":"正在检查最新版本。"},
|
|
115
|
+
"ui.checks_the_latest_stable_github_release": {"ko":"GitHub의 최신 정식 릴리스를 확인합니다.","en":"Checks the latest stable GitHub release.","zh-CN":"检查 GitHub 最新正式版本。"},
|
|
116
|
+
"ui.choose_a_pane_in_the_map_above_to_view_output": {"ko":"위 지도에서 칸을 고르면 출력 확인, 명령 전송, 창 나누기와 종료를 여기서 처리합니다.","en":"Choose a pane in the map above to view output, send commands, split panes, or close them here.","zh-CN":"在上方地图中选择窗格后,可在此查看输出、发送命令、分割或关闭窗格。"},
|
|
117
|
+
"ui.choose_a_project_folder": {"ko":"프로젝트 폴더를 선택하세요","en":"Choose a project folder","zh-CN":"请选择项目文件夹"},
|
|
118
|
+
"ui.choose_a_session_on_the_left_or_create_a_new": {"ko":"왼쪽 목록에서 이어갈 세션을 고르거나 새 세션을 만드세요.","en":"Choose a session on the left or create a new one.","zh-CN":"从左侧列表选择要继续的会话,或新建会话。"},
|
|
119
|
+
"ui.choose_a_session_on_the_left_or_create_one_to": {"ko":"왼쪽 세션을 고르거나 새 세션을 만들면 실시간 출력과 명령 입력창이 열립니다.","en":"Choose a session on the left or create one to open live output and command input.","zh-CN":"选择左侧会话或新建会话,即可打开实时输出和命令输入。"},
|
|
120
|
+
"ui.choose_a_session_on_the_left_to_continue_with_its": {"ko":"왼쪽에서 세션을 고르면 이전 AI 대화와 실시간 터미널을 나란히 보며 그대로 이어서 작업할 수 있습니다.","en":"Choose a session on the left to continue with its prior AI conversation beside the live terminal.","zh-CN":"从左侧选择会话,即可在历史 AI 对话和实时终端旁继续工作。"},
|
|
121
|
+
"ui.choose_a_session_to_continue": {"ko":"이어갈 세션을 선택하세요","en":"Choose a session to continue","zh-CN":"选择要继续的会话"},
|
|
122
|
+
"ui.choose_a_task_and_workspace_to_get_started": {"ko":"할 일과 작업 폴더를 고르면 바로 시작돼요.","en":"Choose a task and workspace to get started.","zh-CN":"选择任务和工作文件夹即可开始。"},
|
|
123
|
+
"ui.choose_an_ai_and_workspace_to_finish_setup": {"ko":"AI와 작업 폴더만 고르면 준비가 끝납니다.","en":"Choose an AI and workspace to finish setup.","zh-CN":"选择 AI 和工作文件夹即可完成准备。"},
|
|
124
|
+
"ui.choose_how_to_run": {"ko":"실행 방법 선택","en":"Choose how to run","zh-CN":"选择运行方式"},
|
|
125
|
+
"ui.choose_the_display_language_and_compare_the_installed_version_with": {"ko":"표시 언어를 선택하고, 현재 설치된 버전과 최신 정식 버전을 확인할 수 있습니다.","en":"Choose the display language and compare the installed version with the latest stable release.","zh-CN":"选择显示语言,并比较当前安装版本与最新正式版本。"},
|
|
126
|
+
"ui.choose_the_language_used_for_menus_and_guidance_changes_apply": {"ko":"메뉴와 안내 문구에 사용할 언어를 선택하세요. 변경 사항은 바로 적용되고 다음 실행에도 유지됩니다.","en":"Choose the language used for menus and guidance. Changes apply immediately and persist after restart.","zh-CN":"选择菜单和提示所使用的语言。更改将立即生效,并在下次启动时保留。"},
|
|
127
|
+
"ui.clear": {"ko":"화면 정리","en":"Clear","zh-CN":"清屏"},
|
|
128
|
+
"ui.clear_terminal_screen": {"ko":"터미널 화면 정리","en":"Clear terminal screen","zh-CN":"清理终端屏幕"},
|
|
129
|
+
"ui.clear_the_search_or_change_the_ai_and_workspace_filters": {"ko":"검색어를 지우거나 AI와 작업 폴더 필터를 바꿔보세요.","en":"Clear the search or change the AI and workspace filters.","zh-CN":"请清除搜索词,或更改 AI 和工作文件夹筛选条件。"},
|
|
130
|
+
"ui.cli_found": {"ko":"CLI 발견됨","en":"CLI found","zh-CN":"已找到 CLI"},
|
|
131
|
+
"ui.close_entire_window": {"ko":"창 전체 닫기","en":"Close entire window","zh-CN":"关闭整个窗口"},
|
|
132
|
+
"ui.close_multi_window_workspace_dialog": {"ko":"여러 창 작업 만들기 닫기","en":"Close multi-window workspace dialog","zh-CN":"关闭多窗口工作组窗口"},
|
|
133
|
+
"ui.close_new_task_dialog": {"ko":"새 작업 창 닫기","en":"Close new task dialog","zh-CN":"关闭新任务窗口"},
|
|
134
|
+
"ui.close_selected_pane": {"ko":"선택한 칸 닫기","en":"Close selected pane","zh-CN":"关闭所选窗格"},
|
|
135
|
+
"ui.collapse_conversation_panel": {"ko":"대화 영역 접기","en":"Collapse conversation panel","zh-CN":"收起对话区域"},
|
|
136
|
+
"ui.collapse_guide": {"ko":"가이드 접기","en":"Collapse guide","zh-CN":"收起指南"},
|
|
137
|
+
"ui.compare_installed_and_latest_versions": {"ko":"설치 버전과 최신 버전 비교","en":"Compare installed and latest versions","zh-CN":"比较已安装版本和最新版本"},
|
|
138
|
+
"ui.compare_the_installed_and_latest_stable_versions_then_download_a": {"ko":"현재 설치 버전과 최신 정식 버전을 비교하고, 안전하게 검증된 설치 파일을 받을 수 있습니다.","en":"Compare the installed and latest stable versions, then download a verified installer.","zh-CN":"比较当前安装版本与最新正式版本,并下载经过验证的安装文件。"},
|
|
139
|
+
"ui.completed": {"ko":"완료","en":"Completed","zh-CN":"已完成"},
|
|
140
|
+
"ui.connected_ai_session": {"ko":"연결된 AI 세션","en":"Connected AI session","zh-CN":"已连接的 AI 会话"},
|
|
141
|
+
"ui.connecting": {"ko":"연결 중","en":"Connecting","zh-CN":"连接中"},
|
|
142
|
+
"ui.connection_failed": {"ko":"연결 실패","en":"Connection failed","zh-CN":"连接失败"},
|
|
143
|
+
"ui.continue_ai_sessions_in_the_terminal": {"ko":"AI 세션을 터미널에서 이어가세요.","en":"Continue AI sessions in the terminal.","zh-CN":"在终端中继续 AI 会话。"},
|
|
144
|
+
"ui.continue_an_existing_ai_conversation_directly": {"ko":"기존 AI 대화를 직접 이어서 입력","en":"Continue an existing AI conversation directly","zh-CN":"直接继续现有 AI 对话"},
|
|
145
|
+
"ui.continue_an_existing_conversation": {"ko":"기존 대화 이어가기","en":"Continue an existing conversation","zh-CN":"继续现有对话"},
|
|
146
|
+
"ui.continue_instructing_ai": {"ko":"AI에게 이어서 지시","en":"Continue instructing AI","zh-CN":"继续向 AI 发出指令"},
|
|
147
|
+
"ui.continue_the_same_task_with_its_previous_conversation_beside_the": {"ko":"이전 대화와 실시간 명령창을 나란히 보며 같은 작업을 계속할 수 있습니다.","en":"Continue the same task with its previous conversation beside the live terminal.","zh-CN":"在历史对话和实时终端并排显示的界面中继续同一任务。"},
|
|
148
|
+
"ui.control_directly": {"ko":"직접 조작하기","en":"Control directly","zh-CN":"直接操作"},
|
|
149
|
+
"ui.control_tmux_terminals": {"ko":"tmux 명령창 조작","en":"Control tmux terminals","zh-CN":"操作 tmux 终端"},
|
|
150
|
+
"ui.conversation": {"ko":"대화 내용","en":"Conversation","zh-CN":"对话内容"},
|
|
151
|
+
"ui.conversation_and_execution_together": {"ko":"대화와 실행 화면을 한곳에서","en":"Conversation and execution together","zh-CN":"对话与执行同屏"},
|
|
152
|
+
"ui.conversation_history_is_read_only_on_this_pc": {"ko":"대화 기록은 이 PC에서만 읽습니다","en":"Conversation history is read only on this PC","zh-CN":"对话记录仅在此电脑读取"},
|
|
153
|
+
"ui.could_not_check_for_updates": {"ko":"업데이트를 확인하지 못했습니다.","en":"Could not check for updates.","zh-CN":"无法检查更新。"},
|
|
154
|
+
"ui.could_not_open_the_github_release_page": {"ko":"GitHub 릴리스 페이지를 열지 못했습니다.","en":"Could not open the GitHub release page.","zh-CN":"无法打开 GitHub 发布页面。"},
|
|
155
|
+
"ui.could_not_prepare_the_update_file": {"ko":"업데이트 파일을 준비하지 못했습니다.","en":"Could not prepare the update file.","zh-CN":"无法准备更新文件。"},
|
|
156
|
+
"ui.could_not_send_the_stop_request": {"ko":"중지 요청을 보내지 못했습니다.","en":"Could not send the stop request.","zh-CN":"无法发送停止请求。"},
|
|
157
|
+
"ui.could_not_start_the_task": {"ko":"실행을 시작하지 못했습니다.","en":"Could not start the task.","zh-CN":"无法启动任务。"},
|
|
158
|
+
"ui.create_multi_window_workspace": {"ko":"여러 창 작업 만들기","en":"Create multi-window workspace","zh-CN":"创建多窗口工作组"},
|
|
159
|
+
"ui.create_tmux_workspace": {"ko":"+ tmux 작업 만들기","en":"+ Create tmux workspace","zh-CN":"+ 创建 tmux 工作组"},
|
|
160
|
+
"ui.create_workspace": {"ko":"작업 묶음 만들기","en":"Create workspace","zh-CN":"创建工作组"},
|
|
161
|
+
"ui.describe_the_task": {"ko":"할 일 적기","en":"Describe the task","zh-CN":"填写任务"},
|
|
162
|
+
"ui.describe_the_task_then_choose_which_ai_will_work_in": {"ko":"할 일을 먼저 적고, 어떤 AI가 어디서 작업할지 선택하세요.","en":"Describe the task, then choose which AI will work in which folder.","zh-CN":"先描述任务,再选择由哪个 AI 在哪个文件夹中工作。"},
|
|
163
|
+
"ui.desktop_installer": {"ko":"데스크톱 설치 파일","en":"Desktop installer","zh-CN":"桌面安装版本"},
|
|
164
|
+
"ui.direct_input_available": {"ko":"직접 입력 가능","en":"Direct input available","zh-CN":"可直接输入"},
|
|
165
|
+
"ui.download_the_update_from_settings": {"ko":"설정에서 업데이트 파일을 받을 수 있습니다.","en":"Download the update from Settings.","zh-CN":"可在设置中下载更新文件。"},
|
|
166
|
+
"ui.downloading": {"ko":"다운로드 중","en":"Downloading","zh-CN":"正在下载"},
|
|
167
|
+
"ui.downloading_2": {"ko":"다운로드 중…","en":"Downloading…","zh-CN":"下载中…"},
|
|
168
|
+
"ui.downloading_the_update_file": {"ko":"업데이트 파일을 받고 있습니다.","en":"Downloading the update file.","zh-CN":"正在下载更新文件。"},
|
|
169
|
+
"ui.drafts_and_prereleases_are_excluded_only_tags_newer_than_the": {"ko":"초안과 프리릴리스는 제외하고, 패키지 버전보다 높은 태그만 안내합니다.","en":"Drafts and prereleases are excluded; only tags newer than the installed package are shown.","zh-CN":"排除草稿和预发布版本,仅提示高于当前软件包版本的标签。"},
|
|
170
|
+
"ui.end_session": {"ko":"세션 종료","en":"End session","zh-CN":"结束会话"},
|
|
171
|
+
"ui.end_workspace": {"ko":"작업 묶음 끝내기","en":"End workspace","zh-CN":"结束工作组"},
|
|
172
|
+
"ui.ended_pane": {"ko":"종료된 칸","en":"Ended pane","zh-CN":"已结束窗格"},
|
|
173
|
+
"ui.ended_session": {"ko":"종료된 세션","en":"Ended session","zh-CN":"已结束会话"},
|
|
174
|
+
"ui.enter_a_command_to_run": {"ko":"실행할 명령을 입력하세요","en":"Enter a command to run","zh-CN":"输入要运行的命令"},
|
|
175
|
+
"ui.enter_to_send_shift_enter_for_newline": {"ko":"Enter 전송 · Shift+Enter 줄바꿈","en":"Enter to send · Shift+Enter for newline","zh-CN":"Enter 发送 · Shift+Enter 换行"},
|
|
176
|
+
"ui.equal_height": {"ko":"같은 높이","en":"Equal height","zh-CN":"等高"},
|
|
177
|
+
"ui.equal_width": {"ko":"같은 너비","en":"Equal width","zh-CN":"等宽"},
|
|
178
|
+
"ui.example_claude_or_codex": {"ko":"예: claude 또는 codex","en":"Example: claude or codex","zh-CN":"例如:claude 或 codex"},
|
|
179
|
+
"ui.example_find_and_fix_the_login_screen_error_then_run": {"ko":"예: 로그인 화면의 오류를 찾아 고치고, 관련 테스트까지 실행해줘","en":"Example: Find and fix the login screen error, then run the related tests","zh-CN":"例如:查找并修复登录页面错误,然后运行相关测试"},
|
|
180
|
+
"ui.execution": {"ko":"실행","en":"Execution","zh-CN":"执行"},
|
|
181
|
+
"ui.file_verification": {"ko":"파일 검증","en":"File verification","zh-CN":"文件验证"},
|
|
182
|
+
"ui.file_verified": {"ko":"파일 검증 완료","en":"File verified","zh-CN":"文件验证完成"},
|
|
183
|
+
"ui.find_items_to_review": {"ko":"확인할 일 찾기","en":"Find items to review","zh-CN":"查找待确认事项"},
|
|
184
|
+
"ui.find_task_ai_or_folder": {"ko":"작업 이름, AI, 폴더 찾기","en":"Find task, AI, or folder","zh-CN":"查找任务、AI 或文件夹"},
|
|
185
|
+
"ui.first_10_minutes": {"ko":"첫 10분 코스","en":"First 10 minutes","zh-CN":"前 10 分钟入门"},
|
|
186
|
+
"ui.fix_a_bug": {"ko":"오류 수정","en":"Fix a bug","zh-CN":"修复错误"},
|
|
187
|
+
"ui.get_the_latest_file_directly_from_github_releases": {"ko":"GitHub 릴리스에서 최신 파일을 직접 확인하세요.","en":"Get the latest file directly from GitHub Releases.","zh-CN":"请直接在 GitHub Releases 中获取最新文件。"},
|
|
188
|
+
"ui.global_npm_installation": {"ko":"npm 전역 설치본","en":"Global npm installation","zh-CN":"npm 全局安装版本"},
|
|
189
|
+
"ui.handle_items_that_need_your_review_first": {"ko":"내 확인이 필요한 일을 먼저 처리하세요.","en":"Handle items that need your review first.","zh-CN":"请优先处理需要您确认的事项。"},
|
|
190
|
+
"ui.helper_ai_history": {"ko":"도움 AI 기록","en":"Helper AI history","zh-CN":"协助 AI 记录"},
|
|
191
|
+
"ui.highest_context_usage": {"ko":"기억 공간을 많이 쓴 순서","en":"Highest context usage","zh-CN":"记忆空间使用最高优先"},
|
|
192
|
+
"ui.highest_usage": {"ko":"많이 사용한 순서","en":"Highest usage","zh-CN":"使用量最高优先"},
|
|
193
|
+
"ui.history": {"ko":"지난 기록","en":"History","zh-CN":"历史记录"},
|
|
194
|
+
"ui.idle": {"ko":"쉬는 중","en":"Idle","zh-CN":"空闲"},
|
|
195
|
+
"ui.include_the_expected_result_and_constraints_for_better_accuracy": {"ko":"결과와 제약을 함께 적으면 더 정확해요.","en":"Include the expected result and constraints for better accuracy.","zh-CN":"同时写明预期结果和限制条件会更准确。"},
|
|
196
|
+
"ui.initial_command": {"ko":"처음 실행할 명령","en":"Initial command","zh-CN":"初始命令"},
|
|
197
|
+
"ui.installed_version": {"ko":"현재 설치 버전","en":"Installed version","zh-CN":"当前安装版本"},
|
|
198
|
+
"ui.interrupt": {"ko":"실행 중단","en":"Interrupt","zh-CN":"中断执行"},
|
|
199
|
+
"ui.interrupt_the_running_command": {"ko":"현재 실행 중인 명령 중단","en":"Interrupt the running command","zh-CN":"中断当前运行的命令"},
|
|
200
|
+
"ui.items": {"ko":"개","en":"items","zh-CN":"个"},
|
|
201
|
+
"ui.items_marked_needs_review_need_a_response_or_choice": {"ko":"‘내 확인 필요’ 상태에는 답변이나 선택이 필요해요.","en":"Items marked “Needs review” need a response or choice.","zh-CN":"标记为“需要我确认”的事项需要回复或选择。"},
|
|
202
|
+
"ui.keep_the_app_open_until_the_download_finishes": {"ko":"다운로드가 끝날 때까지 앱을 종료하지 마세요.","en":"Keep the app open until the download finishes.","zh-CN":"下载完成前请勿退出应用。"},
|
|
203
|
+
"ui.language": {"ko":"언어","en":"Language","zh-CN":"语言"},
|
|
204
|
+
"ui.latest_github_tag": {"ko":"GitHub 최신 태그","en":"Latest GitHub tag","zh-CN":"GitHub 最新标签"},
|
|
205
|
+
"ui.latest_version": {"ko":"최신 버전","en":"Latest version","zh-CN":"最新版本"},
|
|
206
|
+
"ui.leave_blank_if_unsure": {"ko":"몰라도 비워두세요","en":"Leave blank if unsure","zh-CN":"不确定时请留空"},
|
|
207
|
+
"ui.leave_blank_to_let_the_ai_choose": {"ko":"비워두면 AI가 알아서 선택합니다","en":"Leave blank to let the AI choose","zh-CN":"留空则由 AI 自动选择"},
|
|
208
|
+
"ui.linux_session": {"ko":"+ Linux 세션","en":"+ Linux session","zh-CN":"+ Linux 会话"},
|
|
209
|
+
"ui.live_terminal": {"ko":"실시간 터미널","en":"Live terminal","zh-CN":"实时终端"},
|
|
210
|
+
"ui.live_terminal_and_command_input": {"ko":"실시간 터미널과 명령 입력","en":"Live terminal and command input","zh-CN":"实时终端与命令输入"},
|
|
211
|
+
"ui.loading_conversation_history": {"ko":"대화 기록을 불러오는 중","en":"Loading conversation history","zh-CN":"正在加载对话记录"},
|
|
212
|
+
"ui.local_development_build": {"ko":"로컬 개발 실행본","en":"Local development build","zh-CN":"本地开发版本"},
|
|
213
|
+
"ui.main_tasks": {"ko":"메인 작업","en":"Main tasks","zh-CN":"主要任务"},
|
|
214
|
+
"ui.main_window_on_left": {"ko":"중요 창 왼쪽","en":"Main window on left","zh-CN":"主窗口在左"},
|
|
215
|
+
"ui.main_window_on_top": {"ko":"중요 창 위쪽","en":"Main window on top","zh-CN":"主窗口在上"},
|
|
216
|
+
"ui.manage_multi_terminal_work_in_one_place": {"ko":"여러 명령창 작업을 한곳에서 관리하세요.","en":"Manage multi-terminal work in one place.","zh-CN":"在一处管理多终端工作。"},
|
|
217
|
+
"ui.manage_multiple_terminals_together": {"ko":"여러 명령창을 묶어 관리","en":"Manage multiple terminals together","zh-CN":"集中管理多个终端"},
|
|
218
|
+
"ui.manual_update": {"ko":"수동 업데이트","en":"Manual update","zh-CN":"手动更新"},
|
|
219
|
+
"ui.model": {"ko":"사용 모델","en":"Model","zh-CN":"使用模型"},
|
|
220
|
+
"ui.most_recently_active": {"ko":"최근에 움직인 순서","en":"Most recently active","zh-CN":"最近活动优先"},
|
|
221
|
+
"ui.my_terminal_sessions": {"ko":"내 터미널 세션","en":"My terminal sessions","zh-CN":"我的终端会话"},
|
|
222
|
+
"ui.needs_attention": {"ko":"확인 필요","en":"Needs attention","zh-CN":"需要确认"},
|
|
223
|
+
"ui.new_ai_task": {"ko":"새 AI 작업","en":"New AI Task","zh-CN":"新建 AI 任务"},
|
|
224
|
+
"ui.new_tasks_will_show_their_progress_here_immediately": {"ko":"새 일을 맡기면 진행 상황이 이곳에 바로 표시됩니다.","en":"New tasks will show their progress here immediately.","zh-CN":"分配新任务后,进度会立即显示在此处。"},
|
|
225
|
+
"ui.no_ai_cli_is_ready_follow_the_official_setup_guide": {"ko":"준비된 AI CLI가 없습니다. 공식 설치 안내를 따라 설치·로그인한 뒤 다시 확인해 주세요.","en":"No AI CLI is ready. Follow the official setup guide, sign in, and check again.","zh-CN":"没有可用的 AI CLI。请按照官方安装指南安装并登录,然后重新检查。"},
|
|
226
|
+
"ui.no_project": {"ko":"프로젝트 없음","en":"No project","zh-CN":"无项目"},
|
|
227
|
+
"ui.no_release_notes_were_provided_for_this_release": {"ko":"이 릴리스에 작성된 변경 사항이 없습니다.","en":"No release notes were provided for this release.","zh-CN":"此版本未提供更新说明。"},
|
|
228
|
+
"ui.no_search_results": {"ko":"검색 결과가 없습니다","en":"No search results","zh-CN":"没有搜索结果"},
|
|
229
|
+
"ui.no_tasks_are_currently_active": {"ko":"현재 진행 중인 작업이 없습니다","en":"No tasks are currently active","zh-CN":"当前没有进行中的任务"},
|
|
230
|
+
"ui.no_tasks_are_waiting_for_your_response_or_choice": {"ko":"지금은 내 답변이나 선택을 기다리는 작업이 없습니다.","en":"No tasks are waiting for your response or choice.","zh-CN":"目前没有任务在等待您的回复或选择。"},
|
|
231
|
+
"ui.no_tasks_to_show_yet": {"ko":"아직 보여줄 작업이 없습니다","en":"No tasks to show yet","zh-CN":"暂无可显示的任务"},
|
|
232
|
+
"ui.not_checked": {"ko":"확인 전","en":"Not checked","zh-CN":"尚未检查"},
|
|
233
|
+
"ui.only_tasks_waiting_for_your_response_or_choice_are_shown": {"ko":"답변이나 선택을 기다리는 작업만 모았습니다. 항목을 열어 필요한 내용을 확인하세요.","en":"Only tasks waiting for your response or choice are shown. Open one to review it.","zh-CN":"这里只显示等待您回复或选择的任务,请打开项目查看所需内容。"},
|
|
234
|
+
"ui.only_work_using_tmux_appears_here_regular_terminals_are_kept": {"ko":"tmux를 사용하는 작업만 모아 봅니다. 일반 명령창은 이 화면에 섞이지 않습니다.","en":"Only work using tmux appears here. Regular terminals are kept separate.","zh-CN":"此处仅显示使用 tmux 的工作,普通终端不会混入。"},
|
|
235
|
+
"ui.open_a_task": {"ko":"작업 열어보기 →","en":"Open a task →","zh-CN":"打开任务 →"},
|
|
236
|
+
"ui.open_a_task_to_see_who_started_it_and_what": {"ko":"일을 누르면 누가 시작했고, 다른 AI에게 어떤 도움을 맡겼는지 쉽게 볼 수 있습니다.","en":"Open a task to see who started it and what help was delegated to other AI.","zh-CN":"点击任务即可查看由谁发起,以及向其他 AI 分配了哪些协助。"},
|
|
237
|
+
"ui.open_installer": {"ko":"설치 파일 열기","en":"Open installer","zh-CN":"打开安装文件"},
|
|
238
|
+
"ui.open_the_installer_and_follow_its_instructions_to_finish_updating": {"ko":"설치 파일을 열고 화면의 안내에 따라 업데이트를 마무리하세요.","en":"Open the installer and follow its instructions to finish updating.","zh-CN":"打开安装文件并按照屏幕提示完成更新。"},
|
|
239
|
+
"ui.optional": {"ko":"선택 사항","en":"Optional","zh-CN":"可选"},
|
|
240
|
+
"ui.output_and_draft_commands_remain_when_you_return_from_another": {"ko":"다른 작업을 보고 돌아와도 출력과 작성 중인 명령이 그대로 남아 있어요.","en":"Output and draft commands remain when you return from another view.","zh-CN":"查看其他工作后返回时,输出和正在编辑的命令仍会保留。"},
|
|
241
|
+
"ui.overall_statistics": {"ko":"전체 통계","en":"Overall statistics","zh-CN":"总体统计"},
|
|
242
|
+
"ui.planning": {"ko":"계획","en":"Planning","zh-CN":"规划"},
|
|
243
|
+
"ui.preferences": {"ko":"환경 설정","en":"Preferences","zh-CN":"偏好设置"},
|
|
244
|
+
"ui.preparing": {"ko":"준비 중","en":"Preparing","zh-CN":"准备中"},
|
|
245
|
+
"ui.previous_conversation_for_selected_ai": {"ko":"선택한 AI의 이전 대화","en":"Previous conversation for selected AI","zh-CN":"所选 AI 的历史对话"},
|
|
246
|
+
"ui.problem": {"ko":"문제 발생","en":"Problem","zh-CN":"出现问题"},
|
|
247
|
+
"ui.progress": {"ko":"진행 과정","en":"Progress","zh-CN":"进度"},
|
|
248
|
+
"ui.quick_prompt_examples": {"ko":"빠른 요청 예시","en":"Quick prompt examples","zh-CN":"快速请求示例"},
|
|
249
|
+
"ui.quick_start_progress": {"ko":"시작 가이드 진행률","en":"Quick-start progress","zh-CN":"入门指南进度"},
|
|
250
|
+
"ui.reading_the_latest_stable_github_release_tag": {"ko":"GitHub의 최신 정식 릴리스 태그를 읽는 중입니다.","en":"Reading the latest stable GitHub release tag.","zh-CN":"正在读取 GitHub 最新正式版本标签。"},
|
|
251
|
+
"ui.ready_for_commands": {"ko":"명령 전송 가능","en":"Ready for commands","zh-CN":"可发送命令"},
|
|
252
|
+
"ui.ready_to_check_for_updates": {"ko":"업데이트 확인을 준비하고 있습니다.","en":"Ready to check for updates.","zh-CN":"准备检查更新。"},
|
|
253
|
+
"ui.ready_to_install": {"ko":"설치 준비 완료","en":"Ready to install","zh-CN":"已准备安装"},
|
|
254
|
+
"ui.recent_conversations_and_tasks": {"ko":"최근 대화와 작업","en":"Recent conversations and tasks","zh-CN":"最近的对话和任务"},
|
|
255
|
+
"ui.recent_workspaces": {"ko":"최근 작업 폴더","en":"Recent workspaces","zh-CN":"最近的工作文件夹"},
|
|
256
|
+
"ui.refresh": {"ko":"↻ 새로고침","en":"↻ Refresh","zh-CN":"↻ 刷新"},
|
|
257
|
+
"ui.regular_terminals_are_hidden": {"ko":"일반 명령창은 표시하지 않음","en":"Regular terminals are hidden","zh-CN":"不显示普通终端"},
|
|
258
|
+
"ui.release_notes": {"ko":"변경 사항","en":"Release notes","zh-CN":"更新内容"},
|
|
259
|
+
"ui.remove_from_list": {"ko":"목록에서 제거","en":"Remove from list","zh-CN":"从列表中移除"},
|
|
260
|
+
"ui.rename_workspace": {"ko":"작업 묶음 이름 바꾸기","en":"Rename workspace","zh-CN":"重命名工作组"},
|
|
261
|
+
"ui.research": {"ko":"자료 조사","en":"Research","zh-CN":"资料调查"},
|
|
262
|
+
"ui.restart": {"ko":"다시 시작","en":"Restart","zh-CN":"重新启动"},
|
|
263
|
+
"ui.review": {"ko":"검토","en":"Review","zh-CN":"审查"},
|
|
264
|
+
"ui.review_code": {"ko":"코드 검토","en":"Review code","zh-CN":"代码审查"},
|
|
265
|
+
"ui.runtime": {"ko":"런타임","en":"Runtime","zh-CN":"运行时"},
|
|
266
|
+
"ui.search_tasks": {"ko":"작업 검색","en":"Search tasks","zh-CN":"搜索任务"},
|
|
267
|
+
"ui.secure_on_this_computer": {"ko":"내 컴퓨터에서 안전하게","en":"Secure on this computer","zh-CN":"安全保存在本机"},
|
|
268
|
+
"ui.see_all_ai_work_at_a_glance": {"ko":"AI 작업을 한눈에 확인하세요.","en":"See all AI work at a glance.","zh-CN":"一目了然地查看所有 AI 工作。"},
|
|
269
|
+
"ui.see_conversation_progress_and_usage_in_one_place": {"ko":"대화, 진행 과정, 사용량을 한곳에서 확인해요.","en":"See conversation, progress, and usage in one place.","zh-CN":"在一处查看对话、进度和用量。"},
|
|
270
|
+
"ui.see_what_is_being_handled_then_open_a_task_for": {"ko":"무슨 일을 처리 중인지 보고, 작업을 누르면 AI 사이의 역할과 최신 진행 상황을 자세히 볼 수 있습니다.","en":"See what is being handled, then open a task for AI roles and the latest progress.","zh-CN":"查看正在处理的内容,点击任务可详细了解 AI 之间的角色和最新进度。"},
|
|
271
|
+
"ui.see_which_ai_is_working_now": {"ko":"현재 일하고 있는 AI를 확인하세요.","en":"See which AI is working now.","zh-CN":"查看当前正在工作的 AI。"},
|
|
272
|
+
"ui.select_a_session": {"ko":"세션을 선택해 주세요","en":"Select a session","zh-CN":"请选择会话"},
|
|
273
|
+
"ui.select_a_session_on_the_left_first": {"ko":"먼저 왼쪽에서 세션을 선택하세요","en":"Select a session on the left first","zh-CN":"请先从左侧选择会话"},
|
|
274
|
+
"ui.select_a_session_to_show_its_output_here": {"ko":"세션을 선택하면 출력이 여기에 표시됩니다","en":"Select a session to show its output here","zh-CN":"选择会话后,输出将显示在此处"},
|
|
275
|
+
"ui.select_a_session_to_start_typing": {"ko":"세션을 선택하면 바로 입력할 수 있습니다.","en":"Select a session to start typing.","zh-CN":"选择会话后即可输入。"},
|
|
276
|
+
"ui.selected_tmux_terminal": {"ko":"선택한 tmux 명령창","en":"Selected tmux terminal","zh-CN":"所选 tmux 终端"},
|
|
277
|
+
"ui.selects_the_windows_installer_or_macos_dmg_that_matches_the": {"ko":"운영체제와 CPU에 맞는 Windows 설치 파일 또는 macOS DMG를 선택합니다.","en":"Selects the Windows installer or macOS DMG that matches the OS and CPU.","zh-CN":"选择与操作系统和 CPU 匹配的 Windows 安装文件或 macOS DMG。"},
|
|
278
|
+
"ui.send_command_to_terminal": {"ko":"터미널에 명령 보내기","en":"Send command to terminal","zh-CN":"向终端发送命令"},
|
|
279
|
+
"ui.send_to_tmux_terminal": {"ko":"tmux 명령창에 보내기","en":"Send to tmux terminal","zh-CN":"发送到 tmux 终端"},
|
|
280
|
+
"ui.session_not_linked_to_a_specific_project": {"ko":"특정 프로젝트에 연결되지 않은 세션","en":"Session not linked to a specific project","zh-CN":"未连接到特定项目的会话"},
|
|
281
|
+
"ui.sessions_stay_open_when_you_change_views": {"ko":"세션은 화면을 옮겨도 유지됩니다.","en":"Sessions stay open when you change views.","zh-CN":"切换页面时会话仍会保持。"},
|
|
282
|
+
"ui.setup_required": {"ko":"설치 필요","en":"Setup required","zh-CN":"需要安装"},
|
|
283
|
+
"ui.sha256_size_check": {"ko":"SHA-256 · 크기 확인","en":"SHA-256 · Size check","zh-CN":"SHA-256 · 大小校验"},
|
|
284
|
+
"ui.show_more_tasks": {"ko":"작업 더 보기","en":"Show more tasks","zh-CN":"显示更多任务"},
|
|
285
|
+
"ui.sort": {"ko":"정렬","en":"Sort","zh-CN":"排序"},
|
|
286
|
+
"ui.split_left_right": {"ko":"좌우로 나누기","en":"Split left/right","zh-CN":"左右分割"},
|
|
287
|
+
"ui.split_top_bottom": {"ko":"상하로 나누기","en":"Split top/bottom","zh-CN":"上下分割"},
|
|
288
|
+
"ui.stable_github_releases": {"ko":"GitHub 정식 릴리스","en":"Stable GitHub releases","zh-CN":"GitHub 正式版本"},
|
|
289
|
+
"ui.stable_releases_only": {"ko":"정식 릴리스 기준","en":"Stable releases only","zh-CN":"以正式版本为准"},
|
|
290
|
+
"ui.start": {"ko":"시작","en":"Start","zh-CN":"开始"},
|
|
291
|
+
"ui.start_ai_task": {"ko":"AI 작업 시작","en":"Start AI task","zh-CN":"开始 AI 任务"},
|
|
292
|
+
"ui.starting_folder": {"ko":"시작 폴더","en":"Starting folder","zh-CN":"起始文件夹"},
|
|
293
|
+
"ui.status_by_ai": {"ko":"AI별 현황","en":"Status by AI","zh-CN":"各 AI 状态"},
|
|
294
|
+
"ui.stop_request_sent": {"ko":"중지 요청을 보냈습니다.","en":"Stop request sent.","zh-CN":"已发送停止请求。"},
|
|
295
|
+
"ui.stopped": {"ko":"중지됨","en":"Stopped","zh-CN":"已停止"},
|
|
296
|
+
"ui.task_for_ai": {"ko":"AI에게 맡길 일","en":"Task for AI","zh-CN":"交给 AI 的任务"},
|
|
297
|
+
"ui.tasks_needing_review": {"ko":"내 확인이 필요한 작업","en":"Tasks needing review","zh-CN":"需要我确认的任务"},
|
|
298
|
+
"ui.temporarily_idle": {"ko":"잠시 쉬는 중","en":"Temporarily idle","zh-CN":"暂时空闲"},
|
|
299
|
+
"ui.testing": {"ko":"시험","en":"Testing","zh-CN":"测试"},
|
|
300
|
+
"ui.the_installed_version_matches_the_latest_stable_github_release": {"ko":"설치된 버전이 GitHub의 최신 정식 릴리스와 같습니다.","en":"The installed version matches the latest stable GitHub release.","zh-CN":"已安装版本与 GitHub 最新正式版本一致。"},
|
|
301
|
+
"ui.the_installer_is_ready": {"ko":"설치 파일 준비가 끝났습니다.","en":"The installer is ready.","zh-CN":"安装文件已准备就绪。"},
|
|
302
|
+
"ui.the_installer_will_not_open_if_its_hash_or_size": {"ko":"GitHub가 제공하는 해시와 파일 크기가 다르면 설치 파일을 열지 않습니다.","en":"The installer will not open if its hash or size differs from GitHub metadata.","zh-CN":"若哈希值或文件大小与 GitHub 元数据不符,将不会打开安装文件。"},
|
|
303
|
+
"ui.the_release_exists_but_a_matching_installer_is_not_available": {"ko":"릴리스는 확인했지만 맞는 설치 파일이 아직 준비되지 않았습니다.","en":"The release exists, but a matching installer is not available yet.","zh-CN":"已找到新版本,但尚无匹配的安装文件。"},
|
|
304
|
+
"ui.the_update_file_is_ready": {"ko":"업데이트 파일이 준비됐습니다.","en":"The update file is ready.","zh-CN":"更新文件已准备就绪。"},
|
|
305
|
+
"ui.these_four_steps_are_all_you_need": {"ko":"이 네 가지만 익히면 충분해요","en":"These four steps are all you need","zh-CN":"掌握这四步就够了"},
|
|
306
|
+
"ui.this_conversation_is_connected_to_the_terminal_on_the_right": {"ko":"이 대화가 오른쪽 터미널과 연결되어 있습니다","en":"This conversation is connected to the terminal on the right","zh-CN":"此对话已连接到右侧终端"},
|
|
307
|
+
"ui.this_operating_system_requires_a_manual_update": {"ko":"이 운영체제는 수동 업데이트가 필요합니다.","en":"This operating system requires a manual update.","zh-CN":"此操作系统需要手动更新。"},
|
|
308
|
+
"ui.this_request_appears_to_need_file_changes_without_edit_permission": {"ko":"이 요청은 파일 수정이 필요해 보여요. 위의 수정 허용을 켜지 않으면 AI가 코드 변경 없이 검토만 합니다.","en":"This request appears to need file changes. Without edit permission, the AI will only review the code.","zh-CN":"此请求似乎需要修改文件。若不启用修改权限,AI 将仅审查代码而不会更改。"},
|
|
309
|
+
"ui.this_view_is_only_for_existing_tmux_workflows_home_and": {"ko":"tmux를 이미 사용하는 경우에만 필요한 화면입니다. 일반 작업은 홈과 세션 터미널만으로 충분합니다.","en":"This view is only for existing tmux workflows. Home and Session Terminal cover regular work.","zh-CN":"此页面仅适用于已使用 tmux 的工作流。普通工作使用首页和会话终端即可。"},
|
|
310
|
+
"ui.tiled": {"ko":"바둑판","en":"Tiled","zh-CN":"平铺"},
|
|
311
|
+
"ui.tmux_controls": {"ko":"tmux 전용 조작","en":"tmux controls","zh-CN":"tmux 专用操作"},
|
|
312
|
+
"ui.tmux_environment": {"ko":"tmux 환경","en":"tmux environment","zh-CN":"tmux 环境"},
|
|
313
|
+
"ui.tmux_navigation_path": {"ko":"tmux 탐색 경로","en":"tmux navigation path","zh-CN":"tmux 导航路径"},
|
|
314
|
+
"ui.tmux_only": {"ko":"tmux 전용","en":"tmux only","zh-CN":"仅限 tmux"},
|
|
315
|
+
"ui.tmux_terminals_only": {"ko":"tmux 안의 명령창만","en":"tmux terminals only","zh-CN":"仅显示 tmux 终端"},
|
|
316
|
+
"ui.tmux_workspace": {"ko":"tmux 전용 공간","en":"tmux workspace","zh-CN":"tmux 专用空间"},
|
|
317
|
+
"ui.tokens_used": {"ko":"사용한 토큰","en":"Tokens used","zh-CN":"已用令牌"},
|
|
318
|
+
"ui.tokens_used_2": {"ko":"사용 토큰","en":"Tokens used","zh-CN":"已用令牌"},
|
|
319
|
+
"ui.try_each_step_to_explore_the_app": {"ko":"하나씩 눌러 직접 둘러보세요.","en":"Try each step to explore the app.","zh-CN":"逐项点击,亲自体验应用。"},
|
|
320
|
+
"ui.try_it": {"ko":"직접 해보기 →","en":"Try it →","zh-CN":"立即尝试 →"},
|
|
321
|
+
"ui.update_available": {"ko":"업데이트 있음","en":"Update available","zh-CN":"有可用更新"},
|
|
322
|
+
"ui.update_download": {"ko":"업데이트 파일 다운로드","en":"Update download","zh-CN":"更新文件下载"},
|
|
323
|
+
"ui.update_source": {"ko":"업데이트 기준","en":"Update source","zh-CN":"更新来源"},
|
|
324
|
+
"ui.updates": {"ko":"업데이트","en":"Updates","zh-CN":"更新"},
|
|
325
|
+
"ui.usage": {"ko":"사용량","en":"Usage","zh-CN":"用量"},
|
|
326
|
+
"ui.use_only_when_selecting_a_specific_model": {"ko":"특정 모델을 직접 지정할 때만 사용","en":"Use only when selecting a specific model","zh-CN":"仅在指定特定模型时使用"},
|
|
327
|
+
"ui.use_the_button_to_add_frequently_used_workspaces": {"ko":"+ 버튼으로 자주 쓰는 작업 폴더를 등록할 수 있습니다.","en":"Use the + button to add frequently used workspaces.","zh-CN":"使用 + 按钮可添加常用工作文件夹。"},
|
|
328
|
+
"ui.version_comparison": {"ko":"버전 비교","en":"Version comparison","zh-CN":"版本比较"},
|
|
329
|
+
"ui.version_status": {"ko":"버전 상태","en":"Version status","zh-CN":"版本状态"},
|
|
330
|
+
"ui.view_active_work": {"ko":"진행 중 보기 →","en":"View active work →","zh-CN":"查看进行中 →"},
|
|
331
|
+
"ui.view_all_on_github": {"ko":"GitHub에서 전체 보기 ↗","en":"View all on GitHub ↗","zh-CN":"在 GitHub 查看全部 ↗"},
|
|
332
|
+
"ui.view_multi_terminal_work": {"ko":"여러 명령창 작업 보기","en":"View multi-terminal work","zh-CN":"查看多终端工作"},
|
|
333
|
+
"ui.view_review_items": {"ko":"확인할 일 보기 →","en":"View review items →","zh-CN":"查看待确认事项 →"},
|
|
334
|
+
"ui.view_update": {"ko":"업데이트 보기","en":"View update","zh-CN":"查看更新"},
|
|
335
|
+
"ui.waiting_for_review": {"ko":"내 확인 기다림","en":"Waiting for review","zh-CN":"等待确认"},
|
|
336
|
+
"ui.waiting_for_selection": {"ko":"선택 대기","en":"Waiting for selection","zh-CN":"等待选择"},
|
|
337
|
+
"ui.what_should_the_ai_work_on": {"ko":"무슨 일을 맡길까요?","en":"What should the AI work on?","zh-CN":"要让 AI 做什么?"},
|
|
338
|
+
"ui.when_enabled_the_ai_can_directly_edit_files_in_the": {"ko":"켜면 선택한 폴더의 파일을 직접 수정합니다.","en":"When enabled, the AI can directly edit files in the selected folder.","zh-CN":"启用后,AI 可直接修改所选文件夹中的文件。"},
|
|
339
|
+
"ui.which_ai_should_handle_it": {"ko":"어떤 AI에게 맡길까요?","en":"Which AI should handle it?","zh-CN":"交给哪个 AI?"},
|
|
340
|
+
"ui.window_layout": {"ko":"창 배치","en":"Window layout","zh-CN":"窗口布局"},
|
|
341
|
+
"ui.windows_session": {"ko":"+ Windows 세션","en":"+ Windows session","zh-CN":"+ Windows 会话"},
|
|
342
|
+
"ui.work_assigned_to_ai": {"ko":"AI들이 맡은 일","en":"Work assigned to AI","zh-CN":"AI 负责的工作"},
|
|
343
|
+
"ui.work_grouped_with_tmux": {"ko":"tmux로 묶은 작업","en":"Work grouped with tmux","zh-CN":"使用 tmux 分组的工作"},
|
|
344
|
+
"ui.working": {"ko":"일하는 중","en":"Working","zh-CN":"工作中"},
|
|
345
|
+
"ui.workspace_name": {"ko":"작업 묶음 이름","en":"Workspace name","zh-CN":"工作组名称"},
|
|
346
|
+
"ui.workspaces": {"ko":"작업 폴더","en":"Workspaces","zh-CN":"工作文件夹"},
|
|
347
|
+
"ui.you_are_up_to_date": {"ko":"현재 최신 버전입니다.","en":"You are up to date.","zh-CN":"当前已是最新版本。"},
|
|
348
|
+
"ui.you_completed_the_basics_you_can_reopen_this_guide_anytime": {"ko":"기본 사용법을 모두 익혔어요. 언제든 다시 열어볼 수 있습니다.","en":"You completed the basics. You can reopen this guide anytime.","zh-CN":"您已掌握基础操作,随时可以重新打开本指南。"},
|
|
349
|
+
"ui.your_turn": {"ko":"내 차례","en":"Your turn","zh-CN":"轮到您了"},
|
|
350
|
+
"update.available_version": {"ko":"새 버전 v{version}을 사용할 수 있습니다.","en":"Version v{version} is available.","zh-CN":"新版本 v{version} 可用。"},
|
|
351
|
+
"update.current_version": {"ko":"설치된 v{version}이 GitHub의 최신 정식 버전과 같습니다.","en":"Installed v{version} matches the latest stable GitHub release.","zh-CN":"已安装的 v{version} 与 GitHub 最新正式版本一致。"},
|
|
352
|
+
"update.published": {"ko":"{date} 공개","en":"Published {date}","zh-CN":"发布于 {date}"},
|
|
353
|
+
"update.version_available": {"ko":"v{version} 업데이트가 있습니다.","en":"Update v{version} is available.","zh-CN":"v{version} 更新可用。"},
|
|
354
|
+
});
|
|
355
|
+
})();
|
package/renderer/i18n.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
(() => {
|
|
4
|
+
const STORAGE_KEY = 'loadtoagent:locale:v1';
|
|
5
|
+
const SUPPORTED_LOCALES = Object.freeze(['ko', 'en', 'zh-CN']);
|
|
6
|
+
const SUPPORTED = new Set(SUPPORTED_LOCALES);
|
|
7
|
+
const LOCALE_TAGS = Object.freeze({ ko: 'ko-KR', en: 'en-US', 'zh-CN': 'zh-CN' });
|
|
8
|
+
const TRANSLATED_ATTRIBUTES = Object.freeze(['aria-label', 'placeholder', 'title']);
|
|
9
|
+
const messages = window.LoadToAgentMessages || {};
|
|
10
|
+
let locale = readLocale();
|
|
11
|
+
|
|
12
|
+
function readLocale() {
|
|
13
|
+
try {
|
|
14
|
+
const saved = localStorage.getItem(STORAGE_KEY);
|
|
15
|
+
return SUPPORTED.has(saved) ? saved : 'ko';
|
|
16
|
+
} catch (error) {
|
|
17
|
+
window.LoadToAgentRendererUtils?.reportRecoverableError('locale-storage-read', error);
|
|
18
|
+
return 'ko';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function interpolate(template, params = {}) {
|
|
23
|
+
return String(template).replace(/\{([a-zA-Z][\w]*)\}/g, (match, name) => (
|
|
24
|
+
Object.prototype.hasOwnProperty.call(params, name) ? String(params[name]) : match
|
|
25
|
+
));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Resolve a stable message key for the active locale. */
|
|
29
|
+
function t(key, params) {
|
|
30
|
+
const message = messages[key];
|
|
31
|
+
if (!message) return String(key ?? '');
|
|
32
|
+
return interpolate(message[locale] ?? message.ko ?? key, params);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function readParams(element) {
|
|
36
|
+
const serialized = element.dataset.i18nParams;
|
|
37
|
+
if (!serialized) return undefined;
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(serialized);
|
|
40
|
+
} catch (_nonJsonTranslationValue) {
|
|
41
|
+
// Plain strings are the common case; only serialized objects need parsing.
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function translateElement(element) {
|
|
47
|
+
if (!(element instanceof Element)) return;
|
|
48
|
+
const params = readParams(element);
|
|
49
|
+
const textKey = element.dataset.i18n;
|
|
50
|
+
if (textKey) element.textContent = t(textKey, params);
|
|
51
|
+
for (const attribute of TRANSLATED_ATTRIBUTES) {
|
|
52
|
+
const key = element.getAttribute(`data-i18n-${attribute}`);
|
|
53
|
+
if (key) element.setAttribute(attribute, t(key, params));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Translate only elements that opt in with explicit data-i18n keys. */
|
|
58
|
+
function translateTree(root = document.documentElement) {
|
|
59
|
+
if (!(root instanceof Element) && !(root instanceof Document)) return;
|
|
60
|
+
if (root instanceof Element && root.matches('[data-i18n], [data-i18n-aria-label], [data-i18n-placeholder], [data-i18n-title]')) {
|
|
61
|
+
translateElement(root);
|
|
62
|
+
}
|
|
63
|
+
root.querySelectorAll?.('[data-i18n], [data-i18n-aria-label], [data-i18n-placeholder], [data-i18n-title]')
|
|
64
|
+
.forEach(translateElement);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function syncDocument() {
|
|
68
|
+
document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : locale;
|
|
69
|
+
document.documentElement.dataset.locale = locale;
|
|
70
|
+
const select = document.querySelector('#languageSelect');
|
|
71
|
+
if (select) select.value = locale;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function setLocale(nextLocale) {
|
|
75
|
+
if (!SUPPORTED.has(nextLocale)) return false;
|
|
76
|
+
const changed = nextLocale !== locale;
|
|
77
|
+
locale = nextLocale;
|
|
78
|
+
try {
|
|
79
|
+
localStorage.setItem(STORAGE_KEY, locale);
|
|
80
|
+
} catch (error) {
|
|
81
|
+
window.LoadToAgentRendererUtils?.reportRecoverableError?.('locale-save', error);
|
|
82
|
+
}
|
|
83
|
+
syncDocument();
|
|
84
|
+
translateTree();
|
|
85
|
+
if (changed) {
|
|
86
|
+
window.dispatchEvent(new CustomEvent('loadtoagent:locale-changed', {
|
|
87
|
+
detail: { locale, localeTag: LOCALE_TAGS[locale] },
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
return changed;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const explicitNodeObserver = new MutationObserver(records => {
|
|
94
|
+
for (const record of records) {
|
|
95
|
+
if (record.type === 'attributes') translateElement(record.target);
|
|
96
|
+
else record.addedNodes.forEach(node => {
|
|
97
|
+
if (node instanceof Element) translateTree(node);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
window.LoadToAgentI18n = Object.freeze({
|
|
103
|
+
getLocale: () => locale,
|
|
104
|
+
getLocaleTag: () => LOCALE_TAGS[locale],
|
|
105
|
+
getSupportedLocales: () => [...SUPPORTED_LOCALES],
|
|
106
|
+
setLocale,
|
|
107
|
+
t,
|
|
108
|
+
translateTree,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
syncDocument();
|
|
112
|
+
translateTree();
|
|
113
|
+
explicitNodeObserver.observe(document.documentElement, {
|
|
114
|
+
subtree: true,
|
|
115
|
+
childList: true,
|
|
116
|
+
attributes: true,
|
|
117
|
+
attributeFilter: ['data-i18n', 'data-i18n-params', 'data-i18n-aria-label', 'data-i18n-placeholder', 'data-i18n-title'],
|
|
118
|
+
});
|
|
119
|
+
document.addEventListener('change', event => {
|
|
120
|
+
if (event.target?.id === 'languageSelect') setLocale(event.target.value);
|
|
121
|
+
});
|
|
122
|
+
})();
|