Pārlūkot izejas kodu

feat(locale): add Korean translation

Harold Kim 1 dienu atpakaļ
vecāks
revīzija
096a15ef14

+ 1 - 0
internal/locale/catalog_test.go

@@ -111,6 +111,7 @@ func TestTranslationFilePluralForms(t *testing.T) {
 		"id_ID":            1,
 		"it_IT":            2,
 		"ja_JP":            1,
+		"ko_KR":            1,
 		"nan_Latn_pehoeji": 1,
 		"nl_NL":            2,
 		"pl_PL":            3,

+ 1 - 0
internal/locale/locale.go

@@ -17,6 +17,7 @@ var AvailableLanguages = map[string]string{
 	"id_ID":            "Bahasa Indonesia",
 	"it_IT":            "Italiano",
 	"ja_JP":            "日本語",
+	"ko_KR":            "한국어",
 	"nan_Latn_pehoeji": "Pe̍h-ōe-jī",
 	"nl_NL":            "Nederlands",
 	"pl_PL":            "Polski",

+ 1 - 1
internal/locale/plural.go

@@ -36,7 +36,7 @@ func getPluralForm(lang string, n int) int {
 			return 1
 		}
 		return 0
-	case "id_ID", "ja_JP":
+	case "id_ID", "ja_JP", "ko_KR":
 		return 0
 	case "pl_PL":
 		switch {

+ 8 - 0
internal/locale/plural_test.go

@@ -66,6 +66,14 @@ func TestPluralRules(t *testing.T) {
 			5:   0,
 			100: 0,
 		},
+		// Korean (ko_KR) - always form 0
+		"ko_KR": {
+			0:   0,
+			1:   0,
+			2:   0,
+			5:   0,
+			100: 0,
+		},
 		// Polish (pl_PL) - 3 forms
 		"pl_PL": {
 			1:  0, // n == 1

+ 620 - 0
internal/locale/translations/ko_KR.json

@@ -0,0 +1,620 @@
+{
+    "action.cancel": "취소",
+    "action.download": "다운로드",
+    "action.edit": "편집",
+    "action.home_screen": "홈 화면에 추가",
+    "action.import": "가져오기",
+    "action.login": "로그인",
+    "action.or": "또는",
+    "action.remove": "삭제",
+    "action.remove_feed": "이 피드 삭제",
+    "action.save": "저장",
+    "action.subscribe": "피드 구독",
+    "action.update": "업데이트",
+    "alert.account_linked": "외부 계정과 연동되었습니다!",
+    "alert.account_unlinked": "외부 계정과의 연동이 해제되었습니다!",
+    "alert.background_feed_refresh": "모든 피드를 백그라운드에서 새로 고치는 중입니다. 이 작업 중에도 Miniflux를 계속 사용할 수 있습니다.",
+    "alert.feed_error": "이 피드에 문제가 있습니다.",
+    "alert.no_starred": "현재 즐겨찾기 표시된 게시물이 없습니다.",
+    "alert.no_category": "카테고리가 없습니다.",
+    "alert.no_category_entry": "이 카테고리에는 게시물이 없습니다.",
+    "alert.no_feed": "구독 중인 피드가 없습니다.",
+    "alert.no_feed_entry": "이 피드에는 게시물이 없습니다.",
+    "alert.no_feed_in_category": "이 카테고리에는 구독 중인 피드가 없습니다.",
+    "alert.no_history": "현재 기록이 없습니다.",
+    "alert.no_search_result": "검색 결과가 없습니다.",
+    "alert.no_shared_entry": "공유된 게시물이 없습니다.",
+    "alert.no_tag_entry": "이 태그와 일치하는 게시물이 없습니다.",
+    "alert.no_unread_entry": "읽지 않은 게시물이 없습니다.",
+    "alert.no_user": "당신이 유일한 사용자입니다.",
+    "alert.prefs_saved": "설정이 정상적으로 저장되었습니다!",
+    "alert.too_many_feeds_refresh": [
+        "피드 새로고침 요청이 너무 많습니다. %d분 후 다시 시도해 주세요."
+    ],
+    "confirm.loading": "실행 중…",
+    "confirm.no": "아니요",
+    "confirm.question": "진행하시겠습니까?",
+    "confirm.question.refresh": "강제로 새로 고치시겠습니까?",
+    "confirm.yes": "예",
+    "enclosure_media_controls.seek": "탐색:",
+    "enclosure_media_controls.seek.title": "%s초 이동",
+    "enclosure_media_controls.speed": "속도:",
+    "enclosure_media_controls.speed.faster": "빠르게",
+    "enclosure_media_controls.speed.faster.title": "%sx 빠르게",
+    "enclosure_media_controls.speed.reset": "초기화",
+    "enclosure_media_controls.speed.reset.title": "속도를 1x로 초기화",
+    "enclosure_media_controls.speed.slower": "느리게",
+    "enclosure_media_controls.speed.slower.title": "%sx 느리게",
+    "entry.starred.toast.off": "즐겨찾기를 해제했습니다",
+    "entry.starred.toast.on": "즐겨찾기로 설정했습니다",
+    "entry.starred.toggle.off": "즐겨찾기 해제",
+    "entry.starred.toggle.on": "즐겨찾기 설정",
+    "entry.comments.label": "댓글",
+    "entry.comments.title": "댓글 보기",
+    "entry.estimated_reading_time": [
+        "%d분 소요"
+    ],
+    "entry.external_link.label": "외부 링크",
+    "entry.save.completed": "완료!",
+    "entry.save.label": "저장",
+    "entry.save.title": "이 게시물 저장",
+    "entry.save.toast.completed": "게시물이 저장되었습니다",
+    "entry.scraper.completed": "완료!",
+    "entry.scraper.label": "다운로드",
+    "entry.scraper.title": "원본 내용 가져오기",
+    "entry.share.label": "공유",
+    "entry.share.title": "이 게시물 공유",
+    "entry.shared_entry.label": "공유하기",
+    "entry.shared_entry.title": "공개 링크 열기",
+    "entry.state.loading": "불러오는 중…",
+    "entry.state.saving": "저장 중…",
+    "entry.status.mark_as_read": "읽음으로 표시",
+    "entry.status.mark_as_unread": "읽지 않음으로 표시",
+    "entry.status.title": "게시물 상태 변경",
+    "entry.status.toast.read": "읽음으로 표시했습니다",
+    "entry.status.toast.unread": "읽지 않음으로 표시했습니다",
+    "entry.tags.label": "태그:",
+    "entry.tags.more_tags_label": [
+        "태그 %d개"
+    ],
+    "entry.unshare.label": "공유 해제",
+    "error.api_key_already_exists": "이 API 키는 이미 존재합니다.",
+    "error.bad_credentials": "사용자명 또는 비밀번호가 잘못되었습니다.",
+    "error.category_already_exists": "이 카테고리는 이미 존재합니다.",
+    "error.category_not_found": "이 카테고리는 존재하지 않거나 이 사용자의 것이 아닙니다.",
+    "error.database_error": "데이터베이스 오류: %v.",
+    "error.different_passwords": "비밀번호가 일치하지 않습니다.",
+    "error.duplicate_fever_username": "같은 Fever 사용자명이 이미 사용 중입니다!",
+    "error.duplicate_googlereader_username": "같은 Google Reader 사용자명이 이미 사용 중입니다!",
+    "error.duplicate_linked_account": "다른 사용자가 이미 이 서비스의 동일한 사용자와 연동되어 있습니다.",
+    "error.duplicated_feed": "이 피드는 이미 존재합니다.",
+    "error.empty_file": "이 파일은 비어 있습니다.",
+    "error.entries_per_page_invalid": "페이지당 게시물 수가 유효하지 않습니다.",
+    "error.feed_already_exists": "이 피드는 이미 존재합니다.",
+    "error.feed_category_not_found": "이 카테고리는 존재하지 않거나 이 사용자의 것이 아닙니다.",
+    "error.feed_format_not_detected": "피드 형식을 감지할 수 없습니다: %v.",
+    "error.feed_invalid_blocklist_rule": "차단 목록 규칙이 유효하지 않습니다.",
+    "error.feed_invalid_keeplist_rule": "허용 목록 규칙이 유효하지 않습니다.",
+    "error.feed_mandatory_fields": "URL과 카테고리가 필요합니다.",
+    "error.feed_not_found": "이 피드는 존재하지 않거나 이 사용자의 것이 아닙니다.",
+    "error.feed_title_not_empty": "피드 제목은 비워 둘 수 없습니다.",
+    "error.feed_url_not_empty": "피드 URL은 비워 둘 수 없습니다.",
+    "error.fields_mandatory": "모든 항목을 입력해주세요.",
+    "error.http_bad_gateway": "잘못된 게이트웨이 오류로 인해 현재 이 웹사이트를 사용할 수 없습니다. Miniflux 측의 문제가 아닙니다. 나중에 다시 시도해 주세요.",
+    "error.http_body_read": "HTTP 본문을 읽을 수 없습니다: %v.",
+    "error.http_client_error": "HTTP 클라이언트 오류: %v.",
+    "error.http_cloudflare_challenge": "이 웹사이트는 Cloudflare 봇 챌린지(CAPTCHA 또는 JavaScript 검증)로 보호되어 있습니다. Miniflux는 이 챌린지를 자동으로 해결할 수 없습니다.",
+    "error.http_empty_response": "HTTP 응답이 비어 있습니다. 이 웹사이트가 봇 보호 메커니즘을 사용하고 있을 수 있습니다.",
+    "error.http_empty_response_body": "HTTP 응답 본문이 비어 있습니다.",
+    "error.http_forbidden": "이 웹사이트에 대한 접근이 금지되어 있습니다. 이 웹사이트가 봇 보호 메커니즘을 사용하고 있을 수 있습니다.",
+    "error.http_gateway_timeout": "게이트웨이 시간 초과로 인해 현재 이 웹사이트를 사용할 수 없습니다. Miniflux 측의 문제가 아닙니다. 잠시 후 다시 시도해 주세요.",
+    "error.http_internal_server_error": "서버 오류로 인해 현재 이 웹사이트를 사용할 수 없습니다. Miniflux 측의 문제가 아닙니다. 잠시 후 다시 시도해 주세요.",
+    "error.http_not_authorized": "이 웹사이트에 대한 접근이 허용되지 않았습니다. 사용자명 또는 비밀번호가 올바르지 않을 수 있습니다.",
+    "error.http_resource_not_found": "요청한 리소스를 찾을 수 없습니다. URL을 확인해 주세요.",
+    "error.http_response_too_large": "HTTP 응답이 너무 큽니다. 전역 설정에서 HTTP 응답 크기 제한을 늘릴 수 있습니다. (서버 재시작 필요)",
+    "error.http_service_unavailable": "내부 서버 오류로 인해 현재 이 웹사이트를 사용할 수 없습니다. 문제는 Miniflux 측의 문제가 아닙니다. 잠시 후 다시 시도해 주세요.",
+    "error.http_too_many_requests": "Miniflux가 이 웹사이트에 너무 많은 요청을 보냈습니다. 잠시 기다리거나 애플리케이션 설정을 변경해 주세요.",
+    "error.http_unexpected_status_code": "예상치 못한 HTTP 상태 코드(%d)로 인해 현재 이 웹사이트를 사용할 수 없습니다. Miniflux 측의 문제가 아닙니다. 잠시 후 다시 시도해 주세요.",
+    "error.invalid_categories_sorting_order": "카테고리 표시 순서가 유효하지 않습니다.",
+    "error.invalid_default_home_page": "기본 시작 페이지가 유효하지 않습니다",
+    "error.invalid_display_mode": "웹 앱 표시 모드가 유효하지 않습니다.",
+    "error.invalid_entry_direction": "게시물 표시 방향이 유효하지 않습니다.",
+    "error.invalid_entry_order": "게시물 표시 순서가 유효하지 않습니다.",
+    "error.invalid_feed_proxy_url": "프록시 URL이 유효하지 않습니다.",
+    "error.invalid_feed_url": "피드 URL이 유효하지 않습니다.",
+    "error.invalid_gesture_nav": "제스처 내비게이션이 유효하지 않습니다.",
+    "error.invalid_language": "언어가 유효하지 않습니다.",
+    "error.invalid_site_url": "사이트 URL이 유효하지 않습니다.",
+    "error.invalid_theme": "테마가 유효하지 않습니다.",
+    "error.invalid_timezone": "시간대가 유효하지 않습니다.",
+    "error.network_operation": "네트워크 오류로 인해 Miniflux가 이 웹사이트에 도달할 수 없습니다: %v.",
+    "error.network_timeout": "이 웹사이트의 응답이 너무 느려 시간 초과되었습니다: %v",
+    "error.password_min_length": "비밀번호는 6자 이상이어야 합니다.",
+    "error.proxy_url_not_empty": "프록시 URL은 비워 둘 수 없습니다.",
+    "error.settings_block_rule_fieldname_invalid": "차단 규칙이 유효하지 않습니다: 규칙 #%d에 유효한 필드 이름이 없습니다 (옵션: %s)",
+    "error.settings_block_rule_invalid_regex": "차단 규칙이 유효하지 않습니다: 규칙 #%d의 패턴이 정규식으로 유효하지 않습니다",
+    "error.settings_block_rule_regex_required": "차단 규칙이 유효하지 않습니다: 규칙 #%d에 패턴이 지정되지 않았습니다",
+    "error.settings_block_rule_separator_required": "차단 규칙이 유효하지 않습니다: 규칙 #%d의 패턴은 '='로 구분해야 합니다",
+    "error.settings_invalid_domain_list": "도메인 목록이 유효하지 않습니다. 도메인은 공백으로 구분해 지정해 주세요.",
+    "error.settings_keep_rule_fieldname_invalid": "보존 규칙이 유효하지 않습니다: 규칙 #%d에 유효한 필드 이름이 없습니다 (옵션: %s)",
+    "error.settings_keep_rule_invalid_regex": "보존 규칙이 유효하지 않습니다: 규칙 #%d의 패턴이 정규식으로 유효하지 않습니다",
+    "error.settings_keep_rule_regex_required": "보존 규칙이 유효하지 않습니다: 규칙 #%d에 패턴이 지정되지 않았습니다",
+    "error.settings_keep_rule_separator_required": "보존 규칙이 유효하지 않습니다: 규칙 #%d의 패턴은 '='로 구분해야 합니다",
+    "error.settings_mandatory_fields": "사용자명, 테마, 언어, 시간대가 모두 필요합니다.",
+    "error.settings_media_playback_rate_range": "재생 속도가 범위를 벗어났습니다",
+    "error.settings_reading_speed_is_positive": "읽기 속도는 양의 정수여야 합니다.",
+    "error.site_url_not_empty": "사이트 URL은 비워 둘 수 없습니다.",
+    "error.subscription_not_found": "피드를 찾을 수 없습니다.",
+    "error.title_required": "제목이 필요합니다.",
+    "error.tls_error": "TLS 오류: %q. 필요한 경우 피드 설정에서 TLS 검증을 비활성화할 수 있습니다.",
+    "error.unable_to_create_api_key": "이 API 키를 만들 수 없습니다.",
+    "error.unable_to_create_category": "이 카테고리를 만들 수 없습니다.",
+    "error.unable_to_create_user": "이 사용자를 만들 수 없습니다.",
+    "error.unable_to_detect_rssbridge": "RSS-Bridge를 사용해 피드를 감지할 수 없습니다: %v.",
+    "error.unable_to_parse_feed": "이 피드를 파싱할 수 없습니다: %v.",
+    "error.unable_to_update_category": "이 카테고리를 업데이트할 수 없습니다.",
+    "error.unable_to_update_feed": "이 피드를 업데이트할 수 없습니다.",
+    "error.unable_to_update_user": "이 사용자를 업데이트할 수 없습니다.",
+    "error.unlink_account_without_password": "비밀번호를 설정하지 않으면 다시 로그인할 수 없습니다.",
+    "error.user_already_exists": "이 사용자는 이미 존재합니다.",
+    "error.user_mandatory_fields": "사용자명이 필요합니다.",
+    "error.linktaco_missing_required_fields": "LinkTaco API 토큰과 조직 슬러그가 필요합니다",
+    "form.api_key.label.description": "API키 설명",
+    "form.category.hide_globally": "읽지 않음 목록에 게시물을 표시하지 않음",
+    "form.category.label.title": "제목",
+    "form.feed.fieldset.general": "일반",
+    "form.feed.fieldset.integration": "서드파티 서비스",
+    "form.feed.fieldset.network_settings": "네트워크 설정",
+    "form.feed.fieldset.rules": "규칙",
+    "form.feed.label.allow_self_signed_certificates": "자체 서명 인증서 또는 유효하지 않은 인증서 허용",
+    "form.feed.label.apprise_service_urls": "Apprise 서비스 URL의 쉼표로 구분된 목록",
+    "form.feed.label.block_filter_entry_rules": "게시물 차단 규칙",
+    "form.feed.label.blocklist_rules": "정규식 기반 차단 필터",
+    "form.feed.label.category": "카테고리",
+    "form.feed.label.cookie": "Cookie 설정",
+    "form.feed.label.crawler": "게시물 본문도 함께 다운로드",
+    "form.feed.label.ignore_entry_updates": "업데이트된 게시물 무시",
+    "form.feed.label.description": "설명",
+    "form.feed.label.disable_http2": "핑거프린팅 회피를 위해 HTTP/2 비활성화",
+    "form.feed.label.disabled": "이 피드를 업데이트하지 않음",
+    "form.feed.label.feed_password": "피드 비밀번호",
+    "form.feed.label.feed_url": "피드 URL",
+    "form.feed.label.feed_username": "피드 사용자명",
+    "form.feed.label.fetch_via_proxy": "애플리케이션 수준에서 설정된 프록시 사용",
+    "form.feed.label.hide_globally": "읽지 않음 목록에 게시물을 표시하지 않음",
+    "form.feed.label.ignore_http_cache": "HTTP 캐시 무시",
+    "form.feed.label.keep_filter_entry_rules": "게시물 허용 규칙",
+    "form.feed.label.keeplist_rules": "정규식 기반 보존 필터",
+    "form.feed.label.no_media_player": "미디어 기능 비활성화 (오디오/비디오)",
+    "form.feed.label.ntfy_activate": "게시물을 ntfy로 전송",
+    "form.feed.label.ntfy_default_priority": "ntfy 기본 우선순위",
+    "form.feed.label.ntfy_high_priority": "ntfy 높은 우선순위",
+    "form.feed.label.ntfy_low_priority": "ntfy 낮은 우선순위",
+    "form.feed.label.ntfy_max_priority": "ntfy 최대 우선순위",
+    "form.feed.label.ntfy_min_priority": "ntfy 최소 우선순위",
+    "form.feed.label.ntfy_priority": "ntfy 우선순위",
+    "form.feed.label.ntfy_topic": "ntfy 토픽(선택 사항)",
+    "form.feed.label.proxy_url": "프록시 URL",
+    "form.feed.label.pushover_activate": "게시물을 pushover.net으로 전송",
+    "form.feed.label.pushover_default_priority": "Pushover 기본 우선순위",
+    "form.feed.label.pushover_high_priority": "Pushover 높은 우선순위",
+    "form.feed.label.pushover_low_priority": "Pushover 낮은 우선순위",
+    "form.feed.label.pushover_max_priority": "Pushover 최대 우선순위",
+    "form.feed.label.pushover_min_priority": "Pushover 최소 우선순위",
+    "form.feed.label.pushover_priority": "Pushover 메시지 우선순위",
+    "form.feed.label.rewrite_rules": "본문 재작성 규칙",
+    "form.feed.label.scraper_rules": "본문 추출 규칙",
+    "form.feed.label.site_url": "사이트 URL",
+    "form.feed.label.title": "제목",
+    "form.feed.label.urlrewrite_rules": "URL 재작성 규칙",
+    "form.feed.label.user_agent": "기본 User Agent 덮어쓰기",
+    "form.feed.label.webhook_url": "Webhook URL 덮어쓰기",
+    "form.import.label.file": "OPML 파일",
+    "form.import.label.url": "URL",
+    "form.integration.archiveorg_activate": "게시물을 archive.org로 푸시",
+    "form.integration.apprise_activate": "게시물을 Apprise로 전송",
+    "form.integration.apprise_services_url": "Apprise 서비스 URL의 쉼표로 구분된 목록",
+    "form.integration.apprise_url": "Apprise API URL",
+    "form.integration.betula_activate": "게시물을 Betula에 저장",
+    "form.integration.betula_token": "Betula 토큰",
+    "form.integration.betula_url": "Betula 서버 URL",
+    "form.integration.cubox_activate": "게시물을 Cubox에 저장",
+    "form.integration.cubox_api_link": "Cubox API 링크",
+    "form.integration.discord_activate": "게시물을 Discord로 전송",
+    "form.integration.discord_webhook_link": "Discord Webhook 링크",
+    "form.integration.espial_activate": "Espial에 게시물 저장",
+    "form.integration.espial_api_key": "Espial API 키",
+    "form.integration.espial_endpoint": "Espial API 엔드포인트",
+    "form.integration.espial_tags": "Espial 태그",
+    "form.integration.fever_activate": "Fever API 활성화",
+    "form.integration.fever_endpoint": "Fever API 엔드포인트:",
+    "form.integration.fever_password": "Fever 비밀번호",
+    "form.integration.fever_username": "Fever 사용자명",
+    "form.integration.googlereader_activate": "Google Reader API 활성화",
+    "form.integration.googlereader_endpoint": "Google Reader API 엔드포인트:",
+    "form.integration.googlereader_password": "Google Reader 비밀번호",
+    "form.integration.googlereader_username": "Google Reader 사용자명",
+    "form.integration.instapaper_activate": "Instapaper에 게시물 저장",
+    "form.integration.instapaper_password": "Instapaper 비밀번호",
+    "form.integration.instapaper_username": "Instapaper 사용자명",
+    "form.integration.karakeep_activate": "Karakeep에 게시물 저장",
+    "form.integration.karakeep_api_key": "Karakeep API 키",
+    "form.integration.karakeep_url": "Karakeep API 엔드포인트",
+    "form.integration.karakeep_tags": "Karakeep 태그",
+    "form.integration.linkace_activate": "게시물을 LinkAce에 저장",
+    "form.integration.linkace_api_key": "LinkAce API 키",
+    "form.integration.linkace_check_disabled": "링크 확인 비활성화",
+    "form.integration.linkace_endpoint": "LinkAce API 엔드포인트",
+    "form.integration.linkace_is_private": "링크를 비공개로 설정",
+    "form.integration.linkace_tags": "LinkAce 태그",
+    "form.integration.linkding_activate": "Linkding에 게시물 저장",
+    "form.integration.linkding_api_key": "Linkding API 키",
+    "form.integration.linkding_bookmark": "북마크를 읽지 않음으로 표시",
+    "form.integration.linkding_endpoint": "Linkding API 엔드포인트",
+    "form.integration.linkding_tags": "Linkding 태그",
+    "form.integration.linktaco_activate": "LinkTaco에 게시물 저장",
+    "form.integration.linktaco_api_token": "LinkTaco API 토큰",
+    "form.integration.linktaco_api_token_hint": "개인용 액세스 토큰 받기",
+    "form.integration.linktaco_org_slug": "조직 슬러그",
+    "form.integration.linktaco_tags": "태그(최대 10개, 쉼표로 구분)",
+    "form.integration.linktaco_tags_hint": "최대 10개의 태그, 쉼표로 구분",
+    "form.integration.linktaco_visibility": "공개 설정",
+    "form.integration.linktaco_visibility_public": "공개",
+    "form.integration.linktaco_visibility_private": "비공개",
+    "form.integration.linktaco_visibility_hint": "비공개 설정에는 유료 LinkTaco 계정이 필요합니다",
+    "form.integration.linkwarden_activate": "Linkwarden에 게시물 저장",
+    "form.integration.linkwarden_api_key": "Linkwarden API 키",
+    "form.integration.linkwarden_endpoint": "Linkwarden 기본 URL",
+    "form.integration.linkwarden_collection_id": "Linkwarden 컬렉션 ID",
+    "form.integration.matrix_bot_activate": "새 게시물을 Matrix로 전달",
+    "form.integration.matrix_bot_chat_id": "Matrix 룸 ID",
+    "form.integration.matrix_bot_password": "Matrix 사용자 비밀번호",
+    "form.integration.matrix_bot_url": "Matrix 서버 URL",
+    "form.integration.matrix_bot_user": "Matrix 사용자명",
+    "form.integration.notion_activate": "게시물을 Notion에 저장",
+    "form.integration.notion_page_id": "Notion 페이지 ID",
+    "form.integration.notion_token": "Notion 시크릿 토큰",
+    "form.integration.ntfy_activate": "게시물을 ntfy로 전송",
+    "form.integration.ntfy_api_token": "ntfy API 토큰(선택 사항)",
+    "form.integration.ntfy_icon_url": "ntfy 아이콘 URL(선택 사항)",
+    "form.integration.ntfy_internal_links": "클릭 시 내부 링크 사용(선택 사항)",
+    "form.integration.ntfy_password": "ntfy 비밀번호(선택 사항)",
+    "form.integration.ntfy_topic": "ntfy 토픽(피드에 설정되어 있지 않으면 기본값)",
+    "form.integration.ntfy_url": "ntfy URL(선택 사항, 기본값 ntfy.sh)",
+    "form.integration.ntfy_username": "ntfy 사용자명(선택 사항)",
+    "form.integration.nunux_keeper_activate": "Nunux Keeper에 게시물 저장",
+    "form.integration.nunux_keeper_api_key": "Nunux Keeper API 키",
+    "form.integration.nunux_keeper_endpoint": "Nunux Keeper API 엔드포인트",
+    "form.integration.omnivore_activate": "Omnivore에 게시물 저장",
+    "form.integration.omnivore_api_key": "Omnivore API 키",
+    "form.integration.omnivore_url": "Omnivore API 엔드포인트",
+    "form.integration.pinboard_activate": "Pinboard에 게시물 저장",
+    "form.integration.pinboard_bookmark": "북마크를 읽지 않음으로 표시",
+    "form.integration.pinboard_tags": "Pinboard 태그",
+    "form.integration.pinboard_token": "Pinboard API 토큰",
+    "form.integration.pushover_activate": "게시물을 Pushover로 전송",
+    "form.integration.pushover_device": "Pushover 기기(선택 사항)",
+    "form.integration.pushover_prefix": "Pushover URL 접두사(선택 사항)",
+    "form.integration.pushover_token": "Pushover 앱 API 토큰",
+    "form.integration.pushover_user": "Pushover 사용자 키",
+    "form.integration.raindrop_activate": "게시물을 Raindrop에 저장",
+    "form.integration.raindrop_collection_id": "컬렉션 ID",
+    "form.integration.raindrop_tags": "태그(쉼표로 구분)",
+    "form.integration.raindrop_token": "(테스트) 토큰",
+    "form.integration.readeck_activate": "Readeck에 게시물 저장",
+    "form.integration.readeck_api_key": "Readeck API 키",
+    "form.integration.readeck_endpoint": "Readeck API 엔드포인트",
+    "form.integration.readeck_labels": "Readeck 라벨",
+    "form.integration.readeck_only_url": "URL만 전송(전체 콘텐츠가 아님)",
+    "form.integration.readeck_push_activate": "새 게시물을 자동으로 Readeck에 전송",
+    "form.integration.readwise_activate": "Readwise Reader에 게시물 저장",
+    "form.integration.readwise_api_key": "Readwise Reader 액세스 토큰",
+    "form.integration.readwise_api_key_link": "Readwise 액세스 토큰 받기",
+    "form.integration.rssbridge_activate": "구독 추가 시 RSS-Bridge 확인",
+    "form.integration.rssbridge_token": "RSS-Bridge 인증 토큰",
+    "form.integration.rssbridge_url": "RSS-Bridge 서버 URL",
+    "form.integration.shaarli_activate": "게시물을 Shaarli에 저장",
+    "form.integration.shaarli_api_secret": "Shaarli API 시크릿",
+    "form.integration.shaarli_endpoint": "Shaarli URL",
+    "form.integration.shiori_activate": "게시물을 Shiori에 저장",
+    "form.integration.shiori_endpoint": "Shiori API 엔드포인트",
+    "form.integration.shiori_password": "Shiori 비밀번호",
+    "form.integration.shiori_username": "Shiori 사용자명",
+    "form.integration.slack_activate": "게시물을 Slack으로 전송",
+    "form.integration.slack_webhook_link": "Slack Webhook 링크",
+    "form.integration.telegram_bot_activate": "새 게시물을 Telegram 채팅으로 푸시",
+    "form.integration.telegram_bot_disable_buttons": "버튼 비활성화",
+    "form.integration.telegram_bot_disable_notification": "알림 비활성화",
+    "form.integration.telegram_bot_disable_web_page_preview": "웹 페이지 미리보기 비활성화",
+    "form.integration.telegram_bot_token": "봇 토큰",
+    "form.integration.telegram_chat_id": "채팅 ID",
+    "form.integration.telegram_topic_id": "토픽 ID",
+    "form.integration.wallabag_activate": "Wallabag에 게시물 저장",
+    "form.integration.wallabag_client_id": "Wallabag 클라이언트 ID",
+    "form.integration.wallabag_client_secret": "Wallabag 클라이언트 시크릿",
+    "form.integration.wallabag_endpoint": "Wallabag 기본 URL",
+    "form.integration.wallabag_only_url": "URL만 전송(전체 콘텐츠가 아님)",
+    "form.integration.wallabag_password": "Wallabag 비밀번호",
+    "form.integration.wallabag_username": "Wallabag 사용자명",
+    "form.integration.wallabag_tags": "Wallabag 태그",
+    "form.integration.webhook_activate": "Webhook 활성화",
+    "form.integration.webhook_secret": "Webhook 시크릿",
+    "form.integration.webhook_url": "기본 Webhook URL",
+    "form.prefs.fieldset.application_settings": "애플리케이션 설정",
+    "form.prefs.fieldset.authentication_settings": "비밀번호 인증",
+    "form.prefs.fieldset.google_authentication": "Google 인증",
+    "form.prefs.fieldset.oidc_authentication": "%s 인증",
+    "form.prefs.fieldset.global_feed_settings": "전역 피드 설정",
+    "form.prefs.fieldset.reader_settings": "리더 설정",
+    "form.prefs.help.external_font_hosts": "허용할 외부 폰트 호스트를 공백으로 구분해 지정합니다. 예: \"fonts.gstatic.com fonts.googleapis.com\"",
+    "form.prefs.label.always_open_external_links": "외부 링크를 열어 게시물 읽기",
+    "form.prefs.label.categories_sorting_order": "카테고리 표시 순서",
+    "form.prefs.label.cjk_reading_speed": "한국어, 일본어, 중국어 읽기 속도 (문자/분)",
+    "form.prefs.label.custom_css": "사용자 지정 CSS",
+    "form.prefs.label.custom_js": "사용자 지정 JavaScript",
+    "form.prefs.label.default_home_page": "기본 시작 페이지",
+    "form.prefs.label.default_reading_speed": "다른 언어의 읽기 속도(단어/분)",
+    "form.prefs.label.display_mode": "프로그레시브 웹 앱(PWA) 표시 모드",
+    "form.prefs.label.entries_per_page": "페이지당 게시물 수",
+    "form.prefs.label.entry_order": "게시물 표시 순서 기준",
+    "form.prefs.label.entry_sorting": "게시물 표시 순서",
+    "form.prefs.label.entry_swipe": "터치스크린에서 스와이프 입력 활성화",
+    "form.prefs.label.external_font_hosts": "외부 폰트 호스트",
+    "form.prefs.label.gesture_nav": "게시물 간 이동 제스처",
+    "form.prefs.label.keyboard_shortcuts": "키보드 단축키 활성화",
+    "form.prefs.label.language": "언어",
+    "form.prefs.label.mark_read_manually": "수동으로 읽음 처리",
+    "form.prefs.label.mark_read_on_media_completion": "오디오/비디오 재생이 90%%에 도달하면 읽음 처리",
+    "form.prefs.label.mark_read_on_view": "표시할 때 게시물을 자동으로 읽음으로 표시",
+    "form.prefs.label.mark_read_on_view_or_media_completion": "표시할 때 읽음 처리. 오디오/비디오는 90%% 재생 시 읽음 처리",
+    "form.prefs.label.media_playback_rate": "오디오/비디오 재생 속도",
+    "form.prefs.label.open_external_links_in_new_tab": "외부 링크를 새 탭에서 열기(링크에 target=\"_blank\" 추가)",
+    "form.prefs.label.show_reading_time": "게시물 예상 읽기 시간 표시",
+    "form.prefs.label.theme": "테마",
+    "form.prefs.label.timezone": "시간대",
+    "form.prefs.select.alphabetical": "알파벳순",
+    "form.prefs.select.browser": "브라우저형",
+    "form.prefs.select.created_time": "게시물 가져온 시각",
+    "form.prefs.select.fullscreen": "전체 화면",
+    "form.prefs.select.minimal_ui": "미니멀 UI",
+    "form.prefs.select.none": "없음",
+    "form.prefs.select.older_first": "오래된 게시물 먼저",
+    "form.prefs.select.publish_time": "게시물 공개 시각",
+    "form.prefs.select.recent_first": "새 게시물 먼저",
+    "form.prefs.select.standalone": "독립형",
+    "form.prefs.select.swipe": "스와이프",
+    "form.prefs.select.tap": "더블 탭",
+    "form.prefs.select.unread_count": "읽지 않은 항목 수",
+    "form.submit.loading": "불러오는 중…",
+    "form.submit.saving": "저장 중…",
+    "form.user.label.admin": "관리자",
+    "form.user.label.confirmation": "비밀번호 확인",
+    "form.user.label.password": "비밀번호",
+    "form.user.label.username": "사용자명",
+    "menu.about": "소프트웨어 정보",
+    "menu.add_feed": "피드 구독",
+    "menu.add_user": "사용자 추가",
+    "menu.api_keys": "API 키",
+    "menu.categories": "카테고리",
+    "menu.create_api_key": "새 API 키 만들기",
+    "menu.create_category": "카테고리 만들기",
+    "menu.edit_category": "편집",
+    "menu.edit_feed": "편집",
+    "menu.export": "내보내기",
+    "menu.feed_entries": "게시물 목록",
+    "menu.feeds": "피드 목록",
+    "menu.flush_history": "기록 지우기",
+    "menu.history": "기록",
+    "menu.home_page": "홈페이지",
+    "menu.import": "가져오기",
+    "menu.integrations": "연동",
+    "menu.logout": "로그아웃",
+    "menu.mark_all_as_read": "모두 읽음으로 표시",
+    "menu.mark_page_as_read": "이 페이지를 읽음으로 표시",
+    "menu.preferences": "설정 정보",
+    "menu.refresh_all_feeds": "모든 피드를 백그라운드에서 새로고침",
+    "menu.refresh_feed": "새로고침",
+    "menu.search": "검색",
+    "menu.sessions": "세션",
+    "menu.settings": "설정",
+    "menu.shared_entries": "공유 게시물",
+    "menu.show_all_entries": "모든 게시물 표시",
+    "menu.show_only_starred_entries": "즐겨찾기만 표시",
+    "menu.show_only_unread_entries": "읽지 않은 게시물만 표시",
+    "menu.starred": "즐겨찾기",
+    "menu.title": "메뉴",
+    "menu.unread": "읽지 않음",
+    "menu.users": "사용자 목록",
+    "page.about.authors_label": "작성자:",
+    "page.about.authors_value": "Frédéric Guillot 및 기여자",
+    "page.about.build_date": "빌드 일시:",
+    "page.about.credits": "저작권 표시",
+    "page.about.db_usage": "데이터베이스 크기:",
+    "page.about.git_commit": "Git 커밋:",
+    "page.about.global_config_options": "전역 설정 옵션",
+    "page.about.go_version": "Go 버전:",
+    "page.about.license": "라이선스:",
+    "page.about.postgres_version": "Postgres 버전:",
+    "page.about.title": "소프트웨어 정보",
+    "page.about.version": "버전:",
+    "page.add_feed.choose_feed": "피드 선택",
+    "page.add_feed.label.url": "피드 URL",
+    "page.add_feed.legend.advanced_options": "고급 설정",
+    "page.add_feed.no_category": "카테고리가 없습니다. 카테고리가 최소 1개 필요합니다.",
+    "page.add_feed.submit": "피드 탐색 및 추가",
+    "page.add_feed.title": "새 피드",
+    "page.api_keys.never_used": "사용된 적 없음",
+    "page.api_keys.table.actions": "액션",
+    "page.api_keys.table.created_at": "생성일",
+    "page.api_keys.table.description": "설명",
+    "page.api_keys.table.last_used_at": "마지막 사용",
+    "page.api_keys.table.token": "토큰",
+    "page.api_keys.title": "API 키",
+    "page.categories.entries": "게시물 목록",
+    "page.categories.feed_count": [
+        "피드가 %d개 있습니다."
+    ],
+    "page.categories.feeds": "피드 목록",
+    "page.categories.no_feed": "피드가 없습니다.",
+    "page.categories.title": "카테고리",
+    "page.categories_count": [
+        "카테고리 %d개"
+    ],
+    "page.category_label": "카테고리: %s",
+    "page.edit_category.title": "카테고리 편집: %s",
+    "page.edit_feed.etag_header": "ETag 헤더:",
+    "page.edit_feed.last_check": "마지막 확인:",
+    "page.edit_feed.last_modified_header": "Last-Modified 헤더:",
+    "page.edit_feed.last_parsing_error": "최근 파싱 오류",
+    "page.edit_feed.no_header": "없음",
+    "page.edit_feed.title": "피드 편집: %s",
+    "page.edit_user.title": "사용자 편집: %s",
+    "page.entry.attachments": "첨부 파일",
+    "page.feeds.error_count": [
+        "오류 %d개"
+    ],
+    "page.feeds.last_check": "마지막 확인:",
+    "page.feeds.next_check": "다음 확인:",
+    "page.feeds.read_counter": "읽은 게시물 수",
+    "page.feeds.title": "피드 목록",
+    "page.footer.elevator": "페이지 맨 위로 올라가기",
+    "page.history.title": "기록",
+    "page.import.title": "가져오기",
+    "page.integration.bookmarklet": "북마크릿",
+    "page.integration.bookmarklet.help": "이 특별한 링크를 사용하면 브라우저에서 직접 웹사이트의 피드를 구독할 수 있습니다.",
+    "page.integration.bookmarklet.instructions": "이 링크를 브라우저 북마크로 드래그하세요.",
+    "page.integration.bookmarklet.name": "Miniflux에 추가",
+    "page.integration.miniflux_api": "Miniflux API",
+    "page.integration.miniflux_api_endpoint": "API 엔드포인트",
+    "page.integration.miniflux_api_password": "비밀번호",
+    "page.integration.miniflux_api_password_value": "계정 비밀번호",
+    "page.integration.miniflux_api_username": "사용자명",
+    "page.integrations.title": "연동",
+    "page.keyboard_shortcuts.close_modal": "모달 대화상자 닫기",
+    "page.keyboard_shortcuts.download_content": "원본 내용 다운로드",
+    "page.keyboard_shortcuts.go_to_bottom_item": "가장 아래 게시물로 이동",
+    "page.keyboard_shortcuts.go_to_categories": "카테고리",
+    "page.keyboard_shortcuts.go_to_feed": "피드",
+    "page.keyboard_shortcuts.go_to_feeds": "피드 목록",
+    "page.keyboard_shortcuts.go_to_history": "기록",
+    "page.keyboard_shortcuts.go_to_next_item": "다음 게시물",
+    "page.keyboard_shortcuts.go_to_next_page": "다음 페이지",
+    "page.keyboard_shortcuts.go_to_previous_item": "이전 게시물",
+    "page.keyboard_shortcuts.go_to_previous_page": "이전 페이지",
+    "page.keyboard_shortcuts.go_to_search": "검색 폼으로 이동",
+    "page.keyboard_shortcuts.go_to_settings": "설정",
+    "page.keyboard_shortcuts.go_to_starred": "즐겨찾기",
+    "page.keyboard_shortcuts.go_to_top_item": "맨 위 게시물로 이동",
+    "page.keyboard_shortcuts.go_to_unread": "읽지 않음",
+    "page.keyboard_shortcuts.mark_page_as_read": "현재 페이지의 게시물을 모두 읽음으로 표시",
+    "page.keyboard_shortcuts.open_comments": "댓글 링크 열기",
+    "page.keyboard_shortcuts.open_comments_same_window": "현재 탭에서 댓글 링크 열기",
+    "page.keyboard_shortcuts.open_item": "선택한 게시물 열기",
+    "page.keyboard_shortcuts.open_original": "원본 링크 열기",
+    "page.keyboard_shortcuts.open_original_same_window": "현재 탭에서 원본 링크 열기",
+    "page.keyboard_shortcuts.refresh_all_feeds": "모든 피드를 백그라운드에서 새로고침",
+    "page.keyboard_shortcuts.remove_feed": "이 피드 삭제",
+    "page.keyboard_shortcuts.save_article": "게시물 저장",
+    "page.keyboard_shortcuts.scroll_item_to_top": "게시물이 상단에 오도록 스크롤",
+    "page.keyboard_shortcuts.show_keyboard_shortcuts": "키보드 단축키 표시",
+    "page.keyboard_shortcuts.subtitle.actions": "작업",
+    "page.keyboard_shortcuts.subtitle.items": "게시물 간 이동",
+    "page.keyboard_shortcuts.subtitle.pages": "페이지 간 이동",
+    "page.keyboard_shortcuts.subtitle.sections": "섹션 이동",
+    "page.keyboard_shortcuts.title": "키보드 단축키",
+    "page.keyboard_shortcuts.toggle_star_status": "즐겨찾기 표시/해제",
+    "page.keyboard_shortcuts.toggle_entry_attachments": "첨부 파일 열기/닫기",
+    "page.keyboard_shortcuts.toggle_read_status_next": "읽음/읽지 않음 전환 후 다음 게시물로 이동",
+    "page.keyboard_shortcuts.toggle_read_status_prev": "읽음/읽지 않음 전환 후 이전 게시물로 이동",
+    "page.login.google_signin": "Google 계정으로 로그인",
+    "page.login.oidc_signin": "%s 계정으로 로그인",
+    "page.login.title": "로그인",
+    "page.login.webauthn_login": "패스키로 로그인",
+    "page.login.webauthn_login.error": "패스키로 로그인할 수 없음",
+    "page.new_api_key.title": "새 API 키",
+    "page.new_category.title": "새 카테고리",
+    "page.new_user.title": "새 사용자",
+    "page.offline.message": "오프라인입니다",
+    "page.offline.refresh_page": "페이지를 새로 고쳐 보세요",
+    "page.offline.title": "오프라인 모드",
+    "page.read_entry_count": [
+        "읽은 게시물 %d개"
+    ],
+    "page.search.title": "검색 결과",
+    "page.sessions.table.actions": "작업",
+    "page.sessions.table.current_session": "현재 세션",
+    "page.sessions.table.date": "날짜",
+    "page.sessions.table.ip": "IP 주소",
+    "page.sessions.table.user_agent": "User Agent",
+    "page.sessions.title": "세션",
+    "page.settings.link_google_account": "Google 계정과 연동",
+    "page.settings.link_oidc_account": "%s 계정과 연동",
+    "page.settings.title": "설정",
+    "page.settings.unlink_google_account": "Google 계정과 연동 해제",
+    "page.settings.unlink_oidc_account": "%s 계정과 연동 해제",
+    "page.settings.webauthn.actions": "작업",
+    "page.settings.webauthn.added_on": "추가일",
+    "page.settings.webauthn.delete": [
+        "패스키 %d개 삭제"
+    ],
+    "page.settings.webauthn.last_seen_on": "마지막 사용일",
+    "page.settings.webauthn.passkey_name": "패스키 이름",
+    "page.settings.webauthn.passkeys": "패스키 인증",
+    "page.settings.webauthn.register": "패스키 등록",
+    "page.settings.webauthn.register.error": "패스키를 등록할 수 없습니다",
+    "page.shared_entries.title": "공유 게시물",
+    "page.shared_entries_count": [
+        "공유 게시물 %d개"
+    ],
+    "page.starred.title": "즐겨찾기",
+    "page.starred_entry_count": [
+        "즐겨찾기 표시된 게시물 %d개"
+    ],
+    "page.total_entry_count": [
+        "총 게시물 %d개"
+    ],
+    "page.unread.title": "읽지 않음",
+    "page.unread_entry_count": [
+        "읽지 않은 게시물 %d개"
+    ],
+    "page.users.actions": "작업",
+    "page.users.admin.no": "아니오",
+    "page.users.admin.yes": "예",
+    "page.users.is_admin": "관리자",
+    "page.users.last_login": "마지막 로그인",
+    "page.users.never_logged": "로그인 기록 없음",
+    "page.users.title": "사용자 목록",
+    "page.users.username": "사용자명",
+    "page.webauthn_rename.title": "패스키 이름 변경",
+    "pagination.first": "처음",
+    "pagination.last": "마지막",
+    "pagination.next": "다음",
+    "pagination.previous": "이전",
+    "search.label": "검색",
+    "search.placeholder": "… 검색",
+    "search.submit": "검색",
+    "skip_to_content": "콘텐츠로 건너뛰기",
+    "time_elapsed.days": [
+        "%d일 전"
+    ],
+    "time_elapsed.hours": [
+        "%d시간 전"
+    ],
+    "time_elapsed.minutes": [
+        "%d분 전"
+    ],
+    "time_elapsed.months": [
+        "%d개월 전"
+    ],
+    "time_elapsed.not_yet": "미래",
+    "time_elapsed.now": "지금",
+    "time_elapsed.weeks": [
+        "%d주 전"
+    ],
+    "time_elapsed.years": [
+        "%d년 전"
+    ],
+    "time_elapsed.yesterday": "어제",
+    "tooltip.keyboard_shortcuts": "키보드 단축키: %s",
+    "tooltip.logged_user": "%s로 로그인 중"
+}