HelpDetailWindow.xaml.cs (+47줄): - 런처 탐색 카테고리 신설: 인라인 파일 탐색기, F3 QuickLook, 검색 히스토리, 고급 필터, 단위 변환 5항목 추가 HelpDetailWindow.Shortcuts.cs (+12줄): - → 단축키: 파일 탐색기 폴더 진입 기능 추가 설명 - ← 단축키 신규: 파일 탐색기 상위 폴더 이동 - F3 단축키 신규: QuickLook 미리보기 토글 L10n.cs (+13줄): - Phase L4 신기능 홍보 팁 12종 추가 (파일탐색기, F3, 검색히스토리, 필터문법, 단위변환) 개발자가이드.htm: - 단축키 테이블에 F3 QuickLook 행 추가 - = 예약어에 단위 변환 자동 제안·날짜 계산 예시 추가 - 팁 섹션에 4개 박스 추가: 인라인 파일탐색기, 고급 검색 필터, 검색 히스토리, F3 QuickLook - 버전 이력 v1.7.3 추가 (L4 전 기능 기록) 사용가이드.htm: 개발자 가이드에서 버전 이력 제거 후 재생성 가이드 암호화: guide_dev.enc, guide_user.enc 재암호화 완료 빌드: 경고 0, 오류 0
328 lines
20 KiB
C#
328 lines
20 KiB
C#
namespace AxCopilot.Services;
|
||
|
||
/// <summary>
|
||
/// 간단한 다국어 문자열 서비스.
|
||
/// 설정의 Language 값(ko/en/ja/zh/vi)에 따라 UI 문자열을 반환합니다.
|
||
/// </summary>
|
||
public static class L10n
|
||
{
|
||
private static string _lang = "ko";
|
||
|
||
public static void SetLanguage(string lang) =>
|
||
_lang = lang?.ToLowerInvariant() ?? "ko";
|
||
|
||
public static string Get(string key) =>
|
||
(_lang switch
|
||
{
|
||
"en" => _en,
|
||
"ja" => _ja,
|
||
"zh" => _zh,
|
||
"vi" => _vi,
|
||
_ => _ko
|
||
}).TryGetValue(key, out var v) ? v : _ko.GetValueOrDefault(key, key);
|
||
|
||
/// <summary>런처 입력창에 표시할 랜덤 안내 문구를 반환합니다.</summary>
|
||
public static string GetRandomPlaceholder() =>
|
||
(_lang switch
|
||
{
|
||
"en" => _enPlaceholders,
|
||
"ja" => _jaPlaceholders,
|
||
"zh" => _zhPlaceholders,
|
||
"vi" => _viPlaceholders,
|
||
_ => _koPlaceholders
|
||
}) is { } list ? list[Random.Shared.Next(list.Length)] : Get("placeholder");
|
||
|
||
// ─── 한국어 랜덤 플레이스홀더 (100종) ───────────────────────────────────────
|
||
private static readonly string[] _koPlaceholders =
|
||
[
|
||
// ── 기본 인사 (15종) ──
|
||
"무엇을 도와드릴까요?",
|
||
"오늘도 좋은 하루 되세요. 무엇을 찾으시나요?",
|
||
"안녕하세요! 어떤 작업을 도와드릴까요?",
|
||
"필요하신 것이 있으시면 입력해 주세요.",
|
||
"편하게 검색해 보세요.",
|
||
"명령어를 입력하시면 바로 실행해 드리겠습니다.",
|
||
"무엇이든 빠르게 찾아드리겠습니다.",
|
||
"오늘도 효율적인 하루를 응원합니다.",
|
||
"언제든 도움이 필요하시면 말씀해 주세요.",
|
||
"어떤 파일이나 앱이든 바로 열어드릴 수 있습니다.",
|
||
"찾으시는 것을 입력해 보세요.",
|
||
"앱, 파일, 명령어 모두 여기서 시작됩니다.",
|
||
"빠른 실행을 도와드리겠습니다.",
|
||
"키보드 하나로 모든 업무를 시작해 보세요.",
|
||
"입력 한 번이면 원하는 앱이 바로 열립니다.",
|
||
// ── 계산기 (5종) ──
|
||
"= 1920*1080 으로 수식 계산을 해보세요.",
|
||
"= 100/3 처럼 입력하면 바로 계산됩니다.",
|
||
"= sqrt(144) 같은 함수도 지원합니다.",
|
||
"= 2^10 으로 거듭제곱도 계산할 수 있습니다.",
|
||
"= (100+200)*1.1 괄호·소수점 모두 지원됩니다.",
|
||
// ── 클립보드 (6종) ──
|
||
"# 을 입력하면 클립보드 히스토리를 열 수 있습니다.",
|
||
"Ctrl+H로 클립보드 히스토리를 바로 열어보세요.",
|
||
"Shift+↑↓로 여러 클립보드 항목을 한 번에 합칠 수 있습니다.",
|
||
"# 회의 로 클립보드에서 '회의' 관련 항목만 필터링됩니다.",
|
||
"클립보드 히스토리는 DPAPI로 안전하게 암호화됩니다.",
|
||
"$ upper 로 클립보드 텍스트를 대문자로 변환할 수 있습니다.",
|
||
// ── 웹 검색 (5종) ──
|
||
"? 키워드 로 웹 검색을 즉시 실행할 수 있습니다.",
|
||
"?n 키워드 로 네이버 검색도 가능합니다.",
|
||
"? WPF DataBinding 처럼 바로 검색할 수 있습니다.",
|
||
"검색 엔진은 설정에서 변경할 수 있습니다.",
|
||
"? 환율 달러 같은 검색도 한 번에 가능합니다.",
|
||
// ── 시스템 정보 (8종) ──
|
||
"info cpu 로 CPU 사용률을 확인해 보세요.",
|
||
"* ip 로 내 IP 주소를 빠르게 확인할 수 있습니다.",
|
||
"info disk 에서 드라이브를 Enter하면 탐색기가 열립니다.",
|
||
"info ram 을 Enter하면 실시간 리소스 모니터를 열 수 있습니다.",
|
||
"info battery 로 배터리 상태를 확인할 수 있습니다.",
|
||
"info volume 으로 현재 볼륨 레벨을 볼 수 있습니다.",
|
||
"info uptime 으로 PC 가동 시간을 확인할 수 있습니다.",
|
||
"info 를 입력하면 시스템 전체 상태를 한눈에 볼 수 있습니다.",
|
||
// ── 즐겨찾기 (5종) ──
|
||
"Ctrl+P로 자주 쓰는 파일을 즐겨찾기에 추가해 보세요.",
|
||
"fav 을 입력하면 즐겨찾기 목록을 볼 수 있습니다.",
|
||
"Ctrl+B를 누르면 즐겨찾기 목록을 바로 토글할 수 있습니다.",
|
||
"자주 여는 폴더를 즐겨찾기에 등록하면 한 번에 열립니다.",
|
||
"즐겨찾기에 등록된 항목은 Ctrl+P로 간편하게 해제됩니다.",
|
||
// ── 스니펫 (5종) ──
|
||
"; 키워드 로 미리 등록한 텍스트를 즉시 확장할 수 있습니다.",
|
||
"스니펫은 런처 없이 어디서든 자동 확장됩니다.",
|
||
"자주 쓰는 이메일 서명을 스니펫으로 등록해 보세요.",
|
||
"스니펫에 {{date}} 변수를 넣으면 오늘 날짜가 자동 삽입됩니다.",
|
||
"설정 › 스니펫에서 키워드·내용을 자유롭게 관리하세요.",
|
||
// ── 워크스페이스 (4종) ──
|
||
"~save 이름 으로 현재 창 배치를 저장해 보세요.",
|
||
"~이름 으로 저장된 창 배치를 한 번에 복원할 수 있습니다.",
|
||
"여러 모니터 창 배치를 워크스페이스로 관리해 보세요.",
|
||
"~list 로 저장된 워크스페이스 목록을 확인할 수 있습니다.",
|
||
// ── 색상 (4종) ──
|
||
"color #FF5733 으로 색상 코드를 변환할 수 있습니다.",
|
||
"pick 을 입력하면 화면에서 색상을 추출할 수 있습니다.",
|
||
"color rgb(75,94,252) 처럼 RGB 형식도 지원됩니다.",
|
||
"추출한 색상은 HEX·RGB·HSL로 자동 변환됩니다.",
|
||
// ── 날짜 계산 (4종) ──
|
||
"date +30 으로 30일 후 날짜를 계산할 수 있습니다.",
|
||
"date -7 로 일주일 전 날짜도 바로 확인됩니다.",
|
||
"date 로 오늘 날짜와 요일을 바로 확인할 수 있습니다.",
|
||
"date +365 로 1년 후 날짜도 계산할 수 있습니다.",
|
||
// ── 파일 액션 (6종) ──
|
||
"파일을 선택하고 → 키를 누르면 다양한 액션을 사용할 수 있습니다.",
|
||
"Ctrl+Shift+E로 선택한 파일을 탐색기에서 바로 열 수 있습니다.",
|
||
"Ctrl+T로 해당 경로에서 터미널을 열 수 있습니다.",
|
||
"Ctrl+C로 파일 이름만 복사, Ctrl+Shift+C로 전체 경로를 복사합니다.",
|
||
"Ctrl+Enter로 관리자 권한으로 실행할 수 있습니다.",
|
||
"Alt+Enter로 파일 속성 대화상자를 열 수 있습니다.",
|
||
// ── 단축키 (5종) ──
|
||
"F1 을 누르면 전체 도움말을 확인할 수 있습니다.",
|
||
"Ctrl+K로 단축키 참조 창을 열어보세요.",
|
||
"Ctrl+1~9로 원하는 번호의 항목을 즉시 실행할 수 있습니다.",
|
||
"Ctrl+L로 입력창을 즉시 비울 수 있습니다.",
|
||
"Ctrl+, 로 설정 창을 바로 열 수 있습니다.",
|
||
// ── 터미널 (4종) ──
|
||
"> ipconfig 로 터미널 명령을 바로 실행할 수 있습니다.",
|
||
"> ping google.com 같은 네트워크 진단도 가능합니다.",
|
||
"> dir 로 현재 디렉터리 목록을 확인할 수 있습니다.",
|
||
"^ notepad 로 메모장을 직접 실행할 수 있습니다.",
|
||
// ── 캡처 (4종) ──
|
||
"cap screen 으로 화면을 캡처할 수 있습니다.",
|
||
"cap region 으로 원하는 영역만 캡처할 수 있습니다.",
|
||
"cap window 로 현재 활성 창만 캡처할 수 있습니다.",
|
||
"설정에서 캡처 글로벌 단축키를 지정할 수 있습니다.",
|
||
// ── 시스템 명령 (5종) ──
|
||
"/ lock 으로 화면을 즉시 잠글 수 있습니다.",
|
||
"/ shutdown 으로 PC를 종료할 수 있습니다.",
|
||
"/ restart 로 PC를 재시작할 수 있습니다.",
|
||
"/ sleep 으로 절전 모드로 전환할 수 있습니다.",
|
||
"/ recycle 로 휴지통을 비울 수 있습니다.",
|
||
// ── 기타 유틸 (10종) ──
|
||
"encode base64 hello 로 인코딩/디코딩이 됩니다.",
|
||
"json 을 입력하면 클립보드 JSON을 정리해 줍니다.",
|
||
"emoji 웃음 으로 이모지를 검색할 수 있습니다.",
|
||
"kill 프로세스명 으로 프로세스를 종료할 수 있습니다.",
|
||
"recent 를 입력하면 최근 실행 목록을 확인할 수 있습니다.",
|
||
"note 내용 으로 빠른 메모를 저장할 수 있습니다.",
|
||
"journal 오늘 할 일 로 업무 일지를 기록할 수 있습니다.",
|
||
"pipe upper | trim 으로 텍스트를 파이프라인 처리할 수 있습니다.",
|
||
"diff 로 클립보드의 두 텍스트를 비교할 수 있습니다.",
|
||
"stats 로 클립보드 텍스트의 글자수·단어수를 확인합니다.",
|
||
// ── 폴더/URL 별칭 (4종) ──
|
||
"cd desktop 으로 바탕화면 폴더를 바로 열 수 있습니다.",
|
||
"@blog 으로 등록된 URL을 즉시 열 수 있습니다.",
|
||
"cd 경로 로 원하는 폴더를 바로 열 수 있습니다.",
|
||
"Ctrl+D로 다운로드 폴더를 바로 열 수 있습니다.",
|
||
// ── 창 관리 (4종) ──
|
||
"win chrome 으로 크롬 창을 바로 전환할 수 있습니다.",
|
||
"snap left 로 현재 창을 왼쪽에 정렬할 수 있습니다.",
|
||
"snap grid 로 여러 창을 격자 배치할 수 있습니다.",
|
||
"Tab 키로 선택한 항목의 제목을 자동완성할 수 있습니다.",
|
||
// ── 테마 (2종) ──
|
||
"설정에서 8종 테마(Dark·Light·OLED 등)를 선택할 수 있습니다.",
|
||
"커스텀 테마로 나만의 색상 조합을 만들어 보세요.",
|
||
// ── AX Agent (8종) ──
|
||
"! 질문 으로 AX Agent에게 바로 물어볼 수 있습니다.",
|
||
"! 오늘 회의 내용 정리해줘 처럼 AX Agent과 대화해 보세요.",
|
||
"AX Agent은 ! 를 입력하는 것만으로 시작됩니다.",
|
||
"! 를 입력하면 AX Agent이 업무를 도와드립니다.",
|
||
"AX Agent이 직관적으로 답변합니다. ! 로 바로 시작해 보세요.",
|
||
"! 이메일 초안 작성해줘 같은 요청도 가능합니다.",
|
||
"AX Agent 대화 내역은 암호화되어 안전하게 보관됩니다.",
|
||
"! 보고서 요약해줘 처럼 업무 보조에 활용해 보세요.",
|
||
// ── AX Agent 기능 안내 (8종) ──
|
||
"AX Agent에서 코드 구문 강조와 마크다운 렌더링을 지원합니다.",
|
||
"Ollama/vLLM/Gemini/Claude 4종 LLM을 지원합니다.",
|
||
"AX Agent 대화에서 프롬프트 카드로 AI 역할을 바로 지정할 수 있습니다.",
|
||
"AX Agent에서 대화를 분류하고 검색할 수 있습니다. ! 로 시작하세요!",
|
||
"AX Agent은 토큰 사용량과 응답 시간을 실시간으로 표시합니다.",
|
||
"AX Agent에서 타이핑 효과로 자연스러운 대화를 경험해 보세요.",
|
||
"대화 제목을 클릭하면 바로 이름을 변경할 수 있습니다.",
|
||
"프롬프트 템플릿으로 자주 쓰는 지시를 저장해 보세요.",
|
||
// ── 캡처 업데이트 (3종) ──
|
||
"cap 모드에서 Shift+Enter로 지연 캡처(3/5/10초)를 할 수 있습니다.",
|
||
"cap region 으로 원하는 영역만 정확하게 캡처할 수 있습니다.",
|
||
"지연 캡처로 메뉴가 열린 상태도 캡처할 수 있습니다.",
|
||
// ── Phase L4 신기능 안내 (12종) ──
|
||
"C:\\ 또는 D:\\ 를 입력하면 바로 인라인 파일 탐색기가 열립니다!",
|
||
"파일 탐색 중 → 키로 폴더 진입, ← 키로 상위 폴더로 돌아갑니다.",
|
||
"F3 키로 선택한 파일을 바로 미리볼 수 있습니다. PDF·코드·Office 모두 지원!",
|
||
"F3 미리보기에서 코드 파일은 언어별 색상 강조와 줄 번호를 표시합니다.",
|
||
"F3 미리보기에서 Word·Excel 파일의 텍스트 내용도 확인할 수 있습니다.",
|
||
"입력이 없을 때 ↑/↓ 키로 이전 검색어를 불러올 수 있습니다.",
|
||
"ext:.pdf 를 입력하면 PDF 파일만 검색할 수 있습니다.",
|
||
"size:>10mb 필터로 대용량 파일만 골라서 찾아보세요.",
|
||
"modified:week 으로 최근 일주일 내 수정된 파일만 검색할 수 있습니다.",
|
||
"= 20km 처럼 입력하면 킬로미터를 자동으로 변환 제안해 드립니다!",
|
||
"= 100°F 를 입력하면 섭씨·켈빈으로 자동 변환됩니다.",
|
||
"= today+30d 로 30일 후 날짜를 바로 계산할 수 있습니다.",
|
||
];
|
||
|
||
private static readonly string[] _enPlaceholders =
|
||
[
|
||
"What can I help you with?",
|
||
"Type anything to search or run commands.",
|
||
"Try = 1920*1080 for quick calculations.",
|
||
"Press # to browse clipboard history.",
|
||
"Type ? keyword to search the web instantly.",
|
||
"Press F1 for the full help guide.",
|
||
"Use Ctrl+P to bookmark your favorite files.",
|
||
"Type info cpu to check system resources.",
|
||
];
|
||
|
||
private static readonly string[] _jaPlaceholders =
|
||
[
|
||
"何をお手伝いしますか?",
|
||
"検索やコマンドを入力してください。",
|
||
"= 1920*1080 で計算ができます。",
|
||
"# でクリップボード履歴を表示できます。",
|
||
"F1 でヘルプを表示できます。",
|
||
];
|
||
|
||
private static readonly string[] _zhPlaceholders =
|
||
[
|
||
"我能帮你做什么?",
|
||
"输入内容进行搜索或执行命令。",
|
||
"试试 = 1920*1080 进行快速计算。",
|
||
"按 # 浏览剪贴板历史。",
|
||
"按 F1 查看完整帮助。",
|
||
];
|
||
|
||
private static readonly string[] _viPlaceholders =
|
||
[
|
||
"Tôi có thể giúp gì cho bạn?",
|
||
"Nhập nội dung để tìm kiếm hoặc chạy lệnh.",
|
||
"Thử = 1920*1080 để tính toán nhanh.",
|
||
"Nhấn # để xem lịch sử clipboard.",
|
||
"Nhấn F1 để xem hướng dẫn đầy đủ.",
|
||
];
|
||
|
||
// ─── 한국어 (기본) ────────────────────────────────────────────────────────
|
||
private static readonly Dictionary<string, string> _ko = new()
|
||
{
|
||
["placeholder"] = "무엇을 도와드릴까요?",
|
||
["loading"] = "검색 중...",
|
||
["no_results"] = "결과 없음",
|
||
["help_copy_hint"] = "Enter로 예시를 클립보드에 복사",
|
||
["help_total"] = "총 {0}개 명령어 · {1}개 단축키 · Enter → 전체 기능 창 열기",
|
||
["clipboard_empty"] = "클립보드 히스토리가 없습니다",
|
||
["clipboard_empty_hint"] = "텍스트를 복사하면 이 곳에 기록됩니다",
|
||
["merge_hint"] = "✓ {0}개 선택됨 · Shift+Enter로 합치기 · Esc로 취소",
|
||
["action_breadcrumb"] = "파일 액션",
|
||
["large_type_hint"] = "Shift+Enter: Large Type",
|
||
["settings_hotkey"] = "단축키",
|
||
["settings_theme"] = "테마",
|
||
["settings_language"] = "언어",
|
||
};
|
||
|
||
// ─── English ──────────────────────────────────────────────────────────────
|
||
private static readonly Dictionary<string, string> _en = new()
|
||
{
|
||
["placeholder"] = "What can I help you with?",
|
||
["loading"] = "Searching...",
|
||
["no_results"] = "No results",
|
||
["help_copy_hint"] = "Press Enter to copy example to clipboard",
|
||
["help_total"] = "{0} commands · {1} shortcuts · Enter → Show all features",
|
||
["clipboard_empty"] = "No clipboard history",
|
||
["clipboard_empty_hint"] = "Copy text and it will appear here",
|
||
["merge_hint"] = "✓ {0} selected · Shift+Enter to merge · Esc to cancel",
|
||
["action_breadcrumb"] = "File Action",
|
||
["large_type_hint"] = "Shift+Enter: Large Type",
|
||
["settings_hotkey"] = "Hotkey",
|
||
["settings_theme"] = "Theme",
|
||
["settings_language"] = "Language",
|
||
};
|
||
|
||
// ─── 日本語 ───────────────────────────────────────────────────────────────
|
||
private static readonly Dictionary<string, string> _ja = new()
|
||
{
|
||
["placeholder"] = "何をお手伝いしますか?",
|
||
["loading"] = "検索中...",
|
||
["no_results"] = "結果なし",
|
||
["help_copy_hint"] = "Enterで例をクリップボードにコピー",
|
||
["help_total"] = "コマンド {0}個 · ショートカット {1}個 · Enter → 全機能表示",
|
||
["clipboard_empty"] = "クリップボード履歴がありません",
|
||
["clipboard_empty_hint"] = "テキストをコピーするとここに表示されます",
|
||
["merge_hint"] = "✓ {0}件選択 · Shift+Enterで結合 · Escでキャンセル",
|
||
["action_breadcrumb"] = "ファイルアクション",
|
||
["large_type_hint"] = "Shift+Enter: 拡大表示",
|
||
["settings_hotkey"] = "ショートカット",
|
||
["settings_theme"] = "テーマ",
|
||
["settings_language"] = "言語",
|
||
};
|
||
|
||
// ─── 中文 ─────────────────────────────────────────────────────────────────
|
||
private static readonly Dictionary<string, string> _zh = new()
|
||
{
|
||
["placeholder"] = "我能帮你做什么?",
|
||
["loading"] = "搜索中...",
|
||
["no_results"] = "无结果",
|
||
["help_copy_hint"] = "按 Enter 复制示例到剪贴板",
|
||
["help_total"] = "{0} 个命令 · {1} 个快捷键 · Enter → 显示全部功能",
|
||
["clipboard_empty"] = "没有剪贴板历史",
|
||
["clipboard_empty_hint"] = "复制文本后将显示在此处",
|
||
["merge_hint"] = "✓ 已选 {0} 项 · Shift+Enter 合并 · Esc 取消",
|
||
["action_breadcrumb"] = "文件操作",
|
||
["large_type_hint"] = "Shift+Enter: 大字显示",
|
||
["settings_hotkey"] = "热键",
|
||
["settings_theme"] = "主题",
|
||
["settings_language"] = "语言",
|
||
};
|
||
|
||
// ─── Tiếng Việt ───────────────────────────────────────────────────────────
|
||
private static readonly Dictionary<string, string> _vi = new()
|
||
{
|
||
["placeholder"] = "Tôi có thể giúp gì cho bạn?",
|
||
["loading"] = "Đang tìm kiếm...",
|
||
["no_results"] = "Không có kết quả",
|
||
["help_copy_hint"] = "Nhấn Enter để sao chép ví dụ vào clipboard",
|
||
["help_total"] = "{0} lệnh · {1} phím tắt · Enter → Xem tất cả tính năng",
|
||
["clipboard_empty"] = "Không có lịch sử clipboard",
|
||
["clipboard_empty_hint"] = "Sao chép văn bản và nó sẽ xuất hiện ở đây",
|
||
["merge_hint"] = "✓ Đã chọn {0} mục · Shift+Enter để gộp · Esc hủy",
|
||
["action_breadcrumb"] = "Hành động tệp",
|
||
["large_type_hint"] = "Shift+Enter: Hiển thị lớn",
|
||
["settings_hotkey"] = "Phím tắt",
|
||
["settings_theme"] = "Giao diện",
|
||
["settings_language"] = "Ngôn ngữ",
|
||
};
|
||
}
|