feat: Support i18n
This commit is contained in:
25
qwen3-tts-frontend/src/locales/ko-KR/auth.json
Normal file
25
qwen3-tts-frontend/src/locales/ko-KR/auth.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"login": "로그인",
|
||||
"username": "사용자 이름",
|
||||
"password": "비밀번호",
|
||||
"loginButton": "로그인",
|
||||
"loggingIn": "로그인 중...",
|
||||
"welcome": "Qwen TTS에 오신 것을 환영합니다",
|
||||
"loginPrompt": "계속하려면 로그인하세요",
|
||||
"loginSuccess": "로그인했습니다",
|
||||
"loginFailed": "로그인에 실패했습니다",
|
||||
"loginFailedCheckCredentials": "로그인에 실패했습니다. 사용자 이름과 비밀번호를 확인하세요",
|
||||
"logoutSuccess": "로그아웃했습니다",
|
||||
"unauthorized": "인증되지 않았습니다. 로그인하세요",
|
||||
"sessionExpired": "세션이 만료되었습니다. 다시 로그인하세요",
|
||||
"noPermission": "이 작업을 수행할 권한이 없습니다",
|
||||
"adminOnly": "이 기능은 관리자만 사용할 수 있습니다",
|
||||
"usernamePlaceholder": "사용자 이름 입력",
|
||||
"passwordPlaceholder": "비밀번호 입력",
|
||||
"validation": {
|
||||
"usernameMinLength": "사용자 이름은 {{min}}자 이상이어야 합니다",
|
||||
"usernameMaxLength": "사용자 이름은 {{max}}자 이하여야 합니다",
|
||||
"passwordMinLength": "비밀번호는 {{min}}자 이상이어야 합니다",
|
||||
"apiKeyRequired": "API 키를 입력하세요"
|
||||
}
|
||||
}
|
||||
40
qwen3-tts-frontend/src/locales/ko-KR/common.json
Normal file
40
qwen3-tts-frontend/src/locales/ko-KR/common.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"save": "저장",
|
||||
"cancel": "취소",
|
||||
"confirm": "확인",
|
||||
"delete": "삭제",
|
||||
"edit": "편집",
|
||||
"add": "추가",
|
||||
"create": "생성",
|
||||
"update": "업데이트",
|
||||
"submit": "제출",
|
||||
"close": "닫기",
|
||||
"back": "뒤로",
|
||||
"next": "다음",
|
||||
"previous": "이전",
|
||||
"search": "검색",
|
||||
"filter": "필터",
|
||||
"clear": "지우기",
|
||||
"reset": "재설정",
|
||||
"loading": "로딩 중...",
|
||||
"noData": "데이터 없음",
|
||||
"success": "성공",
|
||||
"error": "오류",
|
||||
"warning": "경고",
|
||||
"info": "정보",
|
||||
"yes": "예",
|
||||
"no": "아니오",
|
||||
"ok": "확인",
|
||||
"download": "다운로드",
|
||||
"upload": "업로드",
|
||||
"copy": "복사",
|
||||
"copied": "복사됨",
|
||||
"view": "보기",
|
||||
"details": "상세정보",
|
||||
"actions": "작업",
|
||||
"generatingAudio": "오디오 생성 중, 잠시 기다려주세요...",
|
||||
"generationTakingLong": "생성에 시간이 오래 걸리고 있습니다, 조금만 기다려주세요...",
|
||||
"waitedSeconds": "{{seconds}}초 대기 중",
|
||||
"loadingAudio": "로딩 중...",
|
||||
"failedToLoadAudio": "오디오 로드에 실패했습니다"
|
||||
}
|
||||
152
qwen3-tts-frontend/src/locales/ko-KR/constants.json
Normal file
152
qwen3-tts-frontend/src/locales/ko-KR/constants.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"languages": {
|
||||
"Auto": "자동 감지",
|
||||
"Chinese": "중국어",
|
||||
"English": "영어",
|
||||
"Japanese": "일본어",
|
||||
"Korean": "한국어",
|
||||
"German": "독일어",
|
||||
"French": "프랑스어",
|
||||
"Russian": "러시아어",
|
||||
"Portuguese": "포르투갈어",
|
||||
"Spanish": "스페인어",
|
||||
"Italian": "이탈리아어",
|
||||
"Cantonese": "광둥어",
|
||||
"zh": "중국어",
|
||||
"en": "영어",
|
||||
"ja": "일본어",
|
||||
"ko": "한국어",
|
||||
"yue": "광둥어"
|
||||
},
|
||||
"speakers": {
|
||||
"Vivian": "여성, 전문적이고 명확함",
|
||||
"Serena": "여성, 부드럽고 따뜻함",
|
||||
"Aria": "여성, 활발하고 명랑함",
|
||||
"Emma": "여성, 성숙하고 안정적임",
|
||||
"Sophie": "여성, 우아하고 지적임",
|
||||
"Isabella": "여성, 온화하고 친근함",
|
||||
"Ava": "여성, 젊고 세련됨",
|
||||
"Oliver": "남성, 자성적이고 침착함",
|
||||
"Lucas": "남성, 밝고 쾌활함",
|
||||
"Ethan": "남성, 전문적이고 당당함",
|
||||
"Noah": "남성, 온화하고 친절함",
|
||||
"Liam": "남성, 젊고 활력적임"
|
||||
},
|
||||
"presetInstructs": [
|
||||
{
|
||||
"label": "Happy",
|
||||
"instruct": "very happy",
|
||||
"text": "The weather is so nice today, let's go to the park together!"
|
||||
},
|
||||
{
|
||||
"label": "Sad",
|
||||
"instruct": "very sad, with a crying tone",
|
||||
"text": "I'm sorry, I really tried my best, but I still let you down."
|
||||
},
|
||||
{
|
||||
"label": "Angry",
|
||||
"instruct": "very angry, with intense tone",
|
||||
"text": "How could you do this! This is absolutely unacceptable!"
|
||||
},
|
||||
{
|
||||
"label": "Gentle Care",
|
||||
"instruct": "gentle and caring, slow pace, soft tone, full of care and comfort",
|
||||
"text": "Don't worry, everything will be fine. I'll always be here with you."
|
||||
},
|
||||
{
|
||||
"label": "Excited",
|
||||
"instruct": "very excited, faster pace, rising tone, full of energy and enthusiasm",
|
||||
"text": "Awesome! We finally made it! This is so exciting!"
|
||||
},
|
||||
{
|
||||
"label": "Anxious",
|
||||
"instruct": "anxious tone, slightly faster pace, unstable tone, with tension and worry",
|
||||
"text": "What should we do? We're running out of time, we won't make it, what can we do?"
|
||||
},
|
||||
{
|
||||
"label": "Professional Broadcaster",
|
||||
"instruct": "Professional news broadcaster. Pace: standard broadcasting speed, clear articulation. Emotion: calm and professional, without personal emotion. Tone: mostly flat with slight variations, emphasis on key words. Character: rigorous, objective, authoritative.",
|
||||
"text": "According to Reuters, our space program has achieved a major breakthrough, with the successful completion of manned space missions."
|
||||
},
|
||||
{
|
||||
"label": "Warm Mentor",
|
||||
"instruct": "Warm mentor. Pace: unhurried, speaking slowly. Tone: stable with encouraging rises. Emotion: caring, patient, encouraging. Character: understanding, guiding, full of positive energy.",
|
||||
"text": "Everyone has their own pace, don't rush. Take your time, you will definitely find your own path."
|
||||
},
|
||||
{
|
||||
"label": "Energetic Youth",
|
||||
"instruct": "Full of energy. Pace: fast, crisp articulation. Emotion: cheerful and optimistic, energetic. Tone: strong sense of rhythm, cadence. Character: outgoing, confident, enthusiastic, full of youthful spirit.",
|
||||
"text": "Wow, this game is so cool! Let's team up and play together, I promise I'll carry you!"
|
||||
}
|
||||
],
|
||||
"presetVoiceDesigns": [
|
||||
{
|
||||
"label": "Sweet Girl",
|
||||
"instruct": "Young female, sweet and bright voice, with a touch of girlish charm. High pitch, lively and varied intonation. Moderate pace, clear articulation. Cheerful and relaxed emotion, full of youthful energy. Suitable for: customer service, voice assistant, entertainment content.",
|
||||
"text": "Hello, I'm happy to help you! How may I assist you today?"
|
||||
},
|
||||
{
|
||||
"label": "Mature Woman",
|
||||
"instruct": "Mature and intellectual female voice, warm and full tone, with professional woman's capable temperament. Medium pitch, stable range. Moderate to fast pace, clear and organized. Calm and confident emotion, conveying professionalism and reliability.",
|
||||
"text": "According to the latest market analysis report, this quarter's performance shows steady growth, with all indicators meeting expected targets."
|
||||
},
|
||||
{
|
||||
"label": "Magnetic Male",
|
||||
"instruct": "Mid-low male voice, deep and magnetic tone, very appealing. Slow pace, steady rhythm. Moderate volume, thick and powerful voice. Suitable for emotional content, storytelling, brand promotion.",
|
||||
"text": "Night falls, yet the city lights remain brilliant. Under each light, there's a story about dreams."
|
||||
},
|
||||
{
|
||||
"label": "Energetic Youth",
|
||||
"instruct": "Energetic young male, bright and clear tone, with youthful vigor. Fast pace, strong sense of rhythm. Enthusiastic and positive emotion, very appealing. Suitable for sports, gaming, entertainment.",
|
||||
"text": "Brothers, are you ready? Today we're going to challenge the new dungeon, let's go!"
|
||||
},
|
||||
{
|
||||
"label": "Authority Expert",
|
||||
"instruct": "Middle-aged male expert image, calm and authoritative tone, thick and powerful voice. Moderate pace, clear and standard articulation. Serious and professional emotion, conveying trust and expertise. Suitable for academic lectures, knowledge popularization, formal occasions.",
|
||||
"text": "From a historical development perspective, technological innovation has always been the core driving force for social progress."
|
||||
},
|
||||
{
|
||||
"label": "Gentle Mother",
|
||||
"instruct": "Gentle and loving middle-aged female, soft and warm tone, full of maternal care. Slow pace, calm and soothing tone. Warm and caring emotion, giving a sense of security. Suitable for children's content, emotional companionship, bedtime stories.",
|
||||
"text": "Sweetie, it's time to sleep. Mom will tell you a story. Once upon a time, there was a little rabbit who lived in the forest..."
|
||||
},
|
||||
{
|
||||
"label": "Broadcasting Host",
|
||||
"instruct": "Professional broadcasting host voice, full and round tone, standard pronunciation. Medium pitch, wide range. Standard pace, precise rhythm control. Professional and calm emotion, clear articulation. Suitable for news broadcasting, program hosting, formal reading.",
|
||||
"text": "Hello dear listeners, welcome to today's program. Next, we bring you today's news."
|
||||
},
|
||||
{
|
||||
"label": "Playful Girl",
|
||||
"instruct": "Playful and cute girl voice, light and lively sound, with unique girlish liveliness. High and varied tone, with coquettish and cute elements. Varying pace, clear articulation with cute interjections.",
|
||||
"text": "Oh no, I didn't mean to~ Can you forgive me this time? Please please~"
|
||||
}
|
||||
],
|
||||
"presetRefTexts": [
|
||||
{
|
||||
"label": "Natural Life",
|
||||
"text": "In this fast-paced world, we're always rushing forward, forgetting to pause and listen to our inner voice. Life is not just about the busyness before us, but also the poetry in the distance and the little moments of happiness we discover. May this recording bring you a touch of gentleness and strength, like an afternoon breeze. No matter how the future changes, remember to keep your love for life and embrace every bright tomorrow."
|
||||
},
|
||||
{
|
||||
"label": "Professional Formal",
|
||||
"text": "Technological progress allows us to transcend the boundaries of time and space, continuing emotions and memories through digitalization. Voice cloning is not only precise code logic, but also a bridge connecting humanity with future intelligence. Through the continuous evolution of deep learning and neural networks, every subtle intonation can be accurately captured. Let us witness together how technology gives voice a more vital expression."
|
||||
},
|
||||
{
|
||||
"label": "Literary Narrative",
|
||||
"text": "The spring breeze brushes the willow tips, carrying the fragrance of earth and news of blooming flowers. Have you ever anticipated meeting your long-lost self at some street corner? Whether it's hearty laughter or low whispers, each voice is a unique mark of life. Let us record this moment, let memories flow in the sound, becoming an eternal melody."
|
||||
}
|
||||
],
|
||||
"uiLanguages": {
|
||||
"zh-CN": "Simplified Chinese",
|
||||
"zh-TW": "Traditional Chinese",
|
||||
"en-US": "English",
|
||||
"ja-JP": "Japanese",
|
||||
"ko-KR": "Korean"
|
||||
},
|
||||
"uiLanguagesShort": {
|
||||
"zh-CN": "ZH-CN",
|
||||
"zh-TW": "ZH-TW",
|
||||
"en-US": "EN",
|
||||
"ja-JP": "JA",
|
||||
"ko-KR": "KO"
|
||||
}
|
||||
}
|
||||
42
qwen3-tts-frontend/src/locales/ko-KR/errors.json
Normal file
42
qwen3-tts-frontend/src/locales/ko-KR/errors.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"http": {
|
||||
"400": "요청 매개변수 오류",
|
||||
"401": "인증되지 않았습니다. 로그인하세요",
|
||||
"403": "접근이 금지되었습니다",
|
||||
"404": "요청한 리소스가 존재하지 않습니다",
|
||||
"500": "서버 내부 오류",
|
||||
"502": "게이트웨이 오류",
|
||||
"503": "서비스를 일시적으로 사용할 수 없습니다",
|
||||
"default": "요청에 실패했습니다. 나중에 다시 시도하세요"
|
||||
},
|
||||
"fieldNames": {
|
||||
"username": "사용자명",
|
||||
"password": "비밀번호",
|
||||
"text": "텍스트",
|
||||
"language": "언어",
|
||||
"speaker": "화자",
|
||||
"instruct": "감정 지시",
|
||||
"name": "이름",
|
||||
"description": "설명",
|
||||
"audio_file": "오디오 파일",
|
||||
"reference_audio": "참조 오디오",
|
||||
"reference_text": "참조 텍스트",
|
||||
"api_key": "API 키",
|
||||
"backend": "백엔드 서비스"
|
||||
},
|
||||
"validation": {
|
||||
"required": "{{field}}을(를) 입력해주세요",
|
||||
"minLength": "{{field}}은(는) 최소 {{min}}자 이상이어야 합니다",
|
||||
"maxLength": "{{field}}은(는) {{max}}자를 초과할 수 없습니다",
|
||||
"invalid": "{{field}} 형식이 올바르지 않습니다",
|
||||
"notFound": "{{field}}을(를) 찾을 수 없습니다",
|
||||
"alreadyExists": "{{field}}이(가) 이미 존재합니다",
|
||||
"uploadFailed": "{{field}} 업로드에 실패했습니다",
|
||||
"fileTooLarge": "파일 크기는 {{size}}MB를 초과할 수 없습니다",
|
||||
"invalidFileType": "지원되지 않는 파일 형식입니다"
|
||||
},
|
||||
"networkError": "네트워크 연결에 실패했습니다. 네트워크를 확인하세요",
|
||||
"unknownError": "알 수 없는 오류",
|
||||
"operationFailed": "작업에 실패했습니다",
|
||||
"tryAgain": "다시 시도하세요"
|
||||
}
|
||||
25
qwen3-tts-frontend/src/locales/ko-KR/index.ts
Normal file
25
qwen3-tts-frontend/src/locales/ko-KR/index.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import common from './common.json'
|
||||
import nav from './nav.json'
|
||||
import auth from './auth.json'
|
||||
import tts from './tts.json'
|
||||
import voice from './voice.json'
|
||||
import job from './job.json'
|
||||
import settings from './settings.json'
|
||||
import user from './user.json'
|
||||
import errors from './errors.json'
|
||||
import constants from './constants.json'
|
||||
import onboarding from './onboarding.json'
|
||||
|
||||
export default {
|
||||
common,
|
||||
nav,
|
||||
auth,
|
||||
tts,
|
||||
voice,
|
||||
job,
|
||||
settings,
|
||||
user,
|
||||
errors,
|
||||
constants,
|
||||
onboarding,
|
||||
}
|
||||
55
qwen3-tts-frontend/src/locales/ko-KR/job.json
Normal file
55
qwen3-tts-frontend/src/locales/ko-KR/job.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"jobHistory": "작업 기록",
|
||||
"jobList": "작업 목록",
|
||||
"jobDetails": "작업 세부정보",
|
||||
"jobId": "작업 ID",
|
||||
"status": "상태",
|
||||
"createdAt": "생성 일시",
|
||||
"completedAt": "완료 일시",
|
||||
"duration": "처리 시간",
|
||||
"statusPending": "대기 중",
|
||||
"statusProcessing": "처리 중",
|
||||
"statusCompleted": "완료",
|
||||
"statusFailed": "실패",
|
||||
"noJobs": "작업이 없습니다",
|
||||
"viewJob": "작업 보기",
|
||||
"deleteJob": "작업 삭제",
|
||||
"deleteJobConfirm": "이 작업을 삭제하시겠습니까?",
|
||||
"jobDeleted": "작업이 삭제되었습니다",
|
||||
"refreshJobs": "작업 새로고침",
|
||||
"inputText": "입력 텍스트",
|
||||
"parameters": "매개변수",
|
||||
"result": "결과",
|
||||
"errorMessage": "오류 메시지",
|
||||
"downloadResult": "결과 다운로드",
|
||||
"retryJob": "재시도",
|
||||
"cancelJob": "작업 취소",
|
||||
"historyTitle": "기록",
|
||||
"historyCount": "{{count}}개 기록",
|
||||
"retry": "재시도",
|
||||
"noHistory": "기록이 없습니다",
|
||||
"historyDescription": "음성 생성 후 기록이 여기에 표시됩니다",
|
||||
"detailsDescription": "작업의 세부 매개변수 및 생성 결과 보기",
|
||||
"basicInfo": "기본 정보",
|
||||
"speaker": "화자: ",
|
||||
"language": "언어: ",
|
||||
"autoDetect": "자동 감지",
|
||||
"fastMode": "빠른 모드: ",
|
||||
"useCache": "캐시 사용: ",
|
||||
"synthesisText": "합성 텍스트",
|
||||
"notSet": "설정되지 않음",
|
||||
"voiceDescription": "음성 설명",
|
||||
"emotionGuidance": "감정 가이드",
|
||||
"referenceText": "참조 텍스트",
|
||||
"notProvided": "제공되지 않음",
|
||||
"advancedParameters": "고급 매개변수",
|
||||
"maxNewTokens": "최대 생성 길이: ",
|
||||
"temperature": "Temperature: ",
|
||||
"topK": "Top K: ",
|
||||
"topP": "Top P: ",
|
||||
"repetitionPenalty": "반복 페널티: ",
|
||||
"audioPlayback": "오디오 재생",
|
||||
"typeCustomVoice": "사용자 정의 음성",
|
||||
"typeVoiceDesign": "음성 디자인",
|
||||
"typeVoiceClone": "음성 복제"
|
||||
}
|
||||
12
qwen3-tts-frontend/src/locales/ko-KR/nav.json
Normal file
12
qwen3-tts-frontend/src/locales/ko-KR/nav.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"home": "홈",
|
||||
"settings": "설정",
|
||||
"userManagement": "사용자 관리",
|
||||
"logout": "로그아웃",
|
||||
"login": "로그인",
|
||||
"toggleTheme": "테마 전환",
|
||||
"changeLanguage": "언어 변경",
|
||||
"customVoiceTab": "커스텀",
|
||||
"voiceDesignTab": "디자인",
|
||||
"voiceCloneTab": "복제"
|
||||
}
|
||||
25
qwen3-tts-frontend/src/locales/ko-KR/onboarding.json
Normal file
25
qwen3-tts-frontend/src/locales/ko-KR/onboarding.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"welcome": "Qwen3 TTS에 오신 것을 환영합니다",
|
||||
"configureApiKey": "Aliyun API 키 설정",
|
||||
"selectBackendDescription": "TTS 백엔드 모드를 선택하세요. 나중에 설정에서 변경할 수 있습니다",
|
||||
"enterApiKeyDescription": "Aliyun API 키를 입력하세요. 시스템이 유효성을 검증합니다",
|
||||
"localModel": "로컬 모델",
|
||||
"localModelDescription": "무료로 로컬 Qwen3-TTS 모델 사용",
|
||||
"localModelNoPermission": "로컬 모델 권한이 없습니다. 관리자에게 문의하세요",
|
||||
"aliyunApi": "Aliyun API",
|
||||
"aliyunApiRecommended": "(권장)",
|
||||
"aliyunApiDescription": "API 키 설정 필요. 사용량에 따라 과금",
|
||||
"skipConfig": "설정 건너뛰기",
|
||||
"nextStep": "다음",
|
||||
"back": "뒤로",
|
||||
"verifying": "검증 중...",
|
||||
"verifyAndComplete": "검증 및 완료",
|
||||
"apiKey": "API 키",
|
||||
"howToGetApiKey": "API 키를 얻는 방법",
|
||||
"skipSuccess": "설정을 건너뛰었습니다. 기본적으로 로컬 모드를 사용합니다",
|
||||
"operationFailed": "작업에 실패했습니다. 다시 시도하세요",
|
||||
"configComplete": "설정이 완료되었습니다. 기본적으로 로컬 모드를 사용합니다",
|
||||
"configCompleteAliyun": "설정이 완료되었습니다. 기본적으로 Aliyun 모드를 사용합니다",
|
||||
"saveFailed": "설정 저장에 실패했습니다. 다시 시도하세요",
|
||||
"verifyFailed": "API 키 검증에 실패했습니다. 확인 후 다시 시도하세요"
|
||||
}
|
||||
61
qwen3-tts-frontend/src/locales/ko-KR/settings.json
Normal file
61
qwen3-tts-frontend/src/locales/ko-KR/settings.json
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"settings": "설정",
|
||||
"generalSettings": "일반 설정",
|
||||
"backendSettings": "백엔드 설정",
|
||||
"apiSettings": "API 설정",
|
||||
"preferencesSaved": "환경 설정이 저장되었습니다",
|
||||
"preferencesSaveFailed": "환경 설정 저장에 실패했습니다",
|
||||
"defaultBackend": "기본 백엔드",
|
||||
"local": "로컬 모델",
|
||||
"aliyun": "Aliyun API",
|
||||
"aliyunApiKey": "Aliyun API 키",
|
||||
"apiKeyPlaceholder": "API 키를 입력하세요",
|
||||
"apiKeyDescription": "Aliyun TTS 서비스 인증에 사용",
|
||||
"saveApiKey": "키 저장",
|
||||
"apiKeySaved": "API 키가 저장되었습니다",
|
||||
"apiKeySaveFailed": "API 키 저장에 실패했습니다",
|
||||
"showApiKey": "키 표시",
|
||||
"hideApiKey": "키 숨기기",
|
||||
"testConnection": "연결 테스트",
|
||||
"connectionSuccess": "연결 성공",
|
||||
"connectionFailed": "연결 실패",
|
||||
"language": "인터페이스 언어",
|
||||
"languageDescription": "인터페이스 표시 언어 선택",
|
||||
"theme": "테마",
|
||||
"themeLight": "라이트",
|
||||
"themeDark": "다크",
|
||||
"themeSystem": "시스템 설정",
|
||||
"title": "설정",
|
||||
"description": "계정 설정 및 환경 설정 관리",
|
||||
"backendPreference": "백엔드 설정",
|
||||
"backendPreferenceDescription": "기본 TTS 백엔드 모드 선택",
|
||||
"localModel": "로컬 모델",
|
||||
"localModelDescription": "무료로 로컬 Qwen3-TTS 모델 사용",
|
||||
"localModelNoPermission": "관리자에게 로컬 모델 사용 권한을 문의하세요",
|
||||
"aliyunApi": "Aliyun API",
|
||||
"aliyunApiDescription": "Aliyun TTS 서비스 사용",
|
||||
"switchedToLocal": "로컬 모드로 전환했습니다",
|
||||
"switchedToAliyun": "Aliyun 모드로 전환했습니다",
|
||||
"saveFailed": "저장에 실패했습니다. 다시 시도하세요",
|
||||
"apiKeyUpdated": "API 키가 업데이트되고 검증되었습니다",
|
||||
"apiKeyVerifyFailed": "API 키 검증에 실패했습니다",
|
||||
"verifyFailed": "검증에 실패했습니다",
|
||||
"currentStatus": "현재 상태:",
|
||||
"configured": "설정됨 및 유효함",
|
||||
"notConfigured": "설정되지 않음",
|
||||
"apiKey": "API 키",
|
||||
"updating": "업데이트 중...",
|
||||
"addKey": "키 추가",
|
||||
"updateKey": "키 업데이트",
|
||||
"verifyKey": "키 검증",
|
||||
"deleteKey": "키 삭제",
|
||||
"deleteKeyConfirm": "Aliyun API 키를 삭제하시겠습니까? 삭제 후 자동으로 로컬 모드로 전환됩니다.",
|
||||
"keyDeleted": "API 키가 삭제되었습니다. 로컬 모드로 전환했습니다",
|
||||
"deleteFailed": "삭제에 실패했습니다",
|
||||
"accountInfo": "계정 정보",
|
||||
"accountInfoDescription": "계정 기본 정보",
|
||||
"email": "이메일",
|
||||
"changePassword": "비밀번호 변경",
|
||||
"passwordChangeSuccess": "비밀번호가 변경되었습니다",
|
||||
"passwordChangeFailed": "비밀번호 변경에 실패했습니다"
|
||||
}
|
||||
80
qwen3-tts-frontend/src/locales/ko-KR/tts.json
Normal file
80
qwen3-tts-frontend/src/locales/ko-KR/tts.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"customVoice": "맞춤 음성",
|
||||
"voiceDesign": "음성 디자인",
|
||||
"voiceClone": "음성 복제",
|
||||
"text": "텍스트",
|
||||
"textPlaceholder": "합성할 텍스트를 입력하세요...",
|
||||
"language": "언어",
|
||||
"speaker": "화자",
|
||||
"instruct": "감정 지시",
|
||||
"instructPlaceholder": "예: 매우 기쁨, 조금 슬픔...",
|
||||
"customSpeaker": "맞춤 화자",
|
||||
"customSpeakerPlaceholder": "예: Vivian, Alice...",
|
||||
"presetInstructs": "프리셋 감정",
|
||||
"generate": "음성 생성",
|
||||
"generating": "생성 중...",
|
||||
"generationSuccess": "음성이 성공적으로 생성되었습니다",
|
||||
"generationFailed": "음성 생성에 실패했습니다",
|
||||
"audioPlayer": "오디오 플레이어",
|
||||
"noAudio": "오디오 없음",
|
||||
"downloadAudio": "오디오 다운로드",
|
||||
"playAudio": "재생",
|
||||
"pauseAudio": "일시정지",
|
||||
"backend": "백엔드 서비스",
|
||||
"localBackend": "로컬 모델",
|
||||
"aliyunBackend": "Alibaba Cloud API",
|
||||
"backendSwitched": "백엔드가 전환되었습니다",
|
||||
"backendError": "백엔드 서비스 오류",
|
||||
"languageLabel": "언어",
|
||||
"speakerLabel": "화자",
|
||||
"speakerPlaceholder": "화자 선택",
|
||||
"textLabel": "합성 텍스트",
|
||||
"instructLabel": "감정 가이던스 (선택사항)",
|
||||
"instructPlaceholderDesign": "음성 디자인의 프리셋 가이던스 사용",
|
||||
"instructPlaceholderDefault": "예: 부드럽고 배려심 있는, 느린 속도, 따뜻함이 가득한",
|
||||
"advancedOptions": "고급 옵션",
|
||||
"advancedOptionsTitle": "고급 매개변수 설정",
|
||||
"advancedOptionsDescription": "생성 매개변수를 조정하여 오디오 품질 및 생성 길이를 제어합니다",
|
||||
"creating": "생성 중...",
|
||||
"taskCreated": "작업이 생성되었습니다",
|
||||
"taskCreateFailed": "작업 생성에 실패했습니다",
|
||||
"loadDataFailed": "데이터 로드에 실패했습니다",
|
||||
"myVoiceDesigns": "내 음성 디자인",
|
||||
"builtinSpeakers": "내장 화자",
|
||||
"designDescriptionLabel": "음성 설명",
|
||||
"designDescriptionPlaceholder": "예: 성숙한 남성, 낮고 자성적인, 권위적인",
|
||||
"saveDesignButton": "음성 디자인 저장",
|
||||
"saveDesignTitle": "음성 디자인 저장",
|
||||
"saveDesignDescription": "현재 음성 디자인에 이름을 지정하고 저장하여 빠르게 사용할 수 있습니다",
|
||||
"designNameLabel": "디자인 이름",
|
||||
"designNamePlaceholder": "예: 자성적인 남성 목소리",
|
||||
"preparing": "준비 중...",
|
||||
"designSaved": "음성 디자인이 저장되었습니다",
|
||||
"clonePrepared": "음성 복제 준비가 완료되었습니다",
|
||||
"clonePrepareFailed": "복제 준비에 실패했지만 디자인은 저장되었습니다",
|
||||
"saveFailed": "저장에 실패했습니다",
|
||||
"fillDesignDescription": "음성 설명을 먼저 입력하세요",
|
||||
"fillDesignName": "디자인 이름을 입력하세요",
|
||||
"advancedParams": {
|
||||
"maxNewTokens": {
|
||||
"label": "최대 생성 길이",
|
||||
"description": "생성되는 오디오의 최대 길이를 제어합니다. 값이 클수록 더 긴 오디오를 생성할 수 있지만 처리 시간도 증가합니다"
|
||||
},
|
||||
"temperature": {
|
||||
"label": "온도",
|
||||
"description": "생성의 무작위성을 제어합니다. 값이 높을수록 더 다양한 출력, 낮을수록 더 안정적이고 일관된 출력이 됩니다"
|
||||
},
|
||||
"topK": {
|
||||
"label": "Top K",
|
||||
"description": "샘플링 시 확률이 가장 높은 K개의 후보만 고려합니다. 값이 작을수록 확정적이고, 클수록 다양해집니다"
|
||||
},
|
||||
"topP": {
|
||||
"label": "Top P (핵 샘플링)",
|
||||
"description": "누적 확률 임계값. 누적 확률이 P에 도달하는 후보에서 샘플링합니다. 출력 다양성을 제어합니다"
|
||||
},
|
||||
"repetitionPenalty": {
|
||||
"label": "반복 페널티",
|
||||
"description": "반복적인 콘텐츠 생성을 억제합니다. 값이 클수록 반복을 더 피하지만, 과도하게 크면 자연스러움에 영향을 줄 수 있습니다"
|
||||
}
|
||||
}
|
||||
}
|
||||
59
qwen3-tts-frontend/src/locales/ko-KR/user.json
Normal file
59
qwen3-tts-frontend/src/locales/ko-KR/user.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"userManagement": "사용자 관리",
|
||||
"userList": "사용자 목록",
|
||||
"userId": "사용자 ID",
|
||||
"username": "사용자 이름",
|
||||
"role": "역할",
|
||||
"createdAt": "생성 일시",
|
||||
"lastLogin": "마지막 로그인",
|
||||
"actions": "작업",
|
||||
"addUser": "사용자 추가",
|
||||
"editUser": "사용자 편집",
|
||||
"deleteUser": "사용자 삭제",
|
||||
"deleteUserConfirm": "사용자 {{username}}을(를) 삭제하시겠습니까?",
|
||||
"userDeleted": "사용자가 삭제되었습니다",
|
||||
"userAdded": "사용자가 추가되었습니다",
|
||||
"userUpdated": "사용자가 업데이트되었습니다",
|
||||
"userOperationFailed": "사용자 작업에 실패했습니다",
|
||||
"roleAdmin": "관리자",
|
||||
"roleUser": "일반 사용자",
|
||||
"password": "비밀번호",
|
||||
"newPassword": "새 비밀번호",
|
||||
"confirmPassword": "비밀번호 확인",
|
||||
"passwordMismatch": "비밀번호가 일치하지 않습니다",
|
||||
"changePassword": "비밀번호 변경",
|
||||
"passwordChanged": "비밀번호가 변경되었습니다",
|
||||
"noUsers": "사용자가 없습니다",
|
||||
"searchUsers": "사용자 검색",
|
||||
"filterByRole": "역할별 필터링",
|
||||
"allRoles": "모든 역할",
|
||||
"createUser": "사용자 생성",
|
||||
"loadUsersFailed": "사용자 목록 로드에 실패했습니다",
|
||||
"userUpdateSuccess": "사용자가 업데이트되었습니다",
|
||||
"userCreateSuccess": "사용자가 생성되었습니다",
|
||||
"operationFailed": "작업에 실패했습니다",
|
||||
"userDeleteSuccess": "사용자가 삭제되었습니다",
|
||||
"deleteFailed": "삭제에 실패했습니다",
|
||||
"createUserDialog": "사용자 생성",
|
||||
"editUserDialog": "사용자 편집",
|
||||
"createUserDescription": "새 사용자를 생성하고 기본 정보를 설정",
|
||||
"editUserDescription": "사용자 정보 및 권한 설정 수정",
|
||||
"email": "이메일",
|
||||
"passwordOptional": "비밀번호 (비워두면 변경하지 않음)",
|
||||
"isActive": "활성 상태",
|
||||
"isSuperuser": "슈퍼 관리자",
|
||||
"canUseLocalModel": "로컬 모델 권한",
|
||||
"canUseLocalModelDescription": "사용자가 로컬 TTS 모델을 사용할 수 있도록 허용",
|
||||
"saving": "저장 중...",
|
||||
"active": "활성",
|
||||
"inactive": "비활성",
|
||||
"superuser": "슈퍼 관리자",
|
||||
"normalUser": "일반 사용자",
|
||||
"localModelPermission": "로컬 모델",
|
||||
"noPermission": "없음",
|
||||
"validation": {
|
||||
"usernameMinLength": "사용자 이름은 3자 이상이어야 합니다",
|
||||
"usernameMaxLength": "사용자 이름은 20자 이하여야 합니다",
|
||||
"emailInvalid": "유효한 이메일 주소를 입력하세요"
|
||||
}
|
||||
}
|
||||
59
qwen3-tts-frontend/src/locales/ko-KR/voice.json
Normal file
59
qwen3-tts-frontend/src/locales/ko-KR/voice.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"voiceDesign": "음성 디자인",
|
||||
"voiceClone": "음성 복제",
|
||||
"designName": "음성 이름",
|
||||
"designNamePlaceholder": "음성 이름을 입력하세요",
|
||||
"designDescription": "음성 설명",
|
||||
"designDescriptionPlaceholder": "음성 특징을 설명하세요...",
|
||||
"referenceAudio": "참조 오디오",
|
||||
"uploadReference": "참조 오디오 업로드",
|
||||
"referenceText": "참조 텍스트",
|
||||
"referenceTextPlaceholder": "참조 오디오의 텍스트 내용을 입력하세요...",
|
||||
"cloneName": "복제 이름",
|
||||
"cloneNamePlaceholder": "복제 음성 이름을 입력하세요",
|
||||
"cloneDescription": "복제 설명",
|
||||
"cloneDescriptionPlaceholder": "복제 음성을 설명하세요...",
|
||||
"uploadAudio": "오디오 업로드",
|
||||
"audioFile": "오디오 파일",
|
||||
"audioText": "오디오 텍스트",
|
||||
"audioTextPlaceholder": "오디오에 해당하는 텍스트를 입력하세요...",
|
||||
"saveVoice": "음성 저장",
|
||||
"savingVoice": "저장 중...",
|
||||
"voiceSaved": "음성이 저장되었습니다",
|
||||
"voiceSaveFailed": "음성 저장에 실패했습니다",
|
||||
"deleteVoice": "음성 삭제",
|
||||
"deleteVoiceConfirm": "이 음성을 삭제하시겠습니까?",
|
||||
"voiceDeleted": "음성이 삭제되었습니다",
|
||||
"voiceList": "음성 목록",
|
||||
"noVoices": "음성 없음",
|
||||
"selectVoice": "음성 선택",
|
||||
"voiceDetails": "음성 상세정보",
|
||||
"createdAt": "생성 시간",
|
||||
"updatedAt": "업데이트 시간",
|
||||
"step1Title": "오디오 소재",
|
||||
"step2Title": "합성 설정",
|
||||
"uploadTab": "오디오 업로드",
|
||||
"recordTab": "온라인 녹음",
|
||||
"refAudioLabel": "참조 오디오 파일",
|
||||
"refTextLabel": "참조 스크립트 (선택사항, 정확도 향상)",
|
||||
"refTextPlaceholder": "참조 오디오에 해당하는 텍스트 내용...",
|
||||
"nextStep": "다음",
|
||||
"prevStep": "이전",
|
||||
"readPrompt": "다음 단락 중 하나를 읽어주세요:",
|
||||
"currentRefText": "현재 참조 텍스트",
|
||||
"currentRefTextPlaceholder": "선택한 텍스트가 여기에 표시됩니다...",
|
||||
"languageOptional": "언어 (선택사항)",
|
||||
"fastMode": "고속 모드",
|
||||
"useCache": "캐시 사용",
|
||||
"uploadAudioFile": "오디오 업로드",
|
||||
"recordOnline": "온라인 녹음",
|
||||
"validationFailed": "파일 검증 실패",
|
||||
"validating": "검증 중...",
|
||||
"selectAudioFile": "오디오 파일 선택",
|
||||
"seconds": "초",
|
||||
"recordingValidationFailed": "녹음 검증 실패",
|
||||
"browserNotSupported": "브라우저가 녹음 기능을 지원하지 않습니다",
|
||||
"recordingComplete": "녹음 완료",
|
||||
"releaseToFinish": "놓아서 완료",
|
||||
"holdToRecord": "길게 눌러서 녹음"
|
||||
}
|
||||
Reference in New Issue
Block a user