471 lines
23 KiB
TypeScript
471 lines
23 KiB
TypeScript
import { TranslationSchema } from '../types';
|
||
|
||
/**
|
||
* 한국어 번역. en.ts와 키 구조가 1:1로 대응해야 합니다.
|
||
*/
|
||
export const ko: TranslationSchema = {
|
||
// ── 에러 메시지 ─────────────────────────────────────────
|
||
errors: {
|
||
E1001: {
|
||
userMessage: '사용자 제한 값이 올바르지 않습니다.',
|
||
resolution: '0에서 99 사이의 숫자를 입력해 주세요. (0 = 무제한)',
|
||
},
|
||
E1002: {
|
||
userMessage: '채널 이름 형식이 올바르지 않습니다.',
|
||
resolution: '올바른 채널 이름을 입력해 주세요. (최대 100자)',
|
||
},
|
||
E1003: {
|
||
userMessage: '자기 자신에게는 이 작업을 수행할 수 없습니다.',
|
||
},
|
||
E1004: {
|
||
userMessage: '선택한 사용자가 음성 채널에 없습니다.',
|
||
resolution: '작업 전에 해당 사용자가 채널에 있는지 확인해 주세요.',
|
||
},
|
||
|
||
E2001: {
|
||
userMessage: '봇에게 채널을 관리할 권한이 부족합니다.',
|
||
resolution: '서버 관리자에게 봇에게 「채널 관리」 권한을 부여해 달라고 요청해 주세요.',
|
||
},
|
||
E2002: {
|
||
userMessage: '봇에게 음성 채널 관련 권한이 부족합니다.',
|
||
resolution:
|
||
'서버 관리자에게 봇에게 「채널 관리」, 「역할 관리」, 「멤버 이동」 권한을 부여해 달라고 요청해 주세요.',
|
||
},
|
||
E2003: {
|
||
userMessage: '이 명령을 사용할 권한이 없습니다.',
|
||
resolution: '이 명령은 관리자 권한이 필요합니다.',
|
||
},
|
||
E2004: {
|
||
userMessage: '채널 소유자만 이 컨트롤을 사용할 수 있습니다.',
|
||
},
|
||
E2005: {
|
||
userMessage: '활성화된 임시 음성 채널에 있어야 이 기능을 사용할 수 있습니다.',
|
||
resolution: '임시 음성 채널에 참가한 뒤 다시 시도해 주세요.',
|
||
},
|
||
E3001: {
|
||
userMessage: '요청을 처리하는 중 내부 오류가 발생했습니다.',
|
||
resolution: '잠시 후 다시 시도해 주세요. 문제가 계속되면 봇 관리자에게 문의해 주세요.',
|
||
},
|
||
E3002: {
|
||
userMessage: '요청을 처리하는 중 내부 오류가 발생했습니다.',
|
||
resolution: '잠시 후 다시 시도해 주세요.',
|
||
},
|
||
E3003: {
|
||
userMessage: '명령을 실행하는 중 오류가 발생했습니다.',
|
||
resolution: '다시 시도해 주세요. 문제가 계속되면 봇 관리자에게 문의해 주세요.',
|
||
},
|
||
E3999: {
|
||
userMessage: '예상치 못한 오류가 발생했습니다.',
|
||
resolution: '잠시 후 다시 시도해 주세요. 문제가 계속되면 봇 관리자에게 문의해 주세요.',
|
||
},
|
||
E4001: {
|
||
userMessage: 'Discord에 의해 요청이 제한되었습니다.',
|
||
resolution: '잠시 기다린 뒤 다시 시도해 주세요.',
|
||
},
|
||
E4002: {
|
||
userMessage: '권한 부족으로 Discord가 작업을 거부했습니다.',
|
||
resolution: '서버 관리자에게 봇의 역할 및 채널 권한을 확인해 달라고 요청해 주세요.',
|
||
},
|
||
E4003: {
|
||
userMessage: 'Discord 측 일시적인 문제가 발생했습니다.',
|
||
resolution:
|
||
'잠시 후 다시 시도해 주세요. 문제가 계속되면 https://discordstatus.com 에서 상태를 확인해 주세요.',
|
||
},
|
||
},
|
||
|
||
errorTitles: {
|
||
USER_INPUT: '입력을 확인해주세요',
|
||
PERMISSION: '권한이 부족합니다',
|
||
BOT_INTERNAL: '내부 오류가 발생했습니다.',
|
||
DISCORD_API: '일시적인 문제입니다.',
|
||
|
||
},
|
||
|
||
errorFields: {
|
||
resolution: '💡 해결 방법',
|
||
},
|
||
|
||
// ── 음성 채널 ───────────────────────────────────────────
|
||
|
||
voice: {
|
||
channelReady: '{{owner}}, 임시 채널이 준비되었습니다! 아래 드롭다운 메뉴로 관리하세요.',
|
||
defaultRoomName: '{{username}}의 방',
|
||
controlPanel: {
|
||
placeholder: '⚙️ 채널 설정 관리',
|
||
rename: '채널 이름 변경',
|
||
limit: '인원 제한 설정',
|
||
lock: '채널 잠금 / 해제',
|
||
kick: '유저 내보내기',
|
||
ban: '유저 차단 / 숨기기',
|
||
transfer: '소유권 이전',
|
||
},
|
||
|
||
responses: {
|
||
channelLocked: '채널이 잠겼습니다! 초대된 멤버만 참여할 수 있습니다.',
|
||
channelUnlocked: '채널 잠금이 해제되었습니다! 누구나 참여할 수 있습니다.',
|
||
channelRenamed: '채널 이름이 **{{name}}**(으)로 변경되었습니다!',
|
||
limitSet: '인원 제한이 **{{limit}}**명으로 설정되었습니다!',
|
||
limitUnlimited: '무제한',
|
||
kicked: '{{user}} 님을 채널에서 내보냈습니다.',
|
||
banned: '{{user}} 님에게 채널이 보이지 않도록 차단했습니다.',
|
||
transferPrompt: '채널의 새 소유자가 될 사용자를 선택하세요.',
|
||
transferDone: '소유권이 {{user}} 님에게 이전되었습니다.',
|
||
banPrompt: '차단하면 해당 사용자에게 채널이 보이지 않게 됩니다.',
|
||
},
|
||
},
|
||
|
||
commands: {
|
||
voiceSetup: {
|
||
description: '임시 음성 채널을 위한 생성기 채널을 설정합니다.',
|
||
setDescription: '기존 음성 채널을 생성기로 설정합니다.',
|
||
createDescription: '새 음성 채널을 만들고 생성기로 설정합니다.',
|
||
channelOptionDescription: '생성기로 사용할 음성 채널',
|
||
categoryOptionDescription: '(선택) 임시 채널이 생성될 카테고리',
|
||
nameOptionDescription: '새 생성기 음성 채널 이름',
|
||
setSuccess: '{{channel}}을(를) 음성 생성기 채널로 설정했습니다!',
|
||
createSuccess: '{{channel}}을(를) 음성 생성기 채널로 생성·설정했습니다!',
|
||
},
|
||
|
||
voiceConfig: {
|
||
description: '서버의 임시 음성 채널 설정을 관리합니다.',
|
||
setNameTitle: '기본 이름 템플릿 설정',
|
||
setNameDesc: '임시 채널 생성 시 사용할 기본 이름 형식을 설정합니다. (사용자명: {{username}})',
|
||
setLimitTitle: '기본 인원 제한 설정',
|
||
setLimitDesc: '임시 채널 생성 시 적용할 기본 인원 제한을 설정합니다.',
|
||
statusTitle: '현재 서버 음성 설정',
|
||
templateLabel: '이름 템플릿',
|
||
limitLabel: '기본 인원 제한',
|
||
setSuccess: '서버 임시 채널 설정이 업데이트되었습니다.',
|
||
|
||
limitValue: '{{limit}}명 (0 = 무제한)',
|
||
},
|
||
language: {
|
||
description: '봇의 언어를 설정합니다.',
|
||
scopeDescription: '본인에게만 또는 서버 전체에 적용',
|
||
localeDescription: '사용할 언어',
|
||
scopeUser: '나만 적용',
|
||
scopeServer: '서버 전체 (관리자 전용)',
|
||
userSet: '개인 언어가 **{{locale}}**(으)로 설정되었습니다.',
|
||
serverSet: '서버 언어가 **{{locale}}**(으)로 설정되었습니다.',
|
||
serverPermissionDenied: '서버 언어 변경은 서버 관리자만 할 수 있습니다.',
|
||
|
||
},
|
||
event: {
|
||
description: '서버 이벤트 일정을 관리합니다.',
|
||
createDescription: '새 서버 이벤트를 생성합니다.',
|
||
listDescription: '예정된 서버 이벤트 목록을 조회합니다.',
|
||
cancelDescription: '예약된 서버 이벤트를 취소합니다.',
|
||
announceDescription: '이벤트 공지 Embed를 다시 게시합니다.',
|
||
titleDescription: '이벤트 제목',
|
||
dateDescription: 'YYYY-MM-DD 형식의 날짜',
|
||
timeDescription: 'HH:mm 형식의 시간 (24시간제, Asia/Seoul 기준)',
|
||
descriptionOptionDescription: '선택 사항인 이벤트 설명',
|
||
channelDescription: '선택 사항인 공지 채널',
|
||
reminderDescription: '리마인더 메시지 사용 여부',
|
||
remindersDescription: '분 단위 리마인더 목록, 예: 0,10,60',
|
||
idDescription: '취소할 이벤트 ID',
|
||
createSuccessTitle: '이벤트 생성 완료',
|
||
createSuccessBody: '**{{title}}** 이벤트가 예약되었습니다.',
|
||
listTitle: '예정된 이벤트 목록',
|
||
listEmpty: '예정된 이벤트가 없습니다.',
|
||
listItemValue:
|
||
'**시작 시각:** {{startsAt}}\n**상대 시간:** {{relative}}\n**상태:** {{status}}\n**리마인더:** {{reminder}}\n**채널:** {{channel}}',
|
||
cancelSuccess: '`{{id}}` 이벤트가 취소되었습니다.',
|
||
cancelNotFound: 'ID가 `{{id}}`인 예약 이벤트를 찾을 수 없습니다.',
|
||
|
||
announceSuccess: '`{{id}}` 이벤트를 {{channel}} 채널에 공지했습니다.',
|
||
announceNotAvailable: '이 이벤트에는 사용할 수 있는 공지 채널이 설정되어 있지 않습니다.',
|
||
startAnnouncementTitle: '이벤트 시작',
|
||
startAnnouncementLead: '이 이벤트가 지금 시작됩니다.',
|
||
invalidDateTime: '이벤트 날짜 또는 시간 형식이 올바르지 않습니다.',
|
||
invalidDateTimeResolution: '날짜는 `YYYY-MM-DD`, 시간은 `HH:mm` 24시간 형식으로 입력해 주세요.',
|
||
invalidReminderOffsets: '리마인더 간격 입력 형식이 올바르지 않습니다.',
|
||
invalidReminderOffsetsResolution:
|
||
'`0,10,60`처럼 0 이상의 분을 쉼표로 구분해 입력해 주세요. 비우면 자동 공지를 사용하지 않습니다.',
|
||
invalidPastDateTime: '과거 시각으로는 이벤트를 예약할 수 없습니다.',
|
||
invalidPastDateTimeResolution: '미래 시각을 선택한 뒤 다시 시도해 주세요.',
|
||
|
||
statusScheduled: '예약됨',
|
||
statusCancelled: '취소됨',
|
||
statusCompleted: '완료됨',
|
||
reminderOn: '사용',
|
||
reminderOff: '사용 안 함',
|
||
reminderNone: '자동 공지 없음',
|
||
announcementChannelNone: '미설정',
|
||
fields: {
|
||
eventId: '이벤트 ID',
|
||
startsAt: '시작 시각',
|
||
reminder: '리마인더',
|
||
announcementChannel: '공지 채널',
|
||
status: '상태',
|
||
},
|
||
},
|
||
autorole: {
|
||
description: '입장 시 역할을 자동으로 부여하는 기능을 설정합니다.',
|
||
statusTitle: '자동 역할 부여 설정 상태',
|
||
userRoleLabel: '일반 유저 역할',
|
||
botRoleLabel: '봇 역할',
|
||
statusLabel: '유저 자동 부여',
|
||
botStatusLabel: '봇 자동 부여',
|
||
userRolePlaceholder: '유저 기본 역할을 선택하세요',
|
||
botRolePlaceholder: '봇 기본 역할을 선택하세요',
|
||
toggleUserEnable: '🟢 유저 자동부여 켜기',
|
||
toggleUserDisable: '🔴 유저 자동부여 끄기',
|
||
toggleBotEnable: '🟢 봇 자동부여 켜기',
|
||
toggleBotDisable: '🔴 봇 자동부여 끄기',
|
||
notSet: '미설정',
|
||
enabled: '활성',
|
||
disabled: '비활성',
|
||
updateSuccess: '자동 역할 설정이 업데이트되었습니다.',
|
||
permissionsError: '봇의 역할 순위가 낮거나 권한이 부족하여 역할을 부여할 수 없습니다.',
|
||
suspendNotice: '권한 부족으로 인해 자동 역할 부여 기능이 일시 중지되었습니다. 봇의 권한과 역할 순위를 확인해 주세요.',
|
||
},
|
||
music: {
|
||
description: '음성 채널에서 YouTube 오디오를 재생합니다.',
|
||
addDescription: 'YouTube를 검색하거나 영상 URL을 재생 목록에 추가합니다.',
|
||
queueDescription: '현재 음악 재생 목록을 표시합니다.',
|
||
removeDescription: '대기열에서 곡을 삭제합니다.',
|
||
pauseDescription: '현재 재생 중인 곡을 일시정지합니다.',
|
||
resumeDescription: '일시정지된 곡의 재생을 다시 시작합니다.',
|
||
skipDescription: '현재 재생 중인 곡을 건너뜁니다.',
|
||
stopDescription: '재생을 중지하고 대기열을 비웁니다.',
|
||
leaveDescription: '봇을 음성 채널에서 내보냅니다.',
|
||
queryDescription: 'YouTube 검색어',
|
||
urlDescription: 'YouTube 영상 URL',
|
||
indexDescription: '대기열에서 삭제할 인덱스',
|
||
addMutuallyExclusive: '검색어와 YouTube URL 중 하나만 선택하세요.',
|
||
addMutuallyExclusiveResolution: '`query` 또는 `url` 중 정확히 하나만 입력하세요.',
|
||
notInVoice: '음악 명령을 사용하려면 음성 채널에 있어야 합니다.',
|
||
notInVoiceResolution: '먼저 음성 채널에 참가한 뒤 다시 시도하세요.',
|
||
differentVoiceChannel: '다른 음성 채널에서 이미 음악이 재생 중입니다.',
|
||
differentVoiceChannelResolution: '봇과 같은 음성 채널에 들어가거나, 현재 세션이 끝날 때까지 기다리세요.',
|
||
noSearchResults: '해당 검색어로 YouTube 결과를 찾지 못했습니다.',
|
||
noSearchResultsResolution: '검색어를 구체적으로 바꾸거나 YouTube URL을 직접 지정하세요.',
|
||
invalidUrl: '제공한 YouTube URL이 올바르지 않습니다.',
|
||
invalidUrlResolution: '일반적인 `youtube.com` 또는 `youtu.be` 영상 링크를 사용하세요.',
|
||
noActiveSession: '이 서버에 활성 음악 세션이 없습니다.',
|
||
noActiveSessionResolution: '먼저 곡을 추가해 재생을 시작하세요.',
|
||
queueAddedNowPlaying: '**{{title}}**을(를) 추가하고 {{channel}}에서 재생을 시작했습니다.',
|
||
queueAddedLater: '**{{title}}**을(를) 대기열에 추가했습니다. 순번: `#{{position}}`.',
|
||
playlistAddedNowPlaying: '플레이리스트에서 **{{count}}**곡을 추가하고 {{channel}}에서 재생을 시작했습니다.',
|
||
playlistAddedLater: '플레이리스트에서 **{{count}}**곡을 대기열에 추가했습니다.',
|
||
queueTitle: '음악 대기열',
|
||
queueEmpty: '대기열이 비어 있습니다.',
|
||
queueNowPlaying: '지금 재생 중',
|
||
queueUpcoming: '다음 재생',
|
||
queueMoreItems: '… 외 **{{count}}**곡 더 있음',
|
||
queueRemoved: '대기열에서 **{{title}}**을(를) 제거했습니다.',
|
||
queueRemoveOutOfRange: '해당 대기열 번호가 없습니다.',
|
||
queueRemoveOutOfRangeResolution: '먼저 `/music queue`로 현재 대기열 번호를 확인하세요.',
|
||
pauseSuccess: '현재 곡을 일시정지했습니다.',
|
||
resumeSuccess: '재생을 재개했습니다.',
|
||
skipSuccess: '현재 곡을 건너뛰었습니다.',
|
||
leaveSuccess: '음성 채널에서 나가고 대기열을 비웠습니다.',
|
||
stopSuccess: '재생을 중지하고 대기열을 비웠습니다.',
|
||
playbackStartedTitle: '지금 재생 중',
|
||
playbackIdleTitle: '대기열 종료',
|
||
playbackIdleBody: '대기열에 더 이상 곡이 없습니다.',
|
||
playbackFailed: '**{{title}}** 재생에 실패했습니다. 다음 곡으로 넘어갑니다.',
|
||
playbackFailedResolution: 'YouTube에서 스트림을 불러오지 못했습니다.',
|
||
streamUnavailable: '이 영상의 재생 가능한 오디오 스트림을 불러올 수 없습니다.',
|
||
streamUnavailableResolution: '다른 영상을 시도하거나 나중에 다시 추가해 보세요.',
|
||
requestedBy: '요청자',
|
||
duration: '길이',
|
||
progress: '진행',
|
||
source: '출처',
|
||
status: '상태',
|
||
queueLength: '대기열 길이',
|
||
nextTrack: '다음 곡',
|
||
statusPlaying: '재생 중',
|
||
statusPaused: '일시정지',
|
||
unknownDuration: '알 수 없음',
|
||
buttons: {
|
||
pause: '일시정지',
|
||
resume: '재개',
|
||
skip: '건너뛰기',
|
||
stop: '중지',
|
||
leave: '나가기',
|
||
},
|
||
},
|
||
fishing: {
|
||
description: '낚시 미니게임을 플레이합니다.',
|
||
enterDescription: '낚시 전용 스레드를 생성하거나 다시 엽니다.',
|
||
castDescription: '자신의 낚시 스레드 안에서 낚시 세션을 시작합니다.',
|
||
endDescription: '낚시 스레드를 종료하고 삭제합니다.',
|
||
statusDescription: '낚시 통계를 확인합니다.',
|
||
dexDescription: '낚시 도감을 확인합니다.',
|
||
rankingDescription: '이 서버의 물고기 크기 랭킹을 확인합니다.',
|
||
disabled: '이 서버에서는 낚시 미니게임이 비활성화되어 있습니다.',
|
||
restrictedChannel: '낚시는 {{channel}} 채널에서만 시작할 수 있습니다.',
|
||
enterTextChannelOnly: '낚시 스레드는 일반 텍스트 채널에서만 열 수 있습니다.',
|
||
enterExistingThread: '이미 {{thread}}에 자신의 낚시 스레드가 열려 있습니다.',
|
||
enterCreated: '{{thread}}에 낚시 스레드를 만들었습니다.',
|
||
castThreadOnly: '/fishing cast는 자신의 낚시 스레드 안에서만 사용할 수 있습니다.',
|
||
startExistingSession: '이미 {{thread}}에서 진행 중인 낚시 세션이 있습니다.',
|
||
startCreated: '{{thread}}에서 낚시 세션을 시작했습니다.',
|
||
noActiveSession: '종료할 낚시 세션이나 스레드가 없습니다.',
|
||
ownerOnly: '이 낚시 세션의 소유자만 조작할 수 있습니다.',
|
||
wrongThread: '이 조작은 자신의 낚시 스레드 안에서만 사용할 수 있습니다.',
|
||
endDeleted: '낚시 스레드를 종료했습니다. 스레드를 삭제합니다.',
|
||
profileTitle: '{{user}}의 낚시 프로필',
|
||
profileEmpty: '아직 낚시 기록이 없습니다.',
|
||
dexTitle: '{{user}}의 낚시 도감',
|
||
dexEmpty: '아직 발견한 물고기가 없습니다.',
|
||
rankingTitle: '낚시 크기 랭킹',
|
||
rankingEmpty: '아직 이 서버에 낚시 기록이 없습니다.',
|
||
titleActive: '낚시 세션',
|
||
titleEnded: '낚시 세션 종료',
|
||
status: '상태',
|
||
rarity: '레어도',
|
||
size: '크기',
|
||
catchCount: '포획 수',
|
||
bestRarity: '최고 레어도',
|
||
bestSize: '최고 크기',
|
||
targetFish: '대상 물고기',
|
||
distance: '거리',
|
||
tension: '끊어짐 게이지',
|
||
reward: '보상',
|
||
successRate: '성공률',
|
||
totalCasts: '총 시도',
|
||
totalGoldEarned: '누적 골드',
|
||
bestCatchReward: '최고 보상',
|
||
rarityBreakdown: '레어도별 포획',
|
||
lastCastAt: '최근 낚시',
|
||
noRecord: '기록 없음',
|
||
threadHint: '/fishing cast로 다시 시작하거나 /fishing end로 스레드를 삭제할 수 있습니다.',
|
||
catchResultTitle: '낚시 성공!',
|
||
catchResultBody: '**{{rarity}} {{fish}}**를 낚았습니다. 크기는 **{{sizeCm}} cm**, 보상은 **{{reward}} G**입니다.',
|
||
states: {
|
||
hooked: '입질 중',
|
||
resting: '휴식 중',
|
||
tense: '당기는 중',
|
||
missed: '타이밍 빗나감',
|
||
success: '낚시 성공',
|
||
failed: '줄이 끊어짐',
|
||
},
|
||
},
|
||
permissionAudit: {
|
||
title: '봇 권한 진단 보고서',
|
||
channel: '채널',
|
||
noResults: '진단할 기능이 없습니다. 봇이 아직 설정되지 않았을 수 있습니다.',
|
||
summaryLabel: '진단 결과 요약',
|
||
summaryOk: '모든 항목 정상. 문제가 없습니다.',
|
||
summaryIssue: '{{fail}}건 실패 · {{warn}}건 경고가 있습니다.',
|
||
hierarchyWarning:
|
||
"봇 역할(위치: {{botPos}})이 '{{role}}'(위치: {{targetPos}})보다 위에 있어야 해당 역할을 관리할 수 있습니다.",
|
||
|
||
features: {
|
||
BASIC: '기본 봇 기능',
|
||
VOICE_GLOBAL: '임시 음성 채널 (전역)',
|
||
VOICE_GENERATOR_CHANNEL: '음성 생성기 채널',
|
||
VOICE_GENERATOR_CATEGORY: '음성 생성기 카테고리',
|
||
|
||
MIMIC_WEBHOOK: '메시지 흉내 (Webhook)',
|
||
},
|
||
},
|
||
setup: {
|
||
description: '설정 마법사를 실행해 봇의 필수 기능을 단계별로 설정합니다.',
|
||
step0: {
|
||
title: '봇 설정 마법사 시작',
|
||
desc:
|
||
'환영합니다! 이 마법사로 아래 4가지 항목을 설정합니다.\n\n1단계 **언어 설정**\n2단계 **필수 권한 확인**\n3단계 **감사 채널 설정**\n4단계 **임시 음성 채널 설정**',
|
||
startBtn: '설정 시작하기',
|
||
},
|
||
step1: {
|
||
title: '1단계 언어 설정',
|
||
desc: '서버 전체에 적용될 봇의 기본 언어를 선택하세요. (현재: **{{locale}}**)',
|
||
placeholder: '언어를 선택하세요',
|
||
nextBtn: '다음 단계',
|
||
skipBtn: '건너뛰기',
|
||
},
|
||
step2: {
|
||
title: '2단계 필수 권한 확인',
|
||
descOk: '**필요한 권한이 모두 부여되어 있습니다.**',
|
||
descFail:
|
||
'**일부 권한이 부족합니다.**\n결과를 확인하고 봇 역할에 필요한 기능 권한을 부여해 주세요.',
|
||
recheckBtn: '다시 검사하기',
|
||
nextBtn: '다음 단계',
|
||
},
|
||
step3: {
|
||
title: '3단계 감사 채널 설정',
|
||
desc: '봇 이벤트와 오류 로그를 받을 채널을 선택하세요.',
|
||
placeholder: '감사 로그 채널 선택',
|
||
disableBtn: '감사 로그 끄기',
|
||
nextBtn: '다음 단계',
|
||
},
|
||
step4: {
|
||
title: '3-1단계 감사 로그 카테고리',
|
||
desc: '받을 로그 카테고리를 선택하세요. **초록**은 켜짐, **빨강**은 꺼짐입니다.',
|
||
nextBtn: '다음 단계',
|
||
},
|
||
step5: {
|
||
title: '4단계 임시 음성 채널 설정',
|
||
desc:
|
||
'임시 음성 채널의 「생성기 채널」을 선택하세요.\n기존 채널을 고르거나 카테고리/채널을 봇이 **자동 생성**하게 할 수도 있습니다.',
|
||
placeholder: '생성기로 쓸 음성 채널 선택',
|
||
autoBtn: '자동 생성하기',
|
||
skipBtn: '임시 음성 사용 안 함',
|
||
nextBtn: '설정 완료',
|
||
},
|
||
step6: {
|
||
title: '설정 요약',
|
||
desc: '**1. 언어**: {{lang}}\n**2. 감사 채널**: {{audit}}\n**3. 감사 카테고리**: {{categories}}\n**4. 임시 음성 채널**: {{voice}}',
|
||
finishBtn: '마치기',
|
||
},
|
||
finished: '설정 마법사를 완료했습니다.',
|
||
expired: '시간이 만료되었습니다. `/setup`을 다시 실행해 주세요.',
|
||
defaultCategoryName: '음성 채널',
|
||
defaultGeneratorName: '채널 생성하기',
|
||
|
||
auditCategories: {
|
||
SYSTEM: '시스템',
|
||
BOOT: '부팅',
|
||
VOICE: '음성',
|
||
PERMISSION: '권한',
|
||
|
||
},
|
||
},
|
||
config: {
|
||
title: '기능 설정 변경 결과',
|
||
noOptions: '변경할 옵션을 하나 이상 선택해 주세요.',
|
||
mimic: {
|
||
label: '흉내(Mimic)',
|
||
enabled: '활성',
|
||
disabled: '비활성',
|
||
},
|
||
emoji: {
|
||
label: '큰 이모지(Big Emoji)',
|
||
enabled: '활성',
|
||
disabled: '비활성',
|
||
},
|
||
},
|
||
},
|
||
|
||
|
||
// ── 모달 ────────────────────────────────────────────────
|
||
|
||
modals: {
|
||
renameTitle: '음성 채널 이름 변경',
|
||
renameLabel: '새 채널 이름',
|
||
limitTitle: '인원 제한 설정',
|
||
limitLabel: '인원 제한 (0 = 무제한, 1–99)',
|
||
},
|
||
|
||
// ── 셀렉트 메뉴 플레이스홀더 ────────────────────────────
|
||
|
||
selects: {
|
||
kickUser: '추방할 유저를 선택하세요',
|
||
banUser: '차단할 유저를 선택하세요',
|
||
transferOwner: '소유권을 이전할 유저를 선택하세요',
|
||
},
|
||
|
||
// ── 상태 메시지 ──────────────────────────────────────────
|
||
|
||
presence: {
|
||
servers: '{{guildCount}}개의 서버에서 작동 중',
|
||
help: '/help 명령어를 확인하세요',
|
||
managing: '임시 음성 채널 관리 중',
|
||
version: 'Kord v1.0.0',
|
||
},
|
||
};
|