From 515e7709c640996321d14ffab23d1353dd9c15b6 Mon Sep 17 00:00:00 2001 From: Inhwan Wee Date: Mon, 2 Jun 2025 14:14:04 +0900 Subject: [PATCH 1/3] Add Language KR (Korean) --- browser/src/i18n/languages.ts | 3 +- browser/src/i18n/locales/ko.ts | 69 +++++++++++++++++ desktop/src/renderer/src/i18n/languages.ts | 3 +- desktop/src/renderer/src/i18n/locales/ko.ts | 83 +++++++++++++++++++++ 4 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 browser/src/i18n/locales/ko.ts create mode 100644 desktop/src/renderer/src/i18n/locales/ko.ts diff --git a/browser/src/i18n/languages.ts b/browser/src/i18n/languages.ts index 59019eb..9edb392 100644 --- a/browser/src/i18n/languages.ts +++ b/browser/src/i18n/languages.ts @@ -4,7 +4,8 @@ const languages = [ { key: 'zh', name: '中文' }, { key: 'de', name: 'Deutsch' }, { key: 'nl', name: 'Nederlands' }, - { key: 'be', name: 'België' } + { key: 'be', name: 'België' }, + { key: 'ko', name: '한국어' } ]; languages.sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })); diff --git a/browser/src/i18n/locales/ko.ts b/browser/src/i18n/locales/ko.ts new file mode 100644 index 0000000..e07fbcc --- /dev/null +++ b/browser/src/i18n/locales/ko.ts @@ -0,0 +1,69 @@ +const ko = { + translation: { + serial: { + notSupported: + '시리얼이 지원되지 않습니다. 마우스와 키보드를 사용하려면 Chrome 브라우저를 사용하세요.', + failed: '시리얼 연결에 실패했습니다. 다시 시도해 주세요.' + }, + camera: { + tip: '권한을 기다리는 중...', + denied: '권한이 거부되었습니다.', + authorize: + 'Target PC 연결에 카메라 권한이 필요합니다. 브라우저 설정에서 카메라 권한을 허용해 주세요.', + failed: '카메라 연결에 실패했습니다. 다시 시도해 주세요.' + }, + modal: { + title: 'USB 장치 선택', + selectVideo: '비디오 입력 장치를 선택해 주세요.', + selectSerial: '시리얼 장치를 선택해 주세요.' + }, + menu: { + serial: '시리얼', + keyboard: '키보드', + mouse: '마우스' + }, + video: { + resolution: '해상도', + customResolution: '사용자 정의', + device: '장치', + custom: { + title: '사용자 정의 해상도', + width: '가로', + height: '세로', + confirm: '확인', + cancel: '취소' + } + }, + keyboard: { + paste: '붙여넣기', + virtualKeyboard: '가상 키보드', + ctrlAltDel: 'Ctrl + Alt + Delete' + }, + mouse: { + cursor: { + title: '커서 모양', + pointer: '포인터', + grab: '손', + cell: '플러스', + hide: '숨기기' + }, + mode: '마우스 모드', + absolute: '절대 모드', + relative: '상대 모드', + direction: '휠 방향', + scrollUp: '위로 스크롤', + scrollDown: '아래로 스크롤', + speed: '휠 속도', + fast: '빠르게', + slow: '느리게', + requestPointer: '상대 모드를 사용 중입니다. 마우스 포인터를 가져오려면 스크린을 클릭하세요.' + }, + settings: { + language: '언어', + document: '문서', + download: '다운로드' + } + } +}; + +export default ko; diff --git a/desktop/src/renderer/src/i18n/languages.ts b/desktop/src/renderer/src/i18n/languages.ts index eb2fcb8..035e848 100644 --- a/desktop/src/renderer/src/i18n/languages.ts +++ b/desktop/src/renderer/src/i18n/languages.ts @@ -4,7 +4,8 @@ const languages = [ { key: 'zh', name: '中文' }, { key: 'de', name: 'Deutsch' }, { key: 'nl', name: 'Nederlands' }, - { key: 'be', name: 'België' } + { key: 'be', name: 'België' }, + { key: 'ko', name: '한국어' } ] languages.sort((a, b) => a.name.localeCompare(b.name, 'en', { sensitivity: 'base' })) diff --git a/desktop/src/renderer/src/i18n/locales/ko.ts b/desktop/src/renderer/src/i18n/locales/ko.ts new file mode 100644 index 0000000..7e0b720 --- /dev/null +++ b/desktop/src/renderer/src/i18n/locales/ko.ts @@ -0,0 +1,83 @@ +const ko = { + translation: { + camera: { + tip: '권한을 기다리는 중...', + denied: '권한이 거부되었습니다.', + authorize: + 'Target PC 연결에 카메라 권한이 필요합니다. 설정에서 카메라 권한을 허용해 주세요.', + failed: '카메라 연결에 실패했습니다. 다시 시도해 주세요.' + }, + modal: { + title: 'USB 장치 선택', + selectVideo: '비디오 입력 장치를 선택해 주세요.', + selectSerial: '시리얼 장치를 선택해 주세요.' + }, + menu: { + serial: '시리얼', + keyboard: '키보드', + mouse: '마우스' + }, + video: { + resolution: '해상도', + customResolution: '사용자 정의', + device: '장치', + custom: { + title: '사용자 정의 해상도', + width: '가로', + height: '세로', + confirm: '확인', + cancel: '취소' + } + }, + keyboard: { + paste: '붙여넣기', + virtualKeyboard: '가상 키보드', + ctrlAltDel: 'Ctrl + Alt + Delete' + }, + mouse: { + cursor: { + title: '커서 모양', + pointer: '포인터', + grab: '손', + cell: '플러스', + hide: '숨기기' + }, + mode: '마우스 모드', + absolute: '절대 모드', + relative: '상대 모드', + direction: '휠 방향', + scrollUp: '위로 스크롤', + scrollDown: '아래로 스크롤', + speed: '휠 속도', + fast: '빠르게', + slow: '느리게', + requestPointer: '상대 모드를 사용 중입니다. 마우스 포인터를 가져오려면 스크린을 클릭하세요.' + }, + settings: { + title: '설정', + appearance: { + title: '화면 설정', + language: '언어', + menu: '메뉴 바', + menuTips: '시작 시 메뉴 바 열기' + }, + update: { + title: '업데이트 확인', + latest: '최신 버전을 사용 중입니다.', + outdated: '업데이트가 가능합니다. 지금 업데이트하시겠습니까?', + downloading: '다운로드 중...', + installing: '설치 중...', + failed: '업데이트에 실패했습니다. 다시 시도해 주세요.', + confirm: '확인', + cancel: '취소' + }, + about: { + title: '정보', + version: '버전', + community: '커뮤니티' + } + } + } +} + +export default ko From 3cba902de28fc0fbe91e3b7b48532e61a6e7800c Mon Sep 17 00:00:00 2001 From: Inhwan Wee Date: Mon, 2 Jun 2025 14:55:46 +0900 Subject: [PATCH 2/3] add video scale (desktop) --- desktop/src/renderer/src/App.tsx | 16 ++++- .../src/components/menu/video/index.tsx | 2 + .../src/components/menu/video/scale.tsx | 58 +++++++++++++++++++ desktop/src/renderer/src/i18n/locales/be.ts | 5 +- desktop/src/renderer/src/i18n/locales/de.ts | 5 +- desktop/src/renderer/src/i18n/locales/en.ts | 1 + desktop/src/renderer/src/i18n/locales/ko.ts | 1 + desktop/src/renderer/src/i18n/locales/nl.ts | 5 +- desktop/src/renderer/src/i18n/locales/ru.ts | 1 + desktop/src/renderer/src/i18n/locales/zh.ts | 1 + desktop/src/renderer/src/jotai/device.ts | 2 + .../src/renderer/src/libs/storage/index.ts | 13 +++++ 12 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 desktop/src/renderer/src/components/menu/video/scale.tsx diff --git a/desktop/src/renderer/src/App.tsx b/desktop/src/renderer/src/App.tsx index 97f9bb4..7ab90ac 100644 --- a/desktop/src/renderer/src/App.tsx +++ b/desktop/src/renderer/src/App.tsx @@ -11,7 +11,12 @@ import { Keyboard } from '@renderer/components/keyboard' import { Menu } from '@renderer/components/menu' import { Mouse } from '@renderer/components/mouse' import { VirtualKeyboard } from '@renderer/components/virtual-keyboard' -import { resolutionAtom, serialPortStateAtom, videoStateAtom } from '@renderer/jotai/device' +import { + resolutionAtom, + serialPortStateAtom, + videoScaleAtom, + videoStateAtom +} from '@renderer/jotai/device' import { isKeyboardEnableAtom } from '@renderer/jotai/keyboard' import { mouseStyleAtom } from '@renderer/jotai/mouse' import { camera } from '@renderer/libs/camera' @@ -24,6 +29,7 @@ const App = (): ReactElement => { const { t } = useTranslation() const isBigScreen = useMediaQuery({ minWidth: 850 }) + const videoScale = useAtomValue(videoScaleAtom) const videoState = useAtomValue(videoStateAtom) const serialPortState = useAtomValue(serialPortStateAtom) const mouseStyle = useAtomValue(mouseStyleAtom) @@ -115,7 +121,13 @@ const App = (): ReactElement => {