From 7b3e8c064544df539c421e46c304677a884a8884 Mon Sep 17 00:00:00 2001 From: cheshire0105 Date: Thu, 9 Jan 2025 20:59:13 +0900 Subject: [PATCH 1/2] feat: add Korean localization to OnboardingView using String Catalog --- fullmoon.xcodeproj/project.pbxproj | 3 + fullmoon/Localizable/Localizable.xcstrings | 522 +++++++++++++++++++++ 2 files changed, 525 insertions(+) create mode 100644 fullmoon/Localizable/Localizable.xcstrings diff --git a/fullmoon.xcodeproj/project.pbxproj b/fullmoon.xcodeproj/project.pbxproj index 3bf64cb..eb523d4 100644 --- a/fullmoon.xcodeproj/project.pbxproj +++ b/fullmoon.xcodeproj/project.pbxproj @@ -124,6 +124,7 @@ knownRegions = ( en, Base, + ko, ); mainGroup = 860E9CC52CB055B000C5BB52; minimizedProjectReferenceProxies = 1; @@ -219,6 +220,7 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; @@ -273,6 +275,7 @@ MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; }; name = Release; }; diff --git a/fullmoon/Localizable/Localizable.xcstrings b/fullmoon/Localizable/Localizable.xcstrings new file mode 100644 index 0000000..0094f32 --- /dev/null +++ b/fullmoon/Localizable/Localizable.xcstrings @@ -0,0 +1,522 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "%@" : { + + }, + "appearance" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모양" + } + } + } + }, + "are you sure?" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "확실합니까?" + } + } + } + }, + "cancel" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "취소" + } + } + } + }, + "chat" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "채팅" + } + } + } + }, + "chat with private and local large language models" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "개인적이고 로컬에서 실행되는 대형 언어 모델과 채팅하기" + } + } + } + }, + "chats" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "채팅들" + } + } + } + }, + "color" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "색상" + } + } + } + }, + "continue chatting in the app" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "앱에서 채팅을 계속하기" + } + } + } + }, + "continuous chat" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "지속적인 채팅" + } + } + } + }, + "credits" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "크레딧" + } + } + } + }, + "delete" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "삭제" + } + } + } + }, + "delete all chats" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모든 채팅 삭제" + } + } + } + }, + "design" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "디자인" + } + } + } + }, + "device not supported" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "지원되지 않는 기기입니다" + } + } + } + }, + "done" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "완료" + } + } + } + }, + "fast" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "빠름" + } + } + } + }, + "font" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "글꼴" + } + } + } + }, + "fullmoon" : { + + }, + "get started" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시작하기" + } + } + } + }, + "haptics" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "햅틱" + } + } + } + }, + "install" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설치" + } + } + } + }, + "install a model" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모델 설치" + } + } + } + }, + "installed" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설치됨" + } + } + } + }, + "installing" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설치 중" + } + } + } + }, + "keep this screen open and wait for the installation to complete." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 화면을 열어두고 설치가 완료될 때까지 기다리세요." + } + } + } + }, + "Mainframe" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메인프레임" + } + } + } + }, + "message" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메시지" + } + } + } + }, + "MLX Swift" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "MLX 스위프트" + } + } + } + }, + "models" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모델들" + } + } + } + }, + "new chat" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 채팅" + } + } + } + }, + "new chat with ${prompt}" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 채팅: ${prompt}" + } + } + } + }, + "no chats yet" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "아직 채팅이 없습니다" + } + } + } + }, + "no results" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "결과 없음" + } + } + } + }, + "open source" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "오픈 소스" + } + } + } + }, + "optimized for apple silicon" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "애플 실리콘에 최적화됨" + } + } + } + }, + "other" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "기타" + } + } + } + }, + "private" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "개인 정보 보호" + } + } + } + }, + "runs locally on your device" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "디바이스에서 로컬로 실행됨" + } + } + } + }, + "search" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "검색" + } + } + } + }, + "select from models that are optimized for apple silicon" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "애플 실리콘에 최적화된 모델 중에서 선택하세요" + } + } + } + }, + "settings" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정" + } + } + } + }, + "sit back and relax" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "편안히 기다려 주세요" + } + } + } + }, + "size" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "크기" + } + } + } + }, + "sorry, fullmoon can only run on devices that support Metal 3." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "죄송합니다, fullmoon은 Metal 3을 지원하는 기기에서만 실행할 수 있습니다." + } + } + } + }, + "start a new chat" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 채팅 시작" + } + } + } + }, + "suggested" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "추천" + } + } + } + }, + "system prompt" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "시스템 프롬프트" + } + } + } + }, + "untitled" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "제목 없음" + } + } + } + }, + "v%@.%@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "v%1$@.%2$@" + } + } + } + }, + "view and contribute to the source code" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "소스 코드 보기 및 기여" + } + } + } + }, + "welcome" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "환영합니다" + } + } + } + }, + "width" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "너비" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file From 33e5094725b0f76964213e3a222196bfff4cbc43 Mon Sep 17 00:00:00 2001 From: cheshire0105 Date: Thu, 16 Jan 2025 17:55:46 +0900 Subject: [PATCH 2/2] Update localization string for improved action labeling --- fullmoon/Localizable/Localizable.xcstrings | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fullmoon/Localizable/Localizable.xcstrings b/fullmoon/Localizable/Localizable.xcstrings index 0094f32..41263cb 100644 --- a/fullmoon/Localizable/Localizable.xcstrings +++ b/fullmoon/Localizable/Localizable.xcstrings @@ -49,7 +49,7 @@ "ko" : { "stringUnit" : { "state" : "translated", - "value" : "개인적이고 로컬에서 실행되는 대형 언어 모델과 채팅하기" + "value" : "개인용으로 로컬에서 실행되는 대형 언어 모델과 채팅하기" } } } @@ -302,7 +302,7 @@ "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 채팅: ${prompt}" + "value" : "\"${prompt}로 새 채팅 시작\"" } } } @@ -372,7 +372,7 @@ "ko" : { "stringUnit" : { "state" : "translated", - "value" : "디바이스에서 로컬로 실행됨" + "value" : "기기에서 로컬로 실행됨" } } }