diff --git a/src/intl/ko-KR.js b/src/intl/ko-KR.js new file mode 100644 index 00000000..30a878eb --- /dev/null +++ b/src/intl/ko-KR.js @@ -0,0 +1,712 @@ +export default { + // Home page, basic
+ Pinafore(피나포레)는 + + 마스토돈을 위한 웹 클라이언트로, + 속도와 단순함을 위해 설계되었습니다. +
++ + 안내 블로그 포스트를 읽어 보거나, 인스턴스에 로그인하여 시작해 + 보세요: +
`, + logIn: "로그인", + footer: ` ++ Pinafore는 + + Nolan Lawson이 만들고 + + AGPL 라이선스로 배포되는 + + 오픈 소스 소프트웨어입니다. + 개인 정보 보호 정책 +
+ `, + // Manifest + longAppName: "Pinafore", + newStatus: "새 툿", + // Generic UI + loading: "불러오는 중", + okay: "확인", + cancel: "취소", + alert: "경고", + close: "닫기", + error: "오류: {error}", + errorShort: "오류:", + // Relative timestamps + justNow: "방금", + // Navigation, page titles + navItemLabel: ` + {label} {selected, select, + true {(현재 페이지)} + other {} + } {name, select, + notifications {{count, plural, + =0 {} + one {(알림 1개)} + other {(알림 {count}개)} + }} + community {{count, plural, + =0 {} + one {(팔로우 요청 1개)} + other {(팔로우 요청 {count}개)} + }} + other {} + } + `, + blockedUsers: "차단된 사용자", + bookmarks: "북마크", + directMessages: "다이렉트 메시지", + favorites: "관심글", + federated: "연합", + home: "홈", + local: "로컬", + notifications: "알림", + mutedUsers: "뮤트된 사용자", + pinnedStatuses: "고정된 툿", + followRequests: "팔로우 요청", + followRequestsLabel: `팔로우 요청 {hasFollowRequests, select, + true {({count})} + other {} + }`, + list: "리스트", + search: "검색", + pageHeader: "페이지 머릿글", + goBack: "뒤로 가기", + back: "뒤로", + profile: "프로필", + federatedTimeline: "연합 타임라인", + localTimeline: "로컬 타임라인", + // community page + community: "커뮤니티", + pinnableTimelines: "고정할 수 있는 타임라인", + timelines: "타임라인", + lists: "리스트", + instanceSettings: "인스턴스 설정", + notificationMentions: "언급 알림", + profileWithMedia: "프로필과 미디어", + profileWithReplies: "프로필과 답글", + hashtag: "해시태그", + // not logged in + profileNotLoggedIn: "로그인하면 여기에 사용자 타임라인이 표시됩니다.", + bookmarksNotLoggedIn: "로그인하면 여기에 북마크가 표시됩니다.", + directMessagesNotLoggedIn: + "로그인하면 여기에 다이렉트 메시지가 표시됩니다.", + favoritesNotLoggedIn: "로그인하면 여기에 관심글이 표시됩니다.", + federatedTimelineNotLoggedIn: + "로그인하면 여기에 연합 타임라인이 표시됩니다.", + localTimelineNotLoggedIn: "로그인하면 여기에 로컬 타임라인이 표시됩니다.", + searchNotLoggedIn: "인스턴스에 로그인하면 여기에서 검색할 수 있습니다.", + communityNotLoggedIn: "로그인하면 여기에 커뮤니티 설정이 표시되빈다.", + listNotLoggedIn: "로그인하면 여기에 리스트가 표시됩니다.", + notificationsNotLoggedIn: + "로그인하면 여기에 알림이 표시됩니다.", + notificationMentionsNotLoggedIn: + "로그인하면 여기에 멘션 알림이 표시됩니다.", + statusNotLoggedIn: "로그인하면 여기에 글타래가 표시됩니다.", + tagNotLoggedIn: "로그인하면 여기에 해시태그 타임라인이 표시됩니다.", + // Notification subpages + filters: "필터", + all: "모두", + mentions: "멘션", + // Follow requests + approve: "승인", + reject: "거부", + // Hotkeys + hotkeys: "키보드 바로가기", + global: "전체", + timeline: "타임라인", + media: "미디어", + globalHotkeys: ` + {leftRightChangesFocus, select, + true { ++ Pinafore is + free and open-source software + created by + Nolan Lawson + and distributed under the + GNU Affero General Public License. +
+ ++ Pinafore does not store any personal information on its servers, + including but not limited to names, email addresses, + IP addresses, posts, and photos. +
+ ++ Pinafore is a static site. All data is stored locally in your browser and shared with the fediverse + instance(s) you connect to. +
+ ++ Icons provided by Font Awesome. +
+ ++ Logo thanks to "sailboat" by Gregor Cresnar from + the Noun Project. +
`, + // Settings + settings: "Settings", + general: "General", + generalSettings: "General settings", + showSensitive: "Show sensitive media by default", + showPlain: "Show a plain gray color for sensitive media", + allSensitive: "Treat all media as sensitive", + largeMedia: "Show large inline images and videos", + autoplayGifs: "Autoplay animated GIFs", + hideCards: "Hide link preview cards", + underlineLinks: "Underline links in toots and profiles", + accessibility: "Accessibility", + reduceMotion: "Reduce motion in UI animations", + disableTappable: "Disable tappable area on entire toot", + removeEmoji: "Remove emoji from user display names", + shortAria: "Use short article ARIA labels", + theme: "Theme", + themeForInstance: "Theme for {instance}", + disableCustomScrollbars: "Disable custom scrollbars", + bottomNav: "Place the navigation bar at the bottom of the screen", + centerNav: "Center the navigation bar", + preferences: "Preferences", + hotkeySettings: "Hotkey settings", + disableHotkeys: "Disable all hotkeys", + leftRightArrows: + "Left/right arrow keys change focus rather than columns/media", + guide: "Guide", + reload: "Reload", + // Wellness settings + wellness: "Wellness", + wellnessSettings: "Wellness settings", + wellnessDescription: `Wellness settings are designed to reduce the addictive or anxiety-inducing aspects of social media. + Choose any options that work well for you.`, + enableAll: "Enable all", + metrics: "Metrics", + hideFollowerCount: "Hide follower counts (capped at 10)", + hideReblogCount: "Hide boost counts", + hideFavoriteCount: "Hide favorite counts", + hideUnread: "Hide unread notifications count (i.e. the red dot)", + // The quality that makes something seem important or interesting because it seems to be happening now + immediacy: "Immediacy", + showAbsoluteTimestamps: + 'Show absolute timestamps (e.g. "March 3rd") instead of relative timestamps (e.g. "5 minutes ago")', + ui: "UI", + grayscaleMode: "Grayscale mode", + wellnessFooter: `These settings are partly based on guidelines from the + Center for Humane Technology.`, + // This is a link: "You can filter or disable notifications in the _instance settings_" + filterNotificationsPre: "You can filter or disable notifications in the", + filterNotificationsText: "instance settings", + filterNotificationsPost: "", + // Custom tooltips, like "Disable _infinite scroll_", where you can click _infinite scroll_ + // to see a description. It's hard to properly internationalize, so we just break up the strings. + disableInfiniteScrollPre: "Disable", + disableInfiniteScrollText: "infinite scroll", + disableInfiniteScrollDescription: `When infinite scroll is disabled, new toots will not automatically appear at + the bottom or top of the timeline. Instead, buttons will allow you to + load more content on demand.`, + disableInfiniteScrollPost: "", + // Instance settings + loggedInAs: "Logged in as", + homeTimelineFilters: "Home timeline filters", + notificationFilters: "Notification filters", + pushNotifications: "Push notifications", + // Add instance page + storageError: `It seems Pinafore cannot store data locally. Is your browser in private mode + or blocking cookies? Pinafore stores all data locally, and requires LocalStorage and + IndexedDB to work correctly.`, + javaScriptError: "You must enable JavaScript to log in.", + enterInstanceName: "Enter instance name", + instanceColon: "Instance:", + // Custom tooltip, concatenated together + getAnInstancePre: "Don't have an", + getAnInstanceText: "instance", + getAnInstanceDescription: + "An instance is your Mastodon home server, such as mastodon.social or cybre.space.", + getAnInstancePost: "?", + joinMastodon: "Join Mastodon!", + instancesYouveLoggedInTo: "Instances you've logged in to:", + addAnotherInstance: "Add another instance", + youreNotLoggedIn: "You're not logged in to any instances.", + currentInstanceLabel: `{instance} {current, select, + true {(current instance)} + other {} + }`, + // Link text + logInToAnInstancePre: "", + logInToAnInstanceText: "Log in to an instance", + logInToAnInstancePost: "to start using Pinafore.", + // Another custom tooltip + showRingPre: "Always show", + showRingText: "focus ring", + showRingDescription: `The focus ring is the outline showing the currently focused element. By default, it's only + shown when using the keyboard (not mouse or touch), but you may choose to always show it.`, + showRingPost: "", + instances: "Instances", + addInstance: "Add instance", + homeTimelineFilterSettings: "Home timeline filter settings", + showReblogs: "Show boosts", + showReplies: "Show replies", + switchOrLogOut: "Switch to or log out of this instance", + switchTo: "Switch to this instance", + switchToInstance: "Switch to instance", + switchToNameOfInstance: "Switch to {instance}", + logOut: "Log out", + logOutOfInstanceConfirm: "Log out of {instance}?", + notificationFilterSettings: "Notification filter settings", + // Push notifications + browserDoesNotSupportPush: "Your browser doesn't support push notifications.", + deniedPush: "You have denied permission to show notifications.", + pushNotificationsNote: + "Note that you can only have push notifications for one instance at a time.", + pushSettings: "Push notification settings", + newFollowers: "New followers", + reblogs: "Boosts", + pollResults: "Poll results", + subscriptions: "Subscribed toots", + needToReauthenticate: + "You need to reauthenticate in order to enable push notification. Log out of {instance}?", + failedToUpdatePush: "Failed to update push notification settings: {error}", + // Themes + chooseTheme: "Choose a theme", + darkBackground: "Dark background", + lightBackground: "Light background", + themeLabel: `{label} {default, select, + true {(default)} + other {} + }`, + animatedImage: "Animated image: {description}", + showImage: `Show {animated, select, + true {animated} + other {} + } image: {description}`, + playVideoOrAudio: `Play {audio, select, + true {audio} + other {video} + }: {description}`, + accountFollowedYou: "{name} followed you, {account}", + accountSignedUp: "{name} signed up, {account}", + reblogCountsHidden: "Boost counts hidden", + favoriteCountsHidden: "Favorite counts hidden", + rebloggedTimes: `Boosted {count, plural, + one {1 time} + other {{count} times} + }`, + favoritedTimes: `Favorited {count, plural, + one {1 time} + other {{count} times} + }`, + pinnedStatus: "Pinned toot", + rebloggedYou: "boosted your toot", + favoritedYou: "favorited your toot", + followedYou: "followed you", + signedUp: "signed up", + posted: "posted", + pollYouCreatedEnded: "A poll you created has ended", + pollYouVotedEnded: "A poll you voted on has ended", + reblogged: "boosted", + favorited: "favorited", + unreblogged: "unboosted", + unfavorited: "unfavorited", + showSensitiveMedia: "Show sensitive media", + hideSensitiveMedia: "Hide sensitive media", + clickToShowSensitive: "Sensitive content. Click to show.", + longPost: "Long post", + // Accessible status labels + accountRebloggedYou: "{account} boosted your toot", + accountFavoritedYou: "{account} favorited your toot", + rebloggedByAccount: "Boosted by {account}", + contentWarningContent: "Content warning: {spoiler}", + hasMedia: "has media", + hasPoll: "has poll", + shortStatusLabel: "{privacy} toot by {account}", + // Privacy types + public: "Public", + unlisted: "Unlisted", + followersOnly: "Followers-only", + direct: "Direct", + // Themes + themeRoyal: "Royal", + themeScarlet: "Scarlet", + themeSeafoam: "Seafoam", + themeHotpants: "Hotpants", + themeOaken: "Oaken", + themeMajesty: "Majesty", + themeGecko: "Gecko", + themeGrayscale: "Grayscale", + themeOzark: "Ozark", + themeCobalt: "Cobalt", + themeSorcery: "Sorcery", + themePunk: "Punk", + themeRiot: "Riot", + themeHacker: "Hacker", + themeMastodon: "Mastodon", + themePitchBlack: "Pitch Black", + themeDarkGrayscale: "Dark Grayscale", + // Polls + voteOnPoll: "Vote on poll", + pollChoices: "Poll choices", + vote: "Vote", + pollDetails: "Poll details", + refresh: "Refresh", + expires: "Ends", + expired: "Ended", + voteCount: `{count, plural, + one {1 vote} + other {{count} votes} + }`, + // Status interactions + clickToShowThread: "{time} - click to show thread", + showMore: "Show more", + showLess: "Show less", + closeReply: "Close reply", + cannotReblogFollowersOnly: "Cannot be boosted because this is followers-only", + cannotReblogDirectMessage: + "Cannot be boosted because this is a direct message", + reblog: "Boost", + reply: "Reply", + replyToThread: "Reply to thread", + favorite: "Favorite", + unfavorite: "Unfavorite", + // timeline + loadingMore: "Loading more…", + loadMore: "Load more", + showCountMore: "Show {count} more", + nothingToShow: "Nothing to show.", + // status thread page + statusThreadPage: "Toot thread page", + status: "Toot", + // toast messages + blockedAccount: "Blocked account", + unblockedAccount: "Unblocked account", + unableToBlock: "Unable to block account: {error}", + unableToUnblock: "Unable to unblock account: {error}", + bookmarkedStatus: "Bookmarked toot", + unbookmarkedStatus: "Unbookmarked toot", + unableToBookmark: "Unable to bookmark: {error}", + unableToUnbookmark: "Unable to unbookmark: {error}", + cannotPostOffline: "You cannot post while offline", + unableToPost: "Unable to post toot: {error}", + statusDeleted: "Toot deleted", + unableToDelete: "Unable to delete toot: {error}", + cannotFavoriteOffline: "You cannot favorite while offline", + cannotUnfavoriteOffline: "You cannot unfavorite while offline", + unableToFavorite: "Unable to favorite: {error}", + unableToUnfavorite: "Unable to unfavorite: {error}", + followedAccount: "Followed account", + unfollowedAccount: "Unfollowed account", + unableToFollow: "Unable to follow account: {error}", + unableToUnfollow: "Unable to unfollow account: {error}", + accessTokenRevoked: "The access token was revoked, logged out of {instance}", + loggedOutOfInstance: "Logged out of {instance}", + failedToUploadMedia: "Failed to upload media: {error}", + mutedAccount: "Muted account", + unmutedAccount: "Unmuted account", + unableToMute: "Unable to mute account: {error}", + unableToUnmute: "Unable to unmute account: {error}", + mutedConversation: "Muted conversation", + unmutedConversation: "Unmuted conversation", + unableToMuteConversation: "Unable to mute conversation: {error}", + unableToUnmuteConversation: "Unable to unmute conversation: {error}", + unpinnedStatus: "Unpinned toot", + unableToPinStatus: "Unable to pin toot: {error}", + unableToUnpinStatus: "Unable to unpin toot: {error}", + unableToRefreshPoll: "Unable to refresh poll: {error}", + unableToVoteInPoll: "Unable to vote in poll: {error}", + cannotReblogOffline: "You cannot boost while offline.", + cannotUnreblogOffline: "You cannot unboost while offline.", + failedToReblog: "Failed to boost: {error}", + failedToUnreblog: "Failed to unboost: {error}", + submittedReport: "Submitted report", + failedToReport: "Failed to report: {error}", + approvedFollowRequest: "Approved follow request", + rejectedFollowRequest: "Rejected follow request", + unableToApproveFollowRequest: "Unable to approve follow request: {error}", + unableToRejectFollowRequest: "Unable to reject follow request: {error}", + searchError: "Error during search: {error}", + hidDomain: "Hid domain", + unhidDomain: "Unhid domain", + unableToHideDomain: "Unable to hide domain: {error}", + unableToUnhideDomain: "Unable to unhide domain: {error}", + showingReblogs: "Showing boosts", + hidingReblogs: "Hiding boosts", + unableToShowReblogs: "Unable to show boosts: {error}", + unableToHideReblogs: "Unable to hide boosts: {error}", + unableToShare: "Unable to share: {error}", + unableToSubscribe: "Unable to subscribe: {error}", + unableToUnsubscribe: "Unable to unsubscribe: {error}", + showingOfflineContent: "Internet request failed. Showing offline content.", + youAreOffline: + "You seem to be offline. You can still read toots while offline.", + // Snackbar UI + updateAvailable: "App update available.", + // Word/phrase filters + wordFilters: "Word filters", + noFilters: "You don't have any word filters.", + wordOrPhrase: "Word or phrase", + contexts: "Contexts", + addFilter: "Add filter", + editFilter: "Edit filter", + filterHome: "Home and lists", + filterNotifications: "Notifications", + filterPublic: "Public timelines", + filterThread: "Conversations", + filterAccount: "Profiles", + filterUnknown: "Unknown", + expireAfter: "Expire after", + whereToFilter: "Where to filter", + irreversible: "Irreversible", + wholeWord: "Whole word", + save: "Save", + updatedFilter: "Updated filter", + createdFilter: "Created filter", + failedToModifyFilter: "Failed to modify filter: {error}", + deletedFilter: "Deleted filter", + required: "Required", + // Dialogs + profileOptions: "Profile options", + copyLink: "Copy link", + emoji: "Emoji", + editMedia: "Edit media", + shortcutHelp: "Shortcut help", + statusOptions: "Status options", + confirm: "Confirm", + closeDialog: "Close dialog", + postPrivacy: "Post privacy", + homeOnInstance: "Home on {instance}", + statusesTimelineOnInstance: "Statuses: {timeline} timeline on {instance}", + statusesHashtag: "Statuses: #{hashtag} hashtag", + statusesThread: "Statuses: thread", + statusesAccountTimeline: "Statuses: account timeline", + statusesList: "Statuses: list", + notificationsOnInstance: "Notifications on {instance}", +};