mirror of
https://github.com/beilunyang/moemail.git
synced 2025-12-24 11:30:51 +08:00
feat(i18n): add Korean language support
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
export const locales = ['en', 'zh-CN', 'zh-TW', 'ja'] as const
|
||||
export const locales = ['en', 'zh-CN', 'zh-TW', 'ja', 'ko'] as const
|
||||
export type Locale = typeof locales[number]
|
||||
|
||||
export const LOCALE_LABELS: Record<Locale, string> = {
|
||||
@@ -6,6 +6,7 @@ export const LOCALE_LABELS: Record<Locale, string> = {
|
||||
"zh-CN": "简体中文",
|
||||
"zh-TW": "繁體中文",
|
||||
ja: "日本語",
|
||||
ko: "한국어",
|
||||
}
|
||||
|
||||
export const defaultLocale: Locale = 'en'
|
||||
|
||||
46
app/i18n/messages/ko/auth.json
Normal file
46
app/i18n/messages/ko/auth.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"signButton": {
|
||||
"login": "로그인 / 회원가입",
|
||||
"logout": "로그아웃",
|
||||
"userAvatar": "사용자 아바타",
|
||||
"linked": "연결됨"
|
||||
},
|
||||
"loginForm": {
|
||||
"title": "MoeMail에 오신 것을 환영합니다",
|
||||
"subtitle": "귀여운 임시 이메일 서비스 (。・∀・)ノ",
|
||||
"tabs": {
|
||||
"login": "로그인",
|
||||
"register": "회원가입"
|
||||
},
|
||||
"fields": {
|
||||
"username": "사용자 이름",
|
||||
"password": "비밀번호",
|
||||
"confirmPassword": "비밀번호 확인"
|
||||
},
|
||||
"actions": {
|
||||
"login": "로그인",
|
||||
"register": "회원가입",
|
||||
"or": "또는",
|
||||
"githubLogin": "GitHub로 로그인"
|
||||
},
|
||||
"errors": {
|
||||
"usernameRequired": "사용자 이름을 입력해주세요",
|
||||
"passwordRequired": "비밀번호를 입력해주세요",
|
||||
"confirmPasswordRequired": "비밀번호를 확인해주세요",
|
||||
"usernameInvalid": "사용자 이름에 @ 기호를 포함할 수 없습니다",
|
||||
"passwordTooShort": "비밀번호는 최소 8자 이상이어야 합니다",
|
||||
"passwordMismatch": "비밀번호가 일치하지 않습니다"
|
||||
},
|
||||
"toast": {
|
||||
"loginFailed": "로그인 실패",
|
||||
"loginFailedDesc": "사용자 이름 또는 비밀번호가 올바르지 않습니다",
|
||||
"registerFailed": "회원가입 실패",
|
||||
"registerFailedDesc": "나중에 다시 시도해주세요",
|
||||
"autoLoginFailed": "자동 로그인 실패, 수동으로 로그인해주세요",
|
||||
"turnstileRequired": "인증을 완료해주세요",
|
||||
"turnstileRequiredDesc": "계속하기 전에 아래의 Turnstile 인증을 완료해주세요",
|
||||
"registerSuccess": "회원가입 성공",
|
||||
"registerSuccessDesc": "로그인 탭으로 이동하여 인증을 완료하고 로그인해주세요"
|
||||
}
|
||||
}
|
||||
}
|
||||
19
app/i18n/messages/ko/common.json
Normal file
19
app/i18n/messages/ko/common.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"app": {
|
||||
"name": "MoeMail"
|
||||
},
|
||||
"actions": {
|
||||
"ok": "확인",
|
||||
"cancel": "취소",
|
||||
"save": "저장",
|
||||
"delete": "삭제"
|
||||
},
|
||||
"nav": {
|
||||
"home": "홈",
|
||||
"login": "로그인",
|
||||
"profile": "프로필",
|
||||
"logout": "로그아웃",
|
||||
"backToMailbox": "메일함으로 돌아가기"
|
||||
},
|
||||
"github": "소스 코드 받기"
|
||||
}
|
||||
169
app/i18n/messages/ko/emails.json
Normal file
169
app/i18n/messages/ko/emails.json
Normal file
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"noPermission": {
|
||||
"title": "권한 부족",
|
||||
"description": "이 페이지에 접근할 권한이 없습니다. 웹사이트 관리자에게 문의하세요.",
|
||||
"adminContact": "관리자 연락처",
|
||||
"backToHome": "홈으로 돌아가기",
|
||||
"needPermission": "API Key를 관리하려면 공작 이상의 권한이 필요합니다",
|
||||
"contactAdmin": "역할 업그레이드를 위해 웹사이트 관리자에게 문의하세요"
|
||||
},
|
||||
"layout": {
|
||||
"myEmails": "내 이메일",
|
||||
"selectEmail": "메시지를 보려면 이메일을 선택하세요",
|
||||
"messageContent": "메시지 내용",
|
||||
"selectMessage": "세부 정보를 보려면 메시지를 선택하세요",
|
||||
"backToEmailList": "← 이메일 목록으로 돌아가기",
|
||||
"backToMessageList": "← 메시지 목록으로 돌아가기"
|
||||
},
|
||||
"list": {
|
||||
"emailCount": "{count}/{max} 이메일",
|
||||
"emailCountUnlimited": "{count}/∞ 이메일",
|
||||
"loading": "로딩 중...",
|
||||
"loadingMore": "더 불러오는 중...",
|
||||
"noEmails": "아직 이메일이 없습니다. 하나 만들어보세요!",
|
||||
"expiresAt": "만료",
|
||||
"permanent": "영구",
|
||||
"deleteConfirm": "삭제 확인",
|
||||
"deleteDescription": "{email}을(를) 삭제하시겠습니까? 이 메일함의 모든 메시지도 함께 삭제되며 되돌릴 수 없습니다.",
|
||||
"deleteSuccess": "이메일이 성공적으로 삭제되었습니다",
|
||||
"deleteFailed": "이메일 삭제에 실패했습니다",
|
||||
"error": "오류",
|
||||
"success": "성공"
|
||||
},
|
||||
"create": {
|
||||
"title": "이메일 생성",
|
||||
"name": "이메일 접두사",
|
||||
"namePlaceholder": "비워두면 무작위로 생성됩니다",
|
||||
"domain": "도메인",
|
||||
"domainPlaceholder": "도메인 선택",
|
||||
"expiryTime": "유효 기간",
|
||||
"oneHour": "1시간",
|
||||
"oneDay": "1일",
|
||||
"threeDays": "3일",
|
||||
"permanent": "영구",
|
||||
"create": "생성",
|
||||
"creating": "생성 중...",
|
||||
"success": "이메일이 성공적으로 생성되었습니다",
|
||||
"failed": "이메일 생성에 실패했습니다"
|
||||
},
|
||||
"messages": {
|
||||
"received": "받은 편지함",
|
||||
"sent": "보낸 편지함",
|
||||
"noMessages": "아직 메시지가 없습니다",
|
||||
"messageCount": "메시지",
|
||||
"from": "보낸 사람",
|
||||
"to": "받는 사람",
|
||||
"subject": "제목",
|
||||
"date": "날짜",
|
||||
"loading": "로딩 중...",
|
||||
"loadingMore": "더 불러오는 중..."
|
||||
},
|
||||
"send": {
|
||||
"title": "이메일 보내기",
|
||||
"from": "보낸 사람",
|
||||
"to": "받는 사람",
|
||||
"toPlaceholder": "받는 사람 이메일 주소",
|
||||
"subject": "제목",
|
||||
"subjectPlaceholder": "이메일 제목",
|
||||
"content": "내용",
|
||||
"contentPlaceholder": "이메일 내용 (HTML 지원)",
|
||||
"send": "보내기",
|
||||
"sending": "보내는 중...",
|
||||
"success": "이메일이 성공적으로 전송되었습니다",
|
||||
"failed": "이메일 전송에 실패했습니다",
|
||||
"dailyLimitReached": "일일 전송 제한에 도달했습니다",
|
||||
"dailyLimit": "일일 제한: {count}/{max}",
|
||||
"dailyLimitUnit": "이메일/일"
|
||||
},
|
||||
"messageView": {
|
||||
"loading": "메시지 세부 정보 로딩 중...",
|
||||
"loadError": "메시지 세부 정보 로드 실패",
|
||||
"networkError": "네트워크 오류, 나중에 다시 시도해주세요",
|
||||
"retry": "다시 시도하려면 클릭하세요",
|
||||
"from": "보낸 사람",
|
||||
"to": "받는 사람",
|
||||
"time": "시간",
|
||||
"htmlFormat": "HTML 형식",
|
||||
"textFormat": "일반 텍스트 형식"
|
||||
},
|
||||
"share": {
|
||||
"title": "메일함 공유",
|
||||
"description": "다른 사람이 이 메일함의 이메일을 볼 수 있도록 공유 링크 생성",
|
||||
"createLink": "링크 생성",
|
||||
"creating": "생성 중...",
|
||||
"loading": "로딩 중...",
|
||||
"expiryTime": "링크 만료",
|
||||
"oneHour": "1시간",
|
||||
"oneDay": "1일",
|
||||
"threeDays": "3일",
|
||||
"oneWeek": "1주",
|
||||
"permanent": "영구",
|
||||
"activeLinks": "활성 공유 링크",
|
||||
"noLinks": "아직 공유 링크가 없습니다",
|
||||
"createdAt": "생성됨",
|
||||
"expiresAt": "만료",
|
||||
"expired": "만료됨",
|
||||
"copy": "링크 복사",
|
||||
"copied": "복사됨",
|
||||
"copyFailed": "복사 실패",
|
||||
"delete": "삭제",
|
||||
"deleteConfirm": "공유 링크를 삭제하시겠습니까?",
|
||||
"deleteDescription": "이 작업은 되돌릴 수 없습니다. 공유 링크가 즉시 무효화됩니다.",
|
||||
"cancel": "취소",
|
||||
"deleteSuccess": "성공적으로 삭제되었습니다",
|
||||
"deleteFailed": "삭제에 실패했습니다",
|
||||
"createSuccess": "공유 링크가 성공적으로 생성되었습니다",
|
||||
"createFailed": "공유 링크 생성에 실패했습니다",
|
||||
"shareButton": "공유"
|
||||
},
|
||||
"shareMessage": {
|
||||
"title": "메시지 공유",
|
||||
"description": "다른 사람이 이 메시지를 볼 수 있도록 공유 링크 생성",
|
||||
"createLink": "링크 생성",
|
||||
"creating": "생성 중...",
|
||||
"loading": "로딩 중...",
|
||||
"expiryTime": "링크 만료",
|
||||
"oneHour": "1시간",
|
||||
"oneDay": "1일",
|
||||
"threeDays": "3일",
|
||||
"oneWeek": "1주",
|
||||
"permanent": "영구",
|
||||
"activeLinks": "활성 공유 링크",
|
||||
"noLinks": "아직 공유 링크가 없습니다",
|
||||
"createdAt": "생성됨",
|
||||
"expiresAt": "만료",
|
||||
"expired": "만료됨",
|
||||
"copy": "링크 복사",
|
||||
"copied": "복사됨",
|
||||
"copyFailed": "복사 실패",
|
||||
"delete": "삭제",
|
||||
"deleteConfirm": "공유 링크를 삭제하시겠습니까?",
|
||||
"deleteDescription": "이 작업은 되돌릴 수 없습니다. 공유 링크가 즉시 무효화됩니다.",
|
||||
"cancel": "취소",
|
||||
"deleteSuccess": "성공적으로 삭제되었습니다",
|
||||
"deleteFailed": "삭제에 실패했습니다",
|
||||
"createSuccess": "공유 링크가 성공적으로 생성되었습니다",
|
||||
"createFailed": "공유 링크 생성에 실패했습니다",
|
||||
"shareButton": "메시지 공유"
|
||||
},
|
||||
"shared": {
|
||||
"loading": "로딩 중...",
|
||||
"emailNotFound": "메일함에 접근할 수 없습니다",
|
||||
"messageNotFound": "메시지에 접근할 수 없습니다",
|
||||
"linkExpired": "공유 링크가 존재하지 않거나 만료되었습니다",
|
||||
"linkInvalid": "유효하지 않은 링크",
|
||||
"linkInvalidDescription": "이 공유 링크가 만료되었거나 존재하지 않을 수 있습니다",
|
||||
"sharedMailbox": "공유된 메일함",
|
||||
"sharedMessage": "공유된 메시지",
|
||||
"expiresAt": "만료 시간",
|
||||
"permanent": "영구",
|
||||
"createOwnEmail": "나만의 임시 이메일 만들기",
|
||||
"brand": {
|
||||
"title": "MoeMail",
|
||||
"subtitle": "귀여운 임시 이메일 서비스",
|
||||
"cta": "지금 사용해보기",
|
||||
"officialSite": "공식 사이트",
|
||||
"copyright": "© 2024 MoeMail. 귀여운 임시 이메일 서비스"
|
||||
}
|
||||
}
|
||||
}
|
||||
26
app/i18n/messages/ko/home.json
Normal file
26
app/i18n/messages/ko/home.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"title": "MoeMail",
|
||||
"subtitle": "귀여운 임시 이메일 서비스",
|
||||
"features": {
|
||||
"privacy": {
|
||||
"title": "개인정보 보호",
|
||||
"description": "실제 이메일 주소 보호"
|
||||
},
|
||||
"instant": {
|
||||
"title": "이메일 공유",
|
||||
"description": "다른 사람과 메일함 공유"
|
||||
},
|
||||
"expiry": {
|
||||
"title": "자동 만료",
|
||||
"description": "기한이 되면 자동으로 만료"
|
||||
},
|
||||
"openapi": {
|
||||
"title": "Open API",
|
||||
"description": "전체 OpenAPI 인터페이스 제공"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"enterMailbox": "메일함 입장",
|
||||
"getStarted": "시작하기"
|
||||
}
|
||||
}
|
||||
5
app/i18n/messages/ko/metadata.json
Normal file
5
app/i18n/messages/ko/metadata.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "MoeMail - 귀여운 임시 이메일 서비스 · Open API",
|
||||
"description": "안전하고 빠르며 일회용 임시 이메일 주소. 개인정보를 보호하고 스팸으로부터 자유로워지세요. 이메일 공유, 자동 만료 기능을 갖춘 즉시 배송. 개발자와 자동화 테스트를 위한 완전한 OpenAPI 인터페이스.",
|
||||
"keywords": "임시 이메일, 일회용 이메일, 익명 이메일, 이메일 공유, 개인정보 보호, 스팸 필터, 즉시 배송, 자동 만료, 안전한 이메일, 인증 이메일, 임시 계정, 전화번호 불필요, 개발자 도구, 자동화 테스트, 이메일 API, OpenAPI, API 인터페이스, RESTful API, API Key, 개발자 친화적, MoeMail"
|
||||
}
|
||||
139
app/i18n/messages/ko/profile.json
Normal file
139
app/i18n/messages/ko/profile.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"title": "프로필",
|
||||
"card": {
|
||||
"title": "사용자 정보",
|
||||
"name": "이름",
|
||||
"role": "역할",
|
||||
"roles": {
|
||||
"EMPEROR": "황제",
|
||||
"DUKE": "공작",
|
||||
"KNIGHT": "기사",
|
||||
"CIVILIAN": "평민"
|
||||
}
|
||||
},
|
||||
"apiKey": {
|
||||
"title": "API Key 관리",
|
||||
"description": "OpenAPI 접근을 위한 API 키 생성 및 관리",
|
||||
"create": "API Key 생성",
|
||||
"name": "키 이름",
|
||||
"namePlaceholder": "키 이름 입력",
|
||||
"key": "API Key",
|
||||
"createdAt": "생성 날짜",
|
||||
"copy": "복사",
|
||||
"delete": "삭제",
|
||||
"noKeys": "아직 API 키가 없습니다",
|
||||
"createSuccess": "API 키가 성공적으로 생성되었습니다",
|
||||
"createFailed": "API 키 생성에 실패했습니다",
|
||||
"deleteConfirm": "삭제 확인",
|
||||
"deleteDescription": "API 키 {name}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||||
"deleteSuccess": "API 키가 성공적으로 삭제되었습니다",
|
||||
"deleteFailed": "API 키 삭제에 실패했습니다",
|
||||
"viewDocs": "문서 보기",
|
||||
"docs": {
|
||||
"getConfig": "시스템 설정 가져오기",
|
||||
"generateEmail": "임시 이메일 생성",
|
||||
"getEmails": "이메일 목록 가져오기",
|
||||
"getMessages": "메시지 목록 가져오기",
|
||||
"getMessage": "단일 메시지 가져오기",
|
||||
"createEmailShare": "이메일 공유 링크 생성",
|
||||
"getEmailShares": "이메일 공유 링크 가져오기",
|
||||
"deleteEmailShare": "이메일 공유 링크 삭제",
|
||||
"createMessageShare": "메시지 공유 링크 생성",
|
||||
"getMessageShares": "메시지 공유 링크 가져오기",
|
||||
"deleteMessageShare": "메시지 공유 링크 삭제",
|
||||
"notes": "참고:",
|
||||
"note1": "YOUR_API_KEY를 실제 API Key로 교체하세요",
|
||||
"note2": "/api/config 엔드포인트는 사용 가능한 이메일 도메인을 포함한 시스템 설정을 제공합니다",
|
||||
"note3": "emailId는 이메일의 고유 식별자입니다",
|
||||
"note4": "messageId는 메시지의 고유 식별자입니다",
|
||||
"note5": "expiryTime은 밀리초 단위의 유효 기간입니다: 3600000 (1시간), 86400000 (1일), 604800000 (7일), 0 (영구)",
|
||||
"note6": "domain은 이메일 도메인이며, /api/config 엔드포인트에서 사용 가능한 도메인을 가져올 수 있습니다",
|
||||
"note7": "cursor는 페이지네이션을 위한 것으로, 이전 응답에서 nextCursor를 가져옵니다",
|
||||
"note8": "모든 요청에는 X-API-Key 헤더가 필요합니다",
|
||||
"note9": "expiresIn은 공유 링크 유효 기간(밀리초)이며, 0은 영구를 의미합니다",
|
||||
"note10": "shareId는 공유 기록의 고유 식별자입니다"
|
||||
}
|
||||
},
|
||||
"emailService": {
|
||||
"title": "Resend 이메일 서비스 설정",
|
||||
"configRoleLabel": "설정 가능한 역할 권한",
|
||||
"enable": "이메일 서비스 활성화",
|
||||
"fixedRoleLimits": "고정 역할 제한",
|
||||
"emperorLimit": "황제는 제한 없이 무제한 이메일을 보낼 수 있습니다",
|
||||
"civilianLimit": "이메일을 보낼 수 없습니다",
|
||||
"enableDescription": "활성화되면 Resend를 사용하여 이메일을 보냅니다",
|
||||
"apiKey": "Resend API Key",
|
||||
"apiKeyPlaceholder": "Resend API Key 입력",
|
||||
"dailyLimit": "일일 제한",
|
||||
"roleLimits": "전송 기능을 사용할 수 있는 역할",
|
||||
"save": "설정 저장",
|
||||
"saving": "저장 중...",
|
||||
"saveSuccess": "설정이 성공적으로 저장되었습니다",
|
||||
"saveFailed": "설정 저장에 실패했습니다",
|
||||
"unlimited": "무제한",
|
||||
"disabled": "전송 권한이 활성화되지 않음",
|
||||
"enabled": "전송 권한 활성화됨"
|
||||
},
|
||||
"webhook": {
|
||||
"title": "Webhook 설정",
|
||||
"description": "새 이메일이 도착하면 지정된 URL에 알림",
|
||||
"description2": "새 이메일 정보와 함께 이 URL로 POST 요청을 보냅니다",
|
||||
"description3": "데이터 형식 문서 보기",
|
||||
"enable": "Webhook 활성화",
|
||||
"url": "Webhook URL",
|
||||
"urlPlaceholder": "Webhook URL 입력",
|
||||
"test": "테스트",
|
||||
"testing": "테스트 중...",
|
||||
"save": "설정 저장",
|
||||
"saving": "저장 중...",
|
||||
"saveSuccess": "설정이 성공적으로 저장되었습니다",
|
||||
"saveFailed": "설정 저장에 실패했습니다",
|
||||
"testSuccess": "Webhook 테스트 성공",
|
||||
"testFailed": "Webhook 테스트 실패",
|
||||
"docs": {
|
||||
"intro": "새 이메일을 받으면 다음 헤더와 함께 설정된 URL로 POST 요청을 보냅니다:",
|
||||
"exampleBody": "요청 본문 예시:",
|
||||
"subject": "이메일 제목",
|
||||
"content": "이메일 텍스트 내용",
|
||||
"html": "이메일 HTML 내용"
|
||||
}
|
||||
},
|
||||
"website": {
|
||||
"title": "웹사이트 설정",
|
||||
"description": "웹사이트 설정 구성 (황제 전용)",
|
||||
"defaultRole": "새 사용자의 기본 역할",
|
||||
"emailDomains": "이메일 도메인",
|
||||
"emailDomainsPlaceholder": "쉼표로 여러 도메인 구분",
|
||||
"adminContact": "관리자 연락처",
|
||||
"adminContactPlaceholder": "이메일 또는 기타 연락 방법",
|
||||
"maxEmails": "사용자당 최대 이메일 수",
|
||||
"turnstile": {
|
||||
"enable": "Cloudflare Turnstile 활성화",
|
||||
"enableDescription": "활성화되면 사용자 이름/비밀번호 로그인 및 회원가입에 Turnstile 인증이 필요합니다",
|
||||
"siteKey": "Site Key",
|
||||
"siteKeyPlaceholder": "Turnstile Site Key 입력",
|
||||
"secretKey": "Secret Key",
|
||||
"secretKeyPlaceholder": "Turnstile Secret Key 입력",
|
||||
"secretKeyDescription": "활성화하기 전에 Cloudflare에서 Turnstile 애플리케이션을 설정하고 필요한 키를 제공하세요"
|
||||
},
|
||||
"save": "설정 저장",
|
||||
"saving": "저장 중...",
|
||||
"saveSuccess": "설정이 성공적으로 저장되었습니다",
|
||||
"saveFailed": "설정 저장에 실패했습니다"
|
||||
},
|
||||
"promote": {
|
||||
"title": "역할 관리",
|
||||
"description": "사용자 역할 관리 (황제 전용)",
|
||||
"search": "사용자 검색",
|
||||
"searchPlaceholder": "사용자 이름 또는 이메일 입력",
|
||||
"username": "사용자 이름",
|
||||
"email": "이메일",
|
||||
"role": "역할",
|
||||
"actions": "작업",
|
||||
"promote": "설정",
|
||||
"noUsers": "사용자를 찾을 수 없습니다",
|
||||
"loading": "로딩 중...",
|
||||
"updateSuccess": "사용자 역할이 성공적으로 업데이트되었습니다",
|
||||
"updateFailed": "사용자 역할 업데이트에 실패했습니다"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user