+ "recovery_codes_warning" : "Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.",
+ "subject_line_mastodon": "Like mastodon: copy as is",
+ "subject_line_noop": "Do not copy",
+ "post_status_content_type": "Post status content type",
+ "stop_gifs": "Play-on-hover GIFs",
+ "streaming": "Enable automatic streaming of new posts when scrolled to the top",
+ "user_mutes": "Users",
+ "useStreamingApi": "Receive posts and notifications real-time",
+ "useStreamingApiWarning": "(Not recommended, experimental, known to skip posts)",
+ "text": "Text",
+ "theme": "Theme",
+ "theme_help": "Use hex color codes (#rrggbb) to customize your color theme.",
+ "theme_help_v2_1": "You can also override certain component's colors and opacity by toggling the checkbox, use \"Clear all\" button to clear all overrides.",
+ "theme_help_v2_2": "Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.",
+ "tooltipRadius": "Tooltips/alerts",
+ "type_domains_to_mute": "Type in domains to mute",
+ "notification_setting_follows": "Users you follow",
+ "notification_setting_non_follows": "Users you do not follow",
+ "notification_setting_followers": "Users who follow you",
+ "notification_setting_non_followers": "Users who do not follow you",
+ "notification_setting_privacy": "Privacy",
+ "notification_setting_privacy_option": "Hide the sender and contents of push notifications",
+ "notification_mutes": "To stop receiving notifications from a specific user, use a mute.",
+ "notification_blocks": "Blocking a user stops all notifications as well as unsubscribes them.",
+ "enable_web_push_notifications": "Enable web push notifications",
+ "style": {
+ "switcher": {
+ "keep_color": "Keep colors",
+ "keep_shadows": "Keep shadows",
+ "keep_opacity": "Keep opacity",
+ "keep_roundness": "Keep roundness",
+ "keep_fonts": "Keep fonts",
+ "save_load_hint": "\"Keep\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.",
+ "reset": "Reset",
+ "clear_all": "Clear all",
+ "clear_opacity": "Clear opacity",
+ "load_theme": "Load theme",
+ "keep_as_is": "Keep as is",
+ "use_snapshot": "Old version",
+ "use_source": "New version",
+ "help": {
+ "upgraded_from_v2": "PleromaFE has been upgraded, theme could look a little bit different than you remember.",
+ "v2_imported": "File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.",
+ "future_version_imported": "File you imported was made in newer version of FE.",
+ "older_version_imported": "File you imported was made in older version of FE.",
+ "snapshot_present": "Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.",
+ "snapshot_missing": "No theme snapshot was in the file so it could look different than originally envisioned.",
+ "fe_upgraded": "PleromaFE's theme engine upgraded after version update.",
+ "fe_downgraded": "PleromaFE's version rolled back.",
+ "migration_snapshot_ok": "Just to be safe, theme snapshot loaded. You can try loading theme data.",
+ "migration_napshot_gone": "For whatever reason snapshot was missing, some stuff could look different than you remember.",
+ "snapshot_source_mismatch": "Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version."
+ }
+ },
+ "common": {
+ "color": "Color",
+ "opacity": "Opacity",
+ "contrast": {
+ "hint": "Contrast ratio is {ratio}, it {level} {context}",
+ "bad": "doesn't meet any accessibility guidelines"
+ },
+ "context": {
+ "18pt": "for large (18pt+) text",
+ "text": "for text"
+ }
+ }
+ },
+ "common_colors": {
+ "_tab_label": "Common",
+ "main": "Common colors",
+ "foreground_hint": "See \"Advanced\" tab for more detailed control",
+ "rgbo": "Icons, accents, badges"
+ },
+ "advanced_colors": {
+ "_tab_label": "Advanced",
+ "alert": "Alert background",
+ "alert_error": "Error",
+ "alert_warning": "Warning",
+ "alert_neutral": "Neutral",
+ "post": "Posts/User bios",
+ "badge": "Badge background",
+ "popover": "Tooltips, menus, popovers",
+ "badge_notification": "Notification",
+ "panel_header": "Panel header",
+ "top_bar": "Top bar",
+ "borders": "Borders",
+ "buttons": "Buttons",
+ "inputs": "Input fields",
+ "faint_text": "Faded text",
+ "underlay": "Underlay",
+ "poll": "Poll graph",
+ "icons": "Icons",
+ "highlight": "Highlighted elements",
+ "pressed": "Pressed",
+ "selectedPost": "Selected post",
+ "selectedMenu": "Selected menu item",
+ "disabled": "Disabled",
+ "toggled": "Toggled",
+ "tabs": "Tabs",
+ "chat": {
+ "incoming_background": "Incoming background",
+ "incoming_text": "Incoming text",
+ "incoming_link": "Incoming link",
+ "incoming_border": "Incoming border",
+ "outgoing_background": "Outgoing background",
+ "outgoing_text": "Outgoing text",
+ "outgoing_link": "Outgoing link",
+ "outgoing_border": "Outgoing border"
+ }
+ },
+ "radii": {
+ "_tab_label": "Roundness"
+ },
+ "shadows": {
+ "_tab_label": "Shadow and lighting",
+ "component": "Component",
+ "override": "Override",
+ "shadow_id": "Shadow #{value}",
+ "blur": "Blur",
+ "spread": "Spread",
+ "inset": "Inset",
+ "hintV3": "For shadows you can also use the {0} notation to use other color slot.",
+ "filter_hint": {
+ "always_drop_shadow": "Warning, this shadow always uses {0} when browser supports it.",
+ "drop_shadow_syntax": "{0} does not support {1} parameter and {2} keyword.",
+ "avatar_inset": "Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.",
+ "spread_zero": "Shadows with spread > 0 will appear as if it was set to zero",
+ "inset_classic": "Inset shadows will be using {0}"
+ },
+ "components": {
+ "panel": "Panel",
+ "panelHeader": "Panel header",
+ "topBar": "Top bar",
+ "avatar": "User avatar (in profile view)",
+ "avatarStatus": "User avatar (in post display)",
+ "popup": "Popups and tooltips",
+ "button": "Button",
+ "buttonHover": "Button (hover)",
+ "buttonPressed": "Button (pressed)",
+ "buttonPressedHover": "Button (pressed+hover)",
+ "input": "Input field"
+ }
+ },
+ "fonts": {
+ "_tab_label": "Fonts",
+ "help": "Select font to use for elements of UI. For \"custom\" you have to enter exact font name as it appears in system.",
+ "components": {
+ "interface": "Interface",
+ "input": "Input fields",
+ "post": "Post text",
+ "postCode": "Monospaced text in a post (rich text)"
+ },
+ "family": "Font name",
+ "size": "Size (in px)",
+ "weight": "Weight (boldness)",
+ "custom": "Custom"
+ },
+ "preview": {
+ "header": "Preview",
+ "content": "Content",
+ "error": "Example error",
+ "button": "Button",
+ "text": "A bunch of more {0} and {1}",
+ "mono": "content",
+ "input": "Just landed in L.A.",
+ "faint_link": "helpful manual",
+ "fine_print": "Read our {0} to learn nothing useful!",
+ "header_faint": "This is fine",
+ "checkbox": "I have skimmed over terms and conditions",
+ "link": "a nice lil' link"
+ }
+ },
+ "version": {
+ "title": "Version",
+ "backend_version": "Backend Version",
+ "frontend_version": "Frontend Version"
+ }
+ },
+ "time": {
+ "day": "{0} day",
+ "days": "{0} days",
+ "day_short": "{0}d",
+ "days_short": "{0}d",
+ "hour": "{0} hour",
+ "hours": "{0} hours",
+ "hour_short": "{0}h",
+ "hours_short": "{0}h",
+ "in_future": "in {0}",
+ "in_past": "{0} ago",
+ "minute": "{0} minute",
+ "minutes": "{0} minutes",
+ "minute_short": "{0}min",
+ "minutes_short": "{0}min",
+ "month": "{0} month",
+ "months": "{0} months",
+ "month_short": "{0}mo",
+ "months_short": "{0}mo",
+ "now": "just now",
+ "now_short": "now",
+ "second": "{0} second",
+ "seconds": "{0} seconds",
+ "second_short": "{0}s",
+ "seconds_short": "{0}s",
+ "week": "{0} week",
+ "weeks": "{0} weeks",
+ "week_short": "{0}w",
+ "weeks_short": "{0}w",
+ "year": "{0} year",
+ "years": "{0} years",
+ "year_short": "{0}y",
+ "years_short": "{0}y"
+ },
+ "timeline": {
+ "collapse": "Collapse",
+ "conversation": "Conversation",
+ "error_fetching": "Error fetching updates",
+ "load_older": "Load older nyans",
+ "no_retweet_hint": "Nyan is marked as followers-only or direct and cannot be renyaned",
+ "repeated": "renyaned",
+ "show_new": "Show new",
+ "up_to_date": "Up-to-date",
+ "no_more_statuses": "No more statuses",
+ "no_statuses": "No statuses"
+ },
+ "status": {
+ "favorites": "Favorites",
+ "repeats": "Repeats",
+ "delete": "Delete status",
+ "pin": "Pin on profile",
+ "unpin": "Unpin from profile",
+ "pinned": "Pinned",
+ "delete_confirm": "Do you really want to delete this status?",
+ "reply_to": "Reply to",
+ "replies_list": "Replies:",
+ "mute_conversation": "Mute conversation",
+ "unmute_conversation": "Unmute conversation",
+ "status_unavailable": "Status unavailable",
+ "copy_link": "Copy link to status"
+ },
+ "user_card": {
+ "approve": "Approve",
+ "block": "Block",
+ "blocked": "Blocked!",
+ "deny": "Deny",
+ "favorites": "Favorites",
+ "follow": "Follow",
+ "follow_sent": "Request sent!",
+ "follow_progress": "Requesting…",
+ "follow_again": "Send request again?",
+ "follow_unfollow": "Unfollow",
+ "followees": "Following",
+ "followers": "Followers",
+ "following": "Following!",
+ "follows_you": "Follows you!",
+ "hidden": "Hidden",
+ "its_you": "It's you!",
+ "media": "Media",
+ "mention": "Mention",
+ "message": "Message",
+ "mute": "Mute",
+ "muted": "Muted",
+ "per_day": "per day",
+ "remote_follow": "Remote follow",
+ "report": "Report",
+ "statuses": "Statuses",
+ "subscribe": "Subscribe",
+ "unsubscribe": "Unsubscribe",
+ "unblock": "Unblock",
+ "unblock_progress": "Unblocking...",
+ "block_progress": "Blocking...",
+ "unmute": "Unmute",
+ "unmute_progress": "Unmuting...",
+ "mute_progress": "Muting...",
+ "hide_repeats": "Hide repeats",
+ "show_repeats": "Show repeats",
+ "admin_menu": {
+ "moderation": "Moderation",
+ "grant_admin": "Grant Admin",
+ "revoke_admin": "Revoke Admin",
+ "grant_moderator": "Grant Moderator",
+ "revoke_moderator": "Revoke Moderator",
+ "activate_account": "Activate account",
+ "deactivate_account": "Deactivate account",
+ "delete_account": "Delete account",
+ "force_nsfw": "Mark all posts as NSFW",
+ "strip_media": "Remove media from posts",
+ "force_unlisted": "Force posts to be unlisted",
+ "sandbox": "Force posts to be followers-only",
+ "disable_remote_subscription": "Disallow following user from remote instances",
+ "disable_any_subscription": "Disallow following user at all",
+ "quarantine": "Disallow user posts from federating",
+ "delete_user": "Delete user",
+ "delete_user_confirmation": "Are you absolutely sure? This action cannot be undone."
+ }
+ },
+ "user_profile": {
+ "timeline_title": "User Timeline",
+ "profile_does_not_exist": "Sorry, this profile does not exist.",
+ "profile_loading_error": "Sorry, there was an error loading this profile."
+ },
+ "user_reporting": {
+ "title": "Reporting {0}",
+ "add_comment_description": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "additional_comments": "Additional comments",
+ "forward_description": "The account is from another server. Send a copy of the report there as well?",
+ "forward_to": "Forward to {0}",
+ "submit": "Submit",
+ "generic_error": "An error occurred while processing your request."
+ "file_too_big": "File too big [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
+ "default": "Try again later"
+ },
+ "file_size_units": {
+ "B": "B",
+ "KiB": "KiB",
+ "MiB": "MiB",
+ "GiB": "GiB",
+ "TiB": "TiB"
+ }
+ },
+ "search": {
+ "people": "People",
+ "hashtags": "Hashtags",
+ "person_talking": "{count} person talking",
+ "people_talking": "{count} people talking",
+ "no_results": "No results"
+ },
+ "password_reset": {
+ "forgot_password": "Forgot password?",
+ "password_reset": "Password reset",
+ "instruction": "Enter your email address or username. We will send you a link to reset your password.",
+ "placeholder": "Your email or username",
+ "check_email": "Check your email for a link to reset your password.",
+ "return_home": "Return to the home page",
+ "not_found": "We couldn't find that email or username.",
+ "too_many_requests": "You have reached the limit of attempts, try again later.",
+ "password_reset_disabled": "Password reset is disabled. Please contact your instance administrator.",
+ "password_reset_required": "You must reset your password to log in.",
+ "password_reset_required_but_mailer_is_disabled": "You must reset your password, but password reset is disabled. Please contact your instance administrator."
+ },
+ "chats": {
+ "message_user": "Message {nickname}",
+ "write_message": "Write a message",
+ "delete": "Delete",
+ "chats": "Chats",
+ "new": "New Chat",
+ "empty_message_error": "Cannot post empty message",
+ "more": "More",
+ "delete_confirm": "Do you really want to delete this message?"
// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.
// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed
// Also, when adding a new language to "messages" variable, please do it alphabetically by language code so that users can search or check their custom language easily.
// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON
// sed command for converting currently formatted JS to JSON: