kintex/mobile/lib/i18n/locales/ko.ts

209 lines
8.8 KiB
TypeScript

/*
* 한국어(ko) — 기본/폴백 로케일. **키 형상(shape)의 단일 출처.**
* 다른 로케일(en/zh/ja)은 이 파일의 타입(Resource)을 구현하므로 키 누락 시 tsc가 잡는다.
* 새 키는 반드시 여기에 먼저 추가하고 나머지 로케일을 맞춘다(병렬 편집 함정 회피 — 직렬·키 대조).
*/
export const ko = {
common: {
appName: 'KINTEX AI 전시관리',
loading: '확인 중…',
retry: '다시 시도',
cancel: '취소',
close: '닫기',
user: '사용자',
none: '-',
unknown: '알 수 없음',
error: '오류',
},
lang: {
title: '언어',
subtitle: '앱 표시 언어를 선택하세요. 선택은 이 기기에 저장됩니다.',
ko: '한국어',
en: 'English',
zh: '中文',
ja: '日本語',
},
roles: {
ORGANIZER: '주최자',
EXHIBITOR: '참가업체',
CONTRACTOR: '장치·시공업체',
HALL_MANAGER: '홀매니저',
},
nav: {
register: '회원가입',
forgotPassword: '비밀번호 찾기',
profile: '내 정보',
checklist: '현장 체크리스트',
inspection: '현장 검수',
ticketsIndex: '내 티켓',
ticketsSelect: '티켓 예매',
tabHome: '홈',
tabField: '현장',
tabGallery: '갤러리',
tabMore: '더보기',
},
login: {
brandTitle: '신청서를 내는 순간,\n시공 후 사진을 먼저 봅니다',
brandCaption: 'AI 생성 예상 이미지 · 실제 시공 결과와 다를 수 있습니다',
compromised:
'보안 위험이 감지된 기기입니다(루팅·후킹·디버거). 개인정보·티켓 보호를 위해 정상 기기에서 이용을 권장합니다.',
title: '로그인',
email: '이메일',
emailPlaceholder: 'name@company.co.kr',
password: '비밀번호',
passwordPlaceholder: '비밀번호',
otpLabel: '2차 인증 코드',
otpPlaceholder: '6자리 코드',
otpHelper: '인증 앱(TOTP)의 6자리 코드',
remember: '아이디 기억',
submit: '로그인',
submitOtp: '인증 후 로그인',
forgot: '비밀번호 찾기',
register: '회원가입',
errEmpty: '이메일과 비밀번호를 입력해 주세요.',
errOtpEmpty: '2차 인증 코드를 입력해 주세요.',
errOtpRequired: '2차 인증 코드가 필요합니다. 인증 앱의 코드를 입력해 주세요.',
errOtpInvalid: '인증 코드가 올바르지 않거나 만료되었습니다.',
errLocked: '로그인 시도 초과로 계정이 잠겼습니다. 잠시 후 다시 시도해 주세요.',
errGeneric: '로그인에 실패했습니다.',
},
register: {
title: '계정 만들기',
email: '이메일',
emailPlaceholder: 'name@company.co.kr',
name: '이름',
namePlaceholder: '홍길동',
password: '비밀번호',
passwordPlaceholder: '8자 이상',
passwordHelper: '8~100자',
company: '회사명 (선택)',
companyPlaceholder: '지오인포',
invite: '초대 코드 (선택)',
invitePlaceholder: '행사 초대 코드',
submit: '가입하기',
goLogin: '로그인으로 이동',
errInvalid: '이메일·이름·비밀번호(8자 이상)를 확인해 주세요.',
errEmailTaken: '이미 가입된 이메일입니다.',
errGeneric: '회원가입에 실패했습니다.',
doneJoined: '가입이 완료되었고 초대 행사에 연결되었습니다. 로그인해 주세요.',
done: '가입이 완료되었습니다. 로그인해 주세요.',
},
forgot: {
title: '비밀번호 재설정',
email: '이메일',
emailPlaceholder: 'name@company.co.kr',
request: '재설정 코드 요청',
code: '재설정 코드',
codePlaceholder: '6자리 코드',
newPassword: '새 비밀번호',
newPasswordPlaceholder: '8자 이상',
newPasswordHelper: '8~100자',
submit: '비밀번호 변경',
errEmail: '이메일을 입력해 주세요.',
errFields: '재설정 코드와 새 비밀번호(8자 이상)를 확인해 주세요.',
errCode: '재설정 코드가 올바르지 않거나 만료되었습니다.',
errRequest: '요청에 실패했습니다.',
errReset: '초기화에 실패했습니다.',
},
home: {
hello: '{{name}}님, 안녕하세요',
noEvent: '참여 중인 행사가 없습니다 — 초대 링크 또는 초대 코드를 확인해 주세요.',
progress: '진행 상태',
stepApply: '신청',
stepApprove: '승인',
stepBuild: '시공',
stepInspect: '검수',
actionChecklist: '현장 체크리스트',
actionInspection: '현장 검수',
actionGallery: '시각화 갤러리',
memberInternal: '킨텍스 내부 계정 (홀매니저)',
memberGeneral: '일반 계정',
},
field: {
title: '현장 업무',
guide: '현장 기능은 장치·시공업체(체크리스트)와 홀매니저(검수) 역할에서 제공됩니다.',
checklistTitle: '현장 체크리스트',
checklistDesc: '장치 공정 확인 · 사진 첨부 · 검수 요청',
inspectionTitle: '현장 검수',
inspectionDesc: '승인 도면 vs 현장 사진 · 적합/부적합 판정',
},
gallery: {
infoBar: 'AI 생성 이미지는 계약·심사 서류에 사용할 수 없습니다 — 시공 기준은 도면입니다',
degraded: '서버 이미지 이력에 연결할 수 없어 예시를 표시합니다 (degraded).',
empty: '아직 생성된 이미지가 없습니다 — 설계 스튜디오에서 예상 사진을 생성하세요.',
retry: '다시 생성',
studioNote: '설계 스튜디오는 데스크톱에서 편집',
notice: 'AI 생성 이미지는 계약·심사 서류에 사용할 수 없습니다 (시공 기준은 도면)',
},
more: {
accountInternal: '킨텍스 내부 계정 (홀매니저)',
accountGeneral: '일반 계정',
openProfile: '내 정보 열기',
apiServer: 'API 서버',
serverStatus: '서버 상태',
statusUp: '정상 (UP)',
statusDown: '연결 불가 (degraded)',
signOut: '로그아웃',
version: 'KINTEX AI 전시관리 · v0.1.0',
},
profile: {
sectionInfo: '내 정보',
sectionEventRoles: '참여 행사 역할',
sectionSecurity: '계정 · 보안',
sectionBiometric: '생체인식 잠금',
sectionNotify: '알림 설정',
labelName: '이름',
labelUserId: '사용자 ID',
labelGlobalRole: '전역 역할',
labelTenant: '전시관(테넌트)',
labelType: '구분',
typeInternal: '킨텍스 내부(홀매니저)',
typeGeneral: '일반 계정',
photoChange: '프로필 사진 변경',
photoTitle: '프로필 사진',
photoSelect: '사진을 선택하세요',
photoLibrary: '갤러리',
photoCamera: '카메라',
photoApply: '적용',
photoApplying: '적용 중…',
photoCaption: '원형으로 표시됩니다.',
photoPending: '선택한 사진은 이 기기에만 표시됩니다 — 서버 반영은 준비 중입니다.',
photoPickerUnavailable: '이미지 선택 기능을 사용할 수 없는 기기입니다.',
loadErr: '내정보를 불러오지 못했습니다.',
uploadErr: '사진 업로드에 실패했습니다.',
otpTitle: '2차 인증(OTP)',
otpOnAuth: '활성화됨 · Authenticator(OTP)',
otpOnMethod: '활성화됨 · {{method}}',
otpOff: '미설정 — 로그인 시 인증 앱(TOTP) 2단계 인증을 사용합니다.',
on: '켜짐',
off: '꺼짐',
bioTitle: '지문 · Face 잠금',
bioDesc:
'켜면 내정보 진입 시 지문 또는 Face로 재인증합니다. 로그인 2차 인증은 그대로 유지됩니다.',
bioUnsupported:
'이 기기는 생체인식을 지원하지 않거나 지문/Face가 등록되어 있지 않습니다. 기기 설정에서 생체 정보를 등록한 뒤 다시 시도해 주세요.',
bioFailed: '생체 인증에 실패했습니다. 다시 시도해 주세요.',
biometric: '생체인식',
lockTitle: '생체인식 잠금',
lockHint: '지문 또는 Face로 잠금을 해제하세요.',
notifyDeadline: '마감 D-데이 알림',
notifyApproval: '승인·검수 알림',
notifyPayment: '결제·정산 알림',
notifyNote: '알림 설정은 이 기기에 저장됩니다. 서버 동기화는 준비 중입니다.',
signOut: '로그아웃',
signOutConfirm: '로그아웃하시겠습니까?',
version: 'KINTEX AI 전시관리 · 내정보',
},
tickets: {
offline: '오프라인 — 저장된 티켓 표시 중',
badgeNotice: '티켓 QR로 현장 체크인하면 모바일 배지로 전환됩니다',
footNote: '표시된 티켓은 샘플입니다 — 티켓 백엔드(M10) 연동 시 실데이터로 대체됩니다.',
emptyTitle: '보유한 티켓이 없습니다',
emptyBody: '입장권을 예매하면 이곳에 티켓이 표시됩니다.',
emptyBtn: '입장권 예매',
detailTitle: '예매 상세·취소',
},
} as const;
export type Resource = typeof ko;