feat: add Korean language support

This commit is contained in:
codytseng
2025-07-03 22:00:19 +08:00
parent 18ce08ce07
commit af07240df0
2 changed files with 290 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import es from './locales/es'
import fr from './locales/fr'
import it from './locales/it'
import ja from './locales/ja'
import ko from './locales/ko'
import pl from './locales/pl'
import pt_BR from './locales/pt-BR'
import pt_PT from './locales/pt-PT'
@@ -24,6 +25,7 @@ const languages = {
fr: { resource: fr, name: 'Français' },
it: { resource: it, name: 'Italiano' },
ja: { resource: ja, name: '日本語' },
ko: { resource: ko, name: '한국어' },
pl: { resource: pl, name: 'Polski' },
'pt-BR': { resource: pt_BR, name: 'Português (Brasil)' },
'pt-PT': { resource: pt_PT, name: 'Português (Portugal)' },
@@ -77,6 +79,8 @@ i18n.services.formatter?.add('date', (timestamp, lng) => {
case 'ar':
case 'th':
return dayjs(timestamp).format('DD/MM/YYYY')
case 'ko':
return dayjs(timestamp).format('YYYY년 MM월 DD일')
default:
return dayjs(timestamp).format('MMM D, YYYY')
}

286
src/i18n/locales/ko.ts Normal file
View File

@@ -0,0 +1,286 @@
export default {
translation: {
'Welcome! 🥳': '환영합니다! 🥳',
About: '정보',
'New Note': '새 노트 작성',
Post: '노트 게시',
Home: '홈',
'Relay settings': '릴레이 설정',
Settings: '설정',
SidebarRelays: '릴레이',
Refresh: '새로고침',
Profile: '프로필',
Logout: '로그아웃',
Following: '팔로잉',
followings: '팔로잉',
reposted: '리포스트',
'just now': '방금 전',
'n minutes ago': '{{n}}분 전',
'n m': '{{n}}분',
'n hours ago': '{{n}}시간 전',
'n h': '{{n}}시간',
'n days ago': '{{n}}일 전',
'n d': '{{n}}일',
date: '{{timestamp, date}}',
Follow: '팔로우',
Unfollow: '언팔로우',
'Follow failed': '팔로우 실패',
'Unfollow failed': '언팔로우 실패',
'show new notes': '새 노트 보기',
'loading...': '로딩 중...',
'no more notes': '더 이상 노트 없음',
'reply to': '답글',
reply: '답글',
Reply: '답글',
'load more older replies': '이전 답글 더 보기',
'Write something...': '무엇인가 작성하세요...',
Cancel: '취소',
Mentions: '멘션',
'Failed to post': '게시 실패',
'Post successful': '게시 성공',
'Your post has been published': '게시물이 게시되었습니다',
Repost: '리포스트',
Quote: '인용',
'Copy event ID': '이벤트 ID 복사',
'Copy user ID': '사용자 ID 복사',
'View raw event': '원본 이벤트 보기',
Like: '좋아요',
'switch to light theme': '라이트 테마로 전환',
'switch to dark theme': '다크 테마로 전환',
'switch to system theme': '시스템 테마로 전환',
Note: '노트',
note: '노트',
"username's following": '{{username}}님의 팔로잉',
"username's used relays": '{{username}}님이 사용하는 릴레이',
"username's muted": '{{username}}님이 차단한 사용자',
Login: '로그인',
'Follows you': '회원님을 팔로우함',
'Relay Settings': '릴레이 설정',
'Relay set name': '릴레이 세트 이름',
'Add a new relay set': '새 릴레이 세트 추가',
Add: '추가',
'n relays': '{{n}}개의 릴레이',
Rename: '이름 변경',
'Copy share link': '공유 링크 복사',
Delete: '삭제',
'Relay already exists': '릴레이가 이미 존재합니다',
'invalid relay URL': '유효하지 않은 릴레이 주소',
'Add a new relay': '새 릴레이 추가',
back: '뒤로',
'Lost in the void': '공허 속에서 길을 잃음',
'Carry me home': '집으로 데려다줘',
'no replies': '답글 없음',
'Reply to': '답글',
Search: '검색',
'The relays you are connected to do not support search':
'연결된 릴레이가 검색을 지원하지 않습니다',
'Show more...': '더 보기...',
'All users': '모든 사용자',
'Display replies': '답글 표시',
Notes: '노트',
Replies: '답글',
Notifications: '알림',
'no more notifications': '더 이상 알림 없음',
'Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.':
'개인 키 로그인은 안전하지 않습니다. alby, nostr-keyx, nos2x와 같은 브라우저 확장 프로그램을 사용하는 것이 좋습니다. 꼭 개인 키를 사용해야 한다면 최소한 암호를 설정하세요.',
'Login with Browser Extension': '브라우저 확장으로 로그인',
'Login with Bunker': 'Bunker로 로그인',
'Login with Private Key': '개인 키로 로그인',
'reload notes': '노트 다시 불러오기',
'Logged in Accounts': '로그인된 계정',
'Add an Account': '계정 추가',
'More options': '더 많은 옵션',
'Add client tag': '클라이언트 태그 추가',
'Show others this was sent via Jumble': '이 노트가 Jumble을 통해 전송되었음을 표시',
'Are you sure you want to logout?': '로그아웃 하시겠습니까?',
'relay sets': '릴레이 세트',
edit: '편집',
Languages: '언어',
Theme: '테마',
System: '시스템',
Light: '라이트',
Dark: '다크',
Temporary: '임시',
'Choose a relay set': '릴레이 세트 선택',
'Switch account': '계정 전환',
Pictures: '사진',
'Picture note': '사진 노트',
'A special note for picture-first clients like Olas':
'Olas와 같은 사진 우선 클라이언트에서 표시되는 특별한 노트',
'Picture note requires images': '사진 노트에는 이미지가 필요합니다',
Relays: '릴레이',
image: '이미지',
Normal: '일반',
'R & W': '읽기/쓰기',
Read: '읽기 전용',
Write: '쓰기 전용',
'Pull relay sets': '릴레이 세트 가져오기',
'Select the relay sets you want to pull': '가져올 릴레이 세트 선택',
'No relay sets found': '릴레이 세트를 찾을 수 없음',
'Pull n relay sets': '{{n}}개의 릴레이 세트 가져오기',
Pull: '가져오기',
'Select all': '전체 선택',
'Relay Sets': '릴레이 세트',
Mailbox: '메일박스',
'Read & Write Relays': '읽기/쓰기 릴레이',
'read relays description':
'읽기 릴레이는 회원님과 관련된 이벤트를 찾는 데 사용됩니다. 다른 사용자는 회원님이 보길 원하는 이벤트를 회원님의 읽기 릴레이에 게시합니다.',
'write relays description':
'쓰기 릴레이는 회원님의 이벤트를 게시하는 데 사용됩니다. 다른 사용자는 회원님의 쓰기 릴레이에서 회원님이 게시한 이벤트를 찾습니다.',
'read & write relays notice': '읽기 및 쓰기 릴레이는 각각 2~4개 정도가 적당합니다.',
"Don't have an account yet?": '아직 계정이 없으신가요?',
'or simply generate a private key': '또는 간단히 개인 키 생성',
'This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.':
'이것은 개인 키입니다. 절대 다른 사람과 공유하지 마세요. 안전하게 보관하세요. 분실 시 복구할 수 없습니다.',
Edit: '편집',
Save: '저장',
'Display Name': '표시 이름',
Bio: '소개',
'Nostr Address (NIP-05)': 'Nostr 주소 (NIP-05)',
'Invalid NIP-05 address': '유효하지 않은 NIP-05 주소',
'Copy private key': '개인 키 복사',
'Enter the password to decrypt your ncryptsec': 'ncryptsec를 복호화할 비밀번호 입력',
Back: '뒤로',
'password (optional): encrypt nsec': '비밀번호(선택): nsec 암호화',
'optional: encrypt nsec': '선택: nsec 암호화',
password: '비밀번호',
'Sign up': '회원가입',
'Save to': '저장 위치',
'Enter a name for the new relay set': '새 릴레이 세트 이름 입력',
'Save to a new relay set': '새 릴레이 세트에 저장',
Mute: '차단',
Muted: '차단됨',
Unmute: '차단 해제',
'Unmute user': '사용자 차단 해제',
'Append n relays': '{{n}}개의 릴레이 추가',
Append: '추가',
'Select relays to append': '추가할 릴레이 선택',
'calculating...': '계산 중...',
'Calculate optimal read relays': '최적의 읽기 릴레이 계산',
'Login to set': '설정하려면 로그인',
'Please login to view following feed': '팔로잉 피드를 보려면 로그인하세요',
'Send only to r': '{{r}}에만 전송',
'Send only to these relays': '이 릴레이에만 전송',
Explore: '탐색',
'Search relays': '릴레이 검색',
relayInfoBadgeAuth: '로그인 필요',
relayInfoBadgeSearch: '검색 지원',
relayInfoBadgePayment: '유료',
Operator: '운영자',
Contact: '연락처',
Software: '소프트웨어',
Version: '버전',
'Random Relays': '무작위 릴레이',
randomRelaysRefresh: '새로고침',
'Explore more': '더 탐색하기',
'Payment page': '결제 페이지',
'Supported NIPs': '지원 NIP',
'Open in a': '{{a}}에서 열기',
'Cannot handle event of kind k': '{{k}} 유형의 이벤트를 처리할 수 없습니다',
'Sorry! The note cannot be found 😔': '죄송합니다! 해당 노트를 찾을 수 없습니다 😔',
'This user has been muted': '이 사용자는 차단되었습니다',
Wallet: '지갑',
Sats: '사토시',
sats: '사토시',
'Zap to': '즙 보내기',
'Zap n sats': '{{n}} 사토시 즙 보내기',
zapComment: '코멘트',
'Default zap amount': '기본 즙 금액',
'Default zap comment': '기본 즙 코멘트',
'Lightning Address (or LNURL)': '라이트닝 주소(또는 LNURL)',
'Quick zap': '빠른 즙',
'If enabled, you can zap with a single click. Click and hold for custom amounts':
'활성화하면 한 번 클릭으로 즙을 보낼 수 있습니다. 길게 누르면 금액을 직접 입력할 수 있습니다.',
All: '전체',
Reactions: '반응',
Zaps: '즙',
'Enjoying Jumble?': 'Jumble이 마음에 드시나요?',
'Your donation helps me maintain Jumble and make it better! 😊':
'후원해주시면 Jumble을 더 잘 유지하고 발전시킬 수 있습니다! 😊',
'Earlier notifications': '이전 알림',
'Temporarily display this note': '이 노트 임시 표시',
buttonFollowing: '팔로잉 중',
'Are you sure you want to unfollow this user?': '이 사용자를 언팔로우하시겠습니까?',
'Recent Supporters': '최근 후원자',
'Seen on': '출처',
'Temporarily display this reply': '이 답글 임시 표시',
'Note not found': '노트를 찾을 수 없음',
'no more replies': '더 이상 답글 없음',
'Relay sets': '릴레이 세트',
'Favorite Relays': '즐겨찾는 릴레이',
"Following's Favorites": '팔로잉의 즐겨찾기',
'no more relays': '더 이상 릴레이 없음',
'Favorited by': '즐겨찾기한 사람',
'Post settings': '게시 설정',
'Media upload service': '미디어 업로드 서비스',
'Choose a relay': '릴레이 선택',
'no relays found': '릴레이를 찾을 수 없음',
video: '비디오',
'Show n new notes': '{{n}}개의 새 노트 보기',
YouTabName: '나와 함께',
Bookmark: '북마크',
'Remove bookmark': '북마크 제거',
'no bookmarks found': '북마크 없음',
'no more bookmarks': '더 이상 북마크 없음',
Bookmarks: '북마크',
'Show more': '더 보기',
General: '일반',
Autoplay: '자동 재생',
'Enable video autoplay on this device': '이 기기에서 비디오 자동 재생 활성화',
'Paste or drop media files to upload': '미디어 파일을 붙여넣거나 드래그하여 업로드',
Preview: '미리보기',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
'[{{eventAuthorName}}]가 서명한 이벤트를 게시하려고 합니다. 현재 [{{currentUsername}}]로 로그인되어 있습니다. 계속하시겠습니까?',
'Platinum Sponsors': '플래티넘 스폰서',
From: '출처',
'Comment on': '댓글',
'View on njump.me': 'njump.me에서 보기',
'Hide content from untrusted users': '신뢰하지 않는 사용자의 콘텐츠 숨기기',
'Only show content from your followed users and the users they follow':
'내가 팔로우하는 사용자와 그들이 팔로우하는 사용자의 콘텐츠만 표시',
'Followed by': '팔로워',
'Mute user privately': '비공개 차단',
'Mute user publicly': '공개 차단',
Quotes: '인용',
'Lightning Invoice': '라이트닝 인보이스',
'Bookmark failed': '북마크 실패',
'Remove bookmark failed': '북마크 제거 실패',
Translation: '번역',
Balance: '잔액',
characters: '글자',
jumbleTranslateApiKeyDescription:
'이 API 키는 LibreTranslate를 지원하는 모든 곳에서 사용할 수 있습니다. 서비스 주소: {{serviceUrl}}',
'Top up': '충전',
'Will receive: {n} characters': '{{n}} 글자를 받게 됩니다',
'Top up {n} sats': '{{n}} 사토시 충전',
'Minimum top up is {n} sats': '최소 충전 금액은 {{n}} 사토시입니다',
Service: '서비스',
'Reset API key': 'API 키 재설정',
'Are you sure you want to reset your API key? This action cannot be undone.':
'API 키를 재설정하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
Warning: '경고',
'Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.':
'현재 API 키는 즉시 무효화되며, 새 키로 업데이트하기 전까지 관련 앱이 작동하지 않습니다.',
'Service address': '서비스 주소',
Pay: '결제',
interactions: '상호작용',
notifications: '알림',
'Show untrusted {type}': '신뢰하지 않는 {{type}} 표시',
'Hide untrusted {type}': '신뢰하지 않는 {{type}} 숨기기',
'Currently hiding {type} from untrusted users.':
'현재 신뢰하지 않는 사용자의 {{type}}을(를) 숨기고 있습니다.',
'Currently showing all {type}.': '현재 모든 {{type}}을(를) 표시하고 있습니다.',
'Click continue to show all {type}.': '계속을 클릭하면 모든 {{type}}을(를) 표시합니다.',
'Click continue to hide {type} from untrusted users.':
'계속을 클릭하면 신뢰하지 않는 사용자의 {{type}}을(를) 숨깁니다.',
'Trusted users include people you follow and people they follow.':
'신뢰하는 사용자는 내가 팔로우하는 사람과 그들이 팔로우하는 사람을 포함합니다.',
Continue: '계속',
'Successfully updated mute list': '차단 목록이 성공적으로 업데이트되었습니다',
'No pubkeys found from {url}': '{{url}}에서 pubkey를 찾을 수 없습니다',
'Translating...': '번역 중...',
Translate: '번역',
'Show original': '원본 보기',
Website: '웹사이트'
}
}