diff --git a/app/javascript/mastodon/locales/dog.json b/app/javascript/mastodon/locales/dog.json
index 4efac9547..01750c81c 100644
--- a/app/javascript/mastodon/locales/dog.json
+++ b/app/javascript/mastodon/locales/dog.json
@@ -1,19 +1,24 @@
{
+ "account.account_note_header": "Note",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
"account.badges.group": "Group",
"account.block": "Block @{name}",
- "account.block_domain": "Hide everything from {domain}",
+ "account.block_domain": "Block domain {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel pack request",
"account.direct": "Direct message @{name}",
- "account.domain_blocked": "Domain hidden",
+ "account.disable_notifications": "Stop notifying me when @{name} posts",
+ "account.domain_blocked": "Domain blocked",
"account.edit_profile": "Edit profile",
+ "account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile",
"account.follow": "Join Pack",
"account.followers": "Pack Members",
"account.followers.empty": "No one has joined this dog's pack yet.",
- "account.follows": "Joined Packs",
+ "account.followers_counter": "{count, plural, one {{counter} Pack Member} other {{counter} Pack Members}}",
+ "account.following_counter": "{count, plural, one {{counter} Joined Pack} other {{counter} Joined Packs}}",
"account.follows.empty": "This dog hasn't joined any packs yet.",
"account.follows_you": "In your pack",
"account.hide_reblogs": "Hide awoos from @{name}",
@@ -33,12 +38,14 @@
"account.requested": "Awaiting approval. Click to cancel pack request",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show awoos from @{name}",
+ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock": "Unblock @{name}",
- "account.unblock_domain": "Unhide {domain}",
+ "account.unblock_domain": "Unblock domain {domain}",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Leave Pack",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.placeholder": "Click to add note",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
@@ -91,9 +98,9 @@
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
+ "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
+ "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "Write your warning here",
@@ -142,6 +149,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any dogs yet.",
@@ -161,12 +169,15 @@
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually join dogs' packs from other servers to fill it up",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "generic.saved": "Saved",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -212,12 +223,12 @@
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked dogs list",
"keyboard_shortcuts.boost": "to awoo",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.column": "to focus a toot in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "to open toot",
"keyboard_shortcuts.favourite": "to boop",
"keyboard_shortcuts.favourites": "to open boops list",
"keyboard_shortcuts.federated": "to open federated timeline",
@@ -236,6 +247,7 @@
"keyboard_shortcuts.reply": "to bark",
"keyboard_shortcuts.requests": "to open pack requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -243,9 +255,10 @@
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
+ "lightbox.compress": "Compress image view box",
+ "lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
- "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -253,6 +266,10 @@
"lists.edit.submit": "Change title",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
+ "lists.replies_policy.followed": "Any followed dog",
+ "lists.replies_policy.list": "Members of the list",
+ "lists.replies_policy.none": "No one",
+ "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among dogs whose packs you've joined",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
@@ -260,7 +277,9 @@
"media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.duration": "Duration",
"mute_modal.hide_notifications": "Hide notifications from this dog?",
+ "mute_modal.indefinite": "Indefinite",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked dogs",
"navigation_bar.bookmarks": "Bookmarks",
@@ -291,6 +310,7 @@
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} awooed your toot",
+ "notification.status": "{name} just posted",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
@@ -306,13 +326,24 @@
"notifications.column_settings.reblog": "Awoos:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
+ "notifications.column_settings.status": "New toots:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Awoos",
"notifications.filter.favourites": "Boops",
"notifications.filter.follows": "Joined Packs",
"notifications.filter.mentions": "Barks",
"notifications.filter.polls": "Poll results",
+ "notifications.filter.statuses": "Updates from dogs you follow",
+ "notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications",
+ "notifications.mark_as_read": "Mark every notification as read",
+ "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
+ "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
+ "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
+ "notifications_permission_banner.enable": "Enable desktop notifications",
+ "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
+ "notifications_permission_banner.title": "Never miss a thing",
+ "picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
"poll.total_people": "{count, plural, one {# dog} other {# dogs}}",
@@ -412,24 +443,34 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Pack Members",
+ "timeline_hint.resources.follows": "Joined Packs",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.counter_by_accounts": "{count, plural, one {{counter} dog} other {{counter} dogs}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "units.short.billion": "{count}B",
+ "units.short.million": "{count}M",
+ "units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
+ "upload_form.thumbnail": "Change thumbnail",
"upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
+ "upload_modal.choose_image": "Choose image",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
diff --git a/app/javascript/mastodon/locales/lion.json b/app/javascript/mastodon/locales/lion.json
index 2d2411b67..4eb9ee75d 100644
--- a/app/javascript/mastodon/locales/lion.json
+++ b/app/javascript/mastodon/locales/lion.json
@@ -1,19 +1,24 @@
{
+ "account.account_note_header": "Note",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
"account.badges.group": "Group",
"account.block": "Block @{name}",
- "account.block_domain": "Hide everything from {domain}",
+ "account.block_domain": "Block domain {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel pride request",
"account.direct": "Direct message @{name}",
- "account.domain_blocked": "Domain hidden",
+ "account.disable_notifications": "Stop notifying me when @{name} posts",
+ "account.domain_blocked": "Domain blocked",
"account.edit_profile": "Edit profile",
+ "account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile",
"account.follow": "Join pride",
"account.followers": "Pride Members",
"account.followers.empty": "No one has joined this lion's pride yet.",
- "account.follows": "Joined Prides",
+ "account.followers_counter": "{count, plural, one {{counter} Pride Member} other {{counter} Pride Members}}",
+ "account.following_counter": "{count, plural, one {{counter} Joined Pride} other {{counter} Joined Prides}}",
"account.follows.empty": "This lion hasn't joined any prides yet.",
"account.follows_you": "In your pride",
"account.hide_reblogs": "Hide roars from @{name}",
@@ -33,12 +38,14 @@
"account.requested": "Awaiting approval. Click to cancel pride request",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show roars from @{name}",
+ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock": "Unblock @{name}",
"account.unblock_domain": "Unhide {domain}",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Leave Pride",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.placeholder": "Click to add note",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
@@ -57,7 +64,7 @@
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse lions",
- "column.domain_blocks": "Hidden domains",
+ "column.domain_blocks": "Blocked domains",
"column.favourites": "Boops",
"column.follow_requests": "Pride requests",
"column.home": "Home",
@@ -77,7 +84,7 @@
"community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media Only",
"community.column_settings.remote_only": "Remote only",
- "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned lions.",
+ "compose_form.direct_message_warning": "This toot will only be sent to the mentioned lions.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can join your pride to view your pride-only toots.",
@@ -91,9 +98,9 @@
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
+ "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
+ "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "Write your warning here",
@@ -105,7 +112,7 @@
"confirmations.delete.message": "Are you sure you want to delete this toot?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.confirm": "Block entire domain",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
"confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?",
@@ -142,6 +149,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any lions yet.",
@@ -161,12 +169,15 @@
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually join lions' prides from other servers to fill it up",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "generic.saved": "Saved",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -212,12 +223,12 @@
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked lions list",
"keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.column": "to focus a toot in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "to open toot",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourites": "to open boops list",
"keyboard_shortcuts.federated": "to open federated timeline",
@@ -236,6 +247,7 @@
"keyboard_shortcuts.reply": "to meow",
"keyboard_shortcuts.requests": "to open pride requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -243,9 +255,10 @@
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
+ "lightbox.compress": "Compress image view box",
+ "lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
- "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -253,6 +266,10 @@
"lists.edit.submit": "Change title",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
+ "lists.replies_policy.followed": "Any followed user",
+ "lists.replies_policy.list": "Members of the list",
+ "lists.replies_policy.none": "No one",
+ "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among lions whose prides you've joined",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
@@ -260,7 +277,9 @@
"media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.duration": "Duration",
"mute_modal.hide_notifications": "Hide notifications from this lion?",
+ "mute_modal.indefinite": "Indefinite",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked lions",
"navigation_bar.bookmarks": "Bookmarks",
@@ -291,12 +310,13 @@
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} roared your toot",
+ "notification.status": "{name} just posted",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.favourite": "Boops:",
- "notifications.column_settings.follow": "New pride members:",
- "notifications.column_settings.mention": "Meows:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New Pride Members:",
"notifications.column_settings.follow_request": "New pride requests:",
@@ -306,13 +326,24 @@
"notifications.column_settings.reblog": "Roars:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
+ "notifications.column_settings.status": "New toots:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Roars",
"notifications.filter.favourites": "Boops",
"notifications.filter.follows": "Pride Members",
"notifications.filter.mentions": "Meows",
"notifications.filter.polls": "Poll results",
+ "notifications.filter.statuses": "Updates from lions you follow",
+ "notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications",
+ "notifications.mark_as_read": "Mark every notification as read",
+ "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
+ "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
+ "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
+ "notifications_permission_banner.enable": "Enable desktop notifications",
+ "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
+ "notifications_permission_banner.title": "Never miss a thing",
+ "picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
"poll.total_people": "{count, plural, one {# lion} other {# lions}}",
@@ -348,9 +379,9 @@
"report.target": "Reporting {target}",
"search.placeholder": "Search",
"search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, booped, roard, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.full_text": "Simple text returns toots you have written, booped, roard, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
+ "search_popout.tips.status": "toot",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "lion",
"search_results.accounts": "Lions",
@@ -359,12 +390,12 @@
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "status.admin_status": "Open this toot in the moderation interface",
"status.block": "Block @{name}",
"status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unroar",
"status.cannot_reblog": "This toot cannot be roared",
- "status.copy": "Copy link to status",
+ "status.copy": "Copy link to toot",
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
@@ -412,24 +443,34 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Pride Members",
+ "timeline_hint.resources.follows": "Joined Prides",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.counter_by_accounts": "{count, plural, one {{counter} lion} other {{counter} lions}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "units.short.billion": "{count}B",
+ "units.short.million": "{count}M",
+ "units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
+ "upload_form.thumbnail": "Change thumbnail",
"upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
+ "upload_modal.choose_image": "Choose image",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy lion",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
diff --git a/app/javascript/mastodon/locales/squeak.json b/app/javascript/mastodon/locales/squeak.json
index 4bbaf108b..2920990fc 100644
--- a/app/javascript/mastodon/locales/squeak.json
+++ b/app/javascript/mastodon/locales/squeak.json
@@ -1,19 +1,24 @@
{
+ "account.account_note_header": "Note",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
"account.badges.group": "Group",
"account.block": "Block @{name}",
- "account.block_domain": "Hide everything from {domain}",
+ "account.block_domain": "Block domain {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
- "account.domain_blocked": "Domain hidden",
+ "account.disable_notifications": "Stop notifying me when @{name} posts",
+ "account.domain_blocked": "Domain blocked",
"account.edit_profile": "Edit profile",
+ "account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile",
"account.follow": "Follow",
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
- "account.follows": "Follows",
+ "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide pumps from @{name}",
@@ -33,12 +38,14 @@
"account.requested": "Awaiting approval. Click to cancel follow request",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show pumps from @{name}",
+ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock": "Unblock @{name}",
- "account.unblock_domain": "Unhide {domain}",
+ "account.unblock_domain": "Unblock domain {domain}",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.placeholder": "Click to add note",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
@@ -57,7 +64,7 @@
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
- "column.domain_blocks": "Hidden domains",
+ "column.domain_blocks": "Blocked domains",
"column.favourites": "Squeaks",
"column.follow_requests": "Follow requests",
"column.home": "Home",
@@ -91,9 +98,9 @@
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
+ "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
+ "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "Write your warning here",
@@ -102,10 +109,10 @@
"confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
"confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete.message": "Are you sure you want to delete this toot?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.confirm": "Block entire domain",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?",
@@ -113,7 +120,7 @@
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.message": "Are you sure you want to mute {name}?",
"confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Squeaks and pumps will be lost, and replies to the original post will be orphaned.",
+ "confirmations.redraft.message": "Are you sure you want to delete this toot and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
"confirmations.reply.confirm": "Reply",
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"confirmations.unfollow.confirm": "Unfollow",
@@ -126,7 +133,7 @@
"directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active",
- "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.instructions": "Embed this toot on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
@@ -142,31 +149,35 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.domain_blocks": "There are no blocked domains yet.",
"empty_column.favourited_statuses": "You don't have any squeaked toots yet. When you squeak one, it will show up here.",
"empty_column.favourites": "No one has squeaked this toot yet. When someone does, they will show up here.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home.public_timeline": "the public timeline",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new toots, they will appear here.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "generic.saved": "Saved",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -236,6 +247,7 @@
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -243,9 +255,10 @@
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
+ "lightbox.compress": "Compress image view box",
+ "lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
- "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -253,14 +266,20 @@
"lists.edit.submit": "Change title",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
+ "lists.replies_policy.followed": "Any followed user",
+ "lists.replies_policy.list": "Members of the list",
+ "lists.replies_policy.none": "No one",
+ "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.duration": "Duration",
"mute_modal.hide_notifications": "Hide notifications from this user?",
+ "mute_modal.indefinite": "Indefinite",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
"navigation_bar.bookmarks": "Bookmarks",
@@ -268,7 +287,7 @@
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.domain_blocks": "Blocked domains",
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Squeaks",
"navigation_bar.filters": "Muted words",
@@ -291,6 +310,7 @@
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} pumped your status",
+ "notification.status": "{name} just posted",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
@@ -306,13 +326,24 @@
"notifications.column_settings.reblog": "Pumps:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
+ "notifications.column_settings.status": "New toots:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Pumps",
"notifications.filter.favourites": "Squeaks",
"notifications.filter.follows": "Follows",
"notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results",
+ "notifications.filter.statuses": "Updates from people you follow",
+ "notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications",
+ "notifications.mark_as_read": "Mark every notification as read",
+ "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
+ "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
+ "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
+ "notifications_permission_banner.enable": "Enable desktop notifications",
+ "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
+ "notifications_permission_banner.title": "Never miss a thing",
+ "picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
@@ -321,14 +352,14 @@
"poll.voted": "You voted for this answer",
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
+ "privacy.change": "Adjust toot privacy",
+ "privacy.direct.long": "Visible for mentioned users only",
"privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
+ "privacy.private.long": "Visible for followers only",
"privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
+ "privacy.public.long": "Visible for all, shown in public timelines",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not post to public timelines",
+ "privacy.unlisted.long": "Visible for all, but not in public timelines",
"privacy.unlisted.short": "Unlisted",
"refresh": "Refresh",
"regeneration_indicator.label": "Loading…",
@@ -348,9 +379,9 @@
"report.target": "Reporting {target}",
"search.placeholder": "Search",
"search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, squeaked, pumped, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.full_text": "Simple text returns toots you have written, squeaked, pumped, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
+ "search_popout.tips.status": "toot",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
@@ -359,12 +390,12 @@
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "status.admin_status": "Open this toot in the moderation interface",
"status.block": "Block @{name}",
"status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unpump",
"status.cannot_reblog": "This post cannot be pumped",
- "status.copy": "Copy link to status",
+ "status.copy": "Copy link to toot",
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
@@ -412,24 +443,34 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "units.short.billion": "{count}B",
+ "units.short.million": "{count}M",
+ "units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
+ "upload_form.thumbnail": "Change thumbnail",
"upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
+ "upload_modal.choose_image": "Choose image",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
diff --git a/config/locales/devise.dog.yml b/config/locales/devise.dog.yml
index 11547a390..6197831fc 100644
--- a/config/locales/devise.dog.yml
+++ b/config/locales/devise.dog.yml
@@ -60,6 +60,23 @@ dog:
title: 2FA recovery codes changed
unlock_instructions:
subject: 'Mastodon: Unlock instructions'
+ webauthn_credential:
+ added:
+ explanation: The following security key has been added to your account
+ subject: 'Mastodon: New security key'
+ title: A new security key has been added
+ deleted:
+ explanation: The following security key has been deleted from your account
+ subject: 'Mastodon: Security key deleted'
+ title: One of you security keys has been deleted
+ webauthn_disabled:
+ explanation: Authentication with security keys has been disabled for your account. Login is now possible using only the token generated by the paired TOTP app.
+ subject: 'Mastodon: Authentication with security keys disabled'
+ title: Security keys disabled
+ webauthn_enabled:
+ explanation: Security key authentication has been enabled for your account. Your security key can now be used for login.
+ subject: 'Mastodon: Security key authentication enabled'
+ title: Security keys enabled
omniauth_callbacks:
failure: Could not authenticate you from %{kind} because "%{reason}".
success: Successfully authenticated from %{kind} account.
diff --git a/config/locales/devise.lion.yml b/config/locales/devise.lion.yml
index 2bacc994a..039d0ec91 100644
--- a/config/locales/devise.lion.yml
+++ b/config/locales/devise.lion.yml
@@ -60,6 +60,23 @@ lion:
title: 2FA recovery codes changed
unlock_instructions:
subject: 'Mastodon: Unlock instructions'
+ webauthn_credential:
+ added:
+ explanation: The following security key has been added to your account
+ subject: 'Mastodon: New security key'
+ title: A new security key has been added
+ deleted:
+ explanation: The following security key has been deleted from your account
+ subject: 'Mastodon: Security key deleted'
+ title: One of you security keys has been deleted
+ webauthn_disabled:
+ explanation: Authentication with security keys has been disabled for your account. Login is now possible using only the token generated by the paired TOTP app.
+ subject: 'Mastodon: Authentication with security keys disabled'
+ title: Security keys disabled
+ webauthn_enabled:
+ explanation: Security key authentication has been enabled for your account. Your security key can now be used for login.
+ subject: 'Mastodon: Security key authentication enabled'
+ title: Security keys enabled
omniauth_callbacks:
failure: Could not authenticate you from %{kind} because "%{reason}".
success: Successfully authenticated from %{kind} account.
diff --git a/config/locales/devise.squeak.yml b/config/locales/devise.squeak.yml
index d3c603bc2..668a3b609 100644
--- a/config/locales/devise.squeak.yml
+++ b/config/locales/devise.squeak.yml
@@ -60,6 +60,23 @@ squeak:
title: 2FA recovery codes changed
unlock_instructions:
subject: 'Mastodon: Unlock instructions'
+ webauthn_credential:
+ added:
+ explanation: The following security key has been added to your account
+ subject: 'Mastodon: New security key'
+ title: A new security key has been added
+ deleted:
+ explanation: The following security key has been deleted from your account
+ subject: 'Mastodon: Security key deleted'
+ title: One of you security keys has been deleted
+ webauthn_disabled:
+ explanation: Authentication with security keys has been disabled for your account. Login is now possible using only the token generated by the paired TOTP app.
+ subject: 'Mastodon: Authentication with security keys disabled'
+ title: Security keys disabled
+ webauthn_enabled:
+ explanation: Security key authentication has been enabled for your account. Your security key can now be used for login.
+ subject: 'Mastodon: Security key authentication enabled'
+ title: Security keys enabled
omniauth_callbacks:
failure: Could not authenticate you from %{kind} because "%{reason}".
success: Successfully authenticated from %{kind} account.
diff --git a/config/locales/dog.yml b/config/locales/dog.yml
index cfeb95c40..604d72823 100644
--- a/config/locales/dog.yml
+++ b/config/locales/dog.yml
@@ -40,8 +40,11 @@ dog:
domain: Server
reason: Reason
rejecting_media: 'Media files from these servers will not be processed or stored, and and no thumbnails will be displayed, requiring manual click-through to the original file:'
+ rejecting_media_title: Filtered media
silenced: 'Posts from these servers will be hidden in public timelines and conversations, and no notifications will be generated from their users'' interactions, unless you are following them:'
+ silenced_title: Silenced servers
suspended: 'No data from these servers will be processed, stored or exchanged, making any interaction or communication with users from these servers impossible:'
+ suspended_title: Suspended servers
unavailable_content_html: Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.
user_count_after:
one: dog
@@ -57,6 +60,7 @@ dog:
one: Pack Member
other: Pack Members
following: Joined Packs
+ instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be suspended.
joined: Joined %{date}
last_active: last active
link_verified_on: Ownership of this link was checked on %{date}
@@ -95,6 +99,7 @@ dog:
add_email_domain_block: Blacklist e-mail domain
approve: Approve
approve_all: Approve all
+ approved_msg: Successfully approved %{username}'s sign-up application
are_you_sure: Are you sure?
avatar: Avatar
by_domain: Domain
@@ -108,22 +113,26 @@ dog:
confirm: Confirm
confirmed: Confirmed
confirming: Confirming
+ delete: Delete data
deleted: Deleted
demote: Demote
- disable: Disable
+ destroyed_msg: "%{username}'s data is now queued to be deleted imminently"
+ disable: Freeze
disable_two_factor_authentication: Disable 2FA
- disabled: Disabled
+ disabled: Frozen
display_name: Display name
domain: Domain
edit: Edit
email: Email
email_status: Email status
- enable: Enable
+ enable: Unfreeze
enabled: Enabled
+ enabled_msg: Successfully unfroze %{username}'s account
followers: Pack Members
follows: Joined Packs
header: Header
inbox_url: Inbox URL
+ invite_request_text: Reasons for joining
invited_by: Invited by
ip: IP
joined: Joined
@@ -135,6 +144,8 @@ dog:
login_status: Login status
media_attachments: Media attachments
memorialize: Turn into memoriam
+ memorialized: Memorialized
+ memorialized_msg: Successfully turned %{username} into a memorial account
moderation:
active: Active
all: All
@@ -155,10 +166,14 @@ dog:
public: Public
push_subscription_expires: PuSH subscription expires
redownload: Refresh profile
+ redownloaded_msg: Successfully refreshed %{username}'s profile from origin
reject: Reject
reject_all: Reject all
+ rejected_msg: Successfully rejected %{username}'s sign-up application
remove_avatar: Remove avatar
remove_header: Remove header
+ removed_avatar_msg: Successfully removed %{username}'s avatar image
+ removed_header_msg: Successfully removed %{username}'s header image
resend_confirmation:
already_confirmed: This dog is already confirmed
send: Resend confirmation email
@@ -175,6 +190,8 @@ dog:
search: Search
search_same_email_domain: Other dogs with the same e-mail domain
search_same_ip: Other dogs with the same IP
+ sensitive: Sensitive
+ sensitized: marked as sensitive
shared_inbox_url: Shared inbox URL
show:
created_reports: Made reports
@@ -184,16 +201,22 @@ dog:
statuses: Toots
subscribe: Subscribe
suspended: Suspended
+ suspension_irreversible: The data of this account has been irreversibly deleted. You can unsuspend the account to make it usable but it will not recover any data it previously had.
+ suspension_reversible_hint_html: The account has been suspended, and the data will be fully removed on %{date}. Until then, the account can be restored without any ill effects. If you wish to remove all of the account's data immediately, you can do so below.
time_in_queue: Waiting in queue %{time}
title: Accounts
unconfirmed_email: Unconfirmed email
+ undo_sensitized: Undo sensitive
undo_silenced: Undo silence
undo_suspension: Undo suspension
+ unsilenced_msg: Successfully unlimited %{username}'s account
unsubscribe: Unsubscribe
+ unsuspended_msg: Successfully unsuspended %{username}'s account
username: Username
+ view_domain: View summary for domain
warn: Warn
web: Web
- whitelisted: Whitelisted
+ whitelisted: Allowed for federation
action_logs:
action_types:
assigned_to_self_report: Assign Report
@@ -205,12 +228,14 @@ dog:
create_domain_allow: Create Domain Allow
create_domain_block: Create Domain Block
create_email_domain_block: Create E-mail Domain Block
+ create_ip_block: Create IP rule
demote_user: Demote User
destroy_announcement: Delete Announcement
destroy_custom_emoji: Delete Custom Emoji
destroy_domain_allow: Delete Domain Allow
destroy_domain_block: Delete Domain Block
destroy_email_domain_block: Delete e-mail domain block
+ destroy_ip_block: Delete IP rule
destroy_status: Delete Status
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
@@ -223,13 +248,16 @@ dog:
reopen_report: Reopen Report
reset_password_user: Reset Password
resolve_report: Resolve Report
+ sensitive_account: Mark the media in your account as sensitive
silence_account: Silence Account
suspend_account: Suspend Account
unassigned_report: Unassign Report
+ unsensitive_account: Unmark the media in your account as sensitive
unsilence_account: Unsilence Account
unsuspend_account: Unsuspend Account
update_announcement: Update Announcement
update_custom_emoji: Update Custom Emoji
+ update_domain_block: Update Domain Block
update_status: Update Status
actions:
assigned_to_self_report: "%{name} assigned report %{target} to themselves"
@@ -241,12 +269,14 @@ dog:
create_domain_allow: "%{name} whitelisted domain %{target}"
create_domain_block: "%{name} blocked domain %{target}"
create_email_domain_block: "%{name} blacklisted e-mail domain %{target}"
+ create_ip_block: "%{name} created rule for IP %{target}"
demote_user: "%{name} demoted dog %{target}"
destroy_announcement: "%{name} deleted announcement %{target}"
destroy_custom_emoji: "%{name} destroyed emoji %{target}"
destroy_domain_allow: "%{name} removed domain %{target} from whitelist"
destroy_domain_block: "%{name} unblocked domain %{target}"
destroy_email_domain_block: "%{name} whitelisted e-mail domain %{target}"
+ destroy_ip_block: "%{name} deleted rule for IP %{target}"
destroy_status: "%{name} removed toot by %{target}"
disable_2fa_user: "%{name} disabled two factor requirement for dog %{target}"
disable_custom_emoji: "%{name} disabled emoji %{target}"
@@ -259,13 +289,16 @@ dog:
reopen_report: "%{name} reopened report %{target}"
reset_password_user: "%{name} reset password of dog %{target}"
resolve_report: "%{name} resolved report %{target}"
+ sensitive_account: "%{name} marked %{target}'s media as sensitive"
silence_account: "%{name} silenced %{target}'s account"
suspend_account: "%{name} suspended %{target}'s account"
unassigned_report: "%{name} unassigned report %{target}"
+ unsensitive_account: "%{name} unmarked %{target}'s media as sensitive"
unsilence_account: "%{name} unsilenced %{target}'s account"
unsuspend_account: "%{name} unsuspended %{target}'s account"
update_announcement: "%{name} updated announcement %{target}"
update_custom_emoji: "%{name} updated emoji %{target}"
+ update_domain_block: "%{name} updated domain block for %{target}"
update_status: "%{name} updated toot by %{target}"
deleted_status: "(deleted toot)"
empty: No logs found.
@@ -309,6 +342,7 @@ dog:
listed: Listed
new:
title: Add new custom emoji
+ not_permitted: You are not permitted to perform this action
overwrite: Overwrite
shortcode: Shortcode
shortcode_hint: At least 2 characters, only alphanumeric characters and underscores
@@ -368,6 +402,8 @@ dog:
silence: Silence
suspend: Suspend
title: New domain block
+ obfuscate: Obfuscate domain name
+ obfuscate_hint: Partially obfuscate the domain name in the list if advertising the list of domain limitations is enabled
private_comment: Private bark
private_comment_hint: Bark about this domain limitation for internal use by the moderators.
public_comment: Public bark
@@ -407,6 +443,7 @@ dog:
instances:
by_domain: Domain
delivery_available: Delivery is available
+ empty: No domains found.
known_accounts:
one: "%{count} known account"
other: "%{count} known accounts"
@@ -430,6 +467,21 @@ dog:
expired: Expired
title: Filter
title: Invites
+ ip_blocks:
+ add_new: Create rule
+ created_msg: Successfully added new IP rule
+ delete: Delete
+ expires_in:
+ '1209600': 2 weeks
+ '15778476': 6 months
+ '2629746': 1 month
+ '31556952': 1 year
+ '86400': 1 day
+ '94670856': 3 years
+ new:
+ title: Create new IP rule
+ no_ip_block_selected: No IP rules were changed as none were selected
+ title: IP rules
pending_accounts:
title: Pending accounts (%{count})
relationships:
@@ -469,6 +521,8 @@ dog:
comment:
none: None
created_at: Reported
+ forwarded: Forwarded
+ forwarded_to: Forwarded to %{domain}
mark_as_resolved: Mark as resolved
mark_as_unresolved: Mark as unresolved
notes:
@@ -512,6 +566,7 @@ dog:
domain_blocks_rationale:
title: Show rationale
enable_bootstrap_timeline_accounts:
+ desc_html: Make new users automatically follow configured accounts so their home feed doesn't start out empty
title: Enable default follows for new dogs
hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
@@ -538,6 +593,9 @@ dog:
min_invite_role:
disabled: No one
title: Allow invitations by
+ require_invite_text:
+ desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional
+ title: Require new users to enter a reason to join
registrations_mode:
modes:
approved: Approval required for sign up
@@ -677,8 +735,11 @@ dog:
prefix_sign_up: Sign up on Mastodon today!
suffix: With an account, you will be able to follow people, post updates and exchange messages with users from any Mastodon server and more!
didnt_get_confirmation: Didn't receive confirmation instructions?
+ dont_have_your_security_key: Don't have your security key?
forgot_password: Forgot your password?
invalid_reset_password_token: Password reset token is invalid or expired. Please request a new one.
+ link_to_otp: Enter a two-factor code from your phone or a recovery code
+ link_to_webauth: Use your security key device
login: Log in
logout: Logout
migrate_account: Move to a different account
@@ -703,7 +764,9 @@ dog:
functional: Your account is fully operational.
pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved.
redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
+ too_fast: Form submitted too fast, try again.
trouble_logging_in: Trouble logging in?
+ use_security_key: Use security key
authorize_follow:
already_following: You already joined this pack
already_requested: You have already requested to join this pack
@@ -721,9 +784,14 @@ dog:
hint_html: "Tip: We won't ask you for your password again for the next hour."
invalid_password: Invalid password
prompt: Confirm password to continue
+ crypto:
+ errors:
+ invalid_key: is not a valid Ed25519 or Curve25519 key
+ invalid_signature: is not a valid Ed25519 signature
date:
formats:
default: "%b %d, %Y"
+ with_month_name: "%B %d, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}h"
@@ -770,7 +838,7 @@ dog:
'422':
content: Security verification failed. Are you blocking cookies?
title: Security verification failed
- '429': Throttled
+ '429': Too many requests
'500':
content: We're sorry, but something went wrong on our end.
title: This page is not correct
@@ -788,6 +856,7 @@ dog:
request: Request your archive
size: Size
blocks: You block
+ bookmarks: Bookmarks
csv: CSV
domain_blocks: Domain blocks
lists: Lists
@@ -801,7 +870,7 @@ dog:
filters:
contexts:
account: Profiles
- home: Home timeline
+ home: Home and lists
notifications: Notifications
public: Public timelines
thread: Conversations
@@ -855,6 +924,8 @@ dog:
status: Verification status
view_proof: View proof
imports:
+ errors:
+ over_rows_processing_limit: contains more than %{count} rows
modes:
merge: Merge
merge_long: Keep existing records and add new ones
@@ -864,6 +935,7 @@ dog:
success: Your data was successfully uploaded and will now be processed in due time
types:
blocking: Blocking list
+ bookmarks: Bookmarks
domain_blocking: Domain blocking list
following: Pack list
muting: Muting list
@@ -918,6 +990,7 @@ dog:
on_cooldown: You have recently migrated your account. This function will become available again in %{count} days.
past_migrations: Past migrations
proceed_with_move: Move followers
+ redirected_msg: Your account is now redirecting to %{acct}.
redirecting_to: Your account is redirecting to %{acct}.
set_redirect: Set redirect
warning:
@@ -931,6 +1004,10 @@ dog:
redirect: Your current account's profile will be updated with a redirect notice and be excluded from searches
moderation:
title: Moderation
+ move_handler:
+ carry_blocks_over_text: This user moved from %{acct}, which you had blocked.
+ carry_mutes_over_text: This user moved from %{acct}, which you had muted.
+ copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:'
notification_mailer:
digest:
action: View all notifications
@@ -980,6 +1057,14 @@ dog:
thousand: K
trillion: T
unit: ''
+ otp_authentication:
+ code_hint: Enter the code generated by your authenticator app to confirm
+ description_html: If you enable two-factor authentication using an authenticator app, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
+ enable: Enable
+ instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
+ manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
+ setup: Set up
+ wrong_code: The entered code was invalid! Are server time and device time correct?
pagination:
newer: Newer
next: Next
@@ -1008,6 +1093,7 @@ dog:
relationships:
activity: Account activity
dormant: Dormant
+ follow_selected_followers: Join selected pack members
followers: Pack Members
following: Joined Packs
invited: Invited
@@ -1104,10 +1190,14 @@ dog:
profile: Profile
relationships: Packs and Pack Members
two_factor_authentication: Two-factor Auth
+ webauthn_authentication: Security keys
spam_check:
- spam_detected_and_silenced: This is an automated report. Spam has been detected and the sender has been silenced automatically. If this is a mistake, please unsilence the account.
+ spam_detected: This is an automated report. Spam has been detected.
statuses:
attached:
+ audio:
+ one: "%{count} audio"
+ other: "%{count} audio"
description: 'Attached: %{attached}'
image:
one: "%{count} image"
@@ -1139,6 +1229,8 @@ dog:
other: "%{count} votes"
vote: Vote
show_more: Show more
+ show_newer: Show newer
+ show_older: Show older
show_thread: Show thread
sign_in_to_participate: Sign in to participate in the conversation
strip_formatting:
@@ -1270,22 +1362,28 @@ dog:
enabled: Two-factor authentication is enabled
enabled_success: Two-factor authentication successfully enabled
generate_recovery_codes: Generate recovery codes
- instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
lost_recovery_codes: Recovery codes allow you to regain access to your account if you lose your phone. If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated.
- manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
+ methods: Two-factor methods
+ otp: Authenticator app
recovery_codes: Backup recovery codes
recovery_codes_regenerated: Recovery codes successfully regenerated
recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe. For example, you may print them and store them with other important documents.
- setup: Set up
- wrong_code: The entered code was invalid! Are server time and device time correct?
+ webauthn: Security keys
user_mailer:
backup_ready:
explanation: You requested a full backup of your Mastodon account. It's now ready for download!
subject: Your archive is ready for download
title: Archive takeout
+ sign_in_token:
+ details: 'Here are details of the attempt:'
+ explanation: 'We detected an attempt to sign in to your account from an unrecognized IP address. If this is you, please enter the security code below on the sign in challenge page:'
+ further_actions: 'If this wasn''t you, please change your password and enable two-factor authentication on your account. You can do so here:'
+ subject: Please confirm attempted sign in
+ title: Sign in attempt
warning:
explanation:
disable: While your account is frozen, your account data remains intact, but you cannot perform any actions until it is unlocked.
+ sensitive: Your uploaded media files and linked media will be treated as sensitive.
silence: While your account is limited, only dogs who have already joined your pack will see your toots on this server, and you may be excluded from various public listings. However, others may still manually join your pack.
suspend: Your account has been suspended, and all of your toots and your uploaded media files have been irreversibly removed from this server, and servers where you had pack members.
get_in_touch: You can reply to this e-mail to get in touch with the staff of %{instance}.
@@ -1294,11 +1392,13 @@ dog:
subject:
disable: Your account %{acct} has been frozen
none: Warning for %{acct}
+ sensitive: Your account %{acct} posting media has been marked as sensitive
silence: Your account %{acct} has been limited
suspend: Your account %{acct} has been suspended
title:
disable: Account frozen
none: Warning
+ sensitive: Your media has been marked as sensitive
silence: Account limited
suspend: Account suspended
welcome:
@@ -1319,12 +1419,34 @@ dog:
tips: Tips
title: Welcome aboard, %{name}!
users:
+ blocked_email_provider: This e-mail provider isn't allowed
follow_limit_reached: You cannot join more than %{limit} packs
+ generic_access_help_html: Trouble accessing your account? You may get in touch with %{email} for assistance
invalid_email: The e-mail address is invalid
+ invalid_email_mx: The e-mail address does not seem to exist
invalid_otp_token: Invalid two-factor code
+ invalid_sign_in_token: Invalid security code
otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available.
signed_in_as: 'Signed in as:'
+ suspicious_sign_in_confirmation: You appear to not have logged in from this device before, and you haven't logged in for a while, so we're sending a security code to your e-mail address to confirm that it's you.
verification:
explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me"
attribute. The text content of the link does not matter. Here is an example:'
verification: Verification
+ webauthn_credentials:
+ add: Add new security key
+ create:
+ error: There was a problem adding your security key. Please try again.
+ success: Your security key was successfully added.
+ delete: Delete
+ delete_confirmation: Are you sure you want to delete this security key?
+ description_html: If you enable security key authentication, logging in will require you to use one of your security keys.
+ destroy:
+ error: There was a problem deleting you security key. Please try again.
+ success: Your security key was successfully deleted.
+ invalid_credential: Invalid security key
+ nickname_hint: Enter the nickname of your new security key
+ not_enabled: You haven't enabled WebAuthn yet
+ not_supported: This browser doesn't support security keys
+ otp_required: To use security keys please enable two-factor authentication first.
+ registered_on: Registered on %{date}
diff --git a/config/locales/lion.yml b/config/locales/lion.yml
index b9d836393..f879f8c7d 100644
--- a/config/locales/lion.yml
+++ b/config/locales/lion.yml
@@ -40,8 +40,11 @@ lion:
domain: Server
reason: Reason
rejecting_media: 'Media files from these servers will not be processed or stored, and and no thumbnails will be displayed, requiring manual click-through to the original file:'
+ rejecting_media_title: Filtered media
silenced: 'Posts from these servers will be hidden in public timelines and conversations, and no notifications will be generated from their users'' interactions, unless you are following them:'
+ silenced_title: Silenced servers
suspended: 'No data from these servers will be processed, stored or exchanged, making any interaction or communication with users from these servers impossible:'
+ suspended_title: Suspended servers
unavailable_content_html: Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.
user_count_after:
one: lion
@@ -57,6 +60,7 @@ lion:
one: Pride Member
other: Pride Members
following: Joined Prides
+ instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be suspended.
joined: Joined %{date}
last_active: last active
link_verified_on: Ownership of this link was checked on %{date}
@@ -95,6 +99,7 @@ lion:
add_email_domain_block: Blacklist e-mail domain
approve: Approve
approve_all: Approve all
+ approved_msg: Successfully approved %{username}'s sign-up application
are_you_sure: Are you sure?
avatar: Avatar
by_domain: Domain
@@ -108,22 +113,26 @@ lion:
confirm: Confirm
confirmed: Confirmed
confirming: Confirming
+ delete: Delete data
deleted: Deleted
demote: Demote
- disable: Disable
+ destroyed_msg: "%{username}'s data is now queued to be deleted imminently"
+ disable: Freeze
disable_two_factor_authentication: Disable 2FA
- disabled: Disabled
+ disabled: Frozen
display_name: Display name
domain: Domain
edit: Edit
email: Email
email_status: Email status
- enable: Enable
+ enable: Unfreeze
enabled: Enabled
+ enabled_msg: Successfully unfroze %{username}'s account
followers: Pride Members
follows: Joined Prides
header: Header
inbox_url: Inbox URL
+ invite_request_text: Reasons for joining
invited_by: Invited by
ip: IP
joined: Joined
@@ -135,6 +144,8 @@ lion:
login_status: Login status
media_attachments: Media attachments
memorialize: Turn into memoriam
+ memorialized: Memorialized
+ memorialized_msg: Successfully turned %{username} into a memorial account
moderation:
active: Active
all: All
@@ -155,10 +166,14 @@ lion:
public: Public
push_subscription_expires: PuSH subscription expires
redownload: Refresh profile
+ redownloaded_msg: Successfully refreshed %{username}'s profile from origin
reject: Reject
reject_all: Reject all
+ rejected_msg: Successfully rejected %{username}'s sign-up application
remove_avatar: Remove avatar
remove_header: Remove header
+ removed_avatar_msg: Successfully removed %{username}'s avatar image
+ removed_header_msg: Successfully removed %{username}'s header image
resend_confirmation:
already_confirmed: This lion is already confirmed
send: Resend confirmation email
@@ -175,25 +190,33 @@ lion:
search: Search
search_same_email_domain: Other lions with the same e-mail domain
search_same_ip: Other lions with the same IP
+ sensitive: Sensitive
+ sensitized: marked as sensitive
shared_inbox_url: Shared inbox URL
show:
created_reports: Made reports
targeted_reports: Reported by others
- silence: Silence
- silenced: Silenced
+ silence: Limit
+ silenced: Limited
statuses: Toots
subscribe: Subscribe
suspended: Suspended
+ suspension_irreversible: The data of this account has been irreversibly deleted. You can unsuspend the account to make it usable but it will not recover any data it previously had.
+ suspension_reversible_hint_html: The account has been suspended, and the data will be fully removed on %{date}. Until then, the account can be restored without any ill effects. If you wish to remove all of the account's data immediately, you can do so below.
time_in_queue: Waiting in queue %{time}
title: Accounts
unconfirmed_email: Unconfirmed email
+ undo_sensitized: Undo sensitive
undo_silenced: Undo silence
undo_suspension: Undo suspension
+ unsilenced_msg: Successfully unlimited %{username}'s account
unsubscribe: Unsubscribe
+ unsuspended_msg: Successfully unsuspended %{username}'s account
username: Username
+ view_domain: View summary for domain
warn: Warn
web: Web
- whitelisted: Whitelisted
+ whitelisted: Allowed for federation
action_logs:
action_types:
assigned_to_self_report: Assign Report
@@ -205,12 +228,14 @@ lion:
create_domain_allow: Create Domain Allow
create_domain_block: Create Domain Block
create_email_domain_block: Create E-mail Domain Block
+ create_ip_block: Create IP rule
demote_user: Demote User
destroy_announcement: Delete Announcement
destroy_custom_emoji: Delete Custom Emoji
destroy_domain_allow: Delete Domain Allow
destroy_domain_block: Delete Domain Block
destroy_email_domain_block: Delete e-mail domain block
+ destroy_ip_block: Delete IP rule
destroy_status: Delete Status
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
@@ -223,13 +248,16 @@ lion:
reopen_report: Reopen Report
reset_password_user: Reset Password
resolve_report: Resolve Report
+ sensitive_account: Mark the media in your account as sensitive
silence_account: Silence Account
suspend_account: Suspend Account
unassigned_report: Unassign Report
+ unsensitive_account: Unmark the media in your account as sensitive
unsilence_account: Unsilence Account
unsuspend_account: Unsuspend Account
update_announcement: Update Announcement
update_custom_emoji: Update Custom Emoji
+ update_domain_block: Update Domain Block
update_status: Update Status
actions:
assigned_to_self_report: "%{name} assigned report %{target} to themselves"
@@ -241,12 +269,14 @@ lion:
create_domain_allow: "%{name} whitelisted domain %{target}"
create_domain_block: "%{name} blocked domain %{target}"
create_email_domain_block: "%{name} blacklisted e-mail domain %{target}"
+ create_ip_block: "%{name} created rule for IP %{target}"
demote_user: "%{name} demoted lion %{target}"
destroy_announcement: "%{name} deleted announcement %{target}"
destroy_custom_emoji: "%{name} destroyed emoji %{target}"
destroy_domain_allow: "%{name} removed domain %{target} from whitelist"
destroy_domain_block: "%{name} unblocked domain %{target}"
destroy_email_domain_block: "%{name} whitelisted e-mail domain %{target}"
+ destroy_ip_block: "%{name} deleted rule for IP %{target}"
destroy_status: "%{name} removed toot by %{target}"
disable_2fa_user: "%{name} disabled two factor requirement for lion %{target}"
disable_custom_emoji: "%{name} disabled emoji %{target}"
@@ -259,13 +289,16 @@ lion:
reopen_report: "%{name} reopened report %{target}"
reset_password_user: "%{name} reset password of lion %{target}"
resolve_report: "%{name} resolved report %{target}"
+ sensitive_account: "%{name} marked %{target}'s media as sensitive"
silence_account: "%{name} silenced %{target}'s account"
suspend_account: "%{name} suspended %{target}'s account"
unassigned_report: "%{name} unassigned report %{target}"
+ unsensitive_account: "%{name} unmarked %{target}'s media as sensitive"
unsilence_account: "%{name} unsilenced %{target}'s account"
unsuspend_account: "%{name} unsuspended %{target}'s account"
update_announcement: "%{name} updated announcement %{target}"
update_custom_emoji: "%{name} updated emoji %{target}"
+ update_domain_block: "%{name} updated domain block for %{target}"
update_status: "%{name} updated toot by %{target}"
deleted_status: "(deleted toot)"
empty: No logs found.
@@ -309,6 +342,7 @@ lion:
listed: Listed
new:
title: Add new custom emoji
+ not_permitted: You are not permitted to perform this action
overwrite: Overwrite
shortcode: Shortcode
shortcode_hint: At least 2 characters, only alphanumeric characters and underscores
@@ -346,14 +380,14 @@ lion:
week_interactions: interactions this week
week_users_active: active this week
week_users_new: lions this week
- whitelist_mode: Whitelist mode
+ whitelist_mode: Limited federation mode
domain_allows:
- add_new: Whitelist domain
- created_msg: Domain has been successfully whitelisted
- destroyed_msg: Domain has been removed from the whitelist
- undo: Remove from whitelist
+ add_new: Allow federation with domain
+ created_msg: Domain has been successfully allowed for federation
+ destroyed_msg: Domain has been disallowed from federation
+ undo: Disallow federation with domain
domain_blocks:
- add_new: Add new
+ add_new: Add new domain block
created_msg: Domain block is now being processed
destroyed_msg: Domain block has been undone
domain: Domain
@@ -368,6 +402,8 @@ lion:
silence: Silence
suspend: Suspend
title: New domain block
+ obfuscate: Obfuscate domain name
+ obfuscate_hint: Partially obfuscate the domain name in the list if advertising the list of domain limitations is enabled
private_comment: Private meow
private_comment_hint: Meow about this domain limitation for internal use by the moderators.
public_comment: Public meow
@@ -402,11 +438,12 @@ lion:
from_html: from %{domain}
new:
create: Add domain
- title: New e-mail blacklist entry
- title: E-mail blacklist
+ title: Block new e-mail domain
+ title: Blocked e-mail domains
instances:
by_domain: Domain
delivery_available: Delivery is available
+ empty: No domains found.
known_accounts:
one: "%{count} known account"
other: "%{count} known accounts"
@@ -430,6 +467,21 @@ lion:
expired: Expired
title: Filter
title: Invites
+ ip_blocks:
+ add_new: Create rule
+ created_msg: Successfully added new IP rule
+ delete: Delete
+ expires_in:
+ '1209600': 2 weeks
+ '15778476': 6 months
+ '2629746': 1 month
+ '31556952': 1 year
+ '86400': 1 day
+ '94670856': 3 years
+ new:
+ title: Create new IP rule
+ no_ip_block_selected: No IP rules were changed as none were selected
+ title: IP rules
pending_accounts:
title: Pending accounts (%{count})
relationships:
@@ -447,7 +499,7 @@ lion:
pending: Waiting for relay's approval
save_and_enable: Save and enable
setup: Setup a relay connection
- signatures_not_enabled: Relays will not work correctly while secure mode or whitelist mode is enabled
+ signatures_not_enabled: Relays will not work correctly while secure mode or limited federation mode is enabled
status: Status
title: Relays
report_notes:
@@ -469,6 +521,8 @@ lion:
comment:
none: None
created_at: Reported
+ forwarded: Forwarded
+ forwarded_to: Forwarded to %{domain}
mark_as_resolved: Mark as resolved
mark_as_unresolved: Mark as unresolved
notes:
@@ -512,6 +566,7 @@ lion:
domain_blocks_rationale:
title: Show rationale
enable_bootstrap_timeline_accounts:
+ desc_html: Make new lions automatically follow configured accounts so their home feed doesn't start out empty
title: Enable default follows for new lions
hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
@@ -538,6 +593,9 @@ lion:
min_invite_role:
disabled: No one
title: Allow invitations by
+ require_invite_text:
+ desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional
+ title: Require new users to enter a reason to join
registrations_mode:
modes:
approved: Approval required for sign up
@@ -677,8 +735,11 @@ lion:
prefix_sign_up: Sign up on Mastodon today!
suffix: With an account, you will be able to follow people, post updates and exchange messages with users from any Mastodon server and more!
didnt_get_confirmation: Didn't receive confirmation instructions?
+ dont_have_your_security_key: Don't have your security key?
forgot_password: Forgot your password?
invalid_reset_password_token: Password reset token is invalid or expired. Please request a new one.
+ link_to_otp: Enter a two-factor code from your phone or a recovery code
+ link_to_webauth: Use your security key device
login: Log in
logout: Logout
migrate_account: Move to a different account
@@ -703,7 +764,9 @@ lion:
functional: Your account is fully operational.
pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved.
redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
+ too_fast: Form submitted too fast, try again.
trouble_logging_in: Trouble logging in?
+ use_security_key: Use security key
authorize_follow:
already_following: You already joined this pride
already_requested: You have already requested to join this pride
@@ -721,9 +784,14 @@ lion:
hint_html: "Tip: We won't ask you for your password again for the next hour."
invalid_password: Invalid password
prompt: Confirm password to continue
+ crypto:
+ errors:
+ invalid_key: is not a valid Ed25519 or Curve25519 key
+ invalid_signature: is not a valid Ed25519 signature
date:
formats:
default: "%b %d, %Y"
+ with_month_name: "%B %d, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}h"
@@ -788,6 +856,7 @@ lion:
request: Request your archive
size: Size
blocks: You block
+ bookmarks: Bookmarks
csv: CSV
domain_blocks: Domain blocks
lists: Lists
@@ -801,7 +870,7 @@ lion:
filters:
contexts:
account: Profiles
- home: Home timeline
+ home: Home and lists
notifications: Notifications
public: Public timelines
thread: Conversations
@@ -844,7 +913,7 @@ lion:
invalid_token: Keybase tokens are hashes of signatures and must be 66 hex characters
verification_failed: Keybase does not recognize this token as a signature of Keybase user %{kb_username}. Please retry from Keybase.
wrong_user: Cannot create a proof for %{proving} while logged in as %{current}. Log in as %{proving} and try again.
- explanation_html: Here you can cryptographically connect your other identities, such as a Keybase profile. This lets other people send you encrypted messages and trust content you send them.
+ explanation_html: Here you can cryptographically connect your other identities from other platforms, such as Keybase. This lets other people send you encrypted messages on those platforms and allows them to trust that the content you send them comes from you.
i_am_html: I am %{username} on %{service}.
identity: Identity
inactive: Inactive
@@ -855,6 +924,8 @@ lion:
status: Verification status
view_proof: View proof
imports:
+ errors:
+ over_rows_processing_limit: contains more than %{count} rows
modes:
merge: Merge
merge_long: Keep existing records and add new ones
@@ -864,6 +935,7 @@ lion:
success: Your data was successfully uploaded and will now be processed in due time
types:
blocking: Blocking list
+ bookmarks: Bookmarks
domain_blocking: Domain blocking list
following: Pride list
muting: Muting list
@@ -918,6 +990,7 @@ lion:
on_cooldown: You have recently migrated your account. This function will become available again in %{count} days.
past_migrations: Past migrations
proceed_with_move: Move followers
+ redirected_msg: Your account is now redirecting to %{acct}.
redirecting_to: Your account is redirecting to %{acct}.
set_redirect: Set redirect
warning:
@@ -931,6 +1004,10 @@ lion:
redirect: Your current account's profile will be updated with a redirect notice and be excluded from searches
moderation:
title: Moderation
+ move_handler:
+ carry_blocks_over_text: This lion moved from %{acct}, which you had blocked.
+ carry_mutes_over_text: This lion moved from %{acct}, which you had muted.
+ copy_account_note_text: 'This lion moved from %{acct}, here were your previous notes about them:'
notification_mailer:
digest:
action: View all notifications
@@ -980,6 +1057,14 @@ lion:
thousand: K
trillion: T
unit: ''
+ otp_authentication:
+ code_hint: Enter the code generated by your authenticator app to confirm
+ description_html: If you enable two-factor authentication using an authenticator app, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
+ enable: Enable
+ instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
+ manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
+ setup: Set up
+ wrong_code: The entered code was invalid! Are server time and device time correct?
pagination:
newer: Newer
next: Next
@@ -1008,6 +1093,7 @@ lion:
relationships:
activity: Account activity
dormant: Dormant
+ follow_selected_followers: Join selected pride members
followers: Pride Members
following: Joined Prides
invited: Invited
@@ -1075,7 +1161,7 @@ lion:
firefox_os: Firefox OS
ios: iOS
linux: Linux
- mac: Mac
+ mac: macOS
other: unknown platform
windows: Windows
windows_mobile: Windows Mobile
@@ -1104,10 +1190,14 @@ lion:
profile: Profile
relationships: Prides and Pride Members
two_factor_authentication: Two-factor Auth
+ webauthn_authentication: Security keys
spam_check:
- spam_detected_and_silenced: This is an automated report. Spam has been detected and the sender has been silenced automatically. If this is a mistake, please unsilence the account.
+ spam_detected: This is an automated report. Spam has been detected.
statuses:
attached:
+ audio:
+ one: "%{count} audio"
+ other: "%{count} audio"
description: 'Attached: %{attached}'
image:
one: "%{count} image"
@@ -1139,6 +1229,8 @@ lion:
other: "%{count} votes"
vote: Vote
show_more: Show more
+ show_newer: Show newer
+ show_older: Show older
show_thread: Show thread
sign_in_to_participate: Sign in to participate in the conversation
strip_formatting:
@@ -1270,35 +1362,43 @@ lion:
enabled: Two-factor authentication is enabled
enabled_success: Two-factor authentication successfully enabled
generate_recovery_codes: Generate recovery codes
- instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
lost_recovery_codes: Recovery codes allow you to regain access to your account if you lose your phone. If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated.
- manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
+ methods: Two-factor methods
+ otp: Authenticator app
recovery_codes: Backup recovery codes
recovery_codes_regenerated: Recovery codes successfully regenerated
recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe. For example, you may print them and store them with other important documents.
- setup: Set up
- wrong_code: The entered code was invalid! Are server time and device time correct?
+ webauthn: Security keys
user_mailer:
backup_ready:
explanation: You requested a full backup of your Mastodon account. It's now ready for download!
subject: Your archive is ready for download
title: Archive takeout
+ sign_in_token:
+ details: 'Here are details of the attempt:'
+ explanation: 'We detected an attempt to sign in to your account from an unrecognized IP address. If this is you, please enter the security code below on the sign in challenge page:'
+ further_actions: 'If this wasn''t you, please change your password and enable two-factor authentication on your account. You can do so here:'
+ subject: Please confirm attempted sign in
+ title: Sign in attempt
warning:
explanation:
- disable: While your account is frozen, your account data remains intact, but you cannot perform any actions until it is unlocked.
- silence: While your account is limited, only lions who have already joined your pride you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually join your pride.
- suspend: Your account has been suspended, and all of your toots and your uploaded media files have been irreversibly removed from this server, and servers where you had pride members.
+ disable: You can no longer login to your account or use it in any other way, but your profile and other data remains intact.
+ sensitive: Your uploaded media files and linked media will be treated as sensitive.
+ silence: You can still use your account but only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follow you.
+ suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still login to request a backup of your data until the data is fully removed, but we will retain some data to prevent you from evading the suspension.
get_in_touch: You can reply to this e-mail to get in touch with the staff of %{instance}.
review_server_policies: Review server policies
statuses: 'Specifically, for:'
subject:
disable: Your account %{acct} has been frozen
none: Warning for %{acct}
+ sensitive: Your account %{acct} posting media has been marked as sensitive
silence: Your account %{acct} has been limited
suspend: Your account %{acct} has been suspended
title:
disable: Account frozen
none: Warning
+ sensitive: Your media has been marked as sensitive
silence: Account limited
suspend: Account suspended
welcome:
@@ -1319,12 +1419,17 @@ lion:
tips: Tips
title: Welcome aboard, %{name}!
users:
+ blocked_email_provider: This e-mail provider isn't allowed
follow_limit_reached: You cannot join more than %{limit} prides
+ generic_access_help_html: Trouble accessing your account? You may get in touch with %{email} for assistance
invalid_email: The e-mail address is invalid
+ invalid_email_mx: The e-mail address does not seem to exist
invalid_otp_token: Invalid two-factor code
+ invalid_sign_in_token: Invalid security code
otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available.
signed_in_as: 'Signed in as:'
+ suspicious_sign_in_confirmation: You appear to not have logged in from this device before, and you haven't logged in for a while, so we're sending a security code to your e-mail address to confirm that it's you.
verification:
explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me"
attribute. The text content of the link does not matter. Here is an example:'
verification: Verification
diff --git a/config/locales/simple_form.dog.yml b/config/locales/simple_form.dog.yml
index ab9adc78f..00cacf23e 100644
--- a/config/locales/simple_form.dog.yml
+++ b/config/locales/simple_form.dog.yml
@@ -65,8 +65,17 @@ dog:
data: CSV file exported from another Mastodon server
invite_request:
text: This will help us review your application
+ ip_block:
+ comment: Optional. Remember why you added this rule.
+ expires_in: IP addresses are a finite resource, they are sometimes shared and often change hands. For this reason, indefinite IP blocks are not recommended.
+ ip: Enter an IPv4 or IPv6 address. You can block entire ranges using the CIDR syntax. Be careful not to lock yourself out!
+ severities:
+ no_access: Block access to all resources
+ sign_up_requires_approval: New sign-ups will require your approval
+ severity: Choose what will happen with requests from this IP
sessions:
otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
+ webauthn: If it's an USB key be sure to insert it and, if necessary, tap it.
tag:
name: You can only change the casing of the letters, for example, to make it more readable
user:
@@ -89,10 +98,11 @@ dog:
text: Custom warning
type: Action
types:
- disable: Disable
- none: Do nothing
- silence: Silence
- suspend: Suspend and irreversibly delete account data
+ disable: Freeze
+ none: Send a warning
+ sensitive: Sensitive
+ silence: Limit
+ suspend: Suspend
warning_preset_id: Use a warning preset
announcement:
all_day: All-day event
@@ -116,6 +126,7 @@ dog:
expires_in: Expire after
fields: Profile metadata
header: Header
+ honeypot: "%{label} (do not fill in)"
inbox_url: URL of the relay inbox
irreversible: Drop instead of hide
locale: Interface language
@@ -135,6 +146,7 @@ dog:
setting_default_privacy: Posting privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
+ setting_disable_swiping: Disable swiping motions
setting_display_media: Media display
setting_display_media_default: Default
setting_display_media_hide_all: Hide all
@@ -152,6 +164,7 @@ dog:
setting_use_blurhash: Show colorful gradients for hidden media
setting_use_pending_items: Slow mode
severity: Severity
+ sign_in_token_attempt: Security code
type: Import type
username: Username
username_or_email: Username or Email
@@ -165,9 +178,16 @@ dog:
must_be_following: Block notifications from people you don't follow
must_be_following_dm: Block direct messages from people you don't follow
invite:
- comment: Bark
+ comment: Comment
invite_request:
text: Why do you want to join?
+ ip_block:
+ comment: Comment
+ ip: IP
+ severities:
+ no_access: Block access
+ sign_up_requires_approval: Limit sign-ups
+ severity: Rule
notification_emails:
digest: Send digest e-mails
favourite: Someone booped your toot
@@ -188,4 +208,7 @@ dog:
required:
mark: "*"
text: required
+ title:
+ sessions:
+ webauthn: Use one of your security keys to sign in
'yes': 'Yes'
diff --git a/config/locales/simple_form.lion.yml b/config/locales/simple_form.lion.yml
index 2a4e8b6c7..0eed8e868 100644
--- a/config/locales/simple_form.lion.yml
+++ b/config/locales/simple_form.lion.yml
@@ -65,8 +65,17 @@ lion:
data: CSV file exported from another Mastodon server
invite_request:
text: This will help us review your application
+ ip_block:
+ comment: Optional. Remember why you added this rule.
+ expires_in: IP addresses are a finite resource, they are sometimes shared and often change hands. For this reason, indefinite IP blocks are not recommended.
+ ip: Enter an IPv4 or IPv6 address. You can block entire ranges using the CIDR syntax. Be careful not to lock yourself out!
+ severities:
+ no_access: Block access to all resources
+ sign_up_requires_approval: New sign-ups will require your approval
+ severity: Choose what will happen with requests from this IP
sessions:
otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
+ webauthn: If it's an USB key be sure to insert it and, if necessary, tap it.
tag:
name: You can only change the casing of the letters, for example, to make it more readable
user:
@@ -89,10 +98,11 @@ lion:
text: Custom warning
type: Action
types:
- disable: Disable
- none: Do nothing
- silence: Silence
- suspend: Suspend and irreversibly delete account data
+ disable: Freeze
+ none: Send a warning
+ sensitive: Sensitive
+ silence: Limit
+ suspend: Suspend
warning_preset_id: Use a warning preset
announcement:
all_day: All-day event
@@ -116,6 +126,7 @@ lion:
expires_in: Expire after
fields: Profile metadata
header: Header
+ honeypot: "%{label} (do not fill in)"
inbox_url: URL of the relay inbox
irreversible: Drop instead of hide
locale: Interface language
@@ -135,6 +146,7 @@ lion:
setting_default_privacy: Posting privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
+ setting_disable_swiping: Disable swiping motions
setting_display_media: Media display
setting_display_media_default: Default
setting_display_media_hide_all: Hide all
@@ -152,6 +164,7 @@ lion:
setting_use_blurhash: Show colorful gradients for hidden media
setting_use_pending_items: Slow mode
severity: Severity
+ sign_in_token_attempt: Security code
type: Import type
username: Username
username_or_email: Username or Email
@@ -165,9 +178,16 @@ lion:
must_be_following: Block notifications from people you don't follow
must_be_following_dm: Block direct messages from people you don't follow
invite:
- comment: Meow
+ comment: Comment
invite_request:
text: Why do you want to join?
+ ip_block:
+ comment: Comment
+ ip: IP
+ severities:
+ no_access: Block access
+ sign_up_requires_approval: Limit sign-ups
+ severity: Rule
notification_emails:
digest: Send digest e-mails
favourite: Someone booped your toot
@@ -188,4 +208,7 @@ lion:
required:
mark: "*"
text: required
+ title:
+ sessions:
+ webauthn: Use one of your security keys to sign in
'yes': 'Yes'
diff --git a/config/locales/simple_form.squeak.yml b/config/locales/simple_form.squeak.yml
index 47e8b3a51..e65384406 100644
--- a/config/locales/simple_form.squeak.yml
+++ b/config/locales/simple_form.squeak.yml
@@ -43,8 +43,8 @@ squeak:
setting_aggregate_reblogs: Do not show new pumps for toots that have been recently pumped (only affects newly-received pumps)
setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
setting_display_media_default: Hide media marked as sensitive
- setting_display_media_hide_all: Always hide all media
- setting_display_media_show_all: Always show media marked as sensitive
+ setting_display_media_hide_all: Always hide media
+ setting_display_media_show_all: Always show media
setting_hide_network: Who you follow and who follows you will not be shown on your profile
setting_noindex: Affects your public profile and status pages
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
@@ -65,8 +65,17 @@ squeak:
data: CSV file exported from another Mastodon server
invite_request:
text: This will help us review your application
+ ip_block:
+ comment: Optional. Remember why you added this rule.
+ expires_in: IP addresses are a finite resource, they are sometimes shared and often change hands. For this reason, indefinite IP blocks are not recommended.
+ ip: Enter an IPv4 or IPv6 address. You can block entire ranges using the CIDR syntax. Be careful not to lock yourself out!
+ severities:
+ no_access: Block access to all resources
+ sign_up_requires_approval: New sign-ups will require your approval
+ severity: Choose what will happen with requests from this IP
sessions:
otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
+ webauthn: If it's an USB key be sure to insert it and, if necessary, tap it.
tag:
name: You can only change the casing of the letters, for example, to make it more readable
user:
@@ -89,10 +98,11 @@ squeak:
text: Custom warning
type: Action
types:
- disable: Disable login
- none: Do nothing
- silence: Silence
- suspend: Suspend and irreversibly delete account data
+ disable: Freeze
+ none: Send a warning
+ sensitive: Sensitive
+ silence: Limit
+ suspend: Suspend
warning_preset_id: Use a warning preset
announcement:
all_day: All-day event
@@ -116,6 +126,7 @@ squeak:
expires_in: Expire after
fields: Profile metadata
header: Header
+ honeypot: "%{label} (do not fill in)"
inbox_url: URL of the relay inbox
irreversible: Drop instead of hide
locale: Interface language
@@ -135,6 +146,7 @@ squeak:
setting_default_privacy: Posting privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
+ setting_disable_swiping: Disable swiping motions
setting_display_media: Media display
setting_display_media_default: Default
setting_display_media_hide_all: Hide all
@@ -152,6 +164,7 @@ squeak:
setting_use_blurhash: Show colorful gradients for hidden media
setting_use_pending_items: Slow mode
severity: Severity
+ sign_in_token_attempt: Security code
type: Import type
username: Username
username_or_email: Username or Email
@@ -168,6 +181,13 @@ squeak:
comment: Comment
invite_request:
text: Why do you want to join?
+ ip_block:
+ comment: Comment
+ ip: IP
+ severities:
+ no_access: Block access
+ sign_up_requires_approval: Limit sign-ups
+ severity: Rule
notification_emails:
digest: Send digest e-mails
favourite: Someone squeaked your status
@@ -188,4 +208,7 @@ squeak:
required:
mark: "*"
text: required
+ title:
+ sessions:
+ webauthn: Use one of your security keys to sign in
'yes': 'Yes'
diff --git a/config/locales/squeak.yml b/config/locales/squeak.yml
index cc84ea48b..c735b5b79 100644
--- a/config/locales/squeak.yml
+++ b/config/locales/squeak.yml
@@ -35,13 +35,16 @@ squeak:
status_count_before: Who authored
tagline: Follow friends and discover new ones
terms: Terms of service
- unavailable_content: Unavailable content
+ unavailable_content: Moderated servers
unavailable_content_description:
domain: Server
reason: Reason
rejecting_media: 'Media files from these servers will not be processed or stored, and and no thumbnails will be displayed, requiring manual click-through to the original file:'
+ rejecting_media_title: Filtered media
silenced: 'Posts from these servers will be hidden in public timelines and conversations, and no notifications will be generated from their users'' interactions, unless you are following them:'
+ silenced_title: Silenced servers
suspended: 'No data from these servers will be processed, stored or exchanged, making any interaction or communication with users from these servers impossible:'
+ suspended_title: Suspended servers
unavailable_content_html: Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.
user_count_after:
one: user
@@ -57,6 +60,7 @@ squeak:
one: Follower
other: Followers
following: Following
+ instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be suspended.
joined: Joined %{date}
last_active: last active
link_verified_on: Ownership of this link was checked on %{date}
@@ -92,9 +96,10 @@ squeak:
delete: Delete
destroyed_msg: Moderation note successfully destroyed!
accounts:
- add_email_domain_block: Blacklist e-mail domain
+ add_email_domain_block: Block e-mail domain
approve: Approve
approve_all: Approve all
+ approved_msg: Successfully approved %{username}'s sign-up application
are_you_sure: Are you sure?
avatar: Avatar
by_domain: Domain
@@ -108,22 +113,26 @@ squeak:
confirm: Confirm
confirmed: Confirmed
confirming: Confirming
+ delete: Delete data
deleted: Deleted
demote: Demote
- disable: Disable
+ destroyed_msg: "%{username}'s data is now queued to be deleted imminently"
+ disable: Freeze
disable_two_factor_authentication: Disable 2FA
- disabled: Disabled
+ disabled: Frozen
display_name: Display name
domain: Domain
edit: Edit
email: Email
email_status: Email status
- enable: Enable
+ enable: Unfreeze
enabled: Enabled
+ enabled_msg: Successfully unfroze %{username}'s account
followers: Followers
follows: Follows
header: Header
inbox_url: Inbox URL
+ invite_request_text: Reasons for joining
invited_by: Invited by
ip: IP
joined: Joined
@@ -135,6 +144,8 @@ squeak:
login_status: Login status
media_attachments: Media attachments
memorialize: Turn into memoriam
+ memorialized: Memorialized
+ memorialized_msg: Successfully turned %{username} into a memorial account
moderation:
active: Active
all: All
@@ -155,10 +166,14 @@ squeak:
public: Public
push_subscription_expires: PuSH subscription expires
redownload: Refresh profile
+ redownloaded_msg: Successfully refreshed %{username}'s profile from origin
reject: Reject
reject_all: Reject all
+ rejected_msg: Successfully rejected %{username}'s sign-up application
remove_avatar: Remove avatar
remove_header: Remove header
+ removed_avatar_msg: Successfully removed %{username}'s avatar image
+ removed_header_msg: Successfully removed %{username}'s header image
resend_confirmation:
already_confirmed: This user is already confirmed
send: Resend confirmation email
@@ -175,25 +190,33 @@ squeak:
search: Search
search_same_email_domain: Other users with the same e-mail domain
search_same_ip: Other users with the same IP
+ sensitive: Sensitive
+ sensitized: marked as sensitive
shared_inbox_url: Shared inbox URL
show:
created_reports: Made reports
targeted_reports: Reported by others
- silence: Silence
- silenced: Silenced
+ silence: Limit
+ silenced: Limited
statuses: Statuses
subscribe: Subscribe
suspended: Suspended
+ suspension_irreversible: The data of this account has been irreversibly deleted. You can unsuspend the account to make it usable but it will not recover any data it previously had.
+ suspension_reversible_hint_html: The account has been suspended, and the data will be fully removed on %{date}. Until then, the account can be restored without any ill effects. If you wish to remove all of the account's data immediately, you can do so below.
time_in_queue: Waiting in queue %{time}
title: Accounts
unconfirmed_email: Unconfirmed email
+ undo_sensitized: Undo sensitive
undo_silenced: Undo silence
undo_suspension: Undo suspension
+ unsilenced_msg: Successfully unlimited %{username}'s account
unsubscribe: Unsubscribe
+ unsuspended_msg: Successfully unsuspended %{username}'s account
username: Username
+ view_domain: View summary for domain
warn: Warn
web: Web
- whitelisted: Whitelisted
+ whitelisted: Allowed for federation
action_logs:
action_types:
assigned_to_self_report: Assign Report
@@ -205,12 +228,14 @@ squeak:
create_domain_allow: Create Domain Allow
create_domain_block: Create Domain Block
create_email_domain_block: Create E-mail Domain Block
+ create_ip_block: Create IP rule
demote_user: Demote User
destroy_announcement: Delete Announcement
destroy_custom_emoji: Delete Custom Emoji
destroy_domain_allow: Delete Domain Allow
destroy_domain_block: Delete Domain Block
destroy_email_domain_block: Delete e-mail domain block
+ destroy_ip_block: Delete IP rule
destroy_status: Delete Status
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
@@ -223,13 +248,16 @@ squeak:
reopen_report: Reopen Report
reset_password_user: Reset Password
resolve_report: Resolve Report
+ sensitive_account: Mark the media in your account as sensitive
silence_account: Silence Account
suspend_account: Suspend Account
unassigned_report: Unassign Report
+ unsensitive_account: Unmark the media in your account as sensitive
unsilence_account: Unsilence Account
unsuspend_account: Unsuspend Account
update_announcement: Update Announcement
update_custom_emoji: Update Custom Emoji
+ update_domain_block: Update Domain Block
update_status: Update Status
actions:
assigned_to_self_report: "%{name} assigned report %{target} to themselves"
@@ -238,15 +266,17 @@ squeak:
create_account_warning: "%{name} sent a warning to %{target}"
create_announcement: "%{name} created new announcement %{target}"
create_custom_emoji: "%{name} uploaded new emoji %{target}"
- create_domain_allow: "%{name} whitelisted domain %{target}"
+ create_domain_allow: "%{name} allowed federation with domain %{target}"
create_domain_block: "%{name} blocked domain %{target}"
- create_email_domain_block: "%{name} blacklisted e-mail domain %{target}"
+ create_email_domain_block: "%{name} blocked e-mail domain %{target}"
+ create_ip_block: "%{name} created rule for IP %{target}"
demote_user: "%{name} demoted user %{target}"
destroy_announcement: "%{name} deleted announcement %{target}"
destroy_custom_emoji: "%{name} destroyed emoji %{target}"
- destroy_domain_allow: "%{name} removed domain %{target} from whitelist"
+ destroy_domain_allow: "%{name} disallowed federation with domain %{target}"
destroy_domain_block: "%{name} unblocked domain %{target}"
- destroy_email_domain_block: "%{name} whitelisted e-mail domain %{target}"
+ destroy_email_domain_block: "%{name} unblocked e-mail domain %{target}"
+ destroy_ip_block: "%{name} deleted rule for IP %{target}"
destroy_status: "%{name} removed status by %{target}"
disable_2fa_user: "%{name} disabled two factor requirement for user %{target}"
disable_custom_emoji: "%{name} disabled emoji %{target}"
@@ -259,13 +289,16 @@ squeak:
reopen_report: "%{name} reopened report %{target}"
reset_password_user: "%{name} reset password of user %{target}"
resolve_report: "%{name} resolved report %{target}"
+ sensitive_account: "%{name} marked %{target}'s media as sensitive"
silence_account: "%{name} silenced %{target}'s account"
suspend_account: "%{name} suspended %{target}'s account"
unassigned_report: "%{name} unassigned report %{target}"
+ unsensitive_account: "%{name} unmarked %{target}'s media as sensitive"
unsilence_account: "%{name} unsilenced %{target}'s account"
unsuspend_account: "%{name} unsuspended %{target}'s account"
update_announcement: "%{name} updated announcement %{target}"
update_custom_emoji: "%{name} updated emoji %{target}"
+ update_domain_block: "%{name} updated domain block for %{target}"
update_status: "%{name} updated status by %{target}"
deleted_status: "(deleted status)"
empty: No logs found.
@@ -309,6 +342,7 @@ squeak:
listed: Listed
new:
title: Add new custom emoji
+ not_permitted: You are not permitted to perform this action
overwrite: Overwrite
shortcode: Shortcode
shortcode_hint: At least 2 characters, only alphanumeric characters and underscores
@@ -346,12 +380,12 @@ squeak:
week_interactions: interactions this week
week_users_active: active this week
week_users_new: users this week
- whitelist_mode: Whitelist mode
+ whitelist_mode: Limited federation mode
domain_allows:
- add_new: Whitelist domain
- created_msg: Domain has been successfully whitelisted
- destroyed_msg: Domain has been removed from the whitelist
- undo: Remove from whitelist
+ add_new: Allow federation with domain
+ created_msg: Domain has been successfully allowed for federation
+ destroyed_msg: Domain has been disallowed from federation
+ undo: Disallow federation with domain
domain_blocks:
add_new: Add new domain block
created_msg: Domain block is now being processed
@@ -368,6 +402,8 @@ squeak:
silence: Silence
suspend: Suspend
title: New domain block
+ obfuscate: Obfuscate domain name
+ obfuscate_hint: Partially obfuscate the domain name in the list if advertising the list of domain limitations is enabled
private_comment: Private comment
private_comment_hint: Comment about this domain limitation for internal use by the moderators.
public_comment: Public comment
@@ -394,19 +430,20 @@ squeak:
view: View domain block
email_domain_blocks:
add_new: Add new
- created_msg: Successfully added e-mail domain to blacklist
+ created_msg: Successfully blocked e-mail domain
delete: Delete
- destroyed_msg: Successfully deleted e-mail domain from blacklist
+ destroyed_msg: Successfully unblocked e-mail domain
domain: Domain
- empty: No e-mail domains currently blacklisted.
+ empty: No e-mail domains currently blocked.
from_html: from %{domain}
new:
create: Add domain
- title: New e-mail blacklist entry
- title: E-mail blacklist
+ title: Block new e-mail domain
+ title: Blocked e-mail domains
instances:
by_domain: Domain
delivery_available: Delivery is available
+ empty: No domains found.
known_accounts:
one: "%{count} known account"
other: "%{count} known accounts"
@@ -430,6 +467,21 @@ squeak:
expired: Expired
title: Filter
title: Invites
+ ip_blocks:
+ add_new: Create rule
+ created_msg: Successfully added new IP rule
+ delete: Delete
+ expires_in:
+ '1209600': 2 weeks
+ '15778476': 6 months
+ '2629746': 1 month
+ '31556952': 1 year
+ '86400': 1 day
+ '94670856': 3 years
+ new:
+ title: Create new IP rule
+ no_ip_block_selected: No IP rules were changed as none were selected
+ title: IP rules
pending_accounts:
title: Pending accounts (%{count})
relationships:
@@ -447,7 +499,7 @@ squeak:
pending: Waiting for relay's approval
save_and_enable: Save and enable
setup: Setup a relay connection
- signatures_not_enabled: Relays will not work correctly while secure mode or whitelist mode is enabled
+ signatures_not_enabled: Relays will not work correctly while secure mode or limited federation mode is enabled
status: Status
title: Relays
report_notes:
@@ -469,6 +521,8 @@ squeak:
comment:
none: None
created_at: Reported
+ forwarded: Forwarded
+ forwarded_to: Forwarded to %{domain}
mark_as_resolved: Mark as resolved
mark_as_unresolved: Mark as unresolved
notes:
@@ -512,6 +566,7 @@ squeak:
domain_blocks_rationale:
title: Show rationale
enable_bootstrap_timeline_accounts:
+ desc_html: Make new users automatically follow configured accounts so their home feed doesn't start out empty
title: Enable default follows for new users
hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
@@ -538,6 +593,9 @@ squeak:
min_invite_role:
disabled: No one
title: Allow invitations by
+ require_invite_text:
+ desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional
+ title: Require new users to enter a reason to join
registrations_mode:
modes:
approved: Approval required for sign up
@@ -677,8 +735,11 @@ squeak:
prefix_sign_up: Sign up on Mastodon today!
suffix: With an account, you will be able to follow people, post updates and exchange messages with users from any Mastodon server and more!
didnt_get_confirmation: Didn't receive confirmation instructions?
+ dont_have_your_security_key: Don't have your security key?
forgot_password: Forgot your password?
invalid_reset_password_token: Password reset token is invalid or expired. Please request a new one.
+ link_to_otp: Enter a two-factor code from your phone or a recovery code
+ link_to_webauth: Use your security key device
login: Log in
logout: Logout
migrate_account: Move to a different account
@@ -703,7 +764,9 @@ squeak:
functional: Your account is fully operational.
pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved.
redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
+ too_fast: Form submitted too fast, try again.
trouble_logging_in: Trouble logging in?
+ use_security_key: Use security key
authorize_follow:
already_following: You are already following this account
already_requested: You have already sent a follow request to that account
@@ -721,9 +784,14 @@ squeak:
hint_html: "Tip: We won't ask you for your password again for the next hour."
invalid_password: Invalid password
prompt: Confirm password to continue
+ crypto:
+ errors:
+ invalid_key: is not a valid Ed25519 or Curve25519 key
+ invalid_signature: is not a valid Ed25519 signature
date:
formats:
default: "%b %d, %Y"
+ with_month_name: "%B %d, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}h"
@@ -783,11 +851,12 @@ squeak:
archive_takeout:
date: Date
download: Download your archive
- hint_html: You can request an archive of your toots and uploaded media. The exported data will be in ActivityPub format, readable by any compliant software. You can request an archive every 7 days.
+ hint_html: You can request an archive of your toots and uploaded media. The exported data will be in the ActivityPub format, readable by any compliant software. You can request an archive every 7 days.
in_progress: Compiling your archive...
request: Request your archive
size: Size
blocks: You block
+ bookmarks: Bookmarks
csv: CSV
domain_blocks: Domain blocks
lists: Lists
@@ -801,7 +870,7 @@ squeak:
filters:
contexts:
account: Profiles
- home: Home timeline
+ home: Home and lists
notifications: Notifications
public: Public timelines
thread: Conversations
@@ -844,7 +913,7 @@ squeak:
invalid_token: Keybase tokens are hashes of signatures and must be 66 hex characters
verification_failed: Keybase does not recognize this token as a signature of Keybase user %{kb_username}. Please retry from Keybase.
wrong_user: Cannot create a proof for %{proving} while logged in as %{current}. Log in as %{proving} and try again.
- explanation_html: Here you can cryptographically connect your other identities, such as a Keybase profile. This lets other people send you encrypted messages and trust content you send them.
+ explanation_html: Here you can cryptographically connect your other identities from other platforms, such as Keybase. This lets other people send you encrypted messages on those platforms and allows them to trust that the content you send them comes from you.
i_am_html: I am %{username} on %{service}.
identity: Identity
inactive: Inactive
@@ -855,6 +924,8 @@ squeak:
status: Verification status
view_proof: View proof
imports:
+ errors:
+ over_rows_processing_limit: contains more than %{count} rows
modes:
merge: Merge
merge_long: Keep existing records and add new ones
@@ -864,6 +935,7 @@ squeak:
success: Your data was successfully uploaded and will now be processed in due time
types:
blocking: Blocking list
+ bookmarks: Bookmarks
domain_blocking: Domain blocking list
following: Following list
muting: Muting list
@@ -906,7 +978,7 @@ squeak:
cancelled_msg: Successfully cancelled the redirect.
errors:
already_moved: is the same account you have already moved to
- missing_also_known_as: is not back-referencing this account
+ missing_also_known_as: is not an alias of this account
move_to_self: cannot be current account
not_found: could not be found
on_cooldown: You are on cooldown
@@ -918,6 +990,7 @@ squeak:
on_cooldown: You have recently migrated your account. This function will become available again in %{count} days.
past_migrations: Past migrations
proceed_with_move: Move followers
+ redirected_msg: Your account is now redirecting to %{acct}.
redirecting_to: Your account is redirecting to %{acct}.
set_redirect: Set redirect
warning:
@@ -931,6 +1004,10 @@ squeak:
redirect: Your current account's profile will be updated with a redirect notice and be excluded from searches
moderation:
title: Moderation
+ move_handler:
+ carry_blocks_over_text: This user moved from %{acct}, which you had blocked.
+ carry_mutes_over_text: This user moved from %{acct}, which you had muted.
+ copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:'
notification_mailer:
digest:
action: View all notifications
@@ -980,6 +1057,14 @@ squeak:
thousand: K
trillion: T
unit: ''
+ otp_authentication:
+ code_hint: Enter the code generated by your authenticator app to confirm
+ description_html: If you enable two-factor authentication using an authenticator app, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
+ enable: Enable
+ instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
+ manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
+ setup: Set up
+ wrong_code: The entered code was invalid! Are server time and device time correct?
pagination:
newer: Newer
next: Next
@@ -1008,6 +1093,7 @@ squeak:
relationships:
activity: Account activity
dormant: Dormant
+ follow_selected_followers: Follow selected followers
followers: Followers
following: Following
invited: Invited
@@ -1075,7 +1161,7 @@ squeak:
firefox_os: Firefox OS
ios: iOS
linux: Linux
- mac: Mac
+ mac: macOS
other: unknown platform
windows: Windows
windows_mobile: Windows Mobile
@@ -1104,10 +1190,14 @@ squeak:
profile: Profile
relationships: Follows and followers
two_factor_authentication: Two-factor Auth
+ webauthn_authentication: Security keys
spam_check:
- spam_detected_and_silenced: This is an automated report. Spam has been detected and the sender has been silenced automatically. If this is a mistake, please unsilence the account.
+ spam_detected: This is an automated report. Spam has been detected.
statuses:
attached:
+ audio:
+ one: "%{count} audio"
+ other: "%{count} audio"
description: 'Attached: %{attached}'
image:
one: "%{count} image"
@@ -1139,6 +1229,8 @@ squeak:
other: "%{count} votes"
vote: Vote
show_more: Show more
+ show_newer: Show newer
+ show_older: Show older
show_thread: Show thread
sign_in_to_participate: Sign in to participate in the conversation
strip_formatting:
@@ -1263,42 +1355,50 @@ squeak:
default: "%b %d, %Y, %H:%M"
month: "%b %Y"
two_factor_authentication:
- code_hint: Enter the code generated by your authenticator app to confirm
- description_html: If you enable two-factor authentication, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
- disable: Disable
- enable: Enable
+ add: Add
+ disable: Disable 2FA
+ disabled_success: Two-factor authentication successfully disabled
+ edit: Edit
enabled: Two-factor authentication is enabled
enabled_success: Two-factor authentication successfully enabled
generate_recovery_codes: Generate recovery codes
- instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
lost_recovery_codes: Recovery codes allow you to regain access to your account if you lose your phone. If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated.
- manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
+ methods: Two-factor methods
+ otp: Authenticator app
recovery_codes: Backup recovery codes
recovery_codes_regenerated: Recovery codes successfully regenerated
recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe. For example, you may print them and store them with other important documents.
- setup: Set up
- wrong_code: The entered code was invalid! Are server time and device time correct?
+ webauthn: Security keys
user_mailer:
backup_ready:
explanation: You requested a full backup of your Mastodon account. It's now ready for download!
subject: Your archive is ready for download
title: Archive takeout
+ sign_in_token:
+ details: 'Here are details of the attempt:'
+ explanation: 'We detected an attempt to sign in to your account from an unrecognized IP address. If this is you, please enter the security code below on the sign in challenge page:'
+ further_actions: 'If this wasn''t you, please change your password and enable two-factor authentication on your account. You can do so here:'
+ subject: Please confirm attempted sign in
+ title: Sign in attempt
warning:
explanation:
- disable: While your account is frozen, your account data remains intact, but you cannot perform any actions until it is unlocked.
- silence: While your account is limited, only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follow you.
- suspend: Your account has been suspended, and all of your toots and your uploaded media files have been irreversibly removed from this server, and servers where you had followers.
+ disable: You can no longer login to your account or use it in any other way, but your profile and other data remains intact.
+ sensitive: Your uploaded media files and linked media will be treated as sensitive.
+ silence: You can still use your account but only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follow you.
+ suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still login to request a backup of your data until the data is fully removed, but we will retain some data to prevent you from evading the suspension.
get_in_touch: You can reply to this e-mail to get in touch with the staff of %{instance}.
review_server_policies: Review server policies
statuses: 'Specifically, for:'
subject:
disable: Your account %{acct} has been frozen
none: Warning for %{acct}
+ sensitive: Your account %{acct} posting media has been marked as sensitive
silence: Your account %{acct} has been limited
suspend: Your account %{acct} has been suspended
title:
disable: Account frozen
none: Warning
+ sensitive: Your media has been marked as sensitive
silence: Account limited
suspend: Account suspended
welcome:
@@ -1319,12 +1419,34 @@ squeak:
tips: Tips
title: Welcome aboard, %{name}!
users:
+ blocked_email_provider: This e-mail provider isn't allowed
follow_limit_reached: You cannot follow more than %{limit} people
+ generic_access_help_html: Trouble accessing your account? You may get in touch with %{email} for assistance
invalid_email: The e-mail address is invalid
+ invalid_email_mx: The e-mail address does not seem to exist
invalid_otp_token: Invalid two-factor code
+ invalid_sign_in_token: Invalid security code
otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available.
signed_in_as: 'Signed in as:'
+ suspicious_sign_in_confirmation: You appear to not have logged in from this device before, and you haven't logged in for a while, so we're sending a security code to your e-mail address to confirm that it's you.
verification:
explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me"
attribute. The text content of the link does not matter. Here is an example:'
verification: Verification
+ webauthn_credentials:
+ add: Add new security key
+ create:
+ error: There was a problem adding your security key. Please try again.
+ success: Your security key was successfully added.
+ delete: Delete
+ delete_confirmation: Are you sure you want to delete this security key?
+ description_html: If you enable security key authentication, logging in will require you to use one of your security keys.
+ destroy:
+ error: There was a problem deleting you security key. Please try again.
+ success: Your security key was successfully deleted.
+ invalid_credential: Invalid security key
+ nickname_hint: Enter the nickname of your new security key
+ not_enabled: You haven't enabled WebAuthn yet
+ not_supported: This browser doesn't support security keys
+ otp_required: To use security keys please enable two-factor authentication first.
+ registered_on: Registered on %{date}