From 22176c46c693bd8e26c42c8afebf9eabec276151 Mon Sep 17 00:00:00 2001 From: moduvoice Date: Sat, 11 Jul 2026 21:07:42 +0700 Subject: [PATCH 1/8] =?UTF-8?q?=F0=9F=8C=90=20Add=20Korean=20(ko-KR)=20tra?= =?UTF-8?q?nslation=20/=20=E6=96=B0=E5=A2=9E=E9=9F=A9=E8=AF=AD=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a full Korean UI translation for ScriptCat: - src/locales/ko-KR/: 11 i18next namespace JSON files (959 leaf keys) translated from the en-US source, covering common, popup, script, editor, settings, install, agent, logs, guide, tools, permission. - Registers ko-KR in src/locales/locales.ts (import + i18next resources). - Adds a Korean entry to the Monaco editor prompt/grant-value strings in src/pkg/utils/monaco-editor/langs.ts. - Adds src/assets/_locales/ko/messages.json for the chrome.i18n extension-market metadata (name/description), matching the existing per-locale files there. No terminology-ko-KR.md exists yet, so translations follow the existing style/voice used by ja-JP and de-DE per docs/translation.md guidance rather than introducing new terminology conventions. Co-Authored-By: Claude Sonnet 5 --- src/assets/_locales/ko/messages.json | 14 ++ src/locales/ko-KR/agent.json | 223 +++++++++++++++++++++++++++ src/locales/ko-KR/common.json | 97 ++++++++++++ src/locales/ko-KR/editor.json | 136 ++++++++++++++++ src/locales/ko-KR/guide.json | 33 ++++ src/locales/ko-KR/index.ts | 11 ++ src/locales/ko-KR/install.json | 181 ++++++++++++++++++++++ src/locales/ko-KR/logs.json | 59 +++++++ src/locales/ko-KR/permission.json | 39 +++++ src/locales/ko-KR/popup.json | 27 ++++ src/locales/ko-KR/script.json | 77 +++++++++ src/locales/ko-KR/settings.json | 114 ++++++++++++++ src/locales/ko-KR/tools.json | 18 +++ src/locales/locales.ts | 2 + src/pkg/utils/monaco-editor/langs.ts | 129 ++++++++++++++++ 15 files changed, 1160 insertions(+) create mode 100644 src/assets/_locales/ko/messages.json create mode 100644 src/locales/ko-KR/agent.json create mode 100644 src/locales/ko-KR/common.json create mode 100644 src/locales/ko-KR/editor.json create mode 100644 src/locales/ko-KR/guide.json create mode 100644 src/locales/ko-KR/index.ts create mode 100644 src/locales/ko-KR/install.json create mode 100644 src/locales/ko-KR/logs.json create mode 100644 src/locales/ko-KR/permission.json create mode 100644 src/locales/ko-KR/popup.json create mode 100644 src/locales/ko-KR/script.json create mode 100644 src/locales/ko-KR/settings.json create mode 100644 src/locales/ko-KR/tools.json diff --git a/src/assets/_locales/ko/messages.json b/src/assets/_locales/ko/messages.json new file mode 100644 index 000000000..cd2b0c152 --- /dev/null +++ b/src/assets/_locales/ko/messages.json @@ -0,0 +1,14 @@ +{ + "i18n": { + "message": "i18n" + }, + "scriptcat": { + "message": "ScriptCat" + }, + "scriptcat_beta": { + "message": "ScriptCat Beta" + }, + "scriptcat_description": { + "message": "브라우저의 모든 잠재력을 끌어내는 강력한 유저스크립트 매니저!" + } +} diff --git a/src/locales/ko-KR/agent.json b/src/locales/ko-KR/agent.json new file mode 100644 index 000000000..0d2ab8ac4 --- /dev/null +++ b/src/locales/ko-KR/agent.json @@ -0,0 +1,223 @@ +{ + "title": "AI 에이전트", + "docs": "문서", + "chat": "채팅", + "provider": "모델 서비스", + "mcp": "MCP", + "skills": "스킬", + "provider_title": "모델 서비스", + "provider_subtitle": "AI 모델 제공업체와 연결을 관리합니다", + "provider_select": "AI 제공업체", + "provider_api_base_url": "API 기본 URL", + "provider_api_key": "API 키", + "provider_model": "기본 모델", + "provider_test_connection": "연결 테스트", + "provider_test_success": "연결 성공", + "provider_test_failed": "연결 실패", + "provider_test_hint": "테스트 시 설정을 확인하기 위해 최소한의 요청을 전송합니다", + "provider_docs": "문서", + "provider_count_hint": "기본 모델은 새 대화에 사용됩니다", + "model_count": "모델 {{count}}개", + "model_fetch": "모델 가져오기", + "model_name": "이름", + "model_add": "모델 추가", + "model_edit": "편집", + "model_copy": "복사", + "model_delete": "삭제", + "model_set_default": "기본값으로 설정", + "model_default_label": "기본값", + "model_max_tokens": "최대 출력 토큰 수", + "model_context_window": "컨텍스트 윈도우", + "model_no_models": "설정된 모델이 없습니다", + "model_no_models_desc": "첫 번째 모델을 추가하고 AI 에이전트를 사용해 보세요", + "model_capabilities": "기능", + "model_supports_vision": "이미지 입력", + "model_supports_image_output": "이미지 출력", + "skills_title": "스킬 관리", + "skills_subtitle": "에이전트 스킬 패키지(SKILL.md 프롬프트, 스크립트, 참고 자료)를 관리합니다", + "skills_add": "스킬 추가", + "skills_empty": "설치된 스킬이 없습니다", + "skills_empty_desc": "ZIP 파일을 업로드하거나 URL에서 첫 번째 스킬을 가져와 보세요", + "skills_tools": "도구", + "skills_references": "참고 자료", + "skills_detail": "스킬 상세 정보", + "skills_install_url": "URL에서 가져오기", + "skills_uninstall": "제거", + "skills_uninstall_confirm": "\"{{name}}\" 스킬을 제거하시겠습니까?", + "skills_install_zip": "ZIP 업로드", + "skills_prompt": "프롬프트", + "skills_installed_at": "설치일", + "skills_refresh": "새로고침", + "skills_refresh_success": "새로고침되었습니다", + "skills_tool_code": "도구 코드", + "skills_click_to_view_code": "도구 이름을 클릭하면 코드를 볼 수 있습니다", + "skills_config": "설정", + "skills_config_saved": "설정이 저장되었습니다", + "skills_check_updates": "업데이트 확인", + "skills_no_updates": "모든 스킬이 최신 상태입니다", + "skills_updates_available": "개 스킬에 업데이트가 있습니다", + "skills_update": "업데이트", + "skills_docs": "문서", + "skills_count": "스킬 {{count}}개 설치됨", + "skills_update_count": "{{count}}개 업데이트 가능", + "skills_update_available": "{{version}}으로 업데이트", + "skills_references_short": "참고", + "skills_configurable": "설정 가능", + "skills_open_config": "설정 열기", + "skills_update_success": "업데이트되었습니다", + "skills_url_placeholder": "SKILL.cat.md URL을 입력하세요", + "chat_new": "새 채팅", + "chat_delete": "채팅 삭제", + "chat_delete_confirm": "이 대화를 삭제하시겠습니까?", + "chat_no_conversations": "대화가 없습니다", + "chat_search_placeholder": "대화 검색…", + "chat_search_no_results": "일치하는 대화가 없습니다", + "chat_export": "내보내기", + "chat_input_placeholder": "메시지를 입력하세요...", + "chat_send": "전송", + "chat_stop": "중지", + "chat_thinking": "생각 중", + "chat_tool_arguments": "인수", + "chat_tool_result": "결과", + "chat_no_model": "설정된 모델이 없습니다. 먼저 모델 서비스에서 모델을 추가해 주세요.", + "chat_model_select": "모델 선택", + "chat_rename": "이름 변경", + "chat_copy": "복사", + "chat_copy_success": "복사되었습니다", + "chat_regenerate": "다시 생성", + "chat_streaming": "생성 중...", + "chat_loading_audio": "오디오 불러오는 중...", + "chat_starting": "시작하는 중...", + "chat_retrying": "재시도 중 ({{attempt}}/{{max}})...", + "chat_attach_file": "파일 첨부", + "chat_welcome_hint": "스크립트에 대해 무엇이든 물어보세요", + "chat_welcome_start": "대화를 만들어 시작해 보세요", + "chat_first_token": "TTFT", + "chat_tools_count": "도구 {{count}}개", + "chat_tools_enabled": "도구 활성화됨", + "chat_tools_disabled": "도구 비활성화됨", + "chat_tools_enabled_tip": "도구 활성화됨 — 클릭하면 비활성화", + "chat_tools_disabled_tip": "도구 비활성화됨 — 클릭하면 활성화", + "chat_background_enabled_tip": "백그라운드 모드 켜짐 — 페이지를 닫아도 대화가 계속됩니다. 클릭하면 끌 수 있습니다", + "chat_background_disabled_tip": "백그라운드 모드 꺼짐 — 페이지를 닫으면 대화가 중지됩니다. 클릭하면 켤 수 있습니다", + "chat_delete_round": "삭제", + "chat_copy_message": "복사", + "chat_edit_message": "편집", + "chat_save_and_send": "저장 후 전송", + "chat_cancel_edit": "취소", + "chat_message_queued": "대기 중", + "chat_cancel_message": "전송 취소", + "permission_title": "스크립트가 에이전트 대화 사용을 요청합니다", + "permission_describe": "이 스크립트는 에이전트 대화 기능 사용을 요청하며, 이는 API 토큰을 소비합니다. 신뢰할 수 있는 스크립트에만 허용하세요.", + "permission_content": "에이전트 대화", + "opfs": "OPFS", + "opfs_title": "OPFS 파일 브라우저", + "opfs_empty": "빈 디렉터리", + "opfs_name": "이름", + "opfs_size": "크기", + "opfs_type": "종류", + "opfs_modified": "마지막 수정", + "opfs_delete_confirm": "정말 삭제하시겠습니까?", + "opfs_delete_success": "삭제되었습니다", + "opfs_preview": "미리보기", + "opfs_subtitle": "출처별 프라이빗 파일 시스템(OPFS) · 에이전트 전용 저장소", + "opfs_refresh": "새로고침", + "opfs_upload": "업로드", + "opfs_actions": "작업", + "opfs_item_count": "{{count}}개 항목", + "opfs_empty_desc": "이 디렉터리에는 아직 파일이 없습니다", + "opfs_upload_success": "업로드되었습니다", + "opfs_upload_failed": "업로드에 실패했습니다", + "opfs_uploading": "업로드 중…", + "opfs_type_directory": "폴더", + "opfs_type_image": "이미지", + "opfs_type_text": "텍스트", + "opfs_type_binary": "바이너리", + "opfs_root": "루트", + "dom_permission_title": "스크립트가 DOM 조작 권한을 요청합니다", + "dom_permission_describe": "이 스크립트는 웹페이지의 DOM을 읽고 조작하는 기능(클릭, 양식 입력, 페이지 이동, 스크린샷 등)을 요청합니다. 신뢰할 수 있는 스크립트에만 허용하세요.", + "dom_permission_content": "에이전트 DOM 조작", + "mcp_title": "MCP 서버", + "mcp_subtitle": "MCP 서버를 연결하여 에이전트의 도구, 리소스, 프롬프트를 확장하세요", + "mcp_add_server": "서버 추가", + "mcp_no_servers": "설정된 MCP 서버가 없습니다", + "mcp_no_servers_desc": "첫 번째 MCP 서버를 추가하여 외부 도구와 데이터에 연결해 보세요", + "mcp_status_connected": "연결됨", + "mcp_status_failed": "연결 실패", + "mcp_status_untested": "테스트 안 함", + "mcp_has_key": "시크릿 키", + "mcp_headers_count": "헤더 {{count}}개", + "mcp_count_servers": "서버 {{count}}개", + "mcp_count_connected": "{{count}}개 연결됨", + "mcp_count_tools": "도구 {{count}}개 사용 가능", + "mcp_docs": "문서", + "mcp_test_connection": "테스트", + "mcp_optional": "선택 사항", + "mcp_custom_headers": "사용자 지정 헤더", + "mcp_enabled": "활성화", + "mcp_detail": "상세 정보", + "mcp_tools": "도구", + "mcp_resources": "리소스", + "mcp_prompts": "프롬프트", + "mcp_no_tools": "사용 가능한 도구가 없습니다", + "mcp_no_resources": "사용 가능한 리소스가 없습니다", + "mcp_no_prompts": "사용 가능한 프롬프트가 없습니다", + "mcp_loading": "불러오는 중...", + "tasks": "예약 작업", + "tasks_title": "예약 작업", + "tasks_subtitle": "cron 일정에 따라 에이전트 작업을 자동으로 실행합니다", + "tasks_docs": "문서", + "tasks_count_total": "작업 {{count}}개", + "tasks_count_enabled": "{{count}}개 활성화됨", + "tasks_create": "작업 만들기", + "tasks_edit": "작업 편집", + "tasks_mode": "모드", + "tasks_mode_internal_short": "내부", + "tasks_mode_event_short": "이벤트", + "tasks_cron": "Cron 표현식", + "tasks_next_run": "다음 실행", + "tasks_run_now": "지금 실행", + "tasks_history": "실행 기록", + "tasks_prompt": "프롬프트", + "tasks_max_iterations": "최대 반복 횟수", + "tasks_notify": "완료 시 알림", + "tasks_notify_desc": "작업이 완료되면 브라우저 알림을 보냅니다", + "tasks_no_tasks": "예약된 작업이 없습니다", + "tasks_no_tasks_desc": "첫 번째 예약 작업을 만들어 에이전트를 자동으로 실행해 보세요", + "tasks_no_runs": "실행 기록이 아직 없습니다", + "tasks_clear_runs": "기록 지우기", + "tasks_clear_runs_confirm": "이 작업의 실행 기록을 지우시겠습니까?", + "tasks_event_hint": "이벤트가 발생하면 이 작업을 만든 스크립트로 알림이 전달됩니다", + "tasks_event_trigger": "이벤트 트리거", + "tasks_model_select": "모델 선택", + "tasks_skills_auto": "모두 자동 로드", + "tasks_run_status_success": "성공", + "tasks_run_status_error": "오류", + "tasks_run_status_running": "실행 중", + "tasks_run_duration": "소요 시간", + "tasks_run_usage": "사용량", + "tasks_run_time": "시간", + "tasks_run_status": "상태", + "tasks_never_run": "실행한 적 없음", + "settings": "설정", + "settings_title": "에이전트 설정", + "settings_subtitle": "모델, 검색 및 일반 설정 · 변경 사항은 즉시 적용됩니다", + "settings_cat_model": "모델", + "settings_cat_search": "검색", + "summary_model": "요약 모델", + "summary_model_desc": "요약에 사용되는 모델로, 설정하지 않으면 기본 모델을 사용합니다", + "summary_model_placeholder": "기본 모델 사용", + "search_engine": "검색 엔진", + "search_engine_desc": "web_search 도구가 사용하는 검색 소스입니다.", + "search_engine_baidu": "바이두", + "search_google_api_key": "Google API 키", + "search_google_api_key_desc": "Custom Search JSON API 호출에 사용됩니다.", + "search_google_cse_id": "사용자 지정 검색 엔진 ID", + "search_google_cse_id_desc": "Programmable Search Engine의 cx 매개변수입니다.", + "settings_saved": "설정이 저장되었습니다", + "settings_save_failed": "설정 저장에 실패했습니다", + "search_engine_tip_bing": "전 세계적으로 폭넓게 지원되는 기본 검색 엔진으로, 추가 설정이 필요 없습니다.", + "search_engine_tip_duckduckgo": "개인정보 보호에 중점을 둔 검색 엔진으로, API 키가 필요 없습니다.", + "search_engine_tip_baidu": "중국어 콘텐츠에 최적화되어 있어 중국어 검색에서 더 나은 결과를 제공합니다.", + "search_engine_tip_google": "고품질 검색 결과를 제공하지만, Google API 키와 사용자 지정 검색 엔진 ID가 필요합니다." +} diff --git a/src/locales/ko-KR/common.json b/src/locales/ko-KR/common.json new file mode 100644 index 000000000..143b111f5 --- /dev/null +++ b/src/locales/ko-KR/common.json @@ -0,0 +1,97 @@ +{ + "user_guide": "사용 가이드", + "api_docs": "API 문서", + "development_guide": "개발 가이드", + "script_gallery": "스크립트 갤러리", + "community_forum": "커뮤니티 포럼", + "external_links": "외부 링크", + "no_data": "데이터 없음", + "logs": "로그", + "tools": "도구", + "settings": "설정", + "change_theme": "테마 변경", + "hide_main_sidebar": "사이드바 접기", + "show_main_sidebar": "사이드바 펼치기", + "menu": "메뉴", + "notifications": "알림", + "more_menu": "더보기 메뉴", + "helpcenter": "도움말 센터", + "save": "저장", + "save_success": "저장되었습니다", + "update": "업데이트", + "check_update": "업데이트 확인", + "confirm_delete": "삭제 확인", + "delete_success": "삭제되었습니다", + "enable": "활성화", + "disable": "비활성화", + "name": "이름", + "version": "버전", + "source": "소스", + "action": "작업", + "export": "내보내기", + "delete": "삭제", + "pin_to_top": "상단 고정", + "confirm": "확인", + "close": "닫기", + "key": "키", + "value": "값", + "add": "추가", + "type": "유형", + "size": "크기", + "download": "다운로드", + "edit_value": "값 편집", + "add_value": "값 추가", + "update_success": "업데이트되었습니다", + "add_success": "추가되었습니다", + "clear": "지우기", + "type_string": "문자열", + "type_number": "숫자", + "type_boolean": "불리언", + "type_object": "객체", + "confirm_delete_resource": "이 리소스를 삭제하시겠습니까? 다음 시작 시 이 리소스가 다시 로드됩니다.", + "confirm_clear_resource": "이 리소스를 모두 지우시겠습니까? 다음 시작 시 리소스가 다시 로드됩니다.", + "yes": "예", + "no": "아니요", + "confirm_delete_permission": "이 권한을 삭제하시겠습니까?", + "reset": "초기화", + "run_once": "한 번 실행", + "stop": "중지", + "edit": "편집", + "copy": "복사", + "exclude_on": "$0 실행 복원", + "exclude_off": "$0 실행 제외", + "confirm_error": "확인 실패", + "import": "가져오기", + "error": "오류", + "get_script": "스크립트 받기", + "report_issue": "문제 신고", + "project_docs": "프로젝트 문서", + "community": "커뮤니티", + "domain": "도메인", + "script_name": "스크립트 이름", + "skip": "건너뛰기", + "next": "다음", + "back": "뒤로", + "auto": "자동", + "collapse": "접기", + "expand": "펼치기", + "no_message_content": "메시지 내용 없음", + "loading": "로딩 중...", + "no_scripts": "스크립트가 없습니다", + "no_subscribes": "구독이 없습니다", + "no_subscribes_hint": "구독한 스크립트 모음이 여기에 표시됩니다", + "clear_filter": "필터 지우기", + "batch_selected": "{{count}}개 선택됨", + "stopped": "중지됨", + "auth_type": "인증 유형", + "url": "URL", + "username": "사용자 이름", + "password": "비밀번호", + "access_token_bearer": "액세스 토큰(Bearer)", + "s3_bucket_name": "버킷 이름", + "s3_region": "리전", + "s3_access_key_id": "액세스 키 ID", + "s3_secret_access_key": "비밀 액세스 키", + "s3_custom_endpoint": "사용자 지정 엔드포인트(선택 사항)", + "cancel": "취소" +} diff --git a/src/locales/ko-KR/editor.json b/src/locales/ko-KR/editor.json new file mode 100644 index 000000000..951353087 --- /dev/null +++ b/src/locales/ko-KR/editor.json @@ -0,0 +1,136 @@ +{ + "save": "저장", + "save_success": "저장되었습니다", + "copy": "복사", + "find": "찾기", + "replace": "바꾸기", + "select_all": "모두 선택", + "format": "포맷", + "back": "뒤로", + "more": "더 보기", + "file": "파일", + "edit": "편집", + "settings": "설정", + "run_settings": "실행 설정", + "code": "코드", + "script_setting": "스크립트 설정", + "storage": "저장소", + "resource": "리소스", + "script_storage_tooltip": "스크립트에 저장된 데이터를 관리합니다(GM_value)", + "script_resource_tooltip": "@resource와 @require로 내려받은 리소스를 관리합니다", + "script_setting_tooltip": "이 스크립트의 설정을 사용자 지정합니다", + "search_resource": "리소스 검색", + "search_storage": "키 검색", + "record_count": "{{count}}개 항목", + "resource_count": "리소스 {{count}}개 · {{size}}", + "script_list": "스크립트 목록", + "search_scripts": "스크립트 검색...", + "new_script": "새 스크립트", + "source": "출처", + "from_user": "사용자", + "from_script": "스크립트", + "last_updated": "마지막 업데이트", + "run_at": "실행 시점", + "run_in": "실행 위치", + "line_col": "{{line}}행, {{col}}열", + "script_not_found": "스크립트를 찾을 수 없습니다", + "script_name_cannot_be_set_to_empty": "스크립트 이름은 비워둘 수 없습니다", + "confirm_delete_script": "\"{{name}}\" 스크립트를 삭제하시겠습니까?", + "delete_success": "삭제되었습니다", + "delete_failed": "삭제에 실패했습니다", + "cancel": "취소", + "confirm": "확인", + "save_as": "다른 이름으로 저장", + "run": "실행", + "script_storage": "스크립트 저장소", + "key_placeholder": "키", + "value_placeholder": "타입이 object인 경우, JSON으로 파싱 가능한 데이터를 입력하세요.", + "clear_success": "초기화되었습니다", + "confirm_clear": "이 저장 공간을 정말 비우시겠습니까?", + "basic_info": "기본 정보", + "update_url": "업데이트 URL", + "add_permission": "권한 추가", + "match": "매치", + "add_match": "매치 추가", + "add_exclude": "제외 추가", + "bulk_match_desc": "한 줄에 하나씩 패턴을 붙여넣으세요. 앞뒤 공백은 제거되며, 빈 줄과 중복 항목은 건너뜁니다.", + "bulk_permission_desc": "권한 유형과 허용 상태를 선택한 뒤, 한 줄에 하나씩 권한 값을 붙여넣으세요.", + "bulk_values": "일괄 값", + "bulk_empty_preview": "값을 붙여넣으면 파싱 결과를 미리 볼 수 있습니다", + "bulk_status_new": "신규", + "bulk_status_duplicate": "중복", + "preview": "미리보기", + "status": "상태", + "website_match": "웹사이트 매치(@match)", + "website_exclude": "웹사이트 제외(@exclude)", + "confirm_reset": "초기화하시겠습니까?", + "confirm_delete_match": "이 매치를 삭제하시겠습니까?", + "confirm_delete_exclude": "이 제외 항목을 삭제하시겠습니까?", + "after_deleting_match_item": "삭제 후에도 스크립트에 정의된 매치 규칙은 매치 목록에 다시 추가됩니다", + "after_deleting_exclude_item": "삭제 후에도 스크립트에 정의된 매치 규칙은 제외 목록에 다시 추가됩니다", + "undo": "실행 취소", + "redo": "다시 실행", + "cut": "잘라내기", + "paste": "붙여넣기", + "user_config": "사용자 설정(UserConfig)", + "storage_api": "저장소 API", + "use_file_system": "사용 중인 파일 시스템", + "open_directory": "디렉터리 열기", + "account_validation_failed": "계정 인증에 실패했습니다", + "not_set": "설정 안 됨", + "in_use": "사용 중", + "storage_error": "저장소 오류", + "upload_to_cloud": "클라우드로 업로드", + "save_failed": "저장에 실패했습니다", + "exporting": "내보내는 중...", + "upload_to": "업로드 위치", + "value_export_expression": "값 내보내기 표현식", + "overwrite_original_value_on_import": "가져올 때 기존 값 덮어쓰기", + "cookie_export_expression": "쿠키 내보내기 표현식", + "overwrite_original_cookie_on_import": "가져올 때 기존 쿠키 덮어쓰기", + "restore_default_values": "기본값으로 복원", + "edit_conflict": "편집 충돌", + "confirm_override_when_edit_conflict": "이 스크립트는 다른 인스턴스에서 수정되었습니다. 지금 저장하면 그 변경 사항을 덮어쓰게 됩니다. 이 버전을 유지하시겠습니까?", + "scriptname_conflict": "스크립트 이름 충돌", + "confirm_save_when_scriptname_conflict": "이 스크립트 이름은 이미 다른 스크립트에서 사용 중입니다. 그래도 저장하시겠습니까?", + "eslint_config_format_error": "ESLint 설정 형식 오류", + "create_success_note": "새 스크립트가 생성되었습니다. 백그라운드 스크립트는 기본적으로 활성화되지 않으니 참고하세요.", + "save_as_failed": "다른 이름으로 저장에 실패했습니다", + "save_as_success": "다른 이름으로 저장되었습니다", + "only_background_scheduled_can_run": "백그라운드 스크립트/예약(crontab) 스크립트만 실행할 수 있습니다", + "build_success_message": "빌드에 성공했습니다. 개발자 도구를 열어 콘솔에서 출력을 확인하세요", + "script_modified_close_confirm": "스크립트가 수정되었습니다. 지금 닫으면 변경 사항이 사라집니다. 계속하시겠습니까?", + "close_current_tab": "현재 탭 닫기", + "close_other_tabs": "다른 탭 닫기", + "close_left_tabs": "왼쪽 탭 모두 닫기", + "close_right_tabs": "오른쪽 탭 모두 닫기", + "invalid_script_code": "잘못된 코드", + "build_failed": "빌드에 실패했습니다", + "watch_file": "파일 감시", + "stop_watch_file": "감시 중지", + "watch_file_description": "파일 변경을 감시해 스크립트를 자동으로 업데이트합니다. 감시 중에는 스크립트 파일 경로를 바꾸지 말고 이 페이지도 닫지 마세요.", + "individual_edit": "개별 편집", + "batch_edit": "일괄 편집", + "script_code": "스크립트 코드", + "editor_config": "에디터 설정", + "editor_type_definition": "에디터 타입 정의", + "font_size": "글꼴 크기", + "font_size_description": "에디터의 글꼴 크기를 픽셀 단위로 지정합니다.", + "mouse_wheel_scroll_sensitivity": "마우스 휠 스크롤 감도", + "mouse_wheel_scroll_sensitivity_description": "마우스 휠 스크롤 양에 적용할 배율입니다.", + "smooth_scrolling": "부드러운 스크롤", + "smooth_scrolling_description": "에디터 스크롤에 애니메이션을 적용합니다.", + "editor_config_description": "compilerOptions를 통해 설정할 수 있습니다. 참고:", + "editor_type_definition_description": "직접 타입 정의를 사용자 지정할 수 있으며, 스크립트 에디터가 이 타입 정의를 자동으로 불러옵니다", + "eslint_rules_reset": "ESLint 규칙이 초기화되었습니다", + "eslint_rules_saved": "ESLint 규칙이 저장되었습니다", + "editor_config_reset": "에디터 설정이 초기화되었습니다", + "editor_config_saved": "에디터 설정이 저장되었습니다", + "editor_config_format_error": "에디터 설정 형식 오류", + "editor_type_definition_reset": "에디터 타입 정의가 초기화되었습니다", + "editor_type_definition_saved": "에디터 타입 정의가 저장되었습니다", + "editor": { + "show_script_list": "스크립트 목록 표시", + "hide_script_list": "스크립트 목록 숨기기" + } +} diff --git a/src/locales/ko-KR/guide.json b/src/locales/ko-KR/guide.json new file mode 100644 index 000000000..03c8c5e16 --- /dev/null +++ b/src/locales/ko-KR/guide.json @@ -0,0 +1,33 @@ +{ + "installed_scripts": "설치한 스크립트가 여기에 표시됩니다. 기본 사용법은 빠른 시작을 참고하세요.", + "script_list_title": "스크립트 마켓", + "script_list_content": "스크립트 마켓에서 스크립트를 설치할 수 있습니다. ScriptCat은 유저스크립트뿐 아니라 백그라운드 스크립트도 지원합니다.", + "script_list_enable_title": "스크립트 활성화", + "script_list_enable_content": "스크립트는 활성화해야 사용할 수 있습니다. 페이지 스크립트는 설치 시 기본적으로 활성화되며, 백그라운드 스크립트는 기본적으로 비활성화됩니다.", + "script_list_action_title": "작업", + "script_list_action_content": "작업 바에서는 스크립트 편집, 실행 제어 및 중지(백그라운드 스크립트), 설정(UserConfig 참고)에 접근할 수 있습니다. 오른쪽 버튼으로는 고급 필터링과 보기 모드 전환을 사용할 수 있습니다.", + "tools_backup_title": "백업", + "tools_backup_content": "백업을 이용하면 스크립트를 저장해 유실을 막을 수 있습니다. 스크립트 파일을 로컬로 내보내거나 로컬에서 불러올 수 있으며, 클라우드에 백업하면 더욱 편리합니다. 다른 매니저에서 이전하려면 마이그레이션 가이드를 참고하세요.", + "setting_sync_title": "업데이트 및 동기화", + "setting_sync_content": "스크립트 동기화 기능을 사용하면 이 기기의 스크립트 내용을 클라우드에 손쉽게 동기화할 수 있습니다. 삭제 동기화 옵션을 선택하면 이 기기에서 스크립트를 삭제할 때 클라우드에서도 함께 삭제됩니다. 여기에서 스크립트 버전을 업데이트해 더 강력한 기능을 사용할 수도 있습니다.", + "installed_scripts_title": "설치된 스크립트", + "subscribe_title": "구독", + "subscribe_content": "스크립트 링크를 구독하면 스크립트가 자동으로 최신 상태를 유지합니다. 자세한 내용은 구독 문서를 참고하세요.", + "welcome_title": "ScriptCat에 오신 것을 환영합니다 🎉", + "welcome_subtitle": "강력한 유저스크립트 매니저 — 몇 단계만 거치면 바로 시작할 수 있습니다.", + "welcome_feature_manage_title": "설치된 스크립트 관리", + "welcome_feature_manage_desc": "모든 스크립트를 \"설치된 스크립트\" 페이지에서 한눈에 확인하세요", + "welcome_feature_market_title": "스크립트 마켓에서 설치", + "welcome_feature_market_desc": "scriptcat.org에서 클릭 한 번으로 스크립트를 찾고 설치하세요", + "welcome_feature_backup_title": "스크립트를 잃어버리지 마세요", + "welcome_feature_backup_desc": "로컬 또는 클라우드에 백업해 두면 기기를 바꿔도 걱정 없습니다", + "welcome_start": "둘러보기 시작", + "welcome_later": "나중에 하기", + "tour_finish": "완료", + "tour_progress": "{{current}} / {{total}}", + "title": "온보딩 가이드", + "demo_normal_name": "예제 스크립트", + "demo_normal_desc": "이 가이드를 위한 예제 스크립트", + "demo_background_name": "예제 백그라운드 스크립트", + "demo_background_desc": "이 가이드를 위한 예제 백그라운드 스크립트" +} diff --git a/src/locales/ko-KR/index.ts b/src/locales/ko-KR/index.ts new file mode 100644 index 000000000..bacd6d096 --- /dev/null +++ b/src/locales/ko-KR/index.ts @@ -0,0 +1,11 @@ +export { default as agent } from "./agent.json"; +export { default as common } from "./common.json"; +export { default as editor } from "./editor.json"; +export { default as guide } from "./guide.json"; +export { default as install } from "./install.json"; +export { default as logs } from "./logs.json"; +export { default as permission } from "./permission.json"; +export { default as popup } from "./popup.json"; +export { default as script } from "./script.json"; +export { default as settings } from "./settings.json"; +export { default as tools } from "./tools.json"; diff --git a/src/locales/ko-KR/install.json b/src/locales/ko-KR/install.json new file mode 100644 index 000000000..17d489ce0 --- /dev/null +++ b/src/locales/ko-KR/install.json @@ -0,0 +1,181 @@ +{ + "script": "스크립트 설치", + "update_script": "스크립트 업데이트", + "subscribe": "구독 설치", + "update_subscribe": "구독 업데이트", + "update_script_no_close": "창을 닫지 않고 업데이트", + "script_no_close": "창을 닫지 않고 설치", + "update_script_no_more_update": "업데이트하고 이후 업데이트는 확인 안 함", + "close_update_script_no_more_update": "닫고 업데이트 확인 안 함", + "script_no_more_update": "설치하고 이후 업데이트는 확인 안 함", + "subscribe_scripts_title": "이 구독은 다음 스크립트를 설치합니다", + "subscribe_scripts_empty": "이 구독에는 아직 선언된 스크립트가 없습니다", + "perm_card_title": "이 스크립트에 다음 권한이 부여됩니다", + "perm_card_hint": "설치하기 전에 확인해 주세요", + "perm_card_empty": "이 스크립트는 특별한 권한을 요청하지 않습니다", + "perm_match_label": "실행 사이트", + "perm_match_summary": "스크립트가 다음 사이트에서 실행되며 페이지를 수정합니다", + "perm_connect_label": "교차 출처 접근", + "perm_connect_summary": "다음 도메인으로 요청을 보내고 데이터를 읽을 수 있습니다", + "perm_grant_label": "GM 기능", + "perm_grant_summary": "다음 GM API를 호출할 수 있습니다", + "perm_require_label": "외부 리소스", + "perm_require_summary": "다음 서드파티 스크립트와 리소스를 불러옵니다", + "badge_background": "백그라운드", + "badge_scheduled": "예약됨", + "enabled_label": "활성화됨", + "schedule_cron_label": "예약 작업", + "schedule_next_run": "다음 실행", + "schedule_background_desc": "브라우저가 열려 있는 동안 자동으로 실행됩니다", + "background_script_description": "이 스크립트는 백그라운드 스크립트입니다. 활성화하면 브라우저가 시작될 때 자동으로 실행되며, 패널에서 수동으로 제어할 수도 있습니다.", + "scheduled_script_description_title": "이 스크립트는 예약 스크립트입니다. 활성화하면 지정된 시간에 자동으로 실행되며, 패널에서 수동으로 제어할 수도 있습니다.", + "code_lines": "{{count}}줄", + "code_copy": "코드 복사", + "code_collapse": "접기", + "code_expand": "펼치기", + "loading_title": "스크립트 불러오는 중", + "loading_desc": "소스에서 스크립트 내용을 다운로드하고 분석하고 있습니다", + "error_retry": "다시 시도", + "error_invalid_desc": "유효한 설치 소스 매개변수가 없어 스크립트를 불러올 수 없습니다.", + "context_install": "스크립트 설치", + "context_update": "스크립트 업데이트", + "background_script": "백그라운드 스크립트", + "scheduled_script": "예약 스크립트", + "watching_chip": "감시 중", + "watching_title": "파일 변경 감시 중", + "watching_file_desc": "{{file}} 파일을 저장하면 스크립트가 자동으로 재설치되고 동기화됩니다", + "watching_last_sync": "마지막 동기화 {{time}}", + "warning_title": "신뢰할 수 있는 출처의 스크립트인지 확인하세요", + "warning_risk_connect": "모든 도메인에 접근할 수 있음", + "warning_risk_antifeature": "안티피처(anti-feature)가 포함되어 있음", + "warning_risk_join": ", ", + "warning_risk_tail": " — 설치 시 주의하세요.", + "action_note_install": "설치하면 이 스크립트의 출처와 제작자를 신뢰하는 것입니다", + "action_note_update": "업데이트하면 이 코드와 권한 변경 사항을 승인하는 것입니다", + "action_note_subscribe": "설치하면 이 구독과 그 제작자를 신뢰하는 것입니다", + "action_note_watching": "감시 중 — 파일을 저장하면 자동으로 업데이트됩니다. 수동으로 조작하려면 감시를 중지하세요", + "context_skill_install": "스킬 설치", + "context_skill_update": "스킬 업데이트", + "skill_kind": "AI 스킬", + "skill_prompt_title": "프롬프트", + "skill_prompt_chip": "SKILL.md", + "skill_tools_title": "도구", + "skill_config_title": "설정", + "skill_references_title": "참고 자료", + "skill_required": "필수", + "skill_secret": "시크릿", + "skill_install": "스킬 설치", + "skill_update": "스킬 업데이트", + "skill_warning": "이 스킬은 AI에 프롬프트를 주입하고, 다음 도구와 GM 기능, 설정을 호출할 수 있는 권한을 부여합니다. 반드시 신뢰할 수 있는 출처에서만 설치하세요!", + "skill_warning_title": "이 스킬이 신뢰할 수 있는 출처의 것인지 확인하세요", + "skill_warning_desc": "설치하면 AI에 프롬프트를 주입하고, 나열된 도구(GM 권한 포함)와 설정에 대한 읽기/쓰기 권한을 부여합니다 — 설치 시 주의하세요.", + "success": "설치 완료", + "install": {}, + "failed": "설치 실패", + "subscribe_success": "구독 완료", + "updatepage": { + "title": "일괄 업데이트", + "main_header": "업데이트 확인", + "last_check": "마지막 확인 {{time}}", + "status_checking_updates": "업데이트 확인 중...", + "updates_available": "업데이트 {{count}}건 있음", + "ignored_count": "{{count}}건 무시됨", + "selected_count": "{{selected}} / {{total}}개 선택됨", + "update_selected": "선택 항목 업데이트 ({{count}})", + "ignore_selected": "선택 항목 무시", + "update": "업데이트", + "ignore": "무시", + "restore": "복원", + "restore_all": "모두 복원", + "ignored_section": "무시된 업데이트", + "auto_close": "{{count}}초 후 자동으로 닫힘", + "col_script": "스크립트", + "col_version": "버전", + "col_change": "변경 사항", + "col_source": "출처", + "col_action": "작업", + "enabled": "활성화", + "disabled": "비활성화", + "codechange_major": "큰 변경", + "codechange_noticeable": "눈에 띄는 변경", + "codechange_tiny": "작은 변경", + "tag_new_connect": "새 @connect", + "empty_title": "모든 스크립트가 최신 상태입니다", + "empty_desc": "{{count}}개 스크립트 확인 · 업데이트 없음", + "recheck": "다시 확인", + "tap_to_expand": "탭하여 펼치기", + "similarity": "유사도", + "new_connects": "새 @connect", + "toast_found": "업데이트 가능한 스크립트 {{count}}개를 찾았습니다", + "toast_uptodate": "모든 스크립트가 최신 상태입니다" + }, + "importpage": { + "title": "데이터 가져오기", + "context_review": "데이터 가져오기", + "context_importing": "가져오는 중", + "context_done": "가져오기 완료", + "selected_count": "{{selected}} / {{total}}개 선택됨", + "unimportable_count": "{{count}}개는 가져올 수 없음", + "count_scripts": "스크립트 {{count}}개", + "count_subscribes": "구독 {{count}}개", + "col_script": "스크립트", + "col_version": "버전", + "col_source": "출처", + "col_data": "데이터", + "col_status": "상태", + "col_enabled": "활성화", + "op_add": "신규", + "op_update": "업데이트", + "op_error": "분석 실패", + "source_local": "로컬에서 생성됨", + "data_values": "{{count}}개 항목", + "data_resources": "리소스 포함", + "enable_after_import": "가져온 후 활성화", + "row_error": "파일이 손상되어 가져올 수 없습니다", + "unknown_script": "알 수 없는 스크립트", + "subscribe_section": "구독", + "trust_hint": "선택한 항목만 복원되며, 가져오는 과정에서 어떤 데이터도 외부로 전송되지 않습니다", + "import_selected": "선택 항목 가져오기 ({{count}})", + "importing_progress": "백업 복원 중 · {{done}} / {{total}} 완료", + "importing_hint": "이 페이지를 열어 두세요", + "importing_actionbar_hint": "스크립트와 데이터를 복원하는 중입니다. 이 페이지를 닫지 마세요", + "importing_button": "가져오는 중…", + "cancel": "취소", + "status_pending": "대기 중", + "status_importing": "가져오는 중", + "status_done": "가져옴", + "status_skipped": "건너뜀", + "done_title": "가져오기 완료", + "done_desc": "선택한 스크립트와 데이터가 복원되었습니다", + "done_stat_scripts": "스크립트 {{count}}개", + "done_stat_subscribes": "구독 {{count}}개", + "done_stat_values": "데이터 {{count}}개", + "view_scripts": "스크립트 목록 보기", + "loading_title": "백업 파일 분석 중", + "loading_desc": "백업 내용을 읽고 검증하고 있습니다", + "error_title": "백업 파일을 읽을 수 없습니다", + "error_desc": "백업 파일이 손상되었거나 가져오기 링크가 만료되었을 수 있습니다", + "invalid_desc": "가져오기 링크가 유효하지 않거나 만료되었습니다", + "retry": "다시 시도", + "empty_title": "이 백업에는 가져올 항목이 없습니다", + "empty_desc": "이 백업 파일에는 스크립트나 구독이 포함되어 있지 않습니다" + }, + "downloading_status_text": "다운로드 중입니다. {{bytes}} 수신함.", + "downloading_status_percent": "다운로드 중입니다. {{bytes}} / {{total}}({{percent}}%) 수신함.", + "page_load_failed": "설치 페이지를 불러오지 못했습니다", + "invalid_page": "잘못된 페이지", + "from_legitimate_sources_warning": "반드시 정당한 출처에서 스크립트를 설치하세요! 출처가 불분명한 스크립트는 개인정보를 침해하거나 악의적인 동작을 수행할 수 있습니다.", + "referral_link_title": "추천 링크", + "ads_title": "광고", + "payment_title": "유료", + "miner_title": "채굴", + "membership_title": "멤버십 기능", + "tracking_title": "추적", + "referral_link_description": "이 스크립트는 제작자의 추천 링크로 수정하거나 리디렉션합니다", + "ads_description": "이 스크립트는 방문하는 페이지에 광고를 삽입합니다", + "payment_description": "이 스크립트는 정상적으로 사용하려면 결제가 필요합니다", + "miner_description": "이 스크립트는 채굴(마이닝) 행위를 합니다", + "membership_description": "이 스크립트는 정상적으로 사용하려면 회원 가입이 필요합니다", + "tracking_description": "이 스크립트는 사용자 정보를 추적합니다", + "script_info_load_failed": "스크립트 정보를 불러오지 못했습니다" +} diff --git a/src/locales/ko-KR/logs.json b/src/locales/ko-KR/logs.json new file mode 100644 index 000000000..618c49de8 --- /dev/null +++ b/src/locales/ko-KR/logs.json @@ -0,0 +1,59 @@ +{ + "log_title": "실행 로그", + "last_5_minutes": "최근 5분", + "last_15_minutes": "최근 15분", + "last_30_minutes": "최근 30분", + "last_1_hour": "최근 1시간", + "last_3_hours": "최근 3시간", + "last_6_hours": "최근 6시간", + "last_12_hours": "최근 12시간", + "last_24_hours": "최근 24시간", + "last_7_days": "최근 7일", + "query": "조회", + "labels": "라벨", + "search_regex": "검색(정규식 지원)", + "clean_schedule": "다음보다 오래된 로그 자동 정리", + "days_ago_logs": "일", + "delete_completed": "삭제 완료", + "delete_current_logs": "현재 로그 삭제", + "clear_completed": "지우기 완료", + "clear_logs": "로그 지우기", + "now": "현재", + "last_updated": "마지막 업데이트", + "runtime": "런타임", + "advanced": "고급", + "label_filter": "라벨 필터", + "add_label": "라벨 추가", + "back_to_top": "맨 위로", + "refresh": "새로고침", + "all_levels": "전체", + "total_count": "총 {{count}}개", + "filtered_count": "필터링됨 {{count}}개", + "clear_logs_confirm": "모든 로그를 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "no_logs": "로그가 없습니다", + "refresh_off": "끄기", + "interval_5s": "5초", + "interval_10s": "10초", + "interval_30s": "30초", + "interval_1m": "1분", + "interval_5m": "5분", + "quick_range": "빠른 범위", + "absolute_range": "절대 범위", + "from_start": "시작", + "to_end": "종료", + "apply_range": "범위 적용", + "auto_refresh_hint": "종료 시간을 '현재'로 설정하면 자동 새로고침이 최신 로그를 계속 가져옵니다.", + "group_minutes": "분", + "group_hours": "시간", + "group_days": "일", + "weekdays_short": "일,월,화,수,목,금,토", + "year_month": "{{year}}년 {{month}}월", + "time": "시간", + "prev_month": "이전 달", + "next_month": "다음 달", + "live": "실시간", + "total_logs": "총 {{length}}개의 로그가 조회되었습니다", + "filtered_logs": "필터링 후 {{length}}개의 로그", + "enter_filter_conditions": "조회할 필터 조건을 입력하세요", + "custom_range": "사용자 지정 범위" +} diff --git a/src/locales/ko-KR/permission.json b/src/locales/ko-KR/permission.json new file mode 100644 index 000000000..5b5298843 --- /dev/null +++ b/src/locales/ko-KR/permission.json @@ -0,0 +1,39 @@ +{ + "permission": "권한", + "permission_value": "권한 값", + "allow": "허용", + "permission_management": "권한 관리", + "script_accessing_cross_origin_resource": "스크립트가 교차 출처 리소스에 접근하려고 합니다", + "confirm_operation_description": "스크립트가 이 작업을 수행하도록 허용할지 확인하세요. 스크립트는 @connect 태그를 추가하여 이 확인을 건너뛸 수도 있습니다.", + "request_domain": "요청 도메인", + "request_url": "요청 URL", + "access_cookie_content": "스크립트가 웹사이트의 쿠키 내용에 접근하려고 합니다", + "confirm_script_operation": "스크립트가 이 작업을 수행하도록 허용할지 확인하세요. 쿠키에는 중요한 사용자 데이터가 포함되어 있으므로 신뢰할 수 있는 스크립트에만 허용하세요.", + "cookie_domain": "쿠키 도메인", + "script_operation_title": "스크립트가 스크립트 동기화 저장소에 접근하려고 합니다", + "script_operation_description": "스크립트가 이 작업을 수행하도록 허용할지 확인하세요. 허용하면 스크립트가 설정한 저장 공간에 접근할 수 있으며, 그 안에 app/${dir} 디렉터리를 생성합니다.", + "script_permission_content": "스크립트", + "extension_site_access_title": "ScriptCat에 사이트 접근 권한이 필요합니다", + "extension_site_access_description": "ScriptCat이 이 요청을 수행할 수 있도록 이 출처에 대한 브라우저 사이트 접근 권한을 부여하세요. 이는 확장 프로그램의 사이트 접근 설정을 변경합니다.", + "extension_site_access_content": "사이트", + "request_permission": "권한 요청", + "user_script_type": "유저스크립트", + "auth_duration": "인증 유효 기간", + "duration_once": "한 번만", + "duration_temporary": "임시", + "duration_permanent": "영구", + "apply_to_all_domains": "요청된 모든 도메인에 적용", + "apply_to_all_domains_desc": "이 스크립트의 모든 요청에 적용됩니다(와일드카드)", + "allow_action": "허용", + "deny_action": "거부", + "ignore_action": "무시", + "cancel_action": "취소", + "loading_confirm": "인증 요청을 불러오는 중…", + "cookie_warning_title": "민감도가 높은 권한", + "cookie_warning_desc": "쿠키에는 로그인 상태 등 민감한 데이터가 포함되어 있습니다. 신뢰할 수 있는 스크립트에만 허용하세요.", + "confirm_expired_title": "인증 요청이 만료되었습니다", + "confirm_expired_desc": "이 인증 요청은 시간이 초과되었거나 이미 처리되었습니다. 페이지로 돌아가 다시 시도해 주세요.", + "auto_close_in": "{{second}}초 후 창이 자동으로 닫힙니다", + "permission_cors": "교차 도메인(CORS)", + "permission_cookie": "쿠키 관리" +} diff --git a/src/locales/ko-KR/popup.json b/src/locales/ko-KR/popup.json new file mode 100644 index 000000000..f15cc6b0a --- /dev/null +++ b/src/locales/ko-KR/popup.json @@ -0,0 +1,27 @@ +{ + "new_version_available": "새 버전이 있습니다", + "current_page_scripts": "현재 페이지에서 실행 중인 스크립트", + "enabled_background_scripts": "활성화되어 실행 중인 백그라운드 스크립트", + "develop_mode_guide": "'개발자 모드'가 활성화되어 있지 않아 스크립트가 정상적으로 실행되지 않습니다. 👉활성화 방법 보기", + "lower_version_browser_guide": "브라우저 버전이 너무 낮아 스크립트가 정상적으로 실행되지 않습니다. 👉자세히 알아보기", + "click_to_reload": "👉클릭하여 새로고침", + "page_in_blacklist": "현재 페이지는 차단 목록에 있어 스크립트를 사용할 수 없습니다", + "ext_update_notification": "ScriptCat 확장 프로그램이 업데이트되었습니다", + "ext_update_notification_desc": "현재 버전: {{version}}, 자세한 내용은 업데이트 로그를 확인하세요", + "script_menu_display": "스크립트가 등록한 메뉴", + "badge_type_none": "표시 안 함", + "badge_type_run_count": "실행 횟수", + "badge_type_script_count": "스크립트 수", + "script_menu": "스크립트 메뉴", + "display_right_click_menu": "우클릭 메뉴 표시", + "display_right_click_menu_desc": "브라우저 우클릭 메뉴에 스크립트 메뉴를 표시합니다", + "expand_count": "펼침 개수", + "auto_collapse_when_exceeds": "이 개수를 초과하면 자동으로 접기", + "allow_user_script_guide": "'유저스크립트 허용'이 활성화되어 있지 않아 스크립트가 정상적으로 실행되지 않습니다. 👉활성화 방법 보기", + "request_permission": "권한 요청", + "show_more_scripts": "+{{count}}개 스크립트", + "use_on_mobile": "모바일에서 ScriptCat 사용하기", + "scan_qr_to_install": "QR 코드를 스캔하여 휴대폰에 ScriptCat 설치", + "menu_expand_num_before": "메뉴 항목이", + "menu_expand_num_after": "개를 초과하면 숨겨집니다." +} diff --git a/src/locales/ko-KR/script.json b/src/locales/ko-KR/script.json new file mode 100644 index 000000000..7d4efda63 --- /dev/null +++ b/src/locales/ko-KR/script.json @@ -0,0 +1,77 @@ +{ + "create_user_script": "유저스크립트 만들기", + "create_background_script": "백그라운드 스크립트 만들기", + "create_scheduled_script": "예약 스크립트 만들기", + "create_script": "스크립트 만들기", + "installed_scripts": "설치된 스크립트", + "nav_scripts": "스크립트", + "subscribe": "구독", + "subscribe_scripts_count": "스크립트 {{count}}개", + "enter_subscribe_name": "구독 이름을 입력하세요", + "subscribe_url": "구독 URL", + "confirm_delete_subscription": "이 구독을 삭제하시겠습니까? 관련 스크립트도 함께 삭제됩니다.", + "list": {}, + "apply_to_run_status": "적용 대상 / 실행 상태", + "running": "실행 중", + "source_subscribe_link": "구독 링크", + "source_local_script": "로컬 스크립트", + "source_script_link": "스크립트 링크", + "confirm_delete_scripts_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "confirm_delete_script_content": "스크립트 \"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "delete_failed": "삭제에 실패했습니다", + "checking_for_updates": "업데이트 확인 중...", + "new_version_available": "새 버전이 있습니다", + "latest_version": "최신 버전입니다", + "update_check_failed": "업데이트 확인에 실패했습니다", + "operation_failed": "작업에 실패했습니다", + "scripts_pinned_to_top": "선택한 스크립트가 고정되었습니다", + "homepage": "홈페이지", + "script_total_runs": "이 스크립트는 총 {{runNum}}회 실행되었으며, iframe에서 {{runNumByIframe}}회 실행되었습니다", + "script_total_runs_single": "이 스크립트는 {{runNum}}회 실행되었습니다", + "script_disabled": "이 스크립트는 활성화되어 있지 않습니다", + "cron_oncetype": { + "minute": "{{next}}(매분 실행)", + "hour": "{{next}}(매시간 실행)", + "day": "{{next}}(매일 실행)", + "month": "{{next}}(매월 실행)", + "week": "{{next}}(매주 실행)" + }, + "cron_invalid_expr": "잘못된 cron 표현식입니다", + "background_script": "백그라운드 스크립트", + "scheduled_script": "예약 스크립트", + "next_run": "다음 실행", + "background_script_tooltip": "백그라운드 스크립트입니다. 활성화하면 백그라운드에서 실행됩니다.", + "scheduled_script_tooltip": "예약 스크립트입니다. 설정한 시간에 자동으로 실행됩니다.", + "search_scripts": "스크립트 검색", + "script_list": { + "sidebar": { + "stopped": "중지됨", + "all": "전체", + "normal_script": "일반 스크립트", + "status": "상태" + } + }, + "tags": "태그", + "input_tags_placeholder": "태그를 입력하고 Enter를 눌러 확인하세요", + "error_metadata_invalid": "잘못된 메타데이터 블록입니다", + "error_script_name_required": "스크립트 이름은 필수입니다", + "error_script_namespace_required": "스크립트 @namespace는 필수입니다", + "error_cron_invalid": "잘못된 cron 표현식입니다: {{expr}}", + "error_script_type_mismatch": "스크립트 유형이 일치하지 않습니다: 일반 스크립트와 백그라운드 스크립트는 서로 변환할 수 없습니다", + "error_old_script_code_missing": "이전 스크립트 코드를 찾을 수 없습니다", + "error_subscribe_name_required": "구독 이름은 필수입니다", + "error_grant_conflict": "@grant에 'none'과 GM API가 함께 선언되어 있습니다", + "error_metadata_line_duplicated": "메타데이터에 중복된 선언이 있습니다.", + "create_group": "만들기", + "import_group": "가져오기", + "import_local_script": "로컬 스크립트 가져오기", + "link_import": "URL에서 가져오기", + "import_skill": "Skill 가져오기", + "link_import_desc": "스크립트 / 구독 URL을 한 줄에 하나씩 붙여넣으세요", + "link_import_placeholder": "https://example.com/script.user.js", + "link_import_hint": "유저스크립트 / 구독 / Skill URL을 지원합니다", + "not_a_valid_script": "유효한 유저스크립트 또는 SkillScript가 아닙니다", + "import_done": "가져오기 완료: 성공 {{success}}개 · 실패 {{fail}}개", + "drop_to_install": "스크립트 또는 Skill을 여기에 드롭하여 설치", + "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip Skill 패키지를 드롭하세요" +} diff --git a/src/locales/ko-KR/settings.json b/src/locales/ko-KR/settings.json new file mode 100644 index 000000000..9812203f4 --- /dev/null +++ b/src/locales/ko-KR/settings.json @@ -0,0 +1,114 @@ +{ + "general": "일반", + "language": "언어", + "help_translate": "번역 참여하기", + "script_sync": "스크립트 동기화", + "sync_delete": "삭제 동기화", + "sync_delete_desc": "활성화하면 스크립트를 삭제할 때 삭제 표시가 추가되고, 다른 기기가 이 상태를 감지해 해당 스크립트를 함께 삭제합니다. 비활성화하면 로컬과 클라우드에서 스크립트가 바로 삭제되며, 여러 기기를 사용 중이라면 동기화가 반복되는 문제가 발생할 수 있습니다.", + "enable_script_sync_to": "스크립트 동기화 활성화 주기", + "never": "사용 안 함", + "6_hours": "6시간", + "12_hours": "12시간", + "every_day": "매일", + "every_week": "매주", + "update_disabled_scripts": "비활성화된 스크립트도 업데이트", + "silent_update_non_critical_changes": "중요하지 않은 변경 사항은 조용히 업데이트", + "enable_eslint": "ESLint 활성화", + "eslint_rules": "ESLint 규칙", + "custom_eslint_rules_config": "사용자 지정 ESLint 규칙 설정(JSON 형식)", + "enter_eslint_rules": "ESLint 규칙을 입력하세요. https://eslint.org/play/ 에서 설정을 내려받을 수 있습니다.", + "language_change_tip": "언어가 변경되었습니다", + "backup": "백업", + "local": "로컬", + "export_file": "파일 내보내기", + "import_file": "파일 가져오기", + "cloud": "클라우드", + "backup_to": "백업 위치", + "preparing_backup": "클라우드로 백업 준비 중", + "backup_success": "백업이 완료되었습니다", + "backup_failed": "백업에 실패했습니다", + "no_backup_files": "백업 파일이 없습니다", + "backup_list": "백업 목록", + "open_backup_dir": "백업 디렉터리 열기", + "confirm_delete_backup_file": "백업 파일을 삭제하시겠습니까?", + "backup_strategy": "백업 전략", + "under_construction": "준비 중입니다", + "sync_system_connect_failed": "동기화 시스템 연결에 실패했습니다", + "sync_system_closed": "동기화가 꺼져 있습니다", + "sync_system_closed_description": "동기화가 비활성화되어 있습니다. 다시 설정해 주세요", + "export_success": "내보내기가 완료되었습니다", + "get_backup_dir_url_failed": "백업 디렉터리 주소를 가져오지 못했습니다", + "get_backup_files_failed": "백업 파일 목록을 가져오지 못했습니다", + "baidu_netdisk": "바이두 넷디스크", + "netdisk_unbind": "{{provider}} 연동 해제", + "netdisk_unbind_confirm": "{{provider}} 계정 연동을 해제하시겠습니까?", + "netdisk_unbind_success": "{{provider}} 계정 연동이 해제되었습니다", + "netdisk_unbind_error": "{{provider}} 계정 연동 해제에 실패했습니다", + "save_only_current_group": "현재 그룹에만 저장", + "security": "보안", + "blacklist_pages": "차단 목록 페이지", + "blacklist_placeholder": "다음과 같은 페이지에서 ScriptCat이 스크립트를 실행하지 않도록 합니다\nhttps://*.example.com", + "expression_format_error": "조건식 형식 오류", + "migration_confirm_message": "저장소 엔진 마이그레이션을 다시 시도하면 기존 데이터가 변경됩니다. 진행 전에 확인해 주세요. 자세한 내용:https://docs.scriptcat.org/docs/change/v0.17/", + "retry_migration": "저장소 엔진 마이그레이션 다시 시도", + "sync_status": "동기화 상태", + "interface_settings": "인터페이스", + "select_interface_language": "인터페이스 표시 언어 선택", + "extension_icon_badge": "확장 프로그램 아이콘 배지", + "display_type": "표시 유형", + "extension_icon_badge_type": "확장 프로그램 아이콘에 표시할 숫자 유형", + "background_color": "배경색", + "badge_background_color_desc": "배지 배경색", + "text_color": "텍스트 색상", + "badge_text_color_desc": "배지 텍스트 색상", + "badge_type_none": "표시 안 함", + "badge_type_run_count": "실행 횟수", + "badge_type_script_count": "스크립트 수", + "script_menu": "스크립트 메뉴", + "display_right_click_menu": "우클릭 메뉴에 표시", + "display_right_click_menu_desc": "브라우저 우클릭 메뉴에 스크립트 메뉴 표시", + "expand_count": "펼침 개수", + "auto_collapse_when_exceeds": "이 개수를 초과하면 자동으로 접기", + "script_update_check_frequency": "스크립트 업데이트 확인 주기", + "script_auto_update_frequency": "스크립트 자동 업데이트 확인 주기", + "control_script_update_behavior": "스크립트 업데이트 동작 제어", + "blacklist_pages_desc": "지정한 페이지에서 스크립트 실행을 막습니다. 와일드카드를 지원합니다", + "development_tools": "개발 도구", + "check_script_code_quality": "스크립트 코드 품질과 오류를 검사", + "script_run_env": { + "title": "실행 환경", + "all": "전체", + "normal-tabs": "일반 탭", + "incognito-tabs": "시크릿 탭" + }, + "script_run_at": {}, + "script_setting": { + "default": "기본값" + }, + "notification": { + "script_sync_delete": "스크립트 동기화 삭제", + "script_sync_delete_desc": "스크립트 {{scriptName}}이(가) 삭제되었습니다", + "subscribe_update": "구독 {{subscribeName}}이(가) 업데이트되었습니다", + "subscribe_update_desc": "새 스크립트: {{newScripts}}\n삭제된 스크립트: {{deletedScripts}}" + }, + "enable_background": { + "title": "백그라운드 실행 활성화", + "description": "활성화하면 모든 창을 닫아도 브라우저가 트레이로 최소화된 채 백그라운드에서 계속 실행되며, 수동으로 Chrome을 종료할 때까지 유지됩니다. 이를 통해 백그라운드 스크립트가 계속 실행될 수 있습니다.", + "enable_failed": "활성화에 실패했습니다", + "disable_failed": "비활성화에 실패했습니다", + "prompt_title": "백그라운드 실행을 활성화할까요?", + "prompt_description": "이 스크립트는 {{scriptType}}입니다. 백그라운드 실행을 활성화하면 브라우저를 닫아도 스크립트가 계속 실행됩니다.", + "enable_now": "지금 활성화", + "maybe_later": "나중에 하기", + "settings_hint": "이 옵션은 설정에서 언제든지 변경할 수 있습니다." + }, + "favicon_service": "파비콘 서비스", + "favicon_service_desc": "웹사이트 아이콘을 가져올 서비스를 선택하세요", + "favicon_service_scriptcat": "ScriptCat", + "favicon_service_google": "Google", + "favicon_service_duckduckgo": "DuckDuckGo", + "favicon_service_icon-horse": "Icon Horse", + "favicon_service_local": "로컬에서 가져오기", + "cloud_sync_account_verification": "클라우드 동기화 계정 확인 중...", + "cloud_sync_verification_failed": "클라우드 동기화 계정 확인에 실패했습니다" +} diff --git a/src/locales/ko-KR/tools.json b/src/locales/ko-KR/tools.json new file mode 100644 index 000000000..32e47affd --- /dev/null +++ b/src/locales/ko-KR/tools.json @@ -0,0 +1,18 @@ +{ + "development_tool": "개발 도구", + "vscode_url": "VSCode 주소", + "auto_connect_vscode_service": "VSCode 서비스 자동 연결", + "connect": "연결", + "connection_success": "연결되었습니다", + "connection_failed": "연결에 실패했습니다", + "select_import_script": "새 페이지에서 가져올 스크립트를 선택하세요", + "import_error": "가져오기 오류", + "pulling_data_from_cloud": "클라우드에서 데이터를 가져오는 중", + "pull_failed": "가져오기에 실패했습니다", + "restore": "복원", + "manual_download": "다운로드가 시작되지 않으면 수동으로 다운로드하세요", + "local_backup": "로컬 백업", + "cloud_backup": "클라우드 백업", + "auto_backup": "자동 백업", + "data_migration": "데이터 마이그레이션" +} diff --git a/src/locales/locales.ts b/src/locales/locales.ts index 6db946b30..9dd5a857a 100644 --- a/src/locales/locales.ts +++ b/src/locales/locales.ts @@ -11,6 +11,7 @@ import * as deDE from "./de-DE"; import * as viVN from "./vi-VN"; import * as ruRU from "./ru-RU"; import * as trTR from "./tr-TR"; +import * as koKR from "./ko-KR"; import { changeRelativeTimeLanguage } from "./relative-date"; export let localePath = ""; @@ -57,6 +58,7 @@ export function initLanguage(lng: string = "en-US"): void { "vi-VN": { title: "Tiếng Việt", ...viVN }, "ru-RU": { title: "Русский", ...ruRU }, "tr-TR": { title: "Türkçe", ...trTR }, + "ko-KR": { title: "한국어", ...koKR }, }, }); diff --git a/src/pkg/utils/monaco-editor/langs.ts b/src/pkg/utils/monaco-editor/langs.ts index 7805a4923..6e8ccfa12 100644 --- a/src/pkg/utils/monaco-editor/langs.ts +++ b/src/pkg/utils/monaco-editor/langs.ts @@ -295,6 +295,48 @@ const grantValuePromptsRuRU = { "window.onurlchange": "Разрешает скрипту слушать события изменения URL.", } as const; +const grantValuePromptsKoKR = { + none: "특별한 GM API 권한을 요청하지 않으며, 스크립트는 일반 페이지 스크립트에 가깝게 동작합니다.", + unsafeWindow: "페이지 자체의 window 객체에 접근하여 네이티브 페이지 스크립트와 상호작용합니다.", + GM_getValue: "스크립트의 영구 저장소에서 값 하나를 읽습니다.", + GM_getValues: "스크립트의 영구 저장소에서 여러 값을 읽습니다.", + GM_setValue: "스크립트의 영구 저장소에 값 하나를 씁니다.", + GM_setValues: "스크립트의 영구 저장소에 여러 값을 씁니다.", + GM_deleteValue: "스크립트의 영구 저장소에서 값 하나를 삭제합니다.", + GM_deleteValues: "스크립트의 영구 저장소에서 여러 값을 삭제합니다.", + GM_listValues: "스크립트의 영구 저장소에 있는 모든 키를 나열합니다.", + GM_addValueChangeListener: "스크립트 저장 값의 변경을 감지합니다.", + GM_removeValueChangeListener: "스크립트 저장 값 변경 리스너를 제거합니다.", + GM_xmlhttpRequest: "교차 출처(cross-origin) 네트워크 요청을 보냅니다. 대상 호스트는 보통 @connect로 허용해야 합니다.", + GM_download: + "파일을 다운로드합니다. URL과 파일명을 전달하거나 url, name, headers, saveAs 등의 필드를 가진 상세 객체를 전달할 수 있으며, 중단(abort) 가능한 핸들을 반환합니다.", + GM_openInTab: "새 탭을 열며, 전면/백그라운드로 열기 등의 옵션을 사용할 수 있습니다.", + GM_closeInTab: "스크립트가 열었거나 관리하는 탭을 닫습니다.", + GM_getTab: "현재 탭과 연결된 임시 데이터를 읽습니다.", + GM_saveTab: "현재 탭과 연결된 임시 데이터를 저장합니다.", + GM_getTabs: "스크립트가 저장한 모든 탭의 임시 데이터를 읽습니다.", + GM_notification: "브라우저 알림을 표시하고 클릭, 닫기 등의 이벤트를 처리합니다.", + GM_closeNotification: "지정한 스크립트 알림을 닫습니다.", + GM_updateNotification: "지정한 스크립트 알림을 업데이트합니다.", + GM_setClipboard: "시스템 클립보드에 씁니다.", + GM_registerMenuCommand: "스크립트 메뉴 명령을 등록합니다.", + GM_unregisterMenuCommand: "스크립트 메뉴 명령의 등록을 해제합니다.", + CAT_registerMenuInput: "ScriptCat API: 입력 필드가 있는 스크립트 메뉴 명령을 등록합니다.", + CAT_unregisterMenuInput: "ScriptCat API: 입력 필드가 있는 스크립트 메뉴 명령의 등록을 해제합니다.", + GM_addStyle: "페이지에 CSS를 삽입합니다.", + GM_addElement: "페이지에 요소를 생성하여 삽입합니다.", + GM_getResourceText: "@resource로 선언된 리소스의 텍스트 내용을 읽습니다.", + GM_getResourceURL: "@resource로 선언된 리소스의 URL을 가져옵니다.", + GM_cookie: "쿠키를 읽거나 쓰거나 삭제하기 위해 Cookie API에 접근합니다.", + CAT_fetchBlob: "ScriptCat 내부 API: 확장 프로그램 측에서 접근 가능한 리소스를 읽어 Blob으로 반환합니다.", + CAT_fileStorage: "ScriptCat API: 스크립트 파일 저장소에 접근합니다.", + CAT_userConfig: "ScriptCat API: 스크립트 사용자 설정에 접근합니다.", + CAT_scriptLoaded: "ScriptCat API: @early-start 시나리오에서 스크립트가 완전히 로드될 때까지 기다립니다.", + "window.close": "스크립트가 window.close()를 호출할 수 있도록 허용합니다.", + "window.focus": "스크립트가 window.focus()를 호출할 수 있도록 허용합니다.", + "window.onurlchange": "스크립트가 URL 변경 이벤트를 감지할 수 있도록 허용합니다.", +} as const; + export const editorLangs = { "zh-CN": { title: "简体中文", @@ -908,6 +950,93 @@ tracking: Этот скрипт отслеживает информацию о * * * * once(1-5) Раз в неделю, только с понедельника по пятницу`.replace(/\n/g, "
"), }, }, + + "ko-KR": { + title: "한국어", + thisIsAUserScript: "사용자 스크립트", + undefinedPrompt: "정의되지 않은 프롬프트", + quickfix: "{0} 문제 수정", + addEslintDisableNextLine: "eslint-disable-next-line 주석 추가", + addEslintDisable: "eslint-disable 주석 추가", + declareGlobal: "'{0}'을(를) 전역 변수로 선언 (/* global */)", + removeConnectWildcard: "@connect 와일드카드 제거: {0}", + replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}(으)로 교체", + replaceIncludeWithMatch: "@include를 @match {0}(으)로 교체", + grantConflict: "@grant none은 GM API와 함께 사용할 수 없습니다. none 또는 모든 GM API를 제거하세요.", + grantValuePrompts: grantValuePromptsKoKR, + prompt: { + name: "스크립트 이름", + namespace: "스크립트 네임스페이스", + copyright: "스크립트의 저작권 정보", + license: "스크립트의 오픈소스 라이선스", + version: "스크립트 버전", + description: "스크립트 설명", + icon: "스크립트 아이콘", + iconURL: "스크립트 아이콘", + defaulticon: "스크립트 아이콘", + icon64: "64x64 크기의 스크립트 아이콘", + icon64URL: "64x64 크기의 스크립트 아이콘", + grant: "스크립트가 요청하는 특수 API 권한", + author: "스크립트 작성자", + "run-at": + "스크립트 실행 시점
`document-start`: URL이 일치한 직후 가능한 한 빨리 스크립트를 주입
`document-end`: DOM 로딩이 끝난 후 주입 (이미지 등은 아직 로딩 중일 수 있음)
`document-idle`: 모든 콘텐츠 로딩이 끝난 후 주입
`document-body`: body 요소가 존재할 때만 주입", + "run-in": "스크립트가 주입되는 환경", + homepage: "스크립트 홈페이지", + homepageURL: "스크립트 홈페이지", + website: "스크립트 홈페이지", + background: "백그라운드 스크립트", + include: "스크립트가 실행되는 URL 패턴", + match: "스크립트가 실행되는 URL 패턴", + exclude: "스크립트가 실행되지 않는 URL 패턴", + connect: "스크립트가 접근할 수 있는 사이트", + resource: "가져올 리소스 파일", + require: "가져올 외부 JS 파일", + "require-css": "가져올 외부 CSS 파일", + noframes: "스크립트를 `` 내부에서 실행하지 않음", + compatible: "GreasyFork에 표시되는 호환성 정보", + "inject-into": + "스크립트 주입 환경
`content`: content 환경에 주입
`page`: 페이지 환경에 주입 (기본값)
참고: SC는 CSP를 기준으로 컨텍스트를 자동 선택하는 `inject-into: auto`를 지원하지 않습니다.", + "early-start": + "`run-at: document-start`와 함께 사용합니다. `early-start`를 사용하면 페이지보다 먼저 스크립트를 로드하고 실행할 수 있지만, 성능 문제와 GM API 사용 제한이 있을 수 있습니다. (SC 전용)", + unwrap: + "유저스크립트를 샌드박스로 감싸지 않고 페이지의 네이티브 전역 스코프에 직접 주입하여 실행합니다.
스크립트는 페이지의 실제 전역 변수에 직접 접근하고 수정할 수 있지만, GM.* 등 유저스크립트 전용 API는 사용할 수 없습니다.
페이지의 네이티브 스크립트와 깊이 상호작용해야 하거나 일반 페이지 스크립트에서 마이그레이션하는 경우에 주로 사용됩니다.", + definition: "ScriptCat 전용 기능: 에디터 자동완성에 사용되는 `.d.ts` 파일의 참조 URL", + antifeature: `스크립트 마켓과 관련된 항목으로, 환영받지 못하는 기능에는 이 설명 값을 추가해야 합니다 +referral-link: 이 스크립트는 작성자의 리퍼럴(추천) 링크로 수정하거나 리디렉션합니다 +ads: 이 스크립트는 방문한 페이지에 광고를 삽입합니다 +payment: 이 스크립트는 정상적으로 사용하려면 결제가 필요합니다 +miner: 이 스크립트는 사용자 자원을 이용하지만 사용자에게 이익이 거의 또는 전혀 없는 채굴 행위를 합니다 +membership: 이 스크립트는 정상적으로 사용하려면 회원 가입이 필요합니다 +tracking: 이 스크립트는 사용자 정보를 추적합니다`.replace(/\n/g, "
"), + updateURL: "스크립트 업데이트 확인용 URL", + downloadURL: "스크립트 업데이트 다운로드 URL", + supportURL: "지원 사이트 / 버그 제보 페이지", + source: "스크립트 소스 코드 페이지", + scriptUrl: "구독 스크립트가 참조하는 유저스크립트 URL", + storageName: "여러 스크립트가 하나의 저장 공간을 공유하도록 하는 스크립트 값 저장소 이름", + tag: "스크립트 태그, 쉼표 또는 공백으로 구분", + cloudCat: "스크립트를 CloudCat 클라우드 스크립트 패키지로 내보낼 수 있도록 표시", + cloudServer: "스크립트가 사용하는 CloudCat 클라우드 서비스", + exportValue: "클라우드 스크립트로 내보낼 때 함께 내보낼 스크립트 저장 값", + exportCookie: "클라우드 스크립트로 내보낼 때 함께 내보낼 쿠키", + crontab: `예약 스크립트 crontab 예시 (클라우드 스크립트에는 적용되지 않음) +* * * * * * 매초 실행 +* * * * * 매분 실행 +0 */6 * * * 6시간마다 0분에 한 번 실행 +15 */6 * * * 6시간마다 15분에 한 번 실행 +* once * * * 매시간 한 번 실행 +* * once * * 매일 한 번 실행 +* 10 once * * 매일 10:00-10:59 사이에 한 번 실행. 10:04에 실행되었다면 그날 10:05-10:59에는 다시 실행되지 않음 +* 1,3,5 once * * 매일 1시, 3시, 5시에 한 번 실행. 1시에 실행되었다면 그날 3시, 5시에는 다시 실행되지 않음 +* */4 once * * 4시간마다 확인 후 한 번 실행. 4시에 실행되었다면 그날 8시, 12시, 16시, 20시, 24시에는 다시 실행되지 않음 +* 10-23 once * * 매일 10:00-23:59 사이에 한 번 실행. 10:04에 실행되었다면 그날 10:05-23:59에는 다시 실행되지 않음 +* once 13 * * 매월 13일 매시간 한 번 실행 +* once(9-17) * * * 매일 9시부터 17시 사이, 매시간 한 번 실행 +0,30 once * * * 매시간 0분 또는 30분 중 먼저 도달한 시점에 한 번 실행, 나머지는 건너뜀 +* * once(9-18) * * 매월 9일부터 18일까지, 매일 한 번 실행 +* * * * once(1-5) 매주 한 번 실행, 월요일부터 금요일 사이에만`.replace(/\n/g, "
"), + }, + }, } as const; export type EditorLangCode = keyof typeof editorLangs; From c56794e14f9c037111b143e7f4afe39248d87cd0 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:02:59 +0900 Subject: [PATCH 2/8] Create terminology-ko-KR.md --- docs/references/terminology-ko-KR.md | 175 +++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 docs/references/terminology-ko-KR.md diff --git a/docs/references/terminology-ko-KR.md b/docs/references/terminology-ko-KR.md new file mode 100644 index 000000000..ae717051f --- /dev/null +++ b/docs/references/terminology-ko-KR.md @@ -0,0 +1,175 @@ +# ko-KR 용어 및 UI 문구 가이드 + +이 문서는 ScriptCat 한국어(`ko-KR`) 인터페이스와 문서에서 사용할 용어와 문체를 정의합니다. 목표는 한국어 사용자에게 자연스럽고 명확한 UI를 제공하면서 ScriptCat의 스크립트 유형, 기능 이름, 개발자 용어를 정확히 구분하는 것입니다. + +검토 기준: `src/locales/en-US/*.json`, `src/locales/zh-CN/*.json`, `src/pkg/utils/monaco-editor/langs.ts`, `docs/references/terminology-en-US.md`, `docs/references/terminology-zh-CN.md` + +## 원칙 + +1. 영어 또는 중국어 문장을 단어 단위로 직역하지 말고, 한국어 소프트웨어 UI에서 자연스러운 표현을 사용합니다. +2. `일반 스크립트`, `페이지 스크립트`, `백그라운드 스크립트`, `예약 스크립트`는 서로 다른 제품 개념이므로 임의로 합치지 않습니다. +3. 일반적인 userscript 생태계나 기능은 `유저스크립트`로 표현하고, ScriptCat의 ordinary/normal script 유형은 `일반 스크립트`로 표현합니다. +4. 원문이 모호하거나 다른 locale과 충돌하면 실제 기능, 화면 위치, 주변 문구와 제품 용어를 확인한 뒤 결정합니다. +5. placeholder, HTML/React 태그, URL, 코드 식별자와 `@match`, `@exclude`, `@grant`, `@connect`, `@resource`, `@require` 등의 메타데이터 식별자를 변경하지 않습니다. +6. 기술 용어는 개발자가 알아볼 수 있도록 정확히 유지하되, 일반 사용자용 설명은 이해하기 쉬운 한국어로 작성합니다. +7. 레이블은 짧고 명확하게 쓰고, 설명 문장은 일관된 높임말과 종결 표현을 사용합니다. +8. 중국어 전각 문장 부호(`:`, `,`, `。`)를 한국어 문구에 사용하지 않습니다. + +## 분류 + +| 분류 | 용도 | +| --- | --- | +| **A. 제품 및 기능 용어** | ScriptCat의 기능과 스크립트 유형을 식별하는 이름 | +| **B. UI 작업 및 상태** | 버튼, 메뉴, 레이블, 알림에 사용하는 기본 표현 | +| **C. 문맥에 따라 선택하는 용어** | 기능과 화면에 따라 번역이 달라지는 단어 | +| **D. 유지해야 하는 기술 용어** | API, 메타데이터, 표준 기술 개념 | +| **E. 한국어 문체 및 형식** | 띄어쓰기, placeholder, 문장 부호, 높임말 규칙 | +| **F. 기존 문구 검토 대상** | 현재 번역에서 특히 주의해야 할 혼용 사례 | + +## A. 제품 및 기능 용어 + +| 개념 | 우선 사용 | 예시 key | 설명 | +| --- | --- | --- | --- | +| ScriptCat browser extension | `ScriptCat 확장 프로그램` | `welcome_title`, `ext_update_notification` | 제품명 `ScriptCat`의 대소문자를 유지합니다. | +| generic userscript capability | `유저스크립트` | `script_list_content`, `allow_user_script_guide`, Monaco `thisIsAUserScript` | 생태계, 일반 기능, 호환 형식을 뜻할 때 사용합니다. | +| ordinary/normal ScriptCat script type | `일반 스크립트` | `create_user_script`, `script_list.sidebar.normal_script` | 백그라운드 스크립트 및 예약 스크립트와 구분되는 제품 유형입니다. | +| page script | `페이지 스크립트` | `script_list_enable_content` | 페이지에서 실행되는 개념을 설명할 때 사용합니다. | +| background script | `백그라운드 스크립트` | `create_background_script`, `background_script` | 제품의 백그라운드 실행 유형 및 기능입니다. | +| scheduled script | `예약 스크립트` | `create_scheduled_script`, `scheduled_script` | 제품 유형 이름입니다. `crontab 스크립트`로 부르지 않습니다. | +| cron scheduling syntax | `cron 표현식`, `cron 일정` | `cron_invalid_expr`, `tasks_cron` | 예약 스크립트의 일정 문법을 설명할 때만 사용합니다. | +| script synchronization | `스크립트 동기화` | `script_sync`, `sync_status` | 연결과 동기화를 구분합니다. | +| deletion synchronization | `삭제 동기화` | `sync_delete`, `notification.script_sync_delete` | 자세한 동작은 설명 문구에서 안내합니다. | +| subscription object | `구독` | `subscribe`, `subscribe_url`, `count_subscribes` | 객체와 기능 이름입니다. | +| subscribe action | `구독하기` 또는 문맥에 맞는 `구독 설치` | 설치/작업 버튼 | 명사 `구독`과 동작을 문맥에 맞게 구분합니다. | +| script discovery destination | `스크립트 마켓` / `스크립트 갤러리` | `script_list_title`, `script_gallery` | 실제 링크와 화면의 제품 이름을 따릅니다. 임의로 하나로 합치지 않습니다. | +| AI Agent | `AI 에이전트` | `agent:title` | 일반 UI에서는 한국어 표기를 사용합니다. | +| Skill feature | `스킬` | `skills`, `import_skill` | 일반 문구에서는 `스킬`을 사용하고 `SKILL.md`, `SKILL.cat.md`, `SkillScript`는 그대로 유지합니다. | +| model provider | `모델 제공업체` | `provider_select`, `provider_subtitle` | 기능 페이지 이름이 `모델 서비스`인 경우 해당 이름을 유지할 수 있습니다. | +| script manager | `유저스크립트 관리자` | 확장 프로그램 설명 | 커뮤니티 문맥에서 `매니저`를 사용할 수 있으나 제품 설명은 `관리자`를 우선합니다. | + +## B. UI 작업 및 상태 + +| 개념 | 우선 사용 | 예시 key | 설명 | +| --- | --- | --- | --- | +| create | `만들기` / `새로 만들기` | `create_script`, `create_background_script` | 같은 메뉴 안에서는 한 표현으로 통일합니다. | +| save / save as | `저장` / `다른 이름으로 저장` | `save`, `save_as` | 알림은 `저장되었습니다`처럼 자연스러운 문장으로 씁니다. | +| import / export | `가져오기` / `내보내기` | `import`, `export` | 파일과 데이터 작업에서 일관되게 사용합니다. | +| install / update | `설치` / `업데이트` | `script`, `update_script` | 객체 이름이 필요하면 함께 표시합니다. | +| run / runtime | `실행` / `런타임` 또는 `실행 시간` | `run`, `runtime`, `log_title` | 기술 레이블과 일반 설명의 문맥을 확인합니다. | +| enable / disable | `활성화` / `비활성화` | `enable`, `disable` | 상태는 `활성화됨` / `비활성화됨`을 사용합니다. | +| allow / deny | `허용` / `거부` | `allow_action`, `deny_action` | 권한 결정에 사용합니다. | +| settings | `설정` | `settings`, `script_setting` | 제품 옵션과 사용자 설정에 사용합니다. | +| configuration data | `구성` 또는 문맥에 맞는 `설정` | `skills_config`, `editor_config` | 사용자에게 자연스러운 표현을 선택하고 `컨피그`는 피합니다. | +| connect / sync | `연결` / `동기화` | `connect`, `script_sync` | 서비스 연결과 데이터 동기화를 구분합니다. | +| restore / reset / clear | `복원` / `초기화` / `비우기`·`지우기` | `restore`, `reset`, `clear` | 서로 다른 동작이므로 혼용하지 않습니다. | +| load / reload | `불러오는 중` / `새로고침` | `loading`, `click_to_reload` | 파일 또는 데이터를 가져오는 동작과 import를 구분합니다. | +| delete | `삭제` | `delete`, `delete_success` | 성공 알림은 `삭제되었습니다`를 사용합니다. | +| browser tab | `탭` | `close_current_tab`, `script_run_env.*` | `태그`와 혼동하지 않습니다. | +| directory / folder | `디렉터리` / `폴더` | `open_directory`, `opfs_type_directory` | 개발자 파일 시스템과 일반 폴더 UI를 구분할 수 있습니다. | +| click / tap | `클릭` / 터치 전용일 때 `탭` | 도움말, 펼치기 동작 | 데스크톱 확장 UI에서는 `클릭`을 우선합니다. | + +## C. 문맥에 따라 선택하는 용어 + +| 개념 | 사용할 수 있는 표현 | 선택 기준 | 예시 key | +| --- | --- | --- | --- | +| source | `출처`, `설치 출처`, `구독 출처`, `소스 코드` | origin/provenance는 `출처`, code는 `소스 코드`를 사용합니다. | `source`, `col_source`, `prompt.source` | +| local / cloud | `로컬` / `클라우드` | 데이터 위치, 백업 위치, 동기화 대상을 설명합니다. | `local`, `cloud`, `backup_to` | +| storage | `저장소`, `저장 공간` | 기능 이름과 짧은 레이블은 `저장소`, 공간을 설명하는 문장은 `저장 공간`을 사용할 수 있습니다. | `script_storage`, `storage_error` | +| panel / console | `패널` / `콘솔` | ScriptCat 조작 UI는 `패널`, 개발자 도구 출력은 `콘솔`을 사용합니다. | `background_script_description`, `build_success_message` | +| permission | `권한` | 기능이 수행할 수 있는 능력과 권한 목록에 사용합니다. | `permission`, `permission_management` | +| authorization | `권한 허용`, `권한 부여`, `권한 요청` | 스크립트에 접근을 허용하거나 허용 기간을 정할 때 사용합니다. | `auth_duration`, `confirm_expired_title` | +| authentication | `인증` | 계정, 자격 증명, 로그인 정보 검증에만 사용합니다. | `auth_type`, `account_validation_failed` | +| match / exclude | `일치` / `제외` | 사용자 문구에서는 의미를 설명하고 `@match`, `@exclude` 식별자는 그대로 유지합니다. | `website_match`, `website_exclude` | +| arguments / parameters | `매개변수` | 일반 UI에서 우선 사용합니다. 매우 개발자 중심 문맥에서는 `인수`도 가능합니다. | `chat_tool_arguments` | +| origin | `오리진` | 웹 플랫폼의 security origin을 뜻할 때 사용합니다. 일반적인 출처와 구분합니다. | `opfs_subtitle`, cross-origin copy | +| all tabs | `모든 탭` | 형제 값이 `일반 탭`, `시크릿 탭`인 경우 bare `전체`를 피합니다. | `script_run_env.all` | + +## D. 유지해야 하는 기술 용어 + +| 개념 | 표기 | 예시 key | 설명 | +| --- | --- | --- | --- | +| regular expression | `정규식` / 설명에서는 `정규 표현식` | `search_regex` | 개발자 UI의 짧은 레이블은 `정규식`이 자연스럽습니다. | +| cron expression | `cron 표현식` | `cron_invalid_expr`, `tasks_cron` | 제품 유형 이름인 `예약 스크립트`와 구분합니다. | +| expression | `표현식` | `value_export_expression`, `expression_format_error` | 조건식, 내보내기 식 등 기술 의미를 유지합니다. | +| watch file changes | `파일 감시` / `감시 중지` | `watch_file`, `stop_watch_file` | 지속적인 변경 감지를 뜻합니다. | +| metadata declaration | `선언` | `error_metadata_line_duplicated` | 값이나 일반 항목이 아니라 메타데이터 선언입니다. | +| Storage API | `Storage API` 또는 기존 제품 표기 | `storage_api` | API 이름은 알아볼 수 있게 유지합니다. | +| OPFS | `오리진 전용 파일 시스템(OPFS)` | `opfs_subtitle` | `출처별`로 직역하지 않습니다. | +| CORS | `교차 출처 접근(CORS)` | `permission_cors` | `교차 도메인`보다 정확한 기술 표현을 사용합니다. | +| product/API identifiers | 원문 유지 | ESLint, VSCode, Cookie, GM API, MCP, CloudCat | 이름과 식별자를 번역하거나 철자를 바꾸지 않습니다. | +| metadata identifiers | 원문 유지 | `@match`, `@exclude`, `@grant`, `@connect` | 설명을 붙일 수 있지만 식별자 자체는 변경하지 않습니다. | +| exact filenames/types | 원문 유지 | `SKILL.md`, `SKILL.cat.md`, `SkillScript`, `.d.ts` | 프로그램이 인식하거나 사용자가 검색해야 하는 이름입니다. | + +## E. 한국어 문체 및 형식 + +### 레이블과 문장 + +- 버튼과 메뉴는 짧은 명사형 또는 동작형으로 씁니다: `저장`, `삭제`, `업데이트 확인`. +- 설명 문장은 `~합니다` 체를 기본으로 사용합니다. +- 사용자 지시는 `~하세요`를 사용합니다. +- 확인 대화상자는 `~하시겠습니까?`를 사용합니다. +- 레이블에는 불필요한 마침표를 붙이지 않고, 완전한 문장에는 문장 부호를 사용합니다. + +### placeholder와 조사 + +- `{{count}}`, `{{name}}`, `{0}`, `$0`, `${dir}`를 그대로 유지합니다. +- 사용자에게 `은(는)`, `이(가)`, `을(를)` 같은 조사 선택 표기를 노출하지 않습니다. +- 조사가 필요 없는 구조로 문장을 바꿉니다. + +예: + +```text +나쁨: 스크립트 "{{name}}"을(를) 삭제하시겠습니까? +권장: "{{name}}" 스크립트를 삭제하시겠습니까? +``` + +### 숫자와 단위 + +- UI 카운터는 `{{count}}개`, `{{count}}초`, `{{count}}줄`처럼 숫자와 단위를 붙여 씁니다. +- 문맥상 객체가 불명확하면 `{{count}}개 항목`, `{{count}}개 스크립트`처럼 대상을 표시합니다. + +### 영문 식별자와 띄어쓰기 + +- 영문 약어와 뒤따르는 일반 명사는 띄어 씁니다: `API 키`, `URL 패턴`, `MCP 서버`. +- 조사와 어미는 자연스럽게 붙입니다: `URL에서`, `ScriptCat이`. +- 메타데이터 식별자와 설명 명사는 띄어 씁니다: `@connect 태그`, `@match 규칙`. +- 정확한 코드, URL, 파일명 내부에는 임의로 공백을 추가하지 않습니다. + +### 문장 부호 + +- 한국어 문구에서 중국어 전각 문장 부호 `:`, `,`, `。`를 사용하지 않습니다. +- 콜론은 `:`, 쉼표는 `,`, 마침표는 `.`를 사용합니다. +- 로딩/진행 표시의 말줄임표는 가능하면 `…`로 통일합니다. +- 같은 화면에서 `...`와 `…`를 혼용하지 않습니다. + +## F. 기존 문구 검토 대상 + +| 대상 | 주의할 문제 | 권장 방향 | 예시 key | +| --- | --- | --- | --- | +| `인증` / 권한 허용 | authorization을 authentication으로 오역할 수 있음 | 권한 결정은 `권한 허용`·`권한 요청`, 계정 검증만 `인증` | `auth_duration`, `loading_confirm` | +| 일반 스크립트 / 유저스크립트 | 제품 유형과 일반 생태계 용어가 섞일 수 있음 | 제품 유형은 `일반 스크립트`, 일반 개념은 `유저스크립트` | `create_user_script`, `thisIsAUserScript` | +| 예약 스크립트 / crontab script | 유형 이름과 문법 이름이 섞일 수 있음 | 유형은 `예약 스크립트`, 문법은 `cron 표현식` | `only_background_scheduled_can_run` | +| `소스` / `출처` | origin과 source code가 혼동될 수 있음 | origin은 `출처`, code는 `소스 코드` | `common:source`, `prompt.source` | +| `Skill` / `스킬` | 동일한 기능 이름이 혼용될 수 있음 | 일반 UI는 `스킬`, 정확한 식별자는 원문 유지 | `import_skill`, `skills_title` | +| 브라우저 탭 | bare `전체`가 무엇을 뜻하는지 불명확할 수 있음 | `모든 탭`, `일반 탭`, `시크릿 탭` | `script_run_env.*` | +| clear / reset | 데이터 비우기와 기본값 초기화가 혼동될 수 있음 | `비우기`·`지우기`와 `초기화`를 구분 | `clear_success`, `reset` | +| cross-origin / CORS | `교차 도메인`은 기술적으로 부정확할 수 있음 | `교차 출처` 사용 | `permission_cors` | +| 특정 브라우저 이름 | 다중 브라우저 기능에 Chrome이 남을 수 있음 | 구현이 특정 브라우저 전용이 아니면 `브라우저` 사용 | `enable_background.description` | +| placeholder 조사 | `을(를)` 같은 기계적 표기가 노출될 수 있음 | 조사가 필요 없는 문장으로 재구성 | `confirm_delete_script_content` | + +## AI 및 기여자 체크리스트 + +한국어 번역을 추가하거나 수정할 때: + +1. 대상 locale이 `ko-KR`인지 확인하고 이 문서를 먼저 읽습니다. +2. 영어 원문을 기본 의미로 확인하되, 모호하거나 오래된 문구는 실제 기능과 다른 locale을 함께 확인합니다. +3. `일반 스크립트`, `페이지 스크립트`, `백그라운드 스크립트`, `예약 스크립트`의 구분을 유지합니다. +4. 일반 userscript 개념은 `유저스크립트`, 제품의 normal type은 `일반 스크립트`로 구분합니다. +5. authorization과 authentication을 구분합니다. 권한 허용 문맥에 `인증`을 사용하지 않습니다. +6. `출처`와 `소스 코드`, `복원`과 `초기화`와 `비우기`, `연결`과 `동기화`를 문맥에 맞게 구분합니다. +7. `@match`, `@exclude`, `@grant`, `@connect`, API 이름, 파일명, placeholder를 변경하지 않습니다. +8. `은(는)`, `이(가)`, `을(를)` 표기를 사용자에게 노출하지 않도록 문장을 재구성합니다. +9. 영문 식별자 주변 띄어쓰기와 한국어 문장 부호를 확인합니다. +10. 같은 화면에서 `Skill`/`스킬`, `...`/`…`, `소스`/`출처`가 불필요하게 혼용되지 않는지 검색합니다. +11. 완성 후 실제 UI에서 잘림, 줄바꿈, 숫자 삽입, split-string 연결 문법을 확인합니다. +12. 가능하면 한국어 원어민에게 보안 경고, 권한 요청, 삭제 확인 문구를 최종 검토받습니다. From 46f0152cb1baf3b588713793cc3e35dbbb9fc1e7 Mon Sep 17 00:00:00 2001 From: CodFrm Date: Fri, 17 Jul 2026 23:59:58 +0800 Subject: [PATCH 3/8] i18n: sync and polish Korean locale --- docs/translation.md | 1 + src/assets/_locales/ko/messages.json | 2 +- src/locales/ko-KR/agent.json | 20 +++++------ src/locales/ko-KR/common.json | 8 ++--- src/locales/ko-KR/editor.json | 14 ++++---- src/locales/ko-KR/guide.json | 12 +++---- src/locales/ko-KR/install.json | 43 ++++++++++++++++++++--- src/locales/ko-KR/logs.json | 2 +- src/locales/ko-KR/permission.json | 10 +++--- src/locales/ko-KR/popup.json | 4 +-- src/locales/ko-KR/script.json | 52 ++++++++++++++++++++++++---- src/locales/ko-KR/settings.json | 40 +++++++++++++++++---- src/pkg/utils/monaco-editor/langs.ts | 8 ++--- 13 files changed, 158 insertions(+), 58 deletions(-) diff --git a/docs/translation.md b/docs/translation.md index 600dc91bd..5e280a13b 100644 --- a/docs/translation.md +++ b/docs/translation.md @@ -37,6 +37,7 @@ | `de-DE` | Deutsch | [terminology-de-DE.md](./references/terminology-de-DE.md) | | `vi-VN` | Tiếng Việt | [terminology-vi-VN.md](./references/terminology-vi-VN.md) | | `tr-TR` | Türkçe | [terminology-tr-TR.md](./references/terminology-tr-TR.md) | +| `ko-KR` | 한국어 | [terminology-ko-KR.md](./references/terminology-ko-KR.md) | > `en-US` 是运行时的回退语言(fallback),也是新翻译的模板。其措辞应被刻意校准而非将含糊或不通顺的英文直接传播到其他 locale。 diff --git a/src/assets/_locales/ko/messages.json b/src/assets/_locales/ko/messages.json index cd2b0c152..8830311a1 100644 --- a/src/assets/_locales/ko/messages.json +++ b/src/assets/_locales/ko/messages.json @@ -9,6 +9,6 @@ "message": "ScriptCat Beta" }, "scriptcat_description": { - "message": "브라우저의 모든 잠재력을 끌어내는 강력한 유저스크립트 매니저!" + "message": "브라우저의 잠재력을 최대한 활용할 수 있는 강력한 유저스크립트 관리자!" } } diff --git a/src/locales/ko-KR/agent.json b/src/locales/ko-KR/agent.json index 0d2ab8ac4..d9be7bef0 100644 --- a/src/locales/ko-KR/agent.json +++ b/src/locales/ko-KR/agent.json @@ -18,7 +18,7 @@ "provider_docs": "문서", "provider_count_hint": "기본 모델은 새 대화에 사용됩니다", "model_count": "모델 {{count}}개", - "model_fetch": "모델 가져오기", + "model_fetch": "모델 목록 불러오기", "model_name": "이름", "model_add": "모델 추가", "model_edit": "편집", @@ -73,11 +73,11 @@ "chat_search_placeholder": "대화 검색…", "chat_search_no_results": "일치하는 대화가 없습니다", "chat_export": "내보내기", - "chat_input_placeholder": "메시지를 입력하세요...", + "chat_input_placeholder": "메시지를 입력하세요…", "chat_send": "전송", "chat_stop": "중지", "chat_thinking": "생각 중", - "chat_tool_arguments": "인수", + "chat_tool_arguments": "매개변수", "chat_tool_result": "결과", "chat_no_model": "설정된 모델이 없습니다. 먼저 모델 서비스에서 모델을 추가해 주세요.", "chat_model_select": "모델 선택", @@ -85,10 +85,10 @@ "chat_copy": "복사", "chat_copy_success": "복사되었습니다", "chat_regenerate": "다시 생성", - "chat_streaming": "생성 중...", - "chat_loading_audio": "오디오 불러오는 중...", - "chat_starting": "시작하는 중...", - "chat_retrying": "재시도 중 ({{attempt}}/{{max}})...", + "chat_streaming": "생성 중…", + "chat_loading_audio": "오디오 불러오는 중…", + "chat_starting": "시작하는 중…", + "chat_retrying": "재시도 중 ({{attempt}}/{{max}})…", "chat_attach_file": "파일 첨부", "chat_welcome_hint": "스크립트에 대해 무엇이든 물어보세요", "chat_welcome_start": "대화를 만들어 시작해 보세요", @@ -120,7 +120,7 @@ "opfs_delete_confirm": "정말 삭제하시겠습니까?", "opfs_delete_success": "삭제되었습니다", "opfs_preview": "미리보기", - "opfs_subtitle": "출처별 프라이빗 파일 시스템(OPFS) · 에이전트 전용 저장소", + "opfs_subtitle": "오리진 전용 파일 시스템(OPFS) · 에이전트 전용 저장소", "opfs_refresh": "새로고침", "opfs_upload": "업로드", "opfs_actions": "작업", @@ -162,7 +162,7 @@ "mcp_no_tools": "사용 가능한 도구가 없습니다", "mcp_no_resources": "사용 가능한 리소스가 없습니다", "mcp_no_prompts": "사용 가능한 프롬프트가 없습니다", - "mcp_loading": "불러오는 중...", + "mcp_loading": "불러오는 중…", "tasks": "예약 작업", "tasks_title": "예약 작업", "tasks_subtitle": "cron 일정에 따라 에이전트 작업을 자동으로 실행합니다", @@ -208,7 +208,7 @@ "summary_model_desc": "요약에 사용되는 모델로, 설정하지 않으면 기본 모델을 사용합니다", "summary_model_placeholder": "기본 모델 사용", "search_engine": "검색 엔진", - "search_engine_desc": "web_search 도구가 사용하는 검색 소스입니다.", + "search_engine_desc": "web_search 도구가 사용하는 검색 출처입니다.", "search_engine_baidu": "바이두", "search_google_api_key": "Google API 키", "search_google_api_key_desc": "Custom Search JSON API 호출에 사용됩니다.", diff --git a/src/locales/ko-KR/common.json b/src/locales/ko-KR/common.json index 143b111f5..8d0091884 100644 --- a/src/locales/ko-KR/common.json +++ b/src/locales/ko-KR/common.json @@ -26,7 +26,7 @@ "disable": "비활성화", "name": "이름", "version": "버전", - "source": "소스", + "source": "출처", "action": "작업", "export": "내보내기", "delete": "삭제", @@ -58,8 +58,8 @@ "stop": "중지", "edit": "편집", "copy": "복사", - "exclude_on": "$0 실행 복원", - "exclude_off": "$0 실행 제외", + "exclude_on": "$0에서 다시 실행", + "exclude_off": "$0에서 실행 제외", "confirm_error": "확인 실패", "import": "가져오기", "error": "오류", @@ -76,7 +76,7 @@ "collapse": "접기", "expand": "펼치기", "no_message_content": "메시지 내용 없음", - "loading": "로딩 중...", + "loading": "로딩 중…", "no_scripts": "스크립트가 없습니다", "no_subscribes": "구독이 없습니다", "no_subscribes_hint": "구독한 스크립트 모음이 여기에 표시됩니다", diff --git a/src/locales/ko-KR/editor.json b/src/locales/ko-KR/editor.json index 951353087..a6afef331 100644 --- a/src/locales/ko-KR/editor.json +++ b/src/locales/ko-KR/editor.json @@ -24,7 +24,7 @@ "record_count": "{{count}}개 항목", "resource_count": "리소스 {{count}}개 · {{size}}", "script_list": "스크립트 목록", - "search_scripts": "스크립트 검색...", + "search_scripts": "스크립트 검색…", "new_script": "새 스크립트", "source": "출처", "from_user": "사용자", @@ -45,7 +45,7 @@ "script_storage": "스크립트 저장소", "key_placeholder": "키", "value_placeholder": "타입이 object인 경우, JSON으로 파싱 가능한 데이터를 입력하세요.", - "clear_success": "초기화되었습니다", + "clear_success": "저장소를 비웠습니다", "confirm_clear": "이 저장 공간을 정말 비우시겠습니까?", "basic_info": "기본 정보", "update_url": "업데이트 URL", @@ -66,8 +66,8 @@ "confirm_reset": "초기화하시겠습니까?", "confirm_delete_match": "이 매치를 삭제하시겠습니까?", "confirm_delete_exclude": "이 제외 항목을 삭제하시겠습니까?", - "after_deleting_match_item": "삭제 후에도 스크립트에 정의된 매치 규칙은 매치 목록에 다시 추가됩니다", - "after_deleting_exclude_item": "삭제 후에도 스크립트에 정의된 매치 규칙은 제외 목록에 다시 추가됩니다", + "after_deleting_match_item": "편집 후에는 사용자 지정 매치 규칙이 적용됩니다. 스크립트에 내장된 매치 규칙을 복원하려면 초기화를 클릭하세요.", + "after_deleting_exclude_item": "편집 후에는 사용자 지정 제외 규칙이 적용됩니다. 스크립트에 내장된 제외 규칙을 복원하려면 초기화를 클릭하세요.", "undo": "실행 취소", "redo": "다시 실행", "cut": "잘라내기", @@ -82,7 +82,7 @@ "storage_error": "저장소 오류", "upload_to_cloud": "클라우드로 업로드", "save_failed": "저장에 실패했습니다", - "exporting": "내보내는 중...", + "exporting": "내보내는 중…", "upload_to": "업로드 위치", "value_export_expression": "값 내보내기 표현식", "overwrite_original_value_on_import": "가져올 때 기존 값 덮어쓰기", @@ -97,7 +97,7 @@ "create_success_note": "새 스크립트가 생성되었습니다. 백그라운드 스크립트는 기본적으로 활성화되지 않으니 참고하세요.", "save_as_failed": "다른 이름으로 저장에 실패했습니다", "save_as_success": "다른 이름으로 저장되었습니다", - "only_background_scheduled_can_run": "백그라운드 스크립트/예약(crontab) 스크립트만 실행할 수 있습니다", + "only_background_scheduled_can_run": "백그라운드 스크립트와 예약 스크립트만 실행할 수 있습니다", "build_success_message": "빌드에 성공했습니다. 개발자 도구를 열어 콘솔에서 출력을 확인하세요", "script_modified_close_confirm": "스크립트가 수정되었습니다. 지금 닫으면 변경 사항이 사라집니다. 계속하시겠습니까?", "close_current_tab": "현재 탭 닫기", @@ -129,6 +129,8 @@ "editor_config_format_error": "에디터 설정 형식 오류", "editor_type_definition_reset": "에디터 타입 정의가 초기화되었습니다", "editor_type_definition_saved": "에디터 타입 정의가 저장되었습니다", + "trash_restore_prompt_title": "삭제한 스크립트를 복원하시겠습니까?", + "trash_restore_prompt_description": "휴지통에 이름과 네임스페이스가 같은 스크립트가 있습니다. 복원하면 기존 식별 정보와 보관된 데이터를 다시 사용합니다. 저장하지 않고 편집을 계속하려면 취소하세요.", "editor": { "show_script_list": "스크립트 목록 표시", "hide_script_list": "스크립트 목록 숨기기" diff --git a/src/locales/ko-KR/guide.json b/src/locales/ko-KR/guide.json index 03c8c5e16..28a4a6179 100644 --- a/src/locales/ko-KR/guide.json +++ b/src/locales/ko-KR/guide.json @@ -1,20 +1,20 @@ { - "installed_scripts": "설치한 스크립트가 여기에 표시됩니다. 기본 사용법은 빠른 시작을 참고하세요.", + "installed_scripts": "설치한 스크립트가 여기에 표시됩니다. 기본 사용법은 빠른 시작을 참고하세요.", "script_list_title": "스크립트 마켓", - "script_list_content": "스크립트 마켓에서 스크립트를 설치할 수 있습니다. ScriptCat은 유저스크립트뿐 아니라 백그라운드 스크립트도 지원합니다.", + "script_list_content": "스크립트 마켓에서 스크립트를 설치할 수 있습니다. ScriptCat은 유저스크립트뿐 아니라 백그라운드 스크립트도 지원합니다.", "script_list_enable_title": "스크립트 활성화", "script_list_enable_content": "스크립트는 활성화해야 사용할 수 있습니다. 페이지 스크립트는 설치 시 기본적으로 활성화되며, 백그라운드 스크립트는 기본적으로 비활성화됩니다.", "script_list_action_title": "작업", - "script_list_action_content": "작업 바에서는 스크립트 편집, 실행 제어 및 중지(백그라운드 스크립트), 설정(UserConfig 참고)에 접근할 수 있습니다. 오른쪽 버튼으로는 고급 필터링과 보기 모드 전환을 사용할 수 있습니다.", + "script_list_action_content": "작업 바에서는 스크립트 편집, 실행 제어 및 중지(백그라운드 스크립트), 설정(UserConfig 참고)에 접근할 수 있습니다. 오른쪽 버튼으로는 고급 필터링과 보기 모드 전환을 사용할 수 있습니다.", "tools_backup_title": "백업", - "tools_backup_content": "백업을 이용하면 스크립트를 저장해 유실을 막을 수 있습니다. 스크립트 파일을 로컬로 내보내거나 로컬에서 불러올 수 있으며, 클라우드에 백업하면 더욱 편리합니다. 다른 매니저에서 이전하려면 마이그레이션 가이드를 참고하세요.", + "tools_backup_content": "백업을 이용하면 스크립트를 저장해 유실을 막을 수 있습니다. 스크립트 파일을 로컬로 내보내거나 로컬에서 불러올 수 있으며, 클라우드에 백업하면 더욱 편리합니다. 다른 유저스크립트 관리자에서 이전하려면 마이그레이션 가이드를 참고하세요.", "setting_sync_title": "업데이트 및 동기화", "setting_sync_content": "스크립트 동기화 기능을 사용하면 이 기기의 스크립트 내용을 클라우드에 손쉽게 동기화할 수 있습니다. 삭제 동기화 옵션을 선택하면 이 기기에서 스크립트를 삭제할 때 클라우드에서도 함께 삭제됩니다. 여기에서 스크립트 버전을 업데이트해 더 강력한 기능을 사용할 수도 있습니다.", "installed_scripts_title": "설치된 스크립트", "subscribe_title": "구독", - "subscribe_content": "스크립트 링크를 구독하면 스크립트가 자동으로 최신 상태를 유지합니다. 자세한 내용은 구독 문서를 참고하세요.", + "subscribe_content": "스크립트 링크를 구독하면 스크립트가 자동으로 최신 상태를 유지합니다. 자세한 내용은 구독 문서를 참고하세요.", "welcome_title": "ScriptCat에 오신 것을 환영합니다 🎉", - "welcome_subtitle": "강력한 유저스크립트 매니저 — 몇 단계만 거치면 바로 시작할 수 있습니다.", + "welcome_subtitle": "강력한 유저스크립트 관리자 — 몇 단계만 거치면 바로 시작할 수 있습니다.", "welcome_feature_manage_title": "설치된 스크립트 관리", "welcome_feature_manage_desc": "모든 스크립트를 \"설치된 스크립트\" 페이지에서 한눈에 확인하세요", "welcome_feature_market_title": "스크립트 마켓에서 설치", diff --git a/src/locales/ko-KR/install.json b/src/locales/ko-KR/install.json index 17d489ce0..d94ce003f 100644 --- a/src/locales/ko-KR/install.json +++ b/src/locales/ko-KR/install.json @@ -34,9 +34,9 @@ "code_collapse": "접기", "code_expand": "펼치기", "loading_title": "스크립트 불러오는 중", - "loading_desc": "소스에서 스크립트 내용을 다운로드하고 분석하고 있습니다", + "loading_desc": "출처에서 스크립트 내용을 다운로드하고 분석하고 있습니다", "error_retry": "다시 시도", - "error_invalid_desc": "유효한 설치 소스 매개변수가 없어 스크립트를 불러올 수 없습니다.", + "error_invalid_desc": "유효한 설치 출처 매개변수가 없어 스크립트를 불러올 수 없습니다.", "context_install": "스크립트 설치", "context_update": "스크립트 업데이트", "background_script": "백그라운드 스크립트", @@ -77,7 +77,7 @@ "title": "일괄 업데이트", "main_header": "업데이트 확인", "last_check": "마지막 확인 {{time}}", - "status_checking_updates": "업데이트 확인 중...", + "status_checking_updates": "업데이트 확인 중…", "updates_available": "업데이트 {{count}}건 있음", "ignored_count": "{{count}}건 무시됨", "selected_count": "{{selected}} / {{total}}개 선택됨", @@ -103,7 +103,7 @@ "empty_title": "모든 스크립트가 최신 상태입니다", "empty_desc": "{{count}}개 스크립트 확인 · 업데이트 없음", "recheck": "다시 확인", - "tap_to_expand": "탭하여 펼치기", + "tap_to_expand": "클릭하여 펼치기", "similarity": "유사도", "new_connects": "새 @connect", "toast_found": "업데이트 가능한 스크립트 {{count}}개를 찾았습니다", @@ -145,6 +145,36 @@ "status_importing": "가져오는 중", "status_done": "가져옴", "status_skipped": "건너뜀", + "status_warning": "일부 리소스 가져오기 실패", + "resource_import_failed": "다음 리소스를 가져오지 못했습니다:", + "overwrite_local": "가져오기 전에 모든 로컬 스크립트 삭제", + "include_settings": "설정도 함께 복원", + "restore_settings_title": "설정 복원", + "restore_settings_note": "복원하면 해당 로컬 환경설정을 덮어씁니다. 클라우드 동기화 자격 증명과 같은 기기별 설정은 포함되지 않습니다.", + "restore_settings_select_all": "모두 선택", + "restore_settings_clear_all": "모두 선택 해제", + "restore_settings_customize": "사용자 지정", + "restore_settings_selected": "{{total}}개 중 {{selected}}개 선택됨", + "settings_group_app": "앱 설정", + "settings_group_agent": "AI 에이전트", + "settings_count_keys": "{{count}}개 항목", + "settings_count_units": "{{count}}개", + "section_appearance_title": "화면 및 인터페이스", + "section_appearance_desc": "메뉴, 배지, 파비콘 서비스", + "section_update_title": "업데이트 및 동기화", + "section_update_desc": "확인 주기, 무알림 업데이트, 자동 동기화", + "section_editor_title": "에디터 및 Lint", + "section_editor_desc": "에디터 설정 및 환경설정, ESLint", + "section_other_title": "기타", + "section_other_desc": "사이트 차단 목록, 로그 정리 등", + "section_models_title": "AI 모델", + "section_models_desc": "모델 및 자격 증명 설정, 기본 모델과 요약 모델", + "section_mcp_title": "MCP 서버", + "section_mcp_desc": "설정된 MCP 연결", + "section_tasks_title": "예약 작업", + "section_tasks_desc": "에이전트 예약 작업 정의", + "import_all_settings": "선택 항목 가져오기 ({{count}} · 모든 설정)", + "import_partial_settings": "선택 항목 가져오기 ({{count}} · 설정 {{selected}}/{{sections}})", "done_title": "가져오기 완료", "done_desc": "선택한 스크립트와 데이터가 복원되었습니다", "done_stat_scripts": "스크립트 {{count}}개", @@ -177,5 +207,8 @@ "miner_description": "이 스크립트는 채굴(마이닝) 행위를 합니다", "membership_description": "이 스크립트는 정상적으로 사용하려면 회원 가입이 필요합니다", "tracking_description": "이 스크립트는 사용자 정보를 추적합니다", - "script_info_load_failed": "스크립트 정보를 불러오지 못했습니다" + "script_info_load_failed": "스크립트 정보를 불러오지 못했습니다", + "btn_restore": "스크립트 복원", + "btn_restore_update": "스크립트 복원 및 업데이트", + "in_trash_hint": "이 스크립트는 휴지통에 있습니다. 설치하면 스크립트를 복원하고 기존 데이터를 유지합니다." } diff --git a/src/locales/ko-KR/logs.json b/src/locales/ko-KR/logs.json index 618c49de8..dc771e31a 100644 --- a/src/locales/ko-KR/logs.json +++ b/src/locales/ko-KR/logs.json @@ -38,7 +38,7 @@ "interval_1m": "1분", "interval_5m": "5분", "quick_range": "빠른 범위", - "absolute_range": "절대 범위", + "absolute_range": "절대 시간 범위", "from_start": "시작", "to_end": "종료", "apply_range": "범위 적용", diff --git a/src/locales/ko-KR/permission.json b/src/locales/ko-KR/permission.json index 5b5298843..059f249d9 100644 --- a/src/locales/ko-KR/permission.json +++ b/src/locales/ko-KR/permission.json @@ -18,7 +18,7 @@ "extension_site_access_content": "사이트", "request_permission": "권한 요청", "user_script_type": "유저스크립트", - "auth_duration": "인증 유효 기간", + "auth_duration": "권한 허용 기간", "duration_once": "한 번만", "duration_temporary": "임시", "duration_permanent": "영구", @@ -28,12 +28,12 @@ "deny_action": "거부", "ignore_action": "무시", "cancel_action": "취소", - "loading_confirm": "인증 요청을 불러오는 중…", + "loading_confirm": "권한 요청을 불러오는 중…", "cookie_warning_title": "민감도가 높은 권한", "cookie_warning_desc": "쿠키에는 로그인 상태 등 민감한 데이터가 포함되어 있습니다. 신뢰할 수 있는 스크립트에만 허용하세요.", - "confirm_expired_title": "인증 요청이 만료되었습니다", - "confirm_expired_desc": "이 인증 요청은 시간이 초과되었거나 이미 처리되었습니다. 페이지로 돌아가 다시 시도해 주세요.", + "confirm_expired_title": "권한 요청이 만료되었습니다", + "confirm_expired_desc": "이 권한 요청은 시간이 초과되었거나 이미 처리되었습니다. 페이지로 돌아가 다시 시도해 주세요.", "auto_close_in": "{{second}}초 후 창이 자동으로 닫힙니다", - "permission_cors": "교차 도메인(CORS)", + "permission_cors": "교차 출처 접근(CORS)", "permission_cookie": "쿠키 관리" } diff --git a/src/locales/ko-KR/popup.json b/src/locales/ko-KR/popup.json index f15cc6b0a..a94baa567 100644 --- a/src/locales/ko-KR/popup.json +++ b/src/locales/ko-KR/popup.json @@ -22,6 +22,6 @@ "show_more_scripts": "+{{count}}개 스크립트", "use_on_mobile": "모바일에서 ScriptCat 사용하기", "scan_qr_to_install": "QR 코드를 스캔하여 휴대폰에 ScriptCat 설치", - "menu_expand_num_before": "메뉴 항목이", - "menu_expand_num_after": "개를 초과하면 숨겨집니다." + "menu_expand_num_before": "메뉴 항목 수가 ", + "menu_expand_num_after": "개를 초과하면 자동으로 숨겨집니다." } diff --git a/src/locales/ko-KR/script.json b/src/locales/ko-KR/script.json index 7d4efda63..561c8b851 100644 --- a/src/locales/ko-KR/script.json +++ b/src/locales/ko-KR/script.json @@ -1,5 +1,5 @@ { - "create_user_script": "유저스크립트 만들기", + "create_user_script": "일반 스크립트 만들기", "create_background_script": "백그라운드 스크립트 만들기", "create_scheduled_script": "예약 스크립트 만들기", "create_script": "스크립트 만들기", @@ -17,9 +17,11 @@ "source_local_script": "로컬 스크립트", "source_script_link": "스크립트 링크", "confirm_delete_scripts_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "confirm_delete_script_content": "스크립트 \"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "confirm_delete_scripts_trash_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 휴지통으로 이동되며 언제든 복원할 수 있습니다.", + "confirm_delete_script_content": "\"{{name}}\" 스크립트를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "confirm_delete_script_trash_content": "\"{{name}}\" 스크립트를 삭제하시겠습니까? 휴지통으로 이동되며 언제든 복원할 수 있습니다.", "delete_failed": "삭제에 실패했습니다", - "checking_for_updates": "업데이트 확인 중...", + "checking_for_updates": "업데이트 확인 중…", "new_version_available": "새 버전이 있습니다", "latest_version": "최신 버전입니다", "update_check_failed": "업데이트 확인에 실패했습니다", @@ -66,12 +68,48 @@ "import_group": "가져오기", "import_local_script": "로컬 스크립트 가져오기", "link_import": "URL에서 가져오기", - "import_skill": "Skill 가져오기", + "import_skill": "스킬 가져오기", "link_import_desc": "스크립트 / 구독 URL을 한 줄에 하나씩 붙여넣으세요", "link_import_placeholder": "https://example.com/script.user.js", - "link_import_hint": "유저스크립트 / 구독 / Skill URL을 지원합니다", + "link_import_hint": "유저스크립트 / 구독 / 스킬 URL을 지원합니다", "not_a_valid_script": "유효한 유저스크립트 또는 SkillScript가 아닙니다", "import_done": "가져오기 완료: 성공 {{success}}개 · 실패 {{fail}}개", - "drop_to_install": "스크립트 또는 Skill을 여기에 드롭하여 설치", - "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip Skill 패키지를 드롭하세요" + "drop_to_install": "스크립트 또는 스킬을 여기에 드롭하여 설치", + "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip 스킬 패키지를 드롭하세요", + "trash_tab": "휴지통", + "tab_installed": "설치됨", + "trash_empty_title": "휴지통이 비어 있습니다", + "trash_empty_desc": "삭제한 스크립트는 여기에서 {{days}}일 동안 보관되며, 그동안 언제든 복원할 수 있습니다", + "trash_empty_desc_never": "삭제한 스크립트는 영구 삭제할 때까지 여기에 보관됩니다", + "trash_hint": "휴지통의 스크립트는 실행되지 않습니다 · {{days}}일 후 자동으로 영구 삭제됩니다", + "trash_hint_never": "휴지통의 스크립트는 실행되지 않습니다 · 자동으로 삭제되지 않습니다", + "trash_hint_disabled": "휴지통이 꺼져 있습니다 · 새로 삭제하는 스크립트는 즉시 영구 삭제됩니다", + "trash_search_placeholder": "삭제한 스크립트 검색", + "trash_col_name": "이름", + "trash_col_source": "삭제 출처", + "trash_col_time": "삭제 시각", + "trash_col_expire": "자동 삭제", + "trash_col_actions": "작업", + "trash_source_local": "이 기기에서 삭제", + "trash_source_other_device": "다른 기기", + "trash_source_subscribe": "구독", + "trash_source_other": "기타", + "trash_filter_all": "전체", + "trash_expire_in": "{{days}}일 후", + "trash_expire_today": "오늘", + "trash_restore": "복원", + "trash_purge": "영구 삭제", + "trash_empty_all": "휴지통 비우기", + "trash_restore_success": "스크립트 {{count}}개를 복원했습니다", + "trash_restore_conflict": "\"{{name}}\" 이름의 스크립트가 이미 있어 복원할 수 없습니다", + "trash_purge_success": "스크립트 {{count}}개를 영구 삭제했습니다", + "trash_purge_one_confirm": "\"{{name}}\" 스크립트와 저장된 데이터, 다운로드한 리소스, 허용된 권한을 영구 삭제합니다. 이 작업은 되돌릴 수 없습니다.", + "trash_purge_confirm_title": "휴지통을 비우시겠습니까?", + "trash_purge_confirm_body": "휴지통의 스크립트 {{count}}개와 저장된 데이터, 다운로드한 리소스, 허용된 권한을 영구 삭제합니다.", + "trash_purge_confirm_warn": "이 작업은 되돌릴 수 없습니다", + "trash_moved_single": "휴지통으로 이동했습니다", + "trash_moved_batch": "스크립트 {{count}}개를 휴지통으로 이동했습니다", + "trash_undo": "실행 취소", + "trash_undo_success": "복원되었습니다", + "trash_undo_failed": "복원에 실패했습니다" } diff --git a/src/locales/ko-KR/settings.json b/src/locales/ko-KR/settings.json index 9812203f4..15a4ddcda 100644 --- a/src/locales/ko-KR/settings.json +++ b/src/locales/ko-KR/settings.json @@ -49,7 +49,7 @@ "blacklist_pages": "차단 목록 페이지", "blacklist_placeholder": "다음과 같은 페이지에서 ScriptCat이 스크립트를 실행하지 않도록 합니다\nhttps://*.example.com", "expression_format_error": "조건식 형식 오류", - "migration_confirm_message": "저장소 엔진 마이그레이션을 다시 시도하면 기존 데이터가 변경됩니다. 진행 전에 확인해 주세요. 자세한 내용:https://docs.scriptcat.org/docs/change/v0.17/", + "migration_confirm_message": "저장소 엔진 마이그레이션을 다시 시도하면 기존 데이터가 변경됩니다. 진행하기 전에 확인해 주세요. 자세한 내용: https://docs.scriptcat.org/docs/change/v0.17/", "retry_migration": "저장소 엔진 마이그레이션 다시 시도", "sync_status": "동기화 상태", "interface_settings": "인터페이스", @@ -69,6 +69,9 @@ "display_right_click_menu_desc": "브라우저 우클릭 메뉴에 스크립트 메뉴 표시", "expand_count": "펼침 개수", "auto_collapse_when_exceeds": "이 개수를 초과하면 자동으로 접기", + "popup_layout": "팝업 레이아웃", + "compact_popup_layout": "간격을 줄인 팝업 레이아웃", + "compact_popup_layout_desc": "팝업 섹션과 스크립트 행 사이의 간격을 줄입니다", "script_update_check_frequency": "스크립트 업데이트 확인 주기", "script_auto_update_frequency": "스크립트 자동 업데이트 확인 주기", "control_script_update_behavior": "스크립트 업데이트 동작 제어", @@ -77,7 +80,7 @@ "check_script_code_quality": "스크립트 코드 품질과 오류를 검사", "script_run_env": { "title": "실행 환경", - "all": "전체", + "all": "모든 탭", "normal-tabs": "일반 탭", "incognito-tabs": "시크릿 탭" }, @@ -87,13 +90,15 @@ }, "notification": { "script_sync_delete": "스크립트 동기화 삭제", - "script_sync_delete_desc": "스크립트 {{scriptName}}이(가) 삭제되었습니다", - "subscribe_update": "구독 {{subscribeName}}이(가) 업데이트되었습니다", + "script_sync_delete_desc": "{{scriptName}} 스크립트가 삭제되었습니다", + "script_sync_conflict": "클라우드 동기화 충돌", + "script_sync_conflict_desc": "{{scriptNames}} 스크립트의 로컬 버전과 클라우드 버전이 모두 수정되었습니다. 이 스크립트의 동기화를 일시 중지했습니다. 충돌을 직접 해결해 주세요.", + "subscribe_update": "\"{{subscribeName}}\" 구독이 업데이트되었습니다", "subscribe_update_desc": "새 스크립트: {{newScripts}}\n삭제된 스크립트: {{deletedScripts}}" }, "enable_background": { "title": "백그라운드 실행 활성화", - "description": "활성화하면 모든 창을 닫아도 브라우저가 트레이로 최소화된 채 백그라운드에서 계속 실행되며, 수동으로 Chrome을 종료할 때까지 유지됩니다. 이를 통해 백그라운드 스크립트가 계속 실행될 수 있습니다.", + "description": "활성화하면 모든 창을 닫아도 브라우저가 트레이에 최소화된 상태로 백그라운드에서 계속 실행되며, 브라우저를 직접 종료할 때까지 유지됩니다. 이를 통해 백그라운드 스크립트가 계속 실행될 수 있습니다.", "enable_failed": "활성화에 실패했습니다", "disable_failed": "비활성화에 실패했습니다", "prompt_title": "백그라운드 실행을 활성화할까요?", @@ -109,6 +114,27 @@ "favicon_service_duckduckgo": "DuckDuckGo", "favicon_service_icon-horse": "Icon Horse", "favicon_service_local": "로컬에서 가져오기", - "cloud_sync_account_verification": "클라우드 동기화 계정 확인 중...", - "cloud_sync_verification_failed": "클라우드 동기화 계정 확인에 실패했습니다" + "cloud_sync_account_verification": "클라우드 동기화 계정 확인 중…", + "cloud_sync_verification_failed": "클라우드 동기화 계정 확인에 실패했습니다", + "trash_retention": "휴지통 보관 기간", + "trash_retention_desc": "삭제한 스크립트를 휴지통에 보관한 뒤 자동으로 영구 삭제하기까지의 기간", + "trash_retention_7": "7일", + "trash_retention_30": "30일", + "trash_retention_90": "90일", + "trash_retention_never": "무기한", + "trash_enabled": "휴지통 활성화", + "trash_enabled_desc": "삭제한 스크립트를 먼저 휴지통으로 이동하여 언제든 복원할 수 있습니다. 비활성화하면 스크립트를 삭제할 때 즉시 영구 삭제됩니다.", + "trash_retention_custom": "사용자 지정", + "trash_retention_days_unit": "일", + "sync_view_logs": "로그 보기", + "sync_now": "지금 동기화", + "sync_state_idle": "동기화 정상", + "sync_last_at": "마지막 동기화: {{time}}", + "sync_never": "아직 동기화하지 않음", + "sync_state_syncing": "동기화 중…", + "sync_state_attention": "마지막 동기화를 확인해야 합니다", + "sync_state_attention_desc": "동기화 중 충돌로 스크립트 {{conflict}}개의 동기화가 중지되었습니다. 로그를 열어 확인하세요.", + "sync_state_overwrite_info": "마지막 동기화에서 스크립트 {{overwrite}}개를 덮어썼습니다. 자세한 내용은 로그에서 확인하세요.", + "sync_state_error": "동기화 실패로 일시 중지됨", + "sync_state_failed_desc": "스크립트 {{failed}}개를 동기화하지 못했습니다. 자세한 내용은 로그에서 확인하세요." } diff --git a/src/pkg/utils/monaco-editor/langs.ts b/src/pkg/utils/monaco-editor/langs.ts index 6e8ccfa12..7a0393b01 100644 --- a/src/pkg/utils/monaco-editor/langs.ts +++ b/src/pkg/utils/monaco-editor/langs.ts @@ -953,15 +953,15 @@ tracking: Этот скрипт отслеживает информацию о "ko-KR": { title: "한국어", - thisIsAUserScript: "사용자 스크립트", + thisIsAUserScript: "유저스크립트", undefinedPrompt: "정의되지 않은 프롬프트", quickfix: "{0} 문제 수정", addEslintDisableNextLine: "eslint-disable-next-line 주석 추가", addEslintDisable: "eslint-disable 주석 추가", - declareGlobal: "'{0}'을(를) 전역 변수로 선언 (/* global */)", + declareGlobal: "전역 변수로 선언: '{0}' (/* global */)", removeConnectWildcard: "@connect 와일드카드 제거: {0}", - replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}(으)로 교체", - replaceIncludeWithMatch: "@include를 @match {0}(으)로 교체", + replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}으로 바꾸기", + replaceIncludeWithMatch: "@include를 @match {0}으로 바꾸기", grantConflict: "@grant none은 GM API와 함께 사용할 수 없습니다. none 또는 모든 GM API를 제거하세요.", grantValuePrompts: grantValuePromptsKoKR, prompt: { From 326dd177cd069e6b1e813d5270e412c4f0780605 Mon Sep 17 00:00:00 2001 From: CodFrm Date: Sat, 18 Jul 2026 00:15:34 +0800 Subject: [PATCH 4/8] i18n: keep Korean PR changes focused --- src/assets/_locales/ko/messages.json | 2 +- src/locales/ko-KR/agent.json | 20 ++++++++++---------- src/locales/ko-KR/common.json | 8 ++++---- src/locales/ko-KR/editor.json | 4 ++-- src/locales/ko-KR/guide.json | 4 ++-- src/locales/ko-KR/install.json | 8 ++++---- src/locales/ko-KR/logs.json | 2 +- src/locales/ko-KR/permission.json | 2 +- src/locales/ko-KR/script.json | 12 ++++++------ src/locales/ko-KR/settings.json | 10 +++++----- src/pkg/utils/monaco-editor/langs.ts | 8 ++++---- 11 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/assets/_locales/ko/messages.json b/src/assets/_locales/ko/messages.json index 8830311a1..cd2b0c152 100644 --- a/src/assets/_locales/ko/messages.json +++ b/src/assets/_locales/ko/messages.json @@ -9,6 +9,6 @@ "message": "ScriptCat Beta" }, "scriptcat_description": { - "message": "브라우저의 잠재력을 최대한 활용할 수 있는 강력한 유저스크립트 관리자!" + "message": "브라우저의 모든 잠재력을 끌어내는 강력한 유저스크립트 매니저!" } } diff --git a/src/locales/ko-KR/agent.json b/src/locales/ko-KR/agent.json index d9be7bef0..0d2ab8ac4 100644 --- a/src/locales/ko-KR/agent.json +++ b/src/locales/ko-KR/agent.json @@ -18,7 +18,7 @@ "provider_docs": "문서", "provider_count_hint": "기본 모델은 새 대화에 사용됩니다", "model_count": "모델 {{count}}개", - "model_fetch": "모델 목록 불러오기", + "model_fetch": "모델 가져오기", "model_name": "이름", "model_add": "모델 추가", "model_edit": "편집", @@ -73,11 +73,11 @@ "chat_search_placeholder": "대화 검색…", "chat_search_no_results": "일치하는 대화가 없습니다", "chat_export": "내보내기", - "chat_input_placeholder": "메시지를 입력하세요…", + "chat_input_placeholder": "메시지를 입력하세요...", "chat_send": "전송", "chat_stop": "중지", "chat_thinking": "생각 중", - "chat_tool_arguments": "매개변수", + "chat_tool_arguments": "인수", "chat_tool_result": "결과", "chat_no_model": "설정된 모델이 없습니다. 먼저 모델 서비스에서 모델을 추가해 주세요.", "chat_model_select": "모델 선택", @@ -85,10 +85,10 @@ "chat_copy": "복사", "chat_copy_success": "복사되었습니다", "chat_regenerate": "다시 생성", - "chat_streaming": "생성 중…", - "chat_loading_audio": "오디오 불러오는 중…", - "chat_starting": "시작하는 중…", - "chat_retrying": "재시도 중 ({{attempt}}/{{max}})…", + "chat_streaming": "생성 중...", + "chat_loading_audio": "오디오 불러오는 중...", + "chat_starting": "시작하는 중...", + "chat_retrying": "재시도 중 ({{attempt}}/{{max}})...", "chat_attach_file": "파일 첨부", "chat_welcome_hint": "스크립트에 대해 무엇이든 물어보세요", "chat_welcome_start": "대화를 만들어 시작해 보세요", @@ -120,7 +120,7 @@ "opfs_delete_confirm": "정말 삭제하시겠습니까?", "opfs_delete_success": "삭제되었습니다", "opfs_preview": "미리보기", - "opfs_subtitle": "오리진 전용 파일 시스템(OPFS) · 에이전트 전용 저장소", + "opfs_subtitle": "출처별 프라이빗 파일 시스템(OPFS) · 에이전트 전용 저장소", "opfs_refresh": "새로고침", "opfs_upload": "업로드", "opfs_actions": "작업", @@ -162,7 +162,7 @@ "mcp_no_tools": "사용 가능한 도구가 없습니다", "mcp_no_resources": "사용 가능한 리소스가 없습니다", "mcp_no_prompts": "사용 가능한 프롬프트가 없습니다", - "mcp_loading": "불러오는 중…", + "mcp_loading": "불러오는 중...", "tasks": "예약 작업", "tasks_title": "예약 작업", "tasks_subtitle": "cron 일정에 따라 에이전트 작업을 자동으로 실행합니다", @@ -208,7 +208,7 @@ "summary_model_desc": "요약에 사용되는 모델로, 설정하지 않으면 기본 모델을 사용합니다", "summary_model_placeholder": "기본 모델 사용", "search_engine": "검색 엔진", - "search_engine_desc": "web_search 도구가 사용하는 검색 출처입니다.", + "search_engine_desc": "web_search 도구가 사용하는 검색 소스입니다.", "search_engine_baidu": "바이두", "search_google_api_key": "Google API 키", "search_google_api_key_desc": "Custom Search JSON API 호출에 사용됩니다.", diff --git a/src/locales/ko-KR/common.json b/src/locales/ko-KR/common.json index 8d0091884..143b111f5 100644 --- a/src/locales/ko-KR/common.json +++ b/src/locales/ko-KR/common.json @@ -26,7 +26,7 @@ "disable": "비활성화", "name": "이름", "version": "버전", - "source": "출처", + "source": "소스", "action": "작업", "export": "내보내기", "delete": "삭제", @@ -58,8 +58,8 @@ "stop": "중지", "edit": "편집", "copy": "복사", - "exclude_on": "$0에서 다시 실행", - "exclude_off": "$0에서 실행 제외", + "exclude_on": "$0 실행 복원", + "exclude_off": "$0 실행 제외", "confirm_error": "확인 실패", "import": "가져오기", "error": "오류", @@ -76,7 +76,7 @@ "collapse": "접기", "expand": "펼치기", "no_message_content": "메시지 내용 없음", - "loading": "로딩 중…", + "loading": "로딩 중...", "no_scripts": "스크립트가 없습니다", "no_subscribes": "구독이 없습니다", "no_subscribes_hint": "구독한 스크립트 모음이 여기에 표시됩니다", diff --git a/src/locales/ko-KR/editor.json b/src/locales/ko-KR/editor.json index a6afef331..78809ce36 100644 --- a/src/locales/ko-KR/editor.json +++ b/src/locales/ko-KR/editor.json @@ -24,7 +24,7 @@ "record_count": "{{count}}개 항목", "resource_count": "리소스 {{count}}개 · {{size}}", "script_list": "스크립트 목록", - "search_scripts": "스크립트 검색…", + "search_scripts": "스크립트 검색...", "new_script": "새 스크립트", "source": "출처", "from_user": "사용자", @@ -82,7 +82,7 @@ "storage_error": "저장소 오류", "upload_to_cloud": "클라우드로 업로드", "save_failed": "저장에 실패했습니다", - "exporting": "내보내는 중…", + "exporting": "내보내는 중...", "upload_to": "업로드 위치", "value_export_expression": "값 내보내기 표현식", "overwrite_original_value_on_import": "가져올 때 기존 값 덮어쓰기", diff --git a/src/locales/ko-KR/guide.json b/src/locales/ko-KR/guide.json index 28a4a6179..e7eef199e 100644 --- a/src/locales/ko-KR/guide.json +++ b/src/locales/ko-KR/guide.json @@ -7,14 +7,14 @@ "script_list_action_title": "작업", "script_list_action_content": "작업 바에서는 스크립트 편집, 실행 제어 및 중지(백그라운드 스크립트), 설정(UserConfig 참고)에 접근할 수 있습니다. 오른쪽 버튼으로는 고급 필터링과 보기 모드 전환을 사용할 수 있습니다.", "tools_backup_title": "백업", - "tools_backup_content": "백업을 이용하면 스크립트를 저장해 유실을 막을 수 있습니다. 스크립트 파일을 로컬로 내보내거나 로컬에서 불러올 수 있으며, 클라우드에 백업하면 더욱 편리합니다. 다른 유저스크립트 관리자에서 이전하려면 마이그레이션 가이드를 참고하세요.", + "tools_backup_content": "백업을 이용하면 스크립트를 저장해 유실을 막을 수 있습니다. 스크립트 파일을 로컬로 내보내거나 로컬에서 불러올 수 있으며, 클라우드에 백업하면 더욱 편리합니다. 다른 매니저에서 이전하려면 마이그레이션 가이드를 참고하세요.", "setting_sync_title": "업데이트 및 동기화", "setting_sync_content": "스크립트 동기화 기능을 사용하면 이 기기의 스크립트 내용을 클라우드에 손쉽게 동기화할 수 있습니다. 삭제 동기화 옵션을 선택하면 이 기기에서 스크립트를 삭제할 때 클라우드에서도 함께 삭제됩니다. 여기에서 스크립트 버전을 업데이트해 더 강력한 기능을 사용할 수도 있습니다.", "installed_scripts_title": "설치된 스크립트", "subscribe_title": "구독", "subscribe_content": "스크립트 링크를 구독하면 스크립트가 자동으로 최신 상태를 유지합니다. 자세한 내용은 구독 문서를 참고하세요.", "welcome_title": "ScriptCat에 오신 것을 환영합니다 🎉", - "welcome_subtitle": "강력한 유저스크립트 관리자 — 몇 단계만 거치면 바로 시작할 수 있습니다.", + "welcome_subtitle": "강력한 유저스크립트 매니저 — 몇 단계만 거치면 바로 시작할 수 있습니다.", "welcome_feature_manage_title": "설치된 스크립트 관리", "welcome_feature_manage_desc": "모든 스크립트를 \"설치된 스크립트\" 페이지에서 한눈에 확인하세요", "welcome_feature_market_title": "스크립트 마켓에서 설치", diff --git a/src/locales/ko-KR/install.json b/src/locales/ko-KR/install.json index d94ce003f..8d88e952e 100644 --- a/src/locales/ko-KR/install.json +++ b/src/locales/ko-KR/install.json @@ -34,9 +34,9 @@ "code_collapse": "접기", "code_expand": "펼치기", "loading_title": "스크립트 불러오는 중", - "loading_desc": "출처에서 스크립트 내용을 다운로드하고 분석하고 있습니다", + "loading_desc": "소스에서 스크립트 내용을 다운로드하고 분석하고 있습니다", "error_retry": "다시 시도", - "error_invalid_desc": "유효한 설치 출처 매개변수가 없어 스크립트를 불러올 수 없습니다.", + "error_invalid_desc": "유효한 설치 소스 매개변수가 없어 스크립트를 불러올 수 없습니다.", "context_install": "스크립트 설치", "context_update": "스크립트 업데이트", "background_script": "백그라운드 스크립트", @@ -77,7 +77,7 @@ "title": "일괄 업데이트", "main_header": "업데이트 확인", "last_check": "마지막 확인 {{time}}", - "status_checking_updates": "업데이트 확인 중…", + "status_checking_updates": "업데이트 확인 중...", "updates_available": "업데이트 {{count}}건 있음", "ignored_count": "{{count}}건 무시됨", "selected_count": "{{selected}} / {{total}}개 선택됨", @@ -103,7 +103,7 @@ "empty_title": "모든 스크립트가 최신 상태입니다", "empty_desc": "{{count}}개 스크립트 확인 · 업데이트 없음", "recheck": "다시 확인", - "tap_to_expand": "클릭하여 펼치기", + "tap_to_expand": "탭하여 펼치기", "similarity": "유사도", "new_connects": "새 @connect", "toast_found": "업데이트 가능한 스크립트 {{count}}개를 찾았습니다", diff --git a/src/locales/ko-KR/logs.json b/src/locales/ko-KR/logs.json index dc771e31a..618c49de8 100644 --- a/src/locales/ko-KR/logs.json +++ b/src/locales/ko-KR/logs.json @@ -38,7 +38,7 @@ "interval_1m": "1분", "interval_5m": "5분", "quick_range": "빠른 범위", - "absolute_range": "절대 시간 범위", + "absolute_range": "절대 범위", "from_start": "시작", "to_end": "종료", "apply_range": "범위 적용", diff --git a/src/locales/ko-KR/permission.json b/src/locales/ko-KR/permission.json index 059f249d9..8fc433bbf 100644 --- a/src/locales/ko-KR/permission.json +++ b/src/locales/ko-KR/permission.json @@ -34,6 +34,6 @@ "confirm_expired_title": "권한 요청이 만료되었습니다", "confirm_expired_desc": "이 권한 요청은 시간이 초과되었거나 이미 처리되었습니다. 페이지로 돌아가 다시 시도해 주세요.", "auto_close_in": "{{second}}초 후 창이 자동으로 닫힙니다", - "permission_cors": "교차 출처 접근(CORS)", + "permission_cors": "교차 도메인(CORS)", "permission_cookie": "쿠키 관리" } diff --git a/src/locales/ko-KR/script.json b/src/locales/ko-KR/script.json index 561c8b851..b8b3f9f35 100644 --- a/src/locales/ko-KR/script.json +++ b/src/locales/ko-KR/script.json @@ -18,10 +18,10 @@ "source_script_link": "스크립트 링크", "confirm_delete_scripts_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "confirm_delete_scripts_trash_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 휴지통으로 이동되며 언제든 복원할 수 있습니다.", - "confirm_delete_script_content": "\"{{name}}\" 스크립트를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "confirm_delete_script_content": "스크립트 \"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "confirm_delete_script_trash_content": "\"{{name}}\" 스크립트를 삭제하시겠습니까? 휴지통으로 이동되며 언제든 복원할 수 있습니다.", "delete_failed": "삭제에 실패했습니다", - "checking_for_updates": "업데이트 확인 중…", + "checking_for_updates": "업데이트 확인 중...", "new_version_available": "새 버전이 있습니다", "latest_version": "최신 버전입니다", "update_check_failed": "업데이트 확인에 실패했습니다", @@ -68,14 +68,14 @@ "import_group": "가져오기", "import_local_script": "로컬 스크립트 가져오기", "link_import": "URL에서 가져오기", - "import_skill": "스킬 가져오기", + "import_skill": "Skill 가져오기", "link_import_desc": "스크립트 / 구독 URL을 한 줄에 하나씩 붙여넣으세요", "link_import_placeholder": "https://example.com/script.user.js", - "link_import_hint": "유저스크립트 / 구독 / 스킬 URL을 지원합니다", + "link_import_hint": "유저스크립트 / 구독 / Skill URL을 지원합니다", "not_a_valid_script": "유효한 유저스크립트 또는 SkillScript가 아닙니다", "import_done": "가져오기 완료: 성공 {{success}}개 · 실패 {{fail}}개", - "drop_to_install": "스크립트 또는 스킬을 여기에 드롭하여 설치", - "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip 스킬 패키지를 드롭하세요", + "drop_to_install": "스크립트 또는 Skill을 여기에 드롭하여 설치", + "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip Skill 패키지를 드롭하세요", "trash_tab": "휴지통", "tab_installed": "설치됨", "trash_empty_title": "휴지통이 비어 있습니다", diff --git a/src/locales/ko-KR/settings.json b/src/locales/ko-KR/settings.json index 15a4ddcda..f858888f2 100644 --- a/src/locales/ko-KR/settings.json +++ b/src/locales/ko-KR/settings.json @@ -49,7 +49,7 @@ "blacklist_pages": "차단 목록 페이지", "blacklist_placeholder": "다음과 같은 페이지에서 ScriptCat이 스크립트를 실행하지 않도록 합니다\nhttps://*.example.com", "expression_format_error": "조건식 형식 오류", - "migration_confirm_message": "저장소 엔진 마이그레이션을 다시 시도하면 기존 데이터가 변경됩니다. 진행하기 전에 확인해 주세요. 자세한 내용: https://docs.scriptcat.org/docs/change/v0.17/", + "migration_confirm_message": "저장소 엔진 마이그레이션을 다시 시도하면 기존 데이터가 변경됩니다. 진행 전에 확인해 주세요. 자세한 내용: https://docs.scriptcat.org/docs/change/v0.17/", "retry_migration": "저장소 엔진 마이그레이션 다시 시도", "sync_status": "동기화 상태", "interface_settings": "인터페이스", @@ -80,7 +80,7 @@ "check_script_code_quality": "스크립트 코드 품질과 오류를 검사", "script_run_env": { "title": "실행 환경", - "all": "모든 탭", + "all": "전체", "normal-tabs": "일반 탭", "incognito-tabs": "시크릿 탭" }, @@ -90,10 +90,10 @@ }, "notification": { "script_sync_delete": "스크립트 동기화 삭제", - "script_sync_delete_desc": "{{scriptName}} 스크립트가 삭제되었습니다", + "script_sync_delete_desc": "스크립트 {{scriptName}}이(가) 삭제되었습니다", "script_sync_conflict": "클라우드 동기화 충돌", "script_sync_conflict_desc": "{{scriptNames}} 스크립트의 로컬 버전과 클라우드 버전이 모두 수정되었습니다. 이 스크립트의 동기화를 일시 중지했습니다. 충돌을 직접 해결해 주세요.", - "subscribe_update": "\"{{subscribeName}}\" 구독이 업데이트되었습니다", + "subscribe_update": "구독 {{subscribeName}}이(가) 업데이트되었습니다", "subscribe_update_desc": "새 스크립트: {{newScripts}}\n삭제된 스크립트: {{deletedScripts}}" }, "enable_background": { @@ -114,7 +114,7 @@ "favicon_service_duckduckgo": "DuckDuckGo", "favicon_service_icon-horse": "Icon Horse", "favicon_service_local": "로컬에서 가져오기", - "cloud_sync_account_verification": "클라우드 동기화 계정 확인 중…", + "cloud_sync_account_verification": "클라우드 동기화 계정 확인 중...", "cloud_sync_verification_failed": "클라우드 동기화 계정 확인에 실패했습니다", "trash_retention": "휴지통 보관 기간", "trash_retention_desc": "삭제한 스크립트를 휴지통에 보관한 뒤 자동으로 영구 삭제하기까지의 기간", diff --git a/src/pkg/utils/monaco-editor/langs.ts b/src/pkg/utils/monaco-editor/langs.ts index 7a0393b01..6e8ccfa12 100644 --- a/src/pkg/utils/monaco-editor/langs.ts +++ b/src/pkg/utils/monaco-editor/langs.ts @@ -953,15 +953,15 @@ tracking: Этот скрипт отслеживает информацию о "ko-KR": { title: "한국어", - thisIsAUserScript: "유저스크립트", + thisIsAUserScript: "사용자 스크립트", undefinedPrompt: "정의되지 않은 프롬프트", quickfix: "{0} 문제 수정", addEslintDisableNextLine: "eslint-disable-next-line 주석 추가", addEslintDisable: "eslint-disable 주석 추가", - declareGlobal: "전역 변수로 선언: '{0}' (/* global */)", + declareGlobal: "'{0}'을(를) 전역 변수로 선언 (/* global */)", removeConnectWildcard: "@connect 와일드카드 제거: {0}", - replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}으로 바꾸기", - replaceIncludeWithMatch: "@include를 @match {0}으로 바꾸기", + replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}(으)로 교체", + replaceIncludeWithMatch: "@include를 @match {0}(으)로 교체", grantConflict: "@grant none은 GM API와 함께 사용할 수 없습니다. none 또는 모든 GM API를 제거하세요.", grantValuePrompts: grantValuePromptsKoKR, prompt: { From c1da23a960fe3d6aa3113e0127a510574d248c25 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sat, 18 Jul 2026 03:41:47 +0900 Subject: [PATCH 5/8] Update terminology-ko-KR.md --- docs/references/terminology-ko-KR.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/references/terminology-ko-KR.md b/docs/references/terminology-ko-KR.md index ae717051f..c0b8f3e42 100644 --- a/docs/references/terminology-ko-KR.md +++ b/docs/references/terminology-ko-KR.md @@ -2,7 +2,7 @@ 이 문서는 ScriptCat 한국어(`ko-KR`) 인터페이스와 문서에서 사용할 용어와 문체를 정의합니다. 목표는 한국어 사용자에게 자연스럽고 명확한 UI를 제공하면서 ScriptCat의 스크립트 유형, 기능 이름, 개발자 용어를 정확히 구분하는 것입니다. -검토 기준: `src/locales/en-US/*.json`, `src/locales/zh-CN/*.json`, `src/pkg/utils/monaco-editor/langs.ts`, `docs/references/terminology-en-US.md`, `docs/references/terminology-zh-CN.md` +검토 기준: `src/locales/ko-KR/*.json`, `docs/architecture.md`. ## 원칙 From 0789128f686142890455f2cbf61f5fa134547f3d Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:06:40 +0900 Subject: [PATCH 6/8] merge fix --- src/pkg/utils/monaco-editor/langs.ts | 1047 -------------------- src/pkg/utils/monaco-editor/langs/ko-kR.ts | 128 +++ 2 files changed, 128 insertions(+), 1047 deletions(-) delete mode 100644 src/pkg/utils/monaco-editor/langs.ts create mode 100644 src/pkg/utils/monaco-editor/langs/ko-kR.ts diff --git a/src/pkg/utils/monaco-editor/langs.ts b/src/pkg/utils/monaco-editor/langs.ts deleted file mode 100644 index 6e8ccfa12..000000000 --- a/src/pkg/utils/monaco-editor/langs.ts +++ /dev/null @@ -1,1047 +0,0 @@ -const grantValuePromptsZhCN = { - none: "不申请特殊 GM API 权限,脚本会以接近普通页面脚本的方式运行。", - unsafeWindow: "访问页面自身的 window 对象,用于和网页原生脚本交互。", - GM_getValue: "读取脚本持久化存储中的单个值。", - GM_getValues: "批量读取脚本持久化存储中的多个值。", - GM_setValue: "写入脚本持久化存储中的单个值。", - GM_setValues: "批量写入脚本持久化存储中的多个值。", - GM_deleteValue: "删除脚本持久化存储中的单个值。", - GM_deleteValues: "批量删除脚本持久化存储中的多个值。", - GM_listValues: "列出脚本持久化存储中的所有键名。", - GM_addValueChangeListener: "监听脚本存储值的变化。", - GM_removeValueChangeListener: "移除脚本存储值变化监听器。", - GM_xmlhttpRequest: "发起跨域网络请求;请求目标通常需要配合 @connect 声明允许的域名。", - GM_download: - "下载文件。支持传入 URL 和文件名,或传入包含 url、name、headers、saveAs 等字段的详情对象,并返回可 abort 的句柄。", - GM_openInTab: "打开新标签页,并可控制前后台打开等选项。", - GM_closeInTab: "关闭由脚本打开或管理的标签页。", - GM_getTab: "读取当前标签页关联的临时数据。", - GM_saveTab: "保存当前标签页关联的临时数据。", - GM_getTabs: "读取脚本保存的所有标签页临时数据。", - GM_notification: "显示浏览器通知,并可处理点击、关闭等回调。", - GM_closeNotification: "关闭指定的脚本通知。", - GM_updateNotification: "更新指定的脚本通知内容。", - GM_setClipboard: "写入系统剪贴板。", - GM_registerMenuCommand: "注册脚本菜单命令。", - GM_unregisterMenuCommand: "取消注册脚本菜单命令。", - CAT_registerMenuInput: "ScriptCat 扩展 API:注册带输入框的脚本菜单命令。", - CAT_unregisterMenuInput: "ScriptCat 扩展 API:取消注册带输入框的脚本菜单命令。", - GM_addStyle: "向页面注入 CSS 样式。", - GM_addElement: "向页面创建并插入元素。", - GM_getResourceText: "读取 @resource 声明资源的文本内容。", - GM_getResourceURL: "获取 @resource 声明资源的 URL。", - GM_cookie: "访问 Cookie API,用于读取、写入或删除 Cookie。", - CAT_fetchBlob: "ScriptCat 内部扩展 API:读取扩展侧可访问资源并返回 Blob。", - CAT_fileStorage: "ScriptCat 扩展 API:访问脚本文件存储能力。", - CAT_userConfig: "ScriptCat 扩展 API:访问脚本用户配置。", - CAT_scriptLoaded: "ScriptCat 扩展 API:在 @early-start 场景下等待脚本完整加载完成。", - "window.close": "允许脚本调用 window.close()。", - "window.focus": "允许脚本调用 window.focus()。", - "window.onurlchange": "允许脚本监听 URL 变化事件。", -} as const; - -const grantValuePromptsEnUS = { - none: "Request no special GM API permissions; the script runs more like a regular page script.", - unsafeWindow: "Access the page's own window object for interaction with native page scripts.", - GM_getValue: "Read one value from the script's persistent storage.", - GM_getValues: "Read multiple values from the script's persistent storage.", - GM_setValue: "Write one value to the script's persistent storage.", - GM_setValues: "Write multiple values to the script's persistent storage.", - GM_deleteValue: "Delete one value from the script's persistent storage.", - GM_deleteValues: "Delete multiple values from the script's persistent storage.", - GM_listValues: "List all keys in the script's persistent storage.", - GM_addValueChangeListener: "Listen for changes to script storage values.", - GM_removeValueChangeListener: "Remove a script storage value change listener.", - GM_xmlhttpRequest: "Make cross-origin network requests; target hosts usually need to be allowed with @connect.", - GM_download: - "Download files. Accepts a URL and filename, or a details object with fields such as url, name, headers, and saveAs, and returns an abortable handle.", - GM_openInTab: "Open a new tab, with options such as foreground or background opening.", - GM_closeInTab: "Close a tab opened or managed by the script.", - GM_getTab: "Read temporary data associated with the current tab.", - GM_saveTab: "Save temporary data associated with the current tab.", - GM_getTabs: "Read all temporary tab data saved by the script.", - GM_notification: "Show a browser notification and handle events such as click or close.", - GM_closeNotification: "Close a specific script notification.", - GM_updateNotification: "Update a specific script notification.", - GM_setClipboard: "Write to the system clipboard.", - GM_registerMenuCommand: "Register a script menu command.", - GM_unregisterMenuCommand: "Unregister a script menu command.", - CAT_registerMenuInput: "ScriptCat API: register a script menu command with an input field.", - CAT_unregisterMenuInput: "ScriptCat API: unregister a script menu command with an input field.", - GM_addStyle: "Inject CSS into the page.", - GM_addElement: "Create and insert an element into the page.", - GM_getResourceText: "Read the text content of a resource declared with @resource.", - GM_getResourceURL: "Get the URL of a resource declared with @resource.", - GM_cookie: "Access the Cookie API to read, write, or delete cookies.", - CAT_fetchBlob: "ScriptCat internal API: read an extension-side accessible resource and return a Blob.", - CAT_fileStorage: "ScriptCat API: access script file storage.", - CAT_userConfig: "ScriptCat API: access script user configuration.", - CAT_scriptLoaded: "ScriptCat API: wait until the script is fully loaded in @early-start scenarios.", - "window.close": "Allow the script to call window.close().", - "window.focus": "Allow the script to call window.focus().", - "window.onurlchange": "Allow the script to listen for URL change events.", -} as const; - -const grantValuePromptsZhTW = { - none: "不申請特殊 GM API 權限,腳本會以接近一般頁面腳本的方式執行。", - unsafeWindow: "存取頁面自身的 window 物件,用於和網頁原生腳本互動。", - GM_getValue: "讀取腳本持久化儲存中的單一值。", - GM_getValues: "批次讀取腳本持久化儲存中的多個值。", - GM_setValue: "寫入腳本持久化儲存中的單一值。", - GM_setValues: "批次寫入腳本持久化儲存中的多個值。", - GM_deleteValue: "刪除腳本持久化儲存中的單一值。", - GM_deleteValues: "批次刪除腳本持久化儲存中的多個值。", - GM_listValues: "列出腳本持久化儲存中的所有鍵名。", - GM_addValueChangeListener: "監聽腳本儲存值的變化。", - GM_removeValueChangeListener: "移除腳本儲存值變化監聽器。", - GM_xmlhttpRequest: "發起跨來源網路請求;目標主機通常需要配合 @connect 宣告允許的網域。", - GM_download: - "下載檔案。支援傳入 URL 與檔名,或傳入包含 url、name、headers、saveAs 等欄位的詳細物件,並回傳可 abort 的控制代碼。", - GM_openInTab: "開啟新分頁,並可控制前景或背景開啟等選項。", - GM_closeInTab: "關閉由腳本開啟或管理的分頁。", - GM_getTab: "讀取目前分頁關聯的暫存資料。", - GM_saveTab: "儲存目前分頁關聯的暫存資料。", - GM_getTabs: "讀取腳本儲存的所有分頁暫存資料。", - GM_notification: "顯示瀏覽器通知,並可處理點擊、關閉等回呼。", - GM_closeNotification: "關閉指定的腳本通知。", - GM_updateNotification: "更新指定的腳本通知內容。", - GM_setClipboard: "寫入系統剪貼簿。", - GM_registerMenuCommand: "註冊腳本選單命令。", - GM_unregisterMenuCommand: "取消註冊腳本選單命令。", - CAT_registerMenuInput: "ScriptCat 擴充 API:註冊帶輸入框的腳本選單命令。", - CAT_unregisterMenuInput: "ScriptCat 擴充 API:取消註冊帶輸入框的腳本選單命令。", - GM_addStyle: "向頁面注入 CSS 樣式。", - GM_addElement: "向頁面建立並插入元素。", - GM_getResourceText: "讀取 @resource 宣告資源的文字內容。", - GM_getResourceURL: "取得 @resource 宣告資源的 URL。", - GM_cookie: "存取 Cookie API,用於讀取、寫入或刪除 Cookie。", - CAT_fetchBlob: "ScriptCat 內部擴充 API:讀取擴充側可存取資源並回傳 Blob。", - CAT_fileStorage: "ScriptCat 擴充 API:存取腳本檔案儲存能力。", - CAT_userConfig: "ScriptCat 擴充 API:存取腳本使用者設定。", - CAT_scriptLoaded: "ScriptCat 擴充 API:在 @early-start 場景下等待腳本完整載入完成。", - "window.close": "允許腳本呼叫 window.close()。", - "window.focus": "允許腳本呼叫 window.focus()。", - "window.onurlchange": "允許腳本監聽 URL 變化事件。", -} as const; - -const grantValuePromptsJaJP = { - none: "特別な GM API 権限を要求せず、通常のページスクリプトに近い形で実行します。", - unsafeWindow: "ページ自身の window オブジェクトにアクセスし、ページのネイティブスクリプトと連携します。", - GM_getValue: "スクリプトの永続ストレージから 1 つの値を読み取ります。", - GM_getValues: "スクリプトの永続ストレージから複数の値をまとめて読み取ります。", - GM_setValue: "スクリプトの永続ストレージに 1 つの値を書き込みます。", - GM_setValues: "スクリプトの永続ストレージに複数の値をまとめて書き込みます。", - GM_deleteValue: "スクリプトの永続ストレージから 1 つの値を削除します。", - GM_deleteValues: "スクリプトの永続ストレージから複数の値をまとめて削除します。", - GM_listValues: "スクリプトの永続ストレージ内のすべてのキーを列挙します。", - GM_addValueChangeListener: "スクリプトのストレージ値の変更を監視します。", - GM_removeValueChangeListener: "ストレージ値変更リスナーを削除します。", - GM_xmlhttpRequest: - "クロスオリジンのネットワークリクエストを行います。対象ホストは通常 @connect で許可する必要があります。", - GM_download: - "ファイルをダウンロードします。URL とファイル名、または url、name、headers、saveAs などを含む詳細オブジェクトを受け取り、abort 可能なハンドルを返します。", - GM_openInTab: "新しいタブを開き、前面または背面で開くなどのオプションを指定できます。", - GM_closeInTab: "スクリプトが開いた、または管理しているタブを閉じます。", - GM_getTab: "現在のタブに関連付けられた一時データを読み取ります。", - GM_saveTab: "現在のタブに関連付けられた一時データを保存します。", - GM_getTabs: "スクリプトが保存したすべてのタブ一時データを読み取ります。", - GM_notification: "ブラウザー通知を表示し、クリックや閉じる操作などを処理できます。", - GM_closeNotification: "指定したスクリプト通知を閉じます。", - GM_updateNotification: "指定したスクリプト通知を更新します。", - GM_setClipboard: "システムクリップボードへ書き込みます。", - GM_registerMenuCommand: "スクリプトメニューコマンドを登録します。", - GM_unregisterMenuCommand: "スクリプトメニューコマンドの登録を解除します。", - CAT_registerMenuInput: "ScriptCat API: 入力欄付きのスクリプトメニューコマンドを登録します。", - CAT_unregisterMenuInput: "ScriptCat API: 入力欄付きのスクリプトメニューコマンドの登録を解除します。", - GM_addStyle: "ページに CSS スタイルを注入します。", - GM_addElement: "ページに要素を作成して挿入します。", - GM_getResourceText: "@resource で宣言されたリソースのテキスト内容を読み取ります。", - GM_getResourceURL: "@resource で宣言されたリソースの URL を取得します。", - GM_cookie: "Cookie API にアクセスし、Cookie の読み取り、書き込み、削除を行います。", - CAT_fetchBlob: "ScriptCat 内部 API: 拡張機能側でアクセス可能なリソースを読み取り Blob を返します。", - CAT_fileStorage: "ScriptCat API: スクリプトのファイルストレージへアクセスします。", - CAT_userConfig: "ScriptCat API: スクリプトのユーザー設定へアクセスします。", - CAT_scriptLoaded: "ScriptCat API: @early-start の場面でスクリプトが完全に読み込まれるまで待機します。", - "window.close": "スクリプトによる window.close() の呼び出しを許可します。", - "window.focus": "スクリプトによる window.focus() の呼び出しを許可します。", - "window.onurlchange": "スクリプトによる URL 変更イベントの監視を許可します。", -} as const; - -const grantValuePromptsDeDE = { - none: "Fordert keine speziellen GM-API-Berechtigungen an; das Skript läuft eher wie ein normales Seitenskript.", - unsafeWindow: "Greift auf das window-Objekt der Seite zu, um mit nativen Seitenskripten zu interagieren.", - GM_getValue: "Liest einen Wert aus dem persistenten Skriptspeicher.", - GM_getValues: "Liest mehrere Werte aus dem persistenten Skriptspeicher.", - GM_setValue: "Schreibt einen Wert in den persistenten Skriptspeicher.", - GM_setValues: "Schreibt mehrere Werte in den persistenten Skriptspeicher.", - GM_deleteValue: "Löscht einen Wert aus dem persistenten Skriptspeicher.", - GM_deleteValues: "Löscht mehrere Werte aus dem persistenten Skriptspeicher.", - GM_listValues: "Listet alle Schlüssel im persistenten Skriptspeicher auf.", - GM_addValueChangeListener: "Überwacht Änderungen an Skriptspeicherwerten.", - GM_removeValueChangeListener: "Entfernt einen Listener für Änderungen an Skriptspeicherwerten.", - GM_xmlhttpRequest: - "Führt Cross-Origin-Netzwerkanfragen aus; Zielhosts müssen normalerweise mit @connect erlaubt werden.", - GM_download: - "Lädt Dateien herunter. Akzeptiert URL und Dateiname oder ein Detailobjekt mit Feldern wie url, name, headers und saveAs und gibt ein abbrechbares Handle zurück.", - GM_openInTab: "Öffnet einen neuen Tab mit Optionen wie Öffnen im Vorder- oder Hintergrund.", - GM_closeInTab: "Schließt einen vom Skript geöffneten oder verwalteten Tab.", - GM_getTab: "Liest temporäre Daten, die dem aktuellen Tab zugeordnet sind.", - GM_saveTab: "Speichert temporäre Daten, die dem aktuellen Tab zugeordnet sind.", - GM_getTabs: "Liest alle vom Skript gespeicherten temporären Tabdaten.", - GM_notification: "Zeigt eine Browserbenachrichtigung an und verarbeitet Ereignisse wie Klick oder Schließen.", - GM_closeNotification: "Schließt eine bestimmte Skriptbenachrichtigung.", - GM_updateNotification: "Aktualisiert eine bestimmte Skriptbenachrichtigung.", - GM_setClipboard: "Schreibt in die Systemzwischenablage.", - GM_registerMenuCommand: "Registriert einen Skript-Menübefehl.", - GM_unregisterMenuCommand: "Hebt die Registrierung eines Skript-Menübefehls auf.", - CAT_registerMenuInput: "ScriptCat-API: Registriert einen Skript-Menübefehl mit Eingabefeld.", - CAT_unregisterMenuInput: "ScriptCat-API: Hebt die Registrierung eines Skript-Menübefehls mit Eingabefeld auf.", - GM_addStyle: "Injiziert CSS-Stile in die Seite.", - GM_addElement: "Erstellt ein Element und fügt es in die Seite ein.", - GM_getResourceText: "Liest den Textinhalt einer mit @resource deklarierten Ressource.", - GM_getResourceURL: "Ruft die URL einer mit @resource deklarierten Ressource ab.", - GM_cookie: "Greift auf die Cookie-API zu, um Cookies zu lesen, zu schreiben oder zu löschen.", - CAT_fetchBlob: - "Interne ScriptCat-API: Liest eine erweiterungsseitig verfügbare Ressource und gibt einen Blob zurück.", - CAT_fileStorage: "ScriptCat-API: Zugriff auf den Dateispeicher des Skripts.", - CAT_userConfig: "ScriptCat-API: Zugriff auf die Benutzerkonfiguration des Skripts.", - CAT_scriptLoaded: "ScriptCat-API: Wartet in @early-start-Szenarien, bis das Skript vollständig geladen ist.", - "window.close": "Erlaubt dem Skript, window.close() aufzurufen.", - "window.focus": "Erlaubt dem Skript, window.focus() aufzurufen.", - "window.onurlchange": "Erlaubt dem Skript, URL-Änderungsereignisse zu überwachen.", -} as const; - -const grantValuePromptsViVN = { - none: "Không yêu cầu quyền GM API đặc biệt; script chạy gần giống script trang thông thường.", - unsafeWindow: "Truy cập đối tượng window thật của trang để tương tác với script gốc của trang.", - GM_getValue: "Đọc một giá trị từ bộ nhớ lưu trữ bền vững của script.", - GM_getValues: "Đọc nhiều giá trị từ bộ nhớ lưu trữ bền vững của script.", - GM_setValue: "Ghi một giá trị vào bộ nhớ lưu trữ bền vững của script.", - GM_setValues: "Ghi nhiều giá trị vào bộ nhớ lưu trữ bền vững của script.", - GM_deleteValue: "Xóa một giá trị khỏi bộ nhớ lưu trữ bền vững của script.", - GM_deleteValues: "Xóa nhiều giá trị khỏi bộ nhớ lưu trữ bền vững của script.", - GM_listValues: "Liệt kê tất cả khóa trong bộ nhớ lưu trữ bền vững của script.", - GM_addValueChangeListener: "Theo dõi thay đổi của giá trị trong bộ nhớ script.", - GM_removeValueChangeListener: "Gỡ bộ lắng nghe thay đổi giá trị trong bộ nhớ script.", - GM_xmlhttpRequest: "Gửi yêu cầu mạng cross-origin; host đích thường cần được cho phép bằng @connect.", - GM_download: - "Tải tệp xuống. Nhận URL và tên tệp, hoặc đối tượng chi tiết có các trường như url, name, headers, saveAs, và trả về handle có thể abort.", - GM_openInTab: "Mở tab mới, có thể chọn mở ở nền hoặc phía trước.", - GM_closeInTab: "Đóng tab do script mở hoặc quản lý.", - GM_getTab: "Đọc dữ liệu tạm thời gắn với tab hiện tại.", - GM_saveTab: "Lưu dữ liệu tạm thời gắn với tab hiện tại.", - GM_getTabs: "Đọc tất cả dữ liệu tab tạm thời mà script đã lưu.", - GM_notification: "Hiển thị thông báo trình duyệt và xử lý các sự kiện như nhấp hoặc đóng.", - GM_closeNotification: "Đóng một thông báo script cụ thể.", - GM_updateNotification: "Cập nhật một thông báo script cụ thể.", - GM_setClipboard: "Ghi vào clipboard hệ thống.", - GM_registerMenuCommand: "Đăng ký lệnh menu của script.", - GM_unregisterMenuCommand: "Hủy đăng ký lệnh menu của script.", - CAT_registerMenuInput: "API ScriptCat: đăng ký lệnh menu script có ô nhập.", - CAT_unregisterMenuInput: "API ScriptCat: hủy đăng ký lệnh menu script có ô nhập.", - GM_addStyle: "Chèn CSS vào trang.", - GM_addElement: "Tạo và chèn phần tử vào trang.", - GM_getResourceText: "Đọc nội dung văn bản của tài nguyên khai báo bằng @resource.", - GM_getResourceURL: "Lấy URL của tài nguyên khai báo bằng @resource.", - GM_cookie: "Truy cập Cookie API để đọc, ghi hoặc xóa cookie.", - CAT_fetchBlob: "API nội bộ ScriptCat: đọc tài nguyên có thể truy cập từ phía tiện ích và trả về Blob.", - CAT_fileStorage: "API ScriptCat: truy cập bộ nhớ tệp của script.", - CAT_userConfig: "API ScriptCat: truy cập cấu hình người dùng của script.", - CAT_scriptLoaded: "API ScriptCat: chờ script tải hoàn tất trong tình huống @early-start.", - "window.close": "Cho phép script gọi window.close().", - "window.focus": "Cho phép script gọi window.focus().", - "window.onurlchange": "Cho phép script lắng nghe sự kiện thay đổi URL.", -} as const; - -const grantValuePromptsRuRU = { - none: "Не запрашивает специальные права GM API; скрипт работает ближе к обычному скрипту страницы.", - unsafeWindow: "Доступ к собственному объекту window страницы для взаимодействия с нативными скриптами страницы.", - GM_getValue: "Читает одно значение из постоянного хранилища скрипта.", - GM_getValues: "Читает несколько значений из постоянного хранилища скрипта.", - GM_setValue: "Записывает одно значение в постоянное хранилище скрипта.", - GM_setValues: "Записывает несколько значений в постоянное хранилище скрипта.", - GM_deleteValue: "Удаляет одно значение из постоянного хранилища скрипта.", - GM_deleteValues: "Удаляет несколько значений из постоянного хранилища скрипта.", - GM_listValues: "Перечисляет все ключи в постоянном хранилище скрипта.", - GM_addValueChangeListener: "Отслеживает изменения значений в хранилище скрипта.", - GM_removeValueChangeListener: "Удаляет слушатель изменений значений в хранилище скрипта.", - GM_xmlhttpRequest: "Выполняет cross-origin сетевые запросы; целевые хосты обычно нужно разрешить через @connect.", - GM_download: - "Загружает файлы. Принимает URL и имя файла либо объект параметров с полями url, name, headers, saveAs и возвращает дескриптор с abort.", - GM_openInTab: "Открывает новую вкладку с параметрами, например в фоне или на переднем плане.", - GM_closeInTab: "Закрывает вкладку, открытую или управляемую скриптом.", - GM_getTab: "Читает временные данные, связанные с текущей вкладкой.", - GM_saveTab: "Сохраняет временные данные, связанные с текущей вкладкой.", - GM_getTabs: "Читает все временные данные вкладок, сохраненные скриптом.", - GM_notification: "Показывает уведомление браузера и обрабатывает события, например клик или закрытие.", - GM_closeNotification: "Закрывает указанное уведомление скрипта.", - GM_updateNotification: "Обновляет указанное уведомление скрипта.", - GM_setClipboard: "Записывает данные в системный буфер обмена.", - GM_registerMenuCommand: "Регистрирует команду меню скрипта.", - GM_unregisterMenuCommand: "Отменяет регистрацию команды меню скрипта.", - CAT_registerMenuInput: "API ScriptCat: регистрирует команду меню скрипта с полем ввода.", - CAT_unregisterMenuInput: "API ScriptCat: отменяет регистрацию команды меню скрипта с полем ввода.", - GM_addStyle: "Внедряет CSS-стили на страницу.", - GM_addElement: "Создает и вставляет элемент на страницу.", - GM_getResourceText: "Читает текстовое содержимое ресурса, объявленного через @resource.", - GM_getResourceURL: "Получает URL ресурса, объявленного через @resource.", - GM_cookie: "Доступ к Cookie API для чтения, записи или удаления cookie.", - CAT_fetchBlob: "Внутренний API ScriptCat: читает доступный со стороны расширения ресурс и возвращает Blob.", - CAT_fileStorage: "API ScriptCat: доступ к файловому хранилищу скрипта.", - CAT_userConfig: "API ScriptCat: доступ к пользовательской конфигурации скрипта.", - CAT_scriptLoaded: "API ScriptCat: ожидает полной загрузки скрипта в сценариях @early-start.", - "window.close": "Разрешает скрипту вызывать window.close().", - "window.focus": "Разрешает скрипту вызывать window.focus().", - "window.onurlchange": "Разрешает скрипту слушать события изменения URL.", -} as const; - -const grantValuePromptsKoKR = { - none: "특별한 GM API 권한을 요청하지 않으며, 스크립트는 일반 페이지 스크립트에 가깝게 동작합니다.", - unsafeWindow: "페이지 자체의 window 객체에 접근하여 네이티브 페이지 스크립트와 상호작용합니다.", - GM_getValue: "스크립트의 영구 저장소에서 값 하나를 읽습니다.", - GM_getValues: "스크립트의 영구 저장소에서 여러 값을 읽습니다.", - GM_setValue: "스크립트의 영구 저장소에 값 하나를 씁니다.", - GM_setValues: "스크립트의 영구 저장소에 여러 값을 씁니다.", - GM_deleteValue: "스크립트의 영구 저장소에서 값 하나를 삭제합니다.", - GM_deleteValues: "스크립트의 영구 저장소에서 여러 값을 삭제합니다.", - GM_listValues: "스크립트의 영구 저장소에 있는 모든 키를 나열합니다.", - GM_addValueChangeListener: "스크립트 저장 값의 변경을 감지합니다.", - GM_removeValueChangeListener: "스크립트 저장 값 변경 리스너를 제거합니다.", - GM_xmlhttpRequest: "교차 출처(cross-origin) 네트워크 요청을 보냅니다. 대상 호스트는 보통 @connect로 허용해야 합니다.", - GM_download: - "파일을 다운로드합니다. URL과 파일명을 전달하거나 url, name, headers, saveAs 등의 필드를 가진 상세 객체를 전달할 수 있으며, 중단(abort) 가능한 핸들을 반환합니다.", - GM_openInTab: "새 탭을 열며, 전면/백그라운드로 열기 등의 옵션을 사용할 수 있습니다.", - GM_closeInTab: "스크립트가 열었거나 관리하는 탭을 닫습니다.", - GM_getTab: "현재 탭과 연결된 임시 데이터를 읽습니다.", - GM_saveTab: "현재 탭과 연결된 임시 데이터를 저장합니다.", - GM_getTabs: "스크립트가 저장한 모든 탭의 임시 데이터를 읽습니다.", - GM_notification: "브라우저 알림을 표시하고 클릭, 닫기 등의 이벤트를 처리합니다.", - GM_closeNotification: "지정한 스크립트 알림을 닫습니다.", - GM_updateNotification: "지정한 스크립트 알림을 업데이트합니다.", - GM_setClipboard: "시스템 클립보드에 씁니다.", - GM_registerMenuCommand: "스크립트 메뉴 명령을 등록합니다.", - GM_unregisterMenuCommand: "스크립트 메뉴 명령의 등록을 해제합니다.", - CAT_registerMenuInput: "ScriptCat API: 입력 필드가 있는 스크립트 메뉴 명령을 등록합니다.", - CAT_unregisterMenuInput: "ScriptCat API: 입력 필드가 있는 스크립트 메뉴 명령의 등록을 해제합니다.", - GM_addStyle: "페이지에 CSS를 삽입합니다.", - GM_addElement: "페이지에 요소를 생성하여 삽입합니다.", - GM_getResourceText: "@resource로 선언된 리소스의 텍스트 내용을 읽습니다.", - GM_getResourceURL: "@resource로 선언된 리소스의 URL을 가져옵니다.", - GM_cookie: "쿠키를 읽거나 쓰거나 삭제하기 위해 Cookie API에 접근합니다.", - CAT_fetchBlob: "ScriptCat 내부 API: 확장 프로그램 측에서 접근 가능한 리소스를 읽어 Blob으로 반환합니다.", - CAT_fileStorage: "ScriptCat API: 스크립트 파일 저장소에 접근합니다.", - CAT_userConfig: "ScriptCat API: 스크립트 사용자 설정에 접근합니다.", - CAT_scriptLoaded: "ScriptCat API: @early-start 시나리오에서 스크립트가 완전히 로드될 때까지 기다립니다.", - "window.close": "스크립트가 window.close()를 호출할 수 있도록 허용합니다.", - "window.focus": "스크립트가 window.focus()를 호출할 수 있도록 허용합니다.", - "window.onurlchange": "스크립트가 URL 변경 이벤트를 감지할 수 있도록 허용합니다.", -} as const; - -export const editorLangs = { - "zh-CN": { - title: "简体中文", - thisIsAUserScript: "一个用户脚本", - undefinedPrompt: "未定义的提示符", - quickfix: "修复 {0} 问题", - addEslintDisableNextLine: "添加 eslint-disable-next-line 注释", - addEslintDisable: "添加 eslint-disable 注释", - declareGlobal: "将 '{0}' 声明为全局变量 (/* global */)", - removeConnectWildcard: "移除 @connect 通配符,改为 {0}", - replaceMatchTldWildcardWithInclude: "将 @match 顶级域名通配符改为 @include {0}", - replaceIncludeWithMatch: "将 @include 改为 @match {0}", - grantConflict: "@grant none 不能和 GM API 同时使用;请移除 none 或所有 GM API。", - grantValuePrompts: grantValuePromptsZhCN, - prompt: { - name: "脚本名称", - namespace: "脚本命名空间", - copyright: "脚本的版权信息", - license: "脚本的开源协议", - version: "脚本版本", - description: "脚本描述", - icon: "脚本图标", - iconURL: "脚本图标", - defaulticon: "脚本图标", - icon64: "64x64 大小的脚本图标", - icon64URL: "64x64 大小的脚本图标", - grant: "脚本特殊 Api 权限申请", - author: "脚本作者", - "run-at": - "脚本的运行时间
`document-start`:在前端匹配到网址后,以最快的速度注入脚本到页面中
`document-end`:DOM 加载完成后注入脚本,此时页面脚本和图像等资源可能仍在加载
`document-idle`:所有内容加载完成后注入脚本
`document-body`:脚本只会在页面中有 body 元素时才会注入", - "run-in": "脚本注入的环境", - homepage: "脚本主页", - homepageURL: "脚本主页", - website: "脚本主页", - background: "后台脚本", - include: "脚本匹配 url 运行的页面", - match: "脚本匹配 url 运行的页面", - exclude: "脚本匹配 url 不运行的页面", - connect: "获取网站的访问权限", - resource: "引入资源文件", - require: "引入外部 js 文件", - "require-css": "引入外部 css 文件", - noframes: "表示脚本不运行在 `` 中", - compatible: "用于在 GreasyFork 中显示脚本的兼容性支持", - "inject-into": - "脚本注入环境
`content`:脚本注入到 content 环境
`page`:脚本注入到网页环境(默认)
注:SC 不支持以 CSP 判断是否需要脚本注入到 content 环境的 `inject-into: auto` 设计。", - "early-start": - "配合 `run-at: document-start` 的声明,使用 `early-start` 可以比网页更快地加载并执行脚本,但存在一定性能问题与 GM API 使用限制。(SC 独有)", - unwrap: - "让用户脚本不经过沙箱封装,直接注入并运行在页面的原生全局作用域中。
脚本可直接访问和修改页面真实的全局变量,但将无法使用 GM.* 等用户脚本特权 API。
常用于需要与页面原生脚本深度交互或从普通页面脚本迁移的场景。", - definition: "ScriptCat 特有功能:一个 `.d.ts` 文件的引用地址,能够自动补全编辑器的提示", - // https://bbs.tampermonkey.net.cn/thread-3036-1-1.html#%40antifeature%E8%A7%84%E5%88%99 - antifeature: `与脚本市场有关,不受欢迎的功能需要加上此描述值 -referral-link:该脚本会修改或重定向到作者的返佣链接 -ads:该脚本会在访问的页面上插入广告 -payment:该脚本需要付费才能够正常使用 -miner:该脚本存在利用用户资源但不为用户产生收益或收益极其微弱的行为 -membership:该脚本需要注册会员/关注公众号才能正常使用 -tracking:该脚本会追踪你的用户信息`.replace(/\n/g, "
"), - updateURL: "脚本检查更新的 url", - downloadURL: "脚本更新的下载地址", - supportURL: "支持站点、bug 反馈页面", - source: "脚本源码页", - scriptUrl: "订阅脚本中引用的用户脚本地址", - storageName: "脚本值存储空间名称,用于让多个脚本共享同一个存储空间", - tag: "脚本标签,多个标签可用逗号或空格分隔", - cloudCat: "标记脚本支持导出为 CloudCat 云端脚本包", - cloudServer: "脚本使用的 CloudCat 云端服务", - exportValue: "导出为云端脚本时需要导出的脚本存储值", - exportCookie: "导出为云端脚本时需要导出的 Cookie", - crontab: `定时脚本 crontab 参考(不适用于云端脚本) -* * * * * * 每秒运行一次 -* * * * * 每分钟运行一次 -0 */6 * * * 每 6 小时的 0 分执行一次 -15 */6 * * * 每 6 小时的 15 分执行一次 -* once * * * 每小时运行一次 -* * once * * 每天运行一次 -* 10 once * * 每天 10:00-10:59 运行一次,若 10:04 已运行,本日 10:05-10:59 不再运行 -* 1,3,5 once * * 每天 1/3/5 点运行一次,若 1 点已运行,当天 3、5 点不再运行 -* */4 once * * 每隔 4 小时检测并运行一次,若 4 点已运行,当天 8/12/16/20/24 点不再运行 -* 10-23 once * * 每天 10:00-23:59 运行一次,若 10:04 已运行,当日 10:05-23:59 不再运行 -* once 13 * * 每个月 13 号的每小时运行一次 -* once(9-17) * * * 每天 9 时至 17 时期间,每小时执行一次 -0,30 once * * * 每小时在 0 分或 30 分中最早命中的那次执行,本小时不再重复 -* * once(9-18) * * 每月 9 号至 18 号期间,每天执行一次 -* * * * once(1-5) 每周一至周五期间,每周执行一次`.replace(/\n/g, "
"), - }, - }, - - "en-US": { - title: "English", - thisIsAUserScript: "A user script", - undefinedPrompt: "Undefined Prompt", - quickfix: "Fix {0} Issue", - addEslintDisableNextLine: "Add eslint-disable-next-line Comment", - addEslintDisable: "Add eslint-disable Comment", - declareGlobal: "Declare '{0}' as a global variable (/* global */)", - removeConnectWildcard: "Remove @connect wildcard: {0}", - replaceMatchTldWildcardWithInclude: "Replace @match TLD wildcard with @include {0}", - replaceIncludeWithMatch: "Replace @include with @match {0}", - grantConflict: "@grant none cannot be used with GM APIs. Remove none or all GM APIs.", - grantValuePrompts: grantValuePromptsEnUS, - prompt: { - name: "Script name", - namespace: "Script namespace", - copyright: "Script copyright information", - license: "Script open-source license", - version: "Script version", - description: "Script description", - icon: "Script icon", - iconURL: "Script icon", - defaulticon: "Script icon", - icon64: "64x64 script icon", - icon64URL: "64x64 script icon", - grant: "Request special script API permissions", - author: "Script author", - "run-at": - "When the script runs
`document-start`: inject as early as possible after URL match
`document-end`: inject after DOM has loaded (images etc. may still load)
`document-idle`: inject after all content has finished loading
`document-body`: inject only when a body element exists", - "run-in": "Environment in which the script is injected", - homepage: "Script homepage", - homepageURL: "Script homepage", - website: "Script homepage", - background: "Background script", - include: "Pages whose URLs match and run this script", - match: "Pages whose URLs match and run this script", - exclude: "Pages whose URLs match and do NOT run this script", - connect: "Sites the script can access", - resource: "Imported resource files", - require: "Imported external JS files", - "require-css": "Imported external CSS files", - noframes: "Do not run the script inside ``", - compatible: "Compatibility information shown on GreasyFork", - "inject-into": - "Script injection context
`content`: inject into content context
`page`: inject into page context (default)
Note: SC does not support `inject-into: auto`, which chooses context based on CSP.", - "early-start": - "Used with `run-at: document-start`. `early-start` lets the script execute even earlier than the page, but may affect performance and limit GM APIs. (SC only)", - unwrap: - "Makes the user script bypass sandbox wrapping and be injected and executed directly in the page’s native global scope.
The script can directly access and modify the page’s real global variables, but will not be able to use user script privileged APIs such as GM.*.
Commonly used in scenarios that require deep interaction with native page scripts or when migrating from regular page scripts.", - definition: "ScriptCat-only: URL of a `.d.ts` file used for editor auto-completion", - antifeature: `Related to script markets: unwanted features should include this description value -referral-link: This script modifies or redirects to the author's referral link -ads: This script inserts ads on the pages you visit -payment: This script requires payment to be used properly -miner: This script engages in mining activities -membership: This script requires registration as a member to be used properly -tracking: This script tracks your user information`.replace(/\n/g, "
"), - updateURL: "URL used to check for script updates", - downloadURL: "URL used to download script updates", - supportURL: "Support site / bug report page", - source: "Script source code page", - scriptUrl: "User script URL referenced by a subscription script", - storageName: "Script value storage name, used to share one storage area across multiple scripts", - tag: "Script tags, separated by commas or spaces", - cloudCat: "Marks the script as exportable to a CloudCat cloud script package", - cloudServer: "CloudCat cloud service used by the script", - exportValue: "Script storage values to export when exporting as a cloud script", - exportCookie: "Cookies to export when exporting as a cloud script", - crontab: `Scheduled script crontab examples (not for cloud scripts) -* * * * * * Run every second -* * * * * Run every minute -0 */6 * * * Run once at minute 0 every 6 hours -15 */6 * * * Run once at minute 15 every 6 hours -* once * * * Run once every hour -* * once * * Run once every day -* 10 once * * Run once between 10:00-10:59 each day; if it runs at 10:04, it won't run again that day between 10:05-10:59 -* 1,3,5 once * * Run once at 1:00, 3:00, 5:00 each day; if it runs at 1:00, it won't run again at 3:00 or 5:00 -* */4 once * * Check and run once every 4 hours; if it runs at 4:00, it won't run again that day at 8:00, 12:00, 16:00, 20:00, 24:00 -* 10-23 once * * Run once between 10:00-23:59 each day; if it runs at 10:04, it won't run again that day between 10:05-23:59 -* once 13 * * Run once every hour on the 13th day of each month -* once(9-17) * * * Run once per hour during hours 9 to 17 each day -0,30 once * * * Run once per hour; whichever of minute 0 or 30 comes first, the other is skipped -* * once(9-18) * * Run once per day during the 9th to 18th of each month -* * * * once(1-5) Run once per week; only on weekdays Monday to Friday`.replace(/\n/g, "
"), - }, - }, - - "zh-TW": { - title: "繁體中文", - thisIsAUserScript: "一個使用者腳本", - undefinedPrompt: "未定義的提示符", - quickfix: "修復 {0} 問題", - addEslintDisableNextLine: "新增 eslint-disable-next-line 註解", - addEslintDisable: "新增 eslint-disable 註解", - declareGlobal: "將 '{0}' 宣告為全域變數 (/* global */)", - removeConnectWildcard: "移除 @connect 萬用字元,改為 {0}", - replaceMatchTldWildcardWithInclude: "將 @match 頂級網域萬用字元改為 @include {0}", - replaceIncludeWithMatch: "將 @include 改為 @match {0}", - grantConflict: "@grant none 不能和 GM API 同時使用;請移除 none 或所有 GM API。", - grantValuePrompts: grantValuePromptsZhTW, - prompt: { - name: "腳本名稱", - namespace: "腳本命名空間", - copyright: "腳本的版權資訊", - license: "腳本的開源協議", - version: "腳本版本", - description: "腳本描述", - icon: "腳本圖示", - iconURL: "腳本圖示", - defaulticon: "腳本圖示", - icon64: "64x64 大小的腳本圖示", - icon64URL: "64x64 大小的腳本圖示", - grant: "腳本特殊 Api 權限申請", - author: "腳本作者", - "run-at": - "腳本的執行時間
`document-start`:在前端匹配到網址後,以最快速度將腳本注入頁面
`document-end`:DOM 載入完成後注入腳本,此時頁面腳本與圖像資源可能仍在載入
`document-idle`:所有內容載入完成後注入腳本
`document-body`:僅在頁面存在 body 元素時才注入腳本", - "run-in": "腳本注入的環境", - homepage: "腳本首頁", - homepageURL: "腳本首頁", - website: "腳本首頁", - background: "背景腳本", - include: "腳本匹配 url 執行的頁面", - match: "腳本匹配 url 執行的頁面", - exclude: "腳本匹配 url 不執行的頁面", - connect: "取得網站的存取權限", - resource: "引入資源檔案", - require: "引入外部 js 檔", - "require-css": "引入外部 css 檔", - noframes: "表示腳本不在 `` 中執行", - compatible: "用於在 GreasyFork 中顯示腳本相容性資訊", - "inject-into": - "腳本注入環境
`content`:將腳本注入 content 環境
`page`:將腳本注入網頁環境(預設)
註:SC 不支援依據 CSP 判斷是否注入 content 環境的 `inject-into: auto`。", - "early-start": - "配合 `run-at: document-start` 使用,`early-start` 可以比網頁更早載入並執行腳本,但可能造成效能問題與 GM API 限制。(SC 獨有)", - unwrap: - "讓使用者腳本不經過沙箱封裝,直接注入並執行於頁面的原生全域作用域中。
腳本可直接存取並修改頁面真實的全域變數,但將無法使用 GM.* 等使用者腳本的特權 API。
常用於需要與頁面原生腳本深度互動,或從一般頁面腳本遷移的場景。", - definition: "ScriptCat 特有功能:一個 `.d.ts` 檔案的引用網址,可啟用編輯器自動提示", - antifeature: `與腳本市場相關,不受歡迎的功能需要加上此描述值 -referral-link:此腳本會修改或重新導向至作者的返傭連結 -ads:此腳本會在您存取的頁面上插入廣告 -payment:此腳本需要您付費才能正常使用 -miner:此腳本存在挖礦行為 -membership:此腳本需要註冊會員才能正常使用 -tracking:此腳本會追蹤您的使用者資訊`.replace(/\n/g, "
"), - updateURL: "腳本檢查更新的 url", - downloadURL: "腳本更新的下載網址", - supportURL: "支援站點、錯誤回報頁面", - source: "腳本原始碼頁面", - scriptUrl: "訂閱腳本中引用的使用者腳本網址", - storageName: "腳本值儲存空間名稱,用於讓多個腳本共享同一個儲存空間", - tag: "腳本標籤,多個標籤可用逗號或空格分隔", - cloudCat: "標記腳本支援匯出為 CloudCat 雲端腳本套件", - cloudServer: "腳本使用的 CloudCat 雲端服務", - exportValue: "匯出為雲端腳本時需要匯出的腳本儲存值", - exportCookie: "匯出為雲端腳本時需要匯出的 Cookie", - crontab: `排程腳本 crontab 參考(不適用於雲端腳本) -* * * * * * 每秒執行一次 -* * * * * 每分鐘執行一次 -0 */6 * * * 每 6 小時的第 0 分執行一次 -15 */6 * * * 每 6 小時的第 15 分執行一次 -* once * * * 每小時執行一次 -* * once * * 每天執行一次 -* 10 once * * 每天 10:00-10:59 執行一次,若在 10:04 已執行,當日 10:05-10:59 不再執行 -* 1,3,5 once * * 每天 1/3/5 點執行一次,若 1 點已執行,當天 3、5 點不再執行 -* */4 once * * 每隔 4 小時檢查並執行一次,若 4 點已執行,當天 8/12/16/20/24 點不再執行 -* 10-23 once * * 每天 10:00-23:59 執行一次,若 10:04 已執行,當日 10:05-23:59 不再執行 -* once 13 * * 每月 13 號的每小時執行一次 -* once(9-17) * * * 每天 9 時至 17 時期間,每小時執行一次 -0,30 once * * * 每小時在 0 分或 30 分中最早命中的那次執行,本小時不再重複 -* * once(9-18) * * 每月 9 號至 18 號期間,每天執行一次 -* * * * once(1-5) 每週一至週五期間,每週執行一次`.replace(/\n/g, "
"), - }, - }, - - "ja-JP": { - title: "日本語", - thisIsAUserScript: "ユーザースクリプト", - undefinedPrompt: "未定義のプロンプト", - quickfix: "{0} の問題を修正", - addEslintDisableNextLine: "eslint-disable-next-line コメントを追加", - addEslintDisable: "eslint-disable コメントを追加", - declareGlobal: "'{0}' をグローバル変数として宣言 (/* global */)", - removeConnectWildcard: "@connect のワイルドカードを削除: {0}", - replaceMatchTldWildcardWithInclude: "@match の TLD ワイルドカードを @include {0} に置換", - replaceIncludeWithMatch: "@include を @match {0} に置換", - grantConflict: "@grant none は GM API と同時に使えません。none またはすべての GM API を削除してください。", - grantValuePrompts: grantValuePromptsJaJP, - prompt: { - name: "スクリプト名", - namespace: "スクリプトの名前空間", - copyright: "スクリプトの著作権情報", - license: "スクリプトのライセンス", - version: "スクリプトのバージョン", - description: "スクリプトの説明", - icon: "スクリプトのアイコン", - iconURL: "スクリプトのアイコン", - defaulticon: "スクリプトのアイコン", - icon64: "64x64 サイズのスクリプトアイコン", - icon64URL: "64x64 サイズのスクリプトアイコン", - grant: "スクリプトが要求する特別な API 権限", - author: "スクリプトの作者", - "run-at": - "スクリプトの実行タイミング
`document-start`:URL がマッチした直後、できるだけ早くスクリプトを注入
`document-end`:DOM 読み込み完了後に注入(画像などは読み込み中の可能性あり)
`document-idle`:ページ内のすべての読み込み完了後に注入
`document-body`:body 要素が存在する場合のみ注入", - "run-in": "スクリプトを注入するコンテキスト", - homepage: "スクリプトのホームページ", - homepageURL: "スクリプトのホームページ", - website: "スクリプトのホームページ", - background: "バックグラウンドスクリプト", - include: "スクリプトを実行する URL パターン", - match: "スクリプトを実行する URL パターン", - exclude: "スクリプトを実行しない URL パターン", - connect: "アクセス権を要求するサイト", - resource: "読み込むリソースファイル", - require: "読み込む外部 JS ファイル", - "require-css": "読み込む外部 CSS ファイル", - noframes: "スクリプトを `` 内では実行しない", - compatible: "GreasyFork に表示される互換性情報", - "inject-into": - "スクリプトの注入コンテキスト
`content`:コンテンツスクリプト環境に注入
`page`:ページコンテキストに注入(既定)
注:SC は CSP に基づき自動でコンテキストを切り替える `inject-into: auto` には対応していません。", - "early-start": - "`run-at: document-start` と併用します。`early-start` を指定するとページよりも早くスクリプトを実行できますが、パフォーマンスへの影響や GM API の制限が発生する場合があります(SC 独自機能)。", - unwrap: - "ユーザースクリプトをサンドボックスでラップせず、ページのネイティブなグローバルスコープに直接注入して実行します。
スクリプトはページの実際のグローバル変数に直接アクセスおよび変更できますが、GM.* などのユーザースクリプトの特権 API は使用できなくなります。
ページのネイティブスクリプトとの深い連携が必要な場合や、通常のページスクリプトから移行する際によく使用されます。", - definition: "ScriptCat 専用機能:`.d.ts` ファイルの URL。エディタの補完を有効にします。", - antifeature: `スクリプトマーケットに関連します。好まれない機能にはこの説明値を追加する必要があります -referral-link:このスクリプトは作者のアフィリエイトリンクに変更またはリダイレクトします -ads:このスクリプトはアクセスしたページに広告を挿入します -payment:このスクリプトは正常に使用するために支払いが必要です -miner:このスクリプトにはマイニング動作があります -membership:このスクリプトは正常に使用するためにメンバー登録が必要です -tracking:このスクリプトはユーザー情報を追跡します`.replace(/\n/g, "
"), - updateURL: "スクリプト更新を確認する URL", - downloadURL: "スクリプト更新をダウンロードする URL", - supportURL: "サポートサイト・バグ報告ページ", - source: "スクリプトのソースコードページ", - scriptUrl: "サブスクリプションスクリプトで参照するユーザースクリプト URL", - storageName: "複数のスクリプトで同じ保存領域を共有するためのスクリプト値ストレージ名", - tag: "スクリプトタグ。複数のタグはカンマまたはスペースで区切ります", - cloudCat: "スクリプトを CloudCat クラウドスクリプトパッケージとしてエクスポート可能にする印", - cloudServer: "スクリプトが使用する CloudCat クラウドサービス", - exportValue: "クラウドスクリプトとしてエクスポートする際に出力するスクリプト保存値", - exportCookie: "クラウドスクリプトとしてエクスポートする際に出力する Cookie", - crontab: `スケジュールスクリプトの crontab 例(クラウドスクリプトには非対応) -* * * * * * 毎秒実行 -* * * * * 毎分実行 -0 */6 * * * 6 時間ごとに 0 分に 1 回実行 -15 */6 * * * 6 時間ごとに 15 分に 1 回実行 -* once * * * 毎時 1 回実行 -* * once * * 毎日 1 回実行 -* 10 once * * 毎日 10:00-10:59 の間に 1 回実行。10:04 に実行された場合、その日は 10:05-10:59 に再実行されません -* 1,3,5 once * * 毎日 1/3/5 時に 1 回実行。1 時に実行された場合、その日は 3 時と 5 時に再実行されません -* */4 once * * 4 時間ごとに確認して 1 回実行。4 時に実行された場合、その日は 8/12/16/20/24 時に再実行されません -* 10-23 once * * 毎日 10:00-23:59 の間に 1 回実行。10:04 に実行された場合、その日は 10:05-23:59 に再実行されません -* once 13 * * 毎月 13 日の各時間帯で 1 回実行 -* once(9-17) * * * 毎日 9 時〜17 時の間、毎時 1 回実行 -0,30 once * * * 毎時 0 分または 30 分のうち最初に命中した方のみ実行、同じ時間内に再実行なし -* * once(9-18) * * 毎月 9 日〜18 日の期間中、毎日 1 回実行 -* * * * once(1-5) 毎週月曜〜金曜の期間中、毎週 1 回実行`.replace(/\n/g, "
"), - }, - }, - - "de-DE": { - title: "Deutsch", - thisIsAUserScript: "Ein Benutzerskript", - undefinedPrompt: "Undefinierter Prompt", - quickfix: "{0}-Problem beheben", - addEslintDisableNextLine: "eslint-disable-next-line Kommentar hinzufügen", - addEslintDisable: "eslint-disable Kommentar hinzufügen", - declareGlobal: "'{0}' als globale Variable deklarieren (/* global */)", - removeConnectWildcard: "@connect-Wildcard entfernen: {0}", - replaceMatchTldWildcardWithInclude: "@match-TLD-Wildcard durch @include {0} ersetzen", - replaceIncludeWithMatch: "@include durch @match {0} ersetzen", - grantConflict: - "@grant none kann nicht zusammen mit GM-APIs verwendet werden. Entfernen Sie none oder alle GM-APIs.", - grantValuePrompts: grantValuePromptsDeDE, - prompt: { - name: "Skriptname", - namespace: "Skript-Namensraum", - copyright: "Urheberrechtsinformationen des Skripts", - license: "Open-Source-Lizenz des Skripts", - version: "Skriptversion", - description: "Skriptbeschreibung", - icon: "Skript-Symbol", - iconURL: "Skript-Symbol", - defaulticon: "Skript-Symbol", - icon64: "64x64 Skript-Symbol", - icon64URL: "64x64 Skript-Symbol", - grant: "Angeforderte spezielle API-Berechtigungen", - author: "Skriptautor", - "run-at": - "Zeitpunkt der Skriptausführung
`document-start`: so früh wie möglich nach URL-Match injizieren
`document-end`: nach dem Laden des DOM injizieren (Bilder usw. können noch laden)
`document-idle`: nach vollständigem Laden aller Inhalte injizieren
`document-body`: nur injizieren, wenn ein body-Element vorhanden ist", - "run-in": "Kontext, in den das Skript injiziert wird", - homepage: "Skript-Homepage", - homepageURL: "Skript-Homepage", - website: "Skript-Homepage", - background: "Hintergrundskript", - include: "Seiten-URLs, auf denen das Skript ausgeführt wird", - match: "Seiten-URLs, auf denen das Skript ausgeführt wird", - exclude: "Seiten-URLs, auf denen das Skript nicht ausgeführt wird", - connect: "Websites, auf die das Skript zugreifen darf", - resource: "Zu ladende Ressourcendateien", - require: "Zu ladende externe JS-Dateien", - "require-css": "Zu ladende externe CSS-Dateien", - noframes: "Skript nicht innerhalb von `` ausführen", - compatible: "Kompatibilitätsinformationen für GreasyFork", - "inject-into": - "Skript-Injektionskontext
`content`: in den Content-Kontext injizieren
`page`: in den Seitenkontext injizieren (Standard)
Hinweis: SC unterstützt `inject-into: auto` nicht, bei dem der Kontext über CSP gewählt wird.", - "early-start": - "Wird mit `run-at: document-start` verwendet. `early-start` lässt das Skript noch vor der Seite laufen, kann aber die Leistung beeinträchtigen und GM-APIs einschränken. (Nur in SC)", - unwrap: - "Ermöglicht es, das Benutzerskript ohne Sandbox-Kapselung direkt in den nativen globalen Gültigkeitsbereich der Seite zu injizieren und auszuführen.
Das Skript kann direkt auf die tatsächlichen globalen Variablen der Seite zugreifen und diese verändern, kann jedoch keine privilegierten Benutzerskript-APIs wie GM.* verwenden.
Wird häufig in Szenarien eingesetzt, die eine tiefe Interaktion mit nativen Seitenskripten erfordern oder bei der Migration von normalen Seitenskripten.", - definition: "Nur für ScriptCat: URL zu einer `.d.ts`-Datei für Editor-Autovervollständigung", - antifeature: - `Bezieht sich auf Script-Marktplätze: unerwünschte Funktionen sollten diesen Beschreibungswert enthalten -referral-link: Dieses Skript modifiziert oder leitet zu den Affiliate-Links des Autors um -ads: Dieses Skript fügt Werbung auf den von Ihnen besuchten Seiten ein -payment: Dieses Skript erfordert eine Zahlung für die normale Nutzung -miner: Dieses Skript hat Mining-Verhalten -membership: Dieses Skript erfordert eine Mitgliedschaftsregistrierung für die normale Nutzung -tracking: Dieses Skript verfolgt Ihre Benutzerinformationen`.replace(/\n/g, "
"), - updateURL: "URL zur Aktualisierungsprüfung des Skripts", - downloadURL: "URL zum Herunterladen von Skriptaktualisierungen", - supportURL: "Support-Seite / Bugtracker", - source: "Quellcode-Seite des Skripts", - scriptUrl: "Benutzerskript-URL, die von einem Abonnement-Skript referenziert wird", - storageName: "Speichername für Skriptwerte, um einen Speicherbereich mit mehreren Skripten zu teilen", - tag: "Skript-Tags, getrennt durch Kommas oder Leerzeichen", - cloudCat: "Markiert das Skript als exportierbar in ein CloudCat-Cloud-Skriptpaket", - cloudServer: "Vom Skript verwendeter CloudCat-Clouddienst", - exportValue: "Skript-Speicherwerte, die beim Export als Cloud-Skript exportiert werden", - exportCookie: "Cookies, die beim Export als Cloud-Skript exportiert werden", - crontab: `Beispiele für geplante Skripte (crontab, nicht für Cloud-Skripte) -* * * * * * Jede Sekunde ausführen -* * * * * Jede Minute ausführen -0 */6 * * * Alle 6 Stunden zur Minute 0 ausführen -15 */6 * * * Alle 6 Stunden zur Minute 15 ausführen -* once * * * Einmal pro Stunde ausführen -* * once * * Einmal pro Tag ausführen -* 10 once * * Einmal täglich zwischen 10:00-10:59; wenn um 10:04 ausgeführt, an diesem Tag nicht erneut zwischen 10:05-10:59 -* 1,3,5 once * * Einmal täglich um 1:00, 3:00, 5:00; wenn um 1:00 ausgeführt, an diesem Tag nicht erneut um 3:00 oder 5:00 -* */4 once * * Alle 4 Stunden prüfen und einmal ausführen; wenn um 4:00 ausgeführt, an diesem Tag nicht erneut um 8:00, 12:00, 16:00, 20:00, 24:00 -* 10-23 once * * Einmal täglich zwischen 10:00-23:59; wenn um 10:04 ausgeführt, an diesem Tag nicht erneut zwischen 10:05-23:59 -* once 13 * * Einmal stündlich am 13. Tag jedes Monats ausführen -* once(9-17) * * * Einmal pro Stunde zwischen 9 und 17 Uhr jeden Tag -0,30 once * * * Einmal pro Stunde; Minute 0 oder 30 — der erste Treffer gewinnt, der andere wird übersprungen -* * once(9-18) * * Einmal pro Tag vom 9. bis 18. des Monats -* * * * once(1-5) Einmal pro Woche, nur von Montag bis Freitag`.replace(/\n/g, "
"), - }, - }, - - "vi-VN": { - title: "Tiếng Việt", - thisIsAUserScript: "Một user script", - undefinedPrompt: "Prompt chưa được định nghĩa", - quickfix: "Sửa lỗi {0}", - addEslintDisableNextLine: "Thêm chú thích eslint-disable-next-line", - addEslintDisable: "Thêm chú thích eslint-disable", - declareGlobal: "Khai báo '{0}' là biến toàn cục (/* global */)", - removeConnectWildcard: "Bỏ ký tự đại diện @connect: {0}", - replaceMatchTldWildcardWithInclude: "Thay wildcard TLD @match bằng @include {0}", - replaceIncludeWithMatch: "Thay @include bằng @match {0}", - grantConflict: "@grant none không thể dùng cùng GM API. Hãy xóa none hoặc tất cả GM API.", - grantValuePrompts: grantValuePromptsViVN, - prompt: { - name: "Tên script", - namespace: "Namespace của script", - copyright: "Thông tin bản quyền của script", - license: "Giấy phép mã nguồn mở của script", - version: "Phiên bản script", - description: "Mô tả script", - icon: "Biểu tượng script", - iconURL: "Biểu tượng script", - defaulticon: "Biểu tượng script", - icon64: "Biểu tượng script kích thước 64x64", - icon64URL: "Biểu tượng script kích thước 64x64", - grant: "Quyền API đặc biệt mà script yêu cầu", - author: "Tác giả script", - "run-at": - "Thời điểm chạy script
`document-start`: chèn script sớm nhất có thể sau khi khớp URL
`document-end`: chèn sau khi DOM tải xong (ảnh v.v. có thể vẫn đang tải)
`document-idle`: chèn sau khi toàn bộ nội dung đã tải xong
`document-body`: chỉ chèn khi trang có phần tử body", - "run-in": "Ngữ cảnh mà script được chèn vào", - homepage: "Trang chủ script", - homepageURL: "Trang chủ script", - website: "Trang chủ script", - background: "Script nền (background)", - include: "Trang có URL khớp và chạy script", - match: "Trang có URL khớp và chạy script", - exclude: "Trang có URL khớp nhưng KHÔNG chạy script", - connect: "Trang web mà script được phép truy cập", - resource: "Tệp tài nguyên được import", - require: "Tệp JS bên ngoài được import", - "require-css": "Tệp CSS bên ngoài được import", - noframes: "Không chạy script bên trong ``", - compatible: "Thông tin tương thích hiển thị trên GreasyFork", - "inject-into": - "Ngữ cảnh chèn script
`content`: chèn vào ngữ cảnh content
`page`: chèn vào ngữ cảnh trang (mặc định)
Lưu ý: SC không hỗ trợ `inject-into: auto`, lựa chọn ngữ cảnh dựa trên CSP.", - "early-start": - "Dùng cùng với `run-at: document-start`. `early-start` cho phép script chạy sớm hơn cả trang, nhưng có thể gây ảnh hưởng hiệu năng và giới hạn một số GM API. (Chỉ có trong SC)", - unwrap: - "Cho phép script người dùng bỏ qua sandbox và được chèn, thực thi trực tiếp trong phạm vi toàn cục gốc của trang.
Script có thể trực tiếp truy cập và chỉnh sửa các biến toàn cục thực sự của trang, nhưng sẽ không thể sử dụng các API đặc quyền của user script như GM.*.
Thường được dùng trong các trường hợp cần tương tác sâu với script gốc của trang hoặc khi chuyển đổi từ script trang thông thường.", - definition: "Tính năng riêng của ScriptCat: URL tới tệp `.d.ts` giúp bật gợi ý tự động trong trình soạn thảo", - antifeature: `Liên quan đến chợ script: các tính năng không được ưa thích cần thêm giá trị mô tả này -referral-link: Script này sửa đổi hoặc chuyển hướng đến liên kết giới thiệu của tác giả -ads: Script này chèn quảng cáo vào các trang bạn truy cập -payment: Script này yêu cầu thanh toán để sử dụng đúng cách -miner: Script này tham gia vào các hoạt động đào coin -membership: Script này yêu cầu đăng ký làm thành viên để sử dụng đúng cách -tracking: Script này theo dõi thông tin người dùng của bạn`.replace(/\n/g, "
"), - updateURL: "URL dùng để kiểm tra cập nhật script", - downloadURL: "URL tải về bản cập nhật script", - supportURL: "Trang hỗ trợ / báo lỗi", - source: "Trang mã nguồn script", - scriptUrl: "URL user script được tham chiếu bởi script đăng ký", - storageName: "Tên vùng lưu trữ giá trị script, dùng để chia sẻ cùng một vùng lưu trữ giữa nhiều script", - tag: "Thẻ script, phân tách bằng dấu phẩy hoặc khoảng trắng", - cloudCat: "Đánh dấu script có thể xuất thành gói cloud script CloudCat", - cloudServer: "Dịch vụ CloudCat cloud mà script sử dụng", - exportValue: "Giá trị lưu trữ script cần xuất khi xuất thành cloud script", - exportCookie: "Cookie cần xuất khi xuất thành cloud script", - crontab: `Ví dụ crontab cho script chạy định kỳ (không áp dụng cho script trên cloud) -* * * * * * Chạy mỗi giây -* * * * * Chạy mỗi phút -0 */6 * * * Chạy 1 lần vào phút 0 mỗi 6 giờ -15 */6 * * * Chạy 1 lần vào phút 15 mỗi 6 giờ -* once * * * Chạy 1 lần mỗi giờ -* * once * * Chạy 1 lần mỗi ngày -* 10 once * * Chạy 1 lần mỗi ngày trong khoảng 10:00-10:59; nếu chạy lúc 10:04 thì hôm đó không chạy lại trong 10:05-10:59 -* 1,3,5 once * * Chạy 1 lần lúc 1:00, 3:00, 5:00 mỗi ngày; nếu chạy lúc 1:00 thì hôm đó không chạy lại lúc 3:00 hoặc 5:00 -* */4 once * * Kiểm tra và chạy 1 lần mỗi 4 giờ; nếu chạy lúc 4:00 thì hôm đó không chạy lại lúc 8:00, 12:00, 16:00, 20:00, 24:00 -* 10-23 once * * Chạy 1 lần mỗi ngày trong khoảng 10:00-23:59; nếu chạy lúc 10:04 thì hôm đó không chạy lại trong 10:05-23:59 -* once 13 * * Chạy 1 lần mỗi giờ vào ngày 13 hằng tháng -* once(9-17) * * * Mỗi ngày từ 9 giờ đến 17 giờ, chạy 1 lần mỗi giờ -0,30 once * * * Mỗi giờ chạy 1 lần vào phút 0 hoặc 30, lần đầu kích hoạt thắng, lần sau bị bỏ qua -* * once(9-18) * * Từ ngày 9 đến ngày 18 hằng tháng, mỗi ngày chạy 1 lần -* * * * once(1-5) Mỗi tuần chạy 1 lần, chỉ trong các ngày thứ Hai đến thứ Sáu`.replace(/\n/g, "
"), - }, - }, - - "ru-RU": { - title: "Русский", - thisIsAUserScript: "Пользовательский скрипт", - undefinedPrompt: "Неопределённый промпт", - quickfix: "Исправить проблему {0}", - addEslintDisableNextLine: "Добавить комментарий eslint-disable-next-line", - addEslintDisable: "Добавить комментарий eslint-disable", - declareGlobal: "Объявить '{0}' как глобальную переменную (/* global */)", - removeConnectWildcard: "Удалить wildcard @connect: {0}", - replaceMatchTldWildcardWithInclude: "Заменить TLD wildcard @match на @include {0}", - replaceIncludeWithMatch: "Заменить @include на @match {0}", - grantConflict: "@grant none нельзя использовать вместе с GM API. Удалите none или все GM API.", - grantValuePrompts: grantValuePromptsRuRU, - prompt: { - name: "Имя скрипта", - namespace: "Пространство имён скрипта", - copyright: "Информация об авторских правах скрипта", - license: "Лицензия с открытым исходным кодом", - version: "Версия скрипта", - description: "Описание скрипта", - icon: "Иконка скрипта", - iconURL: "Иконка скрипта", - defaulticon: "Иконка скрипта", - icon64: "Иконка скрипта 64x64", - icon64URL: "Иконка скрипта 64x64", - grant: "Запрашиваемые специальные права доступа к API", - author: "Автор скрипта", - "run-at": - "Момент запуска скрипта
`document-start`: внедрить как можно раньше после совпадения URL
`document-end`: внедрить после загрузки DOM (изображения и др. могут ещё загружаться)
`document-idle`: внедрить после полной загрузки содержимого
`document-body`: внедрить только если на странице есть элемент body", - "run-in": "Контекст, в который внедряется скрипт", - homepage: "Домашняя страница скрипта", - homepageURL: "Домашняя страница скрипта", - website: "Домашняя страница скрипта", - background: "Фоновый скрипт", - include: "Страницы, на которых скрипт выполняется (совпадение URL)", - match: "Страницы, на которых скрипт выполняется (совпадение URL)", - exclude: "Страницы, на которых скрипт НЕ выполняется (совпадение URL)", - connect: "Сайты, к которым скрипт может обращаться", - resource: "Подключаемые ресурсные файлы", - require: "Подключаемые внешние JS-файлы", - "require-css": "Подключаемые внешние CSS-файлы", - noframes: "Не запускать скрипт внутри ``", - compatible: "Информация о совместимости, отображаемая на GreasyFork", - "inject-into": - "Контекст внедрения скрипта
`content`: внедрить в контекст content
`page`: внедрить в контекст страницы (по умолчанию)
Примечание: SC не поддерживает `inject-into: auto`, когда контекст выбирается по CSP.", - "early-start": - "Используется совместно с `run-at: document-start`. `early-start` позволяет выполнять скрипт раньше загрузки страницы, но может ухудшать производительность и ограничивать некоторые GM API. (Только в SC)", - unwrap: - "Позволяет пользовательскому скрипту обходить песочницу и напрямую внедряться и выполняться в нативной глобальной области видимости страницы.
Скрипт может напрямую получать доступ к реальным глобальным переменным страницы и изменять их, однако не сможет использовать привилегированные API пользовательских скриптов, такие как GM.*.
Обычно используется в сценариях, требующих глубокой интеграции с нативными скриптами страницы или при миграции с обычных скриптов страницы.", - definition: "Особенность ScriptCat: URL файла `.d.ts`, используемого для автодополнения в редакторе", - antifeature: `Связано с маркетплейсами скриптов: для нежелательных функций следует добавить это значение описания -referral-link: Этот скрипт изменяет или перенаправляет на реферальную ссылку автора -ads: Этот скрипт вставляет рекламу на посещаемые вами страницы -payment: Этот скрипт требует оплаты для нормального использования -miner: Этот скрипт содержит функции майнинга -membership: Этот скрипт требует регистрации членства для нормального использования -tracking: Этот скрипт отслеживает информацию о пользователе`.replace(/\n/g, "
"), - updateURL: "URL для проверки обновлений скрипта", - downloadURL: "URL для загрузки обновлений скрипта", - supportURL: "Страница поддержки / отчёта об ошибках", - source: "Страница с исходным кодом скрипта", - scriptUrl: "URL пользовательского скрипта, на который ссылается скрипт подписки", - storageName: - "Имя хранилища значений скрипта для совместного использования одного хранилища несколькими скриптами", - tag: "Теги скрипта, разделённые запятыми или пробелами", - cloudCat: "Отмечает, что скрипт можно экспортировать в пакет облачного скрипта CloudCat", - cloudServer: "Облачный сервис CloudCat, используемый скриптом", - exportValue: "Значения хранилища скрипта для экспорта при экспорте как облачного скрипта", - exportCookie: "Cookie для экспорта при экспорте как облачного скрипта", - crontab: `Примеры crontab для планового запуска скриптов (не для облачных скриптов) -* * * * * * Запуск каждую секунду -* * * * * Запуск каждую минуту -0 */6 * * * Запуск раз в 6 часов в 00 минут -15 */6 * * * Запуск раз в 6 часов в 15 минут -* once * * * Запуск раз в час -* * once * * Запуск раз в день -* 10 once * * Запуск раз в день между 10:00-10:59; если выполнен в 10:04, в этот день не запустится снова между 10:05-10:59 -* 1,3,5 once * * Запуск раз в день в 1:00, 3:00, 5:00; если выполнен в 1:00, в этот день не запустится в 3:00 и 5:00 -* */4 once * * Проверка и запуск раз в 4 часа; если выполнен в 4:00, в этот день не запустится в 8:00, 12:00, 16:00, 20:00, 24:00 -* 10-23 once * * Запуск раз в день между 10:00-23:59; если выполнен в 10:04, в этот день не запустится снова между 10:05-23:59 -* once 13 * * Запуск каждый час в течение 13-го числа месяца -* once(9-17) * * * Каждый день с 9 до 17 часов, запуск раз в час -0,30 once * * * Раз в час в минуту 0 или 30, первое срабатывание побеждает, второе пропускается -* * once(9-18) * * С 9 по 18 число каждого месяца, запуск раз в день -* * * * once(1-5) Раз в неделю, только с понедельника по пятницу`.replace(/\n/g, "
"), - }, - }, - - "ko-KR": { - title: "한국어", - thisIsAUserScript: "사용자 스크립트", - undefinedPrompt: "정의되지 않은 프롬프트", - quickfix: "{0} 문제 수정", - addEslintDisableNextLine: "eslint-disable-next-line 주석 추가", - addEslintDisable: "eslint-disable 주석 추가", - declareGlobal: "'{0}'을(를) 전역 변수로 선언 (/* global */)", - removeConnectWildcard: "@connect 와일드카드 제거: {0}", - replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}(으)로 교체", - replaceIncludeWithMatch: "@include를 @match {0}(으)로 교체", - grantConflict: "@grant none은 GM API와 함께 사용할 수 없습니다. none 또는 모든 GM API를 제거하세요.", - grantValuePrompts: grantValuePromptsKoKR, - prompt: { - name: "스크립트 이름", - namespace: "스크립트 네임스페이스", - copyright: "스크립트의 저작권 정보", - license: "스크립트의 오픈소스 라이선스", - version: "스크립트 버전", - description: "스크립트 설명", - icon: "스크립트 아이콘", - iconURL: "스크립트 아이콘", - defaulticon: "스크립트 아이콘", - icon64: "64x64 크기의 스크립트 아이콘", - icon64URL: "64x64 크기의 스크립트 아이콘", - grant: "스크립트가 요청하는 특수 API 권한", - author: "스크립트 작성자", - "run-at": - "스크립트 실행 시점
`document-start`: URL이 일치한 직후 가능한 한 빨리 스크립트를 주입
`document-end`: DOM 로딩이 끝난 후 주입 (이미지 등은 아직 로딩 중일 수 있음)
`document-idle`: 모든 콘텐츠 로딩이 끝난 후 주입
`document-body`: body 요소가 존재할 때만 주입", - "run-in": "스크립트가 주입되는 환경", - homepage: "스크립트 홈페이지", - homepageURL: "스크립트 홈페이지", - website: "스크립트 홈페이지", - background: "백그라운드 스크립트", - include: "스크립트가 실행되는 URL 패턴", - match: "스크립트가 실행되는 URL 패턴", - exclude: "스크립트가 실행되지 않는 URL 패턴", - connect: "스크립트가 접근할 수 있는 사이트", - resource: "가져올 리소스 파일", - require: "가져올 외부 JS 파일", - "require-css": "가져올 외부 CSS 파일", - noframes: "스크립트를 `` 내부에서 실행하지 않음", - compatible: "GreasyFork에 표시되는 호환성 정보", - "inject-into": - "스크립트 주입 환경
`content`: content 환경에 주입
`page`: 페이지 환경에 주입 (기본값)
참고: SC는 CSP를 기준으로 컨텍스트를 자동 선택하는 `inject-into: auto`를 지원하지 않습니다.", - "early-start": - "`run-at: document-start`와 함께 사용합니다. `early-start`를 사용하면 페이지보다 먼저 스크립트를 로드하고 실행할 수 있지만, 성능 문제와 GM API 사용 제한이 있을 수 있습니다. (SC 전용)", - unwrap: - "유저스크립트를 샌드박스로 감싸지 않고 페이지의 네이티브 전역 스코프에 직접 주입하여 실행합니다.
스크립트는 페이지의 실제 전역 변수에 직접 접근하고 수정할 수 있지만, GM.* 등 유저스크립트 전용 API는 사용할 수 없습니다.
페이지의 네이티브 스크립트와 깊이 상호작용해야 하거나 일반 페이지 스크립트에서 마이그레이션하는 경우에 주로 사용됩니다.", - definition: "ScriptCat 전용 기능: 에디터 자동완성에 사용되는 `.d.ts` 파일의 참조 URL", - antifeature: `스크립트 마켓과 관련된 항목으로, 환영받지 못하는 기능에는 이 설명 값을 추가해야 합니다 -referral-link: 이 스크립트는 작성자의 리퍼럴(추천) 링크로 수정하거나 리디렉션합니다 -ads: 이 스크립트는 방문한 페이지에 광고를 삽입합니다 -payment: 이 스크립트는 정상적으로 사용하려면 결제가 필요합니다 -miner: 이 스크립트는 사용자 자원을 이용하지만 사용자에게 이익이 거의 또는 전혀 없는 채굴 행위를 합니다 -membership: 이 스크립트는 정상적으로 사용하려면 회원 가입이 필요합니다 -tracking: 이 스크립트는 사용자 정보를 추적합니다`.replace(/\n/g, "
"), - updateURL: "스크립트 업데이트 확인용 URL", - downloadURL: "스크립트 업데이트 다운로드 URL", - supportURL: "지원 사이트 / 버그 제보 페이지", - source: "스크립트 소스 코드 페이지", - scriptUrl: "구독 스크립트가 참조하는 유저스크립트 URL", - storageName: "여러 스크립트가 하나의 저장 공간을 공유하도록 하는 스크립트 값 저장소 이름", - tag: "스크립트 태그, 쉼표 또는 공백으로 구분", - cloudCat: "스크립트를 CloudCat 클라우드 스크립트 패키지로 내보낼 수 있도록 표시", - cloudServer: "스크립트가 사용하는 CloudCat 클라우드 서비스", - exportValue: "클라우드 스크립트로 내보낼 때 함께 내보낼 스크립트 저장 값", - exportCookie: "클라우드 스크립트로 내보낼 때 함께 내보낼 쿠키", - crontab: `예약 스크립트 crontab 예시 (클라우드 스크립트에는 적용되지 않음) -* * * * * * 매초 실행 -* * * * * 매분 실행 -0 */6 * * * 6시간마다 0분에 한 번 실행 -15 */6 * * * 6시간마다 15분에 한 번 실행 -* once * * * 매시간 한 번 실행 -* * once * * 매일 한 번 실행 -* 10 once * * 매일 10:00-10:59 사이에 한 번 실행. 10:04에 실행되었다면 그날 10:05-10:59에는 다시 실행되지 않음 -* 1,3,5 once * * 매일 1시, 3시, 5시에 한 번 실행. 1시에 실행되었다면 그날 3시, 5시에는 다시 실행되지 않음 -* */4 once * * 4시간마다 확인 후 한 번 실행. 4시에 실행되었다면 그날 8시, 12시, 16시, 20시, 24시에는 다시 실행되지 않음 -* 10-23 once * * 매일 10:00-23:59 사이에 한 번 실행. 10:04에 실행되었다면 그날 10:05-23:59에는 다시 실행되지 않음 -* once 13 * * 매월 13일 매시간 한 번 실행 -* once(9-17) * * * 매일 9시부터 17시 사이, 매시간 한 번 실행 -0,30 once * * * 매시간 0분 또는 30분 중 먼저 도달한 시점에 한 번 실행, 나머지는 건너뜀 -* * once(9-18) * * 매월 9일부터 18일까지, 매일 한 번 실행 -* * * * once(1-5) 매주 한 번 실행, 월요일부터 금요일 사이에만`.replace(/\n/g, "
"), - }, - }, -} as const; - -export type EditorLangCode = keyof typeof editorLangs; -export type EditorLangEntry = (typeof editorLangs)["zh-CN"]; - -export function asEditorLangEntry(key: T) { - return editorLangs[key] as EditorLangEntry; -} diff --git a/src/pkg/utils/monaco-editor/langs/ko-kR.ts b/src/pkg/utils/monaco-editor/langs/ko-kR.ts new file mode 100644 index 000000000..815b2eeed --- /dev/null +++ b/src/pkg/utils/monaco-editor/langs/ko-kR.ts @@ -0,0 +1,128 @@ +const grantValuePrompts = { + none: "특별한 GM API 권한을 요청하지 않으며, 스크립트는 일반 페이지 스크립트에 가깝게 동작합니다.", + unsafeWindow: "페이지 자체의 window 객체에 접근하여 네이티브 페이지 스크립트와 상호작용합니다.", + GM_getValue: "스크립트의 영구 저장소에서 값 하나를 읽습니다.", + GM_getValues: "스크립트의 영구 저장소에서 여러 값을 읽습니다.", + GM_setValue: "스크립트의 영구 저장소에 값 하나를 씁니다.", + GM_setValues: "스크립트의 영구 저장소에 여러 값을 씁니다.", + GM_deleteValue: "스크립트의 영구 저장소에서 값 하나를 삭제합니다.", + GM_deleteValues: "스크립트의 영구 저장소에서 여러 값을 삭제합니다.", + GM_listValues: "스크립트의 영구 저장소에 있는 모든 키를 나열합니다.", + GM_addValueChangeListener: "스크립트 저장 값의 변경을 감지합니다.", + GM_removeValueChangeListener: "스크립트 저장 값 변경 리스너를 제거합니다.", + GM_xmlhttpRequest: "교차 출처(cross-origin) 네트워크 요청을 보냅니다. 대상 호스트는 보통 @connect로 허용해야 합니다.", + GM_download: + "파일을 다운로드합니다. URL과 파일명을 전달하거나 url, name, headers, saveAs 등의 필드를 가진 상세 객체를 전달할 수 있으며, 중단(abort) 가능한 핸들을 반환합니다.", + GM_openInTab: "새 탭을 열며, 전면/백그라운드로 열기 등의 옵션을 사용할 수 있습니다.", + GM_closeInTab: "스크립트가 열었거나 관리하는 탭을 닫습니다.", + GM_getTab: "현재 탭과 연결된 임시 데이터를 읽습니다.", + GM_saveTab: "현재 탭과 연결된 임시 데이터를 저장합니다.", + GM_getTabs: "스크립트가 저장한 모든 탭의 임시 데이터를 읽습니다.", + GM_notification: "브라우저 알림을 표시하고 클릭, 닫기 등의 이벤트를 처리합니다.", + GM_closeNotification: "지정한 스크립트 알림을 닫습니다.", + GM_updateNotification: "지정한 스크립트 알림을 업데이트합니다.", + GM_setClipboard: "시스템 클립보드에 씁니다.", + GM_registerMenuCommand: "스크립트 메뉴 명령을 등록합니다.", + GM_unregisterMenuCommand: "스크립트 메뉴 명령의 등록을 해제합니다.", + CAT_registerMenuInput: "ScriptCat API: 입력 필드가 있는 스크립트 메뉴 명령을 등록합니다.", + CAT_unregisterMenuInput: "ScriptCat API: 입력 필드가 있는 스크립트 메뉴 명령의 등록을 해제합니다.", + GM_addStyle: "페이지에 CSS를 삽입합니다.", + GM_addElement: "페이지에 요소를 생성하여 삽입합니다.", + GM_getResourceText: "@resource로 선언된 리소스의 텍스트 내용을 읽습니다.", + GM_getResourceURL: "@resource로 선언된 리소스의 URL을 가져옵니다.", + GM_cookie: "쿠키를 읽거나 쓰거나 삭제하기 위해 Cookie API에 접근합니다.", + CAT_fetchBlob: "ScriptCat 내부 API: 확장 프로그램 측에서 접근 가능한 리소스를 읽어 Blob으로 반환합니다.", + CAT_fileStorage: "ScriptCat API: 스크립트 파일 저장소에 접근합니다.", + CAT_userConfig: "ScriptCat API: 스크립트 사용자 설정에 접근합니다.", + CAT_scriptLoaded: "ScriptCat API: @early-start 시나리오에서 스크립트가 완전히 로드될 때까지 기다립니다.", + "window.close": "스크립트가 window.close()를 호출할 수 있도록 허용합니다.", + "window.focus": "스크립트가 window.focus()를 호출할 수 있도록 허용합니다.", + "window.onurlchange": "스크립트가 URL 변경 이벤트를 감지할 수 있도록 허용합니다.", +} as const; + +export default { + title: "한국어", + thisIsAUserScript: "사용자 스크립트", + undefinedPrompt: "정의되지 않은 프롬프트", + quickfix: "{0} 문제 수정", + addEslintDisableNextLine: "eslint-disable-next-line 주석 추가", + addEslintDisable: "eslint-disable 주석 추가", + declareGlobal: "'{0}'을(를) 전역 변수로 선언 (/* global */)", + removeConnectWildcard: "@connect 와일드카드 제거: {0}", + replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}(으)로 교체", + replaceIncludeWithMatch: "@include를 @match {0}(으)로 교체", + grantConflict: "@grant none은 GM API와 함께 사용할 수 없습니다. none 또는 모든 GM API를 제거하세요.", + grantValuePrompts, + prompt: { + name: "스크립트 이름", + namespace: "스크립트 네임스페이스", + copyright: "스크립트의 저작권 정보", + license: "스크립트의 오픈소스 라이선스", + version: "스크립트 버전", + description: "스크립트 설명", + icon: "스크립트 아이콘", + iconURL: "스크립트 아이콘", + defaulticon: "스크립트 아이콘", + icon64: "64x64 크기의 스크립트 아이콘", + icon64URL: "64x64 크기의 스크립트 아이콘", + grant: "스크립트가 요청하는 특수 API 권한", + author: "스크립트 작성자", + "run-at": + "스크립트 실행 시점
`document-start`: URL이 일치한 직후 가능한 한 빨리 스크립트를 주입
`document-end`: DOM 로딩이 끝난 후 주입 (이미지 등은 아직 로딩 중일 수 있음)
`document-idle`: 모든 콘텐츠 로딩이 끝난 후 주입
`document-body`: body 요소가 존재할 때만 주입", + "run-in": "스크립트가 주입되는 환경", + homepage: "스크립트 홈페이지", + homepageURL: "스크립트 홈페이지", + website: "스크립트 홈페이지", + background: "백그라운드 스크립트", + include: "스크립트가 실행되는 URL 패턴", + match: "스크립트가 실행되는 URL 패턴", + exclude: "스크립트가 실행되지 않는 URL 패턴", + connect: "스크립트가 접근할 수 있는 사이트", + resource: "가져올 리소스 파일", + require: "가져올 외부 JS 파일", + "require-css": "가져올 외부 CSS 파일", + noframes: "스크립트를 `` 내부에서 실행하지 않음", + compatible: "GreasyFork에 표시되는 호환성 정보", + "inject-into": + "스크립트 주입 환경
`content`: content 환경에 주입
`page`: 페이지 환경에 주입 (기본값)
참고: SC는 CSP를 기준으로 컨텍스트를 자동 선택하는 `inject-into: auto`를 지원하지 않습니다.", + "early-start": + "`run-at: document-start`와 함께 사용합니다. `early-start`를 사용하면 페이지보다 먼저 스크립트를 로드하고 실행할 수 있지만, 성능 문제와 GM API 사용 제한이 있을 수 있습니다. (SC 전용)", + unwrap: + "유저스크립트를 샌드박스로 감싸지 않고 페이지의 네이티브 전역 스코프에 직접 주입하여 실행합니다.
스크립트는 페이지의 실제 전역 변수에 직접 접근하고 수정할 수 있지만, GM.* 등 유저스크립트 전용 API는 사용할 수 없습니다.
페이지의 네이티브 스크립트와 깊이 상호작용해야 하거나 일반 페이지 스크립트에서 마이그레이션하는 경우에 주로 사용됩니다.", + definition: "ScriptCat 전용 기능: 에디터 자동완성에 사용되는 `.d.ts` 파일의 참조 URL", + antifeature: `스크립트 마켓과 관련된 항목으로, 환영받지 못하는 기능에는 이 설명 값을 추가해야 합니다 +referral-link: 이 스크립트는 작성자의 리퍼럴(추천) 링크로 수정하거나 리디렉션합니다 +ads: 이 스크립트는 방문한 페이지에 광고를 삽입합니다 +payment: 이 스크립트는 정상적으로 사용하려면 결제가 필요합니다 +miner: 이 스크립트는 사용자 자원을 이용하지만 사용자에게 이익이 거의 또는 전혀 없는 채굴 행위를 합니다 +membership: 이 스크립트는 정상적으로 사용하려면 회원 가입이 필요합니다 +tracking: 이 스크립트는 사용자 정보를 추적합니다`.replace(/\n/g, "
"), + updateURL: "스크립트 업데이트 확인용 URL", + downloadURL: "스크립트 업데이트 다운로드 URL", + supportURL: "지원 사이트 / 버그 제보 페이지", + source: "스크립트 소스 코드 페이지", + scriptUrl: "구독 스크립트가 참조하는 유저스크립트 URL", + storageName: "여러 스크립트가 하나의 저장 공간을 공유하도록 하는 스크립트 값 저장소 이름", + tag: "스크립트 태그, 쉼표 또는 공백으로 구분", + cloudCat: "스크립트를 CloudCat 클라우드 스크립트 패키지로 내보낼 수 있도록 표시", + cloudServer: "스크립트가 사용하는 CloudCat 클라우드 서비스", + exportValue: "클라우드 스크립트로 내보낼 때 함께 내보낼 스크립트 저장 값", + exportCookie: "클라우드 스크립트로 내보낼 때 함께 내보낼 쿠키", + crontab: `예약 스크립트 crontab 예시 (클라우드 스크립트에는 적용되지 않음) +* * * * * * 매초 실행 +* * * * * 매분 실행 +0 */6 * * * 6시간마다 0분에 한 번 실행 +15 */6 * * * 6시간마다 15분에 한 번 실행 +* once * * * 매시간 한 번 실행 +* * once * * 매일 한 번 실행 +* 10 once * * 매일 10:00-10:59 사이에 한 번 실행. 10:04에 실행되었다면 그날 10:05-10:59에는 다시 실행되지 않음 +* 1,3,5 once * * 매일 1시, 3시, 5시에 한 번 실행. 1시에 실행되었다면 그날 3시, 5시에는 다시 실행되지 않음 +* */4 once * * 4시간마다 확인 후 한 번 실행. 4시에 실행되었다면 그날 8시, 12시, 16시, 20시, 24시에는 다시 실행되지 않음 +* 10-23 once * * 매일 10:00-23:59 사이에 한 번 실행. 10:04에 실행되었다면 그날 10:05-23:59에는 다시 실행되지 않음 +* once 13 * * 매월 13일 매시간 한 번 실행 +* once(9-17) * * * 매일 9시부터 17시 사이, 매시간 한 번 실행 +0,30 once * * * 매시간 0분 또는 30분 중 먼저 도달한 시점에 한 번 실행, 나머지는 건너뜀 +* * once(9-18) * * 매월 9일부터 18일까지, 매일 한 번 실행 +* * * * once(1-5) 매주 한 번 실행, 월요일부터 금요일 사이에만`.replace(/\n/g, "
"), + }, +} as const; From 30b8ce62841eff73d15d1c1ddf929ed040be270d Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:25:53 +0900 Subject: [PATCH 7/8] i18n(ko-KR): apply review terminology fixes, register Monaco lang pack Address the remaining recommended fixes from cyfung1031's review (authorization/source/CORS/OPFS/absolute-range/tap-vs-click/model-fetch/ tool-arguments/Skill wording/particle notation/exclude labels), register ko-KR in monaco-editor/langs/index.ts (the language pack existed but was never imported, so it had no effect), and add the ko-KR translation for cloud_sync_connection_changed which was missing after a later main merge added the key to en-US. Co-Authored-By: Claude Sonnet 5 --- src/assets/_locales/ko/messages.json | 2 +- src/locales/ko-KR/agent.json | 6 +++--- src/locales/ko-KR/common.json | 6 +++--- src/locales/ko-KR/install.json | 2 +- src/locales/ko-KR/logs.json | 2 +- src/locales/ko-KR/permission.json | 2 +- src/locales/ko-KR/script.json | 10 +++++----- src/locales/ko-KR/settings.json | 3 ++- src/pkg/utils/monaco-editor/langs/index.ts | 2 ++ src/pkg/utils/monaco-editor/langs/ko-kR.ts | 6 +++--- 10 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/assets/_locales/ko/messages.json b/src/assets/_locales/ko/messages.json index cd2b0c152..8830311a1 100644 --- a/src/assets/_locales/ko/messages.json +++ b/src/assets/_locales/ko/messages.json @@ -9,6 +9,6 @@ "message": "ScriptCat Beta" }, "scriptcat_description": { - "message": "브라우저의 모든 잠재력을 끌어내는 강력한 유저스크립트 매니저!" + "message": "브라우저의 잠재력을 최대한 활용할 수 있는 강력한 유저스크립트 관리자!" } } diff --git a/src/locales/ko-KR/agent.json b/src/locales/ko-KR/agent.json index 0d2ab8ac4..bd896e633 100644 --- a/src/locales/ko-KR/agent.json +++ b/src/locales/ko-KR/agent.json @@ -18,7 +18,7 @@ "provider_docs": "문서", "provider_count_hint": "기본 모델은 새 대화에 사용됩니다", "model_count": "모델 {{count}}개", - "model_fetch": "모델 가져오기", + "model_fetch": "모델 목록 불러오기", "model_name": "이름", "model_add": "모델 추가", "model_edit": "편집", @@ -77,7 +77,7 @@ "chat_send": "전송", "chat_stop": "중지", "chat_thinking": "생각 중", - "chat_tool_arguments": "인수", + "chat_tool_arguments": "매개변수", "chat_tool_result": "결과", "chat_no_model": "설정된 모델이 없습니다. 먼저 모델 서비스에서 모델을 추가해 주세요.", "chat_model_select": "모델 선택", @@ -120,7 +120,7 @@ "opfs_delete_confirm": "정말 삭제하시겠습니까?", "opfs_delete_success": "삭제되었습니다", "opfs_preview": "미리보기", - "opfs_subtitle": "출처별 프라이빗 파일 시스템(OPFS) · 에이전트 전용 저장소", + "opfs_subtitle": "오리진 전용 파일 시스템(OPFS) · 에이전트 전용 저장소", "opfs_refresh": "새로고침", "opfs_upload": "업로드", "opfs_actions": "작업", diff --git a/src/locales/ko-KR/common.json b/src/locales/ko-KR/common.json index 143b111f5..754291c08 100644 --- a/src/locales/ko-KR/common.json +++ b/src/locales/ko-KR/common.json @@ -26,7 +26,7 @@ "disable": "비활성화", "name": "이름", "version": "버전", - "source": "소스", + "source": "출처", "action": "작업", "export": "내보내기", "delete": "삭제", @@ -58,8 +58,8 @@ "stop": "중지", "edit": "편집", "copy": "복사", - "exclude_on": "$0 실행 복원", - "exclude_off": "$0 실행 제외", + "exclude_on": "$0에서 다시 실행", + "exclude_off": "$0에서 실행 제외", "confirm_error": "확인 실패", "import": "가져오기", "error": "오류", diff --git a/src/locales/ko-KR/install.json b/src/locales/ko-KR/install.json index 8d88e952e..eac78c3c4 100644 --- a/src/locales/ko-KR/install.json +++ b/src/locales/ko-KR/install.json @@ -103,7 +103,7 @@ "empty_title": "모든 스크립트가 최신 상태입니다", "empty_desc": "{{count}}개 스크립트 확인 · 업데이트 없음", "recheck": "다시 확인", - "tap_to_expand": "탭하여 펼치기", + "tap_to_expand": "클릭하여 펼치기", "similarity": "유사도", "new_connects": "새 @connect", "toast_found": "업데이트 가능한 스크립트 {{count}}개를 찾았습니다", diff --git a/src/locales/ko-KR/logs.json b/src/locales/ko-KR/logs.json index 618c49de8..dc771e31a 100644 --- a/src/locales/ko-KR/logs.json +++ b/src/locales/ko-KR/logs.json @@ -38,7 +38,7 @@ "interval_1m": "1분", "interval_5m": "5분", "quick_range": "빠른 범위", - "absolute_range": "절대 범위", + "absolute_range": "절대 시간 범위", "from_start": "시작", "to_end": "종료", "apply_range": "범위 적용", diff --git a/src/locales/ko-KR/permission.json b/src/locales/ko-KR/permission.json index 8fc433bbf..059f249d9 100644 --- a/src/locales/ko-KR/permission.json +++ b/src/locales/ko-KR/permission.json @@ -34,6 +34,6 @@ "confirm_expired_title": "권한 요청이 만료되었습니다", "confirm_expired_desc": "이 권한 요청은 시간이 초과되었거나 이미 처리되었습니다. 페이지로 돌아가 다시 시도해 주세요.", "auto_close_in": "{{second}}초 후 창이 자동으로 닫힙니다", - "permission_cors": "교차 도메인(CORS)", + "permission_cors": "교차 출처 접근(CORS)", "permission_cookie": "쿠키 관리" } diff --git a/src/locales/ko-KR/script.json b/src/locales/ko-KR/script.json index b8b3f9f35..12c1aa58c 100644 --- a/src/locales/ko-KR/script.json +++ b/src/locales/ko-KR/script.json @@ -18,7 +18,7 @@ "source_script_link": "스크립트 링크", "confirm_delete_scripts_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "confirm_delete_scripts_trash_content": "선택한 스크립트 {{count}}개를 삭제하시겠습니까? 휴지통으로 이동되며 언제든 복원할 수 있습니다.", - "confirm_delete_script_content": "스크립트 \"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "confirm_delete_script_content": "\"{{name}}\" 스크립트를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "confirm_delete_script_trash_content": "\"{{name}}\" 스크립트를 삭제하시겠습니까? 휴지통으로 이동되며 언제든 복원할 수 있습니다.", "delete_failed": "삭제에 실패했습니다", "checking_for_updates": "업데이트 확인 중...", @@ -68,14 +68,14 @@ "import_group": "가져오기", "import_local_script": "로컬 스크립트 가져오기", "link_import": "URL에서 가져오기", - "import_skill": "Skill 가져오기", + "import_skill": "스킬 가져오기", "link_import_desc": "스크립트 / 구독 URL을 한 줄에 하나씩 붙여넣으세요", "link_import_placeholder": "https://example.com/script.user.js", - "link_import_hint": "유저스크립트 / 구독 / Skill URL을 지원합니다", + "link_import_hint": "유저스크립트 / 구독 / 스킬 URL을 지원합니다", "not_a_valid_script": "유효한 유저스크립트 또는 SkillScript가 아닙니다", "import_done": "가져오기 완료: 성공 {{success}}개 · 실패 {{fail}}개", - "drop_to_install": "스크립트 또는 Skill을 여기에 드롭하여 설치", - "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip Skill 패키지를 드롭하세요", + "drop_to_install": "스크립트 또는 스킬을 여기에 드롭하여 설치", + "drop_to_install_hint": ".js 유저스크립트 / 구독 · .zip 스킬 패키지를 드롭하세요", "trash_tab": "휴지통", "tab_installed": "설치됨", "trash_empty_title": "휴지통이 비어 있습니다", diff --git a/src/locales/ko-KR/settings.json b/src/locales/ko-KR/settings.json index f858888f2..7aacb9679 100644 --- a/src/locales/ko-KR/settings.json +++ b/src/locales/ko-KR/settings.json @@ -80,7 +80,7 @@ "check_script_code_quality": "스크립트 코드 품질과 오류를 검사", "script_run_env": { "title": "실행 환경", - "all": "전체", + "all": "모든 탭", "normal-tabs": "일반 탭", "incognito-tabs": "시크릿 탭" }, @@ -116,6 +116,7 @@ "favicon_service_local": "로컬에서 가져오기", "cloud_sync_account_verification": "클라우드 동기화 계정 확인 중...", "cloud_sync_verification_failed": "클라우드 동기화 계정 확인에 실패했습니다", + "cloud_sync_connection_changed": "동기화 연결 설정이 변경되어 동기화가 일시 중지되었습니다. 설정을 확인한 후 다시 활성화해 주세요.", "trash_retention": "휴지통 보관 기간", "trash_retention_desc": "삭제한 스크립트를 휴지통에 보관한 뒤 자동으로 영구 삭제하기까지의 기간", "trash_retention_7": "7일", diff --git a/src/pkg/utils/monaco-editor/langs/index.ts b/src/pkg/utils/monaco-editor/langs/index.ts index d4da6ec36..6b37da367 100644 --- a/src/pkg/utils/monaco-editor/langs/index.ts +++ b/src/pkg/utils/monaco-editor/langs/index.ts @@ -7,6 +7,7 @@ import viVN from "./vi-VN"; import ruRU from "./ru-RU"; import trTR from "./tr-TR"; import ptBR from "./pt-BR"; +import koKR from "./ko-kR"; export const editorLangs = { "zh-CN": zhCN, @@ -18,6 +19,7 @@ export const editorLangs = { "ru-RU": ruRU, "tr-TR": trTR, "pt-BR": ptBR, + "ko-KR": koKR, } as const; export type EditorLangCode = keyof typeof editorLangs; diff --git a/src/pkg/utils/monaco-editor/langs/ko-kR.ts b/src/pkg/utils/monaco-editor/langs/ko-kR.ts index 815b2eeed..7d74ef8a5 100644 --- a/src/pkg/utils/monaco-editor/langs/ko-kR.ts +++ b/src/pkg/utils/monaco-editor/langs/ko-kR.ts @@ -42,15 +42,15 @@ const grantValuePrompts = { export default { title: "한국어", - thisIsAUserScript: "사용자 스크립트", + thisIsAUserScript: "유저스크립트", undefinedPrompt: "정의되지 않은 프롬프트", quickfix: "{0} 문제 수정", addEslintDisableNextLine: "eslint-disable-next-line 주석 추가", addEslintDisable: "eslint-disable 주석 추가", declareGlobal: "'{0}'을(를) 전역 변수로 선언 (/* global */)", removeConnectWildcard: "@connect 와일드카드 제거: {0}", - replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}(으)로 교체", - replaceIncludeWithMatch: "@include를 @match {0}(으)로 교체", + replaceMatchTldWildcardWithInclude: "@match 최상위 도메인 와일드카드를 @include {0}으로 바꾸기", + replaceIncludeWithMatch: "@include를 @match {0}으로 바꾸기", grantConflict: "@grant none은 GM API와 함께 사용할 수 없습니다. none 또는 모든 GM API를 제거하세요.", grantValuePrompts, prompt: { From f15810938109145c1a16f38bcb8c8a1ad076d8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=E4=B9=8B?= Date: Mon, 20 Jul 2026 16:38:22 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=F0=9F=8E=A8=20=E8=A7=84=E8=8C=83=E9=9F=A9?= =?UTF-8?q?=E8=AF=AD=E6=9C=AC=E5=9C=B0=E5=8C=96=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 4 ++-- src/pkg/utils/monaco-editor/langs/index.ts | 2 +- src/pkg/utils/monaco-editor/langs/{ko-kR.ts => ko-KR.ts} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename src/pkg/utils/monaco-editor/langs/{ko-kR.ts => ko-KR.ts} (100%) diff --git a/docs/README.md b/docs/README.md index ea3e0190d..f44bf3e58 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,7 +20,7 @@ | 文档 | 说明 | | --- | --- | | [`translation.md`](./translation.md) | 翻译 / 本地化指南(单一信息源):术语与修改规则、工作流、提取翻译提示词。**翻译前先读。** | -| [`translation.md` 术语规范表](./translation.md#各语言术语规范--per-locale-terminology) | 9 个语言地区的术语与界面文案规范 `terminology-.md`(en-US / zh-CN / zh-TW / ja-JP / ru-RU / de-DE / vi-VN / tr-TR / pt-BR)。 | +| [`translation.md` 术语规范表](./translation.md#各语言术语规范--per-locale-terminology) | 10 个语言地区的术语与界面文案规范 `terminology-.md`(en-US / zh-CN / zh-TW / ja-JP / ru-RU / de-DE / vi-VN / tr-TR / pt-BR / ko-KR)。 | ## 贡献指南 / Contributing @@ -38,4 +38,4 @@ | [`README_zh-CN.md`](./README_zh-CN.md) | 简体中文 | | [`README_zh-TW.md`](./README_zh-TW.md) | 繁體中文 | | [`README_ja.md`](./README_ja.md) | 日本語 | -| [`README_RU.md`](./README_RU.md) | Русский | \ No newline at end of file +| [`README_RU.md`](./README_RU.md) | Русский | diff --git a/src/pkg/utils/monaco-editor/langs/index.ts b/src/pkg/utils/monaco-editor/langs/index.ts index 6b37da367..e2abb8011 100644 --- a/src/pkg/utils/monaco-editor/langs/index.ts +++ b/src/pkg/utils/monaco-editor/langs/index.ts @@ -7,7 +7,7 @@ import viVN from "./vi-VN"; import ruRU from "./ru-RU"; import trTR from "./tr-TR"; import ptBR from "./pt-BR"; -import koKR from "./ko-kR"; +import koKR from "./ko-KR"; export const editorLangs = { "zh-CN": zhCN, diff --git a/src/pkg/utils/monaco-editor/langs/ko-kR.ts b/src/pkg/utils/monaco-editor/langs/ko-KR.ts similarity index 100% rename from src/pkg/utils/monaco-editor/langs/ko-kR.ts rename to src/pkg/utils/monaco-editor/langs/ko-KR.ts